{"version":3,"file":"static/chunks/3273-a2b6165c71f5006b.js","mappings":"wOAgFA,IApD0B,W,IAACA,EAAU,UAAH,8CACxBC,GAAOC,EAAAA,EAAAA,IAAYC,EAAAA,GAECC,GAAAA,EAAAA,EAAAA,UAAyB,CAC/CC,QAAS,KACTC,WAAW,EACXC,YAAQC,IAHLC,EAAmBL,EAIxB,GAJYM,EAAYN,EAIxB,GAEIO,EAAW,W,OAAA,+B,IAAQC,EAAMC,EAAOC,EAG5BC,EAQAC,EAI0BA,EAApBT,EAAQF,E,wEAfCO,EAAI,EAAJA,KAAMC,EAAK,EAALA,MAAOC,EAAK,EAALA,MAClCJ,GAASO,SAAAA,G,OAAc,kBAAKA,GAAS,CAAEX,WAAW,OAE5CS,EAAyB,CAC3BG,SAAU,iBACVC,IAAKP,EACLC,MAAOA,EACPO,WAAY,CAAC,GACbC,gBAAiB,CAAC,OAClBpB,KAAAA,G,SAEeqB,EAAAA,EAAAA,YACfC,EAAAA,EAAAA,GAAoBR,I,QADlBC,EAAO,EAAH,MAGDQ,WACuBR,EAAAA,EAAKS,QAAzBlB,EAAoBS,EAApBT,OAAQF,EAAYW,EAAZX,SAChBqB,EAAAA,EAAAA,IAAwB,CACpBC,OAAQC,EAAAA,GAAAA,QACR5B,QAAAA,EACA6B,OAAQtB,EAAc,OAALO,QAAK,IAALA,EAAAA,EAAS,GAAK,GAAcT,OAAXS,EAAM,OAAa,OAART,KAEjDK,EAAS,CACLL,QAAAA,EACAE,OAAQA,EAASuB,EAAAA,EAAAA,QAAyBA,EAAAA,EAAAA,MAC1CxB,WAAW,MAGfI,EAAS,CACLL,QAAS,yTACTE,OAAQuB,EAAAA,EAAAA,MACRxB,WAAW,KAGfoB,EAAAA,EAAAA,IAAwB,CACpBK,UAAW,KACXJ,OAAQC,EAAAA,GAAAA,S,2DAnCN,G,gCAAG,GAwCjB,MAAO,CAACnB,EAAOE,K,ioFCpEnB,IAAMqB,GAAaC,EAAAA,EAAAA,GAAeC,EAAAA,IAC5BC,GAAYC,EAAAA,EAAAA,GAAcF,EAAAA,IAEnBG,EAAUC,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,IAILC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,EACGC,EAAAA,EAAAA,kBAGRC,EAAQJ,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,IACfK,EAAAA,EAAAA,GAGmBC,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,IAKGE,EAASP,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IASGM,EAAAA,GAAAA,QAMZE,GAAOR,EAAAA,EAAAA,SAAOH,GAAU,Y,6BAAjBG,C,KAUPS,GAAQT,EAAAA,EAAAA,SAAON,GAAW,Y,6BAAlBM,C,KAURU,EAAcV,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAKFM,EAAAA,GAAAA,QAuCZK,GAjCSX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGLC,EAAAA,EAAAA,KAIIA,EAAAA,EAAAA,YAKAD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOcY,SAAAA,G,OAAKA,EAAEC,UAAYD,EAAEC,UAAYZ,EAAAA,EAAAA,SACnDW,SAAAA,G,OAAKA,EAAEC,UAAYD,EAAEC,UAAYZ,EAAAA,EAAAA,QAGzBK,EAAAA,GAAAA,SAUHN,EAAAA,EAAAA,SAAOc,EAAAA,IAAW,Y,6BAAlBd,C,IAIcM,EAAAA,GAAAA,SAMvBS,EAAUf,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGjBK,EAAAA,EAAAA,IAOIA,EAAAA,EAAAA,OACOJ,EAAAA,EAAAA,WCQjB,GAAee,EAAAA,EAAAA,KAJS7C,SAAAA,G,MAAU,CAC9B8C,WAAY9C,EAAM+C,KAAKC,YAAYC,UAGvC,EA7HiB,SAACC,GACd,MAUIA,EATAC,MAAAA,OAAK,IAAG,oWAAoE,IAS5ED,EARAE,WAAAA,OAAU,IAAG,6EAAc,EAC3BC,EAOAH,EAPAG,cAAa,EAObH,EANAI,UAAAA,OAAS,IAAG,KAAE,EACdC,EAKAL,EALAK,gBAAe,EAKfL,EAJA3D,QAAAA,OAAO,IAAG,GAAK,IAIf2D,EAHAM,iBAAAA,OAAgB,IAAG,GAAK,IAGxBN,EAFAO,cAAAA,OAAa,IAAG,GAAK,EACrBrC,EACA8B,EADA9B,OAGsBzB,GAAAA,EAAAA,EAAAA,UAAS,IAA5BS,EAAmBT,EAAY,GAAxB+D,EAAY/D,EAAY,GACdA,GAAAA,EAAAA,EAAAA,UAAS,IAA1BQ,EAAiBR,EAAY,GAAvBgE,EAAWhE,EAAY,GACMA,GAAAA,EAAAA,EAAAA,WAAS,GAA5CiE,EAAmCjE,EAAe,GAAnCkE,EAAoBlE,EAAe,GACXA,GAAAA,EAAAA,EAAAA,WAAS,GAAhDmE,EAAuCnE,EAAe,GAArCoE,EAAsBpE,EAAe,GACzBA,GAAAA,EAAAA,EAAAA,WAAS,GAAtCqE,EAA6BrE,EAAe,GAA/BsE,EAAgBtE,EAAe,IAEnDuE,EAAAA,EAAAA,YAAU,WACNL,EAAiBzD,EAAM+D,SAAWhE,EAAKgE,WACxC,CAAC/D,EAAOD,IAEX,IAGIiE,GAA0B,QAA1BA,EAAAA,EAAAA,GAAkB7E,GAAQ,KAA1B6E,EAA0B,GAFxBtE,EAAM,EAANA,OAAQD,EAAS,EAATA,UAAWD,GAAO,EAAPA,QACrBM,GACAkE,EAA0B,GAExBC,GAAkB,SAACC,EAAYC,GAE5BP,QAAoCjE,IAArBuE,EAAWE,SAC3BvD,EAAAA,EAAAA,IAAwB,CACpBC,OAAQC,EAAAA,GAAAA,QACR5B,QAAAA,EACA+B,UAAW,KACXF,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAU,KAEtB6C,GAAa,IAEjBM,EAAUD,IAqBd,OACI,SAAC1C,EAAO,CAAC6C,SAnBSC,SAAAA,GAElB,GADAA,EAAEC,iBACEf,EAAe,CACf,IAAMgB,EAAS,CACXzE,KAAMA,EAAKqE,MACXpE,MAAOA,EAAMoE,MACbnE,MAAOe,GAGPiC,EACAA,EAAcuB,GAEd1E,GAAS0E,GAGjBb,GAAmB,I,SAMXjE,GAAUF,IACJ,SAACgD,EAAO,C,SAAEhD,MACV,sB,WACE,SAACqC,EAAK,C,SACDkB,KAEL,UAACf,EAAM,C,WACH,SAACC,EAAI,CACDlC,KAAK,OACL0E,SAAU,SAACP,G,OAAeD,GAAgBC,EAAYX,IACtDmB,YAAY,wEACZC,aAAa,yKACbC,UAAW,qBAEf,SAAC1C,EAAK,CACFnC,KAAK,QACL0E,SAAU,SAACP,G,OAAeD,GAAgBC,EAAYZ,IACtDoB,YAAY,kFACZC,aAAa,6JACbC,UAAW,wBAGjBxB,IACE,SAACyB,EAAAA,GAAe,CAACC,QAAS,CAAC,EAAG,EAAG,GAAI,G,UACjC,SAACC,EAAAA,EAAU,CACPC,YAAU,YACVhC,WAAYA,EACZiC,SAAUC,EAAAA,OAItB,UAAC/C,EAAW,C,WACR,SAACC,EAAM,CACH+C,KAAMC,EAAAA,GAAAA,OACNC,KAAMrC,EACNsC,UAAW9B,GAAiB/D,GAAa4D,EACzC5D,UAAWiE,IAEdN,GACK,SAAC2B,EAAAA,EAAU,CACTC,YAAU,YACVhC,WAAYA,EACZiC,SAAUC,EAAAA,KAEZ,SAAC9C,EAAM,CACLmD,KAAM,GAAsBrC,OAAnBsC,EAAAA,IAA6B,OAAVtC,GAC5BuC,QAAStC,EACTgC,KAAMC,EAAAA,GAAAA,UACNC,KAAM,+C,woDCvH1C,IAAMK,GAAkBC,EAAAA,EAAAA,WAAS,KAKpBC,EAAgBnE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IASMC,EAAAA,EAAAA,WAGVK,EAAAA,GAAAA,QAQZ8D,EAAcpE,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,IACrBK,EAAAA,EAAAA,IAGOO,SAAAA,G,OAAKA,EAAEyD,OAASpE,EAAAA,EAAAA,KAAcA,EAAAA,EAAAA,eACXW,SAAAA,G,OAAKA,EAAEyD,OAAS,cAAgBpE,EAAAA,EAAAA,cAG/CA,EAAAA,EAAAA,KACmBA,EAAAA,EAAAA,MAIvBqE,EAAatE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACXY,SAAAA,G,OAAKA,EAAEyD,OAAS,QAAU,UAEnBzD,SAAAA,G,OAAKA,EAAEyD,OAASJ,EAAkB,MAW3CM,EAAWvE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAElBY,SAAAA,G,OAAKA,EAAE4D,OAASnE,EAAAA,EAAAA,QAAgBA,EAAAA,EAAAA,KACNJ,EAAAA,EAAAA,aCZhC,EApCsB,Y,IAeSwE,EAEVA,EAjBIC,EAAY,EAAZA,aAAcD,EAAM,EAANA,OAAQE,EAAc,EAAdA,eAAgBC,EAAY,EAAZA,aAM3D,OACI,UAACC,EAAgB,C,WACb,SAACA,EAAc,CACXR,OAAQK,EACRV,QAAS,W,OAAMW,EAAeF,IAC9BlB,YAAU,Q,SAETkB,EAAOnG,OAEXoG,MAA+B,QAAbD,EAAAA,EAAOK,cAAM,IAAbL,OAAAA,EAAAA,EAAeM,UAC9B,SAACF,EAAa,CAACR,OAAQK,E,SACL,QAAbD,EAAAA,EAAOK,cAAM,IAAbL,OAAAA,EAAAA,EAAeO,KAAI,SAAC9D,EAAM+D,GACvB,IAAQ3G,EAA8C4C,EAA9C5C,KAAgB8C,EAA8BF,EAA9BE,OAAQ8D,EAAsBhE,EAAtBgE,YAAaC,EAASjE,EAATiE,KAC7C,OACI,SAACN,EAAW,CAERL,SAAUW,EACVnB,QAAS,W,OAtBX,SAAC9C,GACvB,IAAQ5C,EAA8B4C,EAA9B5C,KAAM8C,EAAwBF,EAAxBE,OAAQ8D,EAAgBhE,EAAhBgE,YACtBN,EAAa,CAAEtG,KAAAA,EAAM8C,OAAAA,EAAQ8D,YAAAA,IAoBUE,CAAkBlE,IACjCqC,YAAU,Y,SAET8B,GALI,GAAaH,OAAV9D,EAAO,KAAkB6D,OAAfC,EAAY,KAAS,OAAND,a,WCjBjE,GAAeK,EAAAA,EAAAA,IAfA,Y,QAAGC,YAAAA,OAAW,IAAG,MAAG,EAC/B,OACI,qB,UACI,SAACC,IAAC,CAACC,GAAI,O,UACH,SAACC,OAAI,CACDC,EAAE,oJACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,gBAS/B,UCIJ,GAAeP,EAAAA,EAAAA,IArBM,WACjB,OACI,qB,UACI,SAACE,IAAC,CAACC,GAAI,O,UACH,SAACC,OAAI,CACDC,EAAE,0vBAOFJ,YAAY,MACZK,cAAc,QACdC,eAAe,gBAS/B,gB,2oBClBG,IAAMC,EAAgB9F,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAIRG,EAAAA,EAAAA,iBACHF,EAAAA,EAAAA,QAIOK,EAAAA,GAAAA,OAGAH,EAAAA,EAAAA,gBAGAG,EAAAA,GAAAA,OAGAH,EAAAA,EAAAA,kBAIZ4F,EAAiB/F,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACxBK,EAAAA,EAAAA,ICtBA2F,EAAW,YACb,OADyB,EAATC,WAEZ,KAAK,EACD,OAAO,SAACC,EAAM,CAACC,KAAM,KACzB,KAAK,EACD,OAAO,SAACC,EAAY,CAACD,KAAM,KAC/B,QACI,OAAO,0BA0BnB,EAjBkB,Y,IAAGE,EAAS,EAATA,UAAWzB,EAAY,EAAZA,aAC5B,OACI,SAACC,EAAgB,C,SACZwB,EAAUrB,KAAI,SAACsB,EAASrB,G,OACrB,UAACJ,EAAiB,CAEdb,QAAS,W,OAAMY,EAAa0B,IAC5B/C,YAAU,W,WAEV,SAACyC,EAAQ,CAACC,UAAWhB,IACpBqB,EAAQhI,OALJgI,EAAQpB,mB,ulECrB1B,IAAMqB,IAAcC,EAAAA,EAAAA,mBAAiB,KAExB,Y,OAAU,EAAPC,QAAwB,SAAW,UAI7CC,GAAY1G,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAOPC,EAAAA,EAAAA,QAKL0G,IAAqE3G,EAAAA,EAAAA,SAAO4G,EAAAA,IAAc,Y,6BAArB5G,C,IAIrEC,EAAAA,EAAAA,aAIA4G,IAA6D7G,EAAAA,EAAAA,SAAO8G,EAAAA,GAAO,Y,6BAAd9G,C,IAejDM,EAAAA,GAAAA,QAKZyG,GAAiB/G,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOjBgH,IAAShH,EAAAA,EAAAA,SAAOiH,EAAAA,GAAW,Y,6BAAlBjH,C,IAMGM,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,QAKZ4G,GAAiBlH,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAULM,EAAAA,GAAAA,QAMZ6G,GAAgBnH,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAIhBC,EAAAA,EAAAA,KACPI,EAAAA,EAAAA,EAEmBC,EAAAA,GAAAA,QCjFnB8G,GAAe,CACjBC,YAAY,EACZC,eAAe,EACfC,MAAM,EACNC,UAAW,SA+Ff,GAlFmB,Y,IApBOzJ,EAAiB0J,EAqBvCC,EAAO,EAAPA,QACArB,EAAS,EAATA,UACAsB,EAAgB,EAAhBA,iBACAC,EAAc,EAAdA,eACAjD,EAAc,EAAdA,eACAC,EAAY,EAAZA,aACA1D,EAAI,EAAJA,KAEM2G,GAAgBC,EAAAA,EAAAA,UAAuB,W,OAA6BH,ECvCxD3C,KAAI,Y,MAAoC,CACtDxG,MADyB,EAAJF,KAErBqE,MAFiC,EAANvB,OAG3B8D,YAH8C,EAAXA,kBDuCsD,CAACyC,IAExFI,EEpC+B,Y,IAAGL,EAAO,EAAPA,QAASrB,EAAS,EAATA,UACT,IACpC2B,EAAAA,EAAAA,GAAqB1H,EAAAA,GAAAA,QAAwB,IAC7C0H,EAAAA,EAAAA,GAAqB1H,EAAAA,GAAAA,QAAwB,IAC7C0H,EAAAA,EAAAA,GAAqB1H,EAAAA,GAAAA,QAAwB,IAH1C2H,EAAiC,EAIvC,GAJgBC,EAAuB,EAIvC,GAJ0BC,EAAa,EAIvC,GAEyCL,GAAAA,EAAAA,EAAAA,UAAQ,WAC9C,QAAQ,GACJ,KAAKK,EACD,MAAO,CACHC,gBAAiB,EACjBC,aAAc,GAEtB,KAAKH,EACD,MAAO,CACHE,gBAAiB,EACjBC,aAAc,GAEtB,KAAKJ,EACD,MAAO,CACHG,gBAAiB,GACjBC,aAAc,GAEtB,QACI,MAAO,CACHD,gBAAiB,EACjBC,aAAc,MAG3B,CAACF,EAAWD,EAAUD,IAvBjBG,EAAkCN,EAAlCM,gBAAiBC,EAAiBP,EAAjBO,aAyBnBC,EAAeC,IAAOb,GAAS,SAACc,EAAQ7F,G,OAAU6F,EAAS7F,EAAMoC,SAAQ,GAE/E,OAAO,WACH,IAAM0D,EAAqBC,KAAKC,MAAML,EAAeD,IAC7CD,GAAqB/B,EAAUtB,OAAU2D,KAAKC,MAAMP,EAAkBC,GAAgB,GAExFrD,EAAM,IAAI4D,IACVJ,EAAoC,GACpCK,EAAgBC,OAAOC,KAAKrB,GAE9BsB,EAAU,EACVC,EAAY,EAEX,GAAY,EAAZ,GAAY,EAAZ,OAAY,E,IAAjB,QAAK,IAAgBJ,EAAa,qBAA7B,OAAY,cAAZ,GAAY,EAAmB,CAA/B,IAAMK,EAAN,EAAY,MACPC,EAAMF,EAAYvB,EAAQwB,GAAQnE,OAAS,EAE7CsB,EAAUtB,QAAYqD,GAAmBA,EAAkBa,GAAyB,IAAZD,IACxER,EAAOY,KAAKN,OAAOO,YAAYrE,EAAIsE,YACnCL,EAAY,EACZjE,EAAIuE,QACJP,GAAW,GAGXP,EAAqBU,IACrBX,EAAOY,KAAKN,OAAOO,YAAYrE,EAAIsE,YACnCL,EAAY,EACZjE,EAAIuE,SAGRvE,EAAIwE,IAAIN,EAAQxB,EAAQwB,IACxBD,GAAavB,EAAQwB,GAAQnE,Q,SAjB5B,GAAY,EAAZ,EAAY,E,YAAZ,GAAY,MAAZ,EAAY,QAAZ,EAAY,S,WAAZ,E,MAAA,GAwBL,OAJIC,EAAImB,MACJqC,EAAOY,KAAKN,OAAOO,YAAYrE,EAAIsE,YAGhCd,EAnCJ,GFEkBiB,CAA0B,CAAE/B,QAAAA,EAASrB,UAAAA,IAO9D,OACI,UAACxB,GAAY,C,WACT,SAACA,GAAc,CAAC4B,SAAO,KACvB,UAAC5B,GAAiB,C,WACd,SAAClE,EAAAA,EAAM,CACHwF,KAAM,SACNuD,MAAO,QACPC,MAAM,SAACC,EAAAA,EAAS,CAACzD,KAAM,KACvBnC,QAAS,W,OAAMY,K,SAClB,oCAID,SAACiF,EAAAA,GAAE,CAACC,aAAa,E,SAAO,oFAEpB/B,EAAiBhD,QAAYsB,EAAUtB,QAAY4C,EAAiB5C,QAClE,sB,WACE,SAACF,GAAW,CACRlC,MAAOzB,EACP8B,SAxBH,SAAC+G,GAClB,IAAQvL,EAA8BuL,EAA9BvL,MAAOmE,EAAuBoH,EAAvBpH,MAAOuC,EAAgB6E,EAAhB7E,YACtBN,EAAa,CAAEtG,KAAM,GAAS,OAANE,GAAS4C,OAAQuB,EAAOuC,YAAAA,KAuB5B8E,QAASnC,EACT5E,YAAa,oDACbgH,kBA5DFlM,EA4DqC,4EA5DpB0J,EA4DqCvG,EA5Db,SAACgJ,G,MACjD,KAAfA,GAAsBC,IAAI1C,EAAO,QAAS,MAAQyC,EAAcnM,EAAU,4DA4DlDqM,cAAc,EACdC,cAAcC,EAAAA,EAAAA,GAAalD,OAE/B,SAACvC,GAAiB,C,SACbkD,EAAiB/C,KAAI,SAACuF,EAAeC,GAClC,IAAMC,EAAgB3B,OAAOC,KAAKwB,GAElC,OACI,UAAC1F,GAAS,C,UACW,IAAhB2F,IACG,SAACE,EAAS,CACNrE,UAAWA,EACXzB,aAAcA,IAGrB6F,EAAczF,KAAIkE,SAAAA,GACf,iBAACrE,GAAiB,CAActB,YAAU,e,WACtC,SAACsB,GAAgB,CAACtB,YAAU,S,SAAU2F,IACrCqB,EAAcrB,GAAQlE,KAAIP,SAAAA,GACvB,gBAACN,EAAa,CAEVO,aAAcD,EAAOkG,aAA4B,OAAd/C,QAAc,IAAdA,OAAAA,EAAAA,EAAgB+C,WACnDlG,OAAQA,EACRE,eAAgBA,EAChBC,aAAcA,GAJTH,EAAOkG,gBAJAzB,QARhBsB,YA0B9B,SAACI,EAAAA,EAAQ,W,2DGxGlBC,GAAsB,SAACC,G,MAAkC,CAClEC,IAAK,sCACLC,OAAQ,MACRC,QAAS,CAAE,WAAc,GAAc,OAAXH,M,wBCShC,GAf8B,WAC1B,OAAO,W,OAAA,8BAAMI,EAA6BC,G,IAChChN,EACA2M,EAEApM,E,yEAHAP,EAAQgN,IACRL,GAAaM,EAAAA,GAAAA,GAAiBjN,G,SAEjBa,GAAAA,EAAAA,WACf6L,GAAoBC,I,QADlBpM,EAAO,EAAH,MAIDQ,WACLgM,GAASG,EAAAA,GAAAA,IAAcvC,OAAOwC,OAAO5M,EAAKS,W,2DATrC+L,EAA6BC,G,gCAAnC,I,+CCIEI,GAAoB,SAACT,EAAoBU,G,MAA0C,CAC5FT,IAAK,qCACLC,OAAQ,MACRC,QAAS,CAAE,WAAc,GAAc,OAAXH,IAC5BU,YAAAA,I,wBCUJ,GAnBsB,SAAC/G,EAA2BK,GAC9C,OAAO,SAACoG,EAA6BC,GACjC,IAAQM,EAA4BN,IAA5BM,WAAc/D,QAChBgE,EAAejH,EAAOnG,KAAKqN,OAAO,GAClCC,GAAiB,QAAGlE,EAAQgE,IAE5BG,EAAqBD,EAAcE,WAAUC,SAAAA,G,OAAWA,EAAQpB,YAAclG,EAAOkG,aAE3F,IAA4B,IAAxBkB,EAA2B,CAC3B,IAAMG,GAAsC,oBAAKJ,EAAcC,IAAmB,CAAE/G,OAAAA,IACpF8G,EAAcK,OAAOJ,EAAoB,EAAGG,GAC5Cd,GAASgB,EAAAA,GAAAA,KAAW,oBACbxE,IACH,WAACgE,EAAeE,SC0BhC,GA/B0B,SAACnH,GACvB,OAAO,W,OAAA,8BAAMyG,EAA6BC,G,IAUjC1G,EATCtG,EACEyJ,EACFkD,EAQIpM,EAKIoG,E,qEAfR3G,EAAQgN,IACR,EAAqBhN,EAAMsN,WAAzB7D,eACFkD,GAAaM,EAAAA,GAAAA,GAAiBjN,GAEhCsG,EAAOkG,aAA4B,OAAd/C,QAAc,IAAdA,OAAAA,EAAAA,EAAgB+C,WAAS,C,sBAC9CO,GAASiB,EAAAA,GAAAA,IAAkB,O,6BAIb,QAAb1H,EAAAA,EAAOK,cAAM,IAAbL,OAAAA,EAAAA,EAAeM,OAAQ,C,iCACL/F,GAAAA,EAAAA,WACfuM,GAAkBT,EAAY,CAAErF,GAAIhB,EAAOkG,a,eADzCjM,EAAO,EAAH,MAIDQ,YACC4F,EAASsH,KAAQ1N,EAAKS,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,SAEhEkN,EAAAA,EAAAA,KAAM,WACFnB,GAASiB,EAAAA,GAAAA,KAAkB,oBAAK1H,GAAM,CAAEK,OAAAA,MACxCoG,EAASoB,GAAa7H,EAAQK,Q,2BAM1CoG,GAASiB,EAAAA,GAAAA,IAAkB1H,I,4DA1BlByG,EAA6BC,G,gCAAnC,I,WCIEoB,GAAmB,SAACzB,EAAoBU,G,MAA2C,CAC5FT,IAAK,4BACLC,OAAQwB,GAAAA,EAAAA,IACRvB,QAAS,CAAE,WAAc,GAAc,OAAXH,IAC5BU,YAAAA,ICDJ,GAfyB,WACrB,OAAO,W,OAAA,8BAAMN,EAA6BC,G,IAChChN,EACA2M,EAEApM,E,yEAHAP,EAAQgN,IACRL,GAAaM,EAAAA,GAAAA,GAAiBjN,G,SAEjBa,GAAAA,EAAAA,WACfuN,GAAiBzB,EAAY,CAAE2B,OAAQ,OAAQC,QAAS,e,QADtDhO,EAAO,EAAH,MAIDQ,WACLgM,GAASgB,EAAAA,GAAAA,IAAWxN,EAAKS,U,2DATpB+L,EAA6BC,G,gCAAnC,ICFEwB,GAAe,SAAC7B,G,MAAkC,CAC3DC,IAAK,+BACLC,OAAQ,MACRC,QAAS,CAAE,WAAc,GAAc,OAAXH,MCahC,GAfuB,WACnB,OAAO,W,OAAA,8BAAMI,EAA6BC,G,IAChChN,EACA2M,EAEApM,E,yEAHAP,EAAQgN,IACRL,GAAaM,EAAAA,GAAAA,GAAiBjN,G,SAEjBa,GAAAA,EAAAA,WACf2N,GAAa7B,I,QADXpM,EAAO,EAAH,MAIDQ,WACLgM,GAAS0B,EAAAA,GAAAA,IAAalO,EAAKS,U,2DATtB+L,EAA6BC,G,gCAAnC,I,wBCNE0B,GAAa,SACtBC,EACAC,GAEA,IAA+BC,EAAAA,OAAOC,SAA9BC,EAAuBF,EAAvBE,SAAUC,EAAaH,EAAbG,SAEZC,EAAe,IAAIC,gBAAgBL,OAAOC,SAASK,QACzDF,EAAaG,OAAO,iBAAkB,GAAiB,OAAdR,IAEzC,IAAS,GAAkD,QAA/BC,OAAOC,SAASO,KAAKC,MAAM,MAAI,MAAlD,GAEHD,EAAO,GAAgBV,OAAbI,EAAS,MAAqBQ,OAAjBZ,EAAc,KAA0B,OAAvBY,EAAaC,KAAK,MAEhEX,OAAOC,SAASW,QAAQ,GAAUT,OAAPK,GAAmBJ,OAAZD,EAAS,KAA2B,OAAxBC,EAAaS,c,YCuB/D,GA5BiB,SAACC,GACd,OAAO,W,OAAA,8BAAM5C,EAA6BC,G,IAChChN,EACU4P,EACVjD,EAGM1J,EAAQ8D,E,kEALd/G,EAAQgN,IACN6C,EAAqB7P,EAArB6P,KAAQD,OACVjD,GAAaM,EAAAA,GAAAA,GAAiBjN,GAEhC2P,IACQ1M,EAAwB0M,EAAxB1M,QAAQ8D,EAAgB4I,EAAhB5I,eACI4F,IACZiD,GACA7C,GAAS+C,EAAAA,GAAAA,OAGG,IAAIC,GAAAA,GACZC,KAAK,CACT7P,KAAM8P,GAAAA,GACNzL,MAAOvB,EACPiN,OAAQ,CAAEC,OAAQC,GAAAA,MAGtB1B,GAAWzL,EAAQ8D,KAI3BgG,GAASsD,EAAAA,GAAAA,O,2DAvBAtD,EAA6BC,G,gCAAnC,ICkDX,GA/C4B,WACxB,IAAMD,GAAWuD,EAAAA,EAAAA,MAEoE7Q,GAAAA,EAAAA,EAAAA,KACjF,SAACO,G,OAAkBA,EAAMsN,aACzBiD,EAAAA,IAFIrK,EAA6EzG,EAA7EyG,OAA0BqD,EAAmD9J,EAAnD8J,QAASrB,EAA0CzI,EAA1CyI,UAAWsI,EAA+B/Q,EAA/B+Q,WAAY/G,EAAmBhK,EAAnBgK,gBAKlEvF,EAAAA,EAAAA,YAAU,WACFuM,GAAoBC,IAAQnH,KAAarB,EAAUtB,SAAW4J,EAAW5J,SACzEmG,EAAS4D,MACT5D,EAAS6D,MACT7D,EAAS8D,SAEd,CAACJ,IAmBJ,OAAQA,GACF,SAACK,GAAU,CACTvH,QAASA,EACTrB,UAAWA,EACXsB,iBAAkBgH,EAClBhK,eAtBsB,SAACF,GAC3ByG,EAASgE,GAAkBzK,KAsBvBG,aAnBkB,SAACkJ,GACvB,IAAMqB,EAAU,IAAIC,KACpBD,EAAQE,QAAQF,EAAQG,UAAY,IAEpCC,EAAAA,GAAAA,KAAY,cAAe,EAAG,CAC1BJ,QAAAA,EACA/N,OAAQoO,GAAAA,IAAiB,OACzB9J,KAAM,MAGVwF,EAASuE,GAAS3B,KAUdlG,eAAgBA,EAChBrE,YAAU,gBAEZ,O,mgDC9CH,IAAMmM,EAAQ1P,EAAAA,QAAAA,MAAAA,WAAY,C,6BAAZA,C,IAaXK,EAAAA,EAAAA,SACeF,EAAAA,EAAAA,iBACRF,EAAAA,EAAAA,SAqBWA,EAAAA,EAAAA,UAIUA,EAAAA,EAAAA,YAMNA,EAAAA,EAAAA,cACXA,EAAAA,EAAAA,WCFrB,EAzCuC,Y,IACnCwF,EAAE,EAAFA,GAAE,IACFnH,KAAAA,OAAI,IAAG,KAAE,MACTqE,MAAAA,OAAK,IAAG,KAAE,EACVgN,EAAO,EAAPA,QAAO,IACP9L,SAAAA,OAAQ,IAAG,GAAK,EAChB+L,EAAQ,EAARA,SACAC,EAAQ,EAARA,SACA7M,EAAQ,EAARA,SACAG,EAAS,EAATA,UACG9B,GAAK,UATRoE,KACAnH,OACAqE,QACAgN,UACA9L,WACA+L,WACAC,WACA7M,WACAG,cAGMX,GAAkBsN,EAAAA,EAAAA,cAAY,SAACC,GAC5BlM,GACDb,EAAS+M,EAAMC,OAAOrN,MAAOoN,KAElC,CAAClM,EAAUb,IAEd,OACI,UAAC0M,GAAK,gBACFO,UAAWN,EACX9L,SAAUA,EACVqM,YAAaL,EACb1M,UAAWA,GACP9B,GAAK,C,WAET,SAAC8O,QAAK,CACFzM,KAAK,WACL+B,GAAIA,EACJnH,KAAMA,EACNqE,MAAOA,EACPgN,QAASA,EACT9L,SAAUA,EACV+L,SAAUA,EACV5M,SAAUR,KAEd,SAAC4N,OAAI,C,SAAEP,S,w2CCzCa7P,EAAAA,EAAAA,SAAOqQ,EAAAA,GAA4B,Y,6BAAnCrQ,C,KAAzB,IAIMD,EAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IASLsQ,EAAAA,GAIOhQ,EAAAA,GAAAA,OAMAA,EAAAA,GAAAA,OAUbgQ,EAAAA,GACCjQ,EAAAA,EAAAA,GAWAkQ,IANevQ,EAAAA,EAAAA,SAAOwQ,EAAAA,GAAY,Y,6BAAnBxQ,C,IACHM,EAAAA,GAAAA,SAKKN,EAAAA,EAAAA,SAAOyQ,EAAAA,GAAc,Y,6BAArBzQ,C,IACLM,EAAAA,GAAAA,SAKZoQ,GAAiB1Q,EAAAA,EAAAA,SAAO2Q,GAAc,Y,6BAArB3Q,C,KAajB4Q,EAAwB5Q,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KCrD/B6Q,EAAuB,WA6F7B,EA3F0B,Y,IAAGxM,EAAM,EAANA,OAAQyM,EAAO,EAAPA,QAASxP,EAAK,EAALA,MAAOyP,EAAoB,EAApBA,qBAAsBC,EAAQ,EAARA,SACjEC,GAAmBnJ,EAAAA,EAAAA,UAAQ,W,OAAMoJ,EAAAA,EAAAA,OAAwB,IAEzDC,GAAwBrB,EAAAA,EAAAA,cAAY,WAClC7C,SAASE,WAAa0D,EACtBC,KAEAM,EAAAA,EAAAA,IAAc,CACVC,SAAUC,EAAAA,GAAAA,gBACVvB,MAAOwB,EAAAA,GAAAA,QACPlS,OAAQC,EAAAA,GAAAA,KACRd,MAAOqS,MAGhB,CAACC,IAEEU,GAAyB1B,EAAAA,EAAAA,cAAY,YACvCsB,EAAAA,EAAAA,IAAc,CACVC,SAAUC,EAAAA,GAAAA,gBACVvB,MAAOwB,EAAAA,GAAAA,QACPlS,OAAQC,EAAAA,GAAAA,KACRd,MAAO,uBAEXuS,IACAD,MACD,CAACC,EAAsBD,IAE1B,OACI,SAACW,EAAAA,EAAS,CACNnQ,MAAOA,EACPwP,QAASA,EACTzM,OAAQA,EACRqN,MAAO,QACPC,OAAQ,OACRC,WAAW,EACXC,sBAAuB,CACnBC,KAAM,CACFC,SAAU,WACVC,cAAgBhB,EAAe,MAAJ,IAGnCiB,sBAAuB,CACnBC,WAAY,CACRF,cAAe,IAGvBG,yBAA0B,CACtBC,MAAO,CACHC,OAAQ,CACJX,MAAO,mBACPY,gBAAiB,qDAErBC,QAAS,CACLD,gBAAiB,qDACjBE,mBAAoB,MACpBC,eAAgB,UAChBC,iBAAkB,eAI9BnP,YAAU,sB,UAEV,UAACsB,EAAU,C,WACP,UAAC8N,MAAG,CAAClN,GAAI,W,WACL,UAAC6K,EAAAA,GAAU,C,UAAC,mMAER,SAACsC,KAAE,KACH,SAACA,KAAE,QAEP,SAACC,EAAAA,EAAI,CACD/O,KAAM+M,EACNiC,UAAU,EACVC,UAAQ,EACRxP,YAAU,kB,UAEV,SAAC5C,EAAAA,EAAM,CAACqD,QAASmN,E,SAAuB,oFAGhD,SAACwB,MAAG,CAAClN,GAAI,c,UACHwL,IACE,sB,WACI,SAACX,EAAAA,GAAU,C,SAAC,iZACZ,SAAC3P,EAAAA,EAAM,CAAC+I,MAAO,YAAa1F,QAASwN,E,SAAwB,yF,iCCrFnFwB,EAIA,CACE,CACIvN,QAAIvH,EACJyR,SAAS,EACThN,MAAO,iEAEX,CACI8C,GAAIwN,EAAAA,EAAAA,GACJtD,SAAS,EACThN,MAAO,gBAEX,CACI8C,GAAIwN,EAAAA,EAAAA,SACJtD,SAAS,EACThN,MAAO,oDAEX,CACI8C,GAAIwN,EAAAA,EAAAA,aACJtD,SAAS,EACThN,MAAO,8FAEX,CACI8C,GAAIwN,EAAAA,EAAAA,QACJtD,SAAS,EACThN,MAAO,+CA+InB,GAtI+B,Y,IAAGuQ,EAAsB,EAAtBA,uBAAwBC,EAAqB,EAArBA,sBACErV,GAAAA,EAAAA,EAAAA,WAAS,GAA1DiT,EAAiDjT,EAAe,GAA1CsV,EAA2BtV,EAAe,GACrBA,GAAAA,EAAAA,EAAAA,WAAS,GAApDuV,EAA2CvV,EAAe,GAAvCwV,EAAwBxV,EAAe,GACKA,GAAAA,EAAAA,EAAAA,UAAS,IAAxEyV,EAA+DzV,EAAY,GAA9C0V,EAAkC1V,EAAY,GACtDA,GAAAA,EAAAA,EAAAA,UAA6B2V,EAAAA,EAAAA,OAAlDxV,EAAqBH,EAAsD,GAAnE4V,EAAa5V,EAAsD,GACpDA,GAAAA,EAAAA,EAAAA,UAASkV,GAAhCW,EAAuB7V,EAA4B,GAA1C8V,EAAc9V,EAA4B,GAEpDkT,GAAWhJ,EAAAA,EAAAA,GAAqB1H,EAAAA,GAAAA,QAChCuT,GAAcjW,EAAAA,EAAAA,IAAYkW,EAAAA,IAC1BnW,GAAOC,EAAAA,EAAAA,IAAYC,EAAAA,GAGnBkW,GAAsBjM,EAAAA,EAAAA,UAAQ,WAChC,IAAMkM,EAAkB,IAAIC,IAAiB,CACzChB,EAAAA,EAAAA,WAcJ,OAXAU,EACKO,QAAOC,SAAAA,G,OAAMA,EAAGxE,WAChByE,SAAQ,Y,IAAG3O,EAAE,EAAFA,GACU,qBAAPA,GACPuO,EAAgBK,IAAIpB,EAAAA,EAAAA,UACpBe,EAAgBK,IAAIpB,EAAAA,EAAAA,KAEpBe,EAAgBK,IAAI5O,OAIxB,OAAGuO,KACZ,CAACL,IAEEW,GAAexE,EAAAA,EAAAA,cAAY,SAACnN,GAC9BiR,GAAWW,SAAAA,G,OAAeA,EAAYvP,KAAImP,SAAAA,G,OACtCA,EAAGxR,QAAUA,GAAQ,kBAAKwR,GAAE,CAAExE,SAAUwE,EAAGxE,UAAYwE,UAC5D,IAEGK,GAAmB1E,EAAAA,EAAAA,aAAY,W,OAAA,4BAAM2E,G,IACjC/V,EAUwDA,EAAlDT,EAAQF,EAAqB0B,EAAAA,EAC/BiV,E,iFAXS1V,EAAAA,EAAAA,YACfC,EAAAA,EAAAA,GAAoB,CAChBJ,IAAK4V,EAAW5V,KAAO,qJACvBN,MAAOkW,EAAWlW,MAClBoW,gBAAiB3H,OAAOC,SAASE,SACjCrO,WAAYiV,EACZpW,KAAAA,K,QANFe,EAAO,EAAH,MASDQ,WACqDR,EAAAA,EAAKS,QAAvDlB,EAAkDS,EAAlDT,OAAQF,EAA0CW,EAA1CX,QAAqB0B,EAAqBf,EAAjCkW,WAAYnV,OAAgB,IAAhBA,EAAY,KAAZA,EAC/BiV,IAAOzW,GAEbmB,EAAAA,EAAAA,IAAwB,CACpBC,OAAQqV,EAAK,WAAa,QAC1BnV,OAAQ,GAAmCmV,OAAhCX,EAAoBpG,KAAK,MAAiC,OAA1B+G,EAAK,GAAK,MAAQ3W,GAC7D0B,UAAAA,EACA/B,SAAS,IAEb8V,EAA+BzV,GAC/B2V,EAAUgB,EAAKjB,EAAAA,EAAAA,QAA6BA,EAAAA,EAAAA,SAE5CD,EAA+B9U,EAAKmW,MAAM9W,SAC1C2V,EAAUD,EAAAA,EAAAA,QACVrU,EAAAA,EAAAA,IAAwB,CACpBC,OAAQ,QACR3B,SAAS,EACT+B,UAAW,QAInB2T,GAAwB,GACxBE,GAAqB,G,2DAjCkBmB,G,gCAAN,GAkClC,CAACV,IAEEe,GAAuBhF,EAAAA,EAAAA,cAAY,WACrCsD,GAAwB,KACzB,IAEG2B,GAAwBjF,EAAAA,EAAAA,cAAY,WACtCsD,GAAwB,KACzB,IAEG4B,GAAqBlF,EAAAA,EAAAA,cAAY,WACnCwD,GAAqB,KACtB,IAEH,OACI,sB,WACI,SAAC2B,EAAiB,CACd5Q,OAAQ8O,EACRrC,QAASoC,EACT5R,MAAO,gEAA0B,OAAZuS,GACrB9C,qBAAsB+D,EACtB9D,SAAUA,IAEbD,IACG,SAACmE,EAAAA,EAAmB,CAChB7Q,OAAQ0M,EACRD,QAASiE,EACTzT,MAAO,uHACPC,WAAY,+DACZ4T,YAAY,EACZC,cAAeZ,EACfjV,OAAQ,WAAyC,OAA9BwU,EAAoBpG,KAAK,MAC5C0D,SAAUC,EAAAA,GAAAA,gB,UAEV,SAACzM,EAAwB,C,SACpB8O,EAAQ3O,KAAIqQ,SAAAA,G,OACT,SAACxQ,EAAiB,CAEdlC,MAAO0S,EAAK1S,MACZK,SAAU,W,OAAMsR,EAAae,EAAK1S,QAClCgN,QAAS0F,EAAK1F,Q,SAEb0F,EAAK1S,OALD0S,EAAK5P,YAY9B,SAACZ,EAAiB,CACdR,OAAQgP,EACRvC,QAASkE,EACT1T,MAAOrD,IAAWwV,EAAAA,EAAAA,MACZ,gJACAF,EAA4B9F,MAAM,KAAK,GAC7C7J,KAAM3F,IAAWwV,EAAAA,EAAAA,MACX,0XACAF,EAA4B9F,MAAM,KAAK,GAC7C/J,KAAMzF,S,okCCpLf,IAAMqX,EAAYtV,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMZuV,EAAevV,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIfwV,EAAmBxV,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACnBC,EAAAA,EAAAA,UACPI,EAAAA,EAAAA,IAIOoV,EAAgBzV,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAEvBK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,UAMYK,EAAAA,GAAAA,QAOZoV,EAAgB1V,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAMZC,EAAAA,EAAAA,SChCXwV,GAAgBE,EAAAA,EAAAA,OAClB,Y,IAAGC,EAAO,EAAPA,QAASC,EAAI,EAAJA,KACR,OAAQ,UAAChR,EAAgB,C,UAAE+Q,EAAQ,ycACdE,EAAAA,IACjB,SAACjR,EAAgB,CAACf,KAAM+R,E,SAAM,8RAEX,UAK/BJ,EAAcM,YAAc,gBAE5B,QCbaT,EAAY,Y,IAAGU,EAAa,EAAbA,cAAeC,EAAkB,EAAlBA,mBAAoBC,EAAoB,EAApBA,qBAC3D,OACI,UAACrR,EAAY,C,WACT,UAACA,EAAe,C,WACZ,SAAC4Q,EAAa,CAACG,QAAS,0HAA2BC,KAAMG,IACxDE,GAAwBD,IACrB,SAACR,EAAa,CAACG,QAASK,EAAoBJ,KAAMK,QAE1D,UAACrR,EAAmB,C,UAAC,sIACI,IAAIuK,MAAO+G,qB,kiCCfrBnW,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGFM,EAAAA,GAAAA,QAKCN,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAEpBK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,aAGYD,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,IAGnBK,EAAAA,EAAAA,IAjBC,IAoBM+V,EAAapW,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KAMpBqW,GAAWC,EAAAA,EAAAA,KAAG,IAEdjW,EAAAA,EAAAA,SACOJ,EAAAA,EAAAA,UAKIA,EAAAA,EAAAA,aAIJsW,EAAiBvW,EAAAA,QAAAA,OAAAA,WAAa,C,6BAAbA,C,IAOxBqW,GAGOG,EAAYxW,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACnBqW,GC1COD,EAAa,Y,IAAGP,EAAI,EAAJA,KAAMjS,EAAI,EAAJA,KAAMI,EAAO,EAAPA,QAAS+O,EAAQ,EAARA,SAAU0D,EAAQ,EAARA,S,OACxD,SAAC5R,EAAa,C,UACV,SAACgO,EAAAA,EAAI,CAAC/O,KAAM+R,EAAM/C,UAAU,EAAOC,SAAUA,E,UACzC,SAAClO,EAAY,CAACf,KAAM+R,EAAM7R,QAASA,EAAST,YAAWkT,E,SAAW7S,S,4rBCVvE,IAAM8S,EAAc1W,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGFM,EAAAA,GAAAA,QAKZqW,EAAa3W,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAEpBK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,aAGA2W,EAAY5W,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,IAGnBK,EAAAA,EAAAA,ICPOqW,GDUW1W,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KAKCA,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACnBK,EAAAA,EAAAA,SACOJ,EAAAA,EAAAA,UAKIA,EAAAA,EAAAA,aCtBU,Y,IAAGqB,EAAK,EAALA,MAAOuV,EAAK,EAALA,M,OACjC,UAAChS,EAAc,C,WACX,SAACA,EAAa,C,SAAEvD,KAChB,SAACuD,EAAY,C,SACRgS,EAAM7R,KAAI,SAACqQ,G,OAAS,SAACe,EAAU,CAACxS,KAAMyR,EAAKzR,KAAMiS,KAAMR,EAAKQ,MAAWR,EAAKzR,gB,iRChBlF,IAAMkT,GAAS9W,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACGM,EAAAA,GAAAA,QCMZyW,GAAY,Y,QAAGC,cAAAA,OAAa,IAAG,cAAW,E,OACnD,SAACnE,EAAAA,EAAI,CAAC/O,KAAMkT,EAAejE,UAAQ,EAACD,UAAU,E,UAC1C,SAACjO,GAAS,C,UACN,SAAC/D,GAAAA,GAAU,CAAC4C,KAAMC,GAAAA,GAAAA,QAAkBC,KAAK,wFAAkBL,YAAU,qB,YCZpE0T,GAAc,SAACC,GACxBA,EAAO9C,SAAQ,SAAC3M,GACRA,EAAM0P,YACN1P,EAAM0P,iB,0gFCIX,ICTA,GDSMrW,IAAad,EAAAA,EAAAA,SAAOW,GAAAA,GAAO,Y,6BAAdX,C,KAGDM,EAAAA,GAAAA,QAKZ8W,IAAYtX,EAAAA,GAAAA,GAAcF,GAAAA,IAE1ByX,IAAarX,EAAAA,EAAAA,UAAOL,EAAAA,GAAAA,GAAeC,GAAAA,KAAa,Y,6BAAnCI,C,KAGDM,EAAAA,GAAAA,QAKZgX,GAAYtX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACAM,EAAAA,GAAAA,SAQZiX,GAAqBvX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAErBC,EAAAA,EAAAA,KACPI,EAAAA,EAAAA,QAMWJ,EAAAA,EAAAA,YAIJuX,IAAQxX,EAAAA,EAAAA,SAAOyX,GAAAA,GAAa,Y,6BAApBzX,C,KAMIM,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,SAYZoX,GAAmB1X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MASnBI,GAAQJ,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACfK,EAAAA,EAAAA,IAKOsX,GAAgB3X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAYJM,EAAAA,GAAAA,QAcZsX,IAAiB5X,EAAAA,EAAAA,SAAO2X,IAAc,Y,6BAArB3X,C,MAKjB6X,GAAO7X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIPe,GAAUf,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,MACVqB,SAAAA,G,OAASA,EAAMyW,QAAU7X,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,WAGxC4S,GAAO7S,EAAAA,QAAAA,EAAAA,WAAQ,C,8BAARA,C,MEvHP+X,GAAgB,Y,IAAGD,EAAO,EAAPA,QAAS/Z,EAAO,EAAPA,QAASia,EAAe,EAAfA,gBAC9C,OAAIF,QAAuB5Z,IAAZH,GACJ,UAACgD,GAAO,CAAC+W,QAASA,E,UAAS,4YAE9B,SAACjF,GAAI,CAAC7O,QAASgU,E,SAAiB,uBAAU,OAGlC,OAAZja,EACO,MAEJ,SAACgD,GAAO,CAAC+W,QAASA,E,SAAU/Z,KCT1Bka,GAAa,Y,IACtBC,EAAU,EAAVA,WACAC,EAAK,EAALA,MACAtZ,EAAG,EAAHA,IACAN,EAAK,EAALA,MACA6Z,EAAS,EAATA,UACAC,EAAW,EAAXA,YACAC,EAAa,EAAbA,cACAC,EAAa,EAAbA,cACAjW,EAAO,EAAPA,QACAtE,EAAS,EAATA,UACA8Z,EAAO,EAAPA,QACA/Z,EAAO,EAAPA,QACAya,EAAc,EAAdA,eACAR,EAAe,EAAfA,gBAEoCla,GAAAA,EAAAA,EAAAA,WAAS,GAAtCqE,EAA6BrE,EAAe,GAA/BsE,EAAgBtE,EAAe,GAE7C0E,GAAkBsN,EAAAA,EAAAA,cAAY,SAACrN,EAAyBC,GAC1D,IAAM+V,EAAoC,kBAAfhW,EAA0BA,EAAWE,MAAQF,GAEnEN,GAAesW,IAChBD,EAAeL,GACf/V,GAAa,IAEjBM,EAAUD,KACX,CAACN,EAAaqW,EAAgBL,IAE3B5W,EAAa,8FAEnB,OAAO,sB,WACH,UAACsD,GAAQ,CAACtB,YAAU,sB,UAAsB,oFAAiB4U,EAAM3Z,UACjE,UAACqG,GAAO,C,UAAC,kRAEL,UAACA,GAAY,C,UAAC,sBACV,SAACA,GAAqB,CAACb,QAASsU,E,SAAe,qIAA+C,WAGtG,UAACzT,GAAiB,C,WACd,SAACA,GAAY,CACT6T,aAAc7Z,EAAI8D,MAClBK,SAAU,SAACP,G,OAAuBD,EAAgBC,EAAY2V,IAC9DnV,YAAa,8CACbC,aAAc,yKACd5E,KAAK,qBACL6E,UAAW,qBAEf,SAAC0B,GAAa,CACV6T,aAAcna,EAAMoE,MACpBK,SAAU,SAACP,G,OAAuBD,EAAgBC,EAAY4V,IAC9DpV,YAAa,kFACbC,aAAc,6JACd5E,KAAK,sBACL6E,UAAW,wBAInB,SAAC4U,GAAa,CAACD,QAASA,EAAS/Z,QAASA,EAASia,gBAAiBA,KAEpE,SAAC1U,GAAAA,EAAU,CACPC,YAAU,YACVhC,WAAYA,EACZiC,SAAU0U,KAEd,SAACrT,GAAgB,C,UACb,SAACA,GAAa,CACV6E,MAAO,SACP1F,QAASuU,EACT1U,UAAWvB,GAAWtE,EACtBuF,YAAU,sB,SAEThC,UC5EJoX,GAAoB,Y,IAAGC,EAAM,EAANA,OAAQC,EAAa,EAAbA,cAAeC,EAAc,EAAdA,e,OACvD,sB,WACI,SAAC1Y,GAAK,C,SAAC,sIACP,SAACsX,GAAgB,CAACnU,YAAU,c,SACvBqV,EAAO5T,KAAI,SAACmT,EAAOlT,G,OAChB,SAACtE,GAAAA,EAAM,CACH+I,MAAOoP,IAAmB7T,EAAQ,UAAY,YAE9CjB,QAAS,W,OAAM6U,EAAcV,EAAOlT,IACpC1B,YAAU,qB,SAET4U,EAAM3Z,OAJF2Z,EAAMY,gB,SHbnBC,GAAAA,EAAAA,EACO,gBAAfC,GAAAA,kBADQD,EAAAA,EAEQ,iBAAhBE,GAAAA,mBAFQF,EAAAA,EAGK,cAAbG,GAAAA,gBAHQH,EAAAA,EAIA,SAARI,GAAAA,WAJQJ,EAAAA,EAKH,MAALK,GAAAA,Q,CALQL,KAAAA,GAAO,KA0BZ,IAEMM,GAAmB,CAC5B,CACIP,KAAMC,GAAQC,gBACdza,MAAO,wHAEX,CACIua,KAAMC,GAAQE,iBACd1a,MAAO,6HAEX,CACIua,KAAMC,GAAQG,cACd3a,MAAO,mFAEX,CACIua,KAAMC,GAAQI,SACd5a,MAAO,4EAEX,CACIua,KAAMC,GAAQK,MACd7a,MAAO,yCItBF+a,GAAqB,Y,IAC9BvB,EAAe,EAAfA,gBACA3T,EAAM,EAANA,OACAyM,EAAO,EAAPA,QACA0I,EAAiB,EAAjBA,kBACAhB,EAAc,EAAdA,eACAN,EAAU,EAAVA,WAE0Bpa,GAAAA,EAAAA,EAAAA,UAAiBwb,GJPlB,IIOlBnB,EAAmBra,EAAuC,GAAnD2b,EAAY3b,EAAuC,GACxBA,GAAAA,EAAAA,EAAAA,WAAkB,GAApD4b,EAAkC5b,EAAuB,GAArC6b,EAAc7b,EAAuB,GAC5BA,GAAAA,EAAAA,EAAAA,UJTX,GISlB8b,EAA6B9b,EAA+B,GAA/C+b,EAAgB/b,EAA+B,GAC7CA,GAAAA,EAAAA,EAAAA,UAAsB,CAAE6E,MAAO,GAAIL,SAAS,IAA3DzD,EAAef,EAAoD,GAA9Dgc,EAAUhc,EAAoD,GAChDA,GAAAA,EAAAA,EAAAA,UAAsB,CAAE6E,MAAO,GAAIL,SAAS,IAA/D/D,EAAmBT,EAAoD,GAAhE+D,EAAY/D,EAAoD,GAClCA,GAAAA,EAAAA,EAAAA,UAAwB,MAA7Dic,EAAqCjc,EAA6B,GAAhDkc,EAAmBlc,EAA6B,GAEvCA,GAAAA,EAAAA,EAAAA,WAAkB,GAA7CE,EAA2BF,EAAwB,GAAxCmc,EAAgBnc,EAAwB,GAC5BA,GAAAA,EAAAA,EAAAA,WAAkB,GAAzCga,EAAuBha,EAAwB,GAAtCoc,EAAcpc,EAAwB,GACxBA,GAAAA,EAAAA,EAAAA,UAAoC,MAA3DC,EAAuBD,EAAyC,GAAvDqc,EAAcrc,EAAyC,GAErDsc,GAA0B,QCpClB,SAACvb,EAAkBN,GAC7C,IAA8BT,GAAAA,EAAAA,EAAAA,WAAkB,GAAzCwE,EAAuBxE,EAAwB,GAAtCuc,EAAcvc,EAAwB,GAItD,OAHAuE,EAAAA,EAAAA,YAAU,WACNgY,EAAWxb,EAAIyD,SAAW/D,EAAM+D,WACjC,CAACzD,EAAKN,IACF,CAAC+D,GD+BU8X,CAAevb,EAAKN,GAAM,GAArC+D,EAAW8X,EAA0B,GAItCE,EAAmB,WACrBR,EAAO,CAAEnX,MAAO,GAAIL,SAAS,IAC7BT,EAAS,CAAEc,MAAO,GAAIL,SAAS,KAG7BiY,GAAczK,EAAAA,EAAAA,cAAY,WAC5B6J,GAAW,GACXE,EJ7BqB,GI8BrBK,GAAW,GACXC,EAAW,MACXlD,GAAY,CAACpY,EAAKN,IAClB+b,IACIP,GACAS,aAAaT,GAEjBjJ,MACD,CAACjS,EAAKN,EAAOwb,EAAkBjJ,IAE5B2J,GAAoB3K,EAAAA,EAAAA,cAAY,8B,IAUxBpR,E,qEATNyZ,EAAO,C,uBACP+B,GAAW,GACXC,EAAW,MACPJ,GACAS,aAAaT,GAEjBE,GAAa,GACbE,EAAW,M,SAEQX,EAAkB,CACjCrB,MAAAA,EACAuC,SAAU7b,EAAI8D,MACdgY,WAAYpc,EAAMoE,Q,OAHhBjE,EAAO,EAAH,KAMVuY,GAAY,CAACpY,EAAKN,IAClB+b,IAEAL,GAAa,GACbC,EAAWxb,EAAKoZ,SAChBqC,EAAWzb,EAAKX,SAChBic,EAAgBY,OAAOC,YAAW,WAC9BX,GAAW,GACXC,EAAW,QACZ,O,4CAER,CAAChC,EAAO4B,EAAkBP,EAAmB3a,EAAKN,IAarD,OAAO,SAACiZ,GAAK,CAACnT,OAAQA,EAAQyM,QAASyJ,E,SAE/Bb,GACM,SAACf,GAAiB,CAChBC,OAAQU,GACRR,eAAgBc,EAChBf,cAjBQ,SAACV,EAAelT,GACpC0U,GAAW,GACXF,EAAStB,GACT0B,EAAa5U,OAeH,SAACgT,GAAU,CACTpZ,IAAKA,EACLyZ,cAdQ,WACpBqB,GAAW,GACXW,KAaYlC,UAAW0B,EACXzB,YAAaxW,EACb9D,QAASA,EACTwa,cAAekC,EACflc,MAAOA,EACP4Z,MAAOA,EACP7V,QAASA,EACTtE,UAAWA,EACX8Z,QAASA,EACTI,WAAYA,EACZM,eAAgBA,EAChBR,gBAAiBA,O,uBErHxBzB,GAAiB,Y,IAAG3S,EAAI,EAAJA,KAAMI,EAAO,EAAPA,QAASyS,EAAQ,EAARA,S,OAC5C,SAAC5R,EAAa,C,UACV,SAACA,EAAiB,CAACb,QAASA,EAAST,YAAWkT,E,SAAW7S,O,8hECN5D,IAAMkX,GAAS9a,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAChBK,EAAAA,EAAAA,IAKO0a,GAAY/a,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACnBK,EAAAA,EAAAA,SACOJ,EAAAA,EAAAA,UAMIA,EAAAA,EAAAA,YAGQK,EAAAA,GAAAA,QAKZ0a,GAAehb,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACtBK,EAAAA,EAAAA,UACOJ,EAAAA,EAAAA,KAKIA,EAAAA,EAAAA,YAGQK,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,UAIG4a,GAAejb,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACtBK,EAAAA,EAAAA,SACOJ,EAAAA,EAAAA,KAaIA,EAAAA,EAAAA,MAIJib,GAASlb,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOGM,EAAAA,GAAAA,SAKAA,EAAAA,GAAAA,QAUZ6a,GAAcnb,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMFM,EAAAA,GAAAA,QAMZ8a,GAAOpb,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KAGdK,EAAAA,EAAAA,IAMOgW,GAAWrW,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,MCpFlBqb,GAAkB,CACpB,CACIvX,KAAM,sBACNwX,QAAS,KACT1X,KAAM,oDACN2X,KAAMC,OAIDC,GAAU,Y,IACnBjD,EAAc,EAAdA,eACAR,EAAe,EAAfA,gBAAe,IACf0D,YAAAA,OAAW,IAAG,iBAAc,MAC5BC,aAAAA,OAAY,IAAG,kBAAe,MAC9BzD,WAAAA,OAAU,IAAG,gBAAa,EAC1B3Z,EAAK,EAALA,MACAib,EAAiB,EAAjBA,kBACAoC,EAAQ,EAARA,SAE4C9d,GAAAA,EAAAA,EAAAA,WAAS,GAA9C+d,EAAqC/d,EAAe,GAApCge,EAAqBhe,EAAe,GAErDie,EAAkB,WACpBD,GAAkB,IAOhBE,GAAYlU,EAAAA,EAAAA,UAAQ,WAAMvJ,OAAK,OAALA,QAAK,IAALA,OAAAA,EAAAA,EAAOqP,QAAQ,MAAO,MAAK,CAACrP,IAE5D,OAAO,sB,WACH,SAACsG,GAAS,C,SAAC,+GACX,UAACA,GAAS,C,WAEN,SAACA,GAAO,C,SACHwW,GAAgBrW,KAAI,Y,IAAGlB,EAAI,EAAJA,KAAMwX,EAAO,EAAPA,QAAS1X,EAAI,EAAJA,KAAM2X,EAAI,EAAJA,K,OACzC,SAAC1W,GAAW,CAAYtB,YAAW+X,E,UAC/B,UAACzW,GAAe,CAACf,KAAMA,E,WACnB,SAACmY,MAAG,CAACC,IAAKX,EAAMY,IAAK,mFAA0B,OAARb,KACrC,oDAAgB,OAAL1X,OAHHA,SAQ1B,UAACiB,GAAO,C,UACH+W,IAAY,SAACrF,GAAc,CAACvS,QAASgU,EAAiBvB,SAAS,OAAO7S,KAAM,gFAC7E,SAACwS,EAAU,CAACP,KAAM,UAAuB,OAAb8F,GAAgBlF,SAAS,QAAQ7S,KAAM,kGAEnE,SAAC2S,GAAc,CAACvS,QAAS+X,EAAiBtF,SAAS,UAAU7S,KAAM,2MAEnE,SAACwS,EAAU,CAACP,KAAM6F,EAAajF,SAAS,QAAQ7S,KAAM,oGAAqBmP,UAAQ,WAK3F,UAAClO,GAAc,C,WACX,SAACA,GAAY,CACTf,KAAM,QAAkB,OAAVkY,GACd7Y,UAAU,qBACVI,YAAU,Q,SAEThF,KAGL,SAACsG,GAAe,CAACb,QAAS+X,EAAiBxY,YAAU,kB,SAAkB,+IAM3E,SAACgW,GAAkB,CACfvB,gBAAiBA,EACjBQ,eAAgBA,EAChBnU,OAAQwX,EACR/K,QAlDiB,WACrBgL,GAAkB,IAkDdtC,kBAAmBA,EACnBtB,WAAYA,EACZ3U,YAAU,8B,giIC5Ff,IAAM6Y,GAASpc,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGJC,EAAAA,EAAAA,YAIOK,EAAAA,GAAAA,QAKZ+b,GAAYrc,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MASZsc,GAAOtc,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMKM,EAAAA,GAAAA,SAIAA,EAAAA,GAAAA,QAKZic,GAAgBvc,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIJM,EAAAA,GAAAA,SAIAA,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,QAKZoG,GAAY1G,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIZwc,GAAkBxc,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAoBCC,EAAAA,EAAAA,cAIPK,EAAAA,GAAAA,QAKZmc,GAAYzc,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMAM,EAAAA,GAAAA,SAUAA,EAAAA,GAAAA,QAiBZoc,GAAa1c,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACpBK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,UAGYK,EAAAA,GAAAA,QAKZqc,IAAe3c,EAAAA,EAAAA,SAAO4c,GAAAA,GAAO,Y,6BAAd5c,C,KAECM,EAAAA,GAAAA,OAQAA,EAAAA,GAAAA,QAUhBuc,GAAgB7c,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIhB8c,GAAQ9c,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAMIM,EAAAA,GAAAA,SAKAA,EAAAA,GAAAA,QAMZyc,GAAe/c,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KASHM,EAAAA,GAAAA,QAYZ0c,GAAehd,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAEAC,EAAAA,EAAAA,UAEHK,EAAAA,GAAAA,QAKZ2c,GAAajd,EAAAA,QAAAA,EAAAA,WAAQ,C,8BAARA,C,MC7JpBkd,GAAU,CACZ,CAAErH,KAAM,uBAAwBsH,WAAY,QAASlB,IAAKmB,MAC1D,CAAEvH,KAAM,sBAAuBsH,WAAY,QAASlB,IAAKoB,MACzD,CAAExH,KAAM,8BAA+BsH,WAAY,QAASlB,IAAKqB,OAGxDlB,GAAS,Y,IAClB5D,EAAc,EAAdA,eACA+E,EAAmB,EAAnBA,oBACAvF,EAAe,EAAfA,gBACAnB,EAAK,EAALA,MACA8E,EAAY,EAAZA,aACApd,EAAK,EAALA,MACAqF,EAAI,EAAJA,KACA4Z,EAAa,EAAbA,cACAhE,EAAiB,EAAjBA,kBACAoC,EAAQ,EAARA,SAEA,gBAAC/W,GAAS,CAACtB,YAAU,S,UACjB,UAACsB,GAAO,C,WACJ,UAACA,GAAY,C,WACT,SAACA,GAAgB,C,UACb,UAACA,GAAY,C,WACT,SAAC4W,GAAO,CACJG,SAAUA,EACVD,aAAcA,EACdpd,MAAOA,EACPmd,YAAkB,OAAL7E,QAAK,IAALA,OAAAA,EAAAA,EAAO6E,YACpBxD,WAAiB,OAALrB,QAAK,IAALA,OAAAA,EAAAA,EAAOqB,WACnBF,gBAAiBA,EACjBwB,kBAAmBA,EACnBhB,eAAgBA,EAChBjV,YAAU,aAEd,UAACsB,GAAkB,C,WACf,SAACA,GAAa,C,SAAC,4EACf,SAACA,GAAe,CAACtB,YAAU,SAASka,QAASP,cAIzD,UAACrY,GAAgB,C,WACb,UAACA,GAAY,C,WACT,SAAC6R,EAAW,CACRG,MAAO2G,EAAcE,SACrBpc,MAAO,uCACPiC,YAAW,kBAEdia,EAAcG,KAAK3Y,KAAI,Y,IAAG1D,EAAK,EAALA,MAAOsc,EAAQ,EAARA,SAAUC,EAAG,EAAHA,I,OACxC,SAACnH,EAAW,CAACpV,MAAOA,EACPuV,MAAO+G,EAEPra,YAAWsa,GADNA,UAI1B,UAAChZ,GAAQ,C,WACL,SAACkS,GAAS,CAACxT,YAAU,cAAcyT,cAAoB,OAALH,QAAK,IAALA,OAAAA,EAAAA,EAAOG,iBACzD,UAACnS,GAAe,C,WACZ,SAACiZ,EAAAA,EAAiB,CACd9Z,QAAS,SAACnB,G,OAA4C0a,EAAoB,MAAO1a,IACjFkb,MAAOC,EAAAA,EAAAA,SACPza,YAAU,eAEd,SAACua,EAAAA,EAAiB,CACd9Z,QAAS,SAACnB,G,OAA4C0a,EAAoB,UAAW1a,IACrFkb,MAAOC,EAAAA,EAAAA,WACPza,YAAU,6BAM9B,UAACsB,GAAe,C,WACZ,SAACyQ,EAAS,CACN/R,YAAU,SACVyS,cAAea,EAAMb,cACrBC,mBAAyB,OAALY,QAAK,IAALA,OAAAA,EAAAA,EAAOZ,mBAC3BC,qBAA2B,OAALW,QAAK,IAALA,OAAAA,EAAAA,EAAOX,uBAEhCtS,IAAQ,SAACiB,GAAa,C,SAAEjB,a,sHCzH5Bqa,GAAuB,SAAC9f,GACjC,OAAOA,EAAM6P,KAAKkQ,gBAAkB,MAW3BC,KAR4BC,EAAAA,GAAAA,IACrCH,IACA,SAACI,GAEO,OADgB,OAALA,QAAK,IAALA,OAAAA,EAAAA,EAAOC,QACD,OAIqBF,EAAAA,GAAAA,IAC9CH,IACA,SAACI,GACG,IAAI7V,EAA2B,GACzB+V,EAAc,OAALF,QAAK,IAALA,OAAAA,EAAAA,EAAOC,MAStB,OARIC,IACA/V,EAAS+V,EAAOhW,QAAO,SAACiW,EAAKC,GAIrB,OAHIA,EAAIxgB,SAAWygB,GAAAA,EAAAA,WACfF,EAAIpV,KAAKqV,GAEND,IACU,KAEtBhW,M,KAI0B4V,EAAAA,GAAAA,IACrCH,IACA,SAACI,GAEG,OADoB,OAALA,QAAK,IAALA,OAAAA,EAAAA,EAAOC,QACL,M,2xECjClB,ICyBA,GDzBMzG,GAAO7X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACdK,GAAAA,GAAAA,GAGOse,IAAa3e,EAAAA,EAAAA,SAAOyX,GAAAA,GAAa,Y,6BAApBzX,C,MAGb4e,EAAAA,GAAAA,IAAW,OAGXA,EAAAA,GAAAA,IAAW,MAIXA,EAAAA,GAAAA,IAAW,MAKX9D,GAAS9a,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAChBK,GAAAA,GAAAA,IAEOue,EAAAA,GAAAA,IAAW,KAEdve,GAAAA,GAAAA,GAEGue,EAAAA,GAAAA,IAAW,MAMXC,GAAO7e,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIP4e,EAAAA,GAAAA,IAAW,MAOXE,GAAa9e,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAQb+e,IAAa/e,EAAAA,EAAAA,SAAOgf,GAAAA,GAAM,Y,6BAAbhf,C,MAIbif,GAAcjf,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEvBK,GAAAA,GAAAA,IACOJ,GAAAA,GAAAA,YAGEif,GAAYlf,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAMb4e,EAAAA,GAAAA,IAAW,OAGXA,EAAAA,GAAAA,IAAW,MAMVO,IAAYnf,EAAAA,EAAAA,SAAOgf,GAAAA,GAAM,Y,6BAAbhf,C,MAIZof,GAAepf,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAExBK,GAAAA,GAAAA,IACOJ,GAAAA,GAAAA,KAGEof,GAAgBrf,EAAAA,QAAAA,EAAAA,WAAQ,C,8BAARA,C,KAGzBK,GAAAA,GAAAA,KAKSM,IAASX,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,8BAAlBd,C,MAKV4e,EAAAA,GAAAA,IAAW,Q,SC1EXU,GAAAA,EAAAA,EACD,QAAPC,GAAAA,UADQD,EAAAA,EAEH,MAALzK,GAAAA,QAFQyK,EAAAA,EAGa,sBAArBE,GAAAA,wB,CAHQF,KAAAA,GAAW,KAMhB,IAAM9H,GAAoB,Y,IAC7B8G,EAAK,EAALA,MACApb,EAAY,EAAZA,aACAuc,EAAS,EAATA,UACAC,EAAS,EAATA,UACAC,EAAY,EAAZA,aACAC,EAAS,EAATA,UACAC,EAAe,EAAfA,gBACAC,EAAY,EAAZA,aACAC,EAAqB,EAArBA,sBAEwBjiB,GAAAA,EAAAA,EAAAA,UAAiB,IAAlCib,EAAiBjb,EAAoB,GAA/BkiB,EAAWliB,EAAoB,GACVA,GAAAA,EAAAA,EAAAA,UAAqB,CACnDG,QAAQ,EACRF,QAAS,KAFNkiB,EAA2BniB,EAGhC,GAHgBoiB,EAAgBpiB,EAGhC,GACIqiB,GAAarQ,EAAAA,EAAAA,cAAY,SAACnN,GAC5Bqd,EAAQrd,KACT,IAEGyd,GAAgBtQ,EAAAA,EAAAA,cAAY,8B,IACxBuQ,EACAC,E,wEADAD,EAAMpT,SAASsT,OAAStT,SAASE,S,SAChBnO,EAAAA,EAAAA,YACnBwhB,EAAAA,GAAAA,GAA2B,CACvBC,WAAYb,EAAU/R,WACtBwS,IAAAA,EACAK,UAAW,O,QAJbJ,EAAW,EAAH,MAQAphB,YACV2gB,EAAgBS,EAASzL,MAAM9W,QAAUuiB,EAASzL,MAAM9W,QAAU,IAClE+hB,EAAaR,GAAYzK,Q,2CAE9B,CAAC+K,IAEEe,GAAoB7Q,EAAAA,EAAAA,cAAY,WAClCoQ,EAAa,CACTjiB,QAAQ,EACRF,QAAS,KAEbiiB,EAAQ,IACRL,MACD,IAEGiB,GAAS9Q,EAAAA,EAAAA,cAAY,8B,IACjBwQ,E,iFAAiBthB,EAAAA,EAAAA,YACnB6hB,EAAAA,GAAAA,GAAa,CACThD,IAAK9E,EACL0H,WAAYb,K,YAHdU,EAAW,EAAH,MAODphB,UAAW,C,+BACd6gB,I,6BAENG,EAAa,CACTjiB,QAAQ,EACRF,QAASuiB,EAASzL,MAAM9W,QAAUuiB,EAASzL,MAAM9W,QAAU,mQ,2CAGpE,CAACgb,EAAM6G,EAAWG,IAErB,OAAQL,GACJ,KAAMJ,GAAYC,QACd,OAAQ,UAACuB,GAAAA,EAAW,CAChBzc,OAAQob,EACR3O,QAAS6P,EACTrf,MAAM,uCACNoC,KAAM+P,GAAAA,EAAAA,Q,WAEN,UAAC5O,GAAO,C,UAAC,iQACL,SAACgO,EAAAA,EAAI,CAAC/O,KAAK,2B,UAA2B,SAACid,IAAC,C,SAAC,qIAE7C,SAAClc,GAAS,CAACnB,KAAMC,GAAAA,GAAAA,UAAoBK,QAAS2c,E,SAAmB,4CAEzE,KAAMrB,GAAYzK,MACd,OAAQ,SAACiM,GAAAA,EAAW,CAChBzc,OAAQob,EACR3O,QAAS6P,EACTrf,MAAM,8FACNsC,KAAMV,EACNQ,KAAM+P,GAAAA,EAAAA,M,UAEN,UAAC5O,GAAO,C,UAAC,yKAC2Bmc,GAAAA,IAAmB,SAACC,GAAAA,EAAQ,SAGxE,KAAM3B,GAAYE,sBACd,OAAQ,UAAC3a,GAAa,CAACR,OAAQob,EAAW3O,QAAS6P,EAAmBpd,YAAU,gB,WAC5E,UAACsB,GAAS,C,UAAC,6NAA0C,SAAC+N,KAAE,IAAE,2LAC1D,UAAC/N,GAAO,C,WACJ,UAACA,GAAa,C,WACV,SAACA,GAAa,CACVnB,KAAK,QACLf,MAAO2b,EACPza,UAAQ,EACRN,YAAU,qBAEd,UAACsB,GAAc,C,UAAC,0UACiD,SAAC+N,KAAE,IAAE,+TAI1E,UAAC/N,GAAY,C,WACT,SAACA,GAAY,CACT7B,SAAUmd,EACVvQ,UAAU,EACV1M,aAAc+c,EACdhd,YAAY,uEACZM,YAAU,oBAEd,SAACsB,GAAe,CAACqc,QAASjB,EAAUhiB,O,SAASgiB,EAAUliB,WACvD,SAAC8G,GAAgB,CAACb,QAASoc,E,SAAe,qJAE9C,SAACvb,GAAS,CACNnB,KAAMC,GAAAA,GAAAA,UACNK,QAAS4c,EACT/c,UAAWkV,EACXxV,YAAU,iB,SACb,iEAKb,QACI,OAAO,0B,o2CC3JZ,IAAMmD,GAAY1G,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACPC,EAAAA,EAAAA,aAULkhB,GAAWnhB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAElBK,EAAAA,EAAAA,EAGmB+gB,GAAAA,EAAAA,QAKZrC,IAAa/e,EAAAA,EAAAA,SAAOgf,GAAAA,GAAM,Y,6BAAbhf,C,MAKbU,GAAcV,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKFohB,GAAAA,EAAAA,QAKZzgB,IAASX,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,6BAAlBd,C,KAMGohB,GAAAA,EAAAA,QC2KzB,IDrKsBphB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEhBK,EAAAA,EAAAA,IACOJ,EAAAA,EAAAA,SAGYmhB,GAAAA,EAAAA,QAKCphB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACbC,EAAAA,EAAAA,WCyJEe,EAAAA,EAAAA,KAAf,EAzLiC,Y,QAAGqgB,SAAAA,OAAQ,IAAG,EAJlC,4NAIsC,EAEzCC,GAAaC,EAAAA,EAAAA,QAAc,MAE3BxT,GAASnQ,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM6P,KAAKD,UACnDyT,GAAkB5jB,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBggB,GAAmChgB,MAEhEL,GAAAA,EAAAA,EAAAA,UAAiB,CACvC6E,MAAO,GACPL,SAAS,IAFNgc,EAAmBxgB,EAGxB,GAHY2jB,EAAY3jB,EAGxB,GACgCA,GAAAA,EAAAA,EAAAA,UAAiB,GAA5C8hB,EAA2B9hB,EAAmB,GAAnC4jB,EAAgB5jB,EAAmB,GACjBA,GAAAA,EAAAA,EAAAA,WAAkB,GAA/C6jB,EAA6B7jB,EAAwB,GAAzC8jB,EAAiB9jB,EAAwB,GAC1BA,GAAAA,EAAAA,EAAAA,WAAkB,GAA7C2hB,EAA2B3hB,EAAwB,GAAxC+jB,EAAgB/jB,EAAwB,GACxBA,GAAAA,EAAAA,EAAAA,UAAsBwhB,GAAYE,uBAA7DE,EAA2B5hB,EAAwD,GAAxEgiB,EAAgBhiB,EAAwD,GAClDA,GAAAA,EAAAA,EAAAA,UAAiB,IAAlDoF,EAAiCpF,EAAoB,GAAvC+hB,EAAmB/hB,EAAoB,GACZA,GAAAA,EAAAA,EAAAA,WAAkB,GAA3DgkB,EAAyChkB,EAAwB,GAA/CikB,EAAuBjkB,EAAwB,GAElEkkB,GAAQ,kBAAcA,MACtB9W,GAAWuD,EAAAA,EAAAA,MAEXwT,EAAmB,W,OAAA,8B,IACfpE,EACA+B,EACAU,E,wEAFAzC,EAAMqE,OAAOF,EAAMnE,KACnB+B,EAAYhF,OAAOoH,EAAMvc,I,SACRzG,EAAAA,EAAAA,YACnB6hB,EAAAA,GAAAA,GAAa,CACThD,IAAAA,EACA4C,WAAYb,K,YAHdU,EAAW,EAAH,MAODphB,UAAW,C,gCACd6gB,I,gCAEN3O,EAAAA,GAAAA,IAAc,CACV,MAAU,UACV,SAAY,0BACZ,OAAW,UAEf0O,EAAaR,GAAYzK,OA1CJ,oBA2CjByL,EAASzL,MAAMkE,KACf8G,EA3CmB,0IA6CnBA,EAAgBS,EAASzL,MAAM9W,QAAUuiB,EAASzL,MAAM9W,QAAU,I,QAG1E8jB,GAAa,G,8FAzBQ,IA4BzBxf,EAAAA,EAAAA,YAAU,WACF0L,GACuB,YAAvBmU,OAAOF,EAAMte,OACbse,EAAMvc,IACNuc,EAAMnE,KACNoE,MAEL,KAGH5f,EAAAA,EAAAA,YAAU,WACF0L,GAAqC,IAA3ByT,EAAgBzc,QAC1B6c,GAAc,IACdxQ,EAAAA,GAAAA,IAAc,CACV,MAAU,UACV,SAAY,0BACZ,OAAW,eAGfwQ,GAAc,KAEnB,CAAC7T,EAAQyT,IAEZ,IAAMW,GAAcrS,EAAAA,EAAAA,cAAY,SAACnN,GACxBmf,KACD1Q,EAAAA,GAAAA,IAAc,CACV,MAAS,UACT,SAAY,0BACZ,OAAU,YAEd2Q,GAAoB,IAExB,IAAM,EAAcT,EAAZc,QACF9f,IAAU8f,KAAkB,OAAPA,QAAO,IAAPA,OAAAA,EAAAA,EAASjkB,MAAMkkB,UAC1CZ,EAAS,CACL9e,MAAAA,EACAL,QAAAA,MAEL,CAACwf,IAEEnC,GAAe7P,EAAAA,EAAAA,cAAY,WAC7B+R,GAAa,GACTnC,IAAcJ,GAAYC,SAC1BqC,GAAc,KAEnB,CAAClC,IAEEkB,GAAS9Q,EAAAA,EAAAA,cAAY,8B,IACjBuQ,EACA3hB,E,wEADA2hB,EAAMpT,SAASsT,OAAStT,SAASE,S,SACpBnO,EAAAA,EAAAA,YACfsjB,EAAAA,GAAAA,GAAoB,CAChBhE,MAAOA,EAAM3b,MACb0d,IAAAA,K,QAHF3hB,EAAO,EAAH,MAODQ,YACLkS,EAAAA,GAAAA,IAAc,CACV,MAAU,UACV,SAAY,0BACZ,OAAW,gBAEfsQ,EAAahjB,EAAKS,SAClB2gB,EAAaR,GAAYE,uBACzBqC,GAAa,MAEbzQ,EAAAA,GAAAA,IAAc,CACV,MAAU,UACV,SAAY,0BACZ,OAAW,UAEfyO,EAAgBnhB,EAAKmW,MAAM9W,SAC3B+hB,EAAaR,GAAYzK,OACzBgN,GAAa,I,2CAElB,CAACvD,IAEEyB,EAAwB,W,OAAA,8B,wEAC1B3O,EAAAA,GAAAA,IAAc,CACV,MAAU,UACV,SAAY,0BACZ,OAAW,yBAEf0O,EAAaR,GAAYC,S,SACnBrU,GAASqX,EAAAA,GAAAA,M,6FAPW,GAUxBhhB,EAAa,qEAEnB,OAAO,sB,UACDogB,IACE,SAACa,GAAAA,EAAe,C,UACZ,UAAC3d,GAAY,CAACtB,YAAU,c,WACpB,SAACsB,GAAW,CAAC4d,wBAAyB,CAAEC,OAAQrB,GAAY9d,YAAU,cACtE,SAACsB,GAAa,CACV8d,IAAKrB,EACL5d,KAAK,QACLR,aAAa,iHACbD,YAAY,2BACZD,SAAUmf,EACVxf,MAAO2b,EAAM3b,MACbiN,UAAU,EACVrM,YAAU,gBAEd,SAACsB,GAAc,C,UACX,SAACA,GAAS,CACNnB,KAAMC,GAAAA,GAAAA,OACNK,QAAS4c,EACT/c,UAAWya,EAAMhc,QACjBiB,YAAU,kB,SAEThC,OAGT,SAAC+B,GAAAA,EAAU,CACPC,YAAU,YACVhC,WAAYA,EACZiC,SAAUC,GAAAA,UAK1B,SAAC+T,GAAK,CACF8G,MAAOA,EAAM3b,MACbO,aAAcA,EACduc,UAAWA,EACXC,UAAWA,EACXC,aAAcA,EACdC,UAAWA,EACXE,aAAcA,EACdD,gBAAiBA,EACjBE,sBAAuBA,W,gGCpNtB6C,IAAoBxE,EAAAA,GAAAA,IAAeyE,GAAAA,IAAoBC,SAAAA,GAChE,IAAKA,EACD,OAAO,EAEX,MAA2CA,EAAnCC,SAAAA,OAAQ,IAAG,KAAE,IAAsBD,EAApBE,WAAAA,OAAU,IAAG,KAAE,EACtC,SAAUC,EAAAA,GAAAA,KAAqB,QAAIF,GAAAA,QAAU,QAAGC,IAAaE,GAAAA,IAAcne,UCqBzEoe,GAA6C,CAC/C,GAAI,CACAnN,cAAe,8FAIjBoN,GAA6B,CAC/BpN,cAAe,8FAGNoG,GAAS,Y,IAesB+G,EAflBvf,EAAI,EAAJA,KAAMyf,EAAe,EAAfA,gBAAiB,EAAF,EAAEC,gBAAAA,OAAe,IAAG,KAAE,EAAE1H,EAAQ,EAARA,SAC7D1Q,GAAWuD,EAAAA,EAAAA,MAIb7Q,GAAAA,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,KAAM,EAArCP,EAFAsD,KAAQC,EAAiB,EAAjBA,YAAmBoiB,EAAsB,EAAtBA,SAAYzY,WAAU,EAEjDlN,EADAoQ,KAAQD,EAAM,EAANA,OAAQyV,EAAc,EAAdA,eAAgBC,EAAW,EAAXA,YAAaC,EAAY,EAAZA,aAE3C/H,GAAe/d,EAAAA,EAAAA,IAAY+lB,GAAAA,IAC3BC,GAAchmB,EAAAA,EAAAA,IAAYimB,GAAAA,IAC1BC,GAAclmB,EAAAA,EAAAA,IAAYglB,IAExBxhB,EAA6CF,EAA7CE,OAAQ2iB,EAAqC7iB,EAArC6iB,SAAUC,EAA2B9iB,EAA3B8iB,IAAKC,EAAsB/iB,EAAtB+iB,IAAKC,EAAiBhjB,EAAjBgjB,aAC9BC,EAA0B,OAAdX,QAAc,IAAdA,OAAAA,EAAAA,EAAgBW,UAE9BrZ,KAAcqY,KACdC,GAAanN,mBAAqB2N,EAClCR,GAAalN,sBAA+C,QAAxBiN,EAAAA,GAAarY,UAAW,IAAxBqY,OAAAA,EAAAA,EAA0BnN,gBAAiB,KAGnF,IAAMwD,GAAoB1J,EAAAA,EAAAA,aAAY,W,OAAA,+B,IAAQqI,EAAOuC,EAAUC,EACvDjc,EACE0lB,E,oEAFoCjM,EAAK,EAALA,MAAOuC,EAAQ,EAARA,SAAUC,EAAU,EAAVA,WAErDyJ,EAAMrW,EAASoW,EAAY,KAE7BhM,EAAMY,OAASC,GAAQG,cAAa,C,gCACvBna,EAAAA,EAAAA,YACTqlB,EAAAA,EAAAA,GAAWvZ,EAAY,CACnBjM,IAAK6b,EACLnc,MAAOoc,EACP/b,SAAU0lB,EAAAA,EAAAA,c,OAJlB5lB,EAAO,EAAH,MAQJU,EAAAA,GAAAA,IAAwB,CACpBC,OAAQX,EAAKQ,UAAYI,GAAAA,GAAAA,SAAmBA,GAAAA,GAAAA,MAC5CG,UAAW,KACXF,OAAQb,EAAKQ,UAAY,GAAe,OAAZiZ,EAAM3Z,OAAU,GAAoBE,OAAjByZ,EAAM3Z,MAAM,OAAwB,OAAnBE,EAAKmW,MAAM9W,SAC3EL,SAAS,EACT0mB,IAAAA,I,yCAGSplB,EAAAA,EAAAA,cACTulB,EAAAA,EAAAA,GAAS,CACLC,YAAa7J,K,QAFrBjc,EAAO,EAAH,MAMJU,EAAAA,GAAAA,IAAwB,CACpBC,OAAQX,EAAKQ,UAAYI,GAAAA,GAAAA,aAAuBA,GAAAA,GAAAA,aAChDG,UAAW,KACXF,OAAQb,EAAKQ,UAAY,GAAe,OAAZiZ,EAAM3Z,OAAU,GAAoBE,OAAjByZ,EAAM3Z,MAAM,OAAwB,OAAnBE,EAAKmW,MAAM9W,SAC3EL,SAAS,EACT0mB,IAAAA,I,YAIJ1lB,EAAKQ,UAAW,C,yCACT,CAAE4Y,SAAS,EAAO/Z,QAAS,+H,iCAE3B,CAAE+Z,SAAS,EAAM/Z,QAASW,EAAKmW,MAAM9W,U,+FAvCd,GA0CnC,CAAC+M,EAAYqZ,EAAW/iB,EAAQ2M,IAE7ByK,GAAiB1I,EAAAA,EAAAA,cAAY,SAACqI,IAChC/Y,EAAAA,GAAAA,IAAwB,CACpBC,OAAQ8Y,EAAMY,OAASC,GAAQG,cAAgB7Z,GAAAA,GAAAA,QAAkBA,GAAAA,GAAAA,eACjEG,UAAW,KACXF,OAAQ,GAAe,OAAZ4Y,EAAM3Z,OACjBd,SAAS,EACT0mB,IAAKrW,EAAuB,OAAdyV,QAAc,IAAdA,OAAAA,EAAAA,EAAgBW,UAAY,SAE/C,CAACX,EAAgBzV,IAGdyP,ECrGoB,Y,IAAGiH,EAAW,EAAXA,YAAaC,EAAM,EAANA,OAAQC,EAAM,EAANA,OAAQC,EAAe,EAAfA,gBAAiBC,EAAU,EAAVA,WAAYzjB,EAAM,EAANA,OACjFoc,GAAgB1V,EAAAA,EAAAA,UAAQ,WAE1B,IAAM4V,EAAW,GA4CjB,OA1CI+G,IAAgBE,GAAUD,IAC1BhH,EAAStU,KAAK,CACVxF,KAAM,kEACNiS,KAAM,aAGV4O,GACA/G,EAAStU,KAAK,CACVxF,KAAM,uHACNiS,KAAM,cAGV8O,GAAqB,QAAXvjB,GACVsc,EAAStU,KAAK,CACVxF,KAAM,+FACNiS,KAAM,uBAGV6O,GACAhH,EAAStU,KAAK,CACVxF,KAAM,gEACNiS,KAAM,eAGV8O,GAAqB,QAAXvjB,GACVsc,EAAStU,KAAK,CACVxF,KAAM,sEACNiS,KAAM,kBAGV+O,GACAlH,EAAStU,KAAK,CACVxF,KAAM,6FACNiS,KAAM,kBAGVgP,GACAnH,EAAStU,KAAK,CACVxF,KAAM,6CACNiS,KAAM,aAGP6H,IACR,CAAC+G,EAAaE,EAAQD,EAAQtjB,EAAQwjB,EAAiBC,IAEpDC,GAAoBhd,EAAAA,EAAAA,UAAQ,WAC9B,MAAO,CACH,CACIlE,KAAM,0DACNiS,KAAM,UAEV,CACIjS,KAAM,mFACNiS,KAAM,6BAEV,CACIjS,KAAM,6CACNiS,KAAM,SAEV,CACIjS,KAAM,mDACNiS,KAAM,uBAGf,CAACzU,IAEE2jB,GAAajd,EAAAA,EAAAA,UAAQ,WACvB,MAAO,CACH,CACIlE,KAAM,uEACNiS,KAAM,WAAkB,OAAPzU,EAAO,gBAE5B,CACIwC,KAAM,mEACNiS,KAAM,cAEV,CACIjS,KAAM,kFACNiS,KAAM,GAAoB,OAAjB9R,GAAAA,KAEb,CACIH,KAAM,4JACNiS,KAAM,WAAkB,OAAPzU,EAAO,qFAE5B,CACIwC,KAAM,2JACNiS,KAAM,oBAEV,CACIjS,KAAM,wFACNiS,KAAM,eAGf,CAACzU,IAGJ,OAAO0G,EAAAA,EAAAA,UAAQ,W,MAAO,CAClB4V,SAAUF,EACVG,KAAM,CACF,CACIrc,MAAO,kCACPsc,SAAUkH,EACVjH,IAAK,eAET,CACIvc,MAAO,uCACPsc,SAAUmH,EACVlH,IAAK,mBAGb,CAACiH,EAAmBC,EAAYvH,IDddwH,CAAe,CACjCP,YAAaV,EACbW,OAAQV,EACRW,OAAQV,EACRW,gBAAiBV,EACjBW,WAAYf,EACZ1iB,OAAAA,IAQE4W,GAAkBlI,EAAAA,EAAAA,cAAY,W,OAAM5E,GAAS+Z,EAAAA,GAAAA,SAAa,CAAC/Z,IAC3D3M,EAAQ2C,EAAKgkB,aAEnB,OAAO,sB,UACF7B,IAAmB,SAAC8B,GAAW,CAAC9D,SAAUiC,KAC3C,SAAC8B,GAAe,CACZxhB,KAAMA,EACNrF,MAAOA,EACPqd,SAAUA,EACV5D,gBAAkBA,EAClBuF,oBAfoB,SAAC8H,EAAkBxiB,GAC3CA,EAAEC,iBACFkK,OAAOC,SAASnJ,MAAOwhB,EAAAA,GAAAA,IAAc7B,EAAaC,EAAcS,EAAWjjB,EAAMmkB,IAc7E7H,cAAeA,EACfhE,kBAAmBA,EACnBhB,eAAgBA,EAChBmD,aAAcA,EACd9E,MAAOuM,U,qGEpInB,IAJwC,SAAC/hB,G,IACKA,EAA1C,OAAO,SAACkkB,KAAY,kBAAKlkB,GAAK,CAAEyR,SAAwB,QAAdzR,EAAAA,EAAMyR,gBAAQ,IAAdzR,GAAAA,O,sjBCJvC,IAWeT,EAIIA,EAfb4kB,EAAOxlB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAOPylB,EAAUzlB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAINY,SAAAA,G,OAAe,QAAVA,EAAAA,EAAE8kB,gBAAQ,IAAV9kB,EAAAA,EAAc,UAGX+kB,EAAAA,GAAAA,SACJ/kB,SAAAA,G,OAAe,QAAVA,EAAAA,EAAE8kB,gBAAQ,IAAV9kB,EAAAA,EAAc,WCClCglB,GAAWC,EAAAA,EAAAA,aAAsC,WAEnDlD,G,IADEmD,EAAQ,EAARA,SAAUhiB,EAAI,EAAJA,KAAM4hB,EAAQ,EAARA,SAAUviB,EAAS,EAATA,UAGJrF,GAAAA,EAAAA,EAAAA,UAASgoB,EAASC,UAAnCC,EAAiBloB,EAA2B,GAAtCmoB,EAAWnoB,EAA2B,GAC7CkT,GAAWkV,EAAAA,EAAAA,GAAc,eAAsC,OAAvB5lB,EAAAA,GAAAA,OAAuB,MAQrE,OANA+B,EAAAA,EAAAA,YAAU,WAEA4jB,EADNjV,EACc8U,EAASK,aAAeC,IACxBN,EAASC,UAAYM,OACpC,CAACP,EAAU9U,KAGV,SAACwU,EAAI,CAAC1hB,KAAMA,EAAMP,YAAU,YAAYof,IAAKA,EAAKxf,UAAWA,E,UACzD,SAACsiB,EAAO,CACJliB,YAAU,gBACV2Y,IAAK8J,EACL7J,IAAK,6EACLuJ,SAAUA,SAK1BE,EAAS7P,YAAc,oBACvB,S,mFCnBA,IAfiB,Y,QAAGlG,SAAAA,OAAQ,IAAG,uBAAK,EAAEyW,EAAW,EAAXA,YAC5Bpb,GAAWuD,EAAAA,EAAAA,MASjB,OACI,SAACoE,EAAAA,EAAI,CAAC7O,QARM,WACZkH,GAAS+Z,EAAAA,EAAAA,OACkB,oBAAhBqB,GACPA,K,SAKqBzW,M,qSCjB1B,IAAMgD,EAAO7S,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAIdK,EAAAA,EAAAA,SAEmBC,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,U,yZCPH,IAAMkmB,EAAsB,GAEtBC,EAAYxmB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAMPC,EAAAA,EAAAA,OAEOK,EAAAA,GAAAA,QACNM,SAAAA,G,OAAKA,EAAE6lB,OAAS,OAAS,UAC1B7lB,SAAAA,G,OAAKA,EAAE8lB,QAAU,GAAuB,OAApBH,EAAoB,MAAM,Q,ubCbzD,IAAMI,GAAY3mB,E,QAAAA,SAAOyX,EAAAA,GAAa,Y,6BAApBzX,C,IAGJG,EAAAA,EAAAA,kBCArB,EAyBG,a,sCAzBGqQ,I,gEAEFoW,IAAAA,S,MAAAA,WACI,IAAqG,EAAAC,KAAKxlB,MAAlGC,EAA6F,EAA7FA,MAAOE,EAAsF,EAAtFA,cAAeE,EAAuE,EAAvEA,gBAAiBC,EAAsD,EAAtDA,iBAAkBC,EAAoC,EAApCA,cAAeklB,EAAqB,EAArBA,iBAEhF,OACI,SAACC,EAAAA,EAAK,C,UACF,SAACJ,EAAS,CAACtiB,OAAQwiB,KAAKxlB,MAAM2lB,KAAMlW,QAAS+V,KAAKxlB,MAAM4lB,M,UACpD,SAACC,EAAAA,EAAQ,CACLzlB,UAA4C,aAAsC,OAAzBuL,OAAOC,SAASE,UACzE7L,MAAOA,EACPE,cAAeA,EACfE,gBAAiBA,EACjBhE,SAAS,EACTiE,iBAAkBA,EAClBC,cAAeA,EACfrC,OAAQunB,Y,EAS7B,CAzBuBK,EAAAA,WAyB1B,K,kFCCA,IApB+C,Y,IAAG9iB,EAAM,EAANA,OAAQX,EAAI,EAAJA,KAAMpC,EAAK,EAALA,MAAOsC,EAAI,EAAJA,KAAMkN,EAAO,EAAPA,QAEzE,OACI,SAACgQ,EAAAA,EAAW,CACRzc,OAAQA,EACRX,KAAMA,EACNpC,MAAOA,EACPsC,KAAMA,EACNkN,QAASA,E,UAET,SAACnQ,EAAAA,EAAM,CACHqD,QAAS8M,EACTpH,MAAM,S,SACT,mD,+8DCpBN,IAAM0d,EAAgBpnB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAUhBD,EAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIjBqnB,GAAuBnjB,EAAAA,EAAAA,WAAS,IAMVjE,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,WAIfqnB,GAActnB,EAAAA,EAAAA,SAAOonB,GAAc,Y,6BAArBpnB,C,IASrBK,EAAAA,EAAAA,GAGeF,EAAAA,EAAAA,iBACGF,EAAAA,EAAAA,QACyCW,SAAAA,G,OAAKA,EAAE2mB,WAAa,OAAS,QAKxEF,GAGhBG,GAAStjB,EAAAA,EAAAA,WAAS,KASXujB,GAAcznB,EAAAA,EAAAA,SAAOonB,GAAc,Y,6BAArBpnB,C,IAULwnB,GAGTE,EAAU1nB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACXC,EAAAA,EAAAA,QCzEC0nB,EAAiB,Y,IAAMC,GAAI,aAC9BL,GAAaM,EAAAA,EAAAA,KAEnB,OACI,UAAChjB,GAAU,kBAAK+iB,GAAI,C,WAChB,SAACE,IAAI,C,UACD,SAACjS,OAAI,CAACkS,IAAI,UAAUC,GAAG,QAAQlkB,KAAK,2CAA2CJ,KAAK,kBAExF,SAACmB,EAAc,CAAC0iB,WAAYA,E,UACxB,UAAC1iB,EAAc,C,WACX,SAACA,EAAU,CAAC6M,MAAM,KAAKC,OAAO,KAAKsW,aAAW,O,UAC1C,SAACC,MAAG,CAACpkB,KAAK,sDAEb,uS,0FCbd,IAAMsd,EAAc,CACvB+G,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRhW,OAAQ,QACRiW,QAAS,SASAC,EAAoB,CAC7BJ,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRhW,OAAQ,U,oHCxBL,IAAMtO,EAAmB,kBACnBykB,EAAoB,mBACpBC,EAAoB,oB,2ICF1B,IAAMzH,EAAqB,OAErB0H,EAAoB,SACpBC,EAAQ,OACRC,EAAQ,Q,wGCGRC,GAAmCC,EAAAA,EAAAA,eAA2B,CAAEC,eAAe,IAE/EC,EAAgB,WACzB,OAAOC,EAAAA,EAAAA,YAAWJ,K,wpBCNf,IAAMK,EAAoB,GAEpBC,EAAUnpB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAIKY,SAAAA,G,OAAKA,EAAEwoB,SAItBC,EAAuBrpB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAEtBkpB,EACUjpB,EAAAA,EAAAA,S,sKCXXqpB,EAAY,SAACxe,G,MAAkC,CACxDC,IAAK,iBACLC,OAAQ,MACRC,QAAS,CAAE,WAAc,GAAc,OAAXH,M,sBCG1Bye,EAAuC,CACzC,WACA,WACA,OACA,WAaSC,EAAS,WAClB,IAAoC1rB,GAAAA,EAAAA,EAAAA,UAA0B,CAC1D2rB,KAAM,GACNxrB,OAAQ,gBAFLyrB,EAA6B5rB,EAGlC,GAHiB6rB,EAAiB7rB,EAGlC,GAEuDF,GAAAA,EAAAA,EAAAA,KAAY,SAACO,G,MAAmB,CACrFyrB,eAAgBzrB,EAAM+C,KAAKC,YAAYyoB,eACvCC,kBAAkBC,EAAAA,EAAAA,GAAuB3rB,GACzC2M,YAAYM,EAAAA,EAAAA,GAAiBjN,OAHzByrB,EAAiDhsB,EAAjDgsB,eAAgBC,EAAiCjsB,EAAjCisB,iBAAkB/e,EAAelN,EAAfkN,YAM1CzI,EAAAA,EAAAA,YAAU,YACL,8B,IAGa3D,E,qEAFNkrB,GAAmBF,EAAWD,KAAK1kB,QAAgC,gBAAtB2kB,EAAWzrB,OAAwB,C,sBAChF0rB,GAAc,SAACI,G,OAAwB,kBAAKA,GAAkB,CAAE9rB,OAAQ,iB,SACrDe,EAAAA,EAAAA,WAA8CsqB,EAAUxe,I,OAArEpM,EAAO,EAAH,KACVirB,EAAc,CAAEF,KAAM/qB,EAAKQ,UAAYR,EAAKS,QAAQkf,MAAQ,GAAIpgB,OAAQ,W,0CAJ/E,KAOF,CAAC2rB,EAAgBF,EAAY5e,IAEhC,IAAM,IAAakf,EAAAA,EAAAA,cAAe,CAAEC,OAAQ,KAApCA,OAEFC,GAAYpiB,EAAAA,EAAAA,UACd,W,IACI4hB,EAAAA,OAAe,QAAfA,EAAAA,EAAWD,YAAI,IAAfC,OAAAA,EAAAA,EAAiBS,MAAK,SAACC,GACnB,QAAIA,EAAgB,YACTP,EAAmBO,EAAmB,aAAIA,EAAoB,oBAIjF,CAACP,EAAkBH,EAAWD,OAQlC,MAAO,CACHS,UAAAA,EACAG,kBAPmBviB,EAAAA,EAAAA,UAAQ,WAC3B,IAAMwiB,EAAQL,EAAOxc,MAAM,aAC3B,OAAO8b,EAA2BgB,MAAK1U,SAAAA,G,OAAQyU,EAAMC,MAAKC,SAAAA,G,OAASA,IAAU3U,UAC9E,CAACoU,OAIuCL,IACX,WAAtBF,EAAWzrB,UAAyBisB,GAAmC,WAAtBR,EAAWzrB,W,00MC/DnE,IAAMwsB,EAAqB,GAG5BC,GAA+BpU,EAAAA,EAAAA,KAAG,IAEhBrW,EAAAA,EAAAA,OAaK0lB,EAAAA,EAAAA,SAMhBgF,EAAoB3qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAC3B0qB,EAxB6B,IA+BtBE,EAAmB5qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAC1B0qB,GAEQ9pB,SAAAA,G,OAAKA,EAAEmoB,cAAgB,GAAsB,OAAnB0B,EAAmB,MAAM,OAIpDI,EAAa7qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAaSC,EAAAA,EAAAA,eAItB6qB,GAAgB9qB,EAAAA,EAAAA,SAAO+qB,EAAAA,GAAc,Y,6BAArB/qB,C,IAGJM,EAAAA,GAAAA,OASGL,EAAAA,EAAAA,QAIFW,SAAAA,G,OAAKA,EAAEoqB,WAAa,sCAAwC,UAKzEC,EAAuBjrB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOvBkrB,EAA0BlrB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAEjCK,EAAAA,EAAAA,IASO8qB,EAAenrB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACtBK,EAAAA,EAAAA,QACOJ,EAAAA,EAAAA,aAGAmrB,EAAmBprB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAInBqrB,EAAgBrrB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACvBK,EAAAA,EAAAA,UACkBJ,EAAAA,EAAAA,OAEXA,EAAAA,EAAAA,UAQAqrB,EAActrB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAKIC,EAAAA,EAAAA,YAIN0lB,EAAAA,EAAAA,SAOZ4F,EAAgBvrB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAMJ2lB,EAAAA,EAAAA,QACU1lB,EAAAA,EAAAA,aAKtBurB,EAAaxrB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAIFC,EAAAA,EAAAA,iBACAW,SAAAA,G,OAAKA,EAAE6qB,aAAexrB,EAAAA,EAAAA,OAAgBA,EAAAA,EAAAA,mBAiBjDyrB,GATO1rB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAIK2lB,EAAAA,EAAAA,SAKE3lB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IACrBK,EAAAA,EAAAA,OACOJ,EAAAA,EAAAA,YAIA0rB,EAAe3rB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAMf4rB,EAAQ5rB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAQfK,EAAAA,EAAAA,GAEmBslB,EAAAA,EAAAA,SAKZpf,GAAcC,EAAAA,EAAAA,mBAAiB,KACtC5F,SAAAA,G,OAAKA,EAAEirB,gBAAiBvV,EAAAA,EAAAA,KAAG,QASpBwV,EAAa9rB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAYb+rB,IAAoB/rB,EAAAA,EAAAA,SAAO+qB,EAAAA,GAAc,Y,8BAArB/qB,C,IAUfC,EAAAA,EAAAA,OACMA,EAAAA,EAAAA,QAGX+rB,GAAWhsB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IACAC,EAAAA,EAAAA,WAsBXgsB,IANYjsB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAGnBK,EAAAA,EAAAA,KAGuBL,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAGJ2lB,EAAAA,EAAAA,UAMZ3U,GAAWhR,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAIC2lB,EAAAA,EAAAA,U,kECtQlB,IAAMA,EAAc,CACvBwC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRhW,OAAQ,QACR6Z,QAAS,QACT5D,QAAS,U,oOCeb,G,SA/B+B,CAC3B6D,MAAO,UACPC,cAAe,CACX7M,QAAS,UACT8M,QAAS,UACTxX,MAAO,UACP8I,KAAM,WAEV9G,MAAO,CACHyV,OAAQ,UACRC,OAAQ,WAEZ3oB,KAAM,CACF4oB,KAAM,UACNC,QAAS,UACTC,KAAM,UACN7oB,SAAU,UACV8oB,SAAU,WAEdC,OAAQ,CACJN,OAAQ,UACRG,QAAS,UACTI,UAAW,UACXhpB,SAAU,UACVipB,KAAM,UACNC,MAAO,UACP5P,WAAY,WAEhB6P,QAAS,c,WCpBb,GAL2B,kBACpBC,EAAAA,GAAS,CACZC,OAAQH,I,6vJCGL,IAAMxmB,GAAcC,EAAAA,EAAAA,mBAAiB,IACtC2mB,EAAAA,GACAC,EAAAA,IAgCc/rB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YAMVhsB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YAMVhsB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YAMVhsB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YAOXhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YASfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YASfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,WAiBjBptB,EAAAA,EAAAA,M,kgDC/GV,IAmCP,GAnCgCuG,EAAAA,EAAAA,mBAAiB,KAI7BnF,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YAOVhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YAOVhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACpBhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,YACfhsB,SAAAA,G,OAASA,EAAMgsB,Y,kECxBxBC,EAAYC,KAAQ,W,OAAM,kCAAgD,C,sDAAEC,KAAK,IAmEvF,EA5DwB,Y,IAAGC,EAAO,EAAPA,QAAStqB,EAAS,EAATA,UACxBhC,GAAsBvD,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM+C,QAA3DC,YACAkD,GAAuBzG,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAMuvB,QAA5DrpB,OAEF6G,GAAWuD,EAAAA,EAAAA,MAGXkf,KADiBC,EAAAA,EAAAA,OACkBC,EAAAA,EAAAA,MAEnC,GAAY7D,EAAAA,EAAAA,aAAVhI,OAER3f,EAAAA,EAAAA,YAAU,WACN2K,OAAO8gB,iBAAiB,QAAQ,WACE,kBAAnB9L,EAAM+L,UACb7iB,GAAS+Z,EAAAA,EAAAA,YAGlB,CAACjD,EAAO9W,KAEX7I,EAAAA,EAAAA,YAAU,WACF2rB,EAAAA,KACAC,SAAS7sB,OAAS,cAEvB,CAACF,IAgBJ,OAAIysB,EACO,MAIP,SAAC5G,EAAAA,EAAK,C,UACF,SAACuG,EAAS,CACNjpB,OAAQ6pB,EACRlH,KAtBY,YACpB5V,EAAAA,EAAAA,IAAc,CAAErB,MAAO,cAAesB,SAAU,OAAQhS,OAAQ,yBAChE6L,GAAS+Z,EAAAA,EAAAA,QAqBDgC,MAda,WACrB/b,GAASijB,EAAAA,EAAAA,KAAW,IACpBjjB,GAASkjB,EAAAA,EAAAA,QAaDC,OAnBO,WACfnjB,GAASijB,EAAAA,EAAAA,KAAW,KAmBZG,SAAUC,EAAAA,GACVhrB,YAAU,OACVirB,UAAW,YACXrrB,UAAWA,EACXsrB,cAAehB,O,2qBCpExB,ICiCA,EDjCMiB,EAAY1uB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACnBK,EAAAA,EAAAA,UACOJ,EAAAA,EAAAA,SAIIA,EAAAA,EAAAA,YAIQK,EAAAA,GAAAA,OAERL,EAAAA,EAAAA,YAIWA,EAAAA,EAAAA,OAMH0lB,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,SEZzB,EAhBkB,WACd,IAA2C/nB,GAAAA,EAAAA,EAAAA,IAAY+wB,EAAAA,IAA/C7qB,EAAmClG,EAAnCkG,KAAM8qB,EAA6BhxB,EAA7BgxB,aAAcC,EAAejxB,EAAfixB,WAE5B,OAAKA,GAAeD,GAIb,SAAC/pB,EAAY,CAChBf,KAAMA,EACNX,UAAU,qBACVI,YAAU,Q,SAETsrB,IARM,M,wID8BHC,GAAAA,EACF,OAAG,SADDA,EAES,kBAAG,oBAFZA,EAGU,mBAAG,qBAHbA,EAIgB,yBAAG,2B,CAJnBA,IAAAA,EAAQ,KEpCb,IAAMC,EAAe/uB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACtBK,EAAAA,EAAAA,IACO,Y,OAAU,EAAP2uB,QAAwB/uB,EAAAA,EAAAA,SAAkBA,EAAAA,EAAAA,YCa1D,EAZoB,Y,IAAGgvB,EAAW,EAAXA,YAAa,EAAF,EAAED,QAAAA,OAAO,IAAG,GAAK,EAAE7rB,EAAS,EAATA,UACjD,OACI,SAAC4rB,EAAY,CACTC,QAASA,EACT7rB,UAAWA,EACXI,YAAU,e,SAET0rB,K,4rBCVN,IAAMC,GAAUlvB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAIjBK,EAAAA,EAAAA,QACOJ,EAAAA,EAAAA,aAWeA,EAAAA,EAAAA,aAQXA,EAAAA,EAAAA,MAGeA,EAAAA,EAAAA,OCVhC,GAZe,Y,QAAGkvB,QAAAA,OAAO,IAAG,2DAAW,EAAEC,EAAO,EAAPA,QAASjsB,EAAS,EAATA,UAC9C,OACI,SAAC0P,EAAAA,EAAI,CACD/O,KAAMsrB,EACNtc,UAAU,EACVC,UAAQ,E,UAER,SAACmc,GAAO,CAAC/rB,UAAWA,EAAWI,YAAU,c,SAAe4rB,O,6HCZ7D,IAAME,GAASrvB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAChB,Y,OAAU,EAAPgvB,QAAwB3uB,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,UAC/BJ,EAAAA,EAAAA,aCoBb,GAfc,Y,IAAGqB,EAAK,EAALA,MAAOwC,EAAI,EAAJA,KAAM,EAAF,EAAEkrB,QAAAA,OAAO,IAAG,GAAK,EAAEM,EAAc,EAAdA,eAAgBnsB,EAAS,EAATA,UAC3D,OACI,qB,SACK,GAASmsB,GACJ,SAACzc,EAAAA,EAAI,CAAC/O,KAAMA,EAAMgP,UAAU,EAAOC,UAAQ,E,UACzC,SAACgO,IAAC,CAAC5d,UAAWA,EAAWa,QAAS,W,OAAMsrB,EAAe,OAAQhuB,I,UAC3D,SAAC+tB,GAAM,CAACL,QAASA,E,SAAU1tB,SAGjC,SAAC+tB,GAAM,CAACL,QAASA,EAAS7rB,UAAWA,E,SAAY7B,O,6UChB5D,IAAMiuB,GAAcvvB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAGLY,SAAAA,G,OAAKA,EAAE4uB,UAAY,OAAS,UAGrCC,IAAYzvB,EAAAA,EAAAA,SAAOI,IAAM,Y,6BAAbJ,C,MAIZ0vB,IAAU1vB,EAAAA,EAAAA,SAAOW,IAAO,Y,6BAAdX,C,MCoBvB,GArB0B,Y,IAAGqV,EAAI,EAAJA,KAAMia,EAAc,EAAdA,eACzB,GAAatF,EAAAA,EAAAA,aAAXC,OACA3oB,EAAyD+T,EAAzD/T,MAAOuU,EAAkDR,EAAlDQ,KAAM,EAA4CR,EAA5Csa,SAAAA,OAAQ,IAAG,KAAE,EAAEC,EAA6Bva,EAA7Bua,YAAaC,EAAgBxa,EAAhBwa,YAEjD,OACI,UAAChrB,GAAc,CAAC2qB,UAAWvF,IAAWpU,EAAM7R,QAAS,W,OAAMsrB,EAAe,OAAQhuB,I,WAC9E,SAACuR,EAAAA,EAAI,CACD/O,KAAM+R,EACN/C,UAAU,EACVC,UAAQ,E,UAER,UAACgO,IAAC,C,WACE,SAAClc,GAAY,CAACvD,MAAOA,KACrB,SAACwuB,EAAW,CAACb,YAAaU,SAGjCE,IAAe,SAAChrB,GAAU,CAACsqB,QAASS,EAAaR,QAASS,EAAatsB,YAAU,oB,q6ECTvF,ICVA,GDUMwsB,GAAe/vB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAYfgwB,GAAmBhwB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIXG,GAAAA,EAAAA,iBACGF,EAAAA,EAAAA,WAIFW,SAAAA,G,OAAKA,EAAE4uB,UAAY,OAAS,UAE5C,Y,OAAc,EAAXS,aACC3Z,EAAAA,EAAAA,KAAG,OAGHA,EAAAA,EAAAA,KAAG,QAOerW,EAAAA,EAAAA,QAElBivB,GACWjvB,EAAAA,EAAAA,MAGeA,EAAAA,EAAAA,MAI1B8vB,IAOGG,GAAalwB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAEZ,Y,OAAc,EAAXiwB,YAAgC,OAAS,UACrC9vB,GAAAA,EAAAA,kBAKRgwB,GAAYnwB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAOZowB,GAAepwB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIb,Y,OAAc,EAAXiwB,YAAgC,sBAAwB,wBAEjD3vB,EAAAA,GAAAA,UAKZ+vB,GAAqBrwB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,MAMrBswB,GAActwB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAMduwB,IAASvwB,EAAAA,EAAAA,SAAO0P,GAAAA,GAAM,Y,6BAAb1P,C,MAMTyvB,IAAYzvB,EAAAA,EAAAA,SAAOI,IAAM,Y,6BAAbJ,C,MAKZwwB,IAAkBxwB,EAAAA,EAAAA,SAAO8vB,GAAY,Y,6BAAnB9vB,C,MAKlB0vB,IAAU1vB,EAAAA,EAAAA,SAAOW,IAAO,Y,8BAAdX,C,gBCnHXywB,GAAAA,EACA,SAAG,OADHA,EAEC,UAAG,Q,CAFJA,KAAAA,GAAS,KAWrB,IAmEA,GAnE+B,Y,IAAGpb,EAAI,EAAJA,KAAM,EAAF,EAAEqb,YAAAA,OAAW,IAAG,GAAK,EAAEpB,EAAc,EAAdA,eACnD,GAAatF,EAAAA,EAAAA,aAAXC,OACA3oB,EAAiH+T,EAAjH/T,MAAOquB,EAA0Gta,EAA1Gsa,SAAUvG,EAAgG/T,EAAhG+T,MAAOuH,EAAyFtb,EAAzFsb,WAAYC,EAA6Evb,EAA7Eub,eAAgB/a,EAA6DR,EAA7DQ,KAAM+Z,EAAuDva,EAAvDua,YAAaC,EAA0Cxa,EAA1Cwa,YAAa,EAA6Bxa,EAA7Bwb,OAAAA,OAAM,IAAG,KAAE,EAAEC,EAAgBzb,EAAhByb,YAEzG,OACI,UAACjsB,GAAmB,CAChBorB,YAAaS,EACblB,UAAWvF,IAAWpU,EACtB7R,QAAS,W,OAAMsrB,EAAemB,GAAUM,SAAUzvB,I,WAElD,SAACuD,GAAa,CAACorB,YAAaS,EAAantB,YAAU,c,UAC/C,SAACsP,EAAAA,EAAI,CAAC/O,KAAM+R,EAAM/C,UAAU,EAAOC,UAAQ,E,UACvC,UAACgO,IAAC,C,UACG+P,IACG,SAACE,GAAAA,GAAkB,CACf3tB,QAAS,CACL4tB,QAAS,GACTC,OAAQ,I,UAGZ,SAAC7gB,GAAAA,EAA2B,CACxBrM,QAAS,SAACnB,G,OAAMA,EAAEC,kBAClB+Q,YAAaid,EAAYjd,YACzBsd,KAAML,EAAYK,KAClBC,QAAS,CACLC,OAAQ,IACRC,mBAAmB,QAKnC,SAACC,GAAAA,EAAS,CAACC,QAASb,E,UAChB,SAAC9rB,GAAY,CAACqX,IAAKkN,EAAOjN,IAAK7a,OAEnC,SAACuD,GAAe,CACZqX,IAAK0U,YAKrB,UAAC/rB,GAAe,CAACorB,YAAaS,E,WAC1B,SAAC7d,EAAAA,EAAI,CAAC/O,KAAM+R,EAAM/C,UAAU,EAAOC,UAAQ,E,UACvC,UAAClO,GAAqB,C,UACjBgsB,EAAO9rB,QACF,SAACF,GAAc,C,SACZgsB,EAAO7rB,KAAIxG,SAAAA,G,OACR,SAACqG,GAAS,CAENhE,UAAWrC,EAAMizB,WACjBC,QAASlzB,EAAMmzB,M,SAEdnzB,EAAM8C,OAJF9C,EAAMiH,UAQrB,yBAEN,SAACZ,GAAY,CAACvD,MAAOA,EAAO0tB,SAAO,IAClCW,IAAY,SAAC9qB,GAAkB,CAACoqB,YAAaU,EAAUX,SAAO,SAGtEa,IAAe,SAAChrB,GAAU,CAACsqB,QAASS,EAAaR,QAASS,EAAatsB,YAAU,uB,ywBC3E3F,IAAMgsB,GAAcvvB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKNG,GAAAA,EAAAA,YACGF,EAAAA,EAAAA,QAEFW,SAAAA,G,OAAKA,EAAE4uB,UAAY,OAAS,SAGtBvvB,EAAAA,EAAAA,WAIf2xB,GAAW5xB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAGlB,Y,OAAY,EAATkQ,YAA6BoG,EAAAA,EAAAA,KAAG,SAK5Bia,IAASvwB,EAAAA,EAAAA,SAAO0P,GAAAA,GAAM,Y,6BAAb1P,C,MAKT+uB,IAAe/uB,EAAAA,EAAAA,SAAO8vB,GAAY,Y,6BAAnB9vB,C,MCgB5B,GAtCyB,Y,IAAGqV,EAAI,EAAJA,KAAMia,EAAc,EAAdA,eACxB,GAAatF,EAAAA,EAAAA,aAAXC,OACA3oB,EAA4C+T,EAA5C/T,MAAO,EAAqC+T,EAArCsa,SAAAA,OAAQ,IAAG,KAAE,EAAE9Z,EAAsBR,EAAtBQ,KAAM,EAAgBR,EAAhBwb,OAAAA,OAAM,IAAG,KAAE,EAE/C,OACI,SAAChsB,GAAc,CAAC2qB,UAAWvF,IAAWpU,E,UAClC,SAAChD,EAAAA,EAAI,CACD/O,KAAM+R,EACN/C,UAAU,EACVC,UAAQ,E,UAER,UAACgO,IAAC,CACE/c,QAAS,W,OAAMsrB,EAAe,OAAQhuB,IACtCiC,YAAU,e,WAEV,UAACsB,GAAW,CAACqL,YAAa2gB,EAAO9rB,O,WAC7B,SAAC3E,GAAK,CAACkB,MAAOA,IACbuvB,EAAO9rB,OACF8rB,EAAO7rB,KAAI,SAACxG,EAAOqf,G,OACjB,SAAChZ,GAAS,CAENhE,UAAWrC,EAAMizB,WACjBC,QAASlzB,EAAMmzB,MACfpuB,YAAU,gB,SAET/E,EAAM8C,OALF,GAAkB9C,OAAfA,EAAM8C,MAAM,KAAeuc,OAAZrf,EAAMiH,GAAG,KAAO,OAAJoY,QAQzC,4BAGV,SAAChZ,GAAe,CAACoqB,YAAaU,Y,ufCxC3C,IAAMkC,GAAc7xB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEdC,EAAAA,EAAAA,UAIPI,EAAAA,EAAAA,UAMgBJ,EAAAA,EAAAA,UAKLA,EAAAA,EAAAA,YAISA,EAAAA,EAAAA,aCZbgP,GAAa,Y,IAAG9L,EAAS,EAATA,UACnB+H,GAAWuD,EAAAA,EAAAA,MACXvN,GAAOtD,EAAAA,EAAAA,IAAYk0B,EAAAA,IAGzB,OAAO,UAACjtB,GAAc,CAClBktB,KAAK,SACL/tB,QAJ0B,W,OAAMkH,GAAS8mB,EAAAA,GAAAA,QAKzCzuB,YAAU,kBACVJ,UAAWA,E,WAEX,SAAC8uB,GAAAA,EAAQ,CAAC9rB,KAAM,MAChB,SAACiK,OAAI,C,SAAElP,EAAOA,EAAK5C,KAAO,W,6uGCd3B,IAGMyB,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAICC,EAAAA,EAAAA,OAICK,EAAAA,GAAAA,QAMZoG,IAAY1G,EAAAA,EAAAA,SAAO4G,EAAAA,IAAc,Y,6BAArB5G,C,MAKnB0qB,IAA+BpU,EAAAA,EAAAA,KAAG,KAEhBrW,EAAAA,EAAAA,QAUX0qB,GAAoB3qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAC3B0qB,GAlC6B,IAuCtBE,GAAmB5qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAC1B0qB,IAEQ9pB,SAAAA,G,OAAKA,EAAEmoB,cAAgB,GAAsB,OA3CzB,GA2CyB,MAAM,OAIpD8B,GAAa7qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAMbkyB,IAAqBlyB,EAAAA,EAAAA,SAAOiP,IAAW,Y,6BAAlBjP,C,MAMrBmyB,GAAgBnyB,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,MAchBoyB,GAAepyB,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,MAOfqyB,GAAcryB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIIC,EAAAA,EAAAA,eAGlBqyB,GAAYtyB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIAM,EAAAA,GAAAA,UAKZiyB,IAAYvyB,EAAAA,EAAAA,SAAO4lB,GAAAA,GAAS,Y,8BAAhB5lB,C,MASZwyB,GAA0BxyB,EAAAA,QAAAA,GAAAA,WAAS,C,8BAATA,C,MAS1ByyB,GAAqBzyB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAgBTM,EAAAA,GAAAA,UAKZyvB,GAAe/vB,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KACfC,EAAAA,EAAAA,UACPI,EAAAA,EAAAA,UACkBJ,EAAAA,EAAAA,WAEHE,GAAAA,EAAAA,aAEGS,SAAAA,G,OAAKA,EAAE8xB,QAAU,GAAmB,OAAhB9xB,EAAE+xB,cAAc,OAAO,OACxD/xB,SAAAA,G,OAAKA,EAAE8xB,QAAU,GAAS,OAAN9xB,EAAEgyB,IAAI,MAAM,SAC/BhyB,SAAAA,G,MAAK,GAAU,OAAPA,EAAEiyB,KAAK,SACdjyB,SAAAA,G,MAAK,GAAW,OAARA,EAAEkyB,MAAM,SAIhBC,IAAc/yB,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,8BAAlBd,C,iiHCrJ3B,IAgCagzB,GAAgBhzB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAULC,EAAAA,EAAAA,OA1CY,gCA8CvBgzB,GAAkBjzB,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KAcHC,EAAAA,EAAAA,QAKd+yB,GDjEoB,IC+E5B,Y,OAAU,EAAPhE,SACC1Y,EAAAA,EAAAA,KAAG,KACQrW,EAAAA,EAAAA,OAEXqW,EAAAA,EAAAA,KAAG,KACQrW,EAAAA,EAAAA,YAGIA,EAAAA,EAAAA,QAKAK,EAAAA,GAAAA,UAMZ4yB,GAAWlzB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAClBK,EAAAA,EAAAA,SAImBC,EAAAA,GAAAA,SACfD,EAAAA,EAAAA,WAIG8yB,IAAqBnzB,EAAAA,EAAAA,SAAO4G,EAAAA,IAAc,Y,6BAArB5G,C,MAUrBozB,GAAcpzB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAQdqzB,GAAYrzB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEnBK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,aAOHI,EAAAA,EAAAA,IAKGizB,GAActzB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAErBY,SAAAA,G,OA7I6B,SAAC8C,GAChC,OAAQA,GACJ,KAAKorB,EAASyE,kBACV,OAAOjd,EAAAA,EAAAA,KAAG,KAOehW,EAAAA,GAAAA,UAI7B,KAAKwuB,EAAS0E,mBACV,OAAOld,EAAAA,EAAAA,KAAG,MAKd,KAAKwY,EAAS2E,OACd,QACI,OAAOnd,EAAAA,EAAAA,KAAG,OAuHXod,CAA2B9yB,EAAE8C,SAI3BiwB,IAAc3zB,EAAAA,EAAAA,SAAOI,IAAM,Y,6BAAbJ,C,MACLY,SAAAA,G,OAAKA,EAAE4uB,UAAY,OAAS,SAI7BvvB,EAAAA,EAAAA,cAKR2zB,GAAW5zB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAClBK,EAAAA,EAAAA,UAEgBO,SAAAA,G,OAAKA,EAAE4uB,UAAY,OAAS,SAEzBlvB,EAAAA,GAAAA,SACfD,EAAAA,EAAAA,WCrFJwzB,GAAe,Y,IAYRC,EAXTA,EAAY,EAAZA,aACAC,EAAO,EAAPA,QACAC,EAAkB,EAAlBA,mBAEM,GAAahK,EAAAA,EAAAA,aAAXC,OAER,OACI,SAACplB,GAAkB,CACf8d,IAAKoR,EACL/E,UAAW8E,EAAaG,S,UAEF,QAArBH,EAAAA,EAAajkB,gBAAQ,IAArBikB,OAAAA,EAAAA,EAAuB/uB,SAClB,sB,WACE,SAACF,GAAW,C,SAAEivB,EAAaxyB,SAC3B,SAACuD,GAAgB,C,UACb,SAACA,GAAqB,C,SACjBivB,EAAajkB,SAAS7K,KAAIkvB,SAAAA,G,OArFjC,SAClBC,EACA9e,EACA+e,GAEA,IAAMC,EAAsBhf,EAAK3R,OAASorB,EAASwF,0BAA4Bjf,EAAKxF,SAAS9K,OAAS,EAEtG,OAAQsQ,EAAK3R,MACT,KAAKorB,EAASwF,yBACV,OAAOjf,EAAKxF,SAAS7K,KAAIkvB,SAAAA,G,OACrB,SAACK,GAAsB,CAEnBlf,KAAM6e,EACNxD,YAAa2D,EACb/E,eAAgB8E,GAHXF,EAAMzuB,OAMvB,KAAKqpB,EAAS0E,mBACV,OACI,UAAC3uB,GAAc,C,WACX,SAACA,GAAY,C,SAAEwQ,EAAK/T,SACpB,SAACuD,GAAc,CAACnB,KAAM2R,EAAK3R,K,SACtB2R,EAAKxF,SAAS7K,KAAIkvB,SAAAA,G,OACf,SAACM,GAAiB,CAEdnf,KAAM6e,EACN5E,eAAgB8E,GAFXF,EAAMzuB,WALN4P,EAAK/T,OAalC,KAAKwtB,EAASyE,kBACV,OACI,UAAC1uB,GAAc,C,WACX,SAACA,GAAY,C,SAAEwQ,EAAK/T,SACpB,SAACuD,GAAc,CAACnB,KAAM2R,EAAK3R,K,SACtB2R,EAAKxF,SAAS7K,KAAI,SAACkvB,EAAOjvB,G,OACvB,SAACwvB,GAAgB,CAEbpf,KAAM6e,EACN5E,eAAgB8E,GAFX,qBAAiCnvB,OAAZivB,EAAMzuB,GAAG,KAAS,OAANR,WALjCoQ,EAAK/T,OAalC,KAAKwtB,EAAS2E,OACd,QACI,OACI,UAAC5uB,GAAc,C,WACX,SAACA,GAAY,C,SAAEwQ,EAAK/T,SACpB,SAACuD,GAAc,CAACnB,KAAM2R,EAAK3R,K,SACtB2R,EAAKxF,SAAS7K,KAAIkvB,SAAAA,G,OACf,SAACrvB,GAAc,CAEX2qB,UAAW0E,EAAMre,OAASse,EAC1B7yB,MAAO4yB,EAAM5yB,MACbwC,KAAMowB,EAAMre,KACZyZ,eAAgB8E,GAJXF,EAAMzuB,WALN4P,EAAK/T,QAoCVozB,CAAczK,EAAQiK,EAAOF,cAK3C,SAACnhB,EAAAA,EAAI,CACH/O,KAAMgwB,EAAaje,KACnB/C,UAAU,EACVC,UAAQ,E,UAER,SAAClO,GAAW,CACR2qB,UAAWvF,IAAW6J,EAAaje,KACnC7R,QAAS,W,OAAMgwB,EAAmB,OAAQF,EAAaxyB,QACvDiC,YAAU,Y,SAETuwB,EAAaxyB,aAQtC,IAAeqU,EAAAA,EAAAA,MAAKke,I,m+BC9Hb,IAAMc,GAAiB30B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAINC,EAAAA,EAAAA,WACFW,SAAAA,G,OAAKA,EAAEg0B,YAOhB3B,GAAkBjzB,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KASdC,EAAAA,EAAAA,SAKP00B,GACsB10B,EAAAA,EAAAA,KAIXA,EAAAA,EAAAA,MAKR40B,IAAc70B,EAAAA,EAAAA,SAAO20B,IAAe,Y,6BAAtB30B,C,MAUd80B,GAAc90B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACrBK,EAAAA,EAAAA,WCzCA00B,GAAmB,Y,IAAGC,EAAO,EAAPA,QAAShB,EAAkB,EAAlBA,mBAC3BiB,GAAYntB,EAAAA,EAAAA,UAAQ,W,IAAMktB,EAAAA,OAAyC,KAAvB,QAAlBA,EAAAA,EAAQE,kBAAU,IAAlBF,OAAAA,EAAAA,EAAoBG,QAAQ,WAAgB,CAACH,EAAQE,aAErF,OACI,UAACrwB,GAAkB,C,UACdmwB,EAAQE,aACLD,GACM,SAACpwB,GAAiB,CAChB+vB,SAAUI,EAAQE,WAClB3xB,YAAU,iBAEZ,SAACsB,GAAc,C,UACb,SAACoX,MAAG,CACAC,IAAK8Y,EAAQE,WACb/Y,IAAI,iKACJ5Y,YAAU,oBAI1B,SAACsB,GAAc,CACXf,KAAMkxB,EAAQnf,KACd7R,QAAS,W,OAAMgwB,EAAmB,OAAQgB,EAAQ1zB,QAClDiC,YAAU,e,SAETyxB,EAAQ1zB,YAMzB,IAAeqU,EAAAA,EAAAA,MAAKof,I,2xDC/Bb,IAAM9B,GAAkBjzB,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KASVC,EAAAA,EAAAA,YAIWA,EAAAA,EAAAA,SAI1B,Y,IAAGm1B,EAAY,EAAZA,aAAcC,EAAW,EAAXA,Y,OAAkBD,IAAgB9e,EAAAA,EAAAA,KAAG,KAEzC+e,EAAc,EAAI,EAIhBA,EAAcp1B,EAAAA,EAAAA,YAAqBA,EAAAA,EAAAA,SAUxBo1B,EAAcp1B,EAAAA,EAAAA,QAAiBA,EAAAA,EAAAA,UAMtCo1B,EAAc,mCAAqC,uBAO/DC,GAAWt1B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAElBK,EAAAA,EAAAA,WAOOk1B,GAAWv1B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAClBK,EAAAA,EAAAA,WAKOm1B,GAAKx1B,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,MAOLy1B,GAAez1B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACtBK,EAAAA,EAAAA,SACOJ,EAAAA,EAAAA,YAMIA,EAAAA,EAAAA,UCnEXy1B,GAAkB,Y,IA4CKC,EA5CFC,EAAO,EAAPA,QAAS5B,EAAkB,EAAlBA,mBACzB2B,GAAsC,OAAtBC,EAAQ/lB,UAAY,GAAE,MACvCgmB,GAAS7L,EAAAA,EAAAA,aAET8L,GAAevU,EAAAA,EAAAA,QAAuB,MAENzjB,GAAAA,EAAAA,EAAAA,WAAS,GAAxCu3B,EAA+Bv3B,EAAe,GAAjCi4B,EAAkBj4B,EAAe,GAC/Cs3B,GAAettB,EAAAA,EAAAA,UAAQ,W,IAAQ6tB,EAAF,SAAc,OAAZA,QAAY,IAAZA,GAAsB,QAAtBA,EAAAA,EAAc9lB,gBAAQ,IAAtB8lB,OAAAA,EAAAA,EAAwB5wB,UAAQ,CAAC4wB,IAEtE,OACI,UAAC9wB,GAAkB,CACfuwB,aAAcA,EACdC,YAAaA,EACbrxB,QAAS,W,OAAM+xB,GAAgBV,I,UAE9BD,GACK,SAACvwB,GAAW,CAAC8d,IAAKmT,E,SAAeF,EAAQt0B,SACzC,SAACuR,EAAAA,EAAI,CACH/O,KAAM8xB,EAAQ/f,KACd/C,UAAU,EACVC,UAAQ,E,UAER,SAAClO,GAAW,C,SAAE+wB,EAAQt0B,UAG7B8zB,IACG,SAACY,GAAAA,EAAO,CAAC3xB,OAAQgxB,EAAavkB,QAAS,W,OAAMilB,GAAe,I,UACxD,SAACE,GAAAA,EAAO,CACJC,OAAQb,EACRc,OAAQL,EAAa1T,QACrBrQ,SAAS,SACTqkB,MAAM,QACNC,MAAM,QACNC,aAAc,CACVC,MAAO,CACHC,QAAS,OACTC,aAAct2B,GAAAA,EAAAA,gBACdu2B,gBAAiBz2B,EAAAA,EAAAA,OACjB02B,UAAWz2B,GAAAA,EAAAA,EACXmxB,OAAQ,M,UAIhB,SAACxsB,GAAK,CAACtB,YAAU,mB,SACS,QAArBoyB,EAAAA,EAAa9lB,gBAAQ,IAArB8lB,OAAAA,EAAAA,EAAuB3wB,KAAIkvB,SAAAA,G,OACxB,SAAC0C,KAAE,CAEC5yB,QAAS,WACL6xB,EAAOzsB,KAAK8qB,EAAMre,MAClBme,EAAmB,QAASE,EAAM5yB,QAEtCiC,YAAU,gB,UAEV,SAACsB,GAAe,C,SAAEqvB,EAAM5yB,SAPnB4yB,EAAMzuB,iBAkB/C,IAAekQ,EAAAA,EAAAA,MAAK+f,ICuCpB,GAhG4B,Y,IACxBrX,EAAK,EAALA,MAAK,IAELwY,aAAAA,OAAY,IAAG,GAAI,EACnBC,EAAa,EAAbA,cACAjnB,EAAQ,EAARA,SAEM3O,GAAOtD,EAAAA,EAAAA,IAAYk0B,EAAAA,IACnB,GAAoB9I,EAAAA,EAAAA,KAAlBD,cAEF5gB,GAAYH,EAAAA,EAAAA,GAAqB1H,EAAAA,GAAAA,QAAwB,GAEvDy2B,EAA4B1Y,EAA5B0Y,SAAUnB,EAAkBvX,EAAlBuX,QAASzwB,EAASkZ,EAATlZ,KAErB6xB,GAA8BlnB,EAAAA,EAAAA,cAAY,SAACmnB,EAA4B31B,IACzE8P,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAU,GAAY,OAAT4lB,EAAS,eACtB53B,OAAQiC,MAEb,IAEH,OACI,UAACuD,GAAU,CAACtB,YAAU,oBAAoB2zB,eAAc/uB,EAAY,YAAc,O,WAC9E,SAACtD,GAAmB,CAACkkB,gBAAiBA,E,UAClC,SAAClkB,GAAa,C,UACV,UAAC+B,EAAAA,GAAa,C,WACV,SAAC/B,GAAqB,IAErBkyB,EAAShyB,QACJ,SAACF,GAAgB,C,SACdkyB,EAAS/xB,KAAIgwB,SAAAA,G,OACV,SAACD,GAAgB,CAEbC,QAASA,EACThB,mBAAoBgD,EACpBzzB,YAAU,gBAHLyxB,EAAQvvB,SAOvB,KAGLmwB,EAAQ7wB,QACH,SAACF,GAAe,C,SACb+wB,EAAQ5wB,KAAImyB,SAAAA,G,OACT,SAACzB,GAAe,CAEZE,QAASuB,EACTnD,mBAAoBgD,EACpBzzB,YAAU,gBAHL4zB,EAAY1xB,SAO3B,KAGLoxB,GAAe,SAACO,EAAS,IAAK,aAI3C,SAACvyB,GAAoB,C,UACjB,SAACA,GAAc,C,UACX,UAACA,GAAY,C,WAET,SAACA,GAAY,C,UACT,SAACgO,EAAAA,EAAI,CAAC/O,KAAK,IAAIiP,UAAQ,E,UACnB,SAAClO,GAAY,CAACf,KAAK,IAAIgiB,SAAU5kB,QAIxCiE,EAAKJ,QACA,SAACF,GAA0B,C,SACxBM,EAAKH,KAAIqyB,SAAAA,G,OACN,SAACxD,GAAY,CAETC,aAAcuD,EACdrD,mBAAoBgD,EACpBzzB,YAAU,aAHL8zB,EAAS5xB,SAOxB,KAGLqxB,EAEAjnB,aChGzB,IAAevK,E,SAAAA,IAfF,Y,QAELC,YAAAA,OAAW,IAAG,MAAG,EAIrB,OACI,UAACC,IAAC,CAACC,GAAI,O,WACH,SAACC,OAAI,CAACC,EAAE,UAAUJ,YAAaA,EAAaK,cAAc,WAC1D,SAACF,OAAI,CAACC,EAAE,WAAWJ,YAAaA,EAAaK,cAAc,WAC3D,SAACF,OAAI,CAACC,EAAE,WAAWJ,YAAaA,EAAaK,cAAc,eAOnE,S,86ECfG,IAAM0xB,GAAQt3B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAONqB,SAAAA,G,OAASA,EAAMgD,OAAS,OAAS,UASnCtE,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MASVu3B,GAAcv3B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MASdw3B,GAAQx3B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAmCR6X,GAAO7X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAOPy3B,GAAYz3B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACnBK,EAAAA,EAAAA,KAIOq3B,GAAM13B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAON8a,GAAS9a,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAChBK,EAAAA,EAAAA,GAKOwS,GAAO7S,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAEdK,EAAAA,EAAAA,SASOs3B,GAAgB33B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCxG7B,GAkCG,a,wCAlCG43B,I,kEACFhR,IAAAA,S,MAAAA,WAEI,IASI,EAAAC,KAAKxlB,MARLw2B,EAQA,EARAA,WACAj0B,EAOA,EAPAA,KACAk0B,EAMA,EANAA,IACAh0B,EAKA,EALAA,KACAi0B,EAIA,EAJAA,SACA1zB,EAGA,EAHAA,OACA2zB,EAEA,EAFAA,YACAC,EACA,EADAA,aAGJ,OACI,UAACX,GAAK,CAACjzB,OAAQA,E,WACX,UAACtE,GAAO,C,WACJ,SAAC23B,GAAG,CAACxb,IAAK4b,KACV,UAACjgB,GAAI,C,WACD,SAACiD,GAAM,C,SAAE+c,KACT,SAACJ,GAAS,C,SAAE7zB,WAGpB,SAAC+zB,GAAa,C,UACV,SAAC9kB,GAAI,CAAC/O,KAAMA,EAAME,QAASg0B,E,SAAcD,OAE7C,SAACR,GAAW,CAACvzB,QAASi0B,EAAc10B,YAAU,Y,UAC1C,SAACi0B,GAAK,a,EAOvB,CAlCuBrQ,EAAAA,WAkC1ByQ,GAAYM,aAAe,CACvBL,WAAY,qDACZj0B,KAAM,oLACNE,KAAM,0BACNi0B,SAAU,6CACVD,IAAKK,KACL/2B,OAAQ,OACR42B,YAAa,aACbC,aAAc,cAGlB,U,wBCQA,GA3CwB,WACpB,IAAM/sB,GAAWuD,EAAAA,EAAAA,MACXonB,GAAS7L,EAAAA,EAAAA,aAC4BpsB,GAAAA,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAMi6B,SAAxE1R,EAAmC9oB,EAAnC8oB,QAAS2R,EAA0Bz6B,EAA1By6B,WAAYC,EAAc16B,EAAd06B,UACrBnrB,EAAqB0oB,EAArB1oB,SAAU8c,EAAW4L,EAAX5L,OAC0BnsB,GAAAA,EAAAA,EAAAA,WAAS,GAA9Cy6B,EAAqCz6B,EAAe,GAApC06B,EAAqB16B,EAAe,GACrD26B,GAAgBvS,EAAAA,EAAAA,GAAc,eAAsC,OAAvB5lB,EAAAA,GAAAA,OAAuB,OAE1E+B,EAAAA,EAAAA,YAAU,WACN6I,GAASwtB,EAAAA,GAAAA,IAAgB,CAAEzO,OAAAA,EAAQ9c,SAAAA,KAEnC,IAAMwrB,MAAM,WAAmBF,MAAkBznB,EAAAA,EAAAA,MACjDwnB,EAAkBG,GAEdA,GACAztB,GAAS0tB,EAAAA,GAAAA,SAEd,CAAC3O,EAAQ/e,EAAUiC,EAAUsrB,IAEhC,IAAMI,GAAmB/oB,EAAAA,EAAAA,cAAY,SAACjN,GAClCA,EAAEC,iBACFoI,GAAS4tB,EAAAA,GAAAA,SACV,CAAC5tB,IAEE6tB,GAAkBjpB,EAAAA,EAAAA,cAAY,SAACjN,GACjCg2B,EAAiBh2B,GACjBw1B,GAAcxC,EAAOzsB,KAAKivB,KAC3B,CAACQ,EAAkBR,EAAYxC,IAElC,OAAKnP,GAIE,SAAC7hB,GAAAA,EAAY,CAACY,GAAI,cAAeghB,OAAQ8R,EAAgB7R,QAASA,E,UACrE,SAACkR,IAAW,kBACJU,GAAS,CACbj0B,OAAQqiB,EACRsR,YAAae,EACbd,aAAcY,OARX,M,qoFChCR,ICmBP,GDnBal4B,IAASX,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,4BAAlBd,C,MAOToX,IAAYtX,EAAAA,GAAAA,GAAcF,GAAAA,IAE1ByX,IAAarX,EAAAA,EAAAA,UAAOL,EAAAA,GAAAA,GAAeC,GAAAA,KAAa,Y,4BAAnCI,C,MAObsX,GAAYtX,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,MASZuX,GAAqBvX,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,KAEvBC,EAAAA,EAAAA,KACPI,EAAAA,EAAAA,QAMWJ,EAAAA,EAAAA,YAKFuX,IAAQxX,EAAAA,EAAAA,SAAOyX,GAAAA,GAAa,Y,4BAApBzX,C,KACFG,GAAAA,EAAAA,kBAyBNuX,GAAmB1X,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,MASnBI,GAAQJ,EAAAA,QAAAA,GAAAA,WAAS,C,4BAATA,C,KACjBK,EAAAA,EAAAA,IAKSsX,GAAgB3X,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,MA4BhB4X,IAAiB5X,EAAAA,EAAAA,SAAO2X,IAAc,Y,4BAArB3X,C,MAKjB6X,GAAO7X,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,MAgBPe,IAZWf,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGpBK,EAAAA,EAAAA,GAEEA,EAAAA,EAAAA,SAEOJ,EAAAA,EAAAA,aAKUD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MACZqB,SAAAA,G,OAASA,EAAMyW,QAAU7X,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,YE9GnD,GAtB+C,Y,IAEvC6X,EAAO,EAAPA,QACA/Z,EAAO,EAAPA,QAGJ,OAAI+Z,QAAuB5Z,IAAZH,GACJ,UAACgD,GAAO,CAAC+W,QAASA,E,UAAS,4YAEN,SAACmJ,GAAAA,EAAQ,IAAE,OAI5B,MAAXljB,EACO,MAGJ,SAACgD,GAAO,CAAC+W,QAASA,E,SACpB/Z,K,kCDGJib,GAAAA,EAAAA,EACc,gBAAfC,GAAAA,kBADCD,EAAAA,EAEe,iBAAhBE,GAAAA,mBAFCF,EAAAA,EAGY,cAAbG,GAAAA,gBAHCH,EAAAA,EAIO,SAARI,GAAAA,WAJCJ,EAAAA,EAKI,MAALK,GAAAA,Q,CALCL,KAAAA,GAAO,KAoBZ,IAEMM,GAAmB,CACrB,CACIP,KAAMC,GAAQC,gBACdza,MAAO,wHAEX,CACIua,KAAMC,GAAQE,iBACd1a,MAAO,6HAEX,CACIua,KAAMC,GAAQG,cACd3a,MAAO,mFAEX,CACIua,KAAMC,GAAQI,SACd5a,MAAO,4EAEX,CACIua,KAAMC,GAAQK,MACd7a,MAAO,yCA2Bf,QAAewC,EAAAA,EAAAA,KANf,SAAyB7C,GACrB,MAAO,CACH2M,YAAYM,EAAAA,GAAAA,GAAiBjN,MAIrC,EAgBA,SAA4B,G,IAAEkG,EAAF,EAAEA,OAAQyM,EAAV,EAAUA,QAAShG,EAAnB,EAAmBA,WACjBhN,GAAAA,EAAAA,EAAAA,UAAiBwb,GAjEzB,IAiEXnB,EAAmBra,EAAuC,GAAnD2b,EAAY3b,EAAuC,GACxBA,GAAAA,EAAAA,EAAAA,WAAkB,GAApD4b,EAAkC5b,EAAuB,GAArC6b,EAAc7b,EAAuB,GAC5BA,GAAAA,EAAAA,EAAAA,UAnElB,GAmEX8b,EAA6B9b,EAA+B,GAA/C+b,EAAgB/b,EAA+B,GAC7CA,GAAAA,EAAAA,EAAAA,UAAsB,CAAE6E,MAAO,GAAIL,SAAS,IAA3DzD,EAAef,EAAoD,GAA9Dgc,EAAUhc,EAAoD,GAChDA,GAAAA,EAAAA,EAAAA,UAAsB,CAAE6E,MAAO,GAAIL,SAAS,IAA/D/D,EAAmBT,EAAoD,GAAhE+D,EAAY/D,EAAoD,GAClCA,GAAAA,EAAAA,EAAAA,UAAwB,MAA7Dic,EAAqCjc,EAA6B,GAAhDkc,EAAmBlc,EAA6B,GAEvCA,GAAAA,EAAAA,EAAAA,WAAkB,GAA7CE,EAA2BF,EAAwB,GAAxCmc,EAAgBnc,EAAwB,GAC5BA,GAAAA,EAAAA,EAAAA,WAAkB,GAAzCga,EAAuBha,EAAwB,GAAtCoc,EAAcpc,EAAwB,GACxBA,GAAAA,EAAAA,EAAAA,UAAoC,MAA3DC,EAAuBD,EAAyC,GAAvDqc,EAAcrc,EAAyC,GAEhEwE,GAAqC,OA7ChD,SAAwBzD,EAAkBN,GACtC,IAA8BT,GAAAA,EAAAA,EAAAA,WAAkB,GAAzCwE,EAAuBxE,EAAwB,GAAtCuc,EAAcvc,EAAwB,GAItD,OAHAuE,EAAAA,EAAAA,YAAU,WACNgY,EAAWxb,EAAIyD,SAAW/D,EAAM+D,WACjC,CAACzD,EAAKN,IACF,CAAC+D,GAwCU8X,CAAevb,EAAKN,GAAM,MAEtCwP,GAASnQ,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM6P,KAAKD,UACnDyV,GAAiB5lB,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM6P,KAAKwV,kBAG3DlJ,EAAmB,WACrBR,EAAO,CAAEnX,MAAO,GAAIL,SAAS,IAC7BT,EAAS,CAAEc,MAAO,GAAIL,SAAS,KAG7BiY,GAAczK,EAAAA,EAAAA,cAAY,WAC5B6J,GAAW,GACXE,EAzFc,GA0FdK,GAAW,GACXC,EAAW,MACXlD,GAAY,CAACpY,EAAKN,IAClB+b,IACIP,GACAS,aAAaT,GAEjBjJ,MACD,CAACjS,EAAKN,EAAOwb,IAEVU,GAAoB3K,EAAAA,EAAAA,cAAY,gC,IAU1BpR,EAyCWA,E,sEAlDfyZ,EAAO,C,mBACP+B,GAAW,GACXC,EAAW,MACPJ,GACAS,aAAaT,GAEjBE,GAAa,GACbE,EAAW,MAGPhC,EAAMY,OAASC,GAAQG,cAAa,C,iCACvBna,GAAAA,EAAAA,YACTqlB,EAAAA,GAAAA,GAAWvZ,EAAY,CACnBjM,IAAKA,EAAI8D,MACTpE,MAAOA,EAAMoE,MACb/D,SAAU0lB,GAAAA,EAAAA,c,QAJlB5lB,EAAO,EAAH,MAQJU,EAAAA,GAAAA,IAAwB,CACpBC,OAAQX,EAAKQ,UAAYI,EAAAA,GAAAA,SAAmBA,EAAAA,GAAAA,MAC5CG,UAAW,KACXF,OAAQb,EAAKQ,UAAY,GAAe,OAAZiZ,EAAM3Z,OAAU,GAAoBE,OAAjByZ,EAAM3Z,MAAM,OAAwB,OAAnBE,EAAKmW,MAAM9W,SAC3EL,SAAS,EACT0mB,IAAKrW,EAAuB,OAAdyV,QAAc,IAAdA,OAAAA,EAAAA,EAAgBW,UAAY,O,yCAGjCnlB,GAAAA,EAAAA,cACTulB,EAAAA,GAAAA,GAAS,CACLC,YAAajmB,EAAMoE,S,QAF3BjE,EAAO,EAAH,MAKJU,EAAAA,GAAAA,IAAwB,CACpBC,OAAQX,EAAKQ,UAAYI,EAAAA,GAAAA,aAAuBA,EAAAA,GAAAA,aAChDG,UAAW,KACXF,OAAQb,EAAKQ,UAAY,GAAe,OAAZiZ,EAAM3Z,OAAU,GAAoBE,OAAjByZ,EAAM3Z,MAAM,OAAwB,OAAnBE,EAAKmW,MAAM9W,SAC3EL,SAAS,EACT0mB,IAAKrW,EAAuB,OAAdyV,QAAc,IAAdA,OAAAA,EAAAA,EAAgBW,UAAY,O,QAIlDlN,GAAY,CAACpY,EAAKN,IAClB+b,IAEAL,GAAa,GACTvb,EAAKQ,WACLgb,GAAW,GACXC,EAAW,gIAEXD,GAAW,GACXC,EAA6B,QAAlBzb,EAAAA,EAAKmW,MAAM9W,eAAO,IAAlBW,EAAAA,OAAsBR,IAErC8b,EAAgBa,YAAW,WACvBX,GAAW,GACXC,EAAW,QACZ,M,4CAER,CAACtb,EAAKN,EAAO4Z,EAAO4B,EAAkBjP,IAazC,OAAO,SAAC0M,GAAK,CAACnT,OAAQA,EAAQyM,QAASyJ,E,SAE/Bb,GACM,SAACf,GAAiB,CAChBC,OAAQU,GACR0f,eAAgBpf,EAChBf,cAjBQ,SAACV,EAAelT,GACpC0U,GAAW,GACXF,EAAStB,GACT0B,EAAa5U,OAeH,SAACgT,GAAU,CACTpZ,IAAKA,EACLyZ,cAdQ,WACpBqB,GAAW,GACXW,KAaYlC,UAAW0B,EACXzB,YAAaxW,EACb9D,QAASA,EACTwa,cAAekC,EACflc,MAAOA,EACP4Z,MAAOA,EACP7V,QAASA,EACTtE,UAAWA,EACX8Z,QAASA,SA3I7B,SAASb,GAAYC,GACjBA,EAAO9C,SAAQ,SAAS3M,GAChBA,EAAM0P,YACN1P,EAAM0P,gBA6IlB,SAASwB,GAAkB,G,IAAEC,EAAF,EAAEA,OAAQC,EAAV,EAAUA,cAAemgB,EAAzB,EAAyBA,eAChD,OAAO,UAACC,EAAAA,SAAQ,C,WACZ,SAAC74B,GAAK,C,SAAC,sIACP,SAACsX,GAAgB,CAACnU,YAAU,c,SAEpBqV,EAAO5T,KAAI,SAASmT,EAAOlT,GACvB,OAAQ,SAACnE,GAAAA,GAAU,CAEf8C,KAAMuU,EAAM3Z,MACZwF,QAAS,WACL6U,EAAcV,EAAOlT,IAEzBvB,KAAMs1B,IAAmB/zB,EAAQtB,GAAAA,GAAAA,QAAmBA,GAAAA,GAAAA,UACpDJ,YAAU,sBANL4U,EAAMY,cA4BnC,SAASd,GAAW,G,IAChBE,EADgB,EAChBA,MACAtZ,EAFgB,EAEhBA,IACAN,EAHgB,EAGhBA,MACA6Z,EAJgB,EAIhBA,UACAC,EALgB,EAKhBA,YACAC,EANgB,EAMhBA,cACAC,EAPgB,EAOhBA,cACAjW,EARgB,EAQhBA,QACAtE,EATgB,EAShBA,UACA8Z,EAVgB,EAUhBA,QACA/Z,EAXgB,EAWhBA,QAEoCD,GAAAA,EAAAA,EAAAA,WAAS,GAAtCqE,EAA6BrE,EAAe,GAA/BsE,EAAgBtE,EAAe,GAE7CiQ,GAASnQ,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM6P,KAAKD,UACnDyV,GAAiB5lB,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM6P,KAAKwV,kBAE3DhhB,GAAkBsN,EAAAA,EAAAA,cAAY,SAACrN,EAAyBC,GAC1D,IAAM+V,EAAoC,kBAAfhW,EAA0BA,EAAWE,MAAQF,GAEnEN,GAAesW,KAChBrZ,EAAAA,GAAAA,IAAwB,CACpBC,OAAQ8Y,EAAMY,OAASC,GAAQG,cAAgB7Z,EAAAA,GAAAA,QAAkBA,EAAAA,GAAAA,eACjEG,UAAW,KACXF,OAAQ,GAAe,OAAZ4Y,EAAM3Z,OACjBd,SAAS,EACT0mB,IAAKrW,EAAuB,OAAdyV,QAAc,IAAdA,OAAAA,EAAAA,EAAgBW,UAAY,OAE9C/hB,GAAa,IAEjBM,EAAUD,KACX,CAACN,EAAagW,EAAM3Z,QAEjB+C,EAAa,8FAEnB,OAAO,UAAC03B,EAAAA,SAAQ,C,WACZ,UAAC74B,GAAK,CAACmD,YAAU,sB,UAAsB,oFAAiB4U,EAAM3Z,UAC9D,UAACqZ,GAAI,C,UAAC,kRAEF,UAACP,GAAS,C,UAAC,sBAAG,SAACC,GAAkB,CAACvT,QAASsU,E,SAAe,qIACxB,WAEtC,UAACV,GAAc,C,WACX,SAACR,GAAS,CAACsB,aAAc7Z,EAAI8D,MACzBK,SAAU,SAACP,G,OAAuBD,EAAgBC,EAAY2V,IAC9DnV,YAAa,8CACbC,aAAc,yKACd5E,KAAK,qBACL6E,UAAW,qBAEf,SAACkU,GAAU,CAACqB,aAAcna,EAAMoE,MAC5BK,SAAU,SAACP,G,OAAuBD,EAAgBC,EAAY4V,IAC9DpV,YAAa,kFACbC,aAAc,6JACd5E,KAAK,sBACL6E,UAAW,wBAInB,SAAC4U,GAAa,CAACD,QAASA,EAAS/Z,QAASA,KAE1C,UAAC4Z,GAAa,C,WACV,SAACrU,GAAAA,EAAU,CACPC,YAAU,YACVhC,WAAYA,EACZiC,SAAUC,EAAAA,KAEd,SAAC9C,GAAM,CACH+C,KAAMC,GAAAA,GAAAA,OACNK,QAASuU,EACT1U,UAAWvB,GAAWtE,EACtBuF,YAAU,sB,SAEThC,U,skDE9VV,IAAM23B,GAAiBl5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MACfqB,SAAAA,G,OAASA,EAAM83B,KAAO,OAAS,UAsBjCC,GAAUp5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIVq5B,GAAer5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACtBK,EAAAA,EAAAA,GAKOi5B,GAAct5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACrBK,EAAAA,EAAAA,GAOOk5B,GAAgBv5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAYhBW,IAASX,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,6BAAlBd,C,MClDTwP,GAAgBgqB,UAE7B,GAyEG,a,wCAzEGC,I,wDACFt7B,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAAA,GAAAA,QAAQ,CACJg7B,MAAM,KA8BVO,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAAA,GAAAA,eAAc,WACV,IAAMvqB,EAAU,IAAIC,KACpBD,EAAQE,QAAQF,EAAQG,UAAY,IAEpCC,GAAAA,GAAAA,KAAY,cAAe,EAAG,CAC1BJ,QAAAA,EACA/N,OAAQoO,GACR9J,KAAM,MAGV,EAAKtH,SAAS,CAAE+6B,MAAM,IAAS,WACG,oBAAvB,EAAK93B,MAAMyP,SAA0B,EAAKzP,MAAMyP,iBAI/D6oB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAAA,GAAAA,cAAa,WACT,EAAKv7B,SAAS,CAAE+6B,MAAM,IAAS,W,OAAM,EAAK93B,MAAMu4B,oB,qBA3CpDC,IAAAA,a,MAAAA,WACQ7sB,QAAkD,MAAxCA,OAAO8sB,eAAeC,QAAQ,QACxC/sB,OAAO8sB,eAAeE,QAAQ,KAAM,MAEpC5oB,EAAAA,GAAAA,GAAc,CACVrB,MAAO,UACPsB,SAAU,cACVhS,OAAQ,Y,CAKpB46B,IAAAA,oB,MAAAA,WACQpT,KAAKxlB,MAAM0M,QAAYwB,GAAAA,GAAAA,KAAY,eACnCsX,KAAKzoB,SAAS,CAAE+6B,MAAM,KAEtBtS,KAAKzoB,SAAS,CAAE+6B,MAAM,IACtBtS,KAAKgT,gB,CAIbK,IAAAA,qB,MAAAA,SAAmB,KAAEnsB,SACF8Y,KAAKxlB,MAAM0M,QAAU8Y,KAAKxlB,MAAM0M,QAC3C8Y,KAAKzoB,SAAS,CAAE+6B,MAAM,M,CAuB9BvS,IAAAA,S,MAAAA,WACI,IAAsD,EAAAC,KAAKxlB,MAAK,EAAV,EAA9CgD,OAAAA,OAAM,IAAG,EAAAwiB,KAAK1oB,MAAMg7B,KAAI,EAAEj4B,EAAoB,EAApBA,KAAMiC,EAAc,EAAdA,UAExC,OACI,UAAC+1B,GAAc,CAAC/1B,UAAWA,EAAWg2B,KAAM90B,E,WACxC,UAAC+0B,GAAO,C,WACJ,SAACC,GAAY,C,SAAC,uDACd,SAACC,GAAW,C,SAAEp4B,EAAK5C,WAEvB,UAACi7B,GAAa,C,WACV,SAAC54B,GAAM,CAACqD,QAAS6iB,KAAK8S,WAAYj2B,KAAMC,GAAAA,GAAAA,U,SAAqB,8DAG7D,SAAChD,GAAM,CAACqD,QAAS6iB,KAAK6S,YAAav2B,UAAU,yB,SAAyB,uE,EASvF,CAzEyBgkB,EAAAA,WAyE5B,M,yYC9EO,IAAMgT,IAAsBn6B,EAAAA,EAAAA,SAAOy5B,IAAc,Y,6BAArBz5B,C,MAOtBo6B,GAAwBp6B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKZM,EAAAA,GAAAA,SAGAA,EAAAA,GAAAA,QCXZ+5B,GAAuB,WAChC,IAAMnvB,GAAWuD,EAAAA,EAAAA,MACXvN,GAAOtD,EAAAA,EAAAA,IAAYk0B,EAAAA,IAGzB,OAAO,SAAC/K,EAAAA,EAAK,C,UACT,SAACliB,GAAwB,C,UACrB,SAACA,GAAsB,CACnB3D,KAAMA,EACN04B,YANkB,W,OAAM1uB,GAAS8mB,EAAAA,GAAAA,QAOjCzuB,YAAU,wB,6+CCb1B,IAEaxD,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACDC,EAAAA,EAAAA,QAMToB,SAAAA,G,OAASA,EAAMi5B,YAAc,OAAS,UACnCj5B,SAAAA,G,OAASA,EAAM2lB,KAAO,OAAS,UAGlCmE,GAAenrB,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACxBK,EAAAA,EAAAA,QACOJ,EAAAA,EAAAA,aACAoB,SAAAA,G,OAASA,EAAM2lB,KAClB3lB,EAAMk5B,WACFt6B,EAAAA,EAAAA,KACAA,EAAAA,EAAAA,SACJoB,EAAMk5B,WACFt6B,EAAAA,EAAAA,KACAA,EAAAA,EAAAA,eAMCu6B,GAAiBx6B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAKXqB,SAAAA,G,OAASA,EAAM2lB,KAAO,MAAQ,MAEtC/mB,EAAAA,EAAAA,YACPI,EAAAA,EAAAA,QACyBJ,EAAAA,EAAAA,aAIhBG,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAER2J,GAAO3J,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,MAKPqB,SAAAA,G,OAASA,EAAMo5B,UAAY,QAAU,UAE5Bp5B,SAAAA,G,OAASA,EAAM2lB,KAAO/mB,EAAAA,EAAAA,gBAAyB,YAlD7C,sDA6DLoB,SAAAA,G,OAASA,EAAM2lB,KAAO,aAAe,UAK3C0T,GAAgB16B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAEbqB,SAAAA,G,OAASA,EAAM2lB,KAAO,OAAS,MAC3C3mB,EAAAA,EAAAA,GAESgB,SAAAA,G,OAASA,EAAM2lB,KAAO,EAAI,IAGhB1mB,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,ICCR,GA5DkB,Y,IACdwP,EAAQ,EAARA,SACAvO,EAAK,EAALA,MACAuU,EAAI,EAAJA,KACA4kB,EAAS,EAATA,UACAH,EAAW,EAAXA,YACAK,EAAS,EAATA,UACAJ,EAAU,EAAVA,WAE4Bz8B,GAAAA,EAAAA,EAAAA,WAAS,GAA9BuG,EAAqBvG,EAAe,GAA5B88B,EAAa98B,EAAe,IAE3CuE,EAAAA,EAAAA,YAAU,WACNu4B,GAAmB,OAATD,QAAS,IAATA,OAAAA,EAAAA,EAAWr5B,SAAUA,KAChC,IAEH,IAAMu5B,GAAS/qB,EAAAA,EAAAA,cAAY,WACvB8qB,GAAWv2B,KACZ,CAACA,IAEEirB,GAAiBxf,EAAAA,EAAAA,cAAY,SAACuF,G,IAAM4hB,EAAW,UAAH,6CAAG,aACjD7lB,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAU,GAAY,OAAT4lB,EAAS,UACtB53B,OAAQgW,EACR7W,MAAO,eAEZ,IAEH,OACI,UAACqG,GAAU,CAACy1B,YAAaA,EAAatT,KAAM3iB,E,WACxC,UAACQ,GAAiB,CAACmiB,KAAM3iB,E,UACpBo2B,GACK,SAAC51B,GAAe,CACdmiB,KAAM3iB,EACNk2B,WAAYA,E,UAEZ,SAAC11B,GAAQ,C,SAAEvD,OAEb,SAACuR,EAAAA,EAAI,CAAC/O,KAAM+R,EAAM/C,UAAU,EAAOC,UAAQ,E,UACzC,SAAClO,GAAe,CACZb,QAAS,W,OAAMsrB,EAAehuB,IAC9B0lB,KAAM3iB,EACNk2B,WAAYA,E,UAEZ,SAAC11B,GAAQ,CAACi2B,SAAS,O,SAAQx5B,SAGvC,SAACuD,GAAO,CACJmiB,KAAM3iB,EACNL,QAAS62B,EACTJ,UAAWA,QAGnB,SAAC51B,GAAgB,CAACmiB,KAAM3iB,E,SACnBwL,Q,yuBCvEV,IAAMkrB,GAAc/6B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIXC,EAAAA,EAAAA,OAEZI,EAAAA,EAAAA,KAOS26B,GAAgBh7B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAEhBY,SAAAA,G,OAAKA,EAAE05B,YAAc,OAAS,UAG9BW,GAAgBj7B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,MAElBY,SAAAA,G,OAAKA,EAAE25B,WAAat6B,EAAAA,EAAAA,KAAcA,EAAAA,EAAAA,cACzCI,EAAAA,EAAAA,SAQS66B,GAAel7B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAEjBC,EAAAA,EAAAA,aACPI,EAAAA,EAAAA,UCpBS86B,GAAqC,Y,IAC9CC,EAAS,EAATA,UACAC,EAAY,EAAZA,aACAC,EAAgB,EAAhBA,iBACAC,EAAY,EAAZA,aACAjB,EAAW,EAAXA,YAUA,OACI,SAACz1B,GAAgB,CACbjB,KAAMw3B,EAAU95B,MAEhBg5B,YAAaA,E,UAEb,SAACznB,EAAAA,EAAI,CAAC/O,KAAMs3B,EAAUvlB,KAAM9C,UAAQ,EAACD,UAAU,E,UAC3C,SAACjO,GAAgB,CACb01B,aAAca,EAAUnH,SACxBjwB,QAhBY,WACI,oBAAjBq3B,GACPA,IAEJC,EAAiBF,EAAU95B,MAAOi6B,I,SAcZ,OAATH,QAAS,IAATA,OAAAA,EAAAA,EAAW95B,WARf85B,EAAU31B,K,YC7Bd+1B,IACT1S,EAAAA,EAAAA,eAAoC,I,43DCDjC,IAAM2S,GAAez7B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAINC,EAAAA,EAAAA,WAITW,SAAAA,G,OAAKA,EAAE05B,YAAc,OAAS,SACvCj6B,EAAAA,EAAAA,GAGWJ,EAAAA,EAAAA,YACPI,EAAAA,EAAAA,UAKKq7B,GAAiB17B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAGbY,SAAAA,G,OAAKA,EAAE+6B,MAAQ,MAAQ,OACxB/6B,SAAAA,G,OAAKA,EAAE+6B,MAAQ,MAAQ,OAS1BC,IANiB57B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAMJA,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGtBK,EAAAA,EAAAA,SACOO,SAAAA,G,OAAKA,EAAE25B,WAAat6B,EAAAA,EAAAA,KAAcA,EAAAA,EAAAA,cAO9BA,EAAAA,EAAAA,OAIF47B,GAAY77B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,MACrBY,SAAAA,G,OAAKA,EAAE+6B,MAAQt7B,EAAAA,EAAAA,IAAYA,EAAAA,EAAAA,KACpBJ,EAAAA,EAAAA,UAME67B,GAAY97B,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KACrBK,EAAAA,EAAAA,GASIA,EAAAA,EAAAA,SACOJ,EAAAA,EAAAA,KAKAA,EAAAA,EAAAA,MAIF+rB,GAAWhsB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACLG,GAAAA,EAAAA,YAOIA,GAAAA,EAAAA,aAMVuP,GAAQ1P,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,MACCY,SAAAA,G,OAAKA,EAAE8wB,UAKVvxB,GAAAA,EAAAA,aAGRS,SAAAA,G,OAAKA,EAAEm7B,YACd17B,EAAAA,EAAAA,WC4BJ,GA7Gc,Y,IAAGgV,EAAI,EAAJA,KAAMilB,EAAW,EAAXA,YAAaC,EAAU,EAAVA,WAAYc,EAAY,EAAZA,aAAcC,EAAgB,EAAhBA,iBAAkBC,EAAY,EAAZA,aACpEnS,EAAiG/T,EAAjG+T,MAAOuH,EAA0Ftb,EAA1Fsb,WAAYrvB,EAA8E+T,EAA9E/T,MAAOuU,EAAuER,EAAvEQ,KAAM8Z,EAAiEta,EAAjEsa,SAAUC,EAAuDva,EAAvDua,YAAaC,EAA0Cxa,EAA1Cwa,YAAa,EAA6Bxa,EAA7Bwb,OAAAA,OAAM,IAAG,KAAE,EAAEC,EAAgBzb,EAAhByb,YAE7ChzB,GAAAA,EAAAA,EAAAA,WAAS,GAA9Ck+B,EAAqCl+B,EAAe,GAApCm+B,EAAqBn+B,EAAe,GAErDo+B,EAAsB,WACI,oBAAjBb,GACPA,IAEJC,EAAiBh6B,GAASsuB,GAAe,GAAI2L,IAG3Crf,GAAM2L,EAAAA,GAAAA,KAAY8I,EAAavH,EAE/B,GF3BCH,EAAAA,EAAAA,YAAWuS,IE2BVW,gBAMR,OAJA95B,EAAAA,EAAAA,YAAU,WACN85B,GAAmBF,GAAkB,KACtC,CAACE,KAGA,UAACt3B,GAAe,CAACy1B,YAAaA,E,WAC1B,SAACznB,EAAAA,EAAI,CACD/O,KAAM+R,GAAQ,IACd/C,UAAU,EACVC,UAAQ,E,UAER,UAACgO,IAAC,C,UACG+P,IACG,SAACE,GAAAA,GAAkB,CACf3tB,QAAS,CACL4tB,QAAS,GACTC,OAAQ,I,UAGZ,SAAC7gB,GAAAA,EAA2B,CACxBrM,QAAS,SAACnB,GACNA,EAAEC,iBACFm5B,GAAkB,IAEtBpoB,YAAaid,EAAYjd,YACzBsd,KAAML,EAAYK,KAClBC,QAAS,CACLC,OAAQ,IACR+K,QAASJ,EACTlrB,QAAS,W,OAAMmrB,GAAkB,SAKhD/f,IACG,SAACrX,GAAW,CAACb,QAASk4B,E,UAClB,SAACjgB,MAAG,CACAC,IAAKA,EAAKC,IAAK7a,YAMnC,UAACuD,GAAiB,CAAC82B,MAAOzf,E,WACtB,SAACrJ,EAAAA,EAAI,CACD/O,KAAM+R,GAAQ,IACd/C,UAAU,EACVC,UAAQ,E,UAER,UAACgO,IAAC,C,UACGzf,IACG,UAACuD,GAAa,CAAC01B,WAAYA,EAAYv2B,QAASk4B,E,WAC5C,SAAC9rB,OAAI,C,SAAE9O,IACA,OAANuvB,QAAM,IAANA,OAAAA,EAAAA,EAAQ7rB,KAAIxG,SAAAA,G,OACT,SAACqG,GAAQ,CAEL6sB,QAASlzB,EAAMmzB,MACfoK,UAAWv9B,EAAMizB,WACjBztB,QAASk4B,E,SAER19B,EAAM8C,OALF9C,EAAMiH,UAU1BkqB,IACG,SAAC9qB,GAAY,CAACb,QAASk4B,EAAqBP,MAAOzf,E,UAC/C,SAAC9L,OAAI,C,SAAEuf,WAKtBC,IAAe,UAAC/qB,GAAY,CAACb,QAASk4B,E,WACnC,SAACrpB,EAAAA,EAAI,CACD/O,KAAM+rB,GAA4B,IAClC/c,UAAU,EACVC,UAAQ,E,UAER,SAACgO,IAAC,C,UAAC,SAAC3Q,OAAI,C,SAAEwf,SAEd,SAAC3T,MAAG,CACAC,IAAK,2CACLC,IAAKyT,EACLje,OAAQ,OACRD,MAAO,kBC5E/B,GA/Ba,Y,IAQA2D,EARGA,EAAI,EAAJA,KAAMrR,EAAO,EAAPA,QAASq3B,EAAY,EAAZA,aAC3B,OACI,UAACx2B,GAAc,C,WACN,OAAJwQ,QAAI,IAAJA,OAAAA,EAAAA,EAAM/T,SACH,SAACuD,GAAe,C,SACXwQ,EAAK/T,QAGT,OAAJ+T,QAAI,IAAJA,GAAc,QAAdA,EAAAA,EAAMxF,gBAAQ,IAAdwF,OAAAA,EAAAA,EAAgBrQ,KAAI,SAACkvB,EAAOjvB,G,OACzBivB,EAAMxwB,MACA,SAAC24B,GAAK,CACJhnB,KAAM6e,EAENoG,cAAepG,EAAMoI,UACrB/B,aAAcrG,EAAMD,SACpBoH,aAAcA,EACdC,iBAAkBt3B,GAJbiB,IAMP,SAACk2B,GAAgB,CACfC,UAAWlH,EAEXmH,aAAcA,EACdC,iBAAkBt3B,EAClBs2B,cAAepG,EAAMoI,WAHhBr3B,U,mKC/BtB,IAAM81B,GAAc/6B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIXC,EAAAA,EAAAA,OACZI,EAAAA,EAAAA,KCqBJ,GAhBiB,Y,IAGJgV,EAHOA,EAAI,EAAJA,KAAMrR,EAAO,EAAPA,QAASq3B,EAAY,EAAZA,aAAcd,EAAU,EAAVA,WAC7C,OACI,SAAC11B,GAAc,C,SACN,OAAJwQ,QAAI,IAAJA,GAAc,QAAdA,EAAAA,EAAMxF,gBAAQ,IAAdwF,OAAAA,EAAAA,EAAgBrQ,KAAI,SAACkvB,EAAOjvB,G,OACzB,SAACs3B,GAAI,CAEDlnB,KAAM6e,EACNlwB,QAASA,EACTq3B,aAAcA,EACdd,WAAYA,GAJPt1B,S,kNClBlB,IAAMu3B,GAAkBx8B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCyC/B,GA9BiB,Y,IACb8iB,EAAS,EAATA,UACA9e,EAAO,EAAPA,QACAq3B,EAAY,EAAZA,aAEA,OACI,SAACx2B,GAAkB,C,SACdie,EAAU9d,KAAIqQ,SAAAA,G,QAM+CA,EAL1D,gBAAConB,GAAS,CAENn7B,MAAO+T,EAAK/T,MACZuU,KAAMR,EAAKQ,KAAOR,EAAKQ,KAAO,GAC9BykB,cAAejlB,EAAKinB,UACpB7B,WAA4B,QAAjBplB,EAAI,OAAJA,QAAI,IAAJA,OAAAA,EAAAA,EAAMxF,SAAS,UAAE,OAAU,QAA3BwF,EAAAA,EAAmBxF,gBAAQ,WAA3BwF,EAA2B,EAAEtQ,QAAS,IAAS,OAAJsQ,QAAI,IAAJA,GAAc,QAAdA,EAAAA,EAAMxF,gBAAQ,IAAdwF,OAAAA,EAAAA,EAAgBtQ,QAAS,IAAK,EACpFw1B,aAAcllB,EAAK4e,SACnBjwB,QAASA,EACT22B,UAAW7X,EAAU,G,UAErB,SAAC4Z,GAAQ,CACLrnB,KAAMA,EACNrR,QAASA,EACTq3B,aAAcA,EACdd,aAAcllB,EAAK4e,YAblB5e,EAAK5P,U,oLClBvB,IAAM+f,GAAOxlB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIG2lB,EAAAA,EAAAA,SCCVH,GAAO,WAChB,IAAMtkB,GAAOtD,EAAAA,EAAAA,IAAYk0B,EAAAA,IAEzB,OAAO,SAACjtB,GAAO,C,UACX,SAACgO,EAAAA,EAAI,CAAC/O,KAAK,IAAIiP,UAAQ,E,UACnB,SAAC6S,GAAAA,EAAQ,CAAC9hB,KAAK,IAAIgiB,SAAU5kB,S,YC0CzC,GAxCgB,Y,IACZ4hB,EAAS,EAATA,UACA9e,EAAO,EAAPA,QACA24B,EAAS,EAATA,UAEA,OACI,qB,SACc,OAAT7Z,QAAS,IAATA,OAAAA,EAAAA,EAAW9d,KAAIqQ,SAAAA,G,QAKgEA,EAKnEA,EATT,gBAAConB,GAAS,CACN5mB,KAAMR,EAAKQ,KAEXvU,MAAO+T,EAAK/T,MACZm5B,WAAe,OAAJplB,QAAI,IAAJA,OAAAA,EAAAA,EAAMxF,YAA6B,QAAjBwF,EAAI,OAAJA,QAAI,IAAJA,OAAAA,EAAAA,EAAMxF,SAAS,UAAE,OAAU,QAA3BwF,EAAAA,EAAmBxF,gBAAQ,WAA3BwF,EAA2B,EAAEtQ,QAAS,IAAS,OAAJsQ,QAAI,IAAJA,GAAc,QAAdA,EAAAA,EAAMxF,gBAAQ,IAAdwF,OAAAA,EAAAA,EAAgBtQ,QAAS,EACjGu1B,cAAejlB,EAAKinB,UACpB/B,aAAcllB,EAAK4e,S,UAEnB,SAACpvB,GAAAA,GAAmB,C,SACX,OAAJwQ,QAAI,IAAJA,GAAc,QAAdA,EAAAA,EAAMxF,gBAAQ,IAAdwF,OAAAA,EAAAA,EAAgBrQ,KAAI,SAAC43B,G,IAClBA,EADgC,OACvB,OAATA,QAAS,IAATA,GAaH,QAbGA,EAAAA,EAAW/sB,gBAAQ,IAAnB+sB,OAAAA,EAAAA,EAAqB53B,KAAI,SAACkvB,G,OACtB,SAACrvB,GAAAA,GAAc,CAEXtB,YAAU,oB,UAEV,SAACsP,EAAAA,EAAI,CAAC/O,KAAMowB,EAAMre,KAAM/C,UAAU,EAAOC,UAAQ,E,UAC7C,SAAClO,GAAAA,GAAe,CACZb,QAAS,W,OAAMA,EAAQkwB,EAAM5yB,MAAOq7B,I,SAEnCzI,EAAM5yB,WAPV4yB,EAAMzuB,aAVtB4P,EAAK5P,UCwB9B,GAjCgB,Y,IACZqd,EAAS,EAATA,UACA9e,EAAO,EAAPA,QACA+3B,EAAS,EAATA,UACAV,EAAY,EAAZA,aACAsB,EAAS,EAATA,UAGA,OACI,qB,SACc,OAAT7Z,QAAS,IAATA,OAAAA,EAAAA,EAAW9d,KAAIqQ,SAAAA,G,OACZ,SAACxQ,GAAAA,GAAe,CAEZb,QAASq3B,EACT93B,YAAU,sB,UAEV,SAACsP,EAAAA,EAAI,CAAC/O,KAAMuR,EAAKQ,KAAM9C,UAAQ,E,UAC3B,UAAClO,GAAAA,GAAgB,CACbb,QAAS,W,OAAMA,EAAQqR,EAAK/T,MAAOq7B,IACnChL,MAAOoK,E,WAEP,SAACl3B,GAAAA,GAAW,C,UACR,SAACoX,MAAG,CAACC,IAAK7G,EAAK6f,WAAY/Y,IAAK9G,EAAK/T,UAExC+T,EAAK/T,YAZT+T,EAAK5P,UC6J9B,GAxJ2B,Y,IACvB4Y,EAAK,EAALA,MACAtQ,EAAM,EAANA,OAAM,IACN8uB,cACIC,EAAO,EAAPA,QACAC,EAAe,EAAfA,gBAAe,IAEnBlG,aAAAA,OAAY,IAAG,GAAI,EAEXE,EAA4B1Y,EAA5B0Y,SAAUnB,EAAkBvX,EAAlBuX,QAASzwB,EAASkZ,EAATlZ,KAEyB6jB,GAAAA,EAAAA,EAAAA,KAA5CgU,EAA4ChU,EAA5CgU,yBAA0BjU,EAAkBC,EAAlBD,cAG5B/X,GAAWhJ,EAAAA,EAAAA,GAAqB1H,EAAAA,GAAAA,QAAwB,GAEtBxC,GAAAA,EAAAA,EAAAA,WAAS,GAA1C2tB,EAAiC3tB,EAAe,GAAlCm/B,EAAmBn/B,EAAe,GACXA,GAAAA,EAAAA,EAAAA,WAAS,GAA9C+d,EAAqC/d,EAAe,GAApCge,EAAqBhe,EAAe,GACbA,GAAAA,EAAAA,EAAAA,WAAS,GAAhDq+B,EAAuCr+B,EAAe,GAArCo/B,EAAsBp/B,EAAe,GAEvDq/B,GAAertB,EAAAA,EAAAA,cAAY,WAC7BotB,GAAmB,GACnBriB,YAAW,W,OAAMqiB,GAAmB,KAAQ,KAC7C,IAEGE,GAAsBttB,EAAAA,EAAAA,cAAY,WACpCmtB,GAAiBxR,KAClB,CAACA,IAEE4R,GAAqBvtB,EAAAA,EAAAA,cAAY,WACnCmtB,GAAgB,KACjB,IAEGK,GAAgBxtB,EAAAA,EAAAA,cAAY,SAACuF,G,IAAM4hB,EAAW,UAAH,6CAAG,YAChDoG,KACAjsB,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAU,GAAY,OAAT4lB,EAAS,UACtB53B,OAAQgW,EACR7W,MAAO,eAEZ,CAAC6+B,IAEJ,OAAQ,sB,WACA,SAACx4B,GAAAA,GAAc,CAACgnB,cAAeJ,KAE/B,SAAC6L,GAAK,KAEN,UAACkE,GAAoB+B,SAAQ,CAAC56B,MAAO,CAAEw5B,gBAAAA,G,WACnC,UAACt3B,GAAAA,GAAgB,CACbmmB,YAAajd,GAAUivB,EACvBz5B,YAAU,mBACV2zB,eAAclmB,EAAW,YAAc,O,WAEvC,UAACnM,GAAAA,GAAgB,C,WACb,SAACA,GAAAA,GAAmB,CAACkkB,gBAAiBA,E,UAClC,UAAClkB,GAAAA,GAAa,C,WACV,SAACoK,GAAU,IACV4nB,IAAgB,SAACO,EAAS,UAInC,SAACvyB,GAAAA,GAAoB,C,UACjB,UAAC8N,MAAG,C,WACA,SAAC6S,GAAI,KACL,UAAC3gB,GAAAA,GAAQ,C,UAEJi4B,GAECrR,IACE,SAAC5mB,GAAAA,GAAa,CAACb,QAASo5B,E,UACpB,SAACI,GAAI,CAACr3B,KAAM,mBAQpC,SAACtB,GAAAA,GAAW,C,UACR,SAACA,GAAAA,GAAoB,C,UACjB,UAAC8N,MAAG,C,WACA,SAAC6S,GAAI,KACL,SAACvW,GAAU,KAEX,UAACpK,GAAAA,GAAQ,C,WACL,SAACuyB,EAAS,IAET0F,GAECrR,IACE,SAAC5mB,GAAAA,GAAa,CAACb,QAASo5B,E,UACpB,SAACI,GAAI,CAACr3B,KAAM,WAKxB,SAACk0B,GAAoB,cAOpC5O,IACG,SAAC5mB,GAAAA,GAAa,CAAC44B,SAAUN,E,UACrB,UAACt4B,GAAAA,GAAoB,C,WACjB,SAACA,GAAAA,GAAc,C,UACX,UAACA,GAAAA,GAAgB,C,WAEb,SAACoK,GAAU,KAEX,SAACpK,GAAAA,GAAa,CAACb,QAASo5B,EAAqB3R,cAAc,E,UACvD,SAACiS,GAAAA,EAAK,CAACv3B,KAAM,YAKpB42B,IAAmB,SAACA,EAAe,CAACY,aAAcN,KAEvD,SAACx4B,GAAAA,GAAuB,C,UACpB,SAAC+4B,GAAO,CACJ9a,UAAW8S,EACX5xB,QAASs5B,EACTjC,aAAcgC,EACdV,UAAW,kBAGf,SAAC93B,GAAAA,GAA0B,C,UACvB,SAACg5B,GAAgB,CACb/a,UAAWiU,EACX/yB,QAASs5B,EACTQ,QAAQ,EACRnB,UAAW,iBAGnB,SAACoB,GAAQ,CACLjb,UAAW3d,EACXnB,QAASs5B,UAKzB,SAAC/jB,GAAkB,CACflV,OAAQwX,EACR/K,QAAS,W,OAAMgL,GAAkB,a,syCC7KlD,IAAMkiB,GAAYh+B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIZi+B,GAAkBj+B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAOzBY,SAAAA,G,OAAKA,EAAEs9B,eAAgB5nB,EAAAA,EAAAA,KAAG,SAWnB6nB,GAAkBn+B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKVG,GAAAA,EAAAA,gBACGF,EAAAA,EAAAA,OACNC,GAAAA,EAAAA,GAEZU,SAAAA,G,OAAKA,EAAEs9B,eAAgB5nB,EAAAA,EAAAA,KAAG,SCnBnB0nB,GAAY,Y,IACrBI,EAAe,EAAfA,gBACAC,EAAe,EAAfA,gBACAH,EAAY,EAAZA,aACAruB,EAAQ,EAARA,SACAyuB,EAAY,EAAZA,aACAC,EAAY,EAAZA,aACAC,EAAY,EAAZA,aACG5W,GAAI,UAPPwW,kBACAC,kBACAH,eACAruB,WACAyuB,eACAC,eACAC,iBAGwD1gC,GAAAA,EAAAA,EAAAA,WAAS,GAA1D2gC,EAAiD3gC,EAAe,GAA1C4gC,EAA2B5gC,EAAe,GAEjE6gC,EAAuC,oBAAjBJ,GAAuD,oBAAjBC,GAAgCN,EAElG,OACI,UAACr5B,IAAY,gBACT8d,IAAK2b,EACL/6B,YAAU,aACVg7B,aAAcI,EAAcJ,EAAe,W,OAAMG,GAAwB,IACzEF,aAAcG,EAAcH,EAAe,W,OAAME,GAAwB,KACrE9W,GAAI,C,UAEPwW,GACCO,EAAcN,EAAkBI,KAC9B,SAAC55B,GAAkB,CACfq5B,aAAcA,EACd36B,YAAU,oB,UAEV,SAACsB,GAAkB,CACfq5B,aAAcA,E,SAEbruB,W,oNC5ClB,IAAMlP,IAASX,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,6BAAlBd,C,KAEhBK,EAAAA,EAAAA,IAEAO,SAAAA,G,OAAKA,EAAEs9B,eAAgB5nB,EAAAA,EAAAA,KAAG,SCiBnBsoB,GAAmB,Y,QAC5BzP,QAAAA,OAAO,IAAG,6BAAM,EAChBxuB,EAAM,EAANA,OACAu9B,EAAY,EAAZA,aACAW,EAAQ,EAARA,SACAR,EAAe,EAAfA,gBACAC,EAAY,EAAZA,aACAQ,EAAc,EAAdA,eACGlX,GAAI,UAPPuH,UACAxuB,SACAu9B,eACAW,WACAR,kBACAC,eACAQ,mBAYMV,GAAkBt2B,EAAAA,EAAAA,UACpB,W,OAAMnH,IAAU,SAACo+B,GAAa,CAAC5P,QAASA,MACxC,CAACxuB,EAAQwuB,IAGb,OACI,SAAC6O,IAAS,gBACNI,gBAAiBA,EACjBC,gBAAiBA,EACjBH,aAAcA,EACdI,aAAcA,GACV1W,GAAI,C,SAEPiX,EAAS75B,KAAImP,SAAAA,G,OACV,SAACtP,GAAS,CAENq5B,aAAcA,EACdx6B,KAAMw6B,EAAev6B,GAAAA,GAAAA,UAAqBA,GAAAA,GAAAA,MAC1CwC,KAAM64B,GAAAA,GAAAA,MACNl7B,KAAMqQ,EAAG0B,KACT7R,QAAS,W,OA5BG,SAACmQ,GACK,oBAAnB2qB,EACPA,EAAe3qB,EAAG1O,IACW,oBAAf0O,EAAGnQ,SACjBmQ,EAAGnQ,UAwBoBi7B,CAAoB9qB,I,SAElCA,EAAGvQ,MAPCuQ,EAAG1O,WActBs5B,GAAgB,Y,IAAG5P,EAAO,EAAPA,Q,OAAuC,SAACruB,GAAAA,GAAU,CAACqF,KAAM64B,GAAAA,GAAAA,MAAgBt7B,KAAMC,GAAAA,GAAAA,UAAoBC,KAAMurB,K,kxCCrE3H,IAAMpvB,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKjBW,GAAAA,EAImBL,EAAAA,GAAAA,QAMZ4+B,GAAOl/B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAYKM,EAAAA,GAAAA,QAKZ6+B,GAAoBn/B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAKpB,Y,OAAQ,EAAL0R,SACF,Y,OAAS,EAANC,UACF,Y,OAAY,EAAT3T,UAA4B,QAAU,SAK/BsC,EAAAA,GAAAA,QCxCnB8+B,GAAW,SAACC,G,OAAkBC,MAAMC,KAAK,CAAEx6B,OAAQs6B,IAAS,SAACG,EAAGC,G,MAAO,CACzEh6B,GAAIg6B,EACJ/tB,MAAO+tB,EAAI,EAAI,MAAQ,YAyC3B,GArB0B,Y,IAAGzhC,EAAS,EAATA,UAAW6R,EAAQ,EAARA,SAC9BmB,GAAWhJ,EAAAA,EAAAA,GAAqB2d,EAAAA,EAAAA,SAChC+Z,GAAuB53B,EAAAA,EAAAA,UAAQ,W,OAC7BkJ,EApB6B,CACrC2uB,eAAgB,QAChBhuB,OAAQ,OACRiuB,QAASR,GAAS,IAGoB,CACtCO,eAAgB,QAChBhuB,OAAQ,OACRiuB,QAASR,GAAS,MAYd,CAACpuB,IAEL,OACI,UAAC6uB,GAAAA,GAAmB,CAAC7hC,UAAWA,E,WAC5B,SAACmhC,GAAiB,CACdztB,MAAOguB,EAAqBC,eAC5BhuB,OAAQ+tB,EAAqB/tB,OAC7B3T,UAAWA,E,SAEV0hC,EAAqBE,QAAQ56B,KAAI,Y,IAAGS,EAAE,EAAFA,GAAIiM,EAAK,EAALA,M,OAErC,SAACouB,GAAAA,GAAY,CAAUpuB,MAAOA,EAAOC,OAAQ,OAAQ9B,SAAU,MAA5CpK,QAE1BoK,M,uBClCAkwB,GAAsB,SAACC,EAAuBC,G,IAAgBC,EAAU,UAAH,6CAAG,IACjF,OAAOF,EAAO,GAAaA,OAAVC,EAAO,KAAUC,OAAPF,GAAe,OAARE,QAAYhiC,GAGrCiiC,GAA0B,SAACC,G,MACnC,CACGA,EAAQl/B,KACR6+B,GAAoBK,EAAQC,OAAQ,mBACpCN,GAAoBK,EAAQE,MAAO,YAAQF,EAAQG,SAAW,GAAK,KACnER,GAAoBK,EAAQG,SAAU,KACtCR,GAAoBK,EAAQI,KAAM,gBAAO,KAExCtsB,QAAOmB,SAAAA,G,QAAUA,KACjB1H,KAAK,MAGD8yB,IAAgCriB,EAAAA,GAAAA,KAzBT,SAACjgB,GACjC,OAAOA,EAAM6P,KAAKwV,kBA0BlB,SAACkd,GACG,IAAKA,EACD,OAAO,KAEX,IAAQN,EAAuBM,EAAvBN,QAASjc,EAAcuc,EAAdvc,UACjB,MAAO,CACHA,UAAW,GAAa,OAAVA,GACdic,QAASD,GAAwBC,OCpBhCO,GAAY,WACrB,IAAM9K,GAAS7L,EAAAA,EAAAA,aACT4W,GAAWhjC,EAAAA,EAAAA,IAAY6iC,IAevBI,GAA2B/4B,EAAAA,EAAAA,SAAQg5B,GAAAA,EAAO,IAChD,OACI,UAACj8B,GAAU,CAAC1B,UAAU,kB,WAClB,UAAC0B,GAAO,C,WACJ,SAACk8B,GAAAA,EAAY,CAAC56B,KAAM,MACpB,SAAC66B,GAAQ,CAAChjC,WAAY4iC,E,SACjBA,GACK,UAACtwB,GAAAA,GAAU,CAAC2wB,UAAQ,E,UAAC,8CAASL,EAASzc,WAAU,SAACvR,KAAE,IAAE,qDAAWguB,EAASR,WAC1E,WAGd,UAACc,GAAAA,EAAW,CAAC/6B,KAAM,Q,UACd06B,IACG,SAAClgC,GAAAA,EAAM,CAACqD,QAjBM,W,OAAMgJ,OAAOC,SAASW,QAChD,GAAiCZ,OAA9Byb,GAAAA,GAAkB,cAAqC,OAAzBzb,OAAOC,SAASE,YAgBGzD,MAAO,YAAavD,KAAM,Q,SAAS,2FAI/E,SAACxF,GAAAA,EAAM,CACHqD,QA/BK,YACjBoN,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,cACVjS,OAAQ,eAEZw2B,EAAOzsB,KAAK,mBA0BAM,MAAO,YACPvD,KAAM,Q,SACT,+H,8jCCzCJg7B,GAAsB,SAACC,G,OAChC,SAACC,G,OAA0BA,EAAWC,YAAcF,IAElDG,GAA4E,CAC9E,eAAgBJ,GAAoBluB,GAAAA,EAAAA,UACpC,qBAAsBkuB,GAAoBluB,GAAAA,EAAAA,YAwBjCuuB,IAAqCpjB,EAAAA,GAAAA,KAjCd,SAACjgB,GACjC,OAAOA,EAAM6P,KAAKyzB,kBAkClB,SAACC,G,IACkCA,EACzBC,EAzBY,SAACC,G,OAAwC,SAAC/rB,GAChE,OAAOA,IAAQ0rB,GAAsB1rB,IAC/B+rB,EAAuBrX,KAAKgX,GAAsB1rB,KAuBpBgsB,CADiB,QAAlBH,EAAQ,OAARA,QAAQ,IAARA,OAAAA,EAAAA,EAAUhkB,gBAAQ,IAAlBgkB,EAAAA,EAAsB,IAG/C7qB,EAAsBirB,GAAAA,QAChB,Y,IAAGjsB,EAAI,EAAJA,K,OAAW8rB,EAAwB9rB,MAC7C7Q,KAAI,SAACqQ,G,OAAU,kBACTA,GAAI,CACP5P,GAAIs8B,KAAS,mBASrB,MAAO,CACHlrB,MAAAA,EACAmrB,sBAPyBC,EAAAA,GAAAA,WACzBC,KAAMrrB,EAAO,OACb,Y,MAA2B,CAAEsrB,SAAlB,EAARA,SAAoC9iC,OAApB,EAANA,WAMb+iC,iBAAkBV,M,yJCjEvB,IAAMW,GAAqBriC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCoIlC,GAhHyB,WACrB,IAAyDpC,GAAAA,EAAAA,EAAAA,IAAY4jC,IAA7D3qB,EAAiDjZ,EAAjDiZ,MAAOmrB,EAA0CpkC,EAA1CokC,qBAAsBI,EAAoBxkC,EAApBwkC,gBAC/Bl3B,GAAWuD,EAAAA,EAAAA,OAEjBpM,EAAAA,EAAAA,YAAU,WACF+/B,GAEAl3B,GAASo3B,EAAAA,GAAAA,QAEd,CAACp3B,EAAUk3B,IAEd,IAAMG,GAAYzyB,EAAAA,EAAAA,cAAY,SAACzQ,GACvBA,IACA+R,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,YACVjS,OAAAA,MAGT,IAEGmjC,GAAqB1yB,EAAAA,EAAAA,cAAY,SAACrK,GACpC,IAAM4P,EAAO2sB,EAAqBv8B,GAElC88B,EAAUltB,EAAKhW,QACXgW,EAAK8sB,UACLj3B,GAAS+C,EAAAA,GAAAA,QAEd,CAAC/C,EAAU82B,EAAsBO,IAE9BjE,GAAe/c,EAAAA,EAAAA,QAAuB,MACtCkhB,GAAmBlhB,EAAAA,EAAAA,QAAuB,MAEdzjB,GAAAA,EAAAA,EAAAA,WAAS,GAApC4kC,EAA2B5kC,EAAe,GAA/B6kC,EAAgB7kC,EAAe,GACGA,GAAAA,EAAAA,EAAAA,WAAS,GAAtD8kC,EAA6C9kC,EAAe,GAAxC+kC,EAAyB/kC,EAAe,GAE7DkT,GAAWhJ,EAAAA,EAAAA,GAAqB2d,EAAAA,EAAAA,QAAoB,GAAO,GAE3Dmd,GAAahzB,EAAAA,EAAAA,cAAY,SAACC,GAC5B,IAAMrK,EAAOqK,EAAMgzB,eACbC,EAAct9B,EAAKu9B,SAAqB,OAAZ3E,QAAY,IAAZA,OAAAA,EAAAA,EAAclc,SAC1C8gB,EAAkBx9B,EAAKu9B,SAAyB,OAAhBR,QAAgB,IAAhBA,OAAAA,EAAAA,EAAkBrgB,SAEnD4gB,GACDL,GAAa,GAGZO,GACDL,GAAsB,KAE3B,KAEHM,EAAAA,GAAAA,IAAiBT,EAAWI,IAC5BK,EAAAA,GAAAA,IAAiBP,EAAoBE,GAErC,IAAMM,GAA8BtzB,EAAAA,EAAAA,cAAY,WAC5C+yB,GAAsBlkC,SAAAA,G,OAAcA,KAC/BikC,IACDxxB,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,cACVjS,OAAQ,kCAGjB,CAACujC,IAEES,GAA0BvzB,EAAAA,EAAAA,cAAY,WACxC6yB,GAAahkC,SAAAA,G,OAAcA,KACtB+jC,IACDtxB,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,YACVjS,OAAQ,wBAGjB,CAACqjC,IAEJ,OACI,UAAC79B,GAAqB,C,WAClB,SAACm5B,GAAS,CACNI,iBAAiB,SAACz9B,GAAAA,EAAM,CACpB2iC,SAAS,EACT55B,MAAO,YACPvD,KAAM,SACNwD,MAAM,SAACo3B,GAAAA,EAAY,CAAC56B,KAAM,OAE9Bm4B,aAAcmE,EACdvE,aAAcltB,EACdqtB,gBAAiBuE,EACjB5+B,QAASo/B,E,UAET,SAACzC,GAAS,OAEd,SAAC/B,GAAgB,CACbj+B,QAAQ,SAACA,GAAAA,EAAM,CACX2iC,SAAS,EACT55B,MAAO,YACPvD,KAAM,SACNwD,MAAM,SAAC45B,GAAAA,EAAI,CAACp9B,KAAM,OAEtBm4B,aAAcA,EACdJ,aAAcltB,EACd6tB,SAAUhoB,EACVwnB,gBAAiBqE,EACjB1+B,QAASq/B,EACTvE,eAAgB0D,EAChBj/B,YAAU,kB,YCxHbigC,GAAa,WACtB,IAAMC,GAAe7lC,EAAAA,EAAAA,IAAY8lC,GAAAA,IAE3B7G,GAAgB/0B,EAAAA,EAAAA,UAAQ,W,OAAM,SAAC67B,GAAgB,MAAI,IAEzD,OACI,sB,WACI,SAACC,GAAmB,CAChBvlB,MAAOolB,EACP3M,cAAe+F,KAEnB,SAACgH,GAAkB,CACfxlB,MAAOolB,EACP5G,cAAe,CAAEC,QAASD,GAC1B9uB,QAAQ,Q,wBC0CxB,GAnDY,WACR,IAyB8Dmc,EAzBvBV,GAAAA,EAAAA,GAAAA,MAAY,CAC/CU,eAAWhsB,EACXmsB,iBAAiB,GAFbH,EAA+BV,EAA/BU,UAAWG,EAAoBb,EAApBa,gBAKbyZ,GAAeh0B,EAAAA,EAAAA,cAAY,YAC7BsB,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,iBACVjS,OAAQC,EAAAA,GAAAA,YACRd,MAAO,YAEZ,IAEGsyB,EAAuB,OAAT5G,QAAS,IAATA,OAAAA,EAAAA,EAAW4G,YAE/B,OAAKzG,GAIE,SAACxlB,GAAAA,GAAuB,CAACtB,YAAU,a,UACtC,SAACoP,MAAG,CAAClN,GAAG,M,SACHykB,GACK,sB,WACE,SAACrX,EAAAA,EAAI,CAAC/O,KAAMomB,EAAU7J,IAAKtN,UAAQ,EAACD,UAAU,EAAOvP,YAAU,kB,UAC3D,SAACsB,GAAAA,GAAU,CAACb,QAAS8/B,EAAc1a,MAA2B,QAApBc,EAAAA,EAAUyG,kBAAU,IAApBzG,EAAAA,EAAwBA,EAAUd,UAE/E0H,IACG,SAACE,GAAAA,GAAkB,CACf3tB,QAAS,CACL4tB,QAAS,EACTC,OAAQ,G,UAGZ,SAAC7gB,GAAAA,EAA2B,CACxBwD,YAAaid,EAAYjd,YACzBsd,KAAML,EAAYK,KAClBC,QAAS,CACLrf,SAAU,OACVsf,OAAQ,YAM1B,SA5BH,M,YCtBF0S,GAA8B,CACvC,CACIngC,KAAM,6CACN+uB,eAAgB,MAChBC,KAAM,GACNC,KAAM,IAEV,CACIjvB,KAAM,mDACN+uB,cAAe,MACfC,KAAM,GACNE,MAAO,GAEX,CACIlvB,KAAM,6FACN+uB,cAAe,GACfC,IAAK,GACLC,KAAM,IAEV,CACIjvB,KAAM,eACN+uB,eAAgB,KAChBC,IAAK,GACLE,MAAO,IC/Bf,IACI,yBACA,4BACA,wBACA,yCACA,0CACA,kDACA,uCACA,6CCmEJ,GA1D4B,Y,IACxBkR,EAAqB,EAArBA,sBACAC,EAAY,EAAZA,aACG5iC,GAAK,UAFR2iC,wBACAC,iBAGMpO,GAAS7L,EAAAA,EAAAA,aACelsB,GAAAA,EAAAA,EAAAA,WAAS,GAAhC40B,EAAuB50B,EAAe,GAA7BomC,EAAcpmC,EAAe,GACvC+V,GAAcjW,EAAAA,EAAAA,IAAYkW,EAAAA,IAE1BqwB,GAAgBr8B,EAAAA,EAAAA,UAAQ,WAC1B,OAAO,UAACjD,GAAqB,C,WACzB,SAAC/D,GAAAA,GAAU,CACPgD,KAAM,GAAsBmgC,OAAnBlgC,GAAAA,IAAgC,OAAbkgC,GAC5B99B,KAAM64B,GAAAA,GAAAA,MACNt7B,KAAMC,GAAAA,GAAAA,UACNC,KAAM,iCACNL,YAAU,eAEZ6gC,GAAyBnB,SAASpN,EAAO1oB,YACvC,sB,WACI,SAACtI,GAAc,CACXsB,KAAM64B,GAAAA,GAAAA,MACNt7B,KAAMC,GAAAA,GAAAA,OACNC,KAAM,gEAAgBiQ,EACtB7P,QAASggC,EACTzgC,YAAU,oBACVg7B,aAAc,W,OAAM2F,GAAW,IAC/B1F,aAAc,W,OAAM0F,GAAW,MAGlCH,GAAa/+B,KAAI,SAACqQ,EAAMpQ,GACrB,gBAACJ,GAAe,CAEZ8tB,cAAetd,EAAKsd,cACpBC,IAAS,OAAJvd,QAAI,IAAJA,OAAAA,EAAAA,EAAMud,IACXE,MAAW,OAAJzd,QAAI,IAAJA,OAAAA,EAAAA,EAAMyd,MACbD,KAAU,OAAJxd,QAAI,IAAJA,OAAAA,EAAAA,EAAMwd,KACZH,QAASA,E,SAERrd,EAAKzR,MAPD,+BAAqC,OAANqB,eAazD,CAAC4O,EAAa6e,EAASsR,EAAuBC,EAAcpO,EAAO1oB,WAEtE,OACI,SAACy2B,IAAmB,kBACZviC,GAAK,CAETy1B,cAAeqN,E,UAEf,SAAC9J,GAAoB,Q,w0BC/D1B,IAAM15B,IAASX,EAAAA,EAAAA,SAAOc,GAAAA,IAAW,Y,6BAAlBd,C,MAKDY,SAAAA,G,OAAKA,EAAE6qB,aAAe,OAAS,OACnC7qB,SAAAA,G,OAAKA,EAAE6qB,aAAe,OAAS,WAC1C7qB,SAAAA,G,OAAKA,EAAE6qB,aAAeprB,EAAAA,EAAAA,QAAgBA,EAAAA,EAAAA,WAEnBslB,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,SACJ/kB,SAAAA,G,OAAKA,EAAE6qB,aAAe,OAAS,WAIvC4Y,GAAerkC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAUfskC,GAAQtkC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACRC,EAAAA,EAAAA,YAIIA,EAAAA,EAAAA,KAGQ0lB,EAAAA,EAAAA,QCczB,GAvCmB,Y,IACf4e,EAAuB,EAAvBA,wBACAN,EAAY,EAAZA,aACAtG,EAAY,EAAZA,aAEM9pB,GAAcjW,EAAAA,EAAAA,IAAYkW,EAAAA,IAE1B0wB,GAAgB10B,EAAAA,EAAAA,cAAY,W,IAACzQ,EAAS,UAAH,6CAAG,wHACxCs+B,GAAgBA,KAChBvsB,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,cACVjS,OAAAA,EACAb,MAAO,eAEZ,CAACm/B,IAEJ,OACI,UAAC94B,GAAe,C,WACZ,SAACA,GAAS,CACNnB,KAAMC,GAAAA,GAAAA,OACNwC,KAAM64B,GAAAA,GAAAA,MACNp7B,KAAM,gEAAgBiQ,EACtB7P,QAASugC,EACT9Y,cAAc,KAElB,SAAC5mB,GAAS,CACNnB,KAAMC,GAAAA,GAAAA,UACNwC,KAAM64B,GAAAA,GAAAA,MACNl7B,KAAMC,GAAAA,GAAmBkgC,EACzBjgC,QAAS,W,OAAMwgC,EAAc,0HAC7B/Y,cAAc,E,UAEd,SAAC5mB,GAAQ,CAACtB,YAAU,e,SAAe,yCCpBnD,GAnBiB,Y,IAAGghC,EAAuB,EAAvBA,wBACV1O,GAAS7L,EAAAA,EAAAA,aACTnW,GAAcjW,EAAAA,EAAAA,IAAYkW,EAAAA,IAEhC,OAAIswB,GAAyBnB,SAASpN,EAAO1oB,UAClC,MAIP,UAACxM,GAAAA,EAAM,CACH+I,MAAO,SACPvD,KAAM,SACNnC,QAASugC,E,UACZ,gEACe1wB,MCWxB,GA5B2B,Y,IACvBmwB,EAAqB,EAArBA,sBACAC,EAAY,EAAZA,aACG5iC,GAAK,UAFR2iC,wBACAC,iBAGMpH,GAAgC/0B,EAAAA,EAAAA,UAAQ,WAW1C,MAAO,CAAEg1B,SAVQ,SAAC2H,GAAQ,CAACF,wBAAyBP,IAUlCjH,gBARM,SAAC17B,GACrB,OAAO,SAACqjC,IAAU,QACdH,wBAAyBP,EACzBC,aAAcA,GACV5iC,QAKb,CAAC2iC,EAAuBC,IAE3B,OACI,SAACJ,IAAkB,kBACXxiC,GAAK,CACTw7B,cAAeA,EACf9uB,QAAQ,M,YClBP42B,GAAe,WACxB,IAAMlB,GAAe7lC,EAAAA,EAAAA,IAAYgnC,GAAAA,IAC3B,GAAa5a,EAAAA,EAAAA,aAAXC,OACkDnsB,GAAAA,EAAAA,EAAAA,WAAS,GAA5DqV,EAAmDrV,EAAe,GAA3C+mC,EAA4B/mC,EAAe,GACnE0mC,GAAgB10B,EAAAA,EAAAA,cAAY,W,IAACzQ,EAAS,UAAH,6CAAG,yHACxC+R,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,cACVjS,OAAAA,EACAb,MAAO,eAEZ,IACGsmC,GAAwBh1B,EAAAA,EAAAA,cAAY,WACtC00B,EAAc,gGACdK,GAAyB,KAC1B,IAKGxjC,EAA4B,CAC9Bw1B,eAJkB3lB,EAAAA,GAAAA,KAKlBmN,MAAOolB,EACPO,sBAAuBc,EACvBb,aANiB,aAAwC,OAA3Bc,mBAAmB9a,KASrD,OACI,sB,WACI,SAAC+a,IAAkB,UAAK3jC,KACxB,SAAC4jC,IAAmB,UAAK5jC,KACzB,SAAC6jC,GAAAA,EAAsB,CACnB/xB,sBAAuBA,EACvBD,uBAAwB,W,OAAM2xB,GAAyB,U,iJC9ChE,IAAMM,GAAkBnlC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCkB/B,GAXe,WACX,IAAM6pB,GAAmBjsB,EAAAA,EAAAA,IAAYksB,GAAAA,GAErC,OACI,UAACjlB,GAAkB,CAACtB,YAAU,SAAS6hC,YAAWvb,EAAmB,aAAe,e,WAChF,SAACwb,GAAG,IACHxb,GAAmB,SAAC2Z,GAAU,KAAK,SAACmB,GAAY,Q,0lBCVtD,IAAMp+B,IAAcC,EAAAA,EAAAA,mBAAiB,KAK3BvG,EAAAA,EAAAA,YACWA,EAAAA,EAAAA,QAUfqlC,GAAetlC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAEJ,Y,IAAG0xB,EAAO,EAAPA,Q,OAAcA,GAAoB,iBAGhD0H,GAAUp5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MC8BvB,GAjCsB,Y,IAClBulC,EAAQ,EAARA,SACA3pB,EAAQ,EAARA,SACA4pB,EAAU,EAAVA,WACA9T,EAAO,EAAPA,QACArO,EAAe,EAAfA,gBACAoiB,EAAgB,EAAhBA,iBACAniB,EAAe,EAAfA,gBACAzT,EAAQ,EAARA,SAEA,OACI,UAAChL,GAAe,CAAC6sB,QAASA,EAAS/O,IAAK8iB,E,WACpC,SAACl/B,EAAW,CAAC8mB,SAAUqY,EAAAA,MACvB,SAAC7gC,GAAc,KACf,SAAC8gC,EAAgB,CAACtY,SAAUqY,EAAAA,KAC3BH,IAAY,SAACzqB,GAAM,CAACvX,YAAU,eAC/B,UAACsB,GAAU,C,UACNgL,EAEA21B,IAAc,SAACppB,EAAAA,EAAM,CAClBiH,gBAAiBA,EACjBC,gBAAiBA,EACjB1H,SAAUA,QAIlB,SAACgqB,EAAI,CAACnY,QAAS7R,KAEf,SAACiqB,EAAAA,EAAmB,Q,uBCoBhC,GAxDa,Y,QACTvkC,MAAAA,OAAK,IAAG,oCAAQ,EAChB+e,EAAG,EAAHA,IACA+I,EAAK,EAALA,MACA6F,EAAW,EAAXA,YACA6W,EAAY,EAAZA,aAEMC,GAAWnoC,EAAAA,EAAAA,IAAYooC,EAAAA,IACvB,GAAahc,EAAAA,EAAAA,aAAXC,OACFgc,EAAmBhc,EAAOxc,MAAM,KAAK,GACrCy4B,EAAeJ,GAAgB,WAAsBG,OAAXF,GAA4B,OAAjBE,GACrDE,GAAgE,IAA3Clc,EAAOkL,QAAQ,uBAE1C,OACI,UAACiR,KAAQ,C,WACL,SAAC9kC,QAAK,C,SAAEA,IACP6kC,IAAsB,SAACE,IAAM,CAC1BnqB,IAAI,4DACJoqB,OAAK,KAET,SAACC,OAAI,CAACC,SAAS,UAAUC,QAAQ,aACjC,SAACF,OAAI,CAACjoC,KAAK,eAAemoC,QAAQ,aAClC,SAACF,OAAI,CAACjoC,KAAK,kBAAkBmoC,QAAQ,aACrC,SAACF,OAAI,CAACjoC,KAAK,eAAemoC,QAAQ,aAClC,SAACF,OAAI,CAACjoC,KAAK,kBAAkBmoC,QAAQ,8BACrC,SAACF,OAAI,CAACjoC,KAAK,sBAAsBmoC,QAAQ,sBACzC,SAACF,OAAI,CAACjoC,KAAK,cAAcmoC,QAAQ,aACjC,SAAC5wB,OAAI,CAACkS,IAAI,OAAOjkB,KAAK,sBAAsB4iC,MAAM,SAClD,SAAC7wB,OAAI,CAACkS,IAAI,OAAOjkB,KAAK,mBAAmBJ,KAAK,mBAC9C,SAACmS,OAAI,CAACkS,IAAI,mBAAmBjkB,KAAK,kCAClC,SAAC+R,OAAI,CAACkS,IAAI,WAAWjkB,KAAK,+BAC1B,SAAC6iC,WAAQ,C,UACL,SAAC9wB,OAAI,CAACkS,IAAI,aAAajkB,KAAK,gCAEhC,SAACyiC,OAAI,CACDjoC,KAAK,WACLmoC,QAAQ,4EAEZ,SAACF,OAAI,CAACC,SAAS,eAAeC,QAASnlC,KACvC,SAACilC,OAAI,CAACC,SAAS,WAAWC,QAASnlC,KACnC,SAACilC,OAAI,CAACjoC,KAAK,gBAAgBmoC,QAASnlC,KACpC,SAACilC,OAAI,CAACjoC,KAAK,gBAAgBmoC,QAAS,yCACnCpmB,IAAO,SAACkmB,OAAI,CAACC,SAAS,SAASC,QAASpmB,IACxC+I,IAAS,SAACmd,OAAI,CAACC,SAAS,WAAWC,QAASrd,IAC5C6F,IACG,sB,WACI,SAACsX,OAAI,CAACC,SAAS,iBAAiBC,QAASxX,KACzC,SAACsX,OAAI,CAACjoC,KAAK,cAAcmoC,QAASxX,KAClC,SAACsX,OAAI,CAACjoC,KAAK,sBAAsBmoC,QAASxX,OAGjDiX,IAAgB,SAACrwB,OAAI,CAACkS,IAAI,YAAYjkB,KAAMoiC,QC1DnDU,GAAsB,SAACC,GACzB,IAAMC,GAAcvlB,EAAAA,EAAAA,SAAOqM,EAAAA,EAAAA,KAAiB5gB,OAAO+5B,QAAU,GACnBjpC,GAAAA,EAAAA,EAAAA,WAAS,W,OAAMgpC,EAAY1kB,SAAWykB,KAAzE9d,EAAmCjrB,EAA6C,GAAjEkpC,EAAoBlpC,EAA6C,GAEjFmpC,GAAwBn3B,EAAAA,EAAAA,cAAY,WACtC,IAAMi3B,EAAU/5B,OAAO+5B,QAEvB,GAAIr+B,KAAKw+B,IAAIH,EAAUD,EAAY1kB,UAAYykB,EAAQ,CACnD,IAAMM,EAAqBJ,EAAUD,EAAY1kB,SAAW2kB,GAAWF,EACjEO,EAAiBL,EAAU,EAAIA,EAAU,EAE3CI,IAAuBpe,GACvBie,EAAiBG,GAGjBC,IAAmBN,EAAY1kB,UAC/B0kB,EAAY1kB,QAAUglB,MAG/B,CAACP,EAAQ9d,IAEZ,MAAO,CAAEA,cAAAA,EAAeke,sBAAAA,I,YCLtBI,GAAiB,CACnB,YACA,yBACA,aAGEC,GAAc/Z,KAAQ,W,OAAM,kCAAuD,C,sDAAEC,KAAK,IA0GhG+Z,IAAAA,OAAAA,GAAiB,uBAAuB,SAACp6B,GACrC,IAAOzH,GAA2B,OAAnByH,EAASM,MAAM,KAAI,MAC9B45B,GAAepE,SAASv9B,IAG5BsH,OAAOw6B,SAAS,EAAG,MAGvB,OApG4B,Y,IACvB33B,EAAQ,EAARA,SAAQ,IACR01B,SAAAA,OAAQ,IAAG,GAAI,MACfC,WAAAA,OAAU,IAAG,GAAI,MACjB5pB,SAAAA,OAAQ,IAAG,GAAI,EACf8V,EAAO,EAAPA,QAAO,IACPsL,yBAAAA,OAAwB,IAAG,GAAI,EAC5B37B,GAAK,UANRwO,WACA01B,WACAC,aACA5pB,WACA8V,UACAsL,6BAGKyK,GAAW7Z,EAAAA,EAAAA,KAEX1iB,GAAWuD,EAAAA,EAAAA,MAEkB7Q,GAAAA,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAM6P,QAAhED,EAA2BnQ,EAA3BmQ,OACF,GAD6BnQ,EAAnB4lB,gBACwB,IAAhCW,WAER9hB,EAAAA,EAAAA,YAAU,WACN,IAAMqlC,EAAsBC,aAAY,WACpCz8B,GCtDD,SAACA,EAA6BC,GAEjC,GADcA,IACJ6C,KAAKD,OAAQ,CACnB,IAAM0V,EAAclU,GAAAA,GAAAA,KAAYq4B,EAAAA,IAC1BC,EAAuBC,QAAQrkB,GAE/BC,EAAenU,GAAAA,GAAAA,KAAYw4B,EAAAA,IAC3BC,EAAwBF,QAAQpkB,GAEtC,IAAKmkB,EAAsB,CACvB,IAAI/G,EAAAA,GAAAA,MAAWkH,EACX,OAAOh7B,OAAOC,SAASW,QACnB,mCAA8D,OAA3BqgB,SAAShhB,SAASE,WAI7DjC,GAAS+C,EAAAA,GAAAA,aDuCd,KAEH,OAAO,WACHg6B,cAAcP,MAEnB,CAACx8B,KAEJ7I,EAAAA,EAAAA,YAAU,WACN,GAAK8hB,GAIDpW,GAAUoW,EAAW,CACrB,IAAM+jB,EAAaP,aAAY,WAC3B36B,OAAOm7B,IAAMn7B,OAAOm7B,GAvDvB,SAyDO,aACA,CAAEC,OAAQjkB,IAEd8jB,cAAcC,KACf,KAEH,OAAO,WACHD,cAAcC,OAGvB,CAACn6B,EAAQoW,KAEZ9hB,EAAAA,EAAAA,YAAU,WACFolC,GAAYtjB,IACZkkB,EAAAA,EAAAA,IAAK,CACDC,gBAAiBnkB,EACjBokB,QAASC,EAAAA,GACTC,YAAoE,aACpEC,OAAOlP,MAGhB,IAEH,IAAM,EDtEqB,W,IAA0C,G,uDAAF,IAArCqN,OACmBD,EAAAA,QADb,IAAG,MAAG,GAClC7d,EAAyC6d,EAAzC7d,cAAeke,EAA0BL,EAA1BK,sBAEjB0B,GAAWpnB,EAAAA,EAAAA,SAAO,GAgBxB,OAdAlf,EAAAA,EAAAA,YAAU,WACN,IAAMo7B,EAAW,WACRkL,EAASvmB,UACVumB,EAASvmB,SAAU,EACnBpV,OAAO47B,sBAAsB3B,GAC7B0B,EAASvmB,SAAU,IAM3B,OAFApV,OAAO8gB,iBAAiB,SAAU2P,GAE3B,W,OAAMzwB,OAAO67B,oBAAoB,SAAUpL,MACnD,CAACwJ,IAEG,CAAEle,cAAAA,GCmDiB+f,GAAlB/f,cAER,OACI,UAACggB,EAAAA,cAAa,CAAC5wB,MAAO6wB,E,WAClB,SAAClhB,IAAI,UAAKzmB,KACV,SAACwnB,EAAAA,EAAAA,SAAmB,CAAClmB,MAAO,CAAEq6B,yBAAAA,EAA0BjU,cAAAA,G,UACpD,UAACkgB,IAAG,gBACAvX,QAASA,EACT6T,SAAUA,EACVC,WAAYA,EACZ5pB,SAAUA,GACNva,GAAK,C,WAET,SAACimC,GAAW,KACZ,SAAC4B,GAAAA,EAAc,IAEdzB,IACG0B,EAAAA,GACM,SAAC9C,IAAM,CAACC,OAAK,EAACpqB,IAAI,8BAClB,sB,WACE,SAACmqB,IAAM,CAACC,OAAK,EAACpqB,IAAI,oCAClB,SAACmqB,IAAM,CAACC,OAAK,EAACpqB,IAAI,mCAClB,SAACmqB,IAAM,CAACC,OAAK,EAACpqB,IAAI,qCAG9B,SAACmqB,IAAM,CAAC5gC,GAAG,iB,SAAiB,oCAC3BoK,a,4WEvHrB,ICEA,EDWA,GAAe7P,EAAAA,EAAAA,UAbS,Y,IAAG6P,EAAQ,EAARA,SAAU,EAAF,EAAE1J,KAAAA,OAAI,IAAG,UAAO,EAAEnC,EAAO,EAAPA,QACjD,OACI,SAACrD,EAAAA,EAAM,CACH+I,MAAM,QACNvD,KAAMA,EACNwD,MAAM,SAACsS,MAAG,CAACvK,MAAO,GAAIC,OAAQ,GAAIuK,IAAKktB,IAAejtB,IAAI,2DAC1DnY,QAASA,E,SAER6L,OAKyB,Y,6BAAtC,C,qEEpBaw5B,EAAc,SAACC,EAAuBC,G,MAAyB,CACxE7lC,KAAM8lC,EAAAA,GAAAA,YACNrqC,QAAS,CACLmqC,aAAAA,EACAC,WAAAA,KCJKpc,EAAQ,W,MAAO,CACxBzpB,KAAM8lC,EAAAA,GAAAA,MACNrqC,QAAS,OCFAsqC,EAAc,W,MAAO,CAC9B/lC,KAAM8lC,EAAAA,GAAAA,aACNrqC,QAAS,OCQAuqC,EAA4B,W,yBAAM,4BAAMx+B,G,IAKpB8B,EAArBuT,EAAQpT,EAEVw8B,EAEArpB,E,oEARDtT,OAAQ,C,uDAIgBA,EAAAA,OAAOC,SAA5BsT,EAAqBvT,EAArBuT,OAAQpT,EAAaH,EAAbG,SAEVw8B,EAAYC,EAAAA,GAAsB,GAAmBz8B,OAZlC,uBAY2C,OAATA,GAAa,GAAYA,OAAToT,GAAkB,OAATpT,G,SAE7DnO,EAAAA,EAAAA,SCXgC,CACvD+L,IAAK,wBACLC,OAAQ,MACR6+B,cAAc,EACdC,UAAU,EACVt+B,YAAa,CACTu+B,YDK4DJ,K,QAA1DrpB,EAAW,EAAH,MAEDphB,WACT8N,OAAOC,SAASnJ,KAAOwc,EAASnhB,QAAQ6qC,QAExC9+B,EExBgC,CACpCxH,KAAM8lC,EAAAA,GAAAA,mBACNrqC,QAAS,QFwBL+L,EAASu+B,K,2DAhBoCv+B,G,oCGAxC++B,EAAuB,Y,QAAG9jC,KAAAA,OAAI,IAAG,UAAO,EAC3C+E,GAAWuD,EAAAA,EAAAA,MAEXzK,GAAU8L,EAAAA,EAAAA,cAAY,WACxB5E,EAASw+B,OACV,IAEH,OACI,SAACQ,EAAe,CACZ/jC,KAAMA,EACNnC,QAASA,E,SACZ,4ICRImmC,EAA0B,WACnC,IAAMj/B,GAAWuD,EAAAA,EAAAA,MACoB7Q,GAAAA,EAAAA,EAAAA,KAAY,SAACO,GAC9C,MAAQ,CACJisC,aAAcjsC,EAAMksC,eAAeD,aACnCb,WAAYprC,EAAMksC,eAAed,cAEtC76B,EAAAA,IALK07B,EAA6BxsC,EAA7BwsC,aAAcb,EAAe3rC,EAAf2rC,WAWtB,OACI,SAAC9xB,EAAAA,EAAY,CACTpT,OAAQklC,IAAea,EACvBt5B,QAPQ,WACZ5F,ECvB+B,CACnCxH,KAAM8lC,EAAAA,GAAAA,oBACNrqC,QAAS,Q,UD6BD,SAACiE,EAAAA,GAAe,CAACknC,SAAU,CAAC,IAAKC,QAAS,CAAC,I,UACvC,UAACC,EAAAA,EAAsB,CAACC,WAAY,SAAUC,MAAO,SAAUC,MAAO,E,WAClE,SAACC,EAAAA,GAAE,CAAC9gC,aAAa,E,SAAO,0MACxB,SAACwG,EAAAA,GAAU,C,SAAC,6dAGZ,SAAC4wB,EAAAA,EAAW,C,UACR,SAAC+I,EAAoB,CAAC9jC,KAAM,qB,gCR7BzC0kC,GAAAA,EACF,MAAG,6CADDA,EAEE,UAAG,2GAFLA,EAGH,KAAG,6E,CAHAA,IAAAA,EAAc,KAgBzB,IAAMpE,EAAoC,CACtClnB,QAAS,CACLje,MAAO,4JACPsC,MAAM,wBACNknC,UAAWr3B,EAAAA,EAAAA,QACXs3B,KAAM,CACF,CACIzsC,KAtBJ,6CAuBIoL,MAAO,YAInBmL,MAAO,CACHvT,MAAO,kKACPsC,MAAM,qB,SAAE,mcACRknC,UAAWr3B,EAAAA,EAAAA,MACXs3B,KAAM,CACF,CACIzsC,KAhCA,2GAiCAoL,MAAO,UAEX,CACIpL,KAnCL,6EAoCKoL,MAAO,eAInBshC,UAAW,CACP1pC,MAAO,2GACPsC,MAAM,qB,SAAE,yiBACRknC,UAAWr3B,EAAAA,EAAAA,QACXs3B,KAAM,CACF,CACIzsC,KA9CL,6EA+CKoL,MAAO,aAeVuhC,EAA4B,WACrC,IAAM//B,GAAWuD,EAAAA,EAAAA,MAEoC7Q,GAAAA,EAAAA,EAAAA,KAAY,SAACO,GAC9D,MAAQ,CACJF,OAAQE,EAAMksC,eAAepsC,OAC7BitC,gBAAiB/sC,EAAMksC,eAAea,gBACtCC,gBAAiBhtC,EAAMksC,eAAec,mBAE3Cz8B,EAAAA,IANKzQ,EAA6CL,EAA7CK,OAAQitC,EAAqCttC,EAArCstC,gBAAiBC,EAAoBvtC,EAApButC,gBAQ3BnnC,EAAU,SAAConC,GACb,OAAQA,GACJ,IA7EA,6CA8EI,OAAOlgC,EAASiiB,KACpB,IA9EI,2GA+EA,OAAOjiB,EAASw+B,KACpB,IA/ED,6EAgFK,OAAOr9B,EAAAA,EAAAA,KAAM,WACTnB,EAASiiB,KACTjiB,GAAS+Z,EAAAA,EAAAA,YAKnBomB,EAlCS,SAACH,EAA0BC,G,OAA6BD,EACrEzE,EAAiB,QACjB0E,EACI1E,EAAmB,UACnBA,EAAe,MA8BE6E,CAAWJ,EAAiBC,GAEnD,OACI,qB,UACI,SAACrqB,EAAAA,EAAW,CACRzc,OAAmB,WAAXpG,EACR6S,QAAS,W,OAAM9M,EA/FnB,+CAgGI1C,MAAO+pC,EAAe/pC,MACtBsC,KAAMynC,EAAeznC,KACrBF,KAAM2nC,EAAeP,U,UAErB,SAAC5J,EAAAA,EAAW,C,SACPmK,EAAeN,KAAK/lC,KAAIumC,SAAAA,G,OACrB,SAAC5qC,EAAAA,EAAM,CAEH+I,MAAO6hC,EAAI7hC,MACX1F,QAAS,W,OAAMA,EAAQunC,EAAIjtC,O,SAE1BitC,EAAIjtC,MAJAitC,EAAIjtC,gB,4CUxG/BktC,EAAoB,YAObC,EAAgB,WACzB,IAAIC,EAAAA,EAAAA,KACA,OAAO,EAGX,IAAMC,EAAU,IAAIz9B,EAAAA,EAEd09B,EAAYr8B,EAAAA,GAAAA,KAAYi8B,GACxB/nB,EAAclU,EAAAA,GAAAA,KAAYq4B,EAAAA,GAC1BiE,EAAkBpoB,EAAYqoB,UAAUroB,EAAY1e,OAfrC,GAegE0e,EAAY1e,QAEjG,OAAI8mC,IAAoBD,IAIxBD,EAAQx9B,KAAK,CACT7P,KAAMktC,EACN7oC,MAAOkpC,EACPx9B,OAAQ,CAAEC,OAAQC,EAAAA,OAGf,ICzBEw9B,EAAwB,SAACC,GAClC,IAAMC,EAAU18B,EAAAA,GAAAA,KAAY28B,EAAAA,IAEtBhhC,GAAWuD,EAAAA,EAAAA,MAEqB7Q,GAAAA,EAAAA,EAAAA,KAAY,SAACO,GAC/C,MAAQ,CACJ4P,OAAQ5P,EAAM6P,KAAKD,OACnB9P,OAAQE,EAAMksC,eAAepsC,OAC7BD,UAAWG,EAAMksC,eAAersC,aAErC0Q,EAAAA,IANKX,EAA8BnQ,EAA9BmQ,OAAQ9P,EAAsBL,EAAtBK,OAAQD,EAAcJ,EAAdI,WAQxBqE,EAAAA,EAAAA,YAAU,WACD0L,GAAWi+B,IAAwBC,IAAWjuC,GAIpC,YAAXC,GACAiN,E,kBCvBoB,4BAAMA,G,IAC5BoV,EAGIipB,E,iFAHavqC,EAAAA,EAAAA,YCDmB,CAC1C+L,IAAK,0BACLC,OAAQ,MACR8+B,UAAU,EACVD,cAAc,I,QDHRvpB,EAAW,EAAH,MAEDphB,YACHqqC,EAAakC,IAEnBvgC,EAASm+B,EAAY/oB,EAASnhB,QAAQmqC,aAAcC,K,2DANtBr+B,G,sCDyB/B,CAACA,EAAU+gC,EAASl+B,EAAQ/P,EAAWC,EAAQ+tC,KAElD3pC,EAAAA,EAAAA,YAAU,WG5BoB,IAAC8pC,EH6BtBp+B,GAAWi+B,IAIZC,IACA/gC,GGlCuBihC,EHkCKF,E,kBGlCqB,4BAAM/gC,G,IAGrDoV,E,wEAFNpV,ECR2B,CAC/BxH,KAAM8lC,EAAAA,GAAAA,cACNrqC,QAAS,O,SDQkBH,EAAAA,EAAAA,UEEFotC,EFF0C,CAC3DC,SAAUF,EACVG,gBAAgB,GEAwC,CAChEvhC,IAAK,6BACLC,OAAQ,QACR6+B,cAAc,EACdC,UAAU,EACVyC,KAAMC,KAAKC,UAAUL,M,QFPX9rB,EAAW,EAAH,MAKDphB,UACTgM,EGhBwB,CAChCxH,KAAM8lC,EAAAA,GAAAA,eACNrqC,QAAS,OHgBD+L,EAAiC,MAAxBoV,EAASzL,MAAMkE,KIlBE,CAClCrV,KAAM8lC,EAAAA,GAAAA,iBACNrqC,QAAS,MJgB0DsqC,K,iCEN3C,IAAC2C,I,uBFLsClhC,G,qCHmCvDqE,EAAAA,GAAAA,OAAc28B,EAAAA,QAEnB,CAACn+B,EAAQk+B,EAASD,EAAsB9gC,K,qBQnClCwhC,EAAsB,WAG/B,OAFqB9uC,EAAAA,EAAAA,KAAY,SAACO,G,OAAkBA,EAAMksC,eAAeD,gBAG9D,MAIP,UAACuC,EAAAA,GAAK,CAACjpC,KAAM,Q,WACT,SAAC4M,EAAAA,GAAU,C,SAAC,srBAGZ,SAACs8B,EAAAA,GAAY,C,UACT,SAAC3C,EAAoB,UCZxBf,EAAiB,WAC1B,IAAMmB,GCRCviC,EAAAA,EAAAA,UAAQ,W,MAA+C,4BAAzC+kC,EAAAA,EAAAA,IAAc,yBAAqD,IDYxF,OAFAd,EAAsB1B,GAEjBA,GAKD,sB,WACI,SAACF,EAAuB,KACxB,SAACc,EAAyB,OANvB,O,2mFEPR,IAAMtlB,EAAc,CACvBwC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRhW,OAAQ,QACRiW,QAAS,SAGAvoB,EAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAOE2lB,EAAY0C,OAIZ1C,EAAYtT,QAKxB3L,GAAY1G,EAAAA,EAAAA,SAAO+qB,EAAAA,GAAc,Y,6BAArB/qB,C,IASA2lB,EAAYtT,QAcxBy6B,GATY9sC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGAM,EAAAA,GAAAA,OAA2CA,EAAAA,GAAAA,QAMhDN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIP+sC,GAAkB/sC,EAAAA,EAAAA,SAAO2nB,EAAAA,GAAe,Y,6BAAtB3nB,C,KAIlBgtC,GAAgBhtC,EAAAA,EAAAA,SAAOyX,EAAAA,GAAa,Y,6BAApBzX,C,IAERG,EAAAA,EAAAA,kBAIR+vB,GAAalwB,EAAAA,EAAAA,SAAOitC,EAAAA,eAAc,Y,6BAArBjtC,C,IAGLG,EAAAA,EAAAA,kBAGR+sC,EAAaltC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMbmtC,EAAantC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACpBK,EAAAA,EAAAA,IAKO+sC,EAAmBptC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAC1BK,EAAAA,EAAAA,GAiBOgtC,EAAmBrtC,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,IAOP2lB,EAAYtT,S,iFCjH/Bi7B,EACQ,oBADRA,EAEQ,CACNC,GAAI,uBACJC,IAAK,yBAQb,EAJc,SAACC,EAAmBC,G,OAA6BD,GACzDE,EAAAA,EAAAA,IAAkBL,EAA4BG,EAAUC,KAAqBJ,EAA2BC,IACxGV,EAAAA,EAAAA,IAAcS,KAAgCA,EAA2BC,K,yMCkClEK,EAAoB,Y,IAAGlwC,EAAO,EAAPA,QAAS+B,EAAS,EAATA,UAAWF,EAAM,EAANA,OAChDkG,EAAoB,GACpB+C,EAAS,GAab,OAfkE,EAANnJ,SAG7CC,EAAAA,GAAAA,WACXmG,EAA2B,kBAAdhG,EAAmCyiB,OAAOziB,GAAhB,MAGvC/B,IACA8K,EAAS,SAGTjJ,IACAiJ,GAAU,GAA0BjJ,OAAvB7B,EAAU,MAAQ,IAAY,OAAP6B,IAGjCiJ,EAAS,GAA4C,OAAzCA,GAAU/C,EAAK,MAAS,OAAHA,GAAOA,GAAU,KAchDrG,EAA0B,Y,QACnCC,OAAAA,OAAM,IAAG,KAAE,EACXb,EAAK,EAALA,MAAK,IACLiB,UAAAA,OAAS,IAAG,OAAI,MAChB/B,QAAAA,OAAO,IAAG,GAAK,EACf6B,EAAM,EAANA,OACA6kB,EAAG,EAAHA,IAEMypB,EAAaxuC,IAAWI,EAAYH,EAAAA,GAAAA,SAAmBA,EAAAA,GAAAA,OAEzD8kB,GACAhT,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,gBACVjS,OAAQwuC,EACRrvC,MAAOA,GAASovC,EAAkB,CAAElwC,QAAAA,EAAS+B,UAAAA,EAAWF,OAAAA,EAAQF,OAAQwuC,IACxEzpB,IAAAA,KAGJhT,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,gBACVjS,OAAQwuC,EACRrvC,MAAOA,GAASovC,EAAkB,CAAElwC,QAAAA,EAAS+B,UAAAA,EAAWF,OAAAA,EAAQF,OAAQwuC,KAAiB,MAKxFC,EAAiC,Y,IAAG7vC,EAAM,EAANA,OAAQO,EAAK,EAALA,MAAOd,EAAO,EAAPA,QAAS6B,EAAM,EAANA,OAAQ6kB,EAAG,EAAHA,IACvE,GAAS2pB,EAAAA,EAAAA,IAAc9vC,GAArByW,GAERtV,EAAwB,CACpBC,OAAQqV,EAAKpV,EAAAA,GAAAA,SAAmBA,EAAAA,GAAAA,MAChCd,MAAAA,EACAd,QAAAA,EACA6B,OAAAA,EACA6kB,IAAAA,KAaK4pB,EAAY,SAAC3uC,EAAgBb,IACtC4S,EAAAA,EAAAA,IAAc,CACVrB,MAAOwB,EAAAA,GAAAA,QACPF,SAAUC,EAAAA,GAAAA,IACVjS,OAAAA,EACAb,MAAAA,KAaKyvC,EAAkB,SAACC,G,OAA4B,SAAC7uC,EAAgBb,GACzEwvC,EAAU3uC,EAAQb,GAAS,CAAC0vC,EAAiB1vC,GAAOmP,KAAK,QAYhDwgC,EAAgB,SAACC,EAA6BrgC,GACvD,IAAMsgC,EAAgBD,EAAY9uC,EAAAA,GAAAA,WAAqBA,EAAAA,GAAAA,WACjDgvC,EAAmBF,EAAY9uC,EAAAA,GAAAA,SAAmBA,EAAAA,GAAAA,MACxD,OAAOyO,EAASsgC,EAAgBC,I,mLC3HvBC,EAAiB,Y,IAAGC,EAAM,EAANA,OAAQ,EAAF,EAAEC,SAAAA,OAAQ,IAAG,UAAO,MAAEC,SAAAA,OAAQ,IAAG,UAAO,E,MAAQ,CACnF/rC,MAAO6rC,EAAOC,GACdjwC,MAAOgwC,EAAOE,KAaLC,EAAkB,Y,IAAGC,EAAK,EAALA,MAAO7lC,EAAI,EAAJA,K,OAAW6lC,EAAM5pC,KAAIwpC,SAAAA,G,OAAUD,GAAe,QACnFC,OAAAA,GACGzlC,QAEM8lC,EAA8B,Y,IAAGD,EAAK,EAALA,MAAO7lC,EAAI,EAAJA,K,OAAW6lC,EAAM5pC,KAAIwpC,SAAAA,G,OAfhC,Y,IAAGA,EAAM,EAANA,OAAQ,EAAF,EAAEC,SAAAA,OAAQ,IAAG,UAAO,MAAEC,SAAAA,OAAQ,IAAG,UAAO,E,MAAQ,CAC/F/rC,MAAO,CAAE8rC,SAAUD,EAAOC,GAAW3jC,WAAY0jC,EAAoB,aACrEhwC,MAAOgwC,EAAOE,IAakEI,EAA2B,QAC3GN,OAAAA,GACGzlC,QASMgmC,EAAiB,SAACC,GAG3B,IAFA,IAAMC,EAAM,GAEHxP,EAAI,EAAGA,EAAIuP,EAAIjqC,OAAQ06B,IAAK,CAEjCwP,EADYD,EAAIvP,KACL,EAGf,OAAO32B,OAAOC,KAAKkmC,IAQVC,EAAiB,SAACC,GAC3B,OAAOA,EAAK1hC,MAAM,KAAK2hC,UAAUzhC,KAAK,O,gJC3E1C,E,WAMO,SAAS0hC,EAAaC,EAAkBC,GAC3C,OAAID,EAAME,OAASD,EAAOC,KACfC,EAAYC,OAGJ,OAAfJ,EAAME,WAAgCtxC,IAAfoxC,EAAME,KACtBC,EAAYE,sBAGH,OAAhBJ,EAAOC,WAAiCtxC,IAAhBqxC,EAAOC,MAI/BF,EAAME,KAAOD,EAAOC,KAHbC,EAAYG,uBAKZN,EAAME,KAAOD,EAAOC,KACpBC,EAAYE,sBAGhBF,EAAYC,OAGhB,SAASG,EAA+BP,EAAkBC,GAC7D,OAAID,EAAM7vC,YAAc8vC,EAAO9vC,UACpBgwC,EAAYG,wBAGlBN,EAAM7vC,WAAa8vC,EAAO9vC,UACpBgwC,EAAYE,sBAGhBN,EAAaC,EAAOC,I,SArC1BE,GAAAA,EAAAA,EACqB,wBAAtBG,GAAAA,yBADCH,EAAAA,EAEK,OAAG,GAATC,SAFCD,EAAAA,EAGoB,sBAAG,GAAxBE,wB,CAHCF,IAAAA,EAAW,KA8CT,IAAM1B,EAAgB,SAAC9vC,GAC1B,MAAO,CACHA,OAAQA,EAASuB,EAAAA,EAAAA,QAAyBA,EAAAA,EAAAA,MAC1CkV,KAAMzW,IAID6xC,EAAuB,SAChCC,G,IACAC,EAAa,UAAH,6CAAG,GACbC,EAAU,UAAH,6CAAG,IAEV,OAAOF,IACFG,OAAM,SAACC,G,IACoBA,EAAY,EAApC,GAAIH,GAAc,IAAyE,MAAvD,QAAZG,EAAAA,EAAI7vB,gBAAQ,IAAZ6vB,GAAkB,QAAlBA,EAAAA,EAAc1mB,YAAI,WAAlB0mB,EAAkB,EAAEpyC,UAAW,IAAIo3B,QAAQ,mBAC/D,MAAMgb,EAGV,OAAO,IAAIC,SAAQC,SAAAA,G,OAAWx1B,YAAW,W,OAAMw1B,EAAQP,EAAqBC,EAAIC,EAAa,MAAKC,W,iFC9DvG,SAAS9M,EAAgBmN,EAAmBC,GAC/C,OAAOluC,EAAAA,EAAAA,YAAU,WAKb,OAJKiuC,GAEDriB,SAASH,iBAAiB,cAAeyiB,GAAa,GAEnD,W,OAAMtiB,SAAS4a,oBAAoB,cAAe0H,GAAa,MACvE,CAACA,EAAaD,M,iFCdfE,EACQ,yBADRA,EAEQ,CACNC,IAAK,2BACLC,IAAK,yBAGAx/B,EAAuB,W,OAAe27B,EAAAA,EAAAA,IAAc2D,KAAqCA,EAAgCC,M,sNCLzHnrB,EAAgB,SAAC7B,EAAaC,EAAcS,EAAWjjB,EAAMmkB,GACtE,IAAIxP,EACJ,OAAQwP,GACJ,KAAKsrB,EAAAA,GAAAA,OACD96B,EAAO+6B,EAAiBntB,EAAaC,EAAcS,EAAWjjB,GAC9D,MACJ,KAAKyvC,EAAAA,GAAAA,QACD96B,EAAOg7B,EAAqBptB,EAAaC,EAAcS,EAAWjjB,GAClE,MACJ,QACI2U,EAAOi7B,EAAoBrtB,EAAaC,EAAcS,EAAWjjB,GAGzE,OAAO2U,GAGEi7B,EAAsB,SAACrtB,EAAaC,EAAcS,EAAWjjB,GACtE,IAAI2U,EACJ,GAAI4N,IAAgBstB,KAAeC,KAAa,CAC5C,IAAMC,EAAa,CACfC,MAAOztB,EACP0tB,cAAeztB,EACf0tB,iBAAkBjtB,EAClBktB,QAAUnwC,EAAKowC,QAEbC,GAAcC,EAAAA,EAAAA,IAAaP,GACjCp7B,EAAO47B,EAAAA,EACHzkC,OAAOC,SAASnJ,KAAO,IACvB4tC,mBAAmBH,GAAe,KAClCC,EAAAA,EAAAA,IAAaG,EAAAA,SAEjB97B,EADOk7B,IACAa,EAAAA,GACAZ,IACAa,EAAAA,GAEAC,EAAAA,GAEX,OAAOj8B,GAGEg7B,EAAuB,SAACptB,EAAaC,EAAcS,EAAWjjB,GACvE,IAAI2U,EACJ,GAAI4N,GAAestB,IAAa,CAC5B,IAAME,EAAa,CACfC,MAAOztB,EACP0tB,cAAeztB,EACf0tB,iBAAkBjtB,EAClBktB,QAAUnwC,EAAKowC,QAEbC,GAAcC,EAAAA,EAAAA,IAAaP,GACjCp7B,EAAO47B,EAAAA,EACHzkC,OAAOC,SAASnJ,KAAO,IACvB4tC,mBAAmBH,GAAe,KAClCC,EAAAA,EAAAA,IAAaG,EAAAA,SAEjB97B,EAAO+7B,EAAAA,GAEX,OAAO/7B,GAGE+6B,EAAmB,SAACntB,EAAaC,EAAcS,EAAWjjB,GACnE,IAAI2U,EACJ,GAAI4N,GAAeutB,IAAY,CAC3B,IAAMC,EAAa,CACfC,MAAOztB,EACP0tB,cAAeztB,EACf0tB,iBAAkBjtB,EAClBktB,QAAUnwC,EAAKowC,QAEbC,GAAcC,EAAAA,EAAAA,IAAaP,GACjCp7B,EAAO47B,EAAAA,EACHzkC,OAAOC,SAASnJ,KAAO,IACvB4tC,mBAAmBH,GAAe,KAClCC,EAAAA,EAAAA,IAAaG,EAAAA,SAEjB97B,EAAOg8B,EAAAA,GAEX,OAAOh8B,GAGEk7B,EAAY,WACrB,OAAO/jC,OAAO+kC,UAAUC,UAAUC,MAAM,aAG/BC,EAAU,WACnB,OAAOllC,OAAO+kC,UAAUC,UAAUC,MAAM,YAG/BjB,EAAW,WACpB,OAAOhkC,OAAO+kC,UAAUC,UAAUC,MAAM,YACpCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,UACjCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,UAG5BjhC,EAAW,WACpB,OAAOhE,OAAO+kC,UAAUC,UAAUC,MAAM,aACpCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,WACjCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,YACjCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,UACjCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,UACjCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,gBACjCjlC,OAAO+kC,UAAUC,UAAUC,MAAM,mBAG5BpkB,EAAgB,WACzB,OAAO7gB,OAAO+kC,UAAUC,UAAUC,MAAM,kB,4DCjG5C,IAVc,Y,IAAGpiC,EAAQ,EAARA,SACqB/R,GAAAA,EAAAA,EAAAA,WAAS,GAApCq0C,EAA2Br0C,EAAe,GAA/Bs0C,EAAgBt0C,EAAe,GAMjD,OAJAuE,EAAAA,EAAAA,YAAU,WACN+vC,GAAa,KACd,IAEID,EAAYtiC,GAAW,0B,8NCW5BwiC,EAAqB,Y,IAAG1Z,EAAG,EAAHA,IAAK1rB,EAAQ,EAARA,SAAUqlC,EAAQ,EAARA,SACzC,GAAI3Z,IAAO+S,EAAAA,EAAAA,KAAgB,CACvB,IAAM,EAAU/S,EAAR4Z,IACR,GAAIA,EAAK,CACL,IAAM,EAAYA,EAAVvwB,MAEFxW,EAAc,IAAK6B,gBAAgB2U,GAAQnU,WAC3CokB,EAAWzmB,EAAc,GAAeA,OAAZyB,EAAS,KAAe,OAAZzB,GAAgByB,EAE9D0rB,EAAI6Z,UAAUF,EAAU,CAAErgB,SAAAA,IAC1B0G,EAAI8Z,YAGRlL,IAAAA,KAAYt6B,IAOPylC,EAAoB,Y,IAAG/Z,EAAG,EAAHA,IAAK1rB,EAAQ,EAARA,S,OAAyColC,EAAmB,CACjG1Z,IAAAA,EACA1rB,SAAAA,EACAqlC,SAAU,OAIDK,EAAuB,Y,IAAGha,EAAG,EAAHA,IAAK1rB,EAAQ,EAARA,S,OAAyColC,EAAmB,CACpG1Z,IAAAA,EACA1rB,SAAAA,EACAqlC,SAAU,OC9CDM,EAAqB,SAACvyB,GAC/B,IAEMwyB,EAFY,4BAESC,KAAKzyB,EAAIxS,YAEpC,OAAKglC,GAAYA,EAAS9tC,OAAS,EACxB,GAGJ8tC,EAAS,IAGPE,EAAe,SAAC/wB,GACzB,IAAM1U,EAAS0U,EAAM1U,OAAO0lC,OAAO,GAC7BC,EAAuC,GAC7C,GAAI3lC,EAKA,IAJA,IAAI4lC,EAAcC,EAAWC,EAEvBrwC,EADMuK,EAAOG,MAAM,KAAK,GACXA,MAAM,KAEhBgyB,EAAI,EAAGA,EAAI18B,EAAOgC,OAAQ06B,IAE/B0T,GADAD,EAAenwC,EAAO08B,GAAGhyB,MAAM,MACN4lC,SAAW,GACpCD,EAAaF,EAAavlC,KAAK,MAAQ,GACvCslC,EAAaE,GAAapO,mBAAmBqO,EAAWxlC,QAAQ,MAAO,MAG/E,OAAOqlC,GAGEzB,EAAe,SAACzuC,GACzB,IAAMuwC,EAAYxqC,OAAOC,KAAKhG,GAAQiC,KAAI6Y,SAAAA,GACtC,MAAO,GAAU9a,OAAP8a,EAAI,KAAe,OAAZ9a,EAAO8a,OAE5B,OAAOy1B,EAAUvuC,OAAS,GAAuB,OAApBuuC,EAAU3lC,KAAK,MAAS,IAG5C4lC,EAAc,SAACC,G,IAKXxmC,EAJb,IAAI0+B,EAAAA,EAAAA,KACA,OAAO,EAGX,IAAM5nC,EAAa,OAANkJ,aAAM,IAANA,QAAgB,QAAhBA,EAAAA,OAAQC,gBAAQ,IAAhBD,OAAAA,EAAAA,EAAkBlJ,KAC/B,QAAOA,GAAOA,EAAKm/B,SAASuQ,K,wKCpCzB,SAASjxB,IACZ,OAAO,W,OAAA,4BAAMrX,EAA6BC,G,IAChChN,EAQA2M,EACA2Y,EACA6kB,EAEA5pC,EAIM+0C,E,qEAhBNt1C,EAAQgN,KACH6C,KAAKD,OAAQ,C,oDAGpB5P,EAAM6P,KAAK0lC,wBAAyB,C,uDAIlC5oC,EAAa3M,EAAM+C,KAAKqiB,SAASzY,WACjC2Y,EAActlB,EAAM6P,KAAKyV,YACzB6kB,GAAkBqL,EAAAA,EAAAA,K,UAEL30C,EAAAA,EAAAA,YACf40C,EAAAA,EAAAA,GAAW9oC,EAAY2Y,EAAa6kB,EAAiB,CAAC,c,SADpD5pC,EAAO,EAAH,MAGDQ,WACC,EAAeR,EAAKS,QAAlBs0C,SACRvoC,GAAS2oC,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,GAAcL,MACH,QAA/B/0C,EAAKmW,MAAMkE,KAAKlL,YACvB3C,GAAS+C,EAAAA,EAAAA,MAGb/C,GAAS6oC,EAAAA,EAAAA,KAAsB,I,4DAvBtB7oC,EAA6BC,G,gCAAnC,K,mHCJE8C,EAAS,SAAC0qB,GACnB,OAAO,WACH,IAAI+S,EAAAA,EAAAA,KAAgB,CAChB,IAAK/S,EAMD,OALAqb,EAAAA,EAAAA,IACI,+TACA,CAAEC,MAAOC,EAAAA,EAAAA,aAEbC,QAAQt/B,MAAM,gUAIlB8jB,EAAIyb,SAAS,GAAiCzb,OAA9BnQ,EAAAA,GAAkB,cAAwB,OAAZmQ,EAAI4Z,IAAIlyB,WAEtDrT,OAAOC,SAASW,QAAQ,GAAiCX,OAA9Bub,EAAAA,GAAkB,cAA0B,OAAdvb,SAASnJ,U,mICpBjEmhB,EAAW,W,MAAO,CAC3BvhB,KAAM2wC,EAAAA,KAGGjmB,EAAY,W,MAAO,CAC5B1qB,KAAM4wC,EAAAA,KAGGnmB,EAAahvB,SAAAA,G,MAAY,CAClCuE,KAAM6wC,EAAAA,GACNp1C,QAAAA,K,2OCYS20C,EAAgB,SAACU,GAC1B,IAAM,EAAeA,EAAbf,SACR,MAAO,CACHn1B,MAAOm1B,EAASn1B,MAAMtZ,KAAI,SAACmP,G,OAAQ,kBAC5BA,GAAE,CACLxR,MAAOwR,EAAGsgC,kBAEdl2C,MAAOk1C,EAASl1C,MAAMyG,KAAI,SAACmP,G,OAAQ,kBAC5BA,GAAE,CACLxR,MAAOwR,EAAGsgC,oBASTnS,EAAkB,SAAChiB,EAAqBgoB,GACjD,OAAO,W,OAAA,4BAAMp9B,EAA6BC,G,IAChChN,EAEA2M,EACA2Y,EACAixB,EACAvwB,EAQAzlB,EAKgDA,EAA1CgiC,EAAUiU,EAASjT,EAAU+R,E,oEAlBnCt1C,EAAQgN,IAERL,GAAaM,EAAAA,EAAAA,GAAiBjN,GAC9BslB,EAActlB,EAAM6P,KAAKyV,YACzBixB,EAAav2C,EAAM6P,KAAK4mC,sBACxBzwB,EAAYmkB,IAAmBqL,EAAAA,EAAAA,KAEhC7oC,GAAe2Y,IAAeixB,EAAU,C,uDAI7CxpC,GAAS2pC,EAAAA,EAAAA,KAAsB,I,UAEZ71C,EAAAA,EAAAA,YACf40C,EAAAA,EAAAA,GAAW9oC,EAAY2Y,EAAaU,EAAW,CAAC,WAAY,UAAW,WAAY,c,aADjFzlB,EAAO,EAAH,MAIDQ,UAAW,C,gBACkCR,EAAAA,EAAKS,QAA/CuhC,EAA0ChiC,EAA1CgiC,SAAUiU,EAAgCj2C,EAAhCi2C,QAASjT,EAAuBhjC,EAAvBgjC,SAAU+R,EAAa/0C,EAAb+0C,UAErCpnC,EAAAA,EAAAA,KAAM,WACFnB,GAAS4pC,EAAAA,EAAAA,IAAkBpU,IAC3Bx1B,GAAS6pC,EAAAA,EAAAA,IAAiBJ,IAC1BzpC,GAAS8pC,EAAAA,EAAAA,IAAkBtT,IAC3Bx2B,GAAS2oC,EAAAA,EAAAA,IAAkBC,EAAcL,Q,2BAGV,QAA/B/0C,EAAKmW,MAAMkE,KAAKlL,WAAoB,C,uBACpC3C,GAAS+C,EAAAA,EAAAA,GAAOqS,I,4BAIhBorB,EAAAA,EAAAA,MACAyI,QAAQc,IAAIzI,KAAKC,WAAU,QAAE18B,MAAO,2GAAmCrR,EAAKmW,S,QAIpF3J,GAASgqC,EAAAA,EAAAA,KAAsB,I,4DAtCtBhqC,EAA6BC,G,gCAAnC,K,oNClCEytB,EAAY,W,MAAO,CAC5Bl1B,KAAMyxC,EAAAA,KAGGrc,EAAyB,WAClC,OAAO,SAAC5tB,GACJqE,EAAAA,GAAAA,KACI6lC,EAAAA,EACA,EACA,CACI9mC,OAAOC,EAAAA,GACPnN,OAAOoO,EAAAA,GACP9J,KAAM,MAGdwF,EAAS0tB,OAIX3rB,EAAW,CACb,IACA,cACA,YACA,iBACA,SACA,aACA,eACA,mBACA,iBACA,oBACA,mBAGSooC,EAAqB,CAC9B,WACA,gBACA,kBAGSC,EAAmB,CAC5B,eA6CSC,EAAqB,Y,IAAGjoC,EAAM,EAANA,OAAQH,EAAQ,EAARA,SAEnCqoC,EADS,IAAInoC,gBAAgBC,GACVmoC,IAAI,cAE7B,OAPgDlmC,EAAAA,GAAAA,KAAY6lC,EAAAA,KAOVI,GAN1B,SAACroC,G,OAAsBmoC,EAAiBrS,SAAS91B,GAMVuoC,CAAoBvoC,IAE1EwoC,EAAuB,SAACxoC,GACjC,OAAOF,EAASg2B,SAAS91B,IAAakoC,EAAmBpS,SAAS91B,IAGzDurB,EAAkB,Y,IAAGzO,EAAM,EAANA,OAAQ9c,EAAQ,EAARA,SACtC,OAAO,SAACjC,EAA6BC,GACjC,IAAMhN,EAAQgN,IACNjK,EAAuF/C,EAAvF+C,KAAQC,YAAW,EAAoEhD,EAAhE6P,KAAQD,EAAM,EAANA,OAAQ2V,EAAY,EAAZA,aAAcD,EAAW,EAAXA,YAAaD,EAAc,EAAdA,eAEpE,EAAariB,EAAXC,OAER8J,EAlD0B,Y,IAC9BuY,EAAW,EAAXA,YACAC,EAAY,EAAZA,aACAS,EAAS,EAATA,UACAhjB,EAAW,EAAXA,YACAgM,EAAQ,EAARA,SACA/L,EAAM,EAANA,OAEA,OAAO,SAAC8J,GACJ,IAAMmtB,EAAcgd,EAAmBpS,SAAS91B,GAE1C,MADAmY,EAAAA,EAAAA,IAAc7B,EAAaC,EAAcS,EAAWhjB,GAGpDm3B,EAAa+c,EAAmBpS,SAAS91B,GACxC,CACC0qB,WAAY,iEACZj0B,KAAM,kKACNE,KAAM,4BACNi0B,SAAU,6CACVD,IAAK,oCACL12B,OAAAA,QAEFlD,EACNgN,EAAS,CACLxH,KAAMkyC,EAAAA,GACNz2C,QAAS,CAAEk5B,WAAAA,EAAYC,UAAAA,MAyBlBud,CAA0B,CAAEpyB,YAAAA,EAAaC,aAAAA,EAAcS,UADhC,OAAdX,QAAc,IAAdA,OAAAA,EAAAA,EAAgBW,UACyChjB,YAAAA,EAAagM,SAAAA,EAAU/L,OAAAA,KAElG,IAAM00C,EAAkBP,EAAmB,CAAEjoC,OAAQ2c,EAAQ9c,SAAAA,IACvD4oC,EAAmBJ,EAAqBxoC,GAG1CjC,EADA4qC,IAAoB/nC,GAAUgoC,GACrB,CACLryC,KAAMsyC,EAAAA,IAILpd,Q,0FCxHV,IAAMqd,EAAoB,SAAC93C,GAC9B,OAAOA,EAAM6P,KAAKyV,aAGTqG,EAAyB,SAAC3rB,GACnC,QAASA,EAAM6P,KAAKyV,c,mECLjB,IAAM5lB,EAAa,SAACM,GACvB,OAAOA,EAAM6P,KAAKrQ,MAAQ,K,wVCIxBu4C,EAAY,Y,IAAG/3C,EAAK,EAALA,MAEjB,QAD4B,OAALA,QAAK,IAALA,OAAAA,EAAAA,EAAO+C,OAAQ,IAA9Bi1C,YACa,IAGnBC,EAAU,Y,IAAGj4C,EAAK,EAALA,MAEf,QAD6B,OAALA,QAAK,IAALA,OAAAA,EAAAA,EAAO+C,OAAQ,IAA/BC,aACc,MAGb6kC,EAAc,SAAC7nC,G,IACHA,EACrB,QAD0B,OAALA,QAAK,IAALA,GAAW,QAAXA,EAAAA,EAAO+C,YAAI,IAAX/C,OAAAA,EAAAA,EAAagD,cAAe6L,OAAOC,SAAS84B,UAAzDA,UACW,IAGVjU,EAAiB,SAAC3zB,GAC3B,OAAOi4C,EAAQ,CAAEj4C,MAAAA,KAGd,SAASk4C,EAAiBl4C,G,IACtB2zB,EAAP,OAA4B,QAArBA,EAAAA,EAAe3zB,UAAM,IAArB2zB,OAAAA,EAAAA,EAAuBwkB,OAG3B,IAAMC,GAAsBn4B,EAAAA,EAAAA,IAC/B,CAAC83B,IACDpxC,SAAAA,G,OAAUA,EAAOE,KAAI9D,SAAAA,G,MAAS,CAC1BowC,OAAQpwC,EAAKmwC,QACbjwC,OAAQF,EAAKE,OACb9C,KAAM4C,EAAK5C,KACXC,MAA2B,MAApB2C,EAAKs1C,WAAqBt1C,EAAKu1C,WAAa,OAA2Bv1C,OAApBA,EAAKs1C,WAAW,MAAoB,OAAhBt1C,EAAKu1C,YACnF5nB,WAAY3tB,EAAKw1C,kBAAkB3xC,OAAS,GAAK7D,EAAKw1C,kBAAoB,OAA2Bx1C,OAApBA,EAAKs1C,WAAW,MAA2B,OAAvBt1C,EAAKw1C,mBAC1GC,YAAaz1C,EAAK01C,aAClBN,OAAQp1C,EAAK21C,UACbC,gBAAiB51C,EAAK61C,wBAIxBC,EAAgB,Y,OAAa,EAAVC,YAEZC,GAA2B94B,EAAAA,EAAAA,IACpC,CAACg4B,EAASY,IACV,SAACxI,EAAQzlC,G,OAASwlC,EAAAA,EAAAA,KAAe,QAAEC,OAAAA,GAAWzlC,OAarCouC,IAPsB/4B,EAAAA,EAAAA,IAC/B,CAAC83B,EAAWc,IACZ,SAACpI,EAAO7lC,G,OAAS4lC,EAAAA,EAAAA,IAAgB,CAAEC,MAAAA,EAAO7lC,KAAAA,QAKAqV,EAAAA,EAAAA,IAC1C,CAAC83B,EAAWc,IACZ,SAACpI,EAAO7lC,G,OAAS8lC,EAAAA,EAAAA,IAA4B,CAAED,MAAAA,EAAO7lC,KAAAA,QAGnD,SAASquC,EAAwBj5C,G,IAC7BA,EAAW,EAAlB,OAAY,OAALA,QAAK,IAALA,GAAW,QAAXA,EAAAA,EAAO+C,YAAI,IAAX/C,GAAwB,QAAxBA,EAAAA,EAAagD,mBAAW,WAAxBhD,EAAW,EAAeiD,OAU9B,SAASuiB,EAAmBxlB,G,IAE3BA,EAAJ,OAAyC,MAAhC,OAALA,QAAK,IAALA,GAAW,QAAXA,EAAAA,EAAO+C,YAAI,IAAX/C,OAAAA,EAAAA,EAAaolB,SAASzY,YACf,6BAEA,gBASR,SAASgJ,EAAkB3V,GAC9B,OAAOA,EAAM+C,KAAKC,YAAY0S,aAAe,kCAiC1C,SAASgQ,EAAkB1lB,G,IACvBA,EAAW,EAAlB,OAAY,OAALA,QAAK,IAALA,GAAW,QAAXA,EAAAA,EAAO+C,YAAI,IAAX/C,GAAwB,QAAxBA,EAAAA,EAAagD,mBAAW,WAAxBhD,EAAW,EAAeylB,aAAczlB,EAAM+C,KAAKC,YAAYyiB,YAAc,0HAGjF,IAAM+K,GAAyBvQ,EAAAA,EAAAA,IAClC0T,GACA,SAAC5wB,GACG,IAAkCA,EAAAA,GAAQ,GAAlC2tB,EAA0B3tB,EAA1B2tB,WAAYwoB,EAAcn2C,EAAdm2C,UACdC,EAA6B,OAAVzoB,QAAU,IAAVA,OAAAA,EAAAA,EAAYjhB,QAAQ,MAAO,IAC9C9J,EAAO,QAAyB,OAAjBwzC,GACf1oB,EAAkE,MAAnC,OAAhB0oB,QAAgB,IAAhBA,OAAAA,EAAAA,EAAkB1pC,QAAQ,IAAc,OAAVypC,GAAa,KAEhE,MAAO,CAAEC,iBAAAA,EAAkBxzC,KAAAA,EAAM8qB,aAAAA,EAAcC,WAAAA,O,0JC9H1ChM,EAAqB,SAAC1kB,G,OAAkBA,EAAMo5C,KAAK9T,cAC1D+T,GAAiBp5B,EAAAA,EAAAA,IAAeyE,GAAoBC,SAAAA,GAAaA,OAAS,OAATA,QAAS,IAATA,OAAAA,EAAAA,EAAWiU,WAAY,MACxF0gB,GAAgBr5B,EAAAA,EAAAA,IAAeyE,GAAoBC,SAAAA,GAAaA,OAAS,OAATA,QAAS,IAATA,OAAAA,EAAAA,EAAW8S,UAAW,MAC/E8hB,GAAqBt5B,EAAAA,EAAAA,IAAeyE,GAAoBC,SAAAA,GAAaA,OAAS,OAATA,QAAS,IAATA,OAAAA,EAAAA,EAAW60B,eAAgB,MAIvGC,IAFuBx5B,EAAAA,EAAAA,IAAeyE,GAAoBC,SAAAA,G,QAAeA,KAEvD,SAAC+0B,G,OAA4Cz5B,EAAAA,EAAAA,IACjEyE,EACA20B,EACAC,GACA,SAAC30B,EAAWiU,EAAUnB,G,IAEI9S,EADtB,MAAO,CACH3d,KAAM2d,GAA8B,QAAlBA,EAAAA,EAAU+0B,UAAQ,IAAlB/0B,EAAAA,EAA2B,GAC7CiU,SAAAA,EACAnB,QAAAA,QAKC8N,EAAiBkU,EAAgB,YAEjChT,EAAmBgT,EAAgB,e,2OC/B1CE,EACW,mDADXA,EAEU,sCAOHC,EAAa,W,OAAA,+B,IAAQzP,EAAiBG,EAAauP,EACtDC,E,wEADwB3P,EAAe,EAAfA,gBAAiBG,EAAW,EAAXA,YAAauP,EAAM,EAANA,OACtDC,EAA0B,eAAhBxP,EAA+BqP,EAAwBA,E,SAEjEI,MAAM,GAAW,OAARD,EAAQ,4BAA2B,CAC9CjtC,OAAQ,OACRC,QAAS,CACL,eAAgB,mBAChB,gBAAmB,GAAmB,OAAhBq9B,IAE1BiE,KAAMC,KAAKC,UAAU,CAAEuL,OAAAA,M,2DATR,G,gCAAG,GCJ1BG,IAAAA,OAAaC,KAEb,IAEaC,EAAgB,CACzB5P,YAAa,aACbC,OAAO,EACPsP,OAAQ,GACR5uC,KAAAA,SAAK2G,GACD,IACc/C,EADRmiC,EAAOgJ,IAAAA,MAAYG,OAAO,uBAC1BC,EAAiC,QAAzBvrC,EAAM,OAANA,aAAM,IAANA,YAAAA,EAAAA,OAAQC,SAASE,gBAAQ,IAAzBH,EAAAA,EAA6B,GAE3C6Z,KAAKmxB,OAAO5uC,MAAK,kBAAK2G,GAAK,CAAEo/B,KAAAA,EAAMoJ,MAAAA,KAE/B1xB,KAAK6hB,OACLyL,QAAQc,IAAI,mBAAwB,OAAL9F,KAGvC9G,KAAAA,SAAKh6B,G,WACOi6B,EAAwEj6B,EAAxEi6B,gBAAiBC,EAAuDl6B,EAAvDk6B,QAAS,EAA8Cl6B,EAA9Co6B,YAAAA,OAAW,IAAG,eAAY,IAAoBp6B,EAAlBq6B,MAAAA,OAAK,IAAG,GAAK,EAE3E7hB,KAAK4hB,YAAcA,EACnB5hB,KAAK6hB,MAAQA,EAEbf,YACI,SAAC6Q,GACG,OAAO,WACH,GAAIA,EAAKR,OAAOjzC,OAAQ,CAIpB,IAHA,IAAM0zC,GAAe,OAAGD,EAAKR,QAGtBQ,EAAKR,OAAOjzC,OAAS,GACxByzC,EAAKR,OAAOU,M,SAGf,8B,0FAEaX,EAAW,CAAEzP,gBAAAA,EAAiBG,YAAAA,EAAauP,OAAQS,I,OAErD/P,GACAyL,QAAQc,IAAI,iB,gDAGhB1M,EAAQ,EAAD,IACP,EAAKyP,QAAS,OAAIQ,EAAKR,QAALQ,QAAa,OAAGC,I,wDATzC,KAVb,CAwBG5xB,MA/CO,O,sBCPT2hB,EAAsB,SAAC3zB,IAChC8jC,EAAAA,EAAAA,IAAiB9jC,EAAO,CACpBo/B,MAAOC,EAAAA,EAAAA,QACP0E,KAAM,CACFL,MAAO,qCACPM,OAAO,MCCNxQ,EAAOgQ,EAAAA,KAAAA,KAAgBA,GACvBjvC,EAAOivC,EAAAA,KAAAA,KAAgBA,IAEhCzqB,EAAAA,EAAAA,OACA5gB,OAAO8rC,cAAgBT,I,qMCQdjnC,EAAgB,Y,QAAyB5S,MAAAA,OAAK,IAAG,KAAE,EAAKuE,GAAM,UAArBvE,UAK5C,cAAewO,SACjB,OAA6B+rC,UAAY,IAG7C/rC,OAAO+rC,UAAU3vC,MAAK,kBACfrG,GAAM,CACT,QAAWwM,EAAOypC,MAAM/qB,SAAS1e,QAAqB,YACtD/Q,MAAAA,MCwFR,EAAG,W,SAjHYy6C,K,eACX,KAAQC,OAA+B9nC,EACvC,KAAOC,SAAW,G,MAFP4nC,EAAa,U,OAIxB,EAAOE,KAAP,SAAY95C,EAAgBb,GACxB,IAAKqoB,KAAKxV,SACN,MAAM,IAAI+nC,MAAM,wFAGpBvyB,KAAKqyB,OAAO,CACRnpC,MAAO,UACPsB,SAAUwV,KAAKxV,SACfhS,OAAAA,EACAb,MAAAA,KAIR,EAAU66C,cAAV,SAAyCt2C,GACrC8jB,KAAKqyB,OAAOn2C,IAQhB,EAAOu2C,OAAP,WAEI,IAAMC,GAAa,OAAA1yB,KAAK2yB,UAAqBP,GAEvCpyB,KAAK4yB,uBAAuB5yB,KAAK2yB,WACjC,GAEAE,EAAa7yB,KAAK4yB,uBAAuB5yB,MAE/C,MAAO,CACH8yB,WAAY9yB,KAAK+yB,YAAYt7C,KAC7B+S,SAAUwV,KAAKxV,SACfwoC,KAAMN,EACN1pC,SAAU6pC,IAIlB,EAAQD,uBAAR,SAA+BK,G,WAC3B,OAAOhxC,OAAOC,KAAK+wC,GAAUvxC,QAAgC,SAACiW,EAAKX,GAC/D,GAAIo7B,EAAcc,cAAc9W,SAASplB,GACrC,OAAOW,EAGX,IAAMw7B,EAASC,QAAQC,yBAAkDJ,EAAUj8B,GAEnF,GAAIm8B,EAAQ,CACR,GAA4B,oBAAjBA,EAAOr3C,MAAsB,CAEpC,IAAMw3C,EAAYH,EAAOr3C,MACpBkL,WACAokC,MAAM,wBAGLmI,EAAWD,EAAUn1C,KACvB,SAACq1C,G,OAAiBA,EACbzsC,QAAQ,QAAS,IACjBA,QAAQ,MAAO,IACfA,QAAQ,eAAgB,OAGjC,GAAIusC,EAAUp1C,OAAS,EACnBq1C,EAAShmC,SAAQ,SAACkmC,GACd,IAAMC,EAAQ,EAAKC,YAAYF,GAC/B97B,EAAI,GAAW+7B,OAAR18B,EAAI,MAAa,OAAT08B,EAAM,KAAQ,CACzBE,YAAaF,EAAM,GACnB1pB,OAAQ0pB,EAAMG,MAAM,WAGzB,CACH,IAAMH,EAAQ,EAAKC,YAAYJ,EAAS,IACxC57B,EAAIX,GAAO,CACP48B,YAAaF,EAAM,GACnB1pB,OAAQ0pB,EAAMG,MAAM,MAK5BV,EAAAA,EAAAA,GAAAA,EAAOr3C,MAAiBs2C,KACxBz6B,EAAIX,GAAOm8B,EAAOr3C,MAAM22C,UAIhC,OAAO96B,IACR,KAGP,EAAQg8B,YAAR,SAAoBD,GAChB,IAAMD,EAAOC,EAAM9sC,MAAM,OAIzB,GAFA6sC,EAAK,GAAKA,EAAK,GAAGK,WAAW,IAAM,IAE/BL,EAAKv1C,OAAS,EAAG,CAEjB,IAAM61C,EAA2BN,EAAK,GAAGrI,MAAM,MAM3CqI,EAAK,GAJJM,EAISN,EAAK,GAAGK,WAAW,IAAM,IAHzB,IAAY,OAARL,EAAK,IAO3B,OAAOA,I,gBAvFAP,IAAAA,gB,IAAX,WACI,MAAO,CAAC,SAAU,gB,EA0FvB,G,sBCxFH,EAkDE,a,sCAlDIc,I,MAEUxpC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAsB,aAAX,Y,uCAEdA,SAAWA,E,QAJlBwpC,EAAkB,U,OAOpBC,EAAAA,YAAAA,SAAYpZ,GACR7a,KAAKwyB,cAAgC,CACjCtpC,MAAO,UACPsB,SAAUwV,KAAKxV,SACfhS,OAAQ,SACR07C,UAAW,CACPC,OAAQ,CACJtZ,SAAAA,OAMhBuZ,EAAAA,aAAAA,SAAavZ,EAA4BwZ,GACrCr0B,KAAKwyB,cAAkC,CACnCtpC,MAAO,UACPsB,SAAUwV,KAAKxV,SACfhS,OAAQ,WACR07C,UAAW,CACPI,SAAU,CACNC,YAAa,CACT31C,GAAIy1C,GAERxZ,SAAAA,OAMhB2Z,EAAAA,gBAAAA,SAAgBC,G,IAA+BC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAoB,aAAL,MAC1D10B,KAAKwyB,cAAqC,CACtCtpC,MAAO,UACPsB,SAAUwV,KAAKxV,SACfhS,OAAQ,cACR07C,UAAW,CACPQ,aAAAA,EACAD,YAAAA,M,EAOd,CAlD+BrC,GAkDjC,K,mEC1EO,IAAM32B,EAAsB,SAACvf,G,MAAkC,CAClEgI,IAAK,qCACLC,OAAQ,OACR8+B,UAAU,EACVD,cAAc,EACd0C,KAAMC,KAAKC,UAAU1pC,M,mECLlB,IAAM8d,EAAe,SAAC9d,G,MAAkC,CAC3DgI,IAAK,6BACLC,OAAQ,OACR8+B,UAAU,EACVD,cAAc,EACd0C,KAAMC,KAAKC,UAAU1pC,M,mECLlB,IAAMyd,EAA6B,SAACzd,G,MAAkC,CACzEgI,IAAK,qCACLC,OAAQ,OACR8+B,UAAU,EACVD,cAAc,EACd0C,KAAMC,KAAKC,UAAU1pC,M,mCCblB,IA2FA,EAkEA,E,gEAlEKy4C,GAAAA,EAAAA,EACF,OAAG,GAATC,SADQD,EAAAA,EAES,kBAAG,GAApBE,oBAFQF,EAAAA,EAGU,mBAAG,GAArBG,qB,CAHQH,IAAAA,EAAc,K,SAkEd98B,GAAAA,EACC,UAATk9B,YADQl9B,EAEG,YAAXm9B,c,CAFQn9B,IAAAA,EAAgB,M,mECnJrB,IAAMk1B,EAAa,SACtB9oC,EACA2Y,EACA6kB,G,IACAwT,EAAyB,UAAH,6CAAG,CAAC,WAAY,UAAW,WAAY,Y,MACjD,CACZ/wC,IAAK,eACLC,OAAQ,MACRC,QAAS,CACL,WAAc,GAAc,OAAXH,GACjB,cAAiB,UAAsB,OAAZ2Y,GAC3B6kB,gBAAAA,GAEJ98B,YAAa,CACTswC,OAAAA,EACAC,YAAa,M,8FCtBd,E,gCAAKz3B,GAAAA,EACE,WAAG,cADLA,EAEE,WAAG,c,CAFLA,IAAAA,EAAoB,KAoBzB,IAAMD,EAAa,SAACvZ,EAAoBU,GAC3C,MAAO,CACHT,IAAK,mBACLC,OAAQ,MACRC,QAAS,CAAEH,WAAY,GAAc,OAAXA,IAC1BU,aAAa,UACNA,GACAwwC,EAAAA,EAAAA,U,8FC9BR,E,sDAAKx8C,GAAAA,EACD,QAAP+f,UADQ/f,EAEH,MAALqV,QAFQrV,EAGE,WAAG,c,CAHLA,IAAAA,EAAc,KCcnB,IAAMP,EAAsB,Y,IAAG0V,EAAe,EAAfA,gBAAiBhX,EAAI,EAAJA,KAAS4uC,GAAI,UAA9B53B,kBAAiBhX,SAInD,OAHIiwB,EAAAA,EAAAA,OAAmBjZ,IACnBA,EAAkB3H,OAAOC,SAASE,UAE/B,CACHpC,IAAK,iCACLC,OAAQ,OACR6+B,cAAc,EACd0C,KAAMC,KAAKC,WAAU,QACjB93B,gBAAAA,GACG43B,GACAyP,EAAAA,EAAAA,QAEP/wC,QAAS,CACL,eAAgBtN,M,6FCnBf4mB,EAAW,SAACgoB,GACrB,MAAO,CACHxhC,IAAK,oBACLC,OAAQ,OACRuhC,KAAMC,KAAKC,WAAU,UACdF,GACAyP,EAAAA,EAAAA,QAEPnS,cAAc,K,kCChBf,M,yCAAKr9B,GAAAA,EACL,IAAHyvC,MADQzvC,EAEJ,KAAJ0vC,OAFQ1vC,EAGF,OAAN2vC,SAHQ3vC,EAIJ,KAAJ4vC,OAJQ5vC,EAKL,IAAH6vC,MALQ7vC,EAMH,MAAL8vC,QANQ9vC,EAOD,QAAP+vC,U,CAPQ/vC,IAAAA,EAAc,M,kFCIbxN,EAAY,I,SAAIw9C,GAAoB,IAAIC,EAAAA,I,oHCE9C,IAAMnrC,EAAa,CACtBorC,gBAAiB,mBACjBC,kBAAmB,qBACnBC,sBAAuB,yBACvB5uC,KAAM,OACNy/B,SAAU,YACVoP,QAAS,UACTC,OAAQ,SACRC,eAAgB,kBAChBC,iBAAkB,qBAClBC,MAAO,QACPC,eAAgB,iBAChBC,eAAgB,kBAChBC,MAAO,QACPC,UAAW,oBACXC,SAAU,WACVC,aAAc,gBACdC,iBAAkB,oBAClBC,UAAW,YACXC,QAAS,UACTC,aAAc,iBACdC,OAAQ,SACRC,sBAAuB,0BACvBC,QAAS,UACTC,cAAe,kBACfC,kBAAmB,qBACnBC,YAAa,cACbC,cAAe,kBACfC,cAAe,kBACfC,WAAY,cACZC,gBAAiB,mBACjBC,aAAc,gBACdC,eAAgB,mBAChBC,kBAAmB,qBACnBC,KAAM,OACNC,YAAa,eACbC,YAAa,eACbC,aAAc,gBACdC,IAAK,MACLC,GAAI,KACJC,cAAe,iBACfC,YAAa,eACbC,cAAe,yBACfC,OAAQ,qBACRC,UAAW,aACXC,iBAAkB,oBAClBxF,YAAa,cACbyF,cAAe,iBACfC,QAAS,WAUAhgD,EAAU,CACnBigD,gBAAiB,oBAEjBC,qBAAsB,yBACtBC,MAAO,QACPC,WAAY,eACZC,kBAAmB,sBACnBC,aAAc,iBACdC,WAAY,cACZC,eAAgB,mBAChBC,iBAAkB,qBAClBC,YAAa,eACbC,cAAe,6BACfC,gBAAiB,sBACjBC,oBAAqB,wBACrBC,sBAAuB,0BACvBC,oBAAqB,wBACrBC,2BAA4B,gCAC5BC,wBAAyB,4BACzBC,aAAc,gBACdC,cAAe,kBACfC,kBAAmB,yBACnBC,iBAAkB,qBAClBC,eAAgB,mBAChBC,aAAc,yBACdC,eAAgB,mBAChBC,yBAA0B,8BAE1BlsC,MAAO,QACPmsC,aAAc,gBACdC,WAAY,kBACZC,SAAU,YAEVC,SAAU,WAEVC,KAAM,OACNC,gBAAiB,oBAEjBC,gBAAiB,mBAEjBC,cAAe,wBACfC,iBAAkB,qBAClBC,SAAU,YACVC,aAAc,gBACdC,WAAY,kBAEZvvC,MAAO,QAEPwvC,QAAS,UAETC,qBAAsB,0BACtBC,sBAAuB,2BAEvBC,eAAgB,kBAChBC,QAAS,UACTC,aAAc,oBACdC,eAAgB,kBAChBC,WAAY,cACZ5iC,QAAS,UACT6iC,mBAAoB,uBACpBC,sBAAuB,0BAEvBC,iBAAkB,qBAElBxwC,KAAM,QASGP,EAAiC,CAC1CgxC,QAAS,Y,gGCvI2BhzC,E,sBAA3BizC,EAAqB,W,OAA6B,QAAvBjzC,EAAAA,EAAAA,GAAAA,KAAY,mBAAW,IAAvBA,EAAAA,GAA2BkzC,EAAAA,EAAAA,MAUnE,IAkBaC,EAAe,WAExB,OADuCnzC,EAAAA,GAAAA,KAPf,YAZN,WAClB,IACI,IAGWvC,EAHL21C,GAV8B55C,EAUED,OAAOC,KAAKiE,QAVEizB,EAUO,YAThDl3B,EAAKohB,MAAK,SAACtM,G,OAAgBA,EAAI+kC,WAAW3iB,OACb,MAUxC,GAAI0iB,EACA,OAA2B,QAApB31C,EAAAA,OAAO21C,UAAa,IAApB31C,OAAAA,EAAAA,EAAsB61C,cAEnC,SACE,OAAOL,IAhBf,IAA4Cz5C,EAAgBk3B,EA4BnC6iB,IAAmBN,KAG/BxG,EAAmB,WAC5B,MAAO,CACH+G,YAAaL,O,iEClCb,IAAMM,EAAU,SAACC,GACrB,IAAMC,EAASC,SAASF,EAAIr1C,QAAQ,IAAK,IAAK,IAC9C,MAAO,GAA2B,OAAxB,GAAW,GAAM,IAAI,KAA0Bs1C,OAAvB,GAAW,EAAK,IAAI,KAAgB,OAAJ,IAATA,K,8HCKhDh9B,EAAgB,SAACk9B,EAAoBC,GAC9C,IAQsDC,EARhDA,GAAOx7C,EAAAA,EAAAA,UAA+B,WACxC,OAAI8lB,EAAAA,EAAAA,MAAkB5gB,OAAOu2C,WAClBv2C,OAAOu2C,WAAWH,GAElB,OAEZ,CAACA,IAE0BtlD,GAAAA,EAAAA,EAAAA,YAASulD,IAA4B,QAAbC,EAAI,OAAJA,QAAI,IAAJA,OAAAA,EAAAA,EAAME,eAAO,IAAbF,GAAAA,IAA/CG,EAAuB3lD,EAAuD,GAArE4lD,EAAc5lD,EAAuD,GAE/E6lD,GAAoB7zC,EAAAA,EAAAA,cAAY,SAACjN,GACnC6gD,EAAW7gD,EAAE2gD,WACd,IAoBH,OAlBAI,EAAAA,EAAAA,IAA0B,WACtB,GAAKN,EAUL,OANAI,EAAWJ,EAAKE,SAEZ,oBAAsBF,EAAKx1B,kBAC3Bw1B,EAAKx1B,iBAAiB,SAAU61B,GAG7B,WACC,oBAAsBL,EAAKza,qBAC3Bya,EAAKza,oBAAoB,SAAU8a,MAG5C,CAACL,EAAMK,IAEHF,GAmBEz7C,EAAuB,SAAC67C,EAA8BC,EAAyBT,GACxF,IAAMU,EAZe,SAACF,EAA8BC,GACpD,IAAMpyC,EAA+B,kBAAhBmyC,EAA2B,GAAe,OAAZA,EAAY,MAAMA,EACrE,MAAO,IAA4CnyC,OAAxCoyC,EAAgB,MAAQ,MAAM,YAAgB,OAANpyC,EAAM,KAU9CsyC,CAAiBH,EAAaC,GACzC,OAAO59B,EAAc69B,EAAIV,K,kJC9DhBx7B,EAAU,WACnB,IAAiD/pB,GAAAA,EAAAA,EAAAA,UAAS,CAAEmmD,MAAM,IAAzDA,EAAwCnmD,EAAwB,GAAhEmmD,KAAsBC,EAAkBpmD,EAAwB,GACnEqmD,GAAYr0C,EAAAA,EAAAA,cAAY,W,OAAM,IAAIsgC,SAAQC,SAAAA,GAC5C,IAAMjnB,EAAQ,IAAIg7B,MAClBh7B,EAAMi7B,QAAU,W,OAAMhU,GAAQ,IAC9BjnB,EAAMk7B,OAAS,W,OAAMjU,EAAwB,IAAhBjnB,EAAM1X,QACnC0X,EAAMlN,IAAM,yFACbg0B,OAAM,W,OAAM,OAAQ,IAYvB,OAVA7tC,EAAAA,EAAAA,YAAU,WACN,IAAMkiD,EAAkB,W,OAAA,8B,IACdC,E,iFAA4BL,I,OAA5BK,EAAsB,EAAH,KAGzBN,EAAe,CAAED,KAAMO,I,6FAJH,GAMxBD,MACD,IAEIE,GAQEC,EAAS,W,OAAA,8B,sEACdhZ,EAAAA,EAAAA,KAAgB,C,eAChB,MAAM,IAAI0N,MAAM,mN,gCAGb,IAAIhJ,SAAiBC,SAAAA,GACxB,IAAMjnB,EAAQ,IAAIg7B,MAClBh7B,EAAMi7B,QAAU,W,OAAMhU,GAAQ,IAC9BjnB,EAAMk7B,OAAS,W,OAAMjU,EAAwB,IAAhBjnB,EAAM1X,QACnC0X,EAAMlN,IAAM,yFACbg0B,OAAM,W,OAAM,M,6FAVG,I,mCC7Bf,M,yCAAKj9B,GAAAA,EAAAA,EACA,SAAG,GAAX8Q,WADQ9Q,EAAAA,EAEQ,iBAAG,GAAnB0xC,mBAFQ1xC,EAAAA,EAGN,GAAG,IAAL2xC,KAHQ3xC,EAAAA,EAIL,IAAG,IAANgR,MAJQhR,EAAAA,EAKG,YAAG,IAAd4xC,cALQ5xC,EAAAA,EAMC,UAAG,IAAZ6xC,YANQ7xC,EAAAA,EAOD,QAAG,IAAVwzB,UAPQxzB,EAAAA,EAQD,QAAG,IAAV8xC,UARQ9xC,EAAAA,EASI,aAAG,KAAf+xC,eATQ/xC,EAAAA,EAUF,OAAG,GAATgyC,S,CAVQhyC,IAAAA,EAAW,M,mECFvB,IAAMiyC,EAAmB,CAAC,SAAU,SAAU,QAAS,QAAS,SCiBhE,EAV4C,CACxCC,WAAY,CACRl6C,QCTa,CACjBm6C,GAAI,CAAE/yC,OAAQ,CAAEgzC,GAAI,GAAIC,GAAI,IAAMn9B,QAAS,CAAEk9B,GAAI,GAAIC,GAAI,KACzDC,GAAI,CAAElzC,OAAQ,CAAEgzC,GAAI,GAAIC,GAAI,IAAMn9B,QAAS,CAAEk9B,GAAI,GAAIC,GAAI,KACzDE,GAAI,CAAEnzC,OAAQ,CAAEgzC,GAAI,GAAIC,GAAI,IAAMn9B,QAAS,CAAEk9B,GAAI,GAAIC,GAAI,KACzDG,GAAI,CAAEpzC,OAAQ,CAAEgzC,GAAI,GAAIC,GAAI,IAAMn9B,QAAS,CAAEk9B,GAAI,GAAIC,GAAI,KACzDI,GAAI,CAAErzC,OAAQ,CAAEgzC,GAAI,GAAIC,GAAI,IAAMn9B,QAAS,CAAEk9B,GAAI,GAAIC,GAAI,KACzDK,GAAI,CAAEtzC,OAAQ,CAAEgzC,GAAI,GAAIC,GAAI,IAAMn9B,QAAS,CAAEk9B,GAAI,GAAIC,GAAI,MDIrD1hD,KEa8B,CAClCgiD,GAAI,CAAEP,GAAI,GAAIC,GAAI,IAClBO,GAAI,CAAER,GAAI,GAAIC,GAAI,IAClBQ,GAAI,CAAET,GAAI,GAAIC,GAAI,IAClBS,GAAI,CAAEV,GAAI,GAAIC,GAAI,MFflBU,QGR8C,CAC9C,OAAU,EACV,MAAS,EACT,KAAQ,EACR,IAAO,EACP,GAAM,GACN,EAAK,GACL,GAAM,GACN,EAAK,GACL,EAAK,GACL,GAAM,GACN,IAAO,GACP,KAAQ,GACR,MAAS,GACT,OAAU,GACV,QAAW,KHNXrgC,YDDsC,CACtCyC,SAAU88B,EAAiB,GAC3Be,OAAQf,EAAiB,GACzB78B,OAAQ68B,EAAiB,GACzB7yC,OAAQ6yC,EAAiB,GACzB58B,QAAS48B,EAAiB,ICH1BgB,MIHsC,CACtCC,MAAO,CACH,GAAM,EACN,EAAK,EACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,IAAO,GACP,KAAQ,KAEZC,WAAY,CACR,KAAQ,GACR,QAAW,O,6FCUnB,EA/B8B,CAC1Bj6B,MAAO,UACPC,cAAe,CACX7M,QAAS,UACT8M,QAAS,UACTxX,MAAO,UACP8I,KAAM,WAEV9G,MAAO,CACHyV,OAAQ,UACRC,OAAQ,WAEZ3oB,KAAM,CACF4oB,KAAM,UACNC,QAAS,UACTC,KAAM,UACN7oB,SAAU,UACV8oB,SAAU,WAEdC,OAAQ,CACJN,OAAQ,UACRG,QAAS,UACTI,UAAW,UACXhpB,SAAU,YACVipB,KAAM,YACNC,MAAO,YACP5P,WAAY,WAEhB6P,QAAS,a,WCpBb,GAL0B,kBACnBq5B,EAAAA,GAAW,CACdn5B,OAAQo5B,K,oQCiCN3Z,EAAQ,Y,IAAGhjC,EAAI,EAAJA,KAAMkG,EAAQ,EAARA,SAAU,EAAF,EAAEnM,KAAAA,OAAI,IAAG,SAAM,MAAEsnB,WAAAA,OAAU,IAAG,GAAK,EAAK3pB,GAAK,UAA3DsI,OAAMkG,WAAUnM,OAAesnB,eACPu7B,GAAmB,OAbtC,SAAC7iD,GASnB,MAR4B,CACxBmR,MAAO,CAAC2xC,EAAAA,EAAYvmD,EAAAA,EAAAA,SACpBsf,QAAS,CAACknC,EAAAA,EAAYxmD,EAAAA,EAAAA,WACtB0d,KAAM,CAAC+oC,EAAAA,EAAgBzmD,EAAAA,EAAAA,WACvB0mD,YAAa,CAACD,EAAAA,EAAgBzmD,EAAAA,EAAAA,aAC9B2mD,MAAO,CAACC,EAAAA,EAAQ5mD,EAAAA,EAAAA,SAGTyD,GAI0B6iD,CAAc7iD,GAAK,GAAjDojD,EAA8BP,EAAmB,GAAjCppC,EAAcopC,EAAmB,GAC7BQ,GAA0B,OAA1BA,EAAAA,SAAAA,QAAiBl3C,GAAS,GAA9C42B,EAAoBsgB,EAA0B,GAArCC,EAAWD,EAA0B,GAErD,OACI,UAACE,EAAAA,GAAO,CACJC,QAAS,GACTxjD,KAAMA,EACNsnB,WAAYA,EACZ7N,WAAYA,EACZha,UAAW9B,EAAM8B,U,WAEjB,UAACgkD,EAAAA,EAAa,CAACxc,MAAO,E,WAClB,SAACsc,EAAAA,GAAW,C,SACPt9C,GAAO,SAACA,EAAI,KAAM,SAACm9C,EAAc,MAErCrgB,KAEJugB,MAKApa,EAAe,Y,IAAG/8B,EAAQ,EAARA,SAC3B,GAAIk3C,EAAAA,SAAAA,MAAel3C,GAAY,EAC5B,MAAM,IAAIupC,MAAM,gFAGnB,OACI,SAAC6N,EAAAA,GAAc,C,UACX,SAAC7jD,EAAAA,GAAe,CAACknC,SAAU,CAAC,EAAG,EAAG,EAAG,IAAKC,QAAS,CAAC,GAAI,EAAG,G,UACvD,SAAC4c,EAAAA,EAAa,CAAC5jD,YAAW,oBAAqBmnC,MAAO,SAAUC,MAAO,E,SAClE96B,SAOfu3C,EAA4B,SAAC1jD,GAS/B,MARyC,CACrCmR,MAAO,SACP0K,QAAS,UACT5B,KAAM,YACNgpC,YAAa,YACbC,MAAO,SAGAljD,IAuBF2jD,EAAc,Y,IACvB3jD,EAAI,EAAJA,KACAmM,EAAQ,EAARA,SAAQ,IACRy3C,OAAU9oD,EAAK,EAALA,MAAOwF,EAAO,EAAPA,QAEjB,OACI,UAAC2oC,EAAK,CAACjpC,KAAMA,E,UACRmM,GACD,SAAC+8B,EAAY,C,UACT,SAACjsC,EAAAA,EAAM,CACH4C,YAAW,SACX4C,KAAM,QACNuD,MAAO09C,EAA0B1jD,GACjCM,QAASA,E,SAERxF,UAOR+oD,EAAe,Y,IAAG7jD,EAAI,EAAJA,KAAMmM,EAAQ,EAARA,SAAUm3C,EAAO,EAAPA,QAC3C,OACI,UAACra,EAAK,CAACjpC,KAAMA,E,UACRmM,GACD,SAAC+8B,EAAY,C,SACRoa,EAAQhiD,KAAI,WAAmDC,G,IAAhDzG,EAAK,EAALA,MAAOwF,EAAO,EAAPA,QAAS,EAAF,EAAEwjD,QAAAA,OAAO,IAAG,UAAO,EAAExpD,EAAS,EAATA,U,OAC/C,SAAC2C,EAAAA,EAAM,CACH4C,YAAW,UAAgB,OAAN0B,GAErBkB,KAAM,QACNuD,MAAOzE,EAAQuiD,EAAUJ,EAA0B1jD,GACnDM,QAASA,EACTyjD,QAASzpD,E,SAERQ,GANIyG,YAc7B,Q,6tEClJA,IAiBayiD,EAAY1nD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKZ4sC,EAAe5sC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACJM,EAAAA,GAAAA,OAEd6mD,EAAAA,EACA/jD,EAAAA,IAMGupC,GAAQ3sC,EAAAA,EAAAA,SAAO2nD,EAAAA,IAAiB,Y,6BAAxB3nD,C,IAWRC,EAAAA,EAAAA,aACW,Y,OAAa,EAAVkd,cAErB,Y,OAAa,EAAV6N,aAA+B1U,EAAAA,EAAAA,KAAG,IACrBpW,EAAAA,EAAAA,KAIZ0sC,EAIAua,EAAAA,EAKJO,GAQI,Y,IAAGhkD,EAAI,EAAJA,K,MAAoB,gBAATA,IAA0B4S,EAAAA,EAAAA,KAAG,IApErB,SAAC5S,GAC7B,OAAQA,GACJ,IAAK,OASL,QACI,OAAOzD,EAAAA,EAAAA,aAPX,IAAK,UACD,OAAOA,EAAAA,EAAAA,QAEX,IAAK,QACD,OAAOA,EAAAA,EAAAA,OA6DK2nD,CAAwBlkD,GAOlBzD,EAAAA,EAAAA,aAMNK,EAAAA,GAAAA,OAKCH,EAAAA,EAAAA,iBAOXysC,I,sECnGHhsC,EAGAA,E,ygCAJJ,IAQIA,EAOAA,EAIAA,EAKAA,EAIAA,EAOAA,EAIAA,EAKAA,EA5CEinD,EAAO7nD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACdY,SAAAA,G,OAAe,QAAVA,EAAAA,EAAEknD,gBAAQ,IAAVlnD,EAAAA,EAAc,MAGnBA,SAAAA,G,IAAKA,EAAAA,OAAoB,QAApBA,EAAc,QAAdA,EAAAA,EAAE01B,oBAAY,IAAd11B,OAAAA,EAAAA,EAAgBkR,YAAI,IAApBlR,EAAAA,EAAwB,MAGtBmnD,EAAgB/nD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBY,SAAAA,G,OAAe,QAAVA,EAAAA,EAAEknD,gBAAQ,IAAVlnD,EAAAA,EAAc,MAOnBA,SAAAA,G,IAAKA,EAAAA,OAA6B,QAA7BA,EAAc,QAAdA,EAAAA,EAAE01B,oBAAY,IAAd11B,OAAAA,EAAAA,EAAgBonD,qBAAa,IAA7BpnD,EAAAA,EAAiC,MAG/BqnD,EAAgBjoD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBY,SAAAA,G,OAAe,QAAVA,EAAAA,EAAEknD,gBAAQ,IAAVlnD,EAAAA,EAAc,KAIDX,EAAAA,GAAAA,MAClBW,SAAAA,G,IAAKA,EAAAA,OAA6B,QAA7BA,EAAc,QAAdA,EAAAA,EAAE01B,oBAAY,IAAd11B,OAAAA,EAAAA,EAAgBsnD,qBAAa,IAA7BtnD,EAAAA,EAAiC,MAG/BunD,EAAkBnoD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACzBY,SAAAA,G,OAAe,QAAVA,EAAAA,EAAEknD,gBAAQ,IAAVlnD,EAAAA,EAAc,MAOnBA,SAAAA,G,IAAKA,EAAAA,OAA+B,QAA/BA,EAAc,QAAdA,EAAAA,EAAE01B,oBAAY,IAAd11B,OAAAA,EAAAA,EAAgBwnD,uBAAe,IAA/BxnD,EAAAA,EAAmC,MAGjCynD,EAAkBroD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACzBY,SAAAA,G,OAAe,QAAVA,EAAAA,EAAEknD,gBAAQ,IAAVlnD,EAAAA,EAAc,KAIDX,EAAAA,GAAAA,MAClBW,SAAAA,G,IAAKA,EAAAA,OAA+B,QAA/BA,EAAc,QAAdA,EAAAA,EAAE01B,oBAAY,IAAd11B,OAAAA,EAAAA,EAAgB0nD,uBAAe,IAA/B1nD,EAAAA,EAAmC,MC1CxC2nD,EAAkB,Y,QAAGjyB,aAAAA,OAAY,IAAG,KAAE,MAAEkyB,wBAAAA,OAAuB,IAAG,GAAI,EAAKnnD,GAAK,UAA3Di1B,eAAmBkyB,4BA6C1C,OACI,SAACC,EAAAA,IAAU,QACPC,WA9CW,Y,IAAGnyB,EAAK,EAALA,MAAUl1B,GAAK,UAAfk1B,UAClB,OAAO,SAAC1xB,GAAO,QACXijD,SAAUvxB,EACVD,aAAcA,GACVj1B,KA2CJsnD,sBAvCsB,Y,IAAGpyB,EAAK,EAALA,MAAUl1B,GAAK,UAAfk1B,UAC7B,OAAO,SAAC1xB,GAAkB,QACtBijD,SAAUvxB,EACVD,aAAcA,GACVj1B,KAoCJunD,oBAhCoB,Y,IAAGryB,EAAK,EAALA,MAAUl1B,GAAK,UAAfk1B,UAC3B,OAAO,SAAC1xB,GAAgB,QACpBijD,SAAUvxB,EACVD,aAAcA,GACVj1B,KA6BJwnD,sBAzBsB,Y,IAAGtyB,EAAK,EAALA,MAAUl1B,GAAK,UAAfk1B,UAC7B,OACI,SAAC1xB,GAAkB,QACfijD,SAAUvxB,EACVD,aAAcA,GACVj1B,KAqBRynD,oBAhBoB,Y,IAAGvyB,EAAK,EAALA,MAAUl1B,GAAK,UAAfk1B,UAC3B,OACI,SAAC1xB,GAAgB,QACbijD,SAAUvxB,EACVD,aAAcA,GACVj1B,KAYRmnD,wBAAyBA,GACrBnnD,KAKhBknD,EAAgBQ,UAAY,CACxBzyB,aAAc0yB,IAAAA,MAAgB,CAC1Bl3C,KAAMk3C,IAAAA,OACNhB,cAAegB,IAAAA,OACfd,cAAec,IAAAA,OACfZ,gBAAiBY,IAAAA,OACjBV,gBAAiBU,IAAAA,SAErBR,wBAAyBQ,IAAAA,MAG7B,S,uGChEa1lD,EAAa,Y,IACtBE,EAAQ,EAARA,SAAQ,IACRjC,WAAAA,OAAU,IAAG,2DAAW,MACxB0nD,gBAAAA,OAAe,IAAG,uJAA4B,EAC9Cp5C,EAAQ,EAARA,SAEA,OACI,UAACq5C,EAAAA,GAAU,C,UAAC,kDACE3nD,EAAW,0GACrB,SAACwf,IAAC,CACEjd,KAAMN,EACNwM,OAAO,SACP+X,IAAI,+BACJxkB,YAAW,Y,UAEX,SAAC4lD,IAAC,C,SAAEF,MAEPp5C,O,4DCFb,IAnBkB,Y,IAAG2hB,EAAO,EAAPA,QAAS3hB,EAAQ,EAARA,SACpBu5C,GAAQthD,EAAAA,EAAAA,UAAQ,W,IACJ+H,EAARuZ,EAAgB,OAARvZ,QAAQ,IAARA,GAAe,QAAfA,EAAAA,EAAUxO,aAAK,IAAfwO,OAAAA,EAAAA,EAAiBqM,IAC/B,QAAIkN,GAGqB,QAFHA,EAAM3b,MAAM,KAAKirC,QAKxC,CAAC7oC,IAEJ,OAAO,IAAau5C,GACd,UAACC,UAAO,CAACC,WAAW,E,WAClB,SAACC,SAAM,CAACC,OAAQh4B,EAAS9tB,KAAK,eAC7BmM,MAEH,qB,SAAGA,M,q2JChBb,IAAM45C,EACc,UADdA,EAEU,UAIVC,EAAU,SAACvjD,GACb,OAAOugC,EAAMvgC,IAASugC,EAAAA,OAGpBijB,EAAoB,SAACC,GACvB,OAAOtzC,EAAAA,EAAAA,KAAG,IACGszC,EACDA,EACEA,IAoHLjpD,EAASX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOPY,SAAAA,G,OAAKA,EAAEipD,WACZ,GAA+B,OAA5BH,EAAQ9oD,EAAEuF,MAAM2jD,YAAY,MAC/B,GAA0EJ,OAAvE9oD,EAAEmpD,OAASL,EAAQ9oD,EAAEuF,MAAM2jD,YAAcJ,EAAQ9oD,EAAEuF,MAAM6jD,SAAS,OAA8B,OAAzBN,EAAQ9oD,EAAEuF,MAAM8jD,SAAS,SAI9FrpD,SAAAA,G,OAAKA,EAAE5C,UAAY,KAAO,OAMnC4C,SAAAA,G,MAAgB,UAAXA,EAAEuF,KAAmB9F,EAAAA,EAAAA,SAAiBA,EAAAA,EAAAA,UAC3CspD,EAAkB1pD,EAAAA,EAAAA,WAIAA,EAAAA,EAAAA,eAOlBW,SAAAA,G,OAAMA,EAAEiD,WAAajD,EAAE5C,YAAasY,EAAAA,EAAAA,KAAG,IAG3BqzC,EAAkB1pD,EAAAA,EAAAA,WACAA,EAAAA,EAAAA,UAKLypD,EAAQ9oD,EAAEuF,MAAM+jD,UAIzCtpD,SAAAA,G,OAAKA,EAAEiD,WAAYyS,EAAAA,EAAAA,KAAG,IAClBqzC,EAAkB1pD,EAAAA,EAAAA,UACAA,EAAAA,EAAAA,eAMtBW,SAAAA,G,OApKiB,SAACA,GACpB,OAAIA,EAAE8C,OAASC,EAASwmD,OACb,IAGJ7zC,EAAAA,EAAAA,KAAG,IACJqzC,EAAkB1pD,EAAAA,EAAAA,WAEAA,EAAAA,EAAAA,cAGjBW,EAAEiD,WAAajD,EAAE5C,YAAasY,EAAAA,EAAAA,KAAG,IAGtBqzC,EAAkB1pD,EAAAA,EAAAA,WAEAA,EAAAA,EAAAA,OAK9BW,EAAEiD,WAAYyS,EAAAA,EAAAA,KAAG,IACbqzC,EAAkB1pD,EAAAA,EAAAA,UAEAA,EAAAA,EAAAA,aA4IrBmqD,CAAexpD,MAGpBA,SAAAA,G,OA1IoB,SAACA,GACvB,OAAIA,EAAE8C,OAASC,EAAS0mD,UACb,IAGJ/zC,EAAAA,EAAAA,KAAG,IACJqzC,EAAkB1pD,EAAAA,EAAAA,aAEAA,EAAAA,EAAAA,iBAEjBW,EAAEiD,WAAajD,EAAE5C,YAAasY,EAAAA,EAAAA,KAAG,IAGtBqzC,EAAkB1pD,EAAAA,EAAAA,aAEAwpD,GAK9B7oD,EAAEiD,WAAYyS,EAAAA,EAAAA,KAAG,IACbqzC,EAAkB1pD,EAAAA,EAAAA,UAEAA,EAAAA,EAAAA,aAmHrBqqD,CAAkB1pD,MAGvBA,SAAAA,G,OAjHgB,SAACA,GACnB,OAAIA,EAAE8C,OAASC,EAAS4mD,MACb,IAGJj0C,EAAAA,EAAAA,KAAG,IACJqzC,EAAkB1pD,EAAAA,EAAAA,aAEAA,EAAAA,EAAAA,aAEjBW,EAAEiD,WAAajD,EAAE5C,YAAasY,EAAAA,EAAAA,KAAG,IAGtBqzC,EAAkB1pD,EAAAA,EAAAA,aAEAwpD,GAK9B7oD,EAAEiD,WAAYyS,EAAAA,EAAAA,KAAG,IACbqzC,EAAkB1pD,EAAAA,EAAAA,UAEAA,EAAAA,EAAAA,aA0FrBuqD,CAAc5pD,MAGnBA,SAAAA,G,OAxFgB,SAACA,GACnB,OAAIA,EAAE8C,OAASC,EAAS8mD,MACb,IAGJn0C,EAAAA,EAAAA,KAAG,IACJqzC,EAAkB1pD,EAAAA,EAAAA,cAIjBW,EAAEiD,WAAajD,EAAE5C,YAAasY,EAAAA,EAAAA,KAAG,IAGtBqzC,EAAkB1pD,EAAAA,EAAAA,WAM9BW,EAAEiD,WAAYyS,EAAAA,EAAAA,KAAG,IACbqzC,EAAkB1pD,EAAAA,EAAAA,gBAoErByqD,CAAc9pD,MAGZ+pD,EAAW3qD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKXY,SAAAA,G,OAAK8oD,EAAQ9oD,EAAEuF,MAAMykD,YACpBhqD,SAAAA,G,OAAK8oD,EAAQ9oD,EAAEuF,MAAMykD,YACfhqD,SAAAA,G,OAAKA,EAAEipD,WAAa,IAAM,SAQzBjpD,SAAAA,G,OAAKA,EAAEiqD,cAAgB,iBAAmB,kBAKlDC,EAAQ9qD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGLY,SAAAA,G,OAAKA,EAAE5C,UAAY,UAAY,YAUlC+sD,GAAY/qD,EAAAA,EAAAA,SAAO4K,EAAAA,GAAS,Y,6BAAhB5K,C,KCrOZ2D,EAAW,CACpBqnD,QAAS,UACTb,OAAQ,SACRE,UAAW,YACXE,MAAO,QACPE,MAAO,SAGEzrB,EAAW,CACpBisB,MAAO,QACPC,OAAQ,SACRC,MAAO,SAGEzkB,EAAQ,CACjB0kB,MAAO,CACHpB,SAAU,GACVC,SAAU,GACVH,YAAa,GACbc,SAAU,GACVV,MAAO,KAEXmB,OAAQ,CACJrB,SAAU,EACVC,SAAU,GACVH,YAAa,EACbc,SAAU,GACVV,MAAO,IAEXoB,MAAO,CACHtB,SAAU,EACVC,SAAU,GACVH,YAAa,EACbc,SAAU,GACVV,MAAO,MAOFppD,GAAa+kB,EAAAA,EAAAA,aAAW,WAgBlClD,G,IAsB6B+jB,EAA+BA,E,IArC3DhjC,KAAAA,OAAI,IAAG,YAAS,EAChByC,EAAI,EAAJA,KACAvC,EAAI,EAAJA,KACA2nD,EAAK,EAALA,MACAC,EAAW,EAAXA,YACAC,EAAQ,EAARA,SACAC,EAAS,EAATA,UACA5nD,EAAI,EAAJA,KACAX,EAAS,EAATA,UACAnF,EAAS,EAATA,UACA6F,EAAQ,EAARA,SACAgnD,EAAa,EAAbA,cACA7mD,EAAO,EAAPA,QACA6L,EAAQ,EAARA,SACG+X,GAAI,UAdPlkB,OACAyC,OACAvC,OACA2nD,QACAC,cACAC,WACAC,YACA5nD,OACAX,YACAnF,YACA6F,WACAgnD,gBACA7mD,UACA6L,aAGM87C,EAAc7nD,EAAO,IAAM,SAE3B+lD,EAAa4B,IAAa7nD,IAASiM,EAEzC,OACI,UAAChL,GAAS,gBACN8d,IAAKA,EACLqF,GAAI2jC,EACJjoD,KAAMA,EACNyC,KAAMA,EACNrC,KAAMA,EACNX,UAAWA,EACXnF,UAAWA,EACX6F,SAAUA,EACVG,QAASH,GAAY7F,EAAY,W,OAAM,MAAOgG,EAC9C6lD,WAAYA,EACZE,SAAU0B,GACN7jC,GAAI,C,UAEP4jC,GAAeC,IACZ,SAAC5mD,EAAW,CAACglD,WAAYA,EAAYgB,cAAeA,EAAe1kD,KAAMA,E,UACrE,UAACylD,MAAG,CAACl6C,MAAkB,QAAXg1B,EAAAA,EAAMvgC,UAAK,IAAXugC,OAAAA,EAAAA,EAAakkB,SAAUj5C,OAAmB,QAAX+0B,EAAAA,EAAMvgC,UAAK,IAAXugC,OAAAA,EAAAA,EAAakkB,SAAU74B,KAAK,M,WACnE,SAACzwB,QAAK,C,SAAEoqD,GAAaD,KACrB,SAACvjC,MAAG,CAACpkB,KAAM,GAAkB2nD,OAAfD,EAAY,KAAY,OAATC,WAKzC,SAAC5mD,EAAQ,CAACgnD,UAAWN,EAAOvtD,UAAWA,E,SACjCA,GAOI,SAAC6G,EAAY,CACX8sB,MAAOjuB,IAASC,EAASqnD,SAAWtnD,IAASC,EAASwmD,OAASlqD,EAAAA,EAAAA,UAAmBA,EAAAA,EAAAA,aAClFjC,WAAW,IARb6R,IAEI,sB,WACE,SAACO,OAAI,C,SAAExM,IACN2nD,IAAS,SAACn7C,OAAI,C,SAAEm7C,gBAY7CzqD,EAAWiV,YAAc,8B,8eCjGzB,IAAM+1C,EAAkB,SAAC3lD,GACrB,OAAQA,GACJ,IAAK,QACL,IAAK,SACD,OAAO,EACX,IAAK,QACD,OAAO,KAIN+6B,EAAclhC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKJ,Y,QAAG+rD,S,YAAQ,IAAG,eAAY,KAClC,Y,QAAG5lD,K,MAAqB,GAAyB,OAAtB2lD,OAApB,IAAG,UAAO,GAAgC,QAMvCxrD,EAAAA,GAAAA,QAEH,Y,QAAG6F,K,MAAqB,GAAyB,OAAtB2lD,OAApB,IAAG,UAAO,GAAgC,SAOjE,Y,QAAGE,SAAAA,OAAQ,IAAG,GAAK,MAAE7lD,KACnB,OAAO6lD,EACD,+DAEkC,OAAtBF,OAJK,IAAG,UAAO,GAIO,sFAMlC,O,8FCnDd,E,wQCuBaG,EAAmB,CAC5BC,SAAU,CACNr2C,KAAM,6DACNvU,MAAO,WACPyc,MAAO,CACHxC,KAAM4wC,IACNvoD,KAAMwoD,KAEVC,UAAW,YAEfC,WAAY,CACRz2C,KAAM,0EACNvU,MAAO,aACPyc,MAAO,CACHxC,KAAMgxC,IACN3oD,KAAM4oD,KAEVH,UAAW,cAEfI,WAAY,CACR52C,KAAM,+CACNvU,MAAO,mBACPyc,MAAO,CACHxC,KAAMmxC,IACN9oD,KAAM+oD,KAEVN,UAAW,cAEfO,cAAe,CACX/2C,KAAM,0EACNvU,MAAO,gBACPyc,MAAO,CACHxC,KAAM4wC,IACNvoD,KAAMwoD,KAEVC,UAAW,YAEfQ,gBAAiB,CACbh3C,KAAM,sEACNvU,MAAO,kBACPyc,MAAO,CACHxC,KAAMgxC,IACN3oD,KAAM4oD,KAEVH,UAAW,cAEfS,cAAe,CACXj3C,KAAM,kGACNvU,MAAO,gBACPyc,MAAO,CACHxC,KAAM4wC,IACNvoD,KAAMwoD,KAEVC,UAAW,YAEfU,gBAAiB,CACbl3C,KAAM,wEACNvU,MAAO,kBACPyc,MAAO,CACHxC,KAAMgxC,IACN3oD,KAAM4oD,KAEVH,UAAW,cAEfW,QAAS,CACLn3C,KAAM,kDACNvU,MAAO,UACPyc,MAAO,CACHxC,KAAM0xC,IACNrpD,KAAMspD,KAEVb,UAAW,Y,w5CD9Fdc,GAAAA,EACM,QAAG,UADTA,EAEM,QAAG,UAFTA,EAGK,OAAG,U,CAHRA,IAAAA,EAAQ,KAcN,IENA,EFMMC,EAAYptD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACnB,Y,MAAiC,eAArB,EAATqtD,YAA8C/2C,EAAAA,EAAAA,KAAG,QAO7Cg3C,EAAYttD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACnB,Y,MAAiC,eAArB,EAATqtD,YAA8C/2C,EAAAA,EAAAA,KAAG,QAKpD,Y,MAAiC,aAArB,EAAT+2C,YAA4C/2C,EAAAA,EAAAA,KAAG,QAKlD,Y,MAAiC,eAArB,EAAT+2C,YAA8C/2C,EAAAA,EAAAA,KAAG,QAIpD,Y,MAAiC,YAArB,EAAT+2C,YAA2C/2C,EAAAA,EAAAA,KAAG,QAI/B,Y,MAA6B,YAAnB,EAAPkxC,QAAsC2F,EAASI,QAAUJ,EAASnC,WACvE,Y,OAAW,EAARwC,YAMZC,EAAeztD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIf,Y,IAAG0R,EAAK,EAALA,M,OAAYA,EAAyB,kBAAVA,EAAqB,GAAS,OAANA,EAAM,MAAMA,EAAQ,UACzE,Y,IAAGC,EAAM,EAANA,O,OAAaA,EAA2B,kBAAXA,EAAsB,GAAU,OAAPA,EAAO,MAAMA,EAAS,UAGhF+7C,EAAa1tD,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAEFmtD,EAASQ,QAET,Y,MAA6B,YAAnB,EAAPnG,QAAsC2F,EAASnC,QAAUmC,EAASI,Y,SEpDjFvvC,GAAAA,EACA,SAARkuC,WADQluC,EAEE,WAAVsuC,aAFQtuC,EAGE,WAAVyuC,aAHQzuC,EAIK,cAAb4uC,gBAJQ5uC,EAKO,gBAAf6uC,kBALQ7uC,EAMK,cAAb8uC,gBANQ9uC,EAOO,gBAAf+uC,kBAPQ/uC,EAQD,QAAPgvC,U,CARQhvC,IAAAA,EAAU,KAqBtB,IAiEA,EAjE0B,Y,IACtBD,EAAK,EAALA,MAAK,IACLypC,QAAAA,OAAO,IAAG,YAAS,MACnBoG,WAAAA,OAAU,IAAG,GAAK,EAClB/3C,EAAI,EAAJA,KACAnE,EAAK,EAALA,MACAC,EAAM,EAANA,OACGiW,GAAI,UANP7J,QACAypC,UACAoG,aACA/3C,OACAnE,QACAC,WAGMk8C,EAAc5B,EAAUluC,GAExB+vC,GAAShmD,EAAAA,EAAAA,UAAQ,WACnB,GAAI8lD,EACA,OAAO,KAGX,IAAMG,EAA6B,YAAZvG,GAAmD,aAA1BqG,EAAYxB,UACtD2B,EAA+B,YAAZxG,GAAmD,eAA1BqG,EAAYxB,UAE9D,OAAI0B,EACOE,IAGPD,EACOE,IAGJL,EAAY9vC,MAAMxC,OAC1B,CAACisC,EAASqG,EAAYxB,YAEzB,OACIuB,GACM,SAAC9sD,EAAAA,GAAU,CACT4C,KAAMC,EAAAA,GAAAA,UACNG,KAAM+R,GAAcg4C,EAAYh4C,K,SACD,aAA1Bg4C,EAAYxB,UACP,oEACA,2EAGZ,SAACqB,GAAU,gBACT5pD,KAAM+R,GAAcg4C,EAAYh4C,KAChC2xC,QAASA,GACL5/B,GAAI,C,UAER,UAAC6lC,EAAY,CACT/7C,MAAOA,EACPC,OAAQA,E,WAER,SAACy7C,EAAS,CACNC,UAAWQ,EAAYxB,UACvB7E,QAASA,E,UAET,SAACvrC,MAAG,CAACC,IAAK4xC,EAAQ3xC,IAAI,oRAE1B,SAACmxC,EAAS,CACN9F,QAASA,EACT6F,UAAWQ,EAAYxB,UACvBmB,SAAUK,EAAY9vC,MAAMna,e,i+BCjFpD,IAAMuqD,EAAkB,CACpBC,GAAI,CACAnyC,I,MAAKoyC,GACLlxC,WAAY,UACZtH,KAAM,wBAEVy4C,IAAK,CACDryC,IAAKsyC,IACLpxC,WAAY,UACZtH,KAAM,wBAIRuF,EAAOpb,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KASPwuD,EAAOxuD,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KAKP6S,EAAO7S,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACPK,EAAAA,EAAAA,SAMYgB,SAAAA,G,OAASA,EAAMotD,IAAMxuD,EAAAA,GAAAA,QAIlBoB,SAAAA,G,OAASA,EAAMo1B,cAAgB,SAO9Ci4B,EAAY1uD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKlB,EA4BG,a,sCA5BG4c,I,gEACFgK,IAAAA,S,MAAAA,WACI,IAAyD,EAAAC,KAAKxlB,MAAK,EAAV,EAAjDoc,QAAAA,OAAO,IAAG,EAAA0wC,EAAe,EAAEQ,EAAsB,EAAtBA,OAAQxrD,EAAc,EAAdA,UAErC6jD,EADQl+C,OAAOC,KAAK0U,GACJzY,KAAItB,SAAAA,G,OACtB,UACOyqD,EAAgBzqD,GAChB+Z,EAAQ/Z,OAGnB,OACI,SAAC0X,EAAI,CAACjY,UAAWA,E,SAET6jD,EAAQhiD,KAAI,SAACqQ,EAAMpQ,G,OACf,SAACupD,EAAI,C,UACD,SAAC37C,EAAI,CAAC/O,KAAMuR,EAAKoqC,WAAQvhD,EAAYmX,EAAKQ,KAAM7R,QAASqR,EAAKoqC,MAAOgP,GAAIp5C,EAAK8H,WAAYsZ,aAAck4B,EAAe3+C,OAAQ,SAAU+X,IAAK,sBAA8E,OAA1C,yBAAd1S,EAAKQ,KAAkC,YAAc,IAASoS,aAAW,c,SAErO5S,EAAK4G,MAAO,SAACyyC,EAAS,CAACxyC,IAAK7G,EAAK4G,IAAKE,IAAI,mBAH3ClX,Y,EAchC,CA5BkBkiB,EAAAA,WA4BrB,O,6LCpFA,IAEA,GAAennB,E,QAAAA,UAFD,SAACqB,G,OAAyC,SAACsR,OAAG,kBAAKtR,GAAK,C,SAAG6gB,OAAO0sC,cAAcvtD,EAAM0X,YAExE,Y,6BAA5B,C,KCAA,ECA+B,SAACA,GAC9B,IAAM81C,EAAiB,SAACxtD,GACtB,OAAO,SAACytD,GAAS,QAAC/1C,KAAMA,GAAU1X,KAKpC,OAFAwtD,EAAe94C,YAAc,aAAkB,OAALgD,GAEnC81C,EDPT,CAFe,S,wGEUP,SAASz9C,EAAcrO,GAC3BiK,OAAO+rC,UAAY/rC,OAAO+rC,WAAa,GACvC,IAAMv6C,EAAQuE,EAAOvE,OAAS,GAC9BuE,EAAc,QAAI4oC,EAAAA,GAAAA,KAAa,eAE/B,IAAMojB,GAAkB,kBAAKhsD,GAAM,CAAEvE,MAAAA,IAErCwO,OAAO+rC,UAAU3vC,KAAK2lD,K,2YClBbC,IAAc,IAAI5/C,MAAO+G,cAEzB84C,IAAe,IAAI7/C,MAAO8/C,WAAc,EAExCC,EAAY,CACrB,eACA,eACA,eACA,eACA,eACA,eACA,gBAGSC,EAAkB,CAC3B,uCACA,6CACA,2BACA,uCACA,qBACA,2BACA,2BACA,uCACA,mDACA,6CACA,uCACA,8CAGSC,EAA2B,CACpC,uCACA,6CACA,iCACA,uCACA,qBACA,2BACA,2BACA,6CACA,mDACA,6CACA,uCACA,8CAISC,EAAgB,SAACngB,GAC1B,IAAMogB,EAAUpgB,EAAK1hC,MAAM,KAC3B,MAAO,CAAC8hD,EAAQ,IAAKA,EAAQ,IAAKA,EAAQ,KAIjCC,EAAiB,EAQjBC,EAAU,SAAC9sD,EAAOoC,GAC3B,MAAO,GAAS,OAANpC,GAAQ+sD,SAAS3qD,EAAQ,MAU1B4qD,EAAe,W,IAACC,EAAQ,UAAH,6CAAGX,EAAYY,EAAO,UAAH,6CAAGb,EACpD,OAAO,GAAK,IAAI5/C,KAAKygD,EAAMD,EAAQ,EAAG,IAAItgD,WASjCwgD,EAAmB,W,IAACF,EAAQ,UAAH,6CAAGX,EAAYY,EAAO,UAAH,6CAAGb,EACxD,OAAQ,IAAI5/C,KAAK,GAAWqgD,OAARI,EAAK,KAAqB,OAAlBJ,EAAQG,EAAO,GAAG,QAAMG,UAS3CC,EAAS7gB,SAAAA,GAClB,IAAM6gB,EAAkD,kBAAzClnD,OAAOmnD,UAAUpiD,SAASwsC,KAAKlL,GACxC+gB,EAAc/gB,IAASv0B,OAAOu1C,MAAMhhB,EAAKihB,WAE/C,OAAOJ,GAAUE,GAQRG,EAAgB,W,IAAClhB,EAAO,UAAH,6CAAG,IAAI//B,KACrC,OAAK4gD,EAAO7gB,GAIL,CACHsgB,GAAStgB,EAAK7/B,UAAW,GACzBmgD,GAAStgB,EAAK+f,WAAa,EAAG,GAC9B/f,EAAKh5B,eACPxI,KAAK,KAPI,MAeF2iD,EAAY,SAACthB,GACtB,MAAO,CACHA,EAAI,GACJygB,EAAQzgB,EAAI,GAAI,GAChBygB,EAAQzgB,EAAI,GAAI,IAClBrhC,KAAK,MAQE4iD,EAAc,SAACC,GACxB,OAAOA,EAAQ/iD,MAAM,KAAK2hC,UAAUzhC,KAAK,MAUhC8iD,EAAmB,SAACb,EAAOC,GAIpC,MAAO,CAAED,MAHS,EAAS,EAAKA,EAAQ,EAAI,GAGjBC,KAFL,EAAS,EAAKA,EAAOA,EAAO,IAWzCa,EAAe,SAACd,EAAOC,GAIhC,MAAO,CAAED,MAHS,EAAS,GAAMA,EAAQ,EAAI,EAGlBC,KAFL,EAAS,GAAMA,EAAOA,EAAO,IAWxC,a,IAACD,EAAQ,UAAH,6CAAGX,EAAYY,EAAO,UAAH,6CAAGb,EAGjC2B,EAAYhB,EAAaC,EAAOC,GAEhCe,EAAgBd,EAAiBF,EAAOC,GAIxCgB,EAAoBD,EAAgB,EAAI,EAAI,EAAIA,EAAgB,EAEhEE,EAAsC,EAAlB,GAAwBD,EAAoBF,GAGpBF,EAAAA,EAAiBb,EAAOC,GAAlED,EAA0Ca,EAA1Cb,MAAkBC,EAAwBY,EAAxBZ,KACwBa,EAAAA,EAAad,EAAOC,GAA9DD,EAA0Cc,EAA1Cd,MAAkBC,EAAwBa,EAAxBb,KAGpBkB,EAAgBpB,EAAaqB,EAAWC,GAGxCC,GAAiB,OAAI,IAAI5xB,MAAMuxB,IAAoB7rD,KAAI,SAACmsD,EAAGlsD,GAE7D,MAAO,CAACgsD,EAAeD,EADX/rD,EAAQ,GAAK8rD,EAAgBF,OAKvCO,GAAiB,OAAI,IAAI9xB,MAAMqxB,IAAY3rD,KAAI,SAACmsD,EAAGlsD,GAErD,MAAO,CAAC4qD,EAAMD,EADF3qD,EAAQ,MAKlBosD,GAAiB,OAAI,IAAI/xB,MAAMwxB,IAAoB9rD,KAAI,SAACmsD,EAAGlsD,GAE7D,MAAO,CAACqsD,EAAeC,EADXtsD,EAAQ,MAKxB,OAAO,OAAIisD,GAAAA,QAAgB,OAAGE,IAAgB,OAAGC,M,02EC3MrD,IAgBaG,EAAexxD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAKVC,EAAAA,EAAAA,QAOHoB,SAAAA,G,OAASA,EAAMowD,aAAe,OAAS,UAEhD7wD,SAAAA,G,OA9BkB,SAAC+B,GACrB,OAAQA,GACJ,IAAK,QACD,OAAO2T,EAAAA,EAAAA,KAAG,KAGd,IAAK,SACD,OAAOA,EAAAA,EAAAA,KAAG,KAId,QACI,MAAO,IAkBRo7C,CAAgB9wD,EAAE+wD,cAMhBC,EAAiB5xD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOjB6xD,EAAkB7xD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOlB8xD,EAAgB9xD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAMPo2B,KAUT27B,EAAgB/xD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAEvBK,EAAAA,EAAAA,EAEOJ,EAAAA,EAAAA,aAGA+xD,EAAmBhyD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAE1BK,EAAAA,EAAAA,EAEOJ,EAAAA,EAAAA,aAOAgyD,EAAiBjyD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAExBK,EAAAA,EAAAA,GAEOgB,SAAAA,G,OAASA,EAAM6wD,WAAajyD,EAAAA,EAAAA,aAAsBA,EAAAA,EAAAA,eAC7CoB,SAAAA,G,OAASA,EAAM8wD,WAAa,GAA0B,OAAvBlyD,EAAAA,EAAAA,gBAAuB,eAAeA,EAAAA,EAAAA,UACzEoB,SAAAA,G,OAASA,EAAM+wD,MAAQ,MAAQ,MAAanyD,EAAAA,EAAAA,YAQnCA,EAAAA,EAAAA,W,6TCjFvB,IAAM2J,GAAY5J,EAAAA,EAAAA,SAAO8xD,GAAc,Y,2BAArB9xD,C,KAOZqyD,GAAaryD,EAAAA,EAAAA,SAAO8xD,GAAc,Y,2BAArB9xD,C,KAOnB,EA+JG,a,sCA/JGsyD,I,uDAEFn0D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,QAAQ,CACJo0D,cAAe,GAAsCvD,OAAnCI,EAAAA,GAAgBH,EAAAA,GAAa,GAAG,KAAa,OAAVD,EAAAA,IACrDwD,aAAc,GACd7B,UAAW,GACXf,MAAOX,EAAAA,GACPY,KAAMb,EAAAA,GACNyD,QAAS,KACTC,QAAS,QAcbC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,oBAAmB,WACf,IAAwB,IAAKx0D,MAArByxD,EAAgB,EAAhBA,MAAOC,EAAS,EAATA,KACf,EAAKzxD,SAAS,CAAEm0D,cAAe,GAAiC1C,OAA9BT,EAAAA,GAAgBQ,EAAQ,GAAG,KAAQ,OAALC,SAGpExnB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,QAAO,WACH,IAAsC,IAAKhnC,MAAnCuxD,EAA8B,EAA9BA,QAASH,EAAqB,EAArBA,QAASC,EAAY,EAAZA,QAC1B,GAAIE,EAAS,CACT,IAAMC,GAAYvD,EAAAA,EAAAA,IAAcsD,GAChC,EAAKx0D,SAAS,CAAEuyD,WAAWmC,EAAAA,EAAAA,KAAMD,EAAU,IAAKA,EAAU,IACtDL,aAAcK,EACdjD,OAAQiD,EAAU,GAClBhD,MAAOgD,EAAU,GACjBJ,QAASA,GAAoB,KAC7BC,QAASA,GAAoB,OAAQ,W,OAAM,EAAKC,2BAEpD,EAAKv0D,SAAS,CAAEuyD,WAAWmC,EAAAA,EAAAA,YAInCC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,gBAAe,SAAClwD,GACZ,IAAwB,IAAK1E,MAArByxD,EAAgB,EAAhBA,MAAOC,EAAS,EAATA,KACT1gB,GAAOshB,EAAAA,EAAAA,IAAiBb,EAAOC,GACrChtD,EAAEmwD,kBACF,EAAK50D,SAAS,CAAEuyD,WAAWmC,EAAAA,EAAAA,KAAM3jB,EAAKygB,OAAQzgB,EAAK0gB,MAC/CD,OAAQzgB,EAAKygB,MACbC,MAAO1gB,EAAK0gB,OAAQ,W,OAAM,EAAK8C,0BAGvCM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,gBAAe,SAACpwD,GACZ,IAAwB,IAAK1E,MAArByxD,EAAgB,EAAhBA,MAAOC,EAAS,EAATA,KACT1gB,GAAOuhB,EAAAA,EAAAA,IAAad,EAAOC,GACjChtD,EAAEmwD,kBACF,EAAK50D,SAAS,CAAEuyD,WAAWmC,EAAAA,EAAAA,KAAM3jB,EAAKygB,OAAQzgB,EAAK0gB,MAC/CD,OAAQzgB,EAAKygB,MACbC,MAAO1gB,EAAK0gB,OAAQ,W,OAAM,EAAK8C,0BAGvCO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,gBAAe,SAACrwD,EAAG2vD,EAAc3uD,GAC7B,IAAM,EAAe,EAAKxC,MAAlB2B,SACJa,EACAhB,EAAEmwD,mBAEF,EAAK50D,SAAS,CAAEo0D,aAAAA,IAChBxvD,EAAS,CACLwvD,EAAa,IACb/C,EAAAA,EAAAA,IAAQ+C,EAAa,GAAI,IACzB/C,EAAAA,EAAAA,IAAQ+C,EAAa,GAAI,IAC3B7kD,KAAK,WASfwlD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,cAAa,SAAC99C,GACV,IAA6B,IAAKhU,MAA1BoxD,EAAqB,EAArBA,QAASC,EAAY,EAAZA,QAGXU,EADc,IAAIhkD,MAAKkhD,EAAAA,EAAAA,IAAUj7C,IACVg+C,UAEvBC,EAAeb,EAAU,IAAIrjD,KAAKqjD,GAAW,KAC7Cc,EAAeb,EAAU,IAAItjD,KAAKsjD,GAAW,KAE7Cc,EAAWF,EAAeA,EAAaD,UAAY,KACnDI,EAAWF,EAAeA,EAAaF,UAAY,KAEzD,OAAKZ,GAAWC,EACL,IAAce,GAAcL,EAAWK,GAE7Cf,GAAWD,EACL,IAAce,GAAcJ,EAAWI,GAE9Cd,IAAWD,IACH,EAAYe,GAAcJ,IAAaI,KAAe,EAAYC,GAAcL,IAAaK,OAM7GC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,YAAW,SAACr1C,EAAOs1C,EAAOt0B,EAAOuwB,EAAOgE,GAIpC,I,kBACI,IAAMv+C,EAAOgJ,EAAMohB,GACb57B,EAAW+rD,IAAUv6C,EAAK,KAAO,EAAK89C,WAAW99C,GACjDw+C,EAAUx+C,EAAK1H,KAAK,KAC1BmV,EAAU1Z,MAAK,SAAC6oD,EAAc,CAC1BjuD,QAAS,SAACnB,G,OAAM,EAAKqwD,aAAarwD,EAAGwS,EAAMxR,IAC3CquD,WAAYruD,EACZuuD,MAAOwB,EAAI,KAAOv+C,EAAK,IAAMu+C,EAAI,KAAOv+C,EAAK,IAAMu+C,EAAI,KAAOv+C,EAAK,GACnE88C,WAAY2B,IAAoBD,E,SAAUx+C,EAAK,IAJf,OAAS,OAAFoqB,MAPzC,EAAmB,EAAKthC,MAAtBq0D,aACF1vC,EAAY,GACZgxC,EAAkBtB,EAAa7kD,KAAK,KACjC8xB,EAAIk0B,EAAOl0B,EAAIk0B,EAAQt0B,EAAOI,IAAI,EAAD,GAU1C,OAAO3c,K,oBA3GXmX,IAAAA,oB,MAAAA,WACIpT,KAAKwhB,S,CAGTnO,IAAAA,qB,MAAAA,SAAmB65B,GACf,IAAM,EAAcltC,KAAKxlB,MAAjBuxD,QACJmB,EAAUnB,UAAYA,GACtB/rC,KAAKwhB,S,CAuGbzhB,IAAAA,S,MAAAA,W,WACgD,EAAAC,KAAK1oB,MAAzCo0D,EAAoC,EAApCA,cAAe5B,EAAqB,EAArBA,UAAWf,EAAU,EAAVA,MACE,EAAA/oC,KAAKxlB,MAAjCowD,EAA4B,EAA5BA,aAAcE,EAAc,EAAdA,UAChBqC,EAAW7E,EAAAA,GAAAA,KAAc95C,SAAAA,G,OAAQ,SAAC28C,EAAgB,C,SAAa38C,GAAPA,MACxD4+C,EAAQ,GAEd,GAAItD,EAAU5rD,OAAS,EAQnB,IAPA,IAAMmvD,EAAYtE,GAASX,EAAAA,GACrB2D,EAAU,IAAIxjD,KACdwkD,EAAM,CACRhB,EAAQz8C,cACRy8C,EAAQ1D,WAAa,EACrB0D,EAAQtjD,WAEHmwB,EAAI,EAAGA,EAAI+vB,EAAAA,GAAgB/vB,IAChCw0B,EAAM7qD,MAAK,SAACyoD,EAAe,C,SAAmBhrC,KAAK6sC,SAAS/C,EAAe,EAAJlxB,EAAO,EAAGy0B,EAAWN,IAA3D,OAAS,OAAFn0B,KAIhD,OACI,UAAC+xB,EAAY,CAACC,aAAcA,EAAcE,UAAWA,E,WACjD,UAACC,EAAc,C,WACX,SAAChoD,EAAS,CAAC5F,QAAS,SAACnB,G,OAAM,EAAKkwD,aAAalwD,OAC7C,SAACkvD,EAAa,C,SAAEQ,KAChB,SAACF,EAAU,CAACruD,QAAS,SAACnB,G,OAAM,EAAKowD,aAAapwD,UAElD,SAACgvD,EAAe,C,SACXmC,KAEL,SAACnC,EAAe,C,SACXoC,W,EAOlB,CA/JoB9sC,EAAAA,WA+JvB,K,yoCChMO,IAAMgtC,EAAwBn0D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAcnBC,EAAAA,EAAAA,MACMA,EAAAA,EAAAA,KACHE,EAAAA,EAAAA,iBACHkB,SAAAA,G,OAAUA,EAAM83B,KAAO,UAAY,YAIxCi7B,EAAmBp0D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KASnBqB,SAAAA,G,OAASA,EAAMgzD,QAAUp0D,EAAAA,EAAAA,UAAmBA,EAAAA,EAAAA,eACvCoB,SAAAA,G,OAAUA,EAAMgzD,QAAUp0D,EAAAA,EAAAA,QAAiBA,EAAAA,EAAAA,UAGvCoB,SAAAA,G,OAAUA,EAAMgzD,SAAWp0D,EAAAA,EAAAA,aC7B3Cq0D,EAAkB,CACpB,UACA,YACA,QACA,YACA,aACA,QACA,UACA,WACA,aACA,aAiCEC,EAAe,Y,QACjB5xD,MAAAA,OAAK,IAAG,KAAE,EACV6xD,EAAS,EAATA,UACAC,EAAY,EAAZA,aACAC,EAAmB,EAAnBA,oBAAmB,IACnBC,QAAAA,OAAO,IAAG,EAAAL,EAAe,EAEDx2D,GAAAA,EAAAA,EAAAA,WAAS,GAA1Bq7B,EAAiBr7B,EAAe,GAA1B82D,EAAW92D,EAAe,GACfA,GAAAA,EAAAA,EAAAA,UAAS,IAA1B+2D,EAAiB/2D,EAAY,GAAvBg3D,EAAWh3D,EAAY,GACVA,GAAAA,EAAAA,EAAAA,WAAU,GAA7Bi3D,EAAmBj3D,EAAY,GAAxBk3D,EAAYl3D,EAAY,GAEfgK,GAAAA,EAAAA,EAAAA,UAAQ,WAG3B,OAFA8sD,KAAWjyD,EAAMwyB,QAAQ,MACzB6/B,GAAU,GACHryD,EAAM8K,MAAM,OACpB,CAAC9K,IAJGrE,EAAgBwJ,EAIZ,GAJE1G,EAAU0G,EAIZ,GAELmtD,GAAiBnlD,EAAAA,EAAAA,cAAY,WAC/BqpB,GAAQs7B,IACRG,GAAQ,KACT,CAACz7B,IAKE9a,GAAQvW,EAAAA,EAAAA,UAAQ,WAClB,IAAMotD,EAAkB9zD,EAClBuzD,EAAQzgD,QAAOmB,SAAAA,G,OAAQA,EAAKutC,WAAWxhD,MACvCuzD,EAEN,IACKr2D,IACA42D,EAAgBnwD,QACW,IAA3BmwD,EAAgBnwD,QAAgBmwD,EAAgB,KAAO9zD,EAGxD,OADAwzD,GAAQ,GACD,KAGX,IAAMO,EAAW,GAEXC,EAAcF,EAAgBlwD,KAAI,SAACqQ,EAAMpQ,GAC3C,IAAMowD,EAAaj0D,EAASiU,EAAK5H,MAAMrM,GAAQ,GAAKiU,EAEpD,OACI,UAAC++C,EAAgB,CACbC,QAASpvD,IAAU8vD,EAEnB/wD,QAAS,WACL4wD,GAAQ,GACRH,EAAa9xD,EAAQ0yD,IAEzB1yC,IAAKxO,SAAAA,GACDghD,EAAS/rD,KAAK+K,I,WAGlB,SAACmhD,SAAM,C,SAAE3yD,IACR0yD,IAVI,oBAA0B,OAANpwD,OAgBrC,OADA6vD,EAAQK,GACDC,IACR,CAAC92D,EAAM8C,EAAQ2zD,IAyDlB,OApDA1yD,EAAAA,EAAAA,YAAU,WACNqyD,EAAoBv7B,KACrB,CAACA,KAMJ92B,EAAAA,EAAAA,YAAU,WACN,IAAMkzD,EAAgB1yD,SAAAA,GAClB,GAAKs2B,GAAS07B,EAAK9vD,OAAnB,CAIA,IAAIywD,EAAYT,EAEhB,OAAQlyD,EAAE4yD,SACV,KAAK,GACD5yD,EAAEC,iBACF0yD,EAAYA,EAAY,EAAI,EAAIX,EAAK9vD,OAAS,EAAIywD,EAAY,EAC9DR,EAASQ,GACTX,EAAKW,GAAWE,gBAAe,GAC/B,MACJ,KAAK,GACD7yD,EAAEC,iBACF0yD,EAAYA,EAAY,GAAKX,EAAK9vD,OAAS,EAAI,EAAIywD,EAAY,EAC/DR,EAASQ,GACTX,EAAKW,GAAWE,gBAAe,GAC/B,MACJ,KAAK,IACc,IAAXX,IACAN,EAAaI,EAAKW,GAAWG,aAC7Bf,GAAQ,GACRI,GAAU,OAMtB,GAAIR,EAEA,OADAA,EAAU1mC,iBAAiB,UAAWynC,GAC/B,WACHf,EAAU3rB,oBAAoB,UAAW0sB,MAGlD,CAACf,EAAWn2C,EAAO02C,IA1IF,SAACpyC,EAAKotB,GAC1B,IAAM6lB,EAAqB/yD,SAAAA,GACnB8f,IAAQA,EAAIkzC,SAAShzD,EAAEmN,SACvB+/B,MAIR1tC,EAAAA,EAAAA,YAAU,WAEN,OADA4rB,SAASH,iBAAiB,QAAS8nC,GAC5B,WACH3nC,SAAS4a,oBAAoB,QAAS+sB,MAE3C,CAAC7lB,IAmIJ5M,CAAgBqxB,EAAWS,IAGvB,SAACd,EAAqB,CAACh7B,KAAMA,E,SACxB9a,IAAS,SAAC1L,MAAG,OAK1B4hD,EAAaxL,UAAY,CACrBpmD,MAAOqmD,IAAAA,OACPyL,aAAczL,IAAAA,KACd0L,oBAAqB1L,IAAAA,KACrBwL,UAAWxL,IAAAA,OACX2L,QAAS3L,IAAAA,OAGb,Q,WC3Ka8M,EAAoB,CAC7Bx3D,KAAM,+CACNy3D,aAAc,uGACdC,SAAU,8GACV7xC,UAAW,uBACX7F,MAAO,2CACP/f,MAAO,4BACP03D,MAAO,aACPC,OAAQ,6BACRC,QAAS,cACThnB,KAAM,iEACNinB,eAAgB,cAChBC,eAAgB,cAChBC,aAAc,cACdC,KAAM,cACNC,IAAK,uBAGHC,EAAO,CACTl4D,MAAO,qBACP4wC,KAAM,aACN+mB,OAAQJ,EAAkBI,OAC1BE,eAAgB,QAChBC,eAAgB,SAChBC,aAAc,cACdC,KAAM,OACNC,IAAK,qBAGT,EAwgBG,a,sCAxgBGx3C,EAsBU3d,G,0CACFA,IA4DVq1D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,aAAY,SAAC/zD,GACT,IAEIg0D,EACAC,EAHyB,IAAKv1D,MAA1BoxD,EAAqB,EAArBA,QAASC,EAAY,EAAZA,QACbpwD,GAAU,EAGRu0D,EAAY,IAAIznD,KAAKzM,GAEvB8vD,IAGAnwD,EADAq0D,EAAaE,EADA,IAAIznD,KAAKqjD,IAItBC,IAEAkE,EAAaC,EADA,IAAIznD,KAAKsjD,GAEtBpwD,EAAUq0D,EAAaA,GAAcC,EAAaA,GAEtD,OAAOt0D,MAGXw0D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,YAAW,SAACn0D,GAGR,OAAO,IAAIytC,SAAQ,SAACC,GAChB,IAAuD,IAAKhvC,MAApDqC,EAA+C,EAA/CA,KAAMqzD,EAAyC,EAAzCA,IAAKC,EAAoC,EAApCA,IAAKpnD,EAA+B,EAA/BA,SAAUqnD,EAAqB,EAArBA,iBAC5B,EAAe,EAAK94D,MAAlBkkB,SACF60C,EAAYD,EAAmB,IAAIE,OAAOF,GAAoBnB,EAAkBpyD,GACtF,QAAkBxF,IAAdg5D,EAAyB,CACzB,IAAIE,EAAmB,SAAT1zD,EACNwzD,EAAUG,KAAK10D,IACdu0D,EAAUG,KAAK10D,IACpB,GAAQiY,OAAOjY,GAASo0D,GAASC,GAAOp8C,OAAOjY,GAASq0D,KACxDI,GAAU,GAGTxnD,GAAsB,KAAVjN,IACby0D,GAAU,GAED,SAAT1zD,GAAmBkM,GAAsB,KAAVjN,IAC/By0D,GAAU,GAGD,SAAT1zD,IACA0zD,EAAUA,IAAY,EAAKV,UAAU/zD,IAGrC0f,IAAa+0C,EACb,EAAKE,aAAaj1C,GAAUk1C,MAAK,SAAC5+B,GAC9B0X,EAAQ1X,MAGZ0X,GAAShuB,QAGbguB,GAAQ,UAMpBmnB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,SAAQ,SAAC70D,GACL,OAAO,IAAIytC,SAAQ,SAACC,QACFnyC,IAAVyE,GACA,EAAK80D,YAAW,GAChB,EAAKX,SAASn0D,GAAO40D,MAAK,SAAC5+B,GACvB0X,EAAQ1X,OAGZ0X,GAAQ,UAKpBonB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,cAAa,W,IAAC90D,IAAQ,UAAH,+CACf,EAAKvE,SAAS,CACVs5D,QAAS/0D,QAIjB20D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,eAAc,W,IAAC30D,IAAQ,UAAH,+CAChB,OAAO,IAAIytC,SAAQ,SAACC,GAChB,EAAKjyC,SAAS,CACVikB,SAAU1f,IACX,WACC0tC,GAAS1tC,aAMrBg1D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,gBAAe,W,IAACh1D,EAAQ,UAAH,8CACjB,EAAKvE,SAAS,CACVw5D,cAAej1D,QAIvBk1D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,cAAa,SAAC9nD,EAAO+nD,EAAiBC,EAAWC,GAC7C,GAAoB,KAAhBjoD,EAAMkoD,MAAc,CACpB,EAAK75D,SAAS,CAAE85D,UAAW,OAC3B,IAAMv1D,EAAQ,EAAKw1D,SAASpoD,EAAO+nD,EAAiBC,EAAWC,GAC/D,EAAKR,MAAM70D,GAAO40D,MAAK,SAACj1D,GAChBA,IACA,EAAK81D,cAAcz1D,GACnB,EAAKtB,MAAM2B,SAASL,YAMpC01D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,YAAW,SAAC11D,GACR,EAAKvE,SAAS,CACVi6D,SAAU11D,QAIlB21D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,QAAO,SAACvoD,EAAO+nD,EAAiBC,EAAWC,GAGvC,GAFA,EAAKO,eAED,EAAKp6D,MAAMq6D,iBAAf,CAIA,IAAM71D,EAAQ,EAAKw1D,SACfpoD,EACA+nD,EACAC,EACAC,GAGJ,EAAKR,MAAM70D,GACN40D,MAAKj1D,SAAAA,GACEA,GACA,EAAK81D,cAAcz1D,GACnB,EAAKvE,SAAS,CAAEq6D,SAAU91D,KAE1B,EAAKvE,SAAS,CAAEq6D,SAAU,OAE9B,EAAKd,aAAa,EAAKx5D,MAAMkkB,aAEhCk1C,MAAK,WACF,EAAKl2D,MAAMq3D,OAAO3oD,EAAOpN,WAIrCw1D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,YAAW,SAACpoD,EAAO+nD,EAAiBC,EAAWC,GAC3C,IAAM,EAAW,EAAK32D,MAAdqC,KACJf,EAAQ,EAAKg2D,MAAiB,SAATj1D,EAAkB,EAAKi1D,KAAKC,cAAgB7oD,EAAMC,OAAOrN,MAWlF,OAVIm1D,IACAn1D,EAAQA,EAAMiL,QAAQkqD,EAAiBC,GAAwB,KAE9D,EAAKY,MAAiB,SAATj1D,IACdf,EAAQA,EAAMiL,QAAQ,WAAY,IAC7BA,QAAQ,YAAa,MAEzBoqD,IACDr1D,EAAQq1D,EAAYr1D,IAEjBA,MAGXk2D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,UAAS,SAAC9oD,EAAO+nD,EAAiBC,EAAWC,GACzC,IAAM,EAAW,EAAK32D,MAAdqC,KACJ,EAAKi1D,MACL,EAAKA,KAAKG,cAEd,EAAK16D,SAAS,CAAE85D,UAAWnoD,EAAMC,OAAOrN,QACxC,IAAMA,EAAQ,EAAKw1D,SAASpoD,EAAO+nD,EAAiBC,EAAWC,GAC/D,EAAKL,eACL,EAAKH,MAAM70D,GAAO40D,MAAK,SAACj1D,IAChBA,GAAoB,SAAToB,IACX,EAAKrC,MAAM2B,SAASL,UAKhCo2D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,WAAU,SAAChpD,GACP,GAAI,EAAK4oD,KAAM,CACX,IAAMK,EAAS,EAAKL,KAAKK,OACnBp1D,EAAOmM,EAAMkpD,cAAcC,QAAQ,QACzCF,EAAOr2D,MAAQiB,EACf,EAAKvC,MAAM2B,SAASg2D,EAAOJ,oBAInCR,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,iBAAgB,SAACz1D,GACb,IAAM,EAAW,EAAKtB,MAAdqC,KACR,GAAIf,GAAkB,SAATe,EAAiB,CAC1B,IAAM6rD,EAAU5sD,EAAM8K,MAAM,KACxB0rD,EAAa,KACJ,IAAI/pD,KAAKzM,KAElBw2D,EAAa,GAAiB9J,OAAdE,EAAQ,GAAG,KAA+CA,OAA5CF,EAAAA,GAAyBE,EAAQ,GAAK,GAAG,KAAc,OAAXA,EAAQ,KAEtF,EAAKnxD,SAAS,CAAE+6D,WAAAA,SAIxBC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,cAAa,WACT,EAAKh7D,SAAS,CAAE+6D,WAAY,OAC5B,EAAKE,SAASj3C,QAAQ2yC,YAG1BuE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,gBAAe,SAAC32D,GACZ,IAAMwsC,EAAO,IAAI//B,KAAKzM,GAChB42D,GAAWlJ,EAAAA,EAAAA,IAAclhB,GAC/B,EAAKipB,cAAcz1D,GAEnB,EAAKvE,SAAS,CACV85D,UAAWqB,EACXd,SAAU91D,EACV62D,YAAY,IACb,WACK,EAAKb,OACL,EAAKA,KAAKG,cACV,EAAKtB,MAAM70D,GACX,EAAKtB,MAAM2B,SAASL,WAKhC41D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,eAAc,WACV,EAAKn6D,UAAS,SAACO,G,MAAe,CAC1B86D,WAAY96D,EAAU86D,kBAI9BD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,cAAa,SAAC32D,EAAG62D,GACb72D,EAAEmwD,kBACF,IAAM,EAAiB,EAAK70D,MAApBq7D,WACFrgC,EAAOugC,IAAQF,EACrB,EAAKp7D,SAAS,CAAEo7D,WAAYrgC,QAGhCwgC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,cAAa,SAAC92D,GACa,EAAK1E,MAApBq7D,YACK,EAAKA,WAAW32D,GAAG,OAQpC+2D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,iBAAgBj3D,SAAAA,GACZ,EAAK60D,MAAM70D,GAAO40D,MAAKj1D,SAAAA,GACnB,EAAKq1D,aAAa,EAAKx5D,MAAMkkB,UAE7B,EAAKw3C,kBAAkBl3D,GAEvB,EAAKvE,SAAS,CACVq6D,SAAUn2D,EAAUK,EAAQ,KAC5Bu1D,UAAWv1D,WAgCvBm3D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,mBAAkB3lD,SAAAA,GACd,EAAK4lD,aAAe5lD,MAGxBugD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,uBAAsB,W,IAACj2C,EAAM,UAAH,8CACtB,EAAKrgB,UAAS,W,MAAO,CACjBo6D,iBAAkB/5C,SA3VtB,EAAKtgB,OAAQ,UACN6gB,EAAMg7C,uBAEb,EAAKX,SAAWY,EAAAA,Y,oBAGpBC,IAAAA,wB,MAAAA,W,IAAsBC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAiB,aAAF,G,OAGjCtzC,KAAKzoB,UAAS,UAAK4gB,EAAMg7C,sBAA0BG,IAAgB,WAC3D,EAAKxB,OACL,EAAKA,KAAKh2D,MAAQ,GAClB,EAAKg2D,KAAKG,oB,CAKtB7+B,IAAAA,oB,MAAAA,W,WACoD,EAAApT,KAAKxlB,MAA7CsB,EAAwC,EAAxCA,MAAOe,EAAiC,EAAjCA,KAAM02D,EAA2B,EAA3BA,aAAcC,EAAa,EAAbA,SACnCxzC,KAAKiwC,SAASn0D,GACdkkB,KAAKwxC,SAAkB,WAAT30D,IAAsB,CAAC,WAAY,gBAAgBu/B,SAASv/B,IAC1E,IAAMyM,EAAQ0W,KAAKwyC,SAASj3C,QACtBu2C,EAAOlC,EAAK/yD,GACdyM,GAASwoD,IACT,gCAAgBpB,MAAK,Y,IAAGhlD,EAAc,EAAdA,QACpB,EAAKomD,KAAO,IAAI2B,EAAMnqD,EAAO,CACzBwoD,KAAMA,EACN4B,KAAMF,EACNG,QAAS,SAACC,EAAOzB,GACb,MAAwB,UAApB,EAAK33D,MAAMqC,MAA8B,MAAV+2D,GAAkC,KAAjBzB,EAAOr2D,MAChD,GAEJ83D,KAGf,EAAK9B,KAAK+B,iBAGD,SAATh3D,IACIsJ,QACAA,OAAO8gB,iBAAiB,QAASjH,KAAK8yC,YAE1C9yC,KAAKyyC,aAAac,O,CAK9BO,IAAAA,uB,MAAAA,WACI,IAAM,EAAW9zC,KAAKxlB,MAAdqC,KACJmjB,KAAK8xC,MAAQ9xC,KAAK8xC,KAAKiC,SACvB/zC,KAAK8xC,KAAKiC,UAED,SAATl3D,GACAsJ,OAAO67B,oBAAoB,QAAShiB,KAAK8yC,c,CAyQjDE,IAAAA,oB,MAAAA,SAAkBl3D,GACd,GAAKA,EAAL,CAIA,IAAMwN,EAAQ0W,KAAKwyC,SAASj3C,QACtBy4C,EAAc/xD,OAAOoxC,yBAAyB/pC,EAAO,SACtD3G,IACCymD,EAAYnnD,OAAOgyD,eAAe3qD,GAClC4qD,EAAuBjyD,OAAOoxC,yBAChC+V,EACA,SACFzmD,IAEEqxD,GAAeA,IAAgBE,EAC/BA,EAAqB1gB,KAAKlqC,EAAOxN,GAEjCk4D,EAAY1qD,EAAOxN,GAGvBwN,EAAM6qD,cAAc,IAAIC,MAAM,QAAS,CAAEC,SAAS,Q,CAetDt0C,IAAAA,S,MAAAA,W,IA0EgE,E,OAzDxD,EAAAC,KAAKxlB,MAdLqC,EAcA,EAdAA,KACAf,EAaA,EAbAA,MACAO,EAYA,EAZAA,aACA0M,EAWA,EAXAA,SAAQ,EAWR,EAVAurD,aAAAA,OAAY,IAAG,QAAK,EACpBh4D,EASA,EATAA,UACAsvD,EAQA,EARAA,QACAC,EAOA,EAPAA,QACAzvD,EAMA,EANAA,YACAm4D,EAKA,EALAA,aACAnsC,EAIA,EAJAA,YAAW,EAIX,EAHAosC,YAAAA,OAAW,IAAG,KAAE,IAGhB,EAFAC,UAAAA,OAAS,IAAG,GAAC,EAAC,EACXC,GAAK,OACR,EAAU,CAdV73D,OACAf,QACAO,eACA0M,WACAurD,eACAh4D,YACAsvD,UACAC,UACAzvD,cACAm4D,eACAnsC,cACAosC,cACAC,cAG2G,EAAAz0C,KAAK1oB,MAA5Gu5D,EAAuG,EAAvGA,QAASr1C,EAA8F,EAA9FA,SAAUg2C,EAAoF,EAApFA,SAAUT,EAA0E,EAA1EA,cAAeuB,EAA2D,EAA3DA,WAAYjB,EAA+C,EAA/CA,UAAWO,EAAoC,EAApCA,SAAUe,EAA0B,EAA1BA,WAAYC,EAAc,EAAdA,UAC7Fl+C,EAAO,KACPigD,EAAY93D,GAAQ,OAOxB,OANA63D,EAAMD,UAAYA,EAClBC,EAAMv4D,SAAW+M,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,IACxB,UAAV,GAAsB0mD,EAAK/yD,KAC3B63D,EAAME,QAAU1rD,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,KAEzCwrD,EAAM7C,OAAS3oD,SAAAA,G,OAAS,EAAKuoD,KAAKvoD,IAC1BrM,GACR,IAAK,SACD83D,EAAY,MACZD,EAAMv4D,SAAW+M,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,EAAO,KAAM,MACnDwrD,EAAM7C,OAAS3oD,SAAAA,G,OAAS,EAAKuoD,KAAKvoD,EAAO,KAAM,MAC/C,MACJ,IAAK,OACDyrD,EAAY,OACZD,EAAMv4D,SAAW+M,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,EAAO,KAAM,KAAMwgD,EAAAA,KACzDgL,EAAM7C,OAAS3oD,SAAAA,G,OAAS,EAAKuoD,KAAKvoD,EAAO,KAAM,KAAMwgD,EAAAA,KACrDgL,EAAM1D,WAAa9nD,SAAAA,G,OAAS,EAAK8nD,WAAW9nD,EAAO,KAAM,KAAMwgD,EAAAA,KAC/Dh1C,GAAO,SAACmgD,EAAAA,GAAY,CAAC13D,QAAS,SAACnB,G,OAAM,EAAK22D,WAAW32D,MACrD,MACJ,IAAK,QACL,IAAK,UACD24D,EAAY,MACZD,EAAMv4D,SAAW+M,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,EAAO,QAC7C,MACJ,IAAK,SACL,IAAK,eACL,IAAK,WACDyrD,EAAYnD,GAEG,iBAAT30D,EADA,OACmC,WACzC6X,GAAO,SAACogD,EAAAA,GAAG,CACPx/C,IAAK,wFACLD,IAAKm8C,EAAWuD,IAAYC,IAC5B70C,KAAMqxC,EACNyD,aAAc,W,OAAM,EAAKzD,UAAUA,IACnCr0D,QAAS,W,OAAM,EAAKq0D,UAAUA,MAElCkD,EAAMv4D,SAAW+M,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,EAAO,SAC7C,MACJ,IAAK,YACDyrD,EAAY,OACZD,EAAMQ,UAAY,GAClB,MACJ,IAAK,QACL,IAAK,QACDR,EAAMv4D,SAAW+M,SAAAA,G,OAAS,EAAK8oD,OAAO9oD,EAAO,6BAMjD,IAAMisD,EAAUn1C,KAAK8xC,MAAQ9xC,KAAK8xC,KAAKK,OAAOJ,cACxCqD,IAAeD,GAAYn1C,KAAKwyC,SAASj3C,SAAWyE,KAAKwyC,SAASj3C,QAAQzf,OAAUA,GACpFu5D,GAA4BtsD,IAAYqsD,IAAiC,QAAnB,EAAC/D,GAAav1D,SAAM,IAApB,WAAsBoC,SAAUu2D,EACtFa,EAAQzE,IAAYr1C,KAAe45C,IAAersD,IAAeqsD,GAAcrsD,GAC/EwsD,EAAW1E,IAAY,GAAauE,GAAe55C,IAAa65C,GAChErnD,EAAQ3R,GAAgB00D,GAAgB,SAACyE,EAAAA,GAAU,CAACljC,KAAMijC,E,SAAWl5D,IAA6B,KAClGo5D,EAASnD,GAAa,SAACoD,EAAAA,GAAU,CAACv4D,QAAS6iB,KAAKuyC,W,SAAaD,IAA2B,KAC9F,OACI,UAACvhD,EAAAA,GAAc,CAACzU,UAAWA,EAAWwf,IAAKkE,KAAKizC,gB,WAC5C,SAAC0C,EAAAA,IAAW,QACR75C,IAAKkE,KAAKwyC,SACV12D,MAAOu1D,GAAav1D,EACpBe,KAAM83D,EACNY,SAAUA,EACVD,MAAOA,EACPtE,WAAYhxC,KAAKgxC,WACjBkB,QAASlyC,KAAKkyC,QACd0D,QAAS51C,KAAK0xC,YACdF,SAAUA,EACVzoD,SAAUA,EACVurD,aAAcA,EACdmB,OAAQA,EACRr5D,YAAaw2D,GAAa92D,EAAQ,GAAKM,EACvCy5D,UAAWV,EACXW,YAAaphD,EACbhY,YAAU,QACVyjB,KAAMqxC,GACFkD,IAEPe,EAEGjB,GACM,SAACuB,EAAAA,EAAO,CACN7qD,SAAS,SACTqkB,MAAM,SACND,QAAQ,SAAC0mC,EAAAA,GAAY,CAAC74D,QAAS6iB,KAAK2yC,aACpCsD,UAAU,E,SAETzB,IAEH9/C,EAET1G,EACAoa,IAAe,SAAC8tC,EAAAA,GAAgB,C,SAAE9tC,IACzB,SAATvrB,IACG,SAAC4uD,EAAAA,EAAQ,CACLb,aAAc+H,EACdx2D,SAAU6jB,KAAKyyC,aAAa0D,KAAKn2C,MACjC+rC,QAAS6F,EACThG,QAASA,EACTC,QAASA,EACTnvD,YAAU,aAIJ,UAAVG,IACA,SAAC6wD,EAAY,CACT5xD,MAAOA,EACP8xD,aAAc5tC,KAAK+yC,cACnBlF,oBAAqB7tC,KAAK6tC,oBAC1BF,UAAW3tC,KAAKkzC,aAChBpF,QAASyG,EACT73D,YAAU,wB,EAQ/B,CAxgBiB05D,EAAAA,gBAChB,OADEj+C,EACKkZ,eAAe,CAClBl1B,SAAU,aACV01D,OAAQ,aACR+C,QAAS,aACTpB,UAAU,KAId,OATEr7C,EASKg7C,wBAAwB,CAC3B33C,UAAU,EACVu1C,eAAe,EACfF,SAAS,EACTW,UAAU,EACVc,YAAY,EACZjB,UAAW,KACXO,SAAU,KACVe,YAAY,EACZC,WAAW,EACXjB,kBAAkB,IAqf1B,S,49GC/iBA,IAAM0E,GAAe5mD,EAAAA,EAAAA,KAAG,IAEArW,EAAAA,EAAAA,YACIA,EAAAA,EAAAA,YACXA,EAAAA,EAAAA,aAIAA,EAAAA,EAAAA,cAIJ2X,EAAiB5X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOjB27D,EAAM37D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAcNw8D,EAAcx8D,EAAAA,QAAAA,MAAAA,WAAY,C,6BAAZA,C,KAINqB,SAAAA,G,OAASA,EAAMs7D,YAAc,OAAS,MACrDt8D,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,aACWW,SAAAA,G,OAAKA,EAAEw7D,SAAWn8D,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,cACpCE,EAAAA,EAAAA,iBACNkB,SAAAA,G,OAASA,EAAMi7D,OAAS,IAAM,MAKvCY,GAGkBt8D,SAAAA,G,OAAKA,EAAEw7D,SAAWn8D,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,cAIjCW,SAAAA,G,OAAKA,EAAEw7D,SAAWn8D,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,YAE3C07D,GAeet6D,SAAAA,G,OAASA,EAAMg3D,SAAW,OAAS,UAGnDkE,EAAav8D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGpBK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,YACWA,EAAAA,EAAAA,YACHE,EAAAA,EAAAA,gBAIHF,EAAAA,EAAAA,QAOZW,SAAAA,G,OAAKA,EAAEsxD,YACH57C,EAAAA,EAAAA,KAAG,IACerW,EAAAA,EAAAA,YACIA,EAAAA,EAAAA,YACXA,EAAAA,EAAAA,eAEXqW,EAAAA,EAAAA,KAAG,IAEmBrW,EAAAA,EAAAA,aAMRA,EAAAA,EAAAA,YAIXo8D,EAAar8D,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAEpBK,EAAAA,EAAAA,IAEOJ,EAAAA,EAAAA,OAIAy7D,EAAe17D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAEAm9D,KAUfN,EAAe78D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAEAo9D,KAUfL,EAAmB/8D,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAC1BK,EAAAA,EAAAA,IAEOJ,EAAAA,EAAAA,e,4FCnJPL,GAAcimB,EAAAA,EAAAA,aAAW,SAACxkB,EAAOshB,GACnC,IACIhgB,EAaAtB,EAbAsB,MACAM,EAYA5B,EAZA4B,YACAo1D,EAWAh3D,EAXAg3D,SACAn1D,EAUA7B,EAVA6B,aACAC,EASA9B,EATA8B,UACAk6D,EAQAh8D,EARAg8D,WACA7B,EAOAn6D,EAPAm6D,UACAx4D,EAMA3B,EANA2B,SACA+1D,EAKA13D,EALA03D,QACAL,EAIAr3D,EAJAq3D,OACA+D,EAGAp7D,EAHAo7D,QACAn+D,EAEA+C,EAFA/C,KACGspB,GAAI,OACPvmB,EAAK,CAbLsB,QACAM,cACAo1D,WACAn1D,eACAC,YACAk6D,aACA7B,YACAx4D,WACA+1D,UACAL,SACA+D,UACAn+D,SAc8BR,GAAAA,EAAAA,EAAAA,WAAS,GAApC27D,EAA2B37D,EAAe,GAA/Bw/D,EAAgBx/D,EAAe,GAEjD,OACI,UAAC8Z,EAAAA,GAAc,CAACzU,UAAWA,E,WACvB,SAAC6b,EAAAA,IAAK,QACFrc,MAAOA,EACP01D,SAAUA,EACVgF,WAAYA,EACZ35D,KAAM83D,EACNx4D,SAAUA,EACV+1D,QAASA,EACTL,OAhBU71D,SAAAA,GAClB61D,EAAO71D,GACPy6D,GAAa,IAeLr6D,YAAaw2D,EAAY,GAAKx2D,EAC9Bw5D,QAvBW55D,SAAAA,GACnB45D,EAAQ55D,GACRy6D,GAAa,IAsBLh/D,KAAMA,EACNqkB,IAAKA,EACL46C,gBAAgB,QAChBh6D,YAAU,SACNqkB,IAGJy1C,IAAc,SAAChB,EAAAA,GAAU,CAAC94D,YAAU,Q,SAASL,UAM7DtD,EAAYs4B,aAAe,CACvBv1B,MAAO,GACPrE,KAAM,GACN2E,YAAa,GACbo1D,UAAU,EACVn1D,aAAc,GACdC,UAAW,GACXk6D,YAAY,EACZ7B,UAAW,GACXl5D,SAAS,EACTU,SAAU,W,OAAM,MAChB+1D,QAAS,W,OAAM,MACf0D,QAAS,W,OAAM,MACf/D,OAAQ,W,OAAM,OAGlB94D,EAAYmW,YAAc,cAC1B,O,0FCtEO,IAAMynD,EAAuB,SAAC76D,G,IAAO86D,EAAiB,UAAH,8CAElDC,EAAa,GAAU/6D,EAAMoC,OAAUpC,EAAMiL,QAAQ,OAAQ,IAAM,IAiBvE,OAdkC,IAA9B8vD,EAAWvoC,QAAQ,QAA8C,IAA9BuoC,EAAWvoC,QAAQ,SACtDuoC,EAAa,IAAMA,EAAW1qB,OAAO,IAGrC0qB,EAAW34D,QAA4B,MAAlB24D,EAAW,KAChCA,EAAa,IAAMA,GAGnBD,GAA8C,IAA5BC,EAAWvoC,QAAQ,OACrCuoC,EAAaA,EAAWhjB,MAAM,EAAG,GAAKgjB,EAAWhjB,MAAM,IAG3DgjB,EAAaA,EAAW1qB,OAAO,EAAG,KAUzB2qB,EAAsBh7D,SAAAA,GAM/B,IAJA,IAAM+6D,EAAaF,EAAqB76D,GAEpCi7D,EAAiB,GAEZn+B,EAAI,EAAGA,EAAIi+B,EAAW34D,OAAQ06B,IAAK,CACxC,IAAMo+B,EAAiBH,EAAWj+B,GAClC,OAAQA,GACR,KAAK,EACDm+B,GAAkB,IAAmB,OAAfC,EAAe,KACrC,MACJ,KAAK,EACDD,GAAkB,IAAmB,OAAfC,GACtB,MACJ,KAAK,EAGL,KAAK,EACDD,GAAkB,IAAmB,OAAfC,GACtB,MACJ,QACID,GAAkBC,GAG1B,OAAOD,I,kHCzDEE,EAAgBn7D,SAAAA,GACzB,SAAKA,GAASA,EAAMoC,OAAS,KAGrB,+CAA4CsyD,KAAK10D,ICCvD7C,EAAgBkf,SAAAA,G,OAAS3d,SAAAA,GAE3B,IACI4B,EAOA5B,EAPA4B,YACAC,EAMA7B,EANA6B,aACAC,EAKA9B,EALA8B,UACAH,EAIA3B,EAJA2B,SACA1E,EAGA+C,EAHA/C,KACAoa,EAEArX,EAFAqX,aACGkP,GAAI,OACPvmB,EAAK,CAPL4B,cACAC,eACAC,YACAH,WACA1E,OACAoa,iBAI0B5a,GAAAA,EAAAA,EAAAA,WAAS,GAAhCwE,EAAuBxE,EAAe,GAA7Buc,EAAcvc,EAAe,GACTA,GAAAA,EAAAA,EAAAA,WAAS,GAAtCu/D,EAA6Bv/D,EAAe,GAAhCigE,EAAiBjgE,EAAe,GACzBA,GAAAA,EAAAA,EAAAA,UAAS4a,GAA5B/V,EAAmB7E,EAAsB,GAAlCkgE,EAAYlgE,EAAsB,GAS1CqZ,EAAa,WACf6mD,EAAS,IACT3jD,GAAW,GACX0jD,GAAc,IAWlB,OAJA17D,EAAAA,EAAAA,YAAU,W,OAAMW,EAAS,CAAEL,MAAOA,EAAOL,QAAAA,EAAS6U,WAAAA,MAAe,CAACxU,EAAOL,KACzED,EAAAA,EAAAA,YAAU,W,OAAM27D,EAAStlD,KAAe,CAACA,KACzCrW,EAAAA,EAAAA,YAAU,W,OAAMgY,EAAWyjD,EAAcn7D,MAAS,CAACA,KAG/C,SAACqc,GAAK,QACFrc,MAAOA,EACPrE,KAAMA,EACN2E,YAAaA,EACbo1D,UAAU,EACVn1D,aAAcA,EACdm6D,WAAYA,EACZ7B,UAAU,OACVl5D,QAASA,EACTa,UAAWA,EACXH,SAhCgB+M,SAAAA,GACpBA,EAAMjN,iBACN,IAAMH,EAAQoN,EAAMC,OAAOrN,MAC3Bq7D,EAASr7D,GACT0X,EAAWyjD,EAAcn7D,KA6BrB+1D,OApBc,WAClBqF,GAAez7D,KAoBPslB,MAKhB9nB,EAAco4B,aAAe,CACzBj1B,YAAa,8CACb3E,KAAM,OACN4E,aAAc,yKACdC,UAAW,GACXH,SAAU,W,OAAM,MAChB0V,aAAc,IAGlB,S,6FC9DM/Y,EAAiBqf,SAAAA,GAAS3d,OAAAA,SAAAA,GAE5B,IACI4B,EAQA5B,EARA4B,YACAC,EAOA7B,EAPA6B,aACAC,EAMA9B,EANA8B,UACAH,EAKA3B,EALA2B,SACA1E,EAIA+C,EAJA/C,KACAoa,EAGArX,EAHAqX,aACA2J,EAEAhhB,EAFAghB,SACGuF,GAAI,OACPvmB,EAAK,CARL4B,cACAC,eACAC,YACAH,WACA1E,OACAoa,eACA2J,aAIElS,GAAQoR,EAAAA,EAAAA,QAAO,IAESzjB,GAAAA,EAAAA,EAAAA,WAAS,GAAhCwE,EAAuBxE,EAAe,GAA7Buc,EAAcvc,EAAe,GACTA,GAAAA,EAAAA,EAAAA,WAAS,GAAtCu/D,EAA6Bv/D,EAAe,GAAhCigE,EAAiBjgE,EAAe,GACrBA,GAAAA,EAAAA,EAAAA,WAAS,GAAhCmgE,EAAuBngE,EAAe,GAA7BogE,EAAcpgE,EAAe,GACnBA,GAAAA,EAAAA,EAAAA,UAAS4a,GAA5B/V,EAAmB7E,EAAsB,GAAlCkgE,EAAYlgE,EAAsB,GAE1C0E,EAAkBuN,SAAAA,G,IAGIA,EAFxBA,EAAMjN,iBACN,IAAMq7D,EAAgBpuD,EAAMC,OAAOrN,MAC7B86D,IAAuB,OAAL1tD,QAAK,IAALA,GAAkB,QAAlBA,EAAAA,EAAOquD,mBAAW,IAAlBruD,OAAAA,EAAAA,EAAoByrD,WACtC6C,GAAWb,EAAAA,EAAAA,GAAqBW,EAAeV,GACrDO,EAASK,GACTP,EAAcO,IAsBZP,EAAgBn7D,SAAAA,GACdA,GAA0B,KAAjBA,EAAMoC,QACfsV,GAAW,GACX0jD,GAAc,IAEd1jD,GAAW,IAIblD,EAAa,WACf+mD,GAAW,GACXF,EAAS,IACT3jD,GAAW,IAiBf,OAdAhY,EAAAA,EAAAA,YAAU,WACFM,GAnEI,IAmEKA,GACTK,EAAS,CAAEL,MAAAA,EAAOL,QAAAA,EAAS6U,WAAAA,MAEhC,CAACxU,EAAOL,KAEXD,EAAAA,EAAAA,YAAU,WACN27D,EAAStlD,KACV,CAACA,KAEJrW,EAAAA,EAAAA,YAAU,WACNy7D,EAAcn7D,KACf,CAACA,KAGA,SAACqc,GAAK,QACFrc,MAAO,GAAYmlC,QAAQnlC,IAAUg7D,EAAAA,EAAAA,GAAoBh7D,GAAS,GAClErE,KAAMA,EACN2E,YAAaA,EACbo1D,UAAU,EACVn1D,aAAcA,EACdm6D,WAAYh7C,GAAYg7C,EACxB7B,UAAU,QACVl5D,QAASA,EACTa,UAAW,mBAAqBA,EAChCH,SAAUR,EACVu2D,QAASv2D,EACTi6D,QA7De,WAInB,GAHKwB,GACDC,GAAW,IAEVv7D,IAAUA,EAAMoC,OAAQ,CACzBi5D,EArCI,GAsCJ,IAAMM,EAAUzjD,YAAW,WACvB1K,EAAMiS,QAAQm8C,kBAAkB,EAAG,GACnC/jD,aAAa8jD,KACd,OAqDH5F,OAjDc,WACG,KAAjB/1D,EAAMoC,QACNg5D,GAAc,IAgDdp7C,IAAKxS,GACDyX,MAKhBjoB,EAAeu4B,aAAe,CAC1Bj1B,YAAa,kFACb3E,KAAM,QACN4E,aAAc,6JACdC,UAAW,GACXH,SAAU,W,OAAM,MAChB0V,aAAc,GACd2J,UAAU,GAGd,O,iDC/GA,KAAeziB,EAAW,G,k7CCCnB,IAAMgY,EAAiB5X,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOjBgf,EAAQhf,EAAAA,QAAAA,MAAAA,WAAY,C,6BAAZA,C,IAIfK,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,aACWW,SAAAA,G,OAAKA,EAAEy8D,WAAap9D,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,cACtCE,EAAAA,EAAAA,iBAOGS,SAAAA,G,OAAKA,EAAEy8D,WAAap9D,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,cAInCW,SAAAA,G,OAAKA,EAAEy8D,WAAap9D,EAAAA,EAAAA,MAAeA,EAAAA,EAAAA,YAInCA,EAAAA,EAAAA,YACIA,EAAAA,EAAAA,YACXA,EAAAA,EAAAA,aAIAA,EAAAA,EAAAA,cAeYW,SAAAA,G,OAAKA,EAAEy3D,SAAW,OAAS,UAG3CgE,EAAar8D,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IAEpBK,EAAAA,EAAAA,IAEOJ,EAAAA,EAAAA,Q,iHC9CPu+D,EAUF,CACAC,aAAc,aACdC,aAAc,aACdC,aAAc,aACdC,aAAc,aACdC,aAAc,aACdC,aAAc,cAoBZpvD,GAAQmW,EAAAA,EAAAA,aAAwC,WAQnDlD,G,IAPC9hB,EAAS,EAATA,UACA6wB,EAAO,EAAPA,QACAvuB,EAAS,EAATA,UACA47D,EAAQ,EAARA,SACAlvD,EAAQ,EAARA,SACAnM,EAAI,EAAJA,KACAM,EAAO,EAAPA,QAEA,OACI,SAACa,EAAAA,EAAQ,CACL8d,IAAKA,EACLpf,YAAW,QACXJ,UAAWA,EACXtC,UAAW6C,EAAOzD,EAAAA,EAAOyD,GAAQ7C,EACjC6wB,QAAShuB,EAAOzD,EAAAA,EAAOu+D,EAAY96D,IAASguB,EAC5ChuB,KAAMA,EACNq7D,SAAUA,EACV/6D,QAASA,E,UAET,SAACa,EAAAA,EAAe,CAACnB,KAAMA,EAAMH,YAAW,gB,SACnCsM,SAMjBH,EAAMqG,YAAc,S,wmBChEb,IAAMrG,EAAQ1P,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAOfK,EAAAA,EAAAA,OACOO,SAAAA,G,OAAKA,EAAEC,WAAaZ,EAAAA,EAAAA,gBAGnBW,SAAAA,G,OAAKA,EAAEm+D,SAAW,eAAgD,OAAjCn+D,EAAE8C,KAAO9C,EAAEC,UAAYD,EAAE8wB,SAAY,UAC5D9wB,SAAAA,G,OAAKA,EAAEm+D,SAAW,cAAgBn+D,EAAE8wB,SAAWzxB,EAAAA,EAAAA,aAClDE,EAAAA,EAAAA,aAGR6+D,EAAeh/D,EAAAA,QAAAA,KAAAA,WAAW,C,6BAAXA,C,KAKtB,Y,IAAG0D,EAAI,EAAJA,K,OAAWA,GAAQ,4FAIW,OAAbzD,EAAAA,EAAOyD,GAAM,oD,qSCtCvC,IACau7D,EAAY,CACrBC,SAAU,GACVC,YAAa,EACbC,YAAa,EACbhc,WAAY,cACZic,UAAW,CACPxZ,GAAI,GACJC,GAAI,GACJC,GAAI,IAERpgC,YAAa,CACTigC,GAAI,EACJC,GAAI,GACJC,GAAI,GACJC,GAAI,KAINuZ,EAAc,GAEdC,EAAgBl+D,SAAAA,GAClB,IAAMm+D,EAAY,EAAOrnD,OAAS9W,EAAM8W,MAAgB,aAAM,GAExDsnD,GAAO,kBACNR,EACAO,GAAS,CACZH,WAAW,UACJJ,EAAUI,UACVG,EAAUH,WAEjB15C,aAAa,UACNs5C,EAAUt5C,YACV65C,EAAU75C,eAiBrB,OAbA85C,EAAKC,MAAQ52D,OAAOC,KAAK02D,EAAK95C,aAAapd,QAAO,SAACm3D,EAAOC,GACtD,IAAMC,EAAkBH,EAAK95C,YAAYg6C,GASzC,OARAD,EAAMC,GA8Bd,SAAmBD,GACf,OAAO,W,2BAAIplB,EAAI,yBAAJA,EAAI,gB,OAAKhkC,EAAAA,EAAAA,KAAG,IACdopD,EACLppD,EAAAA,IAAAA,WAAAA,GAAI,OAAGgkC,MAjCaulB,CAChB,CACIJ,EAAKrc,WACU,IAAfuc,GAAoB,eAA+B,OAAhBC,EAAgB,QAElD1rD,OAAO4zB,SACPn6B,KAAK,UAEP+xD,IACR,IAEID,GAGEK,EAAkB,CAAC,KAAM,KAAM,KAAM,MAEnC,SAASzxD,EAAOhN,GAC3B,IAAM0+D,EApCU1+D,SAAAA,G,OAASmrC,KAAKC,UAAU,EAAOt0B,OAAS9W,EAAM8W,MAAgB,aAAM,IAoCpE6nD,CAAY3+D,GAC5B,GAAIi+D,EAAY,KAAOS,EACnB,OAAOT,EAAY,GAGvB,IAAMG,EAAOF,EAAcl+D,GAK3B,OAHAi+D,EAAY,GAAKS,EACjBT,EAAY,GAAKG,EAEVA,E,kWChEX,IAAMQ,EAAcH,EAAgB96D,KAAIW,SAAAA,G,OAAKA,EAAI,YAE3Cu6D,EAAMlgE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGOY,SAAAA,G,OAAKyN,EAAOzN,GAAGu+D,YAAc,KAC9Bv+D,SAAAA,G,OAAKyN,EAAOzN,GAAGu+D,YAAc,KAC3Cv+D,SAAAA,G,OAAKA,EAAEwuC,SAAY,+CAGnBxuC,SAAAA,G,OAAKkI,OAAOC,KAAKnI,GAChBsT,QAAOisD,SAAAA,G,OAAML,EAAgB3qC,QAAQgrC,MACrC3wB,MAAK,SAAC4wB,EAAIC,G,OAAOP,EAAgB3qC,QAAQirC,GAAMN,EAAgB3qC,QAAQkrC,MACvEr7D,KAAIm7D,SAAAA,G,OAAK9xD,EAAOzN,GAAG8+D,MAAMS,GAAE,IACxBvlD,OAAO0lD,UAAU1/D,EAAEu/D,IAEb,yBAEO,OADC,IAAM9xD,EAAOzN,GAAGs+D,SAAWt+D,EAAEu/D,GAAG,2BACD,OAAhC,IAAM9xD,EAAOzN,GAAGs+D,SAAWt+D,EAAEu/D,GAAG,uCAItCv/D,EAAEu/D,GAEE,uHAOD,wBAIdv/D,SAAAA,G,OAAKkI,OAAOC,KAAKnI,GAChBsT,QAAOisD,SAAAA,G,OAAMF,EAAY9qC,QAAQgrC,MACjCn7D,KAAIm7D,SAAAA,G,OACD9xD,EAAOzN,GAAG8+D,MAAMS,EAAEvyD,QAAQ,UAAW,KAAI,IAC1B,IAAMS,EAAOzN,GAAGs+D,SAAWt+D,EAAEu/D,UAKpDD,EAAInqD,YAAc,MAElB,Q,2vCC9CA,IAAMwqD,EAAMvgE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMMY,SAAAA,G,OAAKyN,EAAOzN,GAAGu+D,YAAc,GAAK,KACnCv+D,SAAAA,G,OAAKyN,EAAOzN,GAAGu+D,YAAc,GAAK,KAC/Cv+D,SAAAA,G,OAAKA,EAAEwuC,SAAY,4CAGnBxuC,SAAAA,G,OAAKA,EAAE+yD,OAAStlD,EAAOzN,GAAG8+D,MAAM9+D,EAAE+yD,OAAM,QAGxC/yD,SAAAA,G,OAAKA,EAAE4/D,QAAUnyD,EAAOzN,GAAG8+D,MAAM9+D,EAAE4/D,QAAO,QAG1C5/D,SAAAA,G,OAAKA,EAAE6xC,KAAOpkC,EAAOzN,GAAG8+D,MAAM9+D,EAAE6xC,KAAI,QAGpC7xC,SAAAA,G,OAAKA,EAAEgyB,KAAOvkB,EAAOzN,GAAG8+D,MAAM9+D,EAAEgyB,KAAI,QAGpChyB,SAAAA,G,OAAKA,EAAEyqD,QAAUh9C,EAAOzN,GAAG8+D,MAAM9+D,EAAEyqD,QAAO,QAG1CzqD,SAAAA,G,OAAKA,EAAE6/D,QAAUpyD,EAAOzN,GAAG8+D,MAAM9+D,EAAE6/D,QAAO,QAG1C7/D,SAAAA,G,OAAKA,EAAE8/D,QAAUryD,EAAOzN,GAAG8+D,MAAM9+D,EAAE8/D,QAAO,QAG1C9/D,SAAAA,G,OAAKA,EAAE+/D,SAAWtyD,EAAOzN,GAAG8+D,MAAM9+D,EAAE+/D,SAAQ,QAG5C//D,SAAAA,G,OAAKA,EAAE0uC,OAASjhC,EAAOzN,GAAG8+D,MAAM9+D,EAAE0uC,OAAM,QAGxC1uC,SAAAA,G,OAAKA,EAAEggE,MAAQvyD,EAAOzN,GAAG8+D,MAAM9+D,EAAEggE,MAAK,QAK1CL,EAAIxqD,YAAc,MAElB,QC3Ca8qD,EAAax/D,SAAAA,G,OAAS,SAACk/D,GAAG,QAACh9D,YAAU,OAAUlC,KAC/C4F,EAAa5F,SAAAA,G,OAAS,SAAC6+D,GAAG,QAAC38D,YAAU,OAAUlC,KAEtDy/D,EAAiB,CAAC,KAAM,KAAM,KAAM,MAEpCC,EAAiB/X,IAAAA,MAAgB8X,GACvCD,EAAW9X,UAAY,CACnB3Z,QAAS4Z,IAAAA,KACT2K,MAAOoN,EACPP,OAAQO,EACRtuB,IAAKsuB,EACLnuC,IAAKmuC,EACL1V,OAAQ0V,EACRN,OAAQM,EACRL,OAAQK,EACRJ,QAASI,EACTzxB,MAAOyxB,EACPH,KAAMG,EACNlxD,SAAUm5C,IAAAA,MAGd,IAAMgY,EAAqBF,EAAev4D,QAAO,SAACwgD,EAAWkY,GAGzD,OAFAlY,EAAUkY,GAAajY,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,OAC9DD,EAAUkY,EAAY,UAAYjY,IAAAA,OAC3BD,IACR,IAEH9hD,EAAW8hD,WAAY,kBAChBiY,GAAkB,CACrB5xB,QAAS4Z,IAAAA,KACTn5C,SAAUm5C,IAAAA,Q,8KCxBDkY,G,SAAkBp4C,EAAAA,EAAAA,gBAAc,IAEhCgX,EAAe,Y,IAEpB9hC,EAAS,EAATA,UACA6R,EAAQ,EAARA,SACGsxD,GAAa,UAFhBnjE,YACA6R,aAIEuxD,GAAen4C,EAAAA,EAAAA,YAAWi4C,GAGhC,YAAyBhjE,IAFJF,EAEgBojE,EAFhBpjE,IAGf,SAACgjC,EAAAA,GAAQ,UAAKmgC,IACdtxD,GAQGgwB,EAAsB,Y,IAE3B7hC,EAAS,EAATA,UACA6R,EAAQ,EAARA,SAGJ,OACI,SAACqxD,EAAgB3jC,SAAQ,CAAC56B,MAAO3E,E,SAC5B6R,M,gpDC5BN,IAAMwxD,GAAgBrhE,EAAAA,EAAAA,SAAOyX,EAAAA,GAAa,Y,6BAApBzX,C,IAQJM,EAAAA,GAAAA,QAMZuqB,EAAa7qB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIpBY,SAAAA,G,IAAKA,EAAAA,OAAC,OAADA,QAAC,IAADA,GAAe,QAAfA,EAAAA,EAAG01B,oBAAY,IAAf11B,OAAAA,EAAAA,EAAiBsR,aAAc,KAEjB5R,EAAAA,GAAAA,QAKZqG,EAAiB3G,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIxBY,SAAAA,G,IAAKA,EAAAA,OAAC,OAADA,QAAC,IAADA,GAAe,QAAfA,EAAAA,EAAG01B,oBAAY,IAAf11B,OAAAA,EAAAA,EAAiB0gE,iBAAkB,KAErBhhE,EAAAA,GAAAA,QAKZihE,EAAevhE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAItBY,SAAAA,G,IAAKA,EAAAA,OAAC,OAADA,QAAC,IAADA,GAAe,QAAfA,EAAAA,EAAG01B,oBAAY,IAAf11B,OAAAA,EAAAA,EAAiB4gE,eAAgB,KAEnBlhE,EAAAA,GAAAA,QAMZF,EAAQJ,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,IACfK,EAAAA,EAAAA,GAImBC,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,IAMGwX,EAAO7X,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,IACdK,EAAAA,EAAAA,EAEOJ,EAAAA,EAAAA,SAEYK,EAAAA,GAAAA,QC7BzB,EAjCkB,Y,IACduP,EAAQ,EAARA,SACAvO,EAAK,EAALA,MACA2tB,EAAW,EAAXA,YACAhd,EAAqB,EAArBA,sBACAE,EAAwB,EAAxBA,yBACAN,EAAqB,EAArBA,sBACGxQ,GAAK,UANRwO,WACAvO,QACA2tB,cACAhd,wBACAE,2BACAN,0BAGM4vD,EAAsC,kBAAhBxyC,EAE5B,OACI,UAACpqB,GAAgB,gBAACyxB,aAAcnkB,GAA8B9Q,GAAK,C,WAC/D,UAACwD,EAAa,CAACyxB,aAAcrkB,E,WACzB,SAACpN,EAAQ,C,SAAEvD,IACV2tB,EACKwyC,GACI,SAAC58D,EAAO,C,SAAEoqB,IACVA,EACJ,SAGV,SAACpqB,EAAiB,CAACyxB,aAAcrkB,E,UAC7B,SAACyvD,EAAAA,EAAgB,CAACprC,aAAczkB,E,UAC5B,SAAChN,EAAe,CAACyxB,aAAcrkB,E,SAC1BpC,c,wzECjClB,IAAMnQ,GAAaM,EAAAA,EAAAA,UAAOL,EAAAA,EAAAA,GAAeC,EAAAA,KAAa,Y,6BAAnCI,C,KACbqB,SAAAA,G,OAASA,EAAMqQ,OAAS,SAGbpR,EAAAA,GAAAA,QAKXT,GAAYG,EAAAA,EAAAA,UAAOF,EAAAA,EAAAA,GAAcF,EAAAA,KAAa,Y,6BAAlCI,C,KACZqB,SAAAA,G,OAASA,EAAMqQ,OAAS,SAGbpR,EAAAA,GAAAA,QAKXC,EAASP,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IASEM,EAAAA,GAAAA,QAOXoG,EAAY1G,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACVqB,SAAAA,G,OAASA,EAAM8T,WAAa,IAAM,OAE/BlV,EAAAA,EAAAA,OAEGE,EAAAA,EAAAA,kBAIRC,EAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACfK,EAAAA,EAAAA,GAEkBC,EAAAA,GAAAA,QAMXwvB,EAAc9vB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACrBK,EAAAA,EAAAA,GAIOshE,EAAgB3hE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIhBW,GAASX,EAAAA,EAAAA,SAAOc,EAAAA,IAAW,Y,6BAAlBd,C,IAGGM,EAAAA,GAAAA,QAKZshE,EAAY5hE,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAOIM,EAAAA,GAAAA,QCoE7B,GDlD6BN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACvBK,EAAAA,EAAAA,UACOJ,EAAAA,EAAAA,aAIgBD,EAAAA,QAAAA,EAAAA,WAAQ,C,8BAARA,C,IACvBK,EAAAA,EAAAA,UACOJ,EAAAA,EAAAA,MCtEqB,Y,IAC9BoE,EAAM,EAANA,OACAyM,EAAO,EAAPA,QACAxP,EAAK,EAALA,MACA2tB,EAAW,EAAXA,YACApf,EAAQ,EAARA,SACAtO,EAAU,EAAVA,WACAsgE,EAAiB,EAAjBA,kBACAzsD,EAAa,EAAbA,cACA7V,EAAM,EAANA,OACA8R,EAAQ,EAARA,SAG0BvT,GAAAA,EAAAA,EAAAA,YAAnBS,EAAmBT,EAAkB,GAA9B+D,EAAY/D,EAAkB,GACpBA,GAAAA,EAAAA,EAAAA,YAAjBQ,EAAiBR,EAAkB,GAA7BgE,EAAWhE,EAAkB,GACAA,GAAAA,EAAAA,EAAAA,WAAS,GAA5CiE,EAAmCjE,EAAe,GAAnCkE,EAAoBlE,EAAe,GACrBA,GAAAA,EAAAA,EAAAA,WAAS,GAAtCgkE,EAA6BhkE,EAAe,GAAhCikE,EAAiBjkE,EAAe,GACfA,GAAAA,EAAAA,EAAAA,WAAS,GAAtCqX,EAA6BrX,EAAc,GAA/BkkE,EAAiBlkE,EAAc,IAElDuE,EAAAA,EAAAA,YAAU,WACNL,MAAyB,OAALzD,QAAK,IAALA,OAAAA,EAAAA,EAAO+D,YAAe,OAAJhE,QAAI,IAAJA,OAAAA,EAAAA,EAAMgE,YACnC,OAAL/D,QAAK,IAALA,OAAAA,EAAAA,EAAO+D,WAAe,OAAJhE,QAAI,IAAJA,OAAAA,EAAAA,EAAMgE,UAAWu/D,GACnCA,MAEL,CAACtjE,EAAOD,EAAMujE,KAEjBx/D,EAAAA,EAAAA,YAAU,WACN0/D,GAAc,KACf,CAACxiE,KAEJ8C,EAAAA,EAAAA,YAAU,WACDgC,GACD29D,GAAc,KAEnB,CAAC39D,IAGJ,IAAM7B,EAAkB,SAACC,EAAoBC,GAEpCo/D,QAAmC5jE,IAArBuE,EAAWE,SAC1ByO,EAAAA,EAAAA,GAAc,CACVrB,MAAO,UACPsB,SAAAA,EACAhS,OAAQ,UACRb,MAAOe,IAEXwiE,GAAc,IAElBr/D,EAAUD,IAqBd,OAEI,SAACgV,EAAAA,EAAY,CAACpT,OAAQA,EAAQyM,QAASA,E,UACnC,UAACjM,EAAY,CAACsQ,WAAYA,E,UACrB7T,IAAS,SAACuD,EAAQ,C,SAAEvD,IACpB2tB,IAAe,SAACpqB,EAAc,C,SAAEoqB,KACjC,UAACgzC,OAAI,CAACr/D,SAxBI,SAACmN,GACnBA,EAAMjN,iBACNk/D,GAAc,GAEVjgE,IACAqT,EAAc,CACVvW,KAAS,OAAJP,QAAI,IAAJA,OAAAA,EAAAA,EAAMqE,QAAS,GACpBpE,OAAY,OAALA,QAAK,IAALA,OAAAA,EAAAA,EAAOoE,QAAS,KAGtB,OAALpE,QAAK,IAALA,GAAAA,EAAO4Y,aACH,OAAJ7Y,QAAI,IAAJA,GAAAA,EAAM6Y,aAENtV,OAAS3D,GACT4D,OAAQ5D,K,UAWC2R,IAAY,SAAChL,EAAgB,C,SAAEgL,KAChC,UAAChL,EAAS,C,WACN,SAACA,EAAY,CACT6M,MAAM,MACN1O,SAAU,SAACP,G,OAAuBD,EAAgBC,EAAYX,IAC9DmB,YAAY,8CACZ3E,KAAK,OACL4E,aAAa,yFACb0M,UAAQ,KAEZ,SAAC/K,EAAa,CACV6M,MAAM,MACN1O,SAAU,SAACP,G,OAAuBD,EAAgBC,EAAYZ,IAC9DoB,YAAY,6CACZ3E,KAAK,SACL4E,aAAa,iHAGrB,SAAC2B,EAAY,C,UACT,SAACvB,EAAAA,EAAU,CACP/B,WAAYA,EACZiC,SA/HT,iCAkIC,SAACqB,EAAS,CACNnB,KAAK,SACLE,KAAMrC,EACNsC,UAAW9B,IAAkBoT,QAGrC,SAACvK,EAAAA,EAAQ,CAACuK,WAAYA,EAAYpD,SAAU,qB,qlJCzI5D,IAAMyV,GAAStjB,EAAAA,EAAAA,WAAS,KA6BXg+D,GAAaliE,EAAAA,EAAAA,SAAOmiE,EAAAA,EAAAA,MAAgB,Y,4BAAvBniE,C,IAKVE,EAAAA,EAAAA,EAEDsnB,GAGX5mB,SAAAA,G,IAAKA,EAAAA,OAAa,QAAbA,EAAAA,EAAEwhE,mBAAW,IAAbxhE,OAAAA,EAAAA,EAAeyhE,oBAvBf/rD,EAAAA,EAAAA,KAAG,QA0BCknB,EAAO,SAACn8B,GACjB,IAAM,EAAwBA,EAAtBwO,SAAa+X,GAAI,OAAKvmB,EAAK,CAA3BwO,aAER,OACI,SAACqyD,GAAU,gBAAC3+D,YAAU,eAAkBqkB,GAAI,C,SACvC/X,MAKP69C,EAAa1tD,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,KAQbsiE,EAAiBtiE,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,KAIP,SAACqB,GACb,OAAKA,EAAMkhE,UAGJlhE,EAAMkhE,UAAY,KAFhB,WAWAC,EAAW,SAACnhE,GACrB,IAAQwO,EAA6DxO,EAA7DwO,SAAU4yD,EAAmDphE,EAAnDohE,SAAU,EAAyCphE,EAAzC+gE,YAAeM,EAAQ,EAARA,SAAUH,EAAS,EAATA,UAErD,OACI,UAACD,EAAc,CACX/+D,YAAU,kBACVof,IAAK8/C,EACLF,UAAWA,E,UAEZ1yD,IACE6yD,IACD,SAAChV,EAAU,C,UACT,SAAC/sD,EAAAA,EAAM,CACH+I,MAAM,YACNvD,KAAK,QACLnC,QAAS0+D,EAAS1+D,QAClBH,SAAU6+D,EAASC,U,SAElBD,EAASvzC,gBAQtByzC,EAAe5iE,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,KAELqB,SAAAA,G,OAASA,EAAMwhE,YAAc,OAAS,SAIhC5iE,EAAAA,EAAAA,OAClBI,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,YAOaA,EAAAA,EAAAA,aAIlB6iE,EAAoB9iE,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,IAMJC,EAAAA,EAAAA,OAClBI,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,YAOaA,EAAAA,EAAAA,aASlB8iE,EAAa/iE,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,KAMbgjE,EAAqBhjE,EAAAA,QAAAA,EAAAA,WAAQ,C,4BAARA,C,IAOLC,EAAAA,EAAAA,OAClBI,EAAAA,EAAAA,GACOJ,EAAAA,EAAAA,YAOaA,EAAAA,EAAAA,aAIXgjE,EAAe,SAAC5hE,GAC3B,IACIwO,EAMAxO,EANAwO,SACAqiD,EAKA7wD,EALA6wD,WACAuH,EAIAp4D,EAJAo4D,UACAtH,EAGA9wD,EAHA8wD,WACAsQ,EAEAphE,EAFAohE,SACAS,EACA7hE,EADA6hE,WAEEx9D,EAAOrE,EAAMooB,KAAK/jB,KAAOrE,EAAMooB,KAAK/jB,KAAO,KACjD,OACI,UAACs9D,GAAkB,gBAACl/D,KAAM4B,EACtBid,IAAK8/C,EACLhJ,UAAWA,EACXtH,WAAYA,EACZD,WAAYA,GACRgR,GAAU,C,UACbrzD,EACAsiD,IAAc,SAAC4Q,EAAU,CAAC7mD,IAAKinD,IAAWhnD,IAAI,eAK5CinD,EAAS,SAAC/hE,GACnB,IACIwO,EAOAxO,EAPAwO,SACAqiD,EAMA7wD,EANA6wD,WACAuH,EAKAp4D,EALAo4D,UACAtH,EAIA9wD,EAJA8wD,WACAsQ,EAGAphE,EAHAohE,SACAS,EAEA7hE,EAFA6hE,WACAL,EACAxhE,EADAwhE,YAEJ,OACI,UAACD,GAAY,gBACTC,YAAaA,EACblgD,IAAK8/C,EACLhJ,UAAWA,EACXtH,WAAYA,EACZD,WAAYA,GACRgR,GAAU,C,UACbrzD,EACAsiD,IAAc,SAAC4Q,EAAU,CAAC7mD,IAAKinD,IAAWhnD,IAAI,eAK9CknD,EAAc,SAAChiE,GACxB,IACIwO,EAMAxO,EANAwO,SACAqiD,EAKA7wD,EALA6wD,WACAuH,EAIAp4D,EAJAo4D,UACAtH,EAGA9wD,EAHA8wD,WACAsQ,EAEAphE,EAFAohE,SACAS,EACA7hE,EADA6hE,WAEJ,OACI,UAACJ,GAAiB,gBAACngD,IAAK8/C,EACLhJ,UAAWA,EACXtH,WAAYA,EACZD,WAAYA,GAAgBgR,GAAU,C,UACpDrzD,EACAsiD,IAAc,SAAC4Q,EAAU,CAAC7mD,IAAKinD,IAAWhnD,IAAI,eAKrDmnD,EAAatjE,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,IAQfK,EAAAA,EAAAA,IAEkBgB,SAAAA,GAClB,OAAIA,EAAMkiE,WACDtjE,EAAAA,EAAAA,QAGFoB,EAAMo4D,UAAYx5D,EAAAA,EAAAA,WAAoBA,EAAAA,EAAAA,eAM3B,SAACoB,GACnB,OAAIA,EAAM6wD,WACDjyD,EAAAA,EAAAA,YAGFA,EAAAA,EAAAA,UAOSoB,SAAAA,G,OAASA,EAAMkiE,WAAatjE,EAAAA,EAAAA,UAAmBA,EAAAA,EAAAA,cAItDujE,EAAU,Y,IAAGf,EAAQ,EAARA,SAAUS,EAAU,EAAVA,WAAet7C,GAAI,UAA7B66C,WAAUS,eAEhC,cADOt7C,EAAS,IACT,SAAC07C,GAAU,QAAC3gD,IAAK8/C,GAAcS,EAAgBt7C,KAG7ClhB,EAAY1G,EAAAA,QAAAA,IAAAA,WAAU,C,4BAAVA,C,KACdqB,SAAAA,G,OAASA,EAAMqQ,OAAS,UAG/BrQ,SAAAA,G,OAAUA,EAAM+I,eAAgBkM,EAAAA,EAAAA,KAAG,QAOjC3M,EAAO3J,EAAAA,QAAAA,KAAAA,WAAW,C,4BAAXA,C,KACQ,Y,OAAO,EAAJ0F,QACb,Y,QAAGS,K,YAAI,IAAG,IAAC,KACV,Y,QAAGA,K,YAAI,IAAG,IAAC,KAEnB9E,SAAAA,G,OAASA,EAAMgD,SAAUiS,EAAAA,EAAAA,KAAG,QAG1Bq0C,EAAW3qD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACN,Y,QAAGmG,K,YAAI,IAAG,KAAE,KACX,Y,QAAGA,K,YAAI,IAAG,KAAE,KAEpB9E,SAAAA,G,OAASA,EAAMgD,SAAUiS,EAAAA,EAAAA,KAAG,QAG1BmtD,GAAYzjE,EAAAA,EAAAA,SAAOmiE,EAAAA,EAAAA,mBAA6B,Y,6BAApCniE,C,KASZ0jE,IAAQ1jE,EAAAA,EAAAA,SAAOmiE,EAAAA,EAAAA,gBAA0B,Y,6BAAjCniE,C,KASD2jE,GAAoBtiE,SAAAA,G,IAChBA,EAATgD,EAAc,OAALhD,QAAK,IAALA,GAAkB,QAAlBA,EAAAA,EAAO+gE,mBAAW,IAAlB/gE,OAAAA,EAAAA,EAAoBkiE,WAEnC,OACE,SAACE,GAAS,kBAAKpiE,GAAK,C,UAClB,SAACspD,EAAQ,CAACtmD,OAAQA,E,UAChB,SAACu/D,EAAAA,EAAe,UAMXC,GAAiBxiE,SAAAA,G,IACbA,EAATgD,EAAc,OAALhD,QAAK,IAALA,GAAkB,QAAlBA,EAAAA,EAAO+gE,mBAAW,IAAlB/gE,OAAAA,EAAAA,EAAoBkiE,WAC7B5xC,EAAQttB,EAASpE,EAAAA,EAAAA,UAAmBA,EAAAA,EAAAA,YAC1C,OACE,SAACyjE,IAAK,kBAAKriE,GAAK,C,UACd,SAACsI,EAAI,CACHxD,KAAK,KACLT,KAAM,+GAAiI,OAAlBisB,EAAM+oB,MAAM,EAAG,GAAG,4EACvIr2C,OAAQA,QAMHiyB,GAAe,CAC1BwtC,eAAgB,SAACC,G,OAAc,kBAC1BA,GAAQ,CACXvtC,QAAS,cAEXvsB,iBAAkB,SAAC85D,G,OAAc,kBAC5BA,GAAQ,CACXC,KAAM,oBACNryC,MAAO1xB,EAAAA,EAAAA,aACPgkE,UAAW,OACXztC,QAAS,uBAEX0tC,eAAgB,SAACH,G,OAAc,kBACxBA,GAAQ,CACXC,KAAM,oBACNryC,MAAO1xB,EAAAA,EAAAA,gBAEXgD,YAAa,SAAC8gE,G,OAAc,kBACrBA,GAAQ,CACXpyC,MAAO1xB,EAAAA,EAAAA,gBAEXkQ,MAAO,SAAC4zD,G,OAAc,kBACjBA,GAAQ,CACXpyC,MAAO1xB,EAAAA,EAAAA,eAETkkE,YAAa,SAACJ,EAAU5lE,G,OAAW,kBAC9B4lE,GAAQ,CACXpyC,MAAOxzB,EAAMikE,YAAYmB,WAAatjE,EAAAA,EAAAA,UAAmBA,EAAAA,EAAAA,iB,uIClXvD6G,EAAS,Y,IAAG4K,EAAK,EAALA,MAAO0yD,EAAG,EAAHA,IAAKC,EAAS,EAATA,UAAWlC,EAAU,EAAVA,WAAYmC,EAAS,EAATA,UAAWl6D,EAAY,EAAZA,aAAcm6D,EAAQ,EAARA,SAAU1B,EAAW,EAAXA,YAAapsD,EAAQ,EAARA,SAAamR,GAAI,UAApGlW,QAAO0yD,MAAKC,YAAWlC,aAAYmC,YAAWl6D,eAAcm6D,WAAU1B,cAAapsD,aAC3F+tD,EAAkBF,EAAYG,EAAAA,GAAcC,EAAAA,GAE9CC,EAAeJ,EACjBtB,EAAAA,GACAJ,EACIQ,EAAAA,GACAD,EAAAA,GAEN,OACI,SAAC18D,EAAAA,GAAS,CAACshB,GAAIo8C,EAAK1yD,MAAOA,EAAOtH,aAAcA,EAAc7G,YAAWkT,EAAUhR,GAAG,O,UAClF,SAAC++D,GAAe,QACZ7hD,IAAK0hD,EACLj6D,aAAcA,EACdw6D,OAAQtuC,EAAAA,GACR6rC,YAAY,QACR0C,mBAAoB,KACpBrB,QAAAA,EAAAA,GACAJ,OAAQuB,EACRnnC,KAAAA,EAAAA,GACAglC,SAAAA,EAAAA,GACAmB,kBAAAA,EAAAA,GACAE,eAAAA,EAAAA,IACG1B,IAEHv6C,OAMpB9gB,EAAOiiD,UAAY,CACfr3C,MAAOs3C,IAAAA,OACPmZ,WAAYnZ,IAAAA,OACZsb,UAAWtb,IAAAA,KACX5+C,aAAc4+C,IAAAA,KACd6Z,YAAa7Z,IAAAA,MAGjBliD,EAAOoxB,aAAe,CAClB9tB,cAAc,GAGlB,O,6DCpCA,KAAe9E,EAAAA,EAAAA,IAvBG,Y,QAEVC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OAAO,UAACC,IAAC,CAACC,GAAI,U,WACV,SAACC,OAAI,CACDC,EAAE,+BACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,sBACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,eAOvB,e,6DCPJ,KAAeP,EAAAA,EAAAA,IAlBS,Y,QAEhBC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OACI,SAACC,IAAC,CAACC,GAAI,O,UACH,SAACC,OAAI,CACDC,EAAE,qFACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,cAQ3B,sB,6DCiBJ,KAAeP,EAAAA,EAAAA,IArCM,Y,QAEbC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OAAO,UAACC,IAAC,CAACC,GAAI,O,WACV,SAACC,OAAI,CACDC,EAAE,uFACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,gDACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,WACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,WACFJ,YAAaA,EACbu/D,iBAAiB,KACjBl/D,cAAc,QACdC,eAAe,eAOvB,kB,4DChBJ,KAAeP,EAAAA,EAAAA,IAvBE,Y,QAETC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OACI,qB,UACI,UAACC,IAAC,CAACC,GAAI,O,WACH,SAACC,OAAI,CACDC,EAAE,6LAEFJ,YAAaA,KAEjB,SAACG,OAAI,CACDC,EAAE,+KAEFJ,YAAaA,WAS7B,a,6DCMJ,KAAeD,EAAAA,EAAAA,IA/BI,Y,QAEXC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OAAO,sB,WACH,SAACC,IAAC,CAACC,GAAI,U,UACH,SAACC,OAAI,CACDC,EAAE,wFACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,aAGvB,UAACL,IAAC,CAACC,GAAI,O,WACH,SAACC,OAAI,CACDC,EAAE,WACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,sBACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,kBAQ3B,gB,6DCFJ,KAAeP,EAAAA,EAAAA,IA/BQ,Y,QAEfC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OAAO,sB,WACH,SAACC,IAAC,CAACC,GAAI,U,UACH,SAACC,OAAI,CACDC,EAAE,uFACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,aAGvB,UAACL,IAAC,CAACC,GAAI,O,WACH,SAACC,OAAI,CACDC,EAAE,YACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,qBACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,kBAQ3B,qB,6DCRJ,KAAeP,EAAAA,EAAAA,IAzBI,Y,QAEXC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OAAO,sB,WACH,SAACC,IAAC,CAACC,GAAI,U,UACH,SAACC,OAAI,CACDC,EAAE,wFACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,aAGvB,SAACL,IAAC,CAACC,GAAI,O,UACH,SAACC,OAAI,CACDC,EAAE,kCACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,iBAQ3B,gB,6DCDJ,KAAeP,EAAAA,EAAAA,IA1BF,Y,QAELC,YAAAA,OAAW,IAAG,MAAG,EAGrB,OACI,qB,UACI,UAACC,IAAC,CAACC,GAAI,O,WACH,SAACC,OAAI,CACDC,EAAE,kHAEFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,WAEnB,SAACH,OAAI,CACDC,EAAE,sFACFJ,YAAaA,EACbK,cAAc,QACdC,eAAe,iBAS/B,S,iJC3BEk/D,EAAS,CACXxuC,MAAO,CACHI,UAAW,mCACXF,aAAct2B,EAAAA,EAAAA,YACd6kE,SAAU,OACVC,UAAW,OACXzuC,QAAS,WACT0uC,QAAS,QACTC,WAAY,uDAEhBC,WAAY,CACRC,aAAa,EACbF,YAAY,IA6BpB,EAzBqB,CACjBp4C,MAAO,CACHwJ,OAAO,kBACAwuC,EAAOxuC,OAAK,CACfpZ,WAAYld,EAAAA,EAAAA,OACZ0xB,MAAO1xB,EAAAA,EAAAA,cAEXmlE,YAAY,kBACLL,EAAOK,YAAU,CACpBzzC,MAAO1xB,EAAAA,EAAAA,UAGfqmD,KAAM,CACF/vB,OAAO,kBACAwuC,EAAOxuC,OAAK,CACfpZ,WAAYld,EAAAA,EAAAA,cACZ0xB,MAAO1xB,EAAAA,EAAAA,YAEXmlE,YAAY,kBACLL,EAAOK,YAAU,CACpBzzC,MAAO1xB,EAAAA,EAAAA,kBCQnB,EA3CgB,Y,QAAGkY,MAAAA,OAAK,IAAG,UAAO,MAAE2kD,SAAAA,OAAQ,IAAG,GAAK,EAAExmC,EAAY,EAAZA,aAAiBj1B,GAAK,UAAzD8W,QAAiB2kD,WAAkBxmC,iBACdx4B,GAAAA,EAAAA,EAAAA,WAAS,GAAtCwnE,EAA6BxnE,EAAe,GAAhCynE,EAAiBznE,EAAe,GACjBA,GAAAA,EAAAA,EAAAA,WAAS,yBAApCqpB,EAA2BrpB,EAAe,GAA/B0nE,EAAgB1nE,EAAe,IAEjDuE,EAAAA,EAAAA,YAAU,WACFy6D,EACA,gCAAuCvF,MAAKkO,SAAAA,GACxCD,EAAaC,GACbF,GAAc,MAGlB,+BAAwChO,MAAKkO,SAAAA,GACzCD,EAAaC,GACbF,GAAc,QAGvB,CAACzI,IAEJ,IAAM4I,GAAmB59D,EAAAA,EAAAA,UAAQ,WAC7B,GAAI8Q,EAAOT,GAAQ,CACf,IAA8BS,EAAAA,EAAOT,GAA7Boe,EAAsB3d,EAAtB2d,MAAO6uC,EAAexsD,EAAfwsD,WACf,MAAO,CACH7uC,OAAO,UACAA,EACY,OAAZD,QAAY,IAAZA,OAAAA,EAAAA,EAAcC,OAErB6uC,YAAY,UACLA,EACY,OAAZ9uC,QAAY,IAAZA,OAAAA,EAAAA,EAAc8uC,gBAI9B,CAAC9uC,EAAcne,IAElB,OAAOmtD,IACH,SAACn+C,EAAU5U,SAAO,QACdgkB,MAAOmvC,EACPniE,YAAWu5D,EAAW,WAAa,aAC/Bz7D,M,gvCCpChB,IAAMskE,EAAc,YAUdC,EAAW,Y,QAAGC,OAAAA,OAAM,IAAG,gBAAa,EACtC,OAAO5lE,EAAAA,EAAO4lE,IA4BLC,EAAK9lE,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACL,Y,QAAG+lE,Q,YAAO,IAAG,GAAK,EAAiB,OAAS,UACnD,Y,QAAGj8D,Y,YAAW,IAAG,GAAI,EAAqB,oBAAsB67D,IAEzDC,GAEP,Y,OAAW,EAARt7B,SAA0BjqC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,KAErBC,EAAAA,GAAAA,QACf,Y,QAAGwJ,Y,YAAW,IAAG,GAAI,EAAqB,uBAAyB67D,KACnE,Y,OAAU,EAAPp7B,QAAwBlqC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,MAQnCwJ,EAAK7J,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACL,Y,QAAG+lE,Q,YAAO,IAAG,GAAK,EAAiB,OAAS,UACnD,Y,QAAGj8D,Y,YAAW,IAAG,GAAI,EAAqB,oBAAsB67D,IAEzDC,GAEP,Y,IAAGt7B,EAAQ,EAARA,SAAUrJ,EAAQ,EAARA,S,OAAeqJ,EAAWrJ,EAAW5gC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,KAErDC,EAAAA,GAAAA,QACf,Y,IAAGiqC,EAAO,EAAPA,QAAS,EAAF,EAAEtJ,SAAAA,OAAQ,IAAG,GAAK,E,OAAOsJ,EAAUlqC,EAAAA,EAAAA,GAAW4gC,EAAW5gC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,MAQ3EuqC,EAAK5qC,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACL,Y,QAAG+lE,Q,YAAO,IAAG,GAAK,EAAiB,OAAS,UACnD,Y,QAAGj8D,Y,YAAW,IAAG,GAAI,EAAqB,oBAAsB67D,IAEzDC,GAEP,Y,OAAW,EAARt7B,SAA0BjqC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,KAErBC,EAAAA,GAAAA,QACf,Y,OAAU,EAAPiqC,QAAwBlqC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,MACtC,Y,QAAGyJ,Y,YAAW,IAAG,GAAI,EAAqB,oBAAsB67D,KAQ7DK,EAAKhmE,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACL,Y,QAAG+lE,Q,YAAO,IAAG,GAAK,EAAiB,OAAS,UACnD,Y,QAAGj8D,Y,YAAW,IAAG,GAAI,EAAqB,oBAAsB67D,IAEzDC,GAEP,Y,IAAGt7B,EAAQ,EAARA,SAAUrJ,EAAQ,EAARA,S,OAAeqJ,EAAWrJ,EAAW5gC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,KAErDC,EAAAA,GAAAA,QACf,Y,IAAGiqC,EAAO,EAAPA,QAAS,EAAF,EAAEtJ,S,YAAQ,IAAG,GAAK,GAAmBsJ,EAAUlqC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,MAOjE4lE,EAAKjmE,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACL,Y,QAAG+lE,Q,YAAO,IAAG,GAAK,EAAiB,OAAS,UACnD,Y,QAAGj8D,Y,YAAW,IAAG,GAAI,EAAqB,oBAAsB67D,IAEzDC,EAEPvlE,EAAAA,EAAAA,IAMO6lE,EAAKlmE,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KACL,Y,QAAG+lE,Q,YAAO,IAAG,GAAK,EAAiB,OAAS,SAE5CH,EAEPvlE,EAAAA,EAAAA,Q,orCC7HN,IAAM8lE,EAAgBnmE,EAAAA,QAAAA,EAAAA,WAAQ,C,6BAARA,C,KAET,Y,IAAG6lE,EAAM,EAANA,O,OAAaA,GAAkB,aACzC,Y,OAAc,EAAX/7D,YAAgC,uBAAyB,MA2BrDs8D,EAAmC,Y,IAAG77B,EAAO,EAAPA,QAASD,EAAQ,EAARA,SAAUrJ,EAAQ,EAARA,S,MAA0C,sBAKvF3gC,OAHfD,EAAAA,EAAMkqC,GAAS,uCAKXlqC,OAFWC,EAAAA,GAAAA,OAAuB,kCAEG,OAArCD,EAAAA,EAAM4gC,EAAWsJ,EAAUD,GAAU,0BAKtC+7B,GAAarmE,EAAAA,EAAAA,SAAOmmE,GAAc,Y,6BAArBnmE,C,IACpBK,EAAAA,EAAAA,EAGIA,EAAAA,EAAAA,OAGeC,EAAAA,GAAAA,QACf,Y,QAAGwJ,Y,YAAW,IAAG,GAAK,EAAqB,uBAAyB,KACpEzJ,EAAAA,EAAAA,KAIGimE,GAAatmE,EAAAA,EAAAA,SAAOmmE,GAAc,Y,6BAArBnmE,C,IACpBK,EAAAA,EAAAA,EAGIA,EAAAA,EAAAA,OAGeC,EAAAA,GAAAA,QACf,Y,QAAG2gC,S,YAAQ,IAAG,GAAK,EAAkB5gC,EAAAA,EAAAA,EAAUA,EAAAA,EAAAA,MAI5CkmE,GAAavmE,EAAAA,EAAAA,SAAOmmE,GAAc,Y,6BAArBnmE,C,IACpBK,EAAAA,EAAAA,EACA+lE,EAAiC,CAAE77B,QAAS,UAAWD,SAAU,WAE9ChqC,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,GAIGiQ,GAAatQ,EAAAA,EAAAA,SAAOmmE,GAAc,Y,6BAArBnmE,C,IACpBK,EAAAA,EAAAA,IACA,Y,QAAG4gC,S,OAAuBmlC,EAAiC,CAAE77B,QAAS,WAAYD,SAAU,UAAWrJ,cAA5F,IAAG,GAAK,MAEA3gC,EAAAA,GAAAA,QACf,Y,QAAG2gC,S,YAAQ,IAAG,GAAK,EAAkB5gC,EAAAA,EAAAA,GAAWA,EAAAA,EAAAA,KAI7C6oD,GAAalpD,EAAAA,EAAAA,SAAOmmE,GAAc,Y,6BAArBnmE,C,IACpBK,EAAAA,EAAAA,IAGIA,EAAAA,EAAAA,WAIGmmE,GAAiBxmE,EAAAA,EAAAA,SAAOmmE,GAAc,Y,6BAArBnmE,C,IACxBK,EAAAA,EAAAA,SAEmBC,EAAAA,GAAAA,OACfD,EAAAA,EAAAA,U,4JCnGV,IAAMmqC,GAAyBxqC,EAAAA,EAAAA,SAAOmnD,EAAAA,GAAc,Y,6BAArBnnD,C,KAI/B,O,ugBCaO,IAAMgmD,EAAU,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAOxDygB,EAAW,SAACC,GACrB,QAAS1gB,EAAQ77B,MAAKhW,SAAAA,G,OAAMA,IAAOuyD,MAoBjCC,EAA8B,SAACC,G,OAAgCA,EAAO5hE,KAAIqQ,SAAAA,G,MAAQ,GAAQ,OAALA,EAAK,SAAK1H,KAAK,MAE7Fk5D,EAA6B,Y,IAAGxjE,EAAO,EAAPA,QAASknC,EAAO,EAAPA,QAASD,EAAQ,EAARA,SAC3D,OAAIjnC,GACOiT,EAAAA,EAAAA,KAAG,IACKqwD,EAA4BtjE,IAEpCknC,GAAWD,GACXh0B,EAAAA,EAAAA,KAAG,IACKqwD,EAA4Bp8B,GAElBu8B,EAAAA,GAAAA,OACNH,EAA4Br8B,SAL5C,GAWLlnC,EAAkBpD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAGlB6mE,GAGN,Q,isBCpEO,IAyCD1f,EAAgBnnD,EAAAA,QAAAA,IAAAA,WAAU,C,2BAAVA,C,KAMhB,Y,QAAGyqC,WAAAA,OAAU,IAAG,QAAK,MAAEs8B,SAAAA,OAAQ,IAAG,GAAK,MAAEr8B,MAAAA,OAAK,IAAG,SAAM,MAAEs8B,gBAAAA,OAAe,IAAG,WAAQ,MAAEC,YAAAA,OAAW,IAAG,WAAQ,E,OAAO3wD,EAAAA,EAAAA,KAAG,IACjGm0B,EAAas8B,EAAW,WAAa,GAC1Cr8B,EACMs8B,EACJC,MA1BG,Y,IAAGt8B,EAAK,EAALA,MAAOL,EAAQ,EAARA,SAAUC,EAAO,EAAPA,QAC1C,MAAqB,qBAAVI,GACAr0B,EAAAA,EAAAA,KAAG,KACC,W,MAAM,GAAS,OAANq0B,EAAM,UAGnBr0B,EAAAA,EAAAA,KAAG,KACC,W,MAAM,GAAW,OAARi0B,EAAQ,QAEHjqC,EAAAA,GAAAA,QACV,W,MAAM,GAAY,OAATgqC,EAAS,YAsBzC,O,+gBCtBA,IAAM48B,EAAc,SAACvkE,G,YAAwCzE,IAAVyE,EAAsB,GAAS,OAANA,EAAM,MAAM,QAElFwkE,EAAgC,Y,QAClCxV,UAAAA,OAAS,IAAG,aAAU,EACtByV,EAAI,EAAJA,KACAC,EAAK,EAALA,MACAn2C,EAAM,EAANA,OACAD,EAAO,EAAPA,QACAq2C,EAAM,EAANA,OACAC,EAAO,EAAPA,Q,OAEAjxD,EAAAA,EAAAA,KAAG,IACaq7C,EACD4V,GAAW,EACfL,EAAYI,GAAUF,GACrBF,EAAYI,GAAUD,GACrBH,EAAYI,GAAUp2C,GACrBg2C,EAAYI,GAAUr2C,KAG3Bu2C,EAA6B,SAACnmE,GACvC,GAAIA,EAAMgC,QACN,OAAO8jE,EAA8B9lE,EAAMgC,SAE3C,IAAQknC,EAAsBlpC,EAAtBkpC,QAASD,EAAajpC,EAAbipC,SAEjB,OAAOh0B,EAAAA,EAAAA,KAAG,IACJ6wD,EAA8B58B,GAEXjqC,EAAAA,GAAAA,OACf6mE,EAA8B78B,KAM1CtZ,EAAqBhxB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACrBwnE,GAWN,Q,snBCpFO,IAcMC,EAA2B,Y,IAAGvgB,EAAO,EAAPA,QAAS5c,EAAQ,EAARA,SAAUC,EAAO,EAAPA,QAC1D,OAAI2c,GACO5wC,EAAAA,EAAAA,KAAG,IAAkB4wC,IAErB5wC,EAAAA,EAAAA,KAAG,IACWi0B,EAEIjqC,EAAAA,GAAAA,OACAgqC,IAM3Bqd,EAAmB3nD,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACnBynE,GAIOC,EAAa,SAAmBvgD,EAAsC9lB,GAC/E,OAAOrB,EAAAA,EAAAA,SAAOmnB,GAAU,Y,6BAAjBnnB,C,IACDynE,EAAyBpmE,KAKnC,Q,4HC5BasmE,EAAe,Y,IAAGh2C,EAAK,EAALA,MAAO,EAAF,EAAEi2C,UAAAA,OAAS,IAAG,QAAK,EAC7CC,GAAY//D,EAAAA,EAAAA,UAAQ,WACtB,OAAQ8/D,GACJ,IAAK,SACD,MAAO,eACX,IAAK,QACD,MAAO,iCACX,IAAK,OACD,MAAO,gCACX,IAAK,MACD,MAAO,oBAEhB,CAACA,IAEJ,OACI,SAAChc,MAAG,CACAl6C,MAAM,KACNC,OAAO,IACPm2D,QAAQ,WACRC,KAAK,OACLC,MAAM,6BACNzxC,MAAO,CAAEsxC,UAAAA,G,UAET,SAACniE,OAAI,CACDC,EAAE,iFACFoiE,KAAMp2C,O,uQClCf,IAAMs2C,GAAwBjoE,EAAAA,EAAAA,SAAOoD,EAAAA,IAAgB,Y,6BAAvBpD,C,KAEnB,Y,IAAG+R,EAAQ,EAARA,S,OAAem2D,EAAAA,EAAAA,GAA4C,CACxEn2D,SAAAA,EACAo2D,aAAc,aACdC,cAAe,WACfC,eAAWnqE,OAINoqE,GAAmBtoE,EAAAA,EAAAA,SAAOmnD,EAAAA,GAAc,Y,6BAArBnnD,C,KAEjBY,SAAAA,G,OAAKA,EAAEywB,UCNhBk3C,GAAc1iD,EAAAA,EAAAA,aAA8C,WAW/DlD,G,IAVC8jB,EAAO,EAAPA,QAAO,IACP10B,SAAAA,OAAQ,IAAG,eAAY,MACvBy2D,UAAAA,OAAS,IAAG,GAAI,MAEhBrrD,WAAAA,OAAU,IAAG,EAAAld,EAAAA,EAAAA,QAAc,MAC3BwoE,YAAAA,OAAW,IAAG,KAAE,MAChB9Z,OAAAA,OAAM,IAAG,IAAC,EACVt9B,EAAM,EAANA,OAEAluB,EAAS,EAATA,UAEMulE,GAAiB5gE,EAAAA,EAAAA,UAAQ,WAC3B,QAAQ,GACJ,IAAkB,SAAbiK,EACD,MAAO,OACX,IAAkB,UAAbA,EACD,MAAO,QACX,KAAKA,EAAS6wC,WAAW,OACrB,MAAO,MACX,QACI,MAAO,YAEhB,CAAC7wC,IAEJ,OACI,UAAClN,EAAmB,CAChB1B,UAAWA,EACXkuB,OAAQA,EACR1O,IAAKA,EACL8nB,WAAY,CAAC,OAAQ,SAASxH,SAASlxB,GAAY,MAAQ,SAC3Dg1D,SAAU,CAAC,aAAc,WAAY,YAAa,QAAQ9jC,SAASlxB,GACnE44B,MAAO,E,UAGH69B,IAAa,SAAC3jE,EAAwB,CAClCxB,SAAS6kE,EAAAA,EAAAA,GAAgB,CACrBn2D,SAAAA,EACAo2D,aAAc,CAAC,EAAG,EAAG,EAAGM,GACxBL,cAAe,CAAC,EAAGK,EAAa,GAChCJ,UAAW,CAAC,KAEhBt2D,SAAUA,EACVxO,YAAW,gB,UAEX,SAACokE,EAAY,CACTh2C,MAAOxU,EACPyqD,UAAWc,OAIvB,SAAC/gB,EAAAA,GAAgB,CACbpxB,MAAO,CAAEpZ,WAAAA,GACT+pC,QAASyH,E,UAET,SAACvrD,EAAAA,GAAe,CAACC,QAAS,CAAC,EAAG,IAAKE,YAAW,U,SACzCkjC,YAOrB8hC,EAAYxyD,YAAc,mBAE1B,S,oMCuDA,EAnH6B,Y,IACzBlG,EAAQ,EAARA,SACA42B,EAAO,EAAPA,QAAO,IAEP10B,SAAAA,OAAQ,IAAG,eAAY,EACvBqqB,EAAO,EAAPA,QACAosC,EAAS,EAATA,UAAS,IAETG,oBAAAA,OAAmB,IAAG,GAAI,MAC1Br3C,kBAAAA,OAAiB,IAAG,GAAK,EACzBs3C,EAAa,EAAbA,cACA93D,EAAO,EAAPA,QAEAqM,EAAU,EAAVA,WAAU,IACV0rD,IAAAA,OAAG,IAAG,IAAC,MACPJ,YAAAA,OAAW,IAAG,KAAE,EAChB9Z,EAAM,EAANA,OACAt9B,EAAM,EAANA,OAEMwoB,GAAOivB,EAAAA,EAAAA,GAAe,CAAErjE,GAAI,iBAC5BsjE,GAAaxnD,EAAAA,EAAAA,QAAuB,MACpC2S,EAAQ6yB,EAAAA,SAAAA,KAAcl3C,GACtBm5D,GAAWznD,EAAAA,EAAAA,UACXvR,EAASg5D,EAAS5mD,SCvCG,SAC3BO,EACAsmD,GAEA,IAAMvvC,EAAc,SAAC72B,GACb8f,EAAIP,UAAYO,EAAIP,QAAQyzC,SAAShzD,EAAEmN,SACvCi5D,MAIR5mE,EAAAA,EAAAA,YAAU,WAIN,OAHA4rB,SAASH,iBAAiB,UAAW4L,GACrCzL,SAASH,iBAAiB,WAAY4L,GAE/B,WACHzL,SAAS4a,oBAAoB,UAAWnP,GACxCzL,SAAS4a,oBAAoB,WAAYnP,ODyBjDyJ,CACI4lC,EACAJ,GAA0C,oBAAZ73D,GAA0BsrB,EAClDtrB,EACAo4D,MAGVtlB,EAAAA,EAAAA,IAA0B,WACtB,IAAMxyB,EAAU23C,EAAW3mD,QAE3B,GAAKpS,GAAWohB,EAAhB,CAIA,IAAsB+3C,GAAAA,EAAAA,EAAAA,GAAmB,CACrCj1C,MAAOlkB,EACPohB,QAAAA,EACArf,SAAAA,EACA82D,IAAAA,EACAJ,YAAaD,EAAYC,EAAc,IALnC51C,EAAcs2C,EAAdt2C,KAAMD,EAAQu2C,EAARv2C,IAQdxB,EAAQmF,MAAM1D,KAAO,GAAQ,OAALA,EAAK,MAC7BzB,EAAQmF,MAAM3D,IAAM,GAAO,OAAJA,EAAI,MAC3BxB,EAAQmF,MAAMxkB,SAAW,cAC1B,CAACA,EAAU82D,EAAKJ,EAAarsC,EAASosC,EAAWx4D,KAEpD3N,EAAAA,EAAAA,YAAU,WACN,IAAMo7B,EAAW,WACTmrC,GAAoC,oBAAZ93D,GAA0BsrB,GAClDtrB,KAKR,OADA9D,OAAO8gB,iBAAiB,SAAU2P,GAC3B,W,OAAMzwB,OAAO67B,oBAAoB,SAAUpL,MACnD,CAACmrC,EAAe93D,KAEnBzO,EAAAA,EAAAA,YAAU,WACN,IAAM+mE,EAAeC,KAAS,WACtB/3C,GAAwC,oBAAZxgB,GAA0BsrB,GACtDtrB,MAEL,KAGH,OADA9D,OAAO8gB,iBAAiB,kBAAmBs7C,GACpC,W,OAAMp8D,OAAO67B,oBAAoB,kBAAmBugC,MAC5D,CAAC93C,EAAmBxgB,IAoBvB,OACI,sB,WACKw4D,EAAAA,EAAAA,cAAap1C,EAAO,CAAEvR,IApBhB,SAAC4mD,GACZP,EAAS5mD,QAAUmnD,EAEnB,IAAM5mD,EEpEkB,SAI5B4mD,GAEA,OAAOtP,EAAAA,eAAqBsP,IAAoC,kBAAjBA,EAAQ7lE,KF8DvC8lE,CAAiEt1C,GACvEA,EAAMvR,IACN,KAEN,GAAKA,EAIL,MAAmB,oBAARA,EACAA,EAAI4mD,QAGf,EAA6CnnD,QAAUmnD,MAMlD1vB,GACGzd,GACApsB,IACAy5D,EAAAA,EAAAA,eACI,SAAClB,EAAAA,EAAW,CACR5lD,IAAKomD,EACLtiC,QAASA,EACT10B,SAAUA,EACVoL,WAAYA,EACZsrD,YAAaA,EACbD,UAAWA,EACX7Z,OAAQA,EACRt9B,OAAQA,IAEZwoB,OGtFpB,EAnC4B,Y,IACxBhqC,EAAQ,EAARA,SACA42B,EAAO,EAAPA,QAEA10B,EAAQ,EAARA,SACAy2D,EAAS,EAATA,UAEArrD,EAAU,EAAVA,WACA0rD,EAAG,EAAHA,IACAJ,EAAW,EAAXA,YACA9Z,EAAM,EAANA,OAE8B7wD,GAAAA,EAAAA,EAAAA,WAAS,GAAhCs+B,EAAuBt+B,EAAe,GAA7B4rE,EAAc5rE,EAAe,GAE7C,OACI,SAAC6rE,EAAoB,CACjBljC,QAASA,EACT10B,SAAUA,EACVqqB,QAASA,EACTjf,WAAYA,EACZ0rD,IAAKA,EACLJ,YAAaA,EACbD,UAAWA,EACX7Z,OAAQA,E,UAER,SAACh8C,MAAG,CACA4rB,aAAc,W,OAAMmrC,GAAW,IAC/BlrC,aAAc,W,OAAMkrC,GAAW,I,SAE9B75D,OCZjB,EARoB,SAACxO,GAGjB,YAAmBnD,IAFCmD,EAAZ+6B,SAGF,SAACutC,GAAoB,UAAKtoE,KAC1B,SAACuoE,GAAmB,UAAKvoE,M,0FCL5B,IAAM8nE,EAAqB,Y,IAC/Bj1C,EAAK,EAALA,MACA9C,EAAO,EAAPA,QACArf,EAAQ,EAARA,SACA82D,EAAG,EAAHA,IACAJ,EAAW,EAAXA,YAOIv0C,EAAAA,EAAM21C,wBAJPj3C,EAICsB,EAJDtB,IACAC,EAGCqB,EAHDrB,KACAlhB,EAECuiB,EAFDviB,OACAD,EACCwiB,EADDxiB,MAGoD0f,EAAAA,EAAQy4C,wBAAvDn4D,EAA+C0f,EAA/C1f,MAAqBC,EAA0Byf,EAA1Bzf,OAEvBo1B,OAA8B7oC,IAApB,OAAQ6oC,QAAyB/5B,OAAO+5B,QAAU/5B,OAAO88D,YACnEC,OAA8B7rE,IAApB,OAAQ6rE,QAAyB/8D,OAAO+8D,QAAU/8D,OAAOg9D,YAEzE,OAAQj4D,GACL,IAAK,aACF,MAAO,CACH8gB,KAAMo3C,EAAYC,EAAa,EAAIC,EAAe,EAAIJ,EACtDn3C,IAAKw3C,EAAWvB,EAAMwB,EAAgBtjC,GAG7C,IAAK,WACF,MAAO,CACHlU,KAAMo3C,EAAYxB,EAAcsB,EAChCn3C,IAAKw3C,EAAWvB,EAAMwB,EAAgBtjC,GAG7C,IAAK,YACF,MAAO,CACHlU,KAAMo3C,EAAYC,EAAaC,EAAe1B,EAAcsB,EAC5Dn3C,IAAKw3C,EAAWvB,EAAMwB,EAAgBtjC,GAG7C,IAAK,OACF,MAAO,CACHlU,KAAMo3C,EAAYpB,EAAMsB,EAAeJ,EACvCn3C,IAAKw3C,EAAWE,EAAc,EAAID,EAAgB,EAAItjC,GAG7D,IAAK,QACF,MAAO,CACHlU,KAAMo3C,EAAYC,EAAarB,EAAMkB,EACrCn3C,IAAKw3C,EAAWE,EAAc,EAAID,EAAgB,EAAItjC,GAG7D,IAAK,cACF,MAAO,CACHlU,KAAMo3C,EAAYxB,EAAcsB,EAChCn3C,IAAKw3C,EAAWE,EAAczB,EAAM9hC,GAG3C,IAAK,eACF,MAAO,CACJlU,KAAMo3C,EAAYC,EAAaC,EAAe1B,EAAcsB,EAC5Dn3C,IAAKw3C,EAAWE,EAAczB,EAAM9hC,GAI1C,QACG,MAAO,CACHlU,KAAMo3C,EAAYC,EAAa,EAAIC,EAAe,EAAIJ,EACtDn3C,IAAKw3C,EAAWE,EAAczB,EAAM9hC,KAYpCmhC,EAAkB,Y,IAC5Bn2D,EAAQ,EAARA,SACAo2D,EAAY,EAAZA,aACAC,EAAa,EAAbA,cACAC,EAAS,EAATA,UAEA,MAAO,CAAC,WAAY,eAAeplC,SAASlxB,GACtCo2D,EACA,CAAC,YAAa,gBAAgBllC,SAASlxB,GACvCq2D,EACAC,I,4JC5FIkC,EAAa,Y,IAAG12D,EAAW,EAAXA,YAAasd,EAAI,EAAJA,K,OACtC,UAAC+3B,EAAAA,GAAU,CAAC2c,OAAQ5lE,EAAAA,EAAAA,U,UACf4T,GACD,SAACjB,KAAE,IAAG,SACCue,M,6WCRR,IAAMiI,EAAUp5B,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAEjBK,EAAAA,EAAAA,SACY2iD,EAAAA,EAAAA,GAAQ/iD,EAAAA,EAAAA,YAGbuqE,GAAiBxqE,EAAAA,EAAAA,SAAO2nD,EAAAA,IAAiB,Y,6BAAxB3nD,C,KACPgjD,EAAAA,EAAAA,GAAQ/iD,EAAAA,EAAAA,aCAzBwqE,GAAmB5kD,EAAAA,EAAAA,aAAmD,WAIzElD,G,IAHC9S,EAAQ,EAARA,SACA7L,EAAO,EAAPA,QACG3C,GAAK,UAFRwO,WACA7L,YAGA,OACI,SAACa,GAAiB,gBACd8d,IAAKA,EACL3e,QAASA,EACTkjD,QAAS,IACL7lD,GAAK,C,UAET,SAAC+B,EAAAA,GAAe,CAACC,QAAS,CAAC,EAAG,G,UAC1B,SAACwB,EAAU,C,SAAEgL,YAM7B46D,EAAiB10D,YAAc,mBCTxB,IAAM1F,EAA8B,Y,QACvC+gB,QAAAA,OAAO,IAAG,KAAE,EACZptB,EAAO,EAAPA,QACA6P,EAAW,EAAXA,YACAsd,EAAI,EAAJA,KAAI,IACJthB,SAAAA,OAAQ,IAAG,+CAAS,EACjBxO,GAAK,UALR+vB,UACAptB,UACA6P,cACAsd,OACAthB,aAG8B/R,GAAAA,EAAAA,EAAAA,WAAS,GAAhCs+B,EAAuBt+B,EAAe,GAA7B4rE,EAAc5rE,EAAe,GAEvC4sE,GAAwD56D,EAAAA,EAAAA,cAAY,SAACjN,QAC/C3E,IAApBkzB,EAAQgL,SACRstC,GAAYttC,GAGO,oBAAZp4B,GACPA,EAAQnB,KAEb,CAACu5B,EAASp4B,EAASotB,EAAQgL,UAExBJ,GAAiBl0B,EAAAA,EAAAA,UACnB,W,YAA0B5J,IAApBkzB,EAAQgL,QAAwBhL,EAAQgL,QAAUA,IACxD,CAAChL,EAAQgL,QAASA,IAGhBuuC,GAAiB76D,EAAAA,EAAAA,cAAY,WAC/B,QAAwB5R,IAApBkzB,EAAQgL,QACR,OAAOstC,GAAW,GAGtB,IAAM,EAAct4C,EAAZtgB,QAEe,oBAAZA,GACPA,MAEL,CAACsgB,IAEJ,OACI,SAACw5C,EAAAA,GAAW,gBACRxuC,QAASJ,EACTlrB,QAAS65D,EACTlkC,SACI,SAAC8jC,EAAU,CACP12D,YAAaA,EACbsd,KAAMA,IAGdy3C,eAAa,GACTx3C,GAAO,C,UAEX,SAACq5C,GAAgB,gBAACzmE,QAAS0mE,GAAkBrpE,GAAK,C,SAC7CwO,U,mCC3EV,M,yCAAK3P,GAAAA,EACP,EAAG,iCADIA,EAEP,EAAG,iCAFIA,EAGP,EAAG,iC,CAHIA,IAAAA,EAAS,M,4LCGd,IAAM4V,EAAOoM,OAAO2oD,aAAa,KAC3BC,EAAc5oD,OAAO2oD,aAAa,MAClCE,EAAQ7oD,OAAO2oD,aAAa,MAC5BG,EAAW9oD,OAAO2oD,aAAa,MAC/BI,EAAQ/oD,OAAO2oD,aAAa,KAC5BK,EAAQhpD,OAAO2oD,aAAa,M,kBCRzCM,EAAOC,QAAU,sjH,kBCAjBD,EAAOC,QAAU,s5C,kBCAjBD,EAAOC,QAAU,0P,kBCAjBD,EAAOC,QAAU,sT,kBCAjBD,EAAOC,QAAU,ktC,kBCAjBD,EAAOC,QAAU,0vF,kBCAjBD,EAAOC,QAAU,koE,kBCAjBD,EAAOC,QAAU,kxH,kBCAjBD,EAAOC,QAAU,s4C,kBCAjBD,EAAOC,QAAU,8H,kBCAjBD,EAAOC,QAAU,k1B,iBCAjBD,EAAOC,QAAU,4H,kBCAjBD,EAAOC,QAAU,k1B,kBCAjBD,EAAOC,QAAU,svF,kBCAjBD,EAAOC,QAAU,0nB,kBCAjBD,EAAOC,QAAU,8H,kBCAjBD,EAAOC,QAAU,0uE,kBCAjBD,EAAOC,QAAU,2H,kBCAjBD,EAAOC,QAAU,8jE,kBCAjBD,EAAOC,QAAU,0gD,kBCAjBD,EAAOC,QAAU,kyD,kBCAjBD,EAAOC,QAAU,8uE,kBCAjBD,EAAOC,QAAU,8/E,kBCAjBD,EAAOC,QAAU,05C,kBCAjBD,EAAOC,QAAU,0qB,kBCAjBD,EAAOC,QAAU","sources":["webpack://_N_E/./src/components/AuthForm/hooks/useSubmitAuthForm.tsx","webpack://_N_E/./src/components/AuthForm/styled.js","webpack://_N_E/./src/components/AuthForm/index.js","webpack://_N_E/../../packages/city-select/src/components/RegionElement/styled.ts","webpack://_N_E/../../packages/city-select/src/components/RegionElement/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/Moscow.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/StPetersburg.tsx","webpack://_N_E/../../packages/city-select/src/components/TopCities/styled.ts","webpack://_N_E/../../packages/city-select/src/components/TopCities/index.tsx","webpack://_N_E/../../packages/city-select/src/styled.ts","webpack://_N_E/../../packages/city-select/src/index.tsx","webpack://_N_E/../../packages/city-select/src/helpers/getOptionsBySatellites.ts","webpack://_N_E/../../packages/city-select/src/hooks/useColumnsByRegionLetters.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/geography/get-cities-satellites/index.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/fetchCitiesSatellites.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/geography/get-cities-by-region/index.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/updateRegions.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/fetchRegionCities.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/geography/get-regions/getRegionsGroups.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/fetchRegionsList.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/geography/get-top-cities/index.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/fetchTopCities.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/changeCity.ts","webpack://_N_E/./src/components/CitySelectContainer/store/actions/saveCity.ts","webpack://_N_E/./src/components/CitySelectContainer/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/controls/multiCheckbox/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/controls/multiCheckbox/index.tsx","webpack://_N_E/./src/components/ConnectDomruPopup/styled.ts","webpack://_N_E/./src/components/ConnectDomruPopup/index.tsx","webpack://_N_E/./src/components/ConnectDomruPopup/ConnectDomruPopupGroup.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/Copyright/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/Copyright/copyrightText.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/Copyright/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/LinkItem/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/LinkItem/ListItemLi.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/FooterLinks/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/FooterLinks/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/PayButton/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/PayButton/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/helpers.ts","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/types.ts","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/RenderMessage.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/RenderForm.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/RenderSelectTheme.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/CallRequestByTheme/useIsValidForm.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/LinkItem/ListItemButton.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/Support/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/Support/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/index.tsx","webpack://_N_E/./src/store/selectors/contacts.ts","webpack://_N_E/./src/components/Footer/emailWidget/popup/styled.tsx","webpack://_N_E/./src/components/Footer/emailWidget/popup/index.tsx","webpack://_N_E/./src/components/Footer/emailWidget/styled.tsx","webpack://_N_E/./src/components/Footer/emailWidget/index.tsx","webpack://_N_E/./src/store/selectors/menu/selectHasIntercom.ts","webpack://_N_E/./src/components/Footer/index.tsx","webpack://_N_E/./src/components/Footer/useFooterLinks.tsx","webpack://_N_E/./src/components/Link/index.tsx","webpack://_N_E/./src/components/MenuLogo/styled.tsx","webpack://_N_E/./src/components/MenuLogo/index.tsx","webpack://_N_E/./src/components/OpenChatLink/index.tsx","webpack://_N_E/./src/components/OpenChatLink/styled.ts","webpack://_N_E/./src/components/PlankMobile/styled.tsx","webpack://_N_E/./src/components/Popups/NoAuth/styled.js","webpack://_N_E/./src/components/Popups/NoAuth/index.js","webpack://_N_E/./src/components/Popups/PopupResult/index.tsx","webpack://_N_E/./src/components/TariffCardPlug/styled.ts","webpack://_N_E/./src/components/TariffCardPlug/index.tsx","webpack://_N_E/./src/constants/breakpoints.ts","webpack://_N_E/./src/constants/routes.ts","webpack://_N_E/./src/constants/simbols.js","webpack://_N_E/./src/features/_layout/App/AppContext.ts","webpack://_N_E/./src/features/_layout/Header/commonComponents/Hat/styled.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/promo-line/index.ts","webpack://_N_E/./src/features/_layout/Header/commonComponents/Hat/useHat.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/styled.tsx","webpack://_N_E/./src/features/_layout/Header/types.tsx","webpack://_N_E/../../packages/ui-kit/src/themes/colors/light.ts","webpack://_N_E/../../packages/ui-kit/src/themes/theme.light.ts","webpack://_N_E/../../packages/ui-react/src/components/GlobalStyles/index.tsx","webpack://_N_E/../../packages/ui-kit/src/themes/UIKitGlobalStyle.ts","webpack://_N_E/./src/features/_layout/Chat/index.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/PhoneInfo/styled.tsx","webpack://_N_E/../../packages/api-domru/src/api-content/v2/menu/by-types/dto/IMenuByTypesItem.ts","webpack://_N_E/./src/features/_layout/Header/commonComponents/PhoneInfo/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/components/Description/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/components/Description/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/components/Button/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/components/Button/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/components/Title/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/components/Title/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/childItems/DescriptionButton/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/childItems/DescriptionButton/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/childItems/DescriptionButtonImage/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/childItems/DescriptionButtonImage/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/childItems/DescriptionLabel/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/childItems/DescriptionLabel/index.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/CitySelect/styled.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/CitySelect/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/CommonDesktopHeader/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/MainMenuItem/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/PartnersMenuItem/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/PartnersMenuItem/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/ServiceMenuItem/styled.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/ServiceMenuItem/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/CommonDesktopHeader/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/Menu.tsx","webpack://_N_E/../../packages/ui-react/src/components/plankMobileUp/styled.js","webpack://_N_E/../../packages/ui-react/src/components/plankMobileUp/plankMobile.js","webpack://_N_E/./src/components/PlankMobile/index.tsx","webpack://_N_E/./src/components/Popups/CallRequestByTheme/styled.tsx","webpack://_N_E/./src/components/Popups/CallRequestByTheme/index.tsx","webpack://_N_E/./src/components/Popups/CallRequestByTheme/RenderMessage.tsx","webpack://_N_E/../../packages/ui-react/src/components/popups/citySelection/styled.js","webpack://_N_E/../../packages/ui-react/src/components/popups/citySelection/index.js","webpack://_N_E/./src/features/_layout/Header/commonComponents/ConfirmCitySelection/styled.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/ConfirmCitySelection/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Accordion/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Accordion/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Card/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/CardChildItemHoc/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/context.ts","webpack://_N_E/./src/features/_layout/Header/mobile/components/Promo/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Promo/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Card/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Category/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Category/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/CardMenu/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/CardMenu/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Logo/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/Logo/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/TopMenu/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/TopMenuWithIcons/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/CommonMobileHeader/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/BlindMenu/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/BlindMenu/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/BlindMenu/BlindMenuWithBtn/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/BlindMenu/BlindMenuWithBtn/index.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/AgreementInfo/styled.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/AgreementInfo/Skeleton.tsx","webpack://_N_E/./src/store/selectors/auth/selectClientPersonal.ts","webpack://_N_E/./src/features/_layout/Header/commonComponents/AgreementInfo/index.tsx","webpack://_N_E/./src/store/selectors/auth/selectClientProducts.ts","webpack://_N_E/./src/features/_layout/Header/mobile/components/ProfileContainer/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/ProfileContainer/index.tsx","webpack://_N_E/./src/features/_layout/Header/AuthHeader/index.tsx","webpack://_N_E/./src/features/_layout/Header/commonComponents/Hat/index.tsx","webpack://_N_E/./src/features/_layout/Header/desktop/components/UnauthDesktopHeader/connectionButtonAnimation.ts","webpack://_N_E/./src/features/_layout/Header/urlsForHideConnectButton.ts","webpack://_N_E/./src/features/_layout/Header/desktop/components/UnauthDesktopHeader/index.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/ConnectionAndLoginActions/styled.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/ConnectionAndLoginActions/BurgerView.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/components/ConnectionAndLoginActions/MainView.tsx","webpack://_N_E/./src/features/_layout/Header/mobile/UnauthMobileHeader/index.tsx","webpack://_N_E/./src/features/_layout/Header/UnauthHeader/index.tsx","webpack://_N_E/./src/features/_layout/Header/styled.ts","webpack://_N_E/./src/features/_layout/Header/index.tsx","webpack://_N_E/./src/features/_layout/App/styled.tsx","webpack://_N_E/./src/features/_layout/App/index.tsx","webpack://_N_E/./src/features/_layout/Head/index.tsx","webpack://_N_E/./src/features/_layout/Header/useHeaderScroll.ts","webpack://_N_E/./src/features/_layout/index.tsx","webpack://_N_E/./src/store/actions/auth/verifyAuthState.ts","webpack://_N_E/../../packages/ui-react/src/components/buttons/originalButtons/gosuslugiButton/index.tsx","webpack://_N_E/./src/features/lk/PassportUpdate/containers/PassportUpdateResultPopup/index.tsx","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/initialized.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/reset.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/updateError.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/thunks/startGettingGosuslugiCode/index.ts","webpack://_N_E/../../packages/api-domru/src/esign/v1/esia/authUrl/index.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/startGetttingCode.ts","webpack://_N_E/./src/features/lk/PassportUpdate/containers/PassportUpdateButton/index.tsx","webpack://_N_E/./src/features/lk/PassportUpdate/containers/PassportUpdateInfoPopup/index.tsx","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/downNewEnterFlag.ts","webpack://_N_E/./src/features/lk/PassportUpdate/helpers/checkNewEnter.ts","webpack://_N_E/./src/features/lk/PassportUpdate/hooks/useUpdatePassportData.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/thunks/initialize/index.ts","webpack://_N_E/../../packages/api-domru/src/core-profile/api/v1/user/checkPassport/index.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/thunks/updatePassportData/index.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/updatingData.ts","webpack://_N_E/../../packages/api-domru/src/esign/v1/esia/personal-data/index.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/updateSuccess.ts","webpack://_N_E/./src/features/lk/PassportUpdate/store/actions/updateIncorrect.ts","webpack://_N_E/./src/features/lk/PassportUpdate/containers/PassportUpdateAlert/index.tsx","webpack://_N_E/./src/features/lk/PassportUpdate/index.tsx","webpack://_N_E/./src/features/lk/PassportUpdate/usePassportUpdate.ts","webpack://_N_E/./src/features/tariffLines/styled.tsx","webpack://_N_E/./src/features/user/helpers/isSso.ts","webpack://_N_E/./src/helpers/eventsForDataLayer.ts","webpack://_N_E/./src/helpers/form.js","webpack://_N_E/./src/helpers/functions.ts","webpack://_N_E/./src/helpers/hooks/useClickOutside.ts","webpack://_N_E/./src/helpers/isLeadGenerationHide.ts","webpack://_N_E/./src/helpers/mobile.js","webpack://_N_E/./src/helpers/noSSR.js","webpack://_N_E/./src/helpers/url/redirects.ts","webpack://_N_E/./src/helpers/url/index.ts","webpack://_N_E/./src/store/actions/auth/getClientContacts.ts","webpack://_N_E/./src/store/actions/auth/logout.ts","webpack://_N_E/./src/store/actions/chat.js","webpack://_N_E/./src/store/actions/clientInfo.ts","webpack://_N_E/./src/store/actions/plank.ts","webpack://_N_E/./src/store/selectors/auth/selectAccessToken.ts","webpack://_N_E/./src/store/selectors/auth/selectCsrf.ts","webpack://_N_E/./src/store/selectors/city.ts","webpack://_N_E/./src/store/selectors/menu/selectMenu.tsx","webpack://_N_E/../../packages/analytics/src/campaignLayer/lib/postEvents.ts","webpack://_N_E/../../packages/analytics/src/campaignLayer/lib/main.ts","webpack://_N_E/../../packages/analytics/src/campaignLayer/lib/defaultErrorHandler.ts","webpack://_N_E/../../packages/analytics/src/campaignLayer/index.ts","webpack://_N_E/../../packages/analytics/src/dataLayerPush/helpers/dataLayerPush.ts","webpack://_N_E/../../packages/analytics/src/dataLayerPush/BaseAnalytics.ts","webpack://_N_E/../../packages/analytics/src/dataLayerPush/EcommerceAnalytics.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/contacts/add-unconfirmed-email/index.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/contacts/confirm-email/index.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/contacts/send-mail-for-confirm/index.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v2/info/all/dto/ResponseDto.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v2/info/all/index.ts","webpack://_N_E/../../packages/api-domru/src/api-request/v1/user/by-call.ts","webpack://_N_E/../../packages/api-domru/src/api-request/v1/user/request-by-connection/dto/ERequestStatus.ts","webpack://_N_E/../../packages/api-domru/src/api-request/v1/user/request-by-connection/index.ts","webpack://_N_E/../../packages/api-domru/src/core-requests/api/v1/call/back/index.ts","webpack://_N_E/../../packages/api-domru/src/core/types/ERequestMethod.ts","webpack://_N_E/../../packages/do-request/src/index.ts","webpack://_N_E/../../packages/shared/src/constants/analytics.ts","webpack://_N_E/../../packages/shared/src/helpers/getYmId.ts","webpack://_N_E/../../packages/shared/src/helpers/hex2rgb.ts","webpack://_N_E/../../packages/shared/src/hooks/useMatchMedia.ts","webpack://_N_E/../../packages/shared/src/hooks/useWebp.tsx","webpack://_N_E/../../packages/shared/src/types/EProductsId.ts","webpack://_N_E/../../packages/ui-kit/src/themes/breakpoints.ts","webpack://_N_E/../../packages/ui-kit/src/themes/theme.common.ts","webpack://_N_E/../../packages/ui-kit/src/themes/typography.headers.ts","webpack://_N_E/../../packages/ui-kit/src/themes/typography.paragraphs.ts","webpack://_N_E/../../packages/ui-kit/src/themes/indents.ts","webpack://_N_E/../../packages/ui-kit/src/themes/radii.ts","webpack://_N_E/../../packages/ui-kit/src/themes/colors/dark.ts","webpack://_N_E/../../packages/ui-kit/src/themes/theme.dark.ts","webpack://_N_E/../../packages/ui-react/src/components/Alert/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/Alert/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/CustomScrollbar/styled.js","webpack://_N_E/../../packages/ui-react/src/components/CustomScrollbar/index.js","webpack://_N_E/../../packages/ui-react/src/components/PolicyNote/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/WebpImage/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/buttons/baseButton/styled.js","webpack://_N_E/../../packages/ui-react/src/components/buttons/baseButton/index.js","webpack://_N_E/../../packages/ui-react/src/components/buttons/buttonGroup/ButtonGroup.tsx","webpack://_N_E/../../packages/ui-react/src/components/buttons/mobileStoreButton/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/buttons/mobileStoreButton/data.tsx","webpack://_N_E/../../packages/ui-react/src/components/buttons/mobileStoreButton/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/buttons/social/index.js","webpack://_N_E/../../packages/ui-react/src/components/emoji/Emoji.tsx","webpack://_N_E/../../packages/ui-react/src/components/emoji/emoji/Cookie.tsx","webpack://_N_E/../../packages/ui-react/src/components/emoji/createEmojiIcon.tsx","webpack://_N_E/../../packages/ui-react/src/components/helpers/index.js","webpack://_N_E/../../packages/ui-react/src/components/input/calendar/calendarHelpers.js","webpack://_N_E/../../packages/ui-react/src/components/input/calendar/elements.js","webpack://_N_E/../../packages/ui-react/src/components/input/calendar/index.js","webpack://_N_E/../../packages/ui-react/src/components/input/email/styled.js","webpack://_N_E/../../packages/ui-react/src/components/input/email/autocomplete.js","webpack://_N_E/../../packages/ui-react/src/components/input/input.js","webpack://_N_E/../../packages/ui-react/src/components/input/styles.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/InputSimple.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/decorators/helpers/phoneDecorator/index.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/decorators/helpers/nameDecorator/index.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/decorators/nameDecorator.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/decorators/phoneDecorator.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/index.js","webpack://_N_E/../../packages/ui-react/src/components/inputSimple/styles.js","webpack://_N_E/../../packages/ui-react/src/components/label/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/label/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/layouts/flexBoxGrid/components/config.js","webpack://_N_E/../../packages/ui-react/src/components/layouts/flexBoxGrid/components/Col.js","webpack://_N_E/../../packages/ui-react/src/components/layouts/flexBoxGrid/components/Row.js","webpack://_N_E/../../packages/ui-react/src/components/layouts/flexBoxGrid/index.js","webpack://_N_E/../../packages/ui-react/src/components/loaders/Skeleton/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/popups/basePopup/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/popups/basePopup/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/popups/popupCallback/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/popups/popupCallback/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/select/dropdown.js","webpack://_N_E/../../packages/ui-react/src/components/select/select/index.js","webpack://_N_E/../../packages/ui-react/src/components/svg/arrows/ArrowLeft.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/arrows/SingleArrowDown.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/content/DocumentText.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/location/Location.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/InfoCircle.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/InfoCircleFlip.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/TickCircle.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/users/User.tsx","webpack://_N_E/../../packages/ui-react/src/components/tooltip/theme.js","webpack://_N_E/../../packages/ui-react/src/components/tooltip/index.js","webpack://_N_E/../../packages/ui-react/src/components/typography/heading/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/typography/paragraph/index.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/FullWidthListContainer.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/IndentContainer.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/ListContainer.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/NonStaticContainer.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/RounderContainer.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/TooltipArrow.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/TooltipBody/styled.ts","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/TooltipBody/index.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/WithStatelessTooltip.tsx","webpack://_N_E/../../packages/shared/src/hooks/useClickOutside.ts","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/types.ts","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/WithStatefulTooltip.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/WithTooltip.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/tooltip/helpers.ts","webpack://_N_E/../../packages/ui-react/src/organisms/AdvertisingLabelWithTooltip/AdvertiserInfo/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/AdvertisingLabelWithTooltip/AdvertisingLabel/styled.ts","webpack://_N_E/../../packages/ui-react/src/organisms/AdvertisingLabelWithTooltip/AdvertisingLabel/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/AdvertisingLabelWithTooltip/index.tsx","webpack://_N_E/../../packages/ui-react/src/tokens/boxShadow.ts","webpack://_N_E/../../packages/ui-react/src/tokens/symbols.ts","webpack://_N_E/./static/images/menu/logo_default.svg","webpack://_N_E/./static/images/menu/mobile_logo_default.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/arrow-grey.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/check-green.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/calendar.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/eye-closed.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/eye-opened.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/logo/gosuslugi.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/AppGalleryIcon.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/AppGalleryText.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/AppStoreBlackIcon.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/AppStoreText.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/AppStoreWhiteIcon.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/GooglePlayIcon.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/GooglePlayIconBlack.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/GooglePlayText.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/RuStoreIcon.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/mobileStores/RuStoreText.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/question.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/logo-redesign.svg","webpack://_N_E/../../packages/ui-react/src/components/buttons/social/img/odnoklasnik.svg","webpack://_N_E/../../packages/ui-react/src/components/buttons/social/img/vk.svg","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/icons/odnoklassniki.svg","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/icons/telegram.svg","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/icons/vkSupport.svg","webpack://_N_E/../../packages/ui-react/src/organisms/Footer/components/icons/vkontakte.svg"],"sourcesContent":["import { useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport {\n ERequestStatus,\n requestByConnection,\n RequestDto,\n ResponseDto,\n} from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { ACTIONS } from '@r1-frontend/shared/constants/analytics';\n\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\ninterface IDoSubmit {\n name: string,\n phone: string,\n label: string,\n}\n\ninterface IDoSubmitState {\n message: string | null,\n isLoading: boolean,\n status: ERequestStatus | undefined,\n}\n\nconst useSubmitAuthForm = (isPopup = false) => {\n const csrf = useSelector(selectCsrf);\n\n const [state, setState] = useState({\n message: null,\n isLoading: false,\n status: undefined,\n });\n\n const doSubmit = async({ name, phone, label }: IDoSubmit) => {\n setState(prevState => ({ ...prevState, isLoading: true }));\n\n const dataParams: RequestDto = {\n petition: 'create_request',\n fio: name,\n phone: phone,\n product_id: [5],\n tv_equipment_id: [80491],\n csrf,\n };\n const resp = await doRequest.apiRequest(\n requestByConnection(dataParams),\n );\n if (resp.isSuccess) {\n const { status, message } = resp.payload;\n dataLayerForCBPhonePush({\n action: ACTIONS.success,\n isPopup,\n option: status ? label ?? '' : `${label} | ${message}`,\n });\n setState({\n message,\n status: status ? ERequestStatus.success : ERequestStatus.error,\n isLoading: false,\n });\n } else {\n setState({\n message: 'Не удалось отправить заявку. Пожалуйста, попробуйте еще раз.',\n status: ERequestStatus.error,\n isLoading: false,\n });\n\n dataLayerForCBPhonePush({\n requestId: null,\n action: ACTIONS.error,\n });\n }\n };\n\n return [state, doSubmit];\n};\n\nexport default useSubmitAuthForm;\n","import { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InputSimple, { nameDecorator, phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { BoxShadow } from '@r1-frontend/ui-react/tokens/boxShadow';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled from 'styled-components';\n\nconst InputPhone = phoneDecorator(InputSimple);\nconst InputName = nameDecorator(InputSimple);\n\nexport const Wrapper = styled.form`\n height: 100%;\n width: 100%;\n padding: 32px;\n background: ${COLORS.BgMain};\n box-shadow: ${BoxShadow.L};\n border-radius: ${BorderRadius.OuterBlockRadius};\n`;\n\nexport const Title = styled.h2`\n ${FONTS.H3};\n margin-right: 46px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4};\n margin-right: 32px;\n }\n`;\n\nexport const Inputs = styled.div`\n display: flex;\n grid-gap: 12px;\n align-items: flex-start;\n margin-bottom: 8px;\n margin-top: 16px;\n width: 100%;\n flex-wrap: nowrap;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 16px;\n flex-wrap: wrap;\n }\n`;\n\nexport const Name = styled(InputName)`\n display: block;\n max-width: auto;\n margin-bottom: 0;\n\n @media (max-width: 530px) {\n width: 100%;\n }\n`;\n\nexport const Phone = styled(InputPhone)`\n display: block;\n max-width: auto;\n margin-bottom: 0;\n\n @media (max-width: 530px) {\n width: 100%;\n }\n`;\n\nexport const ButtonBlock = styled.div`\n display: flex;\n grid-gap: 12px;\n flex-wrap: nowrap;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 16px;\n flex-wrap: wrap;\n }\n`;\n\nexport const OrAuth = styled.div`\n column-gap: 12px;\n & > a {\n color: ${COLORS.Link};\n transition: 0.3s;\n\n &:hover {\n color: ${COLORS.Brand_Blue};\n }\n }\n`;\n\nexport const Agree = styled.div`\n display: block;\n max-width: 300px;\n margin-bottom: 16px;\n\n a {\n display: inline-block;\n border-bottom: 1px solid ${p => p.textColor ? p.textColor : COLORS.black};\n color: ${p => p.textColor ? p.textColor : COLORS.black};\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n width: calc(100% - 254px);\n }\n\n @media screen and (max-width: 859px) {\n width: 100%;\n padding-left: 0;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n flex: 1 0 auto;\n max-width: 180px;\n\n @media screen and (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n max-width: 100%;\n }\n`;\n\nexport const Message = styled.div`\n display: block;\n width: 100%;\n ${FONTS.XXL};\n\n p {\n margin: 15px 0;\n }\n\n a {\n ${FONTS.Medium};\n color: ${COLORS.lightBlue};\n }\n`;\n","import { ACTIONS } from '@r1-frontend/shared/constants/analytics';\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { USER_LOGIN_ROUTE } from '~/src/constants/routes';\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\n\nimport useSubmitAuthForm from './hooks/useSubmitAuthForm';\nimport { Button, ButtonBlock, Inputs, Message, Name, Phone, Title, Wrapper } from './styled';\n\nconst AuthForm = (props) => {\n const {\n title = 'Чтобы подключить услугу, станьте клиентом Дом.ру или авторизуйтесь',\n buttonText = 'Подключиться',\n handleSuccess,\n getParams = '',\n handleAuthClick,\n isPopup = false,\n onlyBecomeClient = false,\n disableButton = false,\n option,\n } = props;\n\n const [phone, setPhone] = useState({});\n const [name, setName] = useState({});\n const [isValidInputs, setIsValidInputs] = useState(false);\n const [isLoadingButton, setIsLoadingButton] = useState(false);\n const [beenStarted, setDataLayer] = useState(false);\n\n useEffect(() => {\n setIsValidInputs(phone.isValid && name.isValid);\n }, [phone, name]);\n\n const [\n { status, isLoading, message },\n doSubmit,\n ] = useSubmitAuthForm(isPopup);\n\n const onChangeHandler = (stateInput, _setState) => {\n // @TODO stateInput.value убрать из условия после фикса nameDecorator (useEffect onchange) UI react\n if (!beenStarted && stateInput.value !== undefined) {\n dataLayerForCBPhonePush({\n action: ACTIONS.started,\n isPopup,\n requestId: null,\n option: option ?? '',\n });\n setDataLayer(true);\n }\n _setState(stateInput);\n };\n\n const submitHandler = e => {\n e.preventDefault();\n if (isValidInputs) {\n const params = {\n name: name.value,\n phone: phone.value,\n label: option,\n };\n\n if (handleSuccess) {\n handleSuccess(params);\n } else {\n doSubmit(params);\n }\n }\n setIsLoadingButton(true);\n };\n\n return (\n \n {\n status && message\n ? {message}\n : <>\n \n {title}\n \n \n onChangeHandler(stateInput, setName)}\n placeholder='Как вас зовут?'\n errorMessage='Ожидаются только буквы и дефисы'\n className={'ym-disable-keys'}\n />\n onChangeHandler(stateInput, setPhone)}\n placeholder='Номер телефона'\n errorMessage='Введите телефон в формате +7 (999) 999-99-99'\n className={'ym-disable-keys'}\n />\n \n {!onlyBecomeClient && (\n \n \n \n )}\n \n \n {onlyBecomeClient\n ? \n : \n }\n \n \n }\n \n );\n};\n\nconst mapStateToProps = state => ({\n cityDomain: state.city.currentCity.domain,\n});\n\nexport default connect(mapStateToProps)(AuthForm);\n","import styled, { keyframes } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nconst fadeInAnimation = keyframes`\n from { max-height: 0; }\n to { max-height: 5000px; }\n`;\n\nexport const RegionElement = styled.div`\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n row-gap: 15px;\n display: flex;\n \n &:last-child {\n padding-bottom: 10px;\n border-bottom: 1px solid ${COLORS.GRAY_LIGHT};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n &:last-child {\n padding-bottom: 0;\n border-bottom: none;\n }\n }\n`;\n\nexport const RegionTitle = styled.span<{ isOpen: boolean }>`\n ${FONTS.XS};\n transition: color 0.2s linear;\n cursor: pointer;\n color: ${p => p.isOpen ? COLORS.Logo : COLORS.TextPrimary};\n border-bottom: 1px dashed ${p => p.isOpen ? 'transparent' : COLORS.TextPrimary};\n\n &:hover {\n color: ${COLORS.Logo};\n border-bottom: 1px dashed ${COLORS.Logo};\n }\n`;\n\nexport const CitiesWrap = styled.div<{ isOpen: boolean }>`\n display: ${p => p.isOpen ? 'block' : 'none'};\n padding-left: 15px;\n animation-name: ${p => p.isOpen ? fadeInAnimation : ''};\n animation-duration: 0.9s;\n animation-timing-function: ease-in;\n animation-delay: 0s;\n animation-iteration-count: 1;\n animation-direction: normal;\n animation-fill-mode: both;\n animation-play-state: running;\n overflow: hidden;\n`;\n\nexport const CityItem = styled.div<{ isMain: boolean }>`\n width: fit-content;\n ${p => p.isMain ? FONTS.MediumS : FONTS.XS};\n border-bottom: 1px dotted ${COLORS.TextPrimary};\n cursor: pointer;\n\n &:not(:last-child) {\n margin-bottom: 15px;\n }\n`;\n","import { IRegionCity } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-by-region';\nimport { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\nimport { IRegionWithCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isRegionOpen: boolean,\n region: IRegionWithCities,\n onRegionSelect: (region: IRegionWithCities) => void,\n onCitySelect: (city: ICitySatellite) => void,\n}\n\nconst RegionElement = ({ isRegionOpen, region, onRegionSelect, onCitySelect }: IProps): JSX.Element => {\n const citySelectHandler = (city: IRegionCity) => {\n const { name, domain, provider_id } = city;\n onCitySelect({ name, domain, provider_id });\n };\n\n return (\n \n onRegionSelect(region)}\n data-test='title'\n >\n {region.name}\n \n {isRegionOpen && !!region.cities?.length && (\n \n {region.cities?.map((city, index) => {\n const { name: cityName, domain, provider_id, main } = city;\n return (\n citySelectHandler(city)}\n data-test='city-item'\n >\n {cityName}\n \n );\n })}\n \n )}\n \n );\n};\n\nexport default RegionElement;\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst Moscow = ({ strokeWidth = 1.5 }): JSX.Element => {\n return (\n <>\n \n \n \n \n );\n};\n\nexport default createSvg(\n Moscow,\n 'moscow',\n);\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst StPetersburg = (): JSX.Element => {\n return (\n <>\n \n \n \n \n );\n};\n\nexport default createSvg(\n StPetersburg,\n 'StPetersburg',\n);\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\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\nexport const TopCitiesWrap = styled.div`\n margin: 0 -10px 0 -10px;\n padding: 25px;\n row-gap: 20px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background: ${COLORS.BgLight};\n display: flex;\n flex-wrap: wrap;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin: 0 12px 0 -12px;\n padding: 12px;\n border-radius: ${BorderRadius.componentRadius};\n }\n\n @media (min-width: ${wideBreakpoints.tablet}) {\n margin: 0 25px 0 -25px;\n padding: 25px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n }\n`;\n\nexport const TopCityElement = styled.div`\n ${FONTS.XS};\n width: 100%;\n column-gap: 12px;\n cursor: pointer;\n display: flex;\n`;\n","import React from 'react';\n\nimport { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\n\nimport { Moscow, StPetersburg } from '@r1-frontend/ui-react/components/svg/main';\n\nimport * as ST from './styled';\n\nconst CityIcon = ({ cityIndex }: { cityIndex: number }): JSX.Element => {\n switch (cityIndex) {\n case 0:\n return ;\n case 1:\n return ;\n default:\n return <>;\n }\n};\n\ninterface IProps {\n topCities: ICitySatellite[],\n onCitySelect: (city: ICitySatellite) => void,\n}\n\nconst TopCities = ({ topCities, onCitySelect }: IProps): JSX.Element => {\n return (\n \n {topCities.map((topCity, index) => (\n onCitySelect(topCity)}\n data-test='top-city'\n >\n \n {topCity.name}\n \n ))}\n \n );\n};\n\nexport default TopCities;\n","import styled, { createGlobalStyle, StyledComponent } from 'styled-components';\n\nimport { FlexBoxCol } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport WideContainer, { IProps, wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport Select, { SelectProps } from '@r1-frontend/ui-react/components/select/select';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const GlobalStyle = createGlobalStyle<{ $active: boolean }>`\n body {\n overflow: ${({ $active }) => $active ? 'hidden' : 'auto'};\n }\n`;\n\nexport const Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n padding: 40px 0;\n background: ${COLORS.BgMain};\n overflow-y: auto;\n z-index: 9999;\n`;\n\nexport const ContentWrapper: StyledComponent = styled(WideContainer)`\n flex-direction: column;\n align-items: flex-start;\n row-gap: 20px;\n color: ${COLORS.TextPrimary};\n display: flex;\n`;\n\nexport const DropDown: StyledComponent = styled(Select)`\n width: 100%;\n\n input {\n width: 100% !important;\n opacity: 1 !important;\n }\n\n span {\n background: url(\"/static/images/icons/search.svg\");\n height: 20px;\n width: 20px;\n transform: none;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n width: 40%;\n }\n`;\n\nexport const ColumnsWrapper = styled.div`\n position: relative;\n flex-wrap: nowrap;\n width: 100%;\n display: flex;\n`;\n\nexport const Column = styled(FlexBoxCol)`\n flex-basis: 100%;\n flex-direction: column;\n row-gap: 20px;\n display: flex;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n flex-basis: 50%;\n }\n\n @media (min-width: ${wideBreakpoints.tablet}) {\n flex-basis: calc(100% / 3);\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n flex-basis: 25%;\n }\n`;\n\nexport const RegionsWrapper = styled.div`\n position: relative;\n flex-direction: column;\n break-inside: avoid;\n -webkit-column-break-inside: avoid;\n page-break-inside: avoid;\n row-gap: 15px;\n padding-left: 50px;\n display: flex;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n position: static;\n padding-left: 0;\n }\n`;\n\nexport const RegionsLetter = styled.p`\n position: absolute;\n top: 0;\n left: 0;\n color: ${COLORS.Logo};\n ${FONTS.L};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n position: static;\n }\n`;\n","import { useMemo } from 'react';\nimport { createFilter } from 'react-select';\nimport get from 'lodash/get';\n\nimport { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\nimport { IRegionsWithCitiesGroup, IRegionWithCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport RegionElement from '@r1-frontend/city-select/components/RegionElement';\nimport TopCities from '@r1-frontend/city-select/components/TopCities';\nimport { getOptionsBySatellites, ICityOption } from '@r1-frontend/city-select/helpers/getOptionsBySatellites';\nimport { useColumnsByRegionLetters } from '@r1-frontend/city-select/hooks/useColumnsByRegionLetters';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport Throbber from '@r1-frontend/ui-react/components/loaders/Throbber';\nimport { ArrowLeft } from '@r1-frontend/ui-react/components/svg/arrows';\nimport { H2 } from '@r1-frontend/ui-react/components/typography/heading';\n\nimport * as ST from './styled';\n\nconst noOptionsMessage = (message: string, field?: ICityOption) => (inputValue: string) =>\n inputValue === '' || (get(field, 'label', '') === inputValue) ? message : 'Не найдено';\n\nconst filterConfig = {\n ignoreCase: true,\n ignoreAccents: true,\n trim: true,\n matchFrom: 'start' as const,\n};\n\ninterface IProps {\n regions: IRegionsWithCitiesGroup,\n topCities: ICitySatellite[],\n citiesSatellites: ICitySatellite[],\n selectedRegion: IRegionWithCities | null,\n onRegionSelect: (region: IRegionWithCities) => void,\n onCitySelect: (city?: ICitySatellite) => void,\n city?: ICityOption,\n}\n\nconst CitySelect = ({\n regions,\n topCities,\n citiesSatellites,\n selectedRegion,\n onRegionSelect,\n onCitySelect,\n city,\n}: IProps): JSX.Element => {\n const citiesOptions = useMemo(() => getOptionsBySatellites(citiesSatellites), [citiesSatellites]);\n\n const lettersByColumns = useColumnsByRegionLetters({ regions, topCities });\n\n const onChangeCity = (selectedCityOption: ICityOption) => {\n const { label, value, provider_id } = selectedCityOption;\n onCitySelect({ name: `${label}`, domain: value, provider_id });\n };\n\n return (\n \n \n \n }\n onClick={() => onCitySelect()}\n >\n Назад\n \n\n

Выберите город

\n\n {(!!lettersByColumns.length && !!topCities.length && !!citiesSatellites.length)\n ? <>\n \n \n {lettersByColumns.map((lettersColumn, columnIndex) => {\n const columnLetters = Object.keys(lettersColumn);\n\n return (\n \n {columnIndex === 0 && (\n \n )}\n {columnLetters.map(letter => (\n \n {letter}\n {lettersColumn[letter].map(region => (\n \n ))}\n \n ))}\n \n );\n })}\n \n \n : \n }\n
\n
\n );\n};\n\nexport default CitySelect;\n","import { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\n\nimport { IOption } from '@r1-frontend/ui-react/components/select/select';\n\nexport interface ICityOption extends Omit, 'path'> {\n provider_id: number,\n}\n\nexport const getOptionsBySatellites = (satellites: ICitySatellite[]): ICityOption[] => {\n return satellites.map(({ name, domain, provider_id }) => ({\n label: name,\n value: domain,\n provider_id,\n }));\n};\n","import { useMemo } from 'react';\nimport reduce from 'lodash/reduce';\n\nimport { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\nimport { IRegionsWithCitiesGroup, IRegionWithCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\ninterface IProps {\n regions: IRegionsWithCitiesGroup,\n topCities: ICitySatellite[],\n}\n\nexport const useColumnsByRegionLetters = ({ regions, topCities }: IProps): IRegionsWithCitiesGroup[] => {\n const [isTablet, isLaptop, isDesktop] = [\n useMatchMediaByWidth(wideBreakpoints.mobile, true),\n useMatchMediaByWidth(wideBreakpoints.tablet, true),\n useMatchMediaByWidth(wideBreakpoints.laptop, true),\n ];\n\n const { firstColumnSize, columnsCount } = useMemo(() => {\n switch (true) {\n case isDesktop:\n return {\n firstColumnSize: 6,\n columnsCount: 4,\n };\n case isLaptop:\n return {\n firstColumnSize: 8,\n columnsCount: 3,\n };\n case isTablet:\n return {\n firstColumnSize: 16,\n columnsCount: 2,\n };\n default:\n return {\n firstColumnSize: 0,\n columnsCount: 1,\n };\n }\n }, [isDesktop, isLaptop, isTablet]);\n\n const regionsCount = reduce(regions, (result, value) => result + value.length, 0);\n\n return (() => {\n const otherColRegionSize = Math.round(regionsCount / columnsCount) +\n ((!!firstColumnSize && !!topCities.length) ? Math.round(firstColumnSize / columnsCount) : 0);\n\n const map = new Map();\n const result: IRegionsWithCitiesGroup[] = [];\n const regionLetters = Object.keys(regions);\n\n let currCol = 0;\n let currCount = 0;\n\n for (const letter of regionLetters) {\n const mid = currCount + regions[letter].length / 2;\n\n if (topCities.length && !!firstColumnSize && firstColumnSize < currCount && currCol === 0) {\n result.push(Object.fromEntries(map.entries()));\n currCount = 0;\n map.clear();\n currCol += 1;\n }\n\n if (otherColRegionSize < mid) {\n result.push(Object.fromEntries(map.entries()));\n currCount = 0;\n map.clear();\n }\n\n map.set(letter, regions[letter]);\n currCount += regions[letter].length;\n }\n\n if (map.size) {\n result.push(Object.fromEntries(map.entries()));\n }\n\n return result;\n })();\n};\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport type { ISatellitesList } from './dto/ResponseDto';\nexport type { ICitySatellite } from './dto/ResponseDto';\n\n/*\n* Получение информации по всем городам, сателлитам и их регионов. Список используется в поиске по городам на сайте.\n* https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%93%D0%95%D0%9E/3597d89d651dcd12f887bacf97bec079\n*/\n\nexport const getCitiesSatellites = (providerId: number): IRequest => ({\n uri: '/v1/geography/get-cities-satellites',\n method: 'GET',\n headers: { 'ProviderId': `${providerId}` },\n});\n","import { doRequest } from '@r1-frontend/do-request/index';\nimport { getCitiesSatellites, ISatellitesList } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\n\nimport { setSatellites } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nconst fetchCitiesSatellites = () => {\n return async(dispatch: TAppThunkDispatch, getState: TGetState): Promise => {\n const state = getState();\n const providerId = selectProviderId(state);\n\n const resp = await doRequest.apiContent(\n getCitiesSatellites(providerId),\n );\n\n if (resp.isSuccess) {\n dispatch(setSatellites(Object.values(resp.payload)));\n }\n };\n};\n\nexport default fetchCitiesSatellites;\n","export type { IRegionCity } from './dto/ResponseDto';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\ninterface IRequestProps {\n id: number,\n}\n/*\n* Список городов по региону\n* https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%93%D0%95%D0%9E/164d02eb7326ba38cccdca51fa2be3f7\n*/\n\nexport const getCitiesByRegion = (providerId: number, queryParams: IRequestProps): IRequest => ({\n uri: '/v1/geography/get-cities-by-region',\n method: 'GET',\n headers: { 'ProviderId': `${providerId}` },\n queryParams,\n});\n","import { IRegionCity } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-by-region';\nimport { IRegionWithCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\n\nimport { setRegions } from '../actionCreators';\n\nconst updateRegions = (region: IRegionWithCities, cities: IRegionCity[]) => {\n return (dispatch: TAppThunkDispatch, getState: TGetState): void => {\n const { citySelect: { regions } } = getState();\n const regionLetter = region.name.charAt(0);\n const letterRegions = [...regions[regionLetter]];\n\n const updatedRegionIndex = letterRegions.findIndex(_region => _region.region_id === region.region_id);\n\n if (updatedRegionIndex !== -1) {\n const regionWithCities: IRegionWithCities = { ...letterRegions[updatedRegionIndex], cities };\n letterRegions.splice(updatedRegionIndex, 1, regionWithCities);\n dispatch(setRegions({\n ...regions,\n [regionLetter]: letterRegions,\n }));\n }\n };\n};\n\nexport default updateRegions;\n","import { batch } from 'react-redux';\nimport orderBy from 'lodash/orderBy';\n\nimport { doRequest } from '@r1-frontend/do-request/index';\nimport { getCitiesByRegion } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-by-region';\nimport { IRegionCity } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-by-region/dto/ResponseDto';\nimport { IRegionWithCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nimport { setSelectedRegion } from '../actionCreators';\n\nimport updateRegion from './updateRegions';\n\nconst fetchRegionCities = (region: IRegionWithCities) => {\n return async(dispatch: TAppThunkDispatch, getState: TGetState): Promise => {\n const state = getState();\n const { selectedRegion } = state.citySelect;\n const providerId = selectProviderId(state);\n\n if (region.region_id === selectedRegion?.region_id) {\n dispatch(setSelectedRegion(null));\n return;\n }\n\n if (!region.cities?.length) {\n const resp = await doRequest.apiContent(\n getCitiesByRegion(providerId, { id: region.region_id }),\n );\n\n if (resp.isSuccess) {\n const cities = orderBy(resp.payload, ['main', 'name'], ['desc', 'asc']);\n\n batch(() => {\n dispatch(setSelectedRegion({ ...region, cities }));\n dispatch(updateRegion(region, cities));\n });\n }\n return;\n }\n\n dispatch(setSelectedRegion(region));\n };\n};\n\nexport default fetchRegionCities;\n","import { ERequestMethod } from '@r1-frontend/api-domru/core/types/ERequestMethod';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { IRegion } from './dto/ResponseDto';\n\n// при расширении признаков группировки на бэке добавить сюда варианты группировки\ntype TGroupRegionsBy = 'firstChar';\n\ninterface IRequestParams {\n sortBy?: keyof IRegion,\n groupBy?: TGroupRegionsBy,\n}\n\n/**\n * Конфигурация запроса получения регионов\n * @param sortBy - сортировка регионов (по любому ключу интерфейса IRegion)\n * @param groupBy - группировать регионы по первой букве\n * https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%93%D0%95%D0%9E/02f89bce1a45c3bdc4b5012c0d245869\n */\nexport const getRegionsGroups = (providerId: number, queryParams: IRequestParams): IRequest => ({\n uri: '/v1/geography/get-regions',\n method: ERequestMethod.GET,\n headers: { 'ProviderId': `${providerId}` },\n queryParams,\n});\n\n","import { doRequest } from '@r1-frontend/do-request/index';\nimport { getRegionsGroups } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions';\nimport { IRegionsWithCitiesGroup } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport { setRegions } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nconst fetchRegionsList = () => {\n return async(dispatch: TAppThunkDispatch, getState: TGetState): Promise => {\n const state = getState();\n const providerId = selectProviderId(state);\n\n const resp = await doRequest.apiContent(\n getRegionsGroups(providerId, { sortBy: 'name', groupBy: 'firstChar' }),\n );\n\n if (resp.isSuccess) {\n dispatch(setRegions(resp.payload));\n }\n };\n};\n\nexport default fetchRegionsList;\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/*\n* Популярные города по весу(топ-7), выводимые на сайте.\n* https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%93%D0%95%D0%9E/48be3ae7afca61dc4db4c977c3115c60\n*/\n\nexport const getTopCities = (providerId: number): IRequest => ({\n uri: '/v1/geography/get-top-cities',\n method: 'GET',\n headers: { 'ProviderId': `${providerId}` },\n});\n","import { doRequest } from '@r1-frontend/do-request/index';\nimport { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites/dto/ResponseDto';\nimport { getTopCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-top-cities';\n\nimport { setTopCities } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nconst fetchTopCities = () => {\n return async(dispatch: TAppThunkDispatch, getState: TGetState): Promise => {\n const state = getState();\n const providerId = selectProviderId(state);\n\n const resp = await doRequest.apiContent(\n getTopCities(providerId),\n );\n\n if (resp.isSuccess) {\n dispatch(setTopCities(resp.payload));\n }\n };\n};\n\nexport default fetchTopCities;\n","/**\n * Смена домена на клиенте\n */\nexport const changeCity = (\n newCityDomain: string,\n newProviderId: number,\n) => {\n const { protocol, pathname } = window.location;\n\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.append('nextProviderId', `${newProviderId}`);\n\n const [, ...splittedHost] = window.location.host.split('.');\n\n const host = `${protocol}//${newCityDomain}.${splittedHost.join('.')}`;\n\n window.location.replace(`${host}${pathname}?${searchParams.toString()}`);\n};\n","import { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\n\nimport Cookies from '@r1-frontend/shared/helpers/Cookies';\n\nimport { closeCitySelect } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport { changeCity } from '~/src/components/CitySelectContainer/store/actions/changeCity';\nimport { CITYDOMAIN_COOKIE, COOKIE_MAX_AGE_LONG } from '~/src/constants';\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport { logout } from '~/src/store/actions/auth/logout';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nconst saveCity = (selectedCity?: ICitySatellite) => {\n return async(dispatch: TAppThunkDispatch, getState: TGetState): Promise => {\n const state = getState();\n const { auth: { isAuth } } = state;\n const providerId = selectProviderId(state);\n\n if (selectedCity) {\n const { domain, provider_id } = selectedCity;\n if (provider_id !== providerId) {\n if (isAuth) {\n dispatch(logout());\n }\n\n const cookies = new Cookies();\n cookies.save({\n name: CITYDOMAIN_COOKIE,\n value: domain,\n config: { maxAge: COOKIE_MAX_AGE_LONG },\n });\n\n changeCity(domain, provider_id);\n }\n }\n\n dispatch(closeCitySelect());\n };\n};\n\nexport default saveCity;\n","import React, { useEffect } from 'react';\nimport cookie from 'react-cookies';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { ICitySatellite } from '@r1-frontend/api-domru/api-content/v1/geography/get-cities-satellites';\nimport { IRegionWithCities } from '@r1-frontend/api-domru/api-content/v1/geography/get-regions/dto/ResponseDto';\n\nimport CitySelect from '@r1-frontend/city-select/index';\n\nimport { COOKIE_DOMAIN } from '~/src/constants';\nimport { TState } from '~/src/store';\n\nimport { fetchCitiesSatellites, fetchRegionCities, fetchRegionsList, fetchTopCities, saveCity } from './store/actions';\n\nconst CitySelectContainer = (): JSX.Element | null => {\n const dispatch = useDispatch();\n\n const { isOpen: citySelectIsOpen, regions, topCities, satellites, selectedRegion } = useSelector(\n (state: TState) => state.citySelect,\n shallowEqual,\n );\n\n useEffect(() => {\n if (citySelectIsOpen && isEmpty(regions) && !topCities.length && !satellites.length) {\n dispatch(fetchRegionsList());\n dispatch(fetchTopCities());\n dispatch(fetchCitiesSatellites());\n }\n }, [citySelectIsOpen]);\n\n const fetchCitiesByRegionId = (region: IRegionWithCities) => {\n dispatch(fetchRegionCities(region));\n };\n\n const citySelectHandler = (selectedCity?: ICitySatellite) => {\n const expires = new Date();\n expires.setDate(expires.getDate() + 41);\n\n cookie.save('cityconfirm', 1, {\n expires,\n domain: COOKIE_DOMAIN || 'perm',\n path: '/',\n });\n\n dispatch(saveCity(selectedCity));\n };\n\n return (citySelectIsOpen\n ? \n : null\n );\n};\n\nexport default CitySelectContainer;\n","import styled from 'styled-components';\n\nimport { BorderRadius } from '../../../tokens/borderRadius';\nimport { COLORS } from '../../../tokens/colors';\nimport { FONTS } from '../../../tokens/fonts';\n\ntype IStyleProps = {\n isChecked: boolean | undefined,\n disabled: boolean,\n withLabel: boolean,\n}\n\nexport const Label = styled.label`\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n display: inline-block;\n margin: 0 5px 0 0;\n user-select: none;\n position: relative;\n\n span {\n display: inline-block;\n white-space: nowrap;\n cursor: pointer;\n padding: 10px 24px;\n transition: background 0.2s ease;\n ${FONTS.MediumXS};\n border-radius: ${BorderRadius.OuterBlockRadius};\n color: ${COLORS.TextHint};\n }\n\n input[type=\"checkbox\"] {\n z-index: -1;\n opacity: 0;\n display: block;\n width: 0;\n height: 0;\n\n position: relative;\n appearance: none;\n flex: 0 0 auto;\n margin: 0;\n border-radius: 50%;\n transition: .3s;\n outline: none;\n box-sizing: border-box;\n cursor: pointer;\n\n & + span {\n background-color: ${COLORS.BgSurface};\n\n @media (hover: hover) {\n &:hover {\n background-color: ${COLORS.BgSecondary};\n }\n }\n }\n\n &:checked + span {\n background-color: ${COLORS.ButtonPrimary};\n color: ${COLORS.TextWhite};\n }\n }\n`;\n","import React, { FC, useCallback } from 'react';\n\nimport { Label } from './styled';\n\ninterface IRadioProps {\n id?: string,\n name?: string,\n value?: string,\n checked?: boolean,\n disabled?: boolean,\n required?: boolean,\n onChange: (value: string, event?: React.ChangeEvent) => void,\n className?: string,\n [key: string]: unknown,\n}\n\nconst MultiCheckbox: FC = ({\n id,\n name = '',\n value = '',\n checked,\n disabled = false,\n required,\n children,\n onChange,\n className,\n ...props\n}) => {\n const onChangeHandler = useCallback((event: React.ChangeEvent) => {\n if (!disabled) {\n onChange(event.target.value, event);\n }\n }, [disabled, onChange]);\n\n return (\n \n \n {children}\n \n );\n};\n\nexport default MultiCheckbox;\n","import styled from 'styled-components';\n\nimport MultiCheckbox from '@r1-frontend/ui-react/components/controls/multiCheckbox';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport PopupNoAuth from '~/src/components/Popups/NoAuth';\nimport PopupResponse from '~/src/components/Popups/PopupResult';\n\nexport const AdvertisingLabel = styled(AdvertisingLabelWithTooltip)`\n width: min-content;\n`;\n\nexport const Wrapper = styled.div`\n row-gap: 48px;\n margin-top: 8px;\n \n & > div {\n row-gap: 16px;\n flex-direction: column;\n }\n \n & #topBlock ${Paragraph4} {\n max-width: 300px;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n & button {\n max-width: fit-content;\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 24px;\n & #topBlock {\n padding: 0 8px;\n }\n \n & #bottomBlock {\n padding: 0 16px;\n }\n \n & ${Paragraph4} {\n ${FONTS.S};\n }\n }\n`;\n\nexport const SPopupNoAuth = styled(PopupNoAuth)`\n @media (max-width: ${wideBreakpoints.laptop}) {\n z-index: 300;\n }\n`;\n\nexport const SPopupResponse = styled(PopupResponse)`\n @media (max-width: ${wideBreakpoints.laptop}) {\n z-index: 300;\n }\n`;\n\nexport const SMultiCheckbox = styled(MultiCheckbox)`\n margin-top: 12px;\n\n &:nth-child(4), &:nth-child(5) {\n width: 172px;\n\n input > span {\n width: inherit;\n text-align: center;\n }\n }\n`;\n\nexport const SMultiCheckboxWrapper = styled.div`\n max-width: 360px;\n margin-top: -12px;\n`;\n","import { useCallback, useMemo } from 'react';\nimport Link from 'next/link';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport BasePopup from '@r1-frontend/ui-react/components/popups/basePopup';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { isLeadGenerationHide } from '~/src/helpers/isLeadGenerationHide';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isOpen: boolean,\n onClose: () => void,\n title: string,\n showRequestFormPopup: () => void,\n isMobile: boolean,\n}\n\nconst CLIENT_REFERRAL_LINK = '/bundles';\n\nconst ConnectDomruPopup = ({ isOpen, onClose, title, showRequestFormPopup, isMobile }: IProps): JSX.Element => {\n const isLeadGeneration = useMemo(() => isLeadGenerationHide(), []);\n\n const onClickReferralButton = useCallback(() => {\n if (location.pathname === CLIENT_REFERRAL_LINK) {\n onClose();\n } else {\n dataLayerPush({\n category: CATEGORIES.applicationForm,\n event: EVENTS.UAevent,\n action: ACTIONS.move,\n label: CLIENT_REFERRAL_LINK,\n });\n }\n }, [onClose]);\n\n const onShowRequestFormPopup = useCallback(() => {\n dataLayerPush({\n category: CATEGORIES.applicationForm,\n event: EVENTS.UAevent,\n action: ACTIONS.move,\n label: '[default_callback]',\n });\n showRequestFormPopup();\n onClose();\n }, [showRequestFormPopup, onClose]);\n\n return (\n \n \n
\n \n Оформите заявку онлайн за пару минут\n
\n
\n
\n \n \n \n
\n
\n {!isLeadGeneration &&\n <>\n Сложно определиться? Можем позвонить и помочь вам выбрать подходящий тариф!\n \n \n }\n
\n
\n \n );\n};\n\nexport default ConnectDomruPopup;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { requestByConnection, ResponseDto } from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport PopupCallBackNoAuth from '@r1-frontend/ui-react/components/popups/popupCallback';\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport { CATEGORIES } from '@r1-frontend/shared/constants/analytics';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport ConnectDomruPopup from '~/src/components/ConnectDomruPopup';\nimport { ISubmitParams } from '~/src/components/RequestFormPhone';\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nimport * as ST from './styled';\n\nconst multiCheckboxGroup: {\n id?: EProductsId,\n checked: boolean,\n value: string,\n}[] = [\n {\n id: undefined, // undefined означает, что это EProductsId.internet + EProductsId.tv и при этом не ломает тип\n checked: false,\n value: 'Интернет+ТВ',\n },\n {\n id: EProductsId.tv,\n checked: false,\n value: 'ТВ',\n },\n {\n id: EProductsId.internet,\n checked: false,\n value: 'Интернет',\n },\n {\n id: EProductsId.videoControl,\n checked: false,\n value: 'Видеонаблюдение',\n },\n {\n id: EProductsId.domofon,\n checked: false,\n value: 'Домофон',\n },\n ];\n\ninterface IConnectDomruPopupGroupProps {\n closeBecomeClientPopup: () => void,\n showBecomeClientPopup: boolean,\n}\n\nconst ConnectDomruPopupGroup = ({ closeBecomeClientPopup, showBecomeClientPopup }: IConnectDomruPopupGroupProps) => {\n const [showRequestFormPopup, setShowRequestFormPopup] = useState(false);\n const [showResponsePopup, setShowResponsePopup] = useState(false);\n const [becomeClientResponseMessage, setBecomeClientResponseMessage] = useState('');\n const [status, setStatus] = useState(EResultPopupStatus.ERROR);\n const [filters, setFilters] = useState(multiCheckboxGroup);\n\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n const companyName = useSelector(selectCompanyName);\n const csrf = useSelector(selectCsrf);\n\n\n const selectedProductsIds = useMemo(() => {\n const productIdsArray = new Set([\n EProductsId.internet,\n ]);\n\n filters\n .filter(el => el.checked)\n .forEach(({ id }) => {\n if (typeof id === 'undefined') {\n productIdsArray.add(EProductsId.internet);\n productIdsArray.add(EProductsId.tv);\n } else {\n productIdsArray.add(id);\n }\n });\n\n return [...productIdsArray];\n }, [filters]);\n\n const toggleFilter = useCallback((value) => {\n setFilters(currFilters => currFilters.map(el =>\n el.value === value ? { ...el, checked: !el.checked } : el));\n }, []);\n\n const sendBecomeClient = useCallback(async(clientData: ISubmitParams) => {\n const resp = await doRequest.apiRequest(\n requestByConnection({\n fio: clientData.fio || 'Потенциальный клиент сайта',\n phone: clientData.phone,\n check_call_type: window.location.pathname,\n product_id: selectedProductsIds,\n csrf,\n }),\n );\n if (resp.isSuccess) {\n const { status, message, request_id: requestId = null } = resp.payload;\n const ok = !!status;\n\n dataLayerForCBPhonePush({\n action: ok ? 'finished' : 'error',\n option: `${selectedProductsIds.join(',')}${ok ? '' : ' | ' + message}`,\n requestId,\n isPopup: true,\n });\n setBecomeClientResponseMessage(message);\n setStatus(ok ? EResultPopupStatus.SUCCESS : EResultPopupStatus.ERROR);\n } else {\n setBecomeClientResponseMessage(resp.error.message);\n setStatus(EResultPopupStatus.ERROR);\n dataLayerForCBPhonePush({\n action: 'error',\n isPopup: true,\n requestId: null,\n });\n }\n\n setShowRequestFormPopup(false);\n setShowResponsePopup(true);\n }, [selectedProductsIds]);\n\n const openRequestFormPopup = useCallback(() => {\n setShowRequestFormPopup(true);\n }, []);\n\n const closeRequestFormPopup = useCallback(() => {\n setShowRequestFormPopup(false);\n }, []);\n\n const closeResponsePopup = useCallback(() => {\n setShowResponsePopup(false);\n }, []);\n\n return (\n <>\n \n {showRequestFormPopup &&\n \n \n {filters.map(item => (\n toggleFilter(item.value)}\n checked={item.checked}\n >\n {item.value}\n \n ))}\n \n \n }\n\n \n \n );\n};\n\nexport default ConnectDomruPopupGroup;\n\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Copyright = styled.div`\n padding-top: 15px;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const CopyrighLeft = styled.div`\n display: block;\n`;\n\nexport const CopyrightCompany = styled.p`\n color: ${COLORS.GRAY_DARK};\n ${FONTS.XS};\n text-align: end;\n`;\n\nexport const CopyrightText = styled.p`\n max-width: 600px;\n ${FONTS.XS};\n color: ${COLORS.GRAY_DARK};\n \n &:not(:first-child) {\n margin-top: 16px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n &:last-child {\n margin-bottom: 16px;\n }\n }\n`;\n\nexport const CopyrightLink = styled.a`\n border-bottom: 1px solid currentColor;\n color: currentColor;\n transition: 0.25s;\n\n &:hover {\n color: ${COLORS.Control};\n }\n`;\n","import React, { memo } from 'react';\n\nimport { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport * as ST from './styled';\n\n\ninterface ICopyrightText {\n company: string,\n link: string,\n}\n\nconst CopyrightText = memo(\n ({ company, link }: ICopyrightText): JSX.Element => {\n return ({company} осуществляет обработку персональных и иных пользовательских данных\n в соответствии с{NBSP}\n \n Политикой в отношении обработки персональных данных\n .\n );\n },\n);\n\nCopyrightText.displayName = 'CopyrightText';\n\nexport default CopyrightText;\n","import React from 'react';\n\nimport CopyrightText from './copyrightText';\n\nimport * as ST from './styled';\n\ninterface ICopyright {\n copyrightLink: string,\n cobrandLegalEntity?: string,\n cobrandCopyrightLink?: string,\n}\n\nexport const Copyright = ({ copyrightLink, cobrandLegalEntity, cobrandCopyrightLink }: ICopyright): JSX.Element => {\n return (\n \n \n \n {cobrandCopyrightLink && cobrandLegalEntity &&\n }\n \n © АО «ЭР-Телеком\n Холдинг» 2011-{new Date().getFullYear()}\n \n );\n};\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const FooterLinks = styled.div`\n display: block;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 16px;\n }\n`;\n\nexport const LinksTitle = styled.p`\n margin-bottom: 12px;\n ${FONTS.H5};\n color: ${COLORS.TextPrimary};\n`;\n\nexport const LinksList = styled.ul`\n margin: 0;\n padding-left: 0;\n ${FONTS.XS};\n`;\n\nexport const ListItemLi = styled.li`\n list-style-type: none;\n line-height: 26px;\n margin-bottom: 2px;\n`;\n\nconst ListItem = css`\n cursor: pointer;\n ${FONTS.MediumXS};\n color: ${COLORS.GRAY_DARK};\n line-height: 26px;\n transition: 0.25s;\n \n &:hover {\n color: ${COLORS.TextPrimary};\n }\n`;\n\nexport const ListItemButton = styled.button`\n text-decoration-line: none;\n background: transparent;\n border: none;\n padding: 0;\n cursor: pointer;\n text-align: left;\n ${ListItem};\n`;\n\nexport const ListItemA = styled.a`\n ${ListItem};\n`;\n","import React from 'react';\nimport Link from 'next/link';\n\nimport * as ST from './styled';\n\ninterface ILink {\n text: string,\n link: string,\n dataTest?: string,\n onClick?: () => void,\n passHref?: boolean,\n}\n\nexport const ListItemLi = ({ link, text, onClick, passHref, dataTest }: ILink) =>\n \n \n {text}\n \n ;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const FooterLinks = styled.div`\n display: block;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 16px;\n }\n`;\n\nexport const LinksTitle = styled.p`\n margin-bottom: 12px;\n ${FONTS.H5};\n color: ${COLORS.TextPrimary};\n`;\n\nexport const LinksList = styled.ul`\n margin: 0;\n padding-left: 0;\n ${FONTS.XS};\n`;\n\nexport const ListItem = styled.li`\n line-height: 26px;\n margin-bottom: 2px;\n`;\n\nexport const ListItemA = styled.a`\n ${FONTS.MediumXS};\n color: ${COLORS.GRAY_DARK};\n line-height: 26px;\n transition: 0.25s;\n \n &:hover {\n color: ${COLORS.TextPrimary};\n }\n`;\n","import React from 'react';\n\nimport { ListItemLi } from '@r1-frontend/ui-react/organisms/Footer/components/LinkItem/ListItemLi';\n\nimport * as ST from './styled';\n\ninterface ILink {\n link: string,\n text: string,\n}\n\ninterface IFooterLinks {\n title: string,\n links: ILink[],\n}\n\nexport const FooterLinks = ({ title, links }: IFooterLinks) =>\n \n {title}\n \n {links.map((item) => )}\n \n ;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const PayBtn = styled.a`\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 24px;\n button {\n width: 100%;\n }\n }\n`;\n","import React from 'react';\nimport Link from 'next/link';\n\nimport { BaseButton, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\nimport * as ST from './styled';\n\ninterface IPayButton {\n payButtonLink?: string,\n}\n\nexport const PayButton = ({ payButtonLink = '/payments' }: IPayButton) =>\n \n \n \n \n ;\n\n\n","import { IInputValue } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\n\nexport const clearFields = (fields: IInputValue[]): void => {\n fields.forEach((field) => {\n if (field.clearInput) {\n field.clearInput();\n }\n });\n};\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport InputSimple, { nameDecorator, phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const BaseButton = styled(Button)`\n max-width: 200px;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n max-width: unset;\n }\n`;\n\nexport const NameInput = nameDecorator(InputSimple);\n\nexport const PhoneInput = styled(phoneDecorator(InputSimple))`\n width: 87%;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const BreakHack = styled.div`\n @media (max-width: ${wideBreakpoints.sMobile}) {\n margin-left: 5px;\n }\n \n white-space: nowrap;\n display: inline;\n`;\n\nexport const ButtonLookLikeHref = styled.div`\n display: inline;\n color: ${COLORS.Link};\n ${FONTS.MediumS};\n cursor: pointer;\n margin-left: 5px;\n transition: 0.3s;\n \n &:hover {\n color: ${COLORS.Brand_Blue};\n }\n`;\n\nexport const Popup = styled(DefaultPopup)`\n padding: 32px;\n display: flex;\n width: 960px !important;\n flex-direction: column;\n \n @media (max-width: ${wideBreakpoints.tablet}) {\n width: 800px !important;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 700px !important;\n }\n \n @media (max-width: ${wideBreakpoints.sMobile}) {\n padding: 26px;\n }\n \n > * {\n margin-bottom: 20px;\n }\n > *:last-child {\n margin-bottom: unset;\n }\n`;\n\nexport const ButtonsContainer = styled.div`\n display: flex;\n flex-direction: row;\n > * {\n margin-right: 12px;\n margin-top: 16px;\n }\n`;\n\nexport const Title = styled.h1`\n ${FONTS.H3};\n margin-top: 0;\n margin-bottom: 10px;\n`;\n\nexport const BaseContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n max-width: 570px;\n \n > *:not(:last-child) {\n margin-right: 12px;\n margin-bottom: unset;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}){\n flex-direction: column;\n align-items: center;\n \n > * {\n width: 100%;\n }\n \n > *:not(:last-child) {\n margin-bottom: 10px;\n }\n }\n`;\n\nexport const InputContainer = styled(BaseContainer)`\n min-height: 72px;\n align-items: flex-start;\n`;\n\nexport const Text = styled.div`\n align-items: baseline;\n`;\n\nexport const Message = styled.div<{ isError: boolean }>`\n color: ${props => props.isError ? COLORS.Error : COLORS.Success};\n`;\n\nexport const Link = styled.a`\n cursor: pointer;\n`;\n","export enum EThemes {\n PROBLEMS_REPORT,\n GET_CONSULTATION,\n BECOME_CLIENT,\n COMPLAIN,\n OTHER,\n}\n\nexport interface IInputValue {\n readonly isValid: boolean,\n readonly value: string,\n readonly clearInput?: () => void,\n}\n\nexport interface ITheme {\n code: EThemes,\n label: string,\n isHighlight?: boolean,\n}\n\nexport interface IRenderSelect {\n themes: ITheme[],\n highlightIndex: number,\n onSelectTheme: (theme: ITheme, index: number) => void,\n}\n\nexport const INITIAL_THEME = 2;\n\nexport const THEMES: ITheme[] = [\n {\n code: EThemes.PROBLEMS_REPORT,\n label: 'Сообщить о неполадках',\n },\n {\n code: EThemes.GET_CONSULTATION,\n label: 'Получить консультацию',\n },\n {\n code: EThemes.BECOME_CLIENT,\n label: 'Стать клиентом',\n },\n {\n code: EThemes.COMPLAIN,\n label: 'Пожаловаться',\n },\n {\n code: EThemes.OTHER,\n label: 'Другое',\n },\n];\n\nexport interface IRenderFormProps {\n readonly theme: ITheme,\n readonly fio: IInputValue,\n readonly phone: IInputValue,\n readonly onEditFio: (fio: IInputValue) => void,\n readonly onEditPhone: (phone: IInputValue) => void,\n readonly onChangeTheme: () => void,\n readonly onSendRequest: () => void,\n readonly isValid: boolean,\n readonly isLoading: boolean,\n readonly isError: boolean,\n readonly message: string | null | undefined,\n readonly policyLink: string,\n readonly onChangeHandle: (theme:ITheme) => void,\n readonly openChatHandler: () => void,\n}\nexport type TField = {\n value: string,\n isValid: boolean,\n clearInput: () => void,\n}\nexport interface ISendRequestHandleProps {\n theme: ITheme,\n fioValue: string,\n phoneValue: string,\n}\n\nexport type TSendRequestHandle= ({ theme, fioValue, phoneValue }: ISendRequestHandleProps) => Promise<{\n isError: boolean,\n message: string | null | undefined,\n}>;\n","import React from 'react';\n\nimport { Link, Message } from './styled';\n\ninterface IRenderMessageProps {\n isError: boolean,\n message: string | null | undefined,\n openChatHandler: () => void,\n}\n\nexport const RenderMessage = ({ isError, message, openChatHandler }: IRenderMessageProps) => {\n if (isError && message === undefined) {\n return \n Неизвестная ошибка, попробуйте оставить заявку позднее или напишите нам в \n чат.\n ;\n }\n if (message === null) {\n return null;\n }\n return {message};\n};\n","import React, { useCallback, useState } from 'react';\n\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { RenderMessage } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/RenderMessage';\nimport * as ST from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/styled';\nimport {\n IInputValue,\n IRenderFormProps,\n TField,\n} from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\n\nexport const RenderForm = ({\n policyLink,\n theme,\n fio,\n phone,\n onEditFio,\n onEditPhone,\n onChangeTheme,\n onSendRequest,\n isValid,\n isLoading,\n isError,\n message,\n onChangeHandle,\n openChatHandler,\n}: IRenderFormProps) => {\n const [beenStarted, setDataLayer] = useState(false);\n\n const onChangeHandler = useCallback((stateInput: IInputValue, _setState: (value: IInputValue) => void) => {\n const stateResult = typeof stateInput === 'object' ? stateInput.value : stateInput;\n // @TODO stateInput.value убрать из условия после фикса nameDecorator (useEffect onchange) UI react\n if (!beenStarted && stateResult) {\n onChangeHandle(theme);\n setDataLayer(true);\n }\n _setState(stateInput);\n }, [beenStarted, onChangeHandle, theme]);\n\n const buttonText = 'Отправить заявку';\n\n return <>\n Тема обращения: {theme.label}\n \n Оставьте номер телефона, и менеджер вам перезвонит. \n Или\n измените тему обращения.\n \n \n \n onChangeHandler(stateInput, onEditFio)}\n placeholder={'Ваше имя'}\n errorMessage={'Ожидаются только буквы и дефисы'}\n name='request-input-name'\n className={'ym-disable-keys'}\n />\n onChangeHandler(stateInput, onEditPhone)}\n placeholder={'Номер телефона'}\n errorMessage={'Введите телефон в формате +7 (999) 999-99-99'}\n name='request-input-phone'\n className={'ym-disable-keys'}\n />\n \n\n \n\n \n \n \n {buttonText}\n \n \n ;\n};\n","import React from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonsContainer, Title } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/styled';\nimport { IRenderSelect } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\n\nexport const RenderSelectTheme = ({ themes, onSelectTheme, highlightIndex }: IRenderSelect) =>\n <>\n Выберите тему обращения\n \n {themes.map((theme, index) =>\n onSelectTheme(theme, index)}\n data-test='popup-theme-choose'\n >\n {theme.label}\n )}\n \n ;\n\n","import React, { useCallback, useState } from 'react';\n\nimport { clearFields } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/helpers';\nimport { RenderForm } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/RenderForm';\nimport { RenderSelectTheme } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/RenderSelectTheme';\nimport {\n IInputValue,\n INITIAL_THEME,\n ITheme,\n THEMES,\n TSendRequestHandle,\n} from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\nimport { useIsValidForm } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/useIsValidForm';\n\nimport { Popup } from './styled';\n\ninterface CallRequestByThemeProps {\n isOpen: boolean,\n onClose: () => void,\n sendRequestHandle: TSendRequestHandle,\n policyLink: string,\n onChangeHandle: (theme: ITheme) => void,\n openChatHandler: () => void,\n}\n\nexport const CallRequestByTheme = ({\n openChatHandler,\n isOpen,\n onClose,\n sendRequestHandle,\n onChangeHandle,\n policyLink,\n}: CallRequestByThemeProps) => {\n const [theme, setTheme] = useState(THEMES[INITIAL_THEME]);\n const [selectBlockVisible, setVisible] = useState(true);\n const [isHighlight, setHighlight] = useState(INITIAL_THEME);\n const [fio, setFio] = useState({ value: '', isValid: false });\n const [phone, setPhone] = useState({ value: '', isValid: false });\n const [clearTimeoutLink, setClearTimeout] = useState(null);\n\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [message, setMessage] = useState(null);\n\n const [isValid] = useIsValidForm(fio, phone);\n\n\n // @TODO заплатка - потому что clearFields не очищает phone\n const clearFieldsPatch = () => {\n setFio({ value: '', isValid: false });\n setPhone({ value: '', isValid: false });\n };\n\n const handleClose = useCallback(() => {\n setVisible(true);\n setHighlight(INITIAL_THEME);\n setIsError(false);\n setMessage(null);\n clearFields([fio, phone]);\n clearFieldsPatch();\n if (clearTimeoutLink) {\n clearTimeout(clearTimeoutLink);\n }\n onClose();\n }, [fio, phone, clearTimeoutLink, onClose]);\n\n const handleSendRequest = useCallback(async() => {\n if (theme) {\n setIsError(false);\n setMessage(null);\n if (clearTimeoutLink) {\n clearTimeout(clearTimeoutLink);\n }\n setIsLoading(true);\n setMessage(null);\n\n const resp = await sendRequestHandle({\n theme,\n fioValue: fio.value,\n phoneValue: phone.value,\n });\n\n clearFields([fio, phone]);\n clearFieldsPatch();\n\n setIsLoading(false);\n setIsError(resp.isError);\n setMessage(resp.message);\n setClearTimeout(Number(setTimeout(() => {\n setIsError(false);\n setMessage(null);\n }, 30000)));\n }\n }, [theme, clearTimeoutLink, sendRequestHandle, fio, phone]);\n\n const onSelectHandler = (theme: ITheme, index: number) => {\n setVisible(false);\n setTheme(theme);\n setHighlight(index);\n };\n\n const onChangeHandler = () => {\n setVisible(true);\n clearFieldsPatch();\n };\n\n return \n {\n selectBlockVisible\n ? \n : \n }\n ;\n};\n\n\n","import { useEffect, useState } from 'react';\n\ninterface IInputValue {\n readonly isValid: boolean,\n readonly value: string,\n readonly clearInput?: () => void,\n}\n\nexport const useIsValidForm = (fio: IInputValue, phone: IInputValue): [boolean] => {\n const [isValid, setIsValid] = useState(false);\n useEffect(() => {\n setIsValid(fio.isValid && phone.isValid);\n }, [fio, phone]);\n return [isValid];\n};\n","import React from 'react';\n\nimport * as ST from './styled';\n\ninterface ILink {\n text: string,\n dataTest?: string,\n onClick: () => void,\n}\n\nexport const ListItemButton = ({ text, onClick, dataTest }: ILink) =>\n \n {text}\n ;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Header = styled.b`\n ${FONTS.H5};\n margin-bottom: 12px;\n display: block;\n`;\n\nexport const LinkPhone = styled.a`\n ${FONTS.MediumXS};\n color: ${COLORS.GRAY_DARK};\n transition: 0.25s;\n cursor: pointer;\n margin-bottom: 4px;\n\n &:hover {\n color: ${COLORS.TextPrimary};\n }\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-right: 14px;\n }\n`;\n\nexport const LinkCallBack = styled.a`\n ${FONTS.MediumXXS};\n color: ${COLORS.Link};\n transition: 0.25s;\n cursor: pointer;\n\n &:hover {\n color: ${COLORS.TextPrimary};\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.MediumXS};\n }\n`;\n\nexport const LinkWithIcon = styled.a`\n ${FONTS.MediumXS};\n color: ${COLORS.Link};\n transition: 0.25s;\n margin-bottom: 14px;\n margin-top: 2px;\n cursor: pointer;\n display: flex;\n align-items: center;\n\n & > img {\n margin-right: 8px;\n }\n\n &:hover {\n color: ${COLORS.Logo};\n }\n`;\n\nexport const RowNav = styled.div`\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-between;\n margin-bottom: 20px;\n grid-gap: 16px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n justify-content: flex-start;\n grid-gap: 13%;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n display: block;\n margin-bottom: 24px;\n\n & > *:nth-child(1) {\n margin-bottom: 8px;\n }\n }\n`;\n\nexport const RowCallback = styled.div`\n display: flex;\n align-items: baseline;\n flex-direction: column;\n margin-bottom: 14px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: row;\n margin-bottom: 24px;\n }\n`;\n\nexport const List = styled.ul`\n margin: 0;\n padding: 0;\n ${FONTS.XS};\n list-style: none;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ListItem = styled.li`\n list-style-type: none;\n display: block;\n line-height: 26px;\n margin-bottom: 2px;\n`;\n","import React, { useMemo, useState } from 'react';\n\nimport { CallRequestByTheme } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme';\nimport { ITheme, TSendRequestHandle } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\nimport IconVk from '@r1-frontend/ui-react/organisms/Footer/components/icons/vkSupport.svg';\nimport { ListItemButton } from '@r1-frontend/ui-react/organisms/Footer/components/LinkItem/ListItemButton';\nimport { ListItemLi } from '@r1-frontend/ui-react/organisms/Footer/components/LinkItem/ListItemLi';\n\nimport * as ST from './styled';\n\ninterface ISupport {\n sendRequestHandle: TSendRequestHandle,\n onChangeHandle: (theme: ITheme) => void,\n openChatHandler: () => void,\n contactEmail?: string,\n phone?: string,\n requestLink?: string,\n policyLink?: string,\n withChat?: boolean,\n}\n\nconst SOCIAL_NETWORKS = [\n {\n href: 'https://vk.me/domru',\n network: 'Vk',\n text: 'ВKонтакте',\n icon: IconVk,\n },\n];\n\nexport const Support = ({\n onChangeHandle,\n openChatHandler,\n requestLink = '/lk/feedback',\n contactEmail = 'help@domru.ru',\n policyLink = '/policy/app',\n phone,\n sendRequestHandle,\n withChat,\n}: ISupport) => {\n const [isCallbackOpen, setIsCallbackOpen] = useState(false);\n\n const onCallbackClick = () => {\n setIsCallbackOpen(true);\n };\n\n const handleClosePopup = () => {\n setIsCallbackOpen(false);\n };\n\n const phoneLink = useMemo(() => phone?.replace(/\\D/g, ''), [phone]);\n\n return <>\n Как с нами связаться\n \n\n \n {SOCIAL_NETWORKS.map(({ href, network, text, icon }) => (\n \n \n {`Техподдержка\n {`Написать ${text}`}\n \n ))}\n \n\n \n {withChat && }\n \n\n \n\n \n\n \n \n\n \n \n {phone}\n \n\n \n Заказать обратный звонок\n \n \n\n\n \n ;\n};\n\n\n","import styled from 'styled-components';\n\nimport Social from '@r1-frontend/ui-react/components/buttons/social';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Footer = styled.div`\n display: block;\n width: 100%;\n background: ${COLORS.BgSecondary};\n padding: 40px 0;\n margin-top: 50px;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding: 32px 0 24px 0;\n }\n`;\n\nexport const FooterTop = styled.div`\n display: grid;\n grid-template-columns: 45% 55%;\n\n @media (max-width: 1279px) {\n display: block;\n }\n`;\n\nexport const Wrap = styled.div`\n display: block;\n max-width: 1644px;\n padding: 0 8.4%;\n margin: 0 auto;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n padding: 0 5.3%;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 0 16px;\n }\n`;\n\nexport const FooterSupport = styled.div`\n display: block;\n padding: 0 42px 34px 0;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n padding: 0 0 34px 0;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding: 0 0 40px 0;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 0 0 24px 0;\n }\n`;\n\nexport const Container = styled.div`\n display: block;\n`;\n\nexport const SocialContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n ul {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n }\n\n li:not(:last-child) {\n margin-right: 8px;\n }\n\n a {\n width: 24px;\n height: 24px;\n opacity: 1;\n\n &:hover {\n background-color: ${COLORS.Outline_Light};\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n display: block;\n }\n`;\n\nexport const LinksWrap = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 0 0 34px 7.4%;\n position: relative;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n padding: 0;\n justify-content: flex-start;\n max-width: none;\n\n & > *:not(:last-child) {\n margin-right: 80px;\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n & > *:not(:last-child) {\n margin-right: initial;\n }\n\n & > * {\n flex: 100% 1 0;\n margin-bottom: 16px;\n }\n\n & > *:nth-child(1),\n & > *:nth-child(2) {\n flex: 50% 1 0;\n }\n }\n`;\n\nexport const SocialText = styled.div`\n ${FONTS.XS};\n color: ${COLORS.GRAY_DARK};\n margin-bottom: 10px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin: 0 0 8px 0;\n }\n`;\n\nexport const SocialStyled = styled(Social)`\n li > a {\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 44px;\n height: 44px;\n padding: 5px;\n }\n }\n \n li > a > img {\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 44px;\n height: 44px;\n max-width: 100%;\n max-height: 100%;\n }\n }\n`;\n\n\nexport const FooterService = styled.div`\n display: block;\n`;\n\nexport const Store = styled.div`\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-between;\n padding: 0 0 24px 7.4%;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n margin-top: 24px;\n padding: 0 0 25px 0;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 8px;\n flex-direction: column;\n }\n`;\n\nexport const StoreButtons = styled.div`\n display: flex;\n flex-direction: row;\n grid-gap: 12px;\n\n a {\n padding: 10px 9px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n justify-content: center;\n flex-wrap: nowrap;\n a {\n width: 100%;\n div{\n justify-content: center;\n }\n }\n }\n`;\n\nexport const FooterBottom = styled.div`\n display: block;\n border-top: 1px solid ${COLORS.GRAY_DARK};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding-top: 0;\n }\n`;\n\nexport const FooterText = styled.p`\n margin: 0;\n padding: 0 0 30px;\n`;\n","import React from 'react';\n\nimport MobileStoreButton, { EStoreName } from '@r1-frontend/ui-react/components/buttons/mobileStoreButton';\nimport { ITheme, TSendRequestHandle } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\nimport { Copyright } from '@r1-frontend/ui-react/organisms/Footer/components/Copyright';\nimport { FooterLinks } from '@r1-frontend/ui-react/organisms/Footer/components/FooterLinks';\nimport odnoklassniki from '@r1-frontend/ui-react/organisms/Footer/components/icons/odnoklassniki.svg';\nimport telegram from '@r1-frontend/ui-react/organisms/Footer/components/icons/telegram.svg';\nimport vkontakte from '@r1-frontend/ui-react/organisms/Footer/components/icons/vkontakte.svg';\nimport { PayButton } from '@r1-frontend/ui-react/organisms/Footer/components/PayButton';\nimport { Support } from '@r1-frontend/ui-react/organisms/Footer/components/Support';\n\nimport * as ST from './styled';\n\ninterface ILink {\n text: string,\n link: string,\n}\n\ninterface IServicesLinkInfo {\n title: string,\n key: string,\n linkList: ILink[],\n}\n\nexport interface IFooterLinks {\n payButtonLink?: string,\n requestLink?: string,\n policyLink?: string,\n copyrightLink: string,\n cobrandLegalEntity?: string,\n cobrandCopyrightLink?: string,\n}\n\ninterface IFooter {\n phone: string,\n onClickMobileButton: (mobileOs: string, e: React.SyntheticEvent) => void,\n servicesLinks: {\n services: ILink[],\n info: IServicesLinkInfo[],\n },\n sendRequestHandle: TSendRequestHandle,\n onChangeHandle: (theme: ITheme) => void,\n openChatHandler: () => void,\n text?: string,\n withChat?: boolean,\n contactEmail?: string,\n links: IFooterLinks,\n}\n\nconst SOCIALS = [\n { link: 'https://vk.com/domru', background: 'white', img: vkontakte },\n { link: 'https://ok.ru/domru', background: 'white', img: odnoklassniki },\n { link: 'https://t.me/domru_official', background: 'white', img: telegram },\n];\n\nexport const Footer = ({\n onChangeHandle,\n onClickMobileButton,\n openChatHandler,\n links,\n contactEmail,\n phone,\n text,\n servicesLinks,\n sendRequestHandle,\n withChat,\n}: IFooter) => (\n \n \n \n \n \n \n \n Мы в соц. сетях\n \n \n \n \n \n \n \n {servicesLinks.info.map(({ title, linkList, key }) =>\n )}\n \n \n \n \n ) => onClickMobileButton('Ios', e)}\n store={EStoreName.AppStore}\n data-test='app-store'\n />\n ) => onClickMobileButton('Android', e)}\n store={EStoreName.GooglePlay}\n data-test='google-play'\n />\n \n \n \n \n \n \n {text && {text}}\n \n \n \n);\n\n","import { createSelector } from 'reselect';\n\nimport { EContactStatuses } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { TState } from '~/src/store';\nimport { IClientContact, IClientContacts } from '~/src/store/reducers/auth';\n\nexport const selectClientContacts = (state: TState): IClientContacts | null => {\n return state.auth.clientContacts || null;\n};\n\nexport const selectClientContactsEmail = createSelector(\n selectClientContacts,\n (items) => {\n const emails = items?.email;\n return emails || [];\n },\n);\n\nexport const selectClientContactsEmailConfirmed = createSelector(\n selectClientContacts,\n (items) => {\n let result: IClientContact[] = [];\n const emails = items?.email;\n if (emails) {\n result = emails.reduce((acc, val) => {\n if (val.status === EContactStatuses.confirmed) {\n acc.push(val);\n }\n return acc;\n }, []);\n }\n return result;\n },\n);\n\nexport const selectClientContactsPhone = createSelector(\n selectClientContacts,\n (items) => {\n const emails = items?.email;\n return emails || [];\n },\n);\n\n\n","import styled from 'styled-components';\n\nimport { breakPoint, COLORS, FONTS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport Input from '@r1-frontend/ui-react/components/input';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\n\nexport const Text = styled.div`\n ${FONTS.S};\n`;\n\nexport const EmailPopup = styled(DefaultPopup)`\n min-height: 324px !important;\n width: 1013px !important;\n @media(${breakPoint(1024)}) {\n width: 800px !important;\n }\n @media(${breakPoint(768)}) {\n margin-left: 130px !important;\n width: auto !important;\n }\n @media(${breakPoint(320)}) {\n margin-left: 5px !important;\n }\n`;\n\nexport const Header = styled.div`\n ${FONTS.H2};\n margin: 56px 20px 10px 60px;\n @media(${breakPoint(768)}) {\n margin-top: 20px;\n ${FONTS.S};\n }\n @media(${breakPoint(320)}) {\n text-align: center;\n margin-left: 10px;\n }\n`;\n\nexport const Body = styled.div`\n display: flex;\n flex-direction: row;\n margin-left: 60px;\n @media(${breakPoint(320)}) {\n margin-left: 10px;\n justify-content: center;\n text-align: center;\n }\n`;\n\nexport const EmailBlock = styled.div`\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n margin: 20px 6px 0 0;\n width: 454px;\n`;\n\nexport const EmailInput = styled(Input)`\n margin-bottom: 5px;\n`;\n\nexport const EmailNotice = styled.div`\n margin: 5px 0;\n ${FONTS.XXS};\n color: ${COLORS.middleGray};\n`;\n\nexport const CodeBlock = styled.div`\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n margin: 20px 6px 0 6px;\n width: 200px;\n @media (${breakPoint(1024)}) {\n margin: 20px 20px 20px 0;\n }\n @media (${breakPoint(320)}) {\n align-items: center;\n margin-left: 20px;\n }\n`;\n\nexport const CodeInput = styled(Input)`\n margin-bottom: 5px;\n`;\n\nexport const ErrorMessage = styled.div`\n margin: 5px 0;\n ${FONTS.XXS};\n color: ${COLORS.red};\n`;\n\nexport const SendAgainLink = styled.a`\n max-width: 200px;\n margin: 5px 0;\n ${FONTS.XXS};\n border-bottom: 1px dotted;\n cursor: pointer;\n`;\n\nexport const Button = styled(BaseButton)`\n height: 48px;\n padding: 9px 24px;\n max-width: 172px;\n margin: 20px 6px 0 6px;\n @media (${breakPoint(1024)}) {\n margin: 20px 0 20px 0;\n }\n`;\n","import { FC, useCallback, useState } from 'react';\nimport Link from 'next/link';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { confirmEmail } from '@r1-frontend/api-domru/api-profile/v1/contacts/confirm-email';\nimport { contactsSendMailForConfirm } from '@r1-frontend/api-domru/api-profile/v1/contacts/send-mail-for-confirm';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport PopupResult, { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\n\nimport OpenChat from '~/src/components/OpenChatLink';\nimport { NON_BREAKING_SPACE } from '~/src/constants/simbols';\n\nimport * as ST from './styled';\n\ninterface IProps {\n email: string,\n errorMessage: string,\n showPopup: boolean,\n popupStep: EPopupSteps,\n onClosePopup: () => void,\n contactId: number,\n setErrorMessage: (message: string) => void,\n setPopupStep: (step: EPopupSteps) => void,\n emailConfirmedHandler: () => void,\n}\n\ninterface ICodeError {\n status: boolean,\n message: string,\n}\n\nexport enum EPopupSteps {\n success,\n error,\n addedUnconfirmedEmail,\n}\n\nexport const Popup: FC = ({\n email,\n errorMessage,\n showPopup,\n popupStep,\n onClosePopup,\n contactId,\n setErrorMessage,\n setPopupStep,\n emailConfirmedHandler,\n}: IProps) => {\n const [code, setCode] = useState('');\n const [codeError, setCodeError] = useState({\n status: false,\n message: '',\n });\n const changeCode = useCallback((value: string) => {\n setCode(value);\n }, []);\n\n const sendCodeAgain = useCallback(async() => {\n const url = location.origin + location.pathname;\n const response = await doRequest.apiProfile(\n contactsSendMailForConfirm({\n contact_id: contactId.toString(),\n url,\n show_code: '1',\n }),\n );\n\n if (!response.isSuccess) {\n setErrorMessage(response.error.message ? response.error.message : '');\n setPopupStep(EPopupSteps.error);\n }\n }, [contactId]);\n\n const closePopupHandler = useCallback(() => {\n setCodeError({\n status: false,\n message: '',\n });\n setCode('');\n onClosePopup();\n }, []);\n\n const submit = useCallback(async() => {\n const response = await doRequest.apiProfile(\n confirmEmail({\n key: code,\n contact_id: contactId,\n }),\n );\n\n if (response.isSuccess) {\n await emailConfirmedHandler();\n } else {\n setCodeError({\n status: true,\n message: response.error.message ? response.error.message : 'Код указан неверно, попробуйте ввести его еще раз',\n });\n }\n }, [code, contactId, emailConfirmedHandler]);\n\n switch (popupStep) {\n case (EPopupSteps.success):\n return (\n Теперь уведомления будут приходить вам на почту.\n Настройте уведомления\n \n Хорошо\n );\n case (EPopupSteps.error):\n return (\n \n Попробуйте позже или напишите в{NON_BREAKING_SPACE}\n \n );\n case (EPopupSteps.addedUnconfirmedEmail):\n return (\n Мы выслали вам на почту код подтверждения.
Пожалуйста, введите его в поле ниже
\n \n \n \n \n На вашу электронную почту отправлено письмо с подтверждением.
\n Перейдите по ссылке в письме или введите код подтверждения.\n
\n
\n \n \n \n Отправить письмо повторно\n \n \n Отправить\n \n
\n
);\n default:\n return <>;\n }\n};\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport Input from '@r1-frontend/ui-react/components/input';\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';\n\nexport const Container = styled.div`\n background: ${COLORS.BgSubstrate};\n border-radius: 32px;\n padding: 24px;\n display: flex;\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n margin-top: 80px;\n`;\n\nexport const MainText = styled.div`\n text-align: right;\n ${FONTS.L};\n margin: 20px 10px 0;\n\n @media (max-width: ${breakPoints.tablet}) {\n text-align: center;\n }\n`;\n\nexport const EmailInput = styled(Input)`\n max-width: 314px;\n margin: 30px 10px 0;\n`;\n\nexport const ButtonBlock = styled.div`\n flex-wrap: nowrap;\n width: 347px;\n margin: 30px 10px 0;\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n flex: 0 0 auto;\n height: 48px;\n padding: 9px 24px;\n margin-right: 12px;\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-right: 0;\n margin-bottom: 12px;\n }\n`;\n\nexport const Policy = styled.div`\n text-align: left;\n ${FONTS.XXS};\n color: ${COLORS.TextHint};\n display: inline;\n\n @media (max-width: ${breakPoints.tablet}) {\n text-align: center;\n }\n`;\n\nexport const PolicyLink = styled.a`\n color: ${COLORS.TextHint};\n text-decoration: underline;\n`;\n","import { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { addUnconfirmedEmail } from '@r1-frontend/api-domru/api-profile/v1/contacts/add-unconfirmed-email';\nimport { confirmEmail } from '@r1-frontend/api-domru/api-profile/v1/contacts/confirm-email';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport Input from '@r1-frontend/ui-react/components/input';\nimport GridContainerUI from '@r1-frontend/ui-react/components/layouts/gridContainer';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\n\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { TState } from '~/src/store';\nimport { getClientContacts } from '~/src/store/actions/auth/getClientContacts';\nimport { selectClientContactsEmailConfirmed } from '~/src/store/selectors/contacts';\n\nimport { EPopupSteps, Popup } from './popup';\n\nimport * as ST from './styled';\n\ninterface IProps {\n mainText: string,\n}\n\ninterface IEmail {\n value: string,\n isValid: boolean,\n}\n\nconst TEXT = 'Оставьте почту, чтобы быть в курсе событий';\nconst ERROR_WRONG_QUERY_PARAMS = 'ERROR_PARAMETER';\nconst WRONG_QUERY_PARAMS_MESSAGE = 'Возможно ссылка устарела';\n\nconst EmailWidget: FC = ({ mainText = TEXT }: IProps) => {\n\n const emailInput = useRef(null);\n\n const isAuth = useSelector((state: TState) => state.auth.isAuth);\n const emailsConfirmed = useSelector((state: TState) => selectClientContactsEmailConfirmed(state));\n\n const [email, setEmail] = useState({\n value: '',\n isValid: false,\n });\n const [contactId, setContactId] = useState(0);\n const [showWidget, setShowWidget] = useState(false);\n const [showPopup, setShowPopup] = useState(false);\n const [popupStep, setPopupStep] = useState(EPopupSteps.addedUnconfirmedEmail);\n const [errorMessage, setErrorMessage] = useState('');\n const [eventStartSended, setEventStartSended] = useState(false);\n\n const query = (useRouter()).query;\n const dispatch = useDispatch();\n\n const fetchQueryParams = async(): Promise => {\n const key = String(query.key);\n const contactId = Number(query.id);\n const response = await doRequest.apiProfile(\n confirmEmail({\n key,\n contact_id: contactId,\n }),\n );\n\n if (response.isSuccess) {\n await emailConfirmedHandler();\n } else {\n dataLayerPush({\n 'event' : 'UAevent',\n 'category': 'email_collection_widget',\n 'action' : 'error',\n });\n setPopupStep(EPopupSteps.error);\n if (response.error.code === ERROR_WRONG_QUERY_PARAMS) {\n setErrorMessage(WRONG_QUERY_PARAMS_MESSAGE);\n } else {\n setErrorMessage(response.error.message ? response.error.message : '');\n }\n }\n setShowPopup(true);\n };\n\n useEffect(() => {\n if (isAuth &&\n String(query.type) === 'confirm' &&\n query.id &&\n query.key) {\n fetchQueryParams();\n }\n }, []);\n\n // отображаем виджет только авторизованному пользователю если на договоре нет подтвержденной почты\n useEffect(() => {\n if (isAuth && emailsConfirmed.length === 0) {\n setShowWidget(true);\n dataLayerPush({\n 'event' : 'UAevent',\n 'category': 'email_collection_widget',\n 'action' : 'show_form',\n });\n } else {\n setShowWidget(false);\n }\n }, [isAuth, emailsConfirmed]);\n\n const changeEmail = useCallback((value: string): void => {\n if (!eventStartSended) {\n dataLayerPush({\n 'event': 'UAevent',\n 'category': 'email_collection_widget',\n 'action': 'started',\n });\n setEventStartSended(true);\n }\n const { current } = emailInput;\n const isValid = current ? !current?.state.hasError : false;\n setEmail({\n value,\n isValid,\n });\n }, [eventStartSended]);\n\n const onClosePopup = useCallback((): void => {\n setShowPopup(false);\n if (popupStep === EPopupSteps.success) {\n setShowWidget(false);\n }\n }, [popupStep]);\n\n const submit = useCallback(async(): Promise => {\n const url = location.origin + location.pathname;\n const resp = await doRequest.apiProfile(\n addUnconfirmedEmail({\n email: email.value,\n url,\n }),\n );\n\n if (resp.isSuccess) {\n dataLayerPush({\n 'event' : 'UAevent',\n 'category': 'email_collection_widget',\n 'action' : 'added_email',\n });\n setContactId(resp.payload);\n setPopupStep(EPopupSteps.addedUnconfirmedEmail);\n setShowPopup(true);\n } else {\n dataLayerPush({\n 'event' : 'UAevent',\n 'category': 'email_collection_widget',\n 'action' : 'error',\n });\n setErrorMessage(resp.error.message);\n setPopupStep(EPopupSteps.error);\n setShowPopup(true);\n }\n }, [email]);\n\n const emailConfirmedHandler = async(): Promise => {\n dataLayerPush({\n 'event' : 'UAevent',\n 'category': 'email_collection_widget',\n 'action' : 'сonfirmed_email',\n });\n setPopupStep(EPopupSteps.success);\n await dispatch(getClientContacts());\n };\n\n const buttonText = 'Подписаться';\n\n return <>\n { showWidget &&\n \n \n \n \n \n \n {buttonText}\n \n \n \n \n \n }\n \n ;\n};\n\nexport default connect()(EmailWidget);\n","import { createSelector } from 'reselect';\n\nimport { findIntercom, getFilteredMenuItems } from '~/src/store/actions/menu';\nimport { selectNewMenuItems } from '~/src/store/selectors/menu/selectMenu';\n\nexport const selectHasIntercom = createSelector(selectNewMenuItems, menuItems => {\n if (!menuItems) {\n return false;\n }\n const { authMain = [], unauthMain = [] } = menuItems;\n return !!(getFilteredMenuItems([...authMain, ...unauthMain], findIntercom).length);\n});\n","import React, { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { ESendByCallPetitions, ICallback, sendByCall } from '@r1-frontend/api-domru/api-request/v1/user/by-call';\nimport { backCall } from '@r1-frontend/api-domru/core-requests/api/v1/call/back';\n\nimport { Footer as FooterComponent, IFooterLinks } from '@r1-frontend/ui-react/organisms/Footer';\nimport { EThemes, ISendRequestHandleProps, ITheme } from '@r1-frontend/ui-react/organisms/Footer/components/CallRequestByTheme/types';\nimport { ACTIONS } from '@r1-frontend/shared/constants/analytics';\n\nimport EmailWidget from '~/src/components/Footer/emailWidget';\nimport { useFooterLinks } from '~/src/components/Footer/useFooterLinks';\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\nimport { getMobileLink } from '~/src/helpers/mobile';\nimport { TState } from '~/src/store';\nimport { openChat } from '~/src/store/actions/chat';\nimport { selectContactEmail, selectLegalEntity } from '~/src/store/selectors/city';\nimport { selectHasIntercom } from '~/src/store/selectors/menu/selectHasIntercom';\n\ninterface IFooter {\n withChat: boolean,\n withEmailWidget?: boolean,\n emailWidgetText?: string,\n text?: string,\n}\n\ninterface ICobrandData {\n copyrightLink: string,\n}\n\nconst COBRAND_DATA: Record = {\n 41: {\n copyrightLink: 'https://cdn-b2c.dom.ru/content/static/files/document/47307d957f4eceb977c2b8ee185e76d7.pdf',\n },\n};\n\nconst FOOTER_LINKS: IFooterLinks = {\n copyrightLink: 'https://cdn-b2c.dom.ru/content/static/files/document/44561aae80e8223dd766d0f6a1da9294.pdf ',\n};\n\nexport const Footer = ({ text, withEmailWidget, emailWidgetText = '', withChat }: IFooter) => {\n const dispatch = useDispatch();\n const {\n city: { currentCity: city, provider: { providerId } },\n auth: { isAuth, clientPersonal, accessToken, refreshToken },\n } = useSelector((state: TState) => state);\n const contactEmail = useSelector(selectContactEmail);\n const legalEntity = useSelector(selectLegalEntity);\n const hasIntercom = useSelector(selectHasIntercom);\n\n const { domain, internet, ctv, ktv, videocontrol } = city;\n const agreement = clientPersonal?.agreement;\n\n if (providerId in COBRAND_DATA) {\n FOOTER_LINKS.cobrandLegalEntity = legalEntity;\n FOOTER_LINKS.cobrandCopyrightLink = COBRAND_DATA[providerId]?.copyrightLink || '#';\n }\n\n const sendRequestHandle = useCallback(async({ theme, fioValue, phoneValue }: ISendRequestHandleProps) => {\n let resp;\n const uid = isAuth ? agreement : null;\n\n if (theme.code === EThemes.BECOME_CLIENT) {\n resp = await doRequest.apiRequest(\n sendByCall(providerId, {\n fio: fioValue,\n phone: phoneValue,\n petition: ESendByCallPetitions.RequestNew,\n }),\n );\n\n dataLayerForCBPhonePush({\n action: resp.isSuccess ? ACTIONS.finished : ACTIONS.error,\n requestId: null,\n option: resp.isSuccess ? `${theme.label}` : `${theme.label} | ${resp.error.message}`,\n isPopup: true,\n uid,\n });\n } else {\n resp = await doRequest.coreRequests(\n backCall({\n phoneNumber: phoneValue,\n }),\n );\n\n dataLayerForCBPhonePush({\n action: resp.isSuccess ? ACTIONS.orderService : ACTIONS.errorService,\n requestId: null,\n option: resp.isSuccess ? `${theme.label}` : `${theme.label} | ${resp.error.message}`,\n isPopup: true,\n uid,\n });\n }\n\n if (resp.isSuccess) {\n return { isError: false, message: 'Заявка успешно создана' };\n } else {\n return { isError: true, message: resp.error.message };\n }\n\n }, [providerId, agreement, domain, isAuth]);\n\n const onChangeHandle = useCallback((theme:ITheme)=> {\n dataLayerForCBPhonePush({\n action: theme.code === EThemes.BECOME_CLIENT ? ACTIONS.started : ACTIONS.startedService,\n requestId: null,\n option: `${theme.label}`,\n isPopup: true,\n uid: isAuth ? clientPersonal?.agreement : null,\n });\n }, [clientPersonal, isAuth]);\n\n\n const servicesLinks = useFooterLinks({\n hasInternet: internet,\n hasCtv: ctv,\n hasKtv: ktv,\n hasVideocontrol: videocontrol,\n hasDomofon: hasIntercom,\n domain,\n });\n\n const onClickMobileButton = (mobileOs: string, e: React.SyntheticEvent) => {\n e.preventDefault();\n window.location.href = getMobileLink(accessToken, refreshToken, agreement, city, mobileOs);\n };\n\n const openChatHandler = useCallback(() => dispatch(openChat()), [dispatch]);\n const phone = city.supportPhone;\n\n return <>\n {withEmailWidget && }\n \n ;\n};\n","import { useMemo } from 'react';\n\nimport { USER_LOGIN_ROUTE } from '~/src/constants/routes';\n\ninterface IUseFoterLinks {\n hasInternet: boolean,\n hasCtv: boolean,\n hasKtv: boolean,\n hasVideocontrol: boolean,\n hasDomofon: boolean,\n domain: string,\n}\n\nexport const useFooterLinks = ({ hasInternet, hasCtv, hasKtv, hasVideocontrol, hasDomofon, domain }: IUseFoterLinks) => {\n const servicesLinks = useMemo(() => {\n\n const services = [];\n\n if (hasInternet && (hasKtv || hasCtv)) {\n services.push({\n text: 'Интернет + ТВ',\n link: '/bundles',\n });\n }\n if (hasInternet) {\n services.push({\n text: 'Интернет для квартиры',\n link: '/internet',\n });\n }\n if (hasKtv && domain !== 'msk') {\n services.push({\n text: 'Интернет для дачи',\n link: '/internet/na-dachu',\n });\n }\n if (hasCtv) {\n services.push({\n text: 'Цифровое ТВ',\n link: '/movix-new',\n });\n }\n if (hasKtv && domain !== 'msk') {\n services.push({\n text: 'Кабельное ТВ',\n link: '/domru-tv/ktv',\n });\n }\n if (hasVideocontrol) {\n services.push({\n text: 'Видеонаблюдение',\n link: '/videocontrol',\n });\n }\n if (hasDomofon) {\n services.push({\n text: 'Домофон',\n link: '/domofon',\n });\n }\n return services;\n }, [hasInternet, hasKtv, hasCtv, domain, hasVideocontrol, hasDomofon]);\n\n const aboutCompanyLinks = useMemo(() => {\n return [\n {\n text: 'О компании',\n link: '/about',\n },\n {\n text: 'Вакансии Дом.ру',\n link: 'https://job.ertelecom.ru/',\n },\n {\n text: 'Новости',\n link: '/news',\n },\n {\n text: 'Контакты',\n link: '/service/contact',\n },\n ];\n }, [domain]);\n\n const otherLinks = useMemo(() => {\n return [\n {\n text: 'Дом.ру Бизнес',\n link: `https://${domain}.b2b.dom.ru`,\n },\n {\n text: 'Приставка Movix Pro',\n link: '/movix-new',\n },\n {\n text: 'Личный кабинет',\n link: `${USER_LOGIN_ROUTE}`,\n },\n {\n text: 'Партнерская программа Дом.ру',\n link: `https://${domain}.dom.ru/dealers/mania/?_ga=2.7658354.1198776689.1557729339-2075692635.1557729339`,\n },\n {\n text: 'Проверка адреса подключения',\n link: '/request/address',\n },\n {\n text: 'Отзывы клиентов',\n link: '/reviews',\n },\n ];\n }, [domain]);\n\n\n return useMemo(() => ({\n services: servicesLinks,\n info: [\n {\n title: 'Дом.ру',\n linkList: aboutCompanyLinks,\n key: 'links-domru',\n },\n {\n title: 'Прочее',\n linkList: otherLinks,\n key: 'links-other',\n },\n ],\n }), [aboutCompanyLinks, otherLinks, servicesLinks]);\n};\n","import React from 'react';\nimport LinkOriginal, { LinkProps } from 'next/dist/client/link';\n\ntype TLinkProps = React.FC, keyof LinkProps> & LinkProps & {\n children?: React.ReactNode,\n} & React.RefAttributes>;\n\nconst LinkWithoutPrefetch: TLinkProps = (props) => {\n return ;\n};\n\nexport default LinkWithoutPrefetch;\n","import styled from 'styled-components';\n\nimport { breakpoints } from '~/src/features/tariffLines/styled';\n\nexport const Logo = styled.a`\n flex: 0;\n display: flex;\n justify-content: center;\n max-width: 100%;\n`;\n\nexport const LogoImg = styled.img<{ maxWidth?: string }>`\n flex: 0;\n width: auto;\n height: auto;\n max-width: ${p => p.maxWidth ?? '128px'};\n max-height: 48px;\n\n @media (max-width: ${breakpoints.sMobile}) {\n max-width: ${p => p.maxWidth ?? '100px'};\n }\n`;\n","import { ComponentPropsWithoutRef, forwardRef, useEffect, useState } from 'react';\n\nimport { ICurrentCity } from '@r1-frontend/entities/City/models/ICurrentCity';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport LogoDefault from '~/static/images/menu/logo_default.svg';\nimport MobileLogoDefault from '~/static/images/menu/mobile_logo_default.svg';\n\nimport { Logo, LogoImg } from './styled';\n\ninterface IProps extends ComponentPropsWithoutRef<'a'> {\n providerId?: number,\n cityData: ICurrentCity,\n href: string,\n maxWidth?: string,\n className?: string,\n}\n\nconst MenuLogo = forwardRef((\n { cityData, href, maxWidth, className },\n ref,\n): JSX.Element => {\n const [logo, setLogo] = useState(cityData.logoFull);\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n useEffect(() => {\n isMobile\n ? setLogo(cityData.logo_narrow || MobileLogoDefault)\n : setLogo(cityData.logoFull || LogoDefault);\n }, [cityData, isMobile]);\n\n return (\n \n \n \n );\n});\nMenuLogo.displayName = 'ForwardedMenuLogo';\nexport default MenuLogo;\n","import { useDispatch } from 'react-redux';\n\nimport { openChat } from '~/src/store/actions/chat';\n\nimport { Link } from './styled';\n\ninterface IProps {\n children?: JSX.Element | JSX.Element[] | string,\n clickHandle?: () => void,\n}\n\nconst OpenChat = ({ children = 'чат', clickHandle }: IProps): JSX.Element => {\n const dispatch = useDispatch();\n\n const onClick = () => {\n dispatch(openChat());\n if (typeof clickHandle === 'function') {\n clickHandle();\n }\n };\n\n return (\n {children}\n );\n};\n\nexport default OpenChat;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Link = styled.a`\n display: contents;\n cursor: pointer;\n\n ${FONTS.MediumXS};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.MediumS};\n }\n`;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const PLANK_MOBILE_HEIGHT = 72;\n\nexport const PlankWrap = styled.div<{ isHide: boolean, isShows: boolean }>`\n display: none;\n min-width: 320px;\n width: 100%;\n height: 0;\n z-index: 12;\n background: ${COLORS.BgMain};\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n display: ${p => p.isHide ? 'none' : 'flex'};\n height: ${p => p.isShows ? `${PLANK_MOBILE_HEIGHT}px` : '0'};\n }\n`;\n","import DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport styled from 'styled-components';\n\nexport const PopupAuth = styled(DefaultPopup)`\n width: calc(100% - 20px) !important;\n max-width: 600px !important;\n border-radius: ${BorderRadius.OuterBlockRadius};\n\n @media (max-width: 767px) {\n max-width: 530px !important;\n }\n`;\n","import React, { Component } from 'react';\n\nimport AuthForm from '~/src/components/AuthForm';\nimport NoSSR from '~/src/helpers/noSSR';\n\nimport { PopupAuth } from './styled';\n\nclass PopupNoAuth extends Component {\n\n render() {\n const { title, handleSuccess, handleAuthClick, onlyBecomeClient, disableButton, currentTvPackage } = this.props;\n\n return (\n \n \n \n \n \n );\n }\n\n}\n\nexport default PopupNoAuth;\n","import React, { FC } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport PopupResult, { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\n\ninterface IPopupResponseProps {\n isOpen: boolean,\n type: EResultPopupStatus,\n title: string,\n text?: string,\n onClose: () => void,\n}\n\nconst PopupResponse: FC = ({ isOpen, type, title, text, onClose }) => {\n\n return (\n \n \n Закрыть\n \n \n );\n};\n\nexport default PopupResponse;\n","import styled, { keyframes } from 'styled-components';\n\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\nexport const BaseAnimation = styled.div`\n animation-duration: 2s;\n animation-timing-function: ease-in-out;\n animation-delay: 0.4s;\n animation-iteration-count: 1;\n animation-direction: normal;\n animation-fill-mode: both;\n animation-play-state: running;\n`;\n\nexport const Wrapper = styled.div`\n width: 100%;\n`;\n\nconst rightToLeftAnimation = keyframes`\n 0% {\n background-position: 0 0;\n }\n 75% {\n background-position: -320px 0;\n background-color: ${COLORS.BgMain};\n }\n 100% {\n background-position: -320px 0;\n background-color: ${COLORS.BgSurface};\n }\n`;\n\nexport const TariffsPlug = styled(BaseAnimation)<{ isWebpUsed: boolean }>`\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-wrap: nowrap;\n margin-left: 8px;\n width: 100%;\n max-width: 304px;\n height: 468px;\n ${FONTS.XS};\n text-align: center;\n white-space: pre-wrap;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background-color: ${COLORS.BgMain};\n background-image: url('/static/images/tariff-lines/bg-wave.${p => p.isWebpUsed ? 'webp' : 'png'}');\n background-position: 0 0;\n background-repeat: no-repeat;\n background-size: auto 100%;\n\n animation-name: ${rightToLeftAnimation};\n`;\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const PlugContent = styled(BaseAnimation)`\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-wrap: nowrap;\n gap: 16px;\n white-space: pre-wrap;\n\n animation-delay: 2.2s;\n animation-duration: 0.5s;\n animation-name: ${fadeIn};\n`;\n\nexport const SvgIcon = styled.svg`\n fill: ${COLORS.BgMain};\n`;\n","import Head from 'next/head';\n\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport * as ST from './styled';\n\nexport const TariffCardPlug = ({ ...rest }): JSX.Element => {\n const isWebpUsed = useWebp();\n\n return (\n \n \n \n \n \n \n \n \n \n {'Таких тарифов не нашлось. \\n Попробуйте изменить фильтр.'}\n \n \n \n );\n};\n","/**\n * Разрешения для медиа запросов в css - Desktop first\n *\n * @name data.breakPoints\n * @type {Record}\n */\nexport const breakPoints = {\n desktop: '1600px',\n sDesktop: '1365px',\n tablet: '1023px',\n mobile: '767px',\n sMobile: '375px',\n};\n\n/**\n * Разрешения для медиа запросов в css - Mobile First\n *\n * @name data.BreakPointsMFirst\n * @type {Record}\n */\nexport const BreakPointsMFirst = {\n desktop: '1601px',\n sDesktop: '1366px',\n tablet: '1024px',\n mobile: '768px',\n};\n","export const USER_LOGIN_ROUTE = '/api/auth/login';\nexport const USER_LOGOUT_ROUTE = '/api/auth/logout';\nexport const USER_CHANGE_ROUTE = '/api/auth/change';\n","export const NON_BREAKING_SPACE = '\\u00A0';\nexport const EM_DASH = '\\u2014';\nexport const NON_BREAKING_DASH = '\\u2011';\nexport const OP_BR = '«';\nexport const CL_BR = '»';\n","import { Context, createContext, useContext } from 'react';\n\nexport interface IAppContext {\n withShadowInMobileHeader?: boolean,\n isScrollingUp?: boolean,\n}\n\nexport const AppContext: Context = createContext({ isScrollingUp: true });\n\nexport const useAppContext = () => {\n return useContext(AppContext);\n};\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const PROMO_LINE_HEIGHT = 40;\n\nexport const HatLink = styled.a<{ image: string }>`\n display: flex;\n height: inherit;\n width: inherit;\n background-image: url(${p => p.image});\n background-size: auto 100%;\n`;\n\nexport const HatWrapperWithIndent = styled.div`\n width: inherit;\n height: ${PROMO_LINE_HEIGHT}px;\n background-color: ${COLORS.BgMain};\n z-index: 11;\n\n > [id='hat'] {\n background-color: inherit;\n width: inherit;\n height: inherit;\n position: fixed;\n z-index: 12;\n }\n`;\n\n\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/*\n* Промополоски с фильтром по городу\n* https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%9F%D1%80%D0%BE%D0%BC%D0%BE%D0%BF%D0%BE%D0%BB%D0%BE%D1%81%D0%BA%D0%B0/get_v1_promo_line\n*/\nexport const promoLine = (providerId: number): IRequest => ({\n uri: '/v1/promo-line',\n method: 'GET',\n headers: { 'ProviderId': `${providerId}` },\n});\n","import { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { IPromoline } from '@r1-frontend/api-domru/api-content/v1/geography/get-city-info/dto/IPromoline';\nimport { promoLine } from '@r1-frontend/api-domru/api-content/v1/promo-line';\n\nimport type { TState } from '~/src/store';\nimport { selectHasAuthorization } from '~/src/store/selectors/auth/selectAccessToken';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nconst PATHS_CONTAIN_TO_HIDE_LINE: string[] = [\n 'payments',\n 'full-buy',\n 'news',\n 'service',\n];\n\ninterface IPromolinesData {\n data: IPromoline[],\n status: 'initialised' | 'requested' | 'loaded',\n}\n\nexport interface IUseHatResponse {\n promoline?: IPromoline,\n isShowPromoLine: boolean,\n}\n\nexport const useHat = (): IUseHatResponse => {\n const [promolines, setPromolines] = useState({\n data: [],\n status: 'initialised',\n });\n\n const { withPromoLines, hasAuthorization, providerId } = useSelector((state: TState) => ({\n withPromoLines: state.city.currentCity.withPromoLines,\n hasAuthorization: selectHasAuthorization(state),\n providerId: selectProviderId(state),\n }));\n\n useEffect(() => {\n (async() => {\n if (withPromoLines && !promolines.data.length && promolines.status === 'initialised') {\n setPromolines((prevPromolinesData) => ({ ...prevPromolinesData, status: 'requested' }));\n const resp = await doRequest.apiContent<{ items: IPromoline[] }>(promoLine(providerId));\n setPromolines({ data: resp.isSuccess ? resp.payload.items : [], status: 'loaded' });\n }\n })();\n }, [withPromoLines, promolines, providerId]);\n\n const { asPath } = useRouter() || { asPath: '' };\n\n const promoline = useMemo(\n () =>\n promolines.data?.find((line) => {\n if (line['is_active']) {\n return hasAuthorization ? line['is_view_auth'] : line['is_view_guest'];\n }\n return false;\n }),\n [hasAuthorization, promolines.data],\n );\n\n const hideLineByPath = useMemo(() => {\n const paths = asPath.split(/[?///&/=]/);\n return PATHS_CONTAIN_TO_HIDE_LINE.some(link => paths.some(link1 => link1 === link));\n }, [asPath]);\n\n return {\n promoline,\n isShowPromoLine: (!hideLineByPath && !!withPromoLines) &&\n ((promolines.status === 'loaded' && !!promoline || promolines.status !== 'loaded')),\n };\n};\n","import styled, { createGlobalStyle, css } from 'styled-components';\n\nimport GridContainer from '@r1-frontend/ui-react/components/layouts/gridContainer';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakpoints } from '~/src/features/_layout/Header/types';\n\nexport const TOP_WRAPPER_HEIGHT = 50;\nexport const MAIN_WRAPPER_HEIGHT = 71;\n\nconst commonWrapperWithIndentStyle = css`\n width: inherit;\n background-color: ${COLORS.BgMain};\n max-width: 100%;\n min-width: 320px;\n\n > :first-child {\n width: inherit;\n min-width: inherit;\n height: inherit;\n background-color: inherit;\n flex-wrap: nowrap;\n position: fixed;\n padding: 0 32px;\n\n @media (max-width: ${breakpoints.sMobile}) {\n padding: 0 16px;\n }\n }\n`;\n\nexport const MainWrapperOffset = styled.div`\n ${commonWrapperWithIndentStyle};\n\n align-items: center;\n flex-wrap: nowrap;\n height: ${MAIN_WRAPPER_HEIGHT}px;\n`;\n\nexport const TopWrapperOffset = styled.div<{ isScrollingUp: boolean }>`\n ${commonWrapperWithIndentStyle};\n\n height: ${p => p.isScrollingUp ? `${TOP_WRAPPER_HEIGHT}px` : '0'};\n transition: height .25s;\n`;\n\nexport const TopWrapper = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: space-between;\n\n &::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 16px;\n right: 16px;\n height: 2px;\n box-shadow: inset 0 -2px ${COLORS.Outline_Light};\n }\n`;\n\nexport const HeaderWrapper = styled(GridContainer)<{ withShadow: boolean }>`\n display: none;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n display: block;\n min-width: 288px;\n width: inherit;\n position: relative;\n padding-right: 0;\n padding-left: 0;\n margin-right: 0;\n margin-left: 0;\n background-color: ${COLORS.BgMain};\n z-index: 11;\n\n > *:last-child {\n box-shadow: ${p => p.withShadow ? '0 8px 20px -2px rgb(41 44 48 / 10%)' : 'none'};\n }\n }\n`;\n\nexport const DropDownContainerTop = styled.div`\n height: auto;\n width: 100%;\n padding-left: 24px;\n padding-right: 24px;\n`;\n\nexport const DropDownContainerBottom = styled.div`\n margin: 24px 0 12px;\n ${FONTS.XS};\n flex-direction: row;\n display: flex;\n justify-content: space-between;\n flex-wrap: nowrap;\n padding-left: 24px;\n padding-right: 24px;\n`;\n\nexport const LinkItemDrop = styled.a`\n ${FONTS.MediumS};\n color: ${COLORS.TextPrimary};\n`;\n\nexport const TopMenuItemBlock = styled.div`\n flex-direction: column;\n`;\n\nexport const IconTextBlock = styled.div`\n ${FONTS.MediumXXS};\n background-color: ${COLORS.BgMain};\n text-align: center;\n color: ${COLORS.TextHint};\n height: auto;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n flex-wrap: wrap;\n`;\n\nexport const BurgerBlock = styled.div`\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n border-bottom: 2px solid ${COLORS.BgSecondary};\n padding: 20px 24px 12px;\n height: 71px;\n\n @media (max-width: ${breakpoints.mMobile}) {\n border-bottom: none;\n height: auto;\n padding: 12px 24px;\n }\n`;\n\nexport const BurgerWrapper = styled.div`\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n @media (max-width: ${breakpoints.mMobile}) {\n border-bottom: 2px solid ${COLORS.BgSecondary};\n padding-bottom: 8px;\n }\n`;\n\nexport const BurgerIcon = styled.div<{ isBurgerOpen?: boolean }>`\n display: flex;\n width: 36px;\n height: 36px;\n background-color: ${COLORS.ButtonSecondary};\n background-color: ${p => p.isBurgerOpen ? COLORS.BgMain : COLORS.ButtonSecondary};\n border-radius: 50%;\n cursor: pointer;\n margin-left: 8px;\n align-content: center;\n justify-content: center;\n`;\n\nexport const Logo = styled.div`\n display: block;\n margin: auto 17px auto 0;\n\n @media (max-width: ${breakpoints.sMobile}) {\n margin-right: 14px;\n }\n`;\n\nexport const TopMenuItem = styled.div`\n ${FONTS.Medium};\n color: ${COLORS.GRAY_DARK};\n padding: 6px 8px;\n`;\n\nexport const PartnersItem = styled.div`\n flex-direction: column;\n max-width: 112px;\n width: 100%;\n`;\n\nexport const Right = styled.div`\n flex: 1 0 1px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n flex-wrap: nowrap;\n width: 100%;\n height: 100%;\n ${FONTS.XS};\n\n @media (max-width: ${breakpoints.sMobile}) {\n margin-left: 14px;\n }\n`;\n\nexport const GlobalStyle = createGlobalStyle<{ isBlockedBody: boolean }>`\n ${p => p.isBlockedBody && css`\n body {\n position: fixed;\n overflow-y: scroll;\n width: 100%;\n }\n `}\n`;\n\nexport const BurgerMenu = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n height: 100vh;\n width: 100%;\n background: rgba(32, 32, 32, .6);\n overflow: hidden;\n overflow-y: auto;\n z-index: 200;\n`;\n\nexport const BurgerMenuWrapper = styled(GridContainer)`\n max-width: 408px;\n min-width: auto;\n padding: 0;\n width: 100%;\n position: relative;\n overflow-x: hidden;\n flex-direction: column;\n overflow-y: auto;\n margin-right: 0;\n background: ${COLORS.BgMain};\n background-color: ${COLORS.BgMain};\n`;\n\nexport const PromoImg = styled.div`\n background-color: ${COLORS.BgSurface};\n width: 40px;\n height: 40px;\n padding: 12px;\n border-radius: 50px;\n margin-bottom: 4px;\n cursor: pointer;\n justify-content: center;\n display: flex;\n\n img {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const RightMenu = styled.div`\n margin-left: auto;\n position: relative;\n ${FONTS.XXS};\n`;\n\nexport const isSmallMobile = styled.div`\n display: none;\n\n @media (max-width: ${breakpoints.mMobile}) {\n display: flex;\n width: 100%;\n }\n`;\n\nexport const isMobile = styled.div`\n display: flex;\n width: 100%;\n\n @media (max-width: ${breakpoints.mMobile}) {\n display: none;\n }\n`;\n","import { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types';\n\nexport interface ICommonHeaderBaseProps {\n items: Record,\n hasPhoneInfo?: boolean,\n}\n\nexport interface IUnauthHeaderProps extends ICommonHeaderBaseProps {\n onBecomeClientHandler: () => void,\n referrerPath: string,\n}\n\nexport const breakpoints = {\n desktop: '1599px',\n sDesktop: '1365px',\n tablet: '1121px',\n mobile: '768px',\n mMobile: '650px',\n sMobile: '350px',\n};\n","import { ColorsInterface } from '@r1-frontend/ui-kit/themes/colors/types';\n\nconst light: ColorsInterface = {\n brand: '#ff312c',\n notifications: {\n success: '#69c48f',\n warning: '#f5cb46',\n error: '#ff7b7b',\n info: '#449fef',\n },\n links: {\n accent: '#518399',\n native: '#626c77',\n },\n text: {\n head: '#181b21',\n primary: '#393c41',\n hint: '#9498a1',\n disabled: '#9db6c2',\n contrast: '#ffffff',\n },\n system: {\n accent: '#ff312c',\n primary: '#1e1f33',\n secondary: '#aad5ea',\n disabled: '#d4e5ec',\n deep: '#e6eef5',\n light: '#f5f8fB',\n background: '#ffffff',\n },\n overlay: '#20202099',\n};\n\nexport default light;\n","import light from '@r1-frontend/ui-kit/themes/colors/light';\nimport { TTheme } from '@r1-frontend/ui-kit/themes/types';\n\nimport baseTheme from './theme.common';\n\nconst lightTheme: TTheme = {\n ...baseTheme,\n colors: light,\n};\n\nexport default lightTheme;\n","import { createGlobalStyle } from 'styled-components';\nimport { normalize } from 'styled-normalize';\nimport reset from 'styled-reset';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\ninterface IGlobalStyle {\n endpoint: string,\n}\n\nexport const GlobalStyle = createGlobalStyle`\n ${reset};\n ${normalize};\n \n :root {\n --bold-h0: 56px/68px CoFoSansBold, Helvetica, sans-serif;\n --bold-h1: 40px/52px CoFoSansBold, Helvetica, sans-serif;\n --bold-h2: 32px/40px CoFoSansBold, Helvetica, sans-serif;\n --bold-h3: 24px/32px CoFoSansBold, Helvetica, sans-serif;\n --bold-h4: 20px/28px CoFoSansBold, Helvetica, sans-serif;\n --bold-h5: 16px/24px CoFoSansMedium, Helvetica, sans-serif;\n --bold-h6: 14px/20px CoFoSansBold, Helvetica, sans-serif;\n --label: 12px/16px CoFoSansBold, Helvetica, sans-serif;\n --label-s: 10px/14px CoFoSansBold, Helvetica, sans-serif;\n --medium: 1em/1.5em CoFoSansMedium, Helvetica, sans-serif;\n --medium-s: 16px/24px CoFoSansMedium, Helvetica, sans-serif;\n --medium-xs: 14px/20px CoFoSansMedium, Helvetica, sans-serif;\n --medium-xxs: 12px/16px CoFoSansMedium, Helvetica, sans-serif;\n --medium-xxxs: 8px/12px CoFoSansMedium, Helvetica, sans-serif;\n --regular-xxl: 24px/40px CoFoSansRegular, Helvetica, sans-serif;\n --regular-xl: 22px/36px CoFoSansRegular, Helvetica, sans-serif;\n --regular-l: 20px/32px CoFoSansRegular, Helvetica, sans-serif;\n --regular-m: 18px/28px CoFoSansRegular, Helvetica, sans-serif;\n --regular-s: 16px/24px CoFoSansRegular, Helvetica, sans-serif;\n --regular-xs: 14px/20px CoFoSansRegular, Helvetica, sans-serif;\n --regular-xxs: 12px/16px CoFoSansRegular, Helvetica, sans-serif;\n --regular-xxxs: 6px/9px CoFoSansRegular, Helvetica, sans-serif;\n --stories: 14px/16px CoFoSansRegular, Helvetica, sans-serif;\n --stories-s: 12px/14px CoFoSansRegular, Helvetica, sans-serif;\n }\n \n @font-face {\n font-family: 'fedraBook';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/FedraSansAltPro-Book.woff'),\n url('${props => props.endpoint}/static/fonts/FedraSansAltPro-Book.ttf'),\n url('${props => props.endpoint}/static/fonts/FedraSansAltPro-Book.woff2');\n }\n\n @font-face {\n font-family: 'fedraMedium';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/FedraSansAltPro-Medium.woff'),\n url('${props => props.endpoint}/static/fonts/FedraSansAltPro-Medium.ttf'),\n url('${props => props.endpoint}/static/fonts/FedraSansAltPro-Medium.woff2');\n }\n \n @font-face {\n font-family: 'fedraLight';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/FedraSansPro-Light.woff'),\n url('${props => props.endpoint}/static/fonts/FedraSansPro-Light.ttf');\n }\n \n @font-face {\n font-family: 'icomoon';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/icomoon.woff?hfqxn9'),\n url('${props => props.endpoint}/static/fonts/icomoon.svg?hfqxn9#icomoon'),\n url('${props => props.endpoint}/static/fonts/icomoon.ttf?hfqxn9');\n }\n \n @font-face {\n font-family: 'CoFoSansRegular';\n font-display: swap;\n src:\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.eot?#iefix') format('embedded-opentype'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.woff2') format('woff2'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.woff') format('woff'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.ttf') format('truetype');\n font-weight: normal;\n font-style: normal;\n }\n \n @font-face {\n font-family: 'CoFoSansMedium';\n font-display: swap;\n src:\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.eot?#iefix') format('embedded-opentype'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.woff2') format('woff2'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.woff') format('woff'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.ttf') format('truetype');\n font-weight: normal;\n font-style: normal;\n }\n \n @font-face {\n font-family: 'CoFoSansBold';\n font-display: swap;\n src:\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.eot?#iefix') format('embedded-opentype'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.woff2') format('woff2'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.woff') format('woff'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.ttf') format('truetype');\n font-weight: normal;\n font-style: normal;\n }\n\n body {\n font-family: \"R1Custom\", \"CoFoSansRegular\", Helvetica, sans-serif;\n font-style: normal;\n font-weight: normal;\n text-rendering: optimizeLegibility;\n }\n \n * {\n box-sizing: border-box;\n }\n \n * a {\n color: ${COLORS.Link};\n text-decoration: none;\n font-family: 'R1Custom', 'CoFoSansRegular', Helvetica, sans-serif;\n }\n \n #root {\n white-space: pre-wrap;\n }\n`;\n","import { createGlobalStyle } from 'styled-components';\n\nexport interface UIKitGlobalStyleInterface {\n /**\n * CDN path\n */\n endpoint: string,\n}\n\nexport const UIKitGlobalStyle = createGlobalStyle`\n @font-face {\n font-family: 'R1Custom';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.eot');\n src: url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.eot?#iefix') format('embedded-opentype'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.woff2') format('woff2'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.woff') format('woff'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Regular.ttf') format('truetype');\n font-weight: 100 400;\n }\n\n @font-face {\n font-family: 'R1Custom';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.eot');\n src: url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.eot?#iefix') format('embedded-opentype'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.woff2') format('woff2'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.woff') format('woff'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Medium.ttf') format('truetype');\n font-weight: 500;\n }\n\n @font-face {\n font-family: 'R1Custom';\n font-display: swap;\n src: url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.eot');\n src: url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.eot?#iefix') format('embedded-opentype'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.woff2') format('woff2'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.woff') format('woff'),\n url('${props => props.endpoint}/static/fonts/CoFo_Sans-Bold.ttf') format('truetype');\n font-weight: 600 900;\n }\n`;\n\nexport default UIKitGlobalStyle;\n","import React, { FC, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport dynamic from 'next/dynamic';\nimport { useRouter } from 'next/router';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { CHAT_ENDPOINT, IS_SANDBOX_ENVIROMENT } from '~/src/constants';\nimport { isPlayStation } from '~/src/helpers/mobile';\nimport NoSSR from '~/src/helpers/noSSR';\nimport { TState } from '~/src/store';\nimport { closeChat, loadedChat, openChat } from '~/src/store/actions/chat';\n\nconst ChatFrame = dynamic(() => import('@r1-frontend/ui-react/organisms/Chat'), { ssr: false });\n\ninterface IChat {\n enabled: boolean,\n className?: string,\n}\n\nconst Chat: FC = ({ enabled, className }: IChat) => {\n const { currentCity: city } = useSelector((state: TState) => state.city);\n const { isOpen: chatIsOpen } = useSelector((state: TState) => state.chat);\n\n const dispatch = useDispatch();\n\n const thisClientSide = isClientSide();\n const thisPlayStation = thisClientSide ? isPlayStation() : false;\n\n const { query } = useRouter();\n\n useEffect(() => {\n window.addEventListener('load', function() {\n if (typeof query.openchat === 'string') {\n dispatch(openChat());\n }\n });\n }, [query, dispatch]);\n\n useEffect(() => {\n if (IS_SANDBOX_ENVIROMENT) {\n document.domain = 'r-one.io';\n }\n }, [city]);\n\n const openChatHandler = () => {\n dataLayerPush({ event: 'online_chat', category: 'user', action: 'launched online chat' });\n dispatch(openChat());\n };\n\n const chatOnLoad = () => {\n dispatch(loadedChat(true));\n };\n\n const closeChatHandler = () => {\n dispatch(loadedChat(false));\n dispatch(closeChat());\n };\n\n if (thisPlayStation) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n\nexport default Chat;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakpoints } from '~/src/features/_layout/Header/types';\n\nexport const CityPhone = styled.a`\n ${FONTS.MediumXXS};\n color: ${COLORS.TextHint};\n text-decoration: none;\n\n &:hover {\n color: ${COLORS.TextPrimary};\n }\n\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n align-self: center;\n color: ${COLORS.TextPrimary};\n \n line-height: 27px;\n white-space: nowrap;\n background-color: ${COLORS.BgMain};\n border-radius: 14px;\n transition: 0.3s color ease;\n margin-right: 24px;\n }\n\n @media (max-width: ${breakpoints.mobile}) {\n margin-right: 46px;\n } \n \n\n @media (max-width: ${breakpoints.mMobile}) {\n margin-right: 0;\n }\n`;\n","import { IAdvertising } from '@r1-frontend/shared/types/shopItems/IAdvertising';\n\nexport interface ILabel {\n id: number,\n name: string,\n title: string,\n color: string,\n color_text: string,\n}\n\nexport interface IMenuItem {\n id: number,\n title: string,\n link: string,\n weight: number,\n desc?: string,\n add_desc?: string,\n available: 1 | 0,\n parent: 1 | 0,\n parent_id: unknown,\n view: 0 | 1 | 2,\n promoted: 1 | 0,\n button_link?: string,\n button_text?: string,\n promo_title?: string,\n promo_link?: string,\n promo_description?: string,\n name?: string,\n image: string,\n image_webp: string,\n image_icon?: string,\n image_icon_webp?: string,\n type?: string,\n image_animated?: string,\n category_id?: unknown,\n children?: IMenuItem[],\n parent_ids?: number[],\n labels?: ILabel[],\n advertising?: IAdvertising,\n}\n\nexport enum MenuType {\n COMMON = 'common',\n DESCRIPTION_LABEL = 'description-label',\n DESCRIPTION_BUTTON = 'description-button',\n DESCRIPTION_BUTTON_IMAGE = 'description-button-image',\n}\n\nexport interface IMenuByTypesChild {\n title: string,\n type: MenuType,\n children: IMenuItem[],\n}\n\nexport interface IMenuByTypesItem extends Omit {\n children: IMenuByTypesChild[],\n\n [key: string]: unknown,\n}\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { selectCurrentCityPhone } from '~/src/store/selectors/city';\n\nimport * as ST from './styled';\n\nconst PhoneInfo = () => {\n const { href, hasPhoneData, callCenter } = useSelector(selectCurrentCityPhone);\n\n if (!callCenter || !hasPhoneData) {\n return null;\n }\n\n return \n {callCenter}\n ;\n};\n\nexport default PhoneInfo;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const SDescription = styled.div<{ isPromo: boolean }>`\n ${FONTS.XS};\n color: ${({ isPromo }) => isPromo ? COLORS.TextInfo : COLORS.TextHint};\n white-space: break-spaces;\n`;\n","import { SDescription } from './styled';\n\ninterface IProps {\n description: string,\n isPromo?: boolean,\n className?: string,\n}\n\nconst Description = ({ description, isPromo = false, className }: IProps): JSX.Element => {\n return (\n \n {description}\n \n );\n};\n\nexport default Description;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const SButton = styled.a`\n position: relative;\n align-self: baseline;\n display: block;\n ${FONTS.MediumS};\n color: ${COLORS.ButtonAccent};\n padding-right: 15px;\n\n &:after {\n content: '';\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n width: 11px;\n height: 11px;\n background-color: ${COLORS.ButtonAccent};\n mask-image: url('/static/images/icons/arrow_right_red.svg');\n mask-size: contain;\n mask-position: center;\n mask-repeat: no-repeat;\n }\n\n &:hover {\n color: ${COLORS.Error};\n\n &:after {\n background-color: ${COLORS.Error};\n }\n }\n`;\n","import Link from 'next/link';\n\nimport { SButton } from './styled';\n\ninterface IProps {\n btnText?: string,\n btnLink: string,\n className?: string,\n}\n\nconst Button = ({ btnText = 'Подробнее', btnLink, className }: IProps): JSX.Element => {\n return (\n \n {btnText}\n \n );\n};\n\nexport default Button;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const STitle = styled.div<{ isPromo: boolean }>`\n ${({ isPromo }) => isPromo ? FONTS.H5 : FONTS.MediumS};\n color: ${COLORS.TextPrimary};\n transition: color .25s;\n`;\n","import Link from 'next/link';\n\nimport { STitle } from './styled';\n\ninterface IProps {\n title: string,\n href?: string,\n isPromo?: boolean,\n onClickHandler?: (menuType: 'Main' | 'Right', title: string) => void,\n className?: string,\n}\n\nconst Title = ({ title, href, isPromo = false, onClickHandler, className }: IProps): JSX.Element => {\n return (\n <>\n {(href && onClickHandler)\n ? \n onClickHandler('Main', title)}>\n {title}\n \n \n : {title}\n }\n \n );\n};\n\nexport default Title;\n","import styled from 'styled-components';\n\nimport Button from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Button';\nimport Title from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Title';\n\nexport const ItemWrapper = styled.div<{ isCurrent: boolean }>`\n flex-direction: column;\n max-width: 245px;\n pointer-events: ${p => p.isCurrent ? 'none' : 'auto'};\n`;\n\nexport const ItemTitle = styled(Title)`\n margin-bottom: 4px;\n`;\n\nexport const ItemBtn = styled(Button)`\n margin-top: 12px;\n`;\n","import Link from 'next/link';\nimport { useRouter } from 'next/router';\n\nimport { IMenuItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport Description from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Description';\n\nimport * as ST from './styled';\n\ninterface IProps {\n item: IMenuItem,\n onClickHandler: (menuType: 'Main' | 'Right', title: string) => void,\n}\n\nconst DescriptionButton = ({ item, onClickHandler }: IProps): JSX.Element => {\n const { asPath } = useRouter();\n const { title, link, add_desc = '', button_text, button_link } = item;\n\n return (\n onClickHandler('Main', title)}>\n \n \n \n \n \n \n {button_link && }\n \n );\n};\n\nexport default DescriptionButton;\n","import styled, { css } from 'styled-components';\n\nimport { Label } from '@r1-frontend/ui-react/components/label';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport Button from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Button';\nimport Description from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Description';\nimport Title from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Title';\n\nimport { SButton } from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Button/styled';\n\nexport interface IImageProps {\n imageSrc?: string,\n imageAlt?: string,\n top?: number,\n left?: number,\n isHover?: boolean,\n}\n\nexport const AnimationImg = styled.img`\n position: absolute;\n transform: scale(.8);\n opacity: 0;\n transition: all .3s ease;\n object-fit: cover;\n top: -30px;\n left: -10px;\n width: 205px;\n height: auto;\n`;\n\nexport const PromoItemWrapper = styled.div<{ isPromoMemu?: boolean, isCurrent: boolean }>`\n flex-direction: row;\n flex-wrap: nowrap;\n padding: 8px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background-color: ${COLORS.BgSurface};\n position: relative;\n max-width: 457px;\n width: auto;\n pointer-events: ${p => p.isCurrent ? 'none' : 'auto'};\n\n ${({ isPromoMemu }) => isPromoMemu\n ? css`\n align-self: stretch;\n `\n : css`\n align-self: baseline;\n justify-self: end;\n `\n };\n\n &:hover {\n background-color: ${COLORS.BgLight};\n\n ${SButton} {\n color: ${COLORS.Error};\n\n &:after {\n background-color: ${COLORS.Error};\n }\n }\n\n ${AnimationImg} {\n transform: scale(1);\n opacity: 1;\n }\n }\n`;\n\nexport const ImageBlock = styled.div<{ isPromoMemu?: boolean }>`\n flex: 1 0 182px;\n height: ${({ isPromoMemu }) => isPromoMemu ? '100%' : '159px'};\n border-radius: ${BorderRadius.InnerBlockRadius};\n overflow: hidden;\n position: relative;\n`;\n\nexport const ItemImage = styled.img`\n width: 100%;\n height: 100%;\n object-pisition: center;\n object-fit: cover;\n`;\n\nexport const ContentBlock = styled.div<{ isPromoMemu?: boolean }>`\n flex-direction: column;\n flex-wrap: nowrap;\n width: 100%;\n padding: ${({ isPromoMemu }) => isPromoMemu ? '16px 24px 20px 20px' : '10px 16px 12px 24px'};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n padding: 0 24px 0 16px;\n }\n`;\n\nexport const ContentLinkWrapper = styled.a`\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n`;\n\nexport const LabelsBlock = styled.div`\n flex-direction: row;\n flex-wrap: nowrap;\n margin-bottom: 4px;\n`;\n\nexport const SLabel = styled(Label)`\n &:not(:last-child) {\n margin-right: 4px;\n }\n`;\n\nexport const ItemTitle = styled(Title)`\n margin-bottom: 4px;\n white-space: pre-wrap;\n`;\n\nexport const ItemDescription = styled(Description)`\n flex: 1 1 auto;\n margin-bottom: 4px;\n`;\n\nexport const ItemBtn = styled(Button)`\n margin: auto 0;\n`;\n","import Link from 'next/link';\nimport { useRouter } from 'next/router';\n\nimport { IMenuItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\n\nimport * as ST from './styled';\n\nexport enum EMenuType {\n mainMenu = 'Main',\n rightMenu = 'Right',\n}\n\ninterface IProps {\n item: IMenuItem,\n isOnlyPromo?: boolean,\n onClickHandler: (menuType: EMenuType, title: string) => void,\n}\n\nconst DescriptionButtonImage = ({ item, isOnlyPromo = false, onClickHandler }: IProps): JSX.Element => {\n const { asPath } = useRouter();\n const { title, add_desc, image, image_webp, image_animated, link, button_text, button_link, labels = [], advertising } = item;\n\n return (\n onClickHandler(EMenuType.mainMenu, title)}\n >\n \n \n \n {advertising && (\n \n e.preventDefault()}\n companyName={advertising.companyName}\n erid={advertising.erid}\n tooltip={{\n zIndex: 999,\n closeOnTransition: true,\n }}\n />\n \n )}\n \n \n \n \n \n \n \n \n \n \n {labels.length\n ? \n {labels.map(label => (\n \n {label.title}\n \n ))}\n \n : <>\n }\n \n {add_desc && }\n \n \n {button_link && }\n \n \n );\n};\n\nexport default DescriptionButtonImage;\n","import styled, { css } from 'styled-components';\n\nimport { Label } from '@r1-frontend/ui-react/components/label';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport Description from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Description';\n\nexport const ItemWrapper = styled.div<{ isCurrent: boolean }>`\n max-height: 82px;\n min-width: 190px;\n width: max-content;\n padding: 6px 18px 12px;\n border-radius: ${BorderRadius.labelRadius};\n background-color: ${COLORS.BgMain};\n transition: background-color .25s;\n pointer-events: ${p => p.isCurrent ? 'none' : 'auto'};\n\n &:hover {\n background-color: ${COLORS.BgSurface};\n }\n`;\n\nexport const TitleRow = styled.div<{ withLabel?: boolean }>`\n flex-direction: row;\n flex-wrap: nowrap;\n ${({ withLabel }) => withLabel && css`\n margin-bottom: 1px;\n `};\n`;\n\nexport const SLabel = styled(Label)`\n margin-top: 2px;\n margin-left: 6px;\n`;\n\nexport const SDescription = styled(Description)`\n width: 190px;\n`;\n","import Link from 'next/link';\nimport { useRouter } from 'next/router';\n\nimport { IMenuItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport Title from '~/src/features/_layout/Header/desktop/components/MainMenuItem/components/Title';\n\nimport * as ST from './styled';\n\ninterface IProps {\n item: IMenuItem,\n onClickHandler: (menuType: 'Main' | 'Right', title: string) => void,\n}\n\nconst DescriptionLabel = ({ item, onClickHandler }: IProps): JSX.Element => {\n const { asPath } = useRouter();\n const { title, add_desc = '', link, labels = [] } = item;\n\n return (\n \n \n onClickHandler('Main', title)}\n data-test='subitem-link'\n >\n \n \n {labels.length\n ? labels.map((label, key) => (\n <ST.SLabel\n key={`${label.title}_${label.id}_${key}`}\n textColor={label.color_text}\n bgColor={label.color}\n data-test='subitem-label'\n >\n {label.title}\n </ST.SLabel>\n ))\n : <></>\n }\n </ST.TitleRow>\n <ST.SDescription description={add_desc}/>\n </a>\n </Link>\n </ST.ItemWrapper>\n );\n};\n\nexport default DescriptionLabel;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const CityWrapper = styled.div`\n display: flex;\n color: ${COLORS.GRAY_DARK};\n cursor: pointer;\n margin-right: 16px;\n margin-bottom: 0;\n ${FONTS.MediumXXS};\n align-items: center;\n gap: 6.5px;\n \n > svg {\n #guts {\n stroke: ${COLORS.GRAY_DARK};\n }\n }\n \n &:hover {\n color: ${COLORS.TextPrimary};\n \n > svg {\n #guts {\n stroke: ${COLORS.TextPrimary};\n }\n }\n }\n`;\n\n\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Location } from '@r1-frontend/ui-react/components/svg/location';\n\nimport { openCitySelect } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport { getCurrentCity } from '~/src/store/selectors/city';\n\nimport * as ST from './styled';\n\ninterface IProps {\n className?: string,\n}\n\nexport const CitySelect = ({ className }: IProps) => {\n const dispatch = useDispatch();\n const city = useSelector(getCurrentCity);\n const openCitySelectHandler = () => dispatch(openCitySelect());\n\n return <ST.CityWrapper\n role='button'\n onClick={openCitySelectHandler}\n data-test='city-select-btn'\n className={className}\n >\n <Location size={14}/>\n <span>{city ? city.name : null}</span>\n </ST.CityWrapper>;\n};\n","import styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\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 MenuLogo from '~/src/components/MenuLogo';\nimport { CitySelect } from '~/src/features/_layout/Header/commonComponents/CitySelect';\nimport { IImageProps } from '~/src/features/_layout/Header/desktop/components/UnauthDesktopHeader/connectionButtonAnimation';\n\nexport const TOP_WRAPPER_HEIGHT = 40;\nexport const MAIN_WRAPPER_HEIGHT = 65;\n\nexport const Wrapper = styled.div`\n display: block;\n position: relative;\n width: inherit;\n background-color: ${COLORS.BgMain};\n z-index: 11;\n transition: background-color 0.25s ease 0s, top 0.2s ease-out;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n display: none;\n height: 0;\n }\n`;\n\nexport const Container = styled(WideContainer)`\n align-items: flex-start;\n justify-content: space-between;\n`;\n\nconst commonWrapperWithIndentStyle = css`\n width: inherit;\n background-color: ${COLORS.BgMain};\n\n > :first-child {\n width: inherit;\n height: inherit;\n background-color: inherit;\n position: fixed;\n }\n`;\n\nexport const MainWrapperOffset = styled.div`\n ${commonWrapperWithIndentStyle};\n\n height: ${MAIN_WRAPPER_HEIGHT}px;\n`;\n\nexport const TopWrapperOffset = styled.div<{ isScrollingUp: boolean }>`\n ${commonWrapperWithIndentStyle};\n \n height: ${p => p.isScrollingUp ? `${TOP_WRAPPER_HEIGHT}px` : '0'};\n transition: height .25s;\n`;\n\nexport const TopWrapper = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n`;\n\nexport const CitySelectionBlock = styled(CitySelect)`\n position: relative;\n margin-right: auto;\n transition: color .25s;\n`;\n\nexport const PartnersBlock = styled.ul`\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n flex: 1 1 auto;\n justify-content: center;\n padding-top: 12px;\n`;\n\nexport const ServiceBlock = styled.ul`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n`;\n\nexport const MainWrapper = styled.nav`\n display: flex;\n flex-wrap: nowrap;\n padding-top: 15px;\n border-bottom: 1px solid ${COLORS.Outline_Light};\n`;\n\nexport const LogoBlock = styled.div`\n align-items: baseline;\n margin-right: 10px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n margin-right: 6px;\n }\n`;\n\nexport const SMenuLogo = styled(MenuLogo)`\n margin-top: 4px;\n\n img {\n max-width: unset;\n height: 26px;\n }\n`;\n\nexport const MainBlockInnerContainer = styled.ul`\n display: flex;\n flex: 1;\n justify-content: center;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: baseline;\n`;\n\nexport const ClientActionsBlock = styled.div`\n display: flex;\n position: relative;\n flex-wrap: nowrap;\n align-items: baseline;\n margin-left: 10px;\n\n & > div {\n margin-left: 8px;\n }\n \n & > a:not(:first-child),\n & > button:not(:first-child) {\n margin-left: 12px;\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n margin-left: 6px;\n }\n`;\n\nexport const AnimationImg = styled.div<IImageProps>`\n color: ${COLORS.TextWhite};\n ${FONTS.MediumXXS};\n background-color: ${COLORS.Brand_Blue};\n padding: 4px 8px;\n border-radius: ${BorderRadius.labelRadius};\n position: absolute;\n transform: rotate(${p => p.isHover ? `${p.rotateOnLeave}deg` : '0'});\n top: ${p => p.isHover ? `${p.top}px` : '5px'};\n left: ${p => `${p.left}px`};\n right: ${p => `${p.right}px`};\n transition: all .5s ease;\n`;\n\nexport const SBaseButton = styled(BaseButton)`\n position: relative;\n z-index: 100;\n`;\n","import styled, { css } from 'styled-components';\n\nimport { MenuType } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport Title from './components/Title';\n\nimport { TOP_WRAPPER_HEIGHT } from '~/src/features/_layout/Header/desktop/components/CommonDesktopHeader/styled';\n\nconst LocalCollapsedMenuBoxShadow = '4px 8px 12px rgba(0,0,0,.07)';\n\nconst getContentTypeStylesByType = (type: MenuType) => {\n switch (type) {\n case MenuType.DESCRIPTION_LABEL:\n return css`\n grid-template-rows: repeat(2, auto);\n grid-template-columns: repeat(2, auto);\n grid-auto-flow: column;\n gap: 9px 55px;\n margin-left: -18px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n gap: 9px 32px;\n }\n `;\n case MenuType.DESCRIPTION_BUTTON:\n return css`\n grid-template-rows: repeat(1, auto);\n grid-auto-flow: row;\n gap: 0 55px;\n `;\n case MenuType.COMMON:\n default:\n return css`\n grid-template-rows: repeat(4, auto);\n grid-auto-flow: column;\n gap: 12px 144px;\n `;\n }\n};\n\nexport const CollapsedMenu = styled.div`\n position: fixed;\n left: 0;\n right: 0;\n height: 0;\n opacity: 0;\n visibility: hidden;\n overflow: hidden;\n transform-origin: top center;\n transition: height 0.3s ease;\n background-color: ${COLORS.BgMain};\n box-shadow: ${LocalCollapsedMenuBoxShadow};\n`;\n\nexport const MenuItemWrapper = styled.li<{ isPromo: boolean }>`\n position: relative;\n display: flex;\n margin: 0 10px;\n padding: 8px 2px 22px;\n white-space: nowrap;\n \n &:after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 0;\n height: 2px;\n background-color: ${COLORS.Control};\n transition: width .25s;\n }\n\n &:hover {\n & > ${CollapsedMenu} {\n opacity: 1;\n visibility: visible;\n height: 256px;\n transition: height 0.5s;\n margin-top: ${TOP_WRAPPER_HEIGHT}px;\n }\n\n &:after {\n width: 100%;\n }\n }\n \n transition: color 0.3s;\n ${({ isPromo }) => isPromo\n ? css`\n color: ${COLORS.Logo};\n `\n : css`\n color: ${COLORS.TextPrimary};\n\n &:hover {\n color: ${COLORS.Logo};\n }\n `\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n margin: 0 6px;\n padding: 10px 2px 24px;\n }\n`;\n\nexport const TextItem = styled.p`\n ${FONTS.MediumXS};\n color: inherit;\n cursor: default;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.MediumXXS};\n }\n`;\n\nexport const CollapsedContainer = styled(WideContainer)`\n position: relative;\n display: grid;\n grid-template-rows: 208px;\n grid-auto-flow: column;\n gap: 0 32px;\n padding-top: 24px;\n padding-bottom: 24px;\n`;\n\nexport const TypeWrapper = styled.div`\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-columns: 1fr;\n grid-gap: 12px 0;\n justify-items: baseline;\n`;\n\nexport const TypeTitle = styled.div`\n position: relative;\n ${FONTS.H5};\n color: ${COLORS.TextDisabled};\n\n &:after {\n content: ' ';\n position: absolute;\n top: 0;\n left: 0;\n ${FONTS.H5};\n user-select: none;\n }\n`;\n\nexport const TypeContent = styled.div<{ type: MenuType }>`\n display: grid;\n ${p => getContentTypeStylesByType(p.type)};\n align-self: baseline;\n`;\n\nexport const CommonTitle = styled(Title)<{ isCurrent: boolean }>`\n pointer-events: ${p => p.isCurrent ? 'none' : 'auto'};\n\n &:hover {\n div {\n color: ${COLORS.TextDisabled};\n }\n }\n`;\n\nexport const LinkItem = styled.a<{ isCurrent: boolean }>`\n ${FONTS.MediumXS};\n color: inherit;\n pointer-events: ${p => p.isCurrent ? 'none' : 'auto'};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.MediumXXS};\n }\n`;\n","import { memo } from 'react';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\n\nimport {\n IMenuByTypesChild,\n IMenuByTypesItem,\n MenuType,\n} from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport DescriptionButton from './childItems/DescriptionButton';\nimport DescriptionButtonImage from './childItems/DescriptionButtonImage';\nimport DescriptionLabel from './childItems/DescriptionLabel';\n\nimport * as ST from './styled';\n\ninterface IProps {\n mainMenuItem: IMenuByTypesItem,\n itemRef?: (instance: HTMLLIElement | null) => void,\n onDataLayerHandler: (menuType: 'Main' | 'Right', title: string) => void,\n}\n\nconst getItemByType = (\n currentPath: string,\n item: IMenuByTypesChild,\n dataLayerHandler: (menuType: 'Main' | 'Right', title: string,) => void,\n) => {\n const isOnlyPromoChildren = item.type === MenuType.DESCRIPTION_BUTTON_IMAGE && item.children.length > 1;\n\n switch (item.type) {\n case MenuType.DESCRIPTION_BUTTON_IMAGE:\n return item.children.map(child => (\n <DescriptionButtonImage\n key={child.id}\n item={child}\n isOnlyPromo={isOnlyPromoChildren}\n onClickHandler={dataLayerHandler}\n />\n ));\n case MenuType.DESCRIPTION_BUTTON:\n return (\n <ST.TypeWrapper key={item.title}>\n <ST.TypeTitle>{item.title}</ST.TypeTitle>\n <ST.TypeContent type={item.type}>\n {item.children.map(child => (\n <DescriptionButton\n key={child.id}\n item={child}\n onClickHandler={dataLayerHandler}\n />\n ))}\n </ST.TypeContent>\n </ST.TypeWrapper>\n );\n case MenuType.DESCRIPTION_LABEL:\n return (\n <ST.TypeWrapper key={item.title}>\n <ST.TypeTitle>{item.title}</ST.TypeTitle>\n <ST.TypeContent type={item.type}>\n {item.children.map((child, index) => (\n <DescriptionLabel\n key={`description-label-${child.id}-${index}`}\n item={child}\n onClickHandler={dataLayerHandler}\n />\n ))}\n </ST.TypeContent>\n </ST.TypeWrapper>\n );\n case MenuType.COMMON:\n default:\n return (\n <ST.TypeWrapper key={item.title}>\n <ST.TypeTitle>{item.title}</ST.TypeTitle>\n <ST.TypeContent type={item.type}>\n {item.children.map(child => (\n <ST.CommonTitle\n key={child.id}\n isCurrent={child.link === currentPath}\n title={child.title}\n href={child.link}\n onClickHandler={dataLayerHandler}\n />\n ))}\n </ST.TypeContent>\n </ST.TypeWrapper>\n );\n }\n};\n\nconst MainMenuItem = ({\n mainMenuItem,\n itemRef,\n onDataLayerHandler,\n}: IProps): JSX.Element => {\n const { asPath } = useRouter();\n\n return (\n <ST.MenuItemWrapper\n ref={itemRef}\n isPromo={!!mainMenuItem.promoted}\n >\n {mainMenuItem.children?.length\n ? <>\n <ST.TextItem>{mainMenuItem.title}</ST.TextItem>\n <ST.CollapsedMenu>\n <ST.CollapsedContainer>\n {mainMenuItem.children.map(child => (\n getItemByType(asPath, child, onDataLayerHandler)\n ))}\n </ST.CollapsedContainer>\n </ST.CollapsedMenu>\n </>\n : <Link\n href={mainMenuItem.link}\n prefetch={false}\n passHref\n >\n <ST.LinkItem\n isCurrent={asPath === mainMenuItem.link}\n onClick={() => onDataLayerHandler('Main', mainMenuItem.title)}\n data-test='link-item'\n >\n {mainMenuItem.title}\n </ST.LinkItem>\n </Link>\n }\n </ST.MenuItemWrapper>\n );\n};\n\nexport default memo(MainMenuItem);\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const PartnerSvgIcon = styled.div<{ iconPath?: string }>`\n width: 10px;\n height: 10px;\n margin-right: 4px;\n background-color: ${COLORS.GRAY_DARK};\n mask-image: url(${p => p.iconPath});\n mask-size: contain;\n mask-position: center;\n mask-repeat: no-repeat;\n transition: background-color .25s;\n`;\n\nexport const MenuItemWrapper = styled.li`\n display: flex;\n align-items: center;\n\n &:not(:last-child) {\n margin-right: 24px;\n }\n\n a {\n color: ${COLORS.TextHint};\n transition: color .25s;\n }\n\n &:hover {\n ${PartnerSvgIcon} {\n background-color: ${COLORS.Logo};\n }\n\n a {\n color: ${COLORS.Logo};\n }\n }\n`;\n\nexport const PartnerIcon = styled(PartnerSvgIcon)`\n background-color: transparent;\n mask-image: none;\n\n img {\n width: 100%;\n height: auto;\n }\n`;\n\nexport const PartnerLink = styled.a`\n ${FONTS.MediumXXS};\n text-decoration: none;\n`;\n","import { memo, useMemo } from 'react';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport * as ST from './styled';\n\ninterface IProps {\n partner: IMenuByTypesItem,\n onDataLayerHandler: (menuType: 'Main' | 'Right', title: string) => void,\n}\n\nconst PartnersMenuItem = ({ partner, onDataLayerHandler }: IProps): JSX.Element => {\n const isSvgIcon = useMemo(() => partner.image_icon?.indexOf('.svg') !== -1, [partner.image_icon]);\n\n return (\n <ST.MenuItemWrapper>\n {partner.image_icon && (\n isSvgIcon\n ? <ST.PartnerSvgIcon\n iconPath={partner.image_icon}\n data-test='partner-svg'\n />\n : <ST.PartnerIcon>\n <img\n src={partner.image_icon}\n alt='логотип партнёрского сервиса'\n data-test='partner-img'\n />\n </ST.PartnerIcon>\n )}\n <ST.PartnerLink\n href={partner.link}\n onClick={() => onDataLayerHandler('Main', partner.title)}\n data-test='partner-link'\n >\n {partner.title}\n </ST.PartnerLink>\n </ST.MenuItemWrapper>\n );\n};\n\nexport default memo(PartnersMenuItem);\n","import styled, { css } from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\ninterface IMenuItemProps {\n withDropDown: boolean,\n isCollapsed: boolean,\n}\n\nexport const MenuItemWrapper = styled.li<IMenuItemProps>`\n position: relative;\n display: flex;\n margin-right: 24px;\n z-index: 1;\n\n &:hover {\n & > a,\n & > div {\n color: ${COLORS.TextPrimary};\n }\n\n &:after {\n background-color: ${COLORS.Control};\n }\n }\n\n ${({ withDropDown, isCollapsed }) => withDropDown && css`\n padding-right: 16px;\n z-index: ${isCollapsed ? 5 : 1};\n\n & > a,\n & > div {\n color: ${isCollapsed ? COLORS.TextPrimary : COLORS.TextHint};\n }\n\n &:after {\n content: '';\n position: absolute;\n top: 50%;\n right: 0;\n width: 8px;\n height: 5px;\n background-color: ${isCollapsed ? COLORS.Control : COLORS.GRAY_DARK};\n mask-image: url('/static/images/icons/arrow_down_fill_2.svg');\n mask-size: contain;\n mask-position: center;\n mask-repeat: no-repeat;\n transform-origin: center;\n transform: ${isCollapsed ? 'translateY(-50%) rotate(-180deg)' : 'translateY(-50%)'};\n transition: all .25s;\n cursor: pointer;\n }\n `}\n`;\n\nexport const ItemText = styled.div`\n position: relative;\n ${FONTS.MediumXXS};\n text-decoration: none;\n transition: color .25s;\n cursor: pointer;\n z-index: 0;\n`;\n\nexport const ItemLink = styled.a`\n ${FONTS.MediumXXS};\n text-decoration: none;\n transition: color .25s;\n`;\n\nexport const Ul = styled.ul`\n display: flex;\n gap: 8px;\n flex-direction: column;\n align-items: flex-start;\n`;\n\nexport const DropDownLink = styled.a`\n ${FONTS.MediumXS};\n color: ${COLORS.TextPrimary};\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n\n &:hover {\n color: ${COLORS.TextHint};\n }\n`;\n","import { memo, useMemo, useRef, useState } from 'react';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport { Overlay } from '@r1-frontend/ui-react/components/overlay/';\nimport ToolTip from '@r1-frontend/ui-react/components/tooltip/index';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { BoxShadow } from '@r1-frontend/ui-react/tokens/boxShadow';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as ST from './styled';\n\ninterface IProps {\n service: IMenuByTypesItem,\n onDataLayerHandler: (menuType: 'Main' | 'Right', title: string) => void,\n}\n\nconst ServiceMenuItem = ({ service, onDataLayerHandler }: IProps): JSX.Element => {\n const [currentChild] = service.children || [];\n const router = useRouter();\n\n const substrateRef = useRef<HTMLDivElement>(null);\n\n const [isCollapsed, setIsCollapsed] = useState(false);\n const withDropDown = useMemo(() => !!currentChild?.children?.length, [currentChild]);\n\n return (\n <ST.MenuItemWrapper\n withDropDown={withDropDown}\n isCollapsed={isCollapsed}\n onClick={() => setIsCollapsed(!isCollapsed)}\n >\n {withDropDown\n ? <ST.ItemText ref={substrateRef}>{service.title}</ST.ItemText>\n : <Link\n href={service.link}\n prefetch={false}\n passHref\n >\n <ST.ItemLink>{service.title}</ST.ItemLink>\n </Link>\n }\n {withDropDown && (\n <Overlay isOpen={isCollapsed} onClose={() => setIsCollapsed(false)}>\n <ToolTip\n active={isCollapsed}\n parent={substrateRef.current}\n position='bottom'\n arrow='right'\n align='right'\n customStyles={{\n style: {\n padding: '16px',\n borderRadius: BorderRadius.componentRadius,\n backgroundColor: COLORS.BgMain,\n boxShadow: BoxShadow.M,\n zIndex: 1000,\n },\n }}\n >\n <ST.Ul data-test='service-dropdown'>\n {currentChild.children?.map(child => (\n <li\n key={child.id}\n onClick={() => {\n router.push(child.link);\n onDataLayerHandler('Right', child.title);\n }}\n data-test='dropdown-item'\n >\n <ST.DropDownLink>{child.title}</ST.DropDownLink>\n </li>\n ))}\n </ST.Ul>\n </ToolTip>\n </Overlay>\n )}\n </ST.MenuItemWrapper>\n );\n};\n\nexport default memo(ServiceMenuItem);\n","import React, { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport Link from 'next/link';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { useAppContext } from '~/src/features/_layout/App/AppContext';\nimport PhoneInfo from '~/src/features/_layout/Header/commonComponents/PhoneInfo';\nimport { ICommonHeaderBaseProps } from '~/src/features/_layout/Header/types';\nimport { getCurrentCity } from '~/src/store/selectors/city';\n\nimport MainMenuItem from '../MainMenuItem';\nimport PartnersMenuItem from '../PartnersMenuItem';\nimport ServiceMenuItem from '../ServiceMenuItem';\n\nimport * as ST from './styled';\n\nexport interface IProps extends ICommonHeaderBaseProps {\n ClientActions?: JSX.Element,\n children?: JSX.Element,\n}\n\nconst CommonDesktopHeader = ({\n items,\n\n hasPhoneInfo = true,\n ClientActions,\n children,\n}: IProps): JSX.Element => {\n const city = useSelector(getCurrentCity);\n const { isScrollingUp } = useAppContext();\n // атрибут data-visible для автотестирования\n const isDesktop = useMatchMediaByWidth(wideBreakpoints.laptop, true);\n\n const { partners, service, main } = items;\n\n const onDataLayerSendEventHandler = useCallback((menuType: 'Main' | 'Right', title: string) => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: `${menuType} menu click`,\n action: title,\n });\n }, []);\n\n return (\n <ST.Wrapper data-test='main-menu-desktop' data-visible={isDesktop ? 'displayed' : 'none'}>\n <ST.TopWrapperOffset isScrollingUp={!!isScrollingUp}>\n <ST.TopWrapper>\n <WideContainer>\n <ST.CitySelectionBlock/>\n\n {partners.length\n ? <ST.PartnersBlock>\n {partners.map(partner => (\n <PartnersMenuItem\n key={partner.id}\n partner={partner}\n onDataLayerHandler={onDataLayerSendEventHandler}\n data-test='partner-item'\n />\n ))}\n </ST.PartnersBlock>\n : null\n }\n\n {service.length\n ? <ST.ServiceBlock>\n {service.map(serviceItem => (\n <ServiceMenuItem\n key={serviceItem.id}\n service={serviceItem}\n onDataLayerHandler={onDataLayerSendEventHandler}\n data-test='service-item'\n />\n ))}\n </ST.ServiceBlock>\n : null\n }\n\n {hasPhoneInfo ? <PhoneInfo/> : null}\n </WideContainer>\n </ST.TopWrapper>\n </ST.TopWrapperOffset>\n <ST.MainWrapperOffset>\n <ST.MainWrapper>\n <ST.Container>\n\n <ST.LogoBlock>\n <Link href='/' passHref>\n <ST.SMenuLogo href='/' cityData={city}/>\n </Link>\n </ST.LogoBlock>\n\n {main.length\n ? <ST.MainBlockInnerContainer>\n {main.map(mainItem => (\n <MainMenuItem\n key={mainItem.id}\n mainMenuItem={mainItem}\n onDataLayerHandler={onDataLayerSendEventHandler}\n data-test='main-item'\n />\n ))}\n </ST.MainBlockInnerContainer>\n : null\n }\n\n {ClientActions}\n\n {children}\n </ST.Container>\n </ST.MainWrapper>\n\n </ST.MainWrapperOffset>\n\n </ST.Wrapper>);\n};\n\nexport default CommonDesktopHeader;\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst Menu = (\n {\n strokeWidth = 1.5,\n\n },\n): JSX.Element => {\n return (\n <g id={'guts'} >\n <path d='M3 7H21' strokeWidth={strokeWidth} strokeLinecap='round'/>\n <path d='M3 12H21' strokeWidth={strokeWidth} strokeLinecap='round'/>\n <path d='M3 17H21' strokeWidth={strokeWidth} strokeLinecap='round'/>\n </g>\n );\n};\n\nexport default createSvg(\n Menu,\n 'close',\n);\n","import styled from 'styled-components';\n\nimport { FONTS } from '../../tokens/fonts';\n\nexport const Plank = styled.div`\n background: linear-gradient(299.06deg, #EDEDED 2.91%, #FAFAFA 86.78%);;\n width: 100%;\n height: 72px;\n min-width: 320px;\n max-width: 860px;\n position: fixed;\n display: ${props => props.isOpen ? 'flex' : 'none'};\n justify-content: flex-end;\n flex-direction: row;\n opacity: 1;\n transition: opacity 0 ease;\n flex: 1;\n z-index: 12;\n`;\n\nexport const Wrapper = styled.div`\n flex-wrap: nowrap;\n display: flex;\n margin: 0 auto;\n position: fixed;\n height: inherit;\n width: 100%;\n`;\n\nexport const CloseButton = styled.div`\n position: absolute;\n left: 10px;\n top: 21px;\n height: 22px;\n width: 22px;\n z-index: 10;\n`;\n\nexport const Chest = styled.div`\n & {\n transform: rotate(45deg);\n height: 70%;\n width: 70%;\n z-index: 10;\n margin-top: 5px;\n }\n\n &:before,\n &:after {\n content: '';\n background-color: #1A1A1A;\n border-radius: 5px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: background-color 0.2s linear;\n height: 100%;\n width: 1px;\n z-index: 10;\n }\n\n &:after {\n height: 1px;\n width: 100%;\n }\n\n &:hover:after,\n &:hover:before {\n background-color: #ed1c24;\n }\n`;\n\nexport const Text = styled.div`\n display: block;\n margin-left: 10px;\n width: 170px;\n max-height: 72px;\n`;\n\nexport const Paragraph = styled.p`\n ${FONTS.XXS};\n margin: 0;\n`;\n\nexport const Pic = styled.img`\n width: 42px;\n height: 42px;\n margin-left: 36px;\n margin-top: 14px;\n`;\n\nexport const Header = styled.p`\n ${FONTS.S};\n margin-top: 9px;\n margin-bottom: 4px;\n`;\n\nexport const Link = styled.a`\n justify-content: space-between;\n ${FONTS.MediumS};\n margin-right: 16px;\n display: flex;\n text-align: right;\n text-decoration-line: underline;\n color: #007AE5;\n z-index: +1;\n`;\n\nexport const LinkContainer = styled.div`\n align-items: center;\n`;\n","import React, { Component } from 'react';\n\nimport logoPlank from '../../assets/img/logo-redesign.svg';\nimport { Chest, CloseButton, Header, Link, LinkContainer, Paragraph, Pic, Plank, Text, Wrapper } from './styled';\n\nclass PlankMobile extends Component {\n render() {\n\n const {\n headerText,\n text,\n pic,\n href,\n linkName,\n isOpen,\n onCloseLink,\n onClosePlank,\n } = this.props;\n\n return (\n <Plank isOpen={isOpen}>\n <Wrapper>\n <Pic src={pic}/>\n <Text>\n <Header>{headerText}</Header>\n <Paragraph>{text}</Paragraph>\n </Text>\n </Wrapper>\n <LinkContainer>\n <Link href={href} onClick={onCloseLink}>{linkName}</Link>\n </LinkContainer>\n <CloseButton onClick={onClosePlank} data-test='close-btn'>\n <Chest />\n </CloseButton>\n </Plank>\n );\n }\n}\n\nPlankMobile.defaultProps = {\n headerText: 'Мой Дом.ру',\n text: 'Управляйте услугами в приложении',\n href: 'https://app.dom.ru/open',\n linkName: 'Открыть',\n pic: logoPlank,\n domain: 'perm',\n onCloseLink: () => {},\n onClosePlank: () => {},\n};\n\nexport default PlankMobile;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport PlankMobile from '@r1-frontend/ui-react/components/plankMobileUp/plankMobile';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { isMobile } from '~/src/helpers/mobile';\nimport { TState } from '~/src/store';\nimport { hidePlank, initPlankStatus, setPlankCookieAndClose } from '~/src/store/actions/plank';\n\nimport * as ST from './styled';\n\nconst Plank: React.FC = () => {\n const dispatch = useDispatch();\n const router = useRouter();\n const { isShows, mobileLink, plankType } = useSelector((state: TState) => state.plank);\n const { pathname, asPath } = router;\n const [isHideByDevice, setIsHideByDevice] = useState(false);\n const isMobileWidth = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n useEffect(() => {\n dispatch(initPlankStatus({ asPath, pathname }));\n\n const res = (isClientSide() && isMobileWidth) ? !isMobile() : false;\n setIsHideByDevice(res);\n\n if (res) {\n dispatch(hidePlank());\n }\n }, [asPath, dispatch, pathname, isMobileWidth]);\n\n const handleClosePlank = useCallback((e) => {\n e.preventDefault();\n dispatch(setPlankCookieAndClose());\n }, [dispatch]);\n\n const handleCloseLink = useCallback((e) => {\n handleClosePlank(e);\n mobileLink && router.push(mobileLink);\n }, [handleClosePlank, mobileLink, router]);\n\n if (!isShows) {\n return null;\n }\n\n return <ST.PlankWrap id={'plankMobile'} isHide={isHideByDevice} isShows={isShows}>\n <PlankMobile\n {...plankType}\n isOpen={isShows}\n onCloseLink={handleCloseLink}\n onClosePlank={handleClosePlank}\n />\n </ST.PlankWrap>;\n};\n\nexport default Plank;\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InputSimple, {\n nameDecorator,\n phoneDecorator,\n} from '@r1-frontend/ui-react/components/inputSimple';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n// @ts-ignore\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Button = styled(BaseButton)`\n max-width: 200px;\n @media (max-width: 400px){\n max-width: unset;\n }\n`;\n\nexport const NameInput = nameDecorator(InputSimple);\n\nexport const PhoneInput = styled(phoneDecorator(InputSimple))`\n width: 87%;\n @media (max-width: 400px){\n width: 100%;\n }\n`;\n\nexport const BreakHack = styled.div`\n @media (min-width: 896px) {\n margin-left: 5px;\n }\n\n white-space: nowrap;\n display: inline;\n`;\n\nexport const ButtonLookLikeHref = styled.div`\n display: inline;\n color: ${COLORS.Link};\n ${FONTS.MediumS};\n cursor: pointer;\n margin-left: 5px;\n transition: 0.3s;\n\n &:hover {\n color: ${COLORS.Brand_Blue};\n }\n \n`;\n\nexport const Popup = styled(DefaultPopup)`\n border-radius: ${BorderRadius.OuterBlockRadius} !important;\n padding: 32px;\n display: flex;\n\n @media (max-width: 400px){\n padding: 26px;\n }\n @media (min-width: 760px){\n width: 700px !important;\n }\n @media (min-width: 900px){\n width: 800px !important;\n }\n @media (min-width: 1300px){\n width: 960px !important;\n }\n flex-direction: column;\n > * {\n margin-bottom: 20px;\n }\n > *:last-child{\n margin-bottom: unset;\n }\n`;\n\nexport const ButtonsContainer = styled.div`\n display: flex;\n flex-direction: row;\n > * {\n margin-right: 12px;\n margin-top: 16px;\n }\n`;\n\nexport const Title = styled.h1`\n ${FONTS.H3};\n margin-top: 0;\n margin-bottom: 10px;\n`;\n\nexport const BaseContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n max-width: 570px;\n @media (min-width: 400px){\n > * {\n margin-right: 12px;\n margin-bottom: unset;\n }\n > *:last-child {\n margin-right: unset;\n }\n }\n @media (max-width: 400px){\n flex-direction: column;\n align-items: center;\n > * {\n width: 100%;\n margin-bottom: 10px;\n }\n > *:last-child {\n margin-bottom: unset;\n }\n }\n`;\n\nexport const InputContainer = styled(BaseContainer)`\n min-height: 72px;\n align-items: flex-start;\n`;\n\nexport const Text = styled.div`\n align-items: baseline;\n`;\n\nexport const PersText = styled.div`\n display: block;\n width: auto;\n ${FONTS.XS};\n > a {\n ${FONTS.MediumXS};\n display: inline;\n color: ${COLORS.TextPrimary};\n text-decoration: underline;\n }\n`;\n\nexport const Message = styled.div<{ isError: boolean }>`\n color: ${props => props.isError ? COLORS.Error : COLORS.Success};\n`;\n","import { Fragment, useCallback, useEffect, useState } from 'react';\nimport { connect, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { ESendByCallPetitions, ICallback, sendByCall } from '@r1-frontend/api-domru/api-request/v1/user/by-call';\nimport { backCall } from '@r1-frontend/api-domru/core-requests/api/v1/call/back';\n\nimport { BaseButton, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { ACTIONS } from '@r1-frontend/shared/constants/analytics';\n\nimport RenderMessage from '~/src/components/Popups/CallRequestByTheme/RenderMessage';\nimport { TField } from '~/src/components/RequestForm';\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\nimport { TState } from '~/src/store';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nimport {\n BaseContainer,\n BreakHack,\n Button,\n ButtonLookLikeHref,\n ButtonsContainer,\n InputContainer,\n NameInput,\n PhoneInput,\n Popup,\n Text,\n Title,\n} from './styled';\n\nenum EThemes {\n PROBLEMS_REPORT,\n GET_CONSULTATION,\n BECOME_CLIENT,\n COMPLAIN,\n OTHER\n}\n\ninterface ITheme {\n code: EThemes,\n label: string,\n isHighlight?: boolean,\n}\n\ninterface IRenderSelect {\n themes: ITheme[],\n HighlightIndex: number,\n onSelectTheme: (theme: ITheme, index: number) => void,\n}\n\nconst INITIAL_THEME = 2;\n\nconst THEMES: ITheme[] = [\n {\n code: EThemes.PROBLEMS_REPORT,\n label: 'Сообщить о неполадках',\n },\n {\n code: EThemes.GET_CONSULTATION,\n label: 'Получить консультацию',\n },\n {\n code: EThemes.BECOME_CLIENT,\n label: 'Стать клиентом',\n },\n {\n code: EThemes.COMPLAIN,\n label: 'Пожаловаться',\n },\n {\n code: EThemes.OTHER,\n label: 'Другое',\n },\n];\n\ninterface IInputValue {\n readonly isValid: boolean,\n readonly value: string,\n readonly clearInput?: () => void,\n}\n\nfunction useIsValidForm(fio: IInputValue, phone: IInputValue): [boolean] {\n const [isValid, setIsValid] = useState<boolean>(false);\n useEffect(() => {\n setIsValid(fio.isValid && phone.isValid);\n }, [fio, phone]);\n return [isValid];\n}\n\n/**\n * @param state\n */\nfunction mapStateToProps(state: TState) {\n return {\n providerId: selectProviderId(state),\n };\n}\n\nexport default connect(mapStateToProps)(CallRequestByTheme);\n\nfunction clearFields(fields: IInputValue[]): void {\n fields.forEach(function(field) {\n if (field.clearInput) {\n field.clearInput();\n }\n });\n}\n\ninterface CallRequestByThemeProps {\n isOpen: boolean,\n onClose: () => void,\n providerId: number,\n}\n\nfunction CallRequestByTheme({ isOpen, onClose, providerId }: CallRequestByThemeProps) {\n const [theme, setTheme] = useState<ITheme>(THEMES[INITIAL_THEME]);\n const [selectBlockVisible, setVisible] = useState<boolean>(true);\n const [isHighlight, setHighlight] = useState<number>(INITIAL_THEME);\n const [fio, setFio] = useState<IInputValue>({ value: '', isValid: false });\n const [phone, setPhone] = useState<IInputValue>({ value: '', isValid: false });\n const [clearTimeoutLink, setClearTimeout] = useState<number | null>(null);\n\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [isError, setIsError] = useState<boolean>(false);\n const [message, setMessage] = useState<string | null | undefined>(null);\n\n const [isValid] = useIsValidForm(fio, phone);\n\n const isAuth = useSelector((state: TState) => state.auth.isAuth);\n const clientPersonal = useSelector((state: TState) => state.auth.clientPersonal);\n\n // @TODO заплатка - потому что clearFields не очищает phone\n const clearFieldsPatch = () => {\n setFio({ value: '', isValid: false });\n setPhone({ value: '', isValid: false });\n };\n\n const handleClose = useCallback(() => {\n setVisible(true);\n setHighlight(INITIAL_THEME);\n setIsError(false);\n setMessage(null);\n clearFields([fio, phone]);\n clearFieldsPatch();\n if (clearTimeoutLink) {\n clearTimeout(clearTimeoutLink);\n }\n onClose();\n }, [fio, phone, clearTimeoutLink]);\n\n const handleSendRequest = useCallback(async() => {\n if (theme) {\n setIsError(false);\n setMessage(null);\n if (clearTimeoutLink) {\n clearTimeout(clearTimeoutLink);\n }\n setIsLoading(true);\n setMessage(null);\n\n let resp;\n if (theme.code === EThemes.BECOME_CLIENT) {\n resp = await doRequest.apiRequest<ICallback>(\n sendByCall(providerId, {\n fio: fio.value,\n phone: phone.value,\n petition: ESendByCallPetitions.RequestNew,\n }),\n );\n\n dataLayerForCBPhonePush({\n action: resp.isSuccess ? ACTIONS.finished : ACTIONS.error,\n requestId: null,\n option: resp.isSuccess ? `${theme.label}` : `${theme.label} | ${resp.error.message}`,\n isPopup: true,\n uid: isAuth ? clientPersonal?.agreement : null,\n });\n } else {\n resp = await doRequest.coreRequests<unknown>(\n backCall({\n phoneNumber: phone.value,\n }),\n );\n dataLayerForCBPhonePush({\n action: resp.isSuccess ? ACTIONS.orderService : ACTIONS.errorService,\n requestId: null,\n option: resp.isSuccess ? `${theme.label}` : `${theme.label} | ${resp.error.message}`,\n isPopup: true,\n uid: isAuth ? clientPersonal?.agreement : null,\n });\n }\n\n clearFields([fio, phone]);\n clearFieldsPatch();\n\n setIsLoading(false);\n if (resp.isSuccess) {\n setIsError(false);\n setMessage('Заявка успешно создана');\n } else {\n setIsError(true);\n setMessage(resp.error.message ?? undefined);\n }\n setClearTimeout(setTimeout(() => {\n setIsError(false);\n setMessage(null);\n }, 30000) as unknown as number);\n }\n }, [fio, phone, theme, clearTimeoutLink, providerId]);\n\n const onSelectHandler = (theme: ITheme, index: number) => {\n setVisible(false);\n setTheme(theme);\n setHighlight(index);\n };\n\n const onChangeHandler = () => {\n setVisible(true);\n clearFieldsPatch();\n };\n\n return <Popup isOpen={isOpen} onClose={handleClose}>\n {\n selectBlockVisible\n ? <RenderSelectTheme\n themes={THEMES}\n HighlightIndex={isHighlight}\n onSelectTheme={onSelectHandler}/>\n : <RenderForm\n fio={fio}\n onChangeTheme={onChangeHandler}\n onEditFio={setFio}\n onEditPhone={setPhone}\n message={message}\n onSendRequest={handleSendRequest}\n phone={phone}\n theme={theme}\n isValid={isValid}\n isLoading={isLoading}\n isError={isError}/>\n }\n </Popup>;\n}\n\nfunction RenderSelectTheme({ themes, onSelectTheme, HighlightIndex }: IRenderSelect) {\n return <Fragment>\n <Title>Выберите тему обращения\n \n {\n themes.map(function(theme, index) {\n return ( {\n onSelectTheme(theme, index);\n }}\n type={HighlightIndex === index ? btnTypes.PRIMARY : btnTypes.SECONDARY}\n data-test='popup-theme-choose'\n />);\n })\n }\n \n ;\n}\n\ninterface IRenderFormProps {\n readonly theme: ITheme,\n readonly fio: IInputValue,\n readonly phone: IInputValue,\n readonly onEditFio: (fio: IInputValue) => void,\n readonly onEditPhone: (phone: IInputValue) => void,\n readonly onChangeTheme: () => void,\n readonly onSendRequest: () => void,\n readonly isValid: boolean,\n readonly isLoading: boolean,\n readonly isError: boolean,\n readonly message: string | null | undefined,\n}\n\nfunction RenderForm({\n theme,\n fio,\n phone,\n onEditFio,\n onEditPhone,\n onChangeTheme,\n onSendRequest,\n isValid,\n isLoading,\n isError,\n message,\n}: IRenderFormProps) {\n const [beenStarted, setDataLayer] = useState(false);\n\n const isAuth = useSelector((state: TState) => state.auth.isAuth);\n const clientPersonal = useSelector((state: TState) => state.auth.clientPersonal);\n\n const onChangeHandler = useCallback((stateInput: IInputValue, _setState: (value: IInputValue) => void) => {\n const stateResult = typeof stateInput === 'object' ? stateInput.value : stateInput;\n // @TODO stateInput.value убрать из условия после фикса nameDecorator (useEffect onchange) UI react\n if (!beenStarted && stateResult) {\n dataLayerForCBPhonePush({\n action: theme.code === EThemes.BECOME_CLIENT ? ACTIONS.started : ACTIONS.startedService,\n requestId: null,\n option: `${theme.label}`,\n isPopup: true,\n uid: isAuth ? clientPersonal?.agreement : null,\n });\n setDataLayer(true);\n }\n _setState(stateInput);\n }, [beenStarted, theme.label]);\n\n const buttonText = 'Отправить заявку';\n\n return \n Тема обращения: {theme.label}\n \n Оставьте номер телефона, и менеджер вам перезвонит. \n Илиизмените тему\n обращения.\n \n \n onChangeHandler(stateInput, onEditFio)}\n placeholder={'Ваше имя'}\n errorMessage={'Ожидаются только буквы и дефисы'}\n name='request-input-name'\n className={'ym-disable-keys'}\n />\n onChangeHandler(stateInput, onEditPhone)}\n placeholder={'Номер телефона'}\n errorMessage={'Введите телефон в формате +7 (999) 999-99-99'}\n name='request-input-phone'\n className={'ym-disable-keys'}\n />\n \n\n \n\n \n \n \n {buttonText}\n \n \n ;\n}\n","import React, { FC } from 'react';\n\nimport OpenChat from '~/src/components/OpenChatLink';\n\nimport { Message } from '~/src/components/Popups/CallRequestByTheme/styled';\n\ninterface IRenderMessageProps {\n isError: boolean,\n message: string | null | undefined,\n}\n\nconst RenderMessage: FC = (\n {\n isError,\n message,\n },\n) => {\n if (isError && message === undefined) {\n return \n Неизвестная ошибка, попробуйте оставить заявку позднее\n или напишите нам в .\n ;\n }\n\n if (message == null) {\n return null;\n }\n\n return \n {message}\n ;\n};\n\nexport default RenderMessage;\n","import styled from 'styled-components';\n\nimport { FONTS } from '../../../tokens/fonts';\nimport { BaseButton } from '../../buttons/baseButton';\n\nexport const TooltipWrapper = styled.div`\n display: ${props => props.show ? 'flex' : 'none'};\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background: rgba(255,255,255,1);\n border: 1px solid #ebebeb;\n box-shadow: 0 5px 10px rgba(0, 0, 0, .21);\n box-sizing: border-box;\n border-radius: 4px;\n padding: 25px 40px;\n position: absolute;\n top: 56px;\n left: 0;\n z-index: 5;\n width: 658px;\n @media (max-width: 690px) {\n flex-direction: column;\n align-items: flex-start;\n width: auto;\n }\n`;\n\nexport const Content = styled.div`\n display: block;\n`;\n\nexport const TooltipTitle = styled.div`\n ${FONTS.S};\n color: #979797;\n margin-bottom: 5px;\n`;\n\nexport const TooltipCity = styled.div`\n ${FONTS.L};\n color: #000;\n @media (max-width: 690px) {\n margin-bottom: 20px;\n }\n`;\n\nexport const TooltipFooter = styled.div`\n display: flex;\n flex-wrap: nowrap;\n @media (max-width: 690px) {\n justify-content: flex-start;\n }\n @media (max-width: 500px) {\n flex-direction: column;\n width: 100%;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n &:first-child {\n margin-right: 15px;\n }\n\n @media (max-width: 500px) {\n width: 100%;\n\n &:first-child {\n margin-right: 0;\n margin-bottom: 15px;\n }\n }\n`;\n","import React, { Component } from 'react';\nimport cookie from 'react-cookies';\n\nimport { btnTypes } from '../../buttons/baseButton';\nimport { dataLayerPush } from '../../helpers';\nimport { Button, Content, TooltipCity, TooltipFooter, TooltipTitle, TooltipWrapper } from './styled';\n\n// Для использования требуется наличие NEXT_PUBLIC_COOKIE_DOMAIN в env\nexport const COOKIE_DOMAIN = process.env.NEXT_PUBLIC_COOKIE_DOMAIN;\n\nclass CitySelection extends Component {\n state = {\n show: false,\n }\n\n gaCityShow() {\n if (window && window.sessionStorage.getItem('GA') !== '1') {\n window.sessionStorage.setItem('GA', '1');\n\n dataLayerPush({\n event: 'UAevent',\n category: 'City Choice',\n action: 'Show',\n });\n }\n }\n\n componentDidMount() {\n if (this.props.isAuth || !!cookie.load('cityconfirm')) {\n this.setState({ show: false });\n } else {\n this.setState({ show: true });\n this.gaCityShow();\n }\n }\n\n componentDidUpdate({ isAuth }) {\n if (isAuth !== this.props.isAuth && this.props.isAuth) {\n this.setState({ show: false });\n }\n }\n\n handleClick = () => {\n const expires = new Date();\n expires.setDate(expires.getDate() + 41);\n\n cookie.save('cityconfirm', 1, {\n expires,\n domain: COOKIE_DOMAIN,\n path: '/',\n });\n\n this.setState({ show: false }, () => {\n typeof this.props.onClose === 'function' && this.props.onClose();\n });\n }\n\n noBtnClick = () => {\n this.setState({ show: false }, () => this.props.onBackClick());\n }\n\n render() {\n const { isOpen = this.state.show, city, className } = this.props;\n\n return (\n \n \n Ваш город\n {city.name}\n \n \n \n \n \n \n );\n }\n}\n\nexport default CitySelection;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport CitySelection from '@r1-frontend/ui-react/components/popups/citySelection';\n\nexport const StyledCitySelection = styled(CitySelection)`\n position: relative;\n pointer-events: auto;\n z-index: 100;\n top: 0;\n`;\n\nexport const CityConfirmationBlock = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n top: 62px;\n }\n @media (max-width: ${wideBreakpoints.laptop}) {\n top: 10px;\n }\n`;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { openCitySelect } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport NoSSR from '~/src/helpers/noSSR';\nimport { getCurrentCity } from '~/src/store/selectors/city';\n\nimport * as ST from './styled';\n\nexport const ConfirmCitySelection = () => {\n const dispatch = useDispatch();\n const city = useSelector(getCurrentCity);\n const openCitySelectHandler = () => dispatch(openCitySelect());\n\n return \n \n \n \n ;\n};\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nconst ACCORDION_ARROW = '/static/images/menu/header-abn/accordion-arrow.svg';\n\nexport const Wrapper = styled.div<{ isAvailable: boolean, open: boolean }>`\n background-color: ${COLORS.BgMain};\n border-radius: unset;\n border: none;\n justify-content: space-between;\n width: 100%;\n flex-direction: column;\n display: ${props => props.isAvailable ? 'flex' : 'none'};\n max-height: ${props => props.open ? '100%' : '56px'};\n`;\n\nexport const LinkItemDrop = styled.a<{ open: boolean, isPromoted: boolean }>`\n ${FONTS.MediumS};\n color: ${COLORS.TextPrimary};\n color: ${props => props.open\n ? props.isPromoted\n ? COLORS.Logo\n : COLORS.TextHint\n : props.isPromoted\n ? COLORS.Logo\n : COLORS.TextPrimary\n };\n flex-grow: 1;\n width: calc(100% - 53px);\n`;\n\nexport const AccordionTitle = styled.div<{ open: boolean }>`\n width: 100%;\n justify-content: space-between;\n align-items: center;\n flex-wrap: nowrap;\n margin-bottom: ${props => props.open ? '8px' : '0'};\n cursor: pointer;\n color: ${COLORS.TextPrimary};\n ${FONTS.MediumS}; \n border-bottom: 2px solid ${COLORS.BgSecondary};\n padding: 12px 0;\n`;\n\nexport const Title = styled.div``;\n\nexport const Icon = styled.span<{ open: boolean, isVisible: boolean }>`\n margin-left: 20px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: ${props => props.isVisible ? 'block' : 'none'};\n position: relative;\n background-color: ${props => props.open ? COLORS.ButtonSecondary : '#F4F8FB'};\n transform-origin: center;\n\n &::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n background-image: url(${ACCORDION_ARROW});\n background-repeat: no-repeat;\n background-position: center;\n transform: ${props => props.open ? 'scaleY(-1)' : 'none'};\n transition: transform 0.5s;\n }\n`;\n\nexport const AccordionBody = styled.div<{ open: boolean }>`\n width: 100%;\n max-height: ${props => props.open ? '100%' : '0'};\n ${FONTS.S};\n overflow: hidden;\n opacity: ${props => props.open ? 1 : 0};\n transition: opacity 0.2s ease-in-out;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport Link from 'next/link';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport * as ST from './styled';\n\ninterface IProps {\n children: IMenuByTypesItem[] | JSX.Element,\n title: string,\n link: string,\n isVisible: boolean,\n isAvailable: boolean,\n isPromoted: boolean,\n firstItem?: IMenuByTypesItem,\n onClick?: (item: string, menuType?: string) => void,\n}\n\nconst Accordion = ({\n children,\n title,\n link,\n isVisible,\n isAvailable,\n firstItem,\n isPromoted,\n}: IProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n setIsOpen(firstItem?.title === title);\n }, []);\n\n const toggle = useCallback(() => {\n setIsOpen(!isOpen);\n }, [isOpen]);\n\n const onClickHandler = useCallback((item, menuType = 'Main menu') => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: `${menuType} click`,\n action: item,\n label: 'menu_new',\n });\n }, []);\n\n return (\n \n \n {isVisible\n ? \n {title}\n \n : \n onClickHandler(title)}\n open={isOpen}\n isPromoted={isPromoted}\n >\n {title}\n \n }\n \n \n \n {children}\n \n \n );\n};\n\nexport default Accordion;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const CardWrapper = styled.div`\n width: inherit;\n flex-direction: column;\n position: relative;\n background: ${COLORS.BgMain};\n border-radius: 16px;\n ${FONTS.XXS};\n\n p:only-child{\n display: none;\n }\n`;\n\nexport const CardChildItem = styled.div<{text: string, isAvailable: boolean}>`\n width: 100%;\n display: ${p => p.isAvailable ? 'flex' : 'none'};\n`;\n\nexport const CardChildLink = styled.a<{isPromoted: boolean}>`\n width: auto;\n color: ${p => p.isPromoted ? COLORS.Logo : COLORS.TextPrimary};\n ${FONTS.MediumS};\n line-height: 1.9;\n transition: color 0.3s ease;\n white-space: pre-wrap;\n border-radius: 12px;\n padding: 6px 8px;\n`;\n\nexport const CategoryLink = styled.p`\n width: auto;\n color: ${COLORS.TextDisabled};\n ${FONTS.MediumXS};\n padding-bottom: 8px !important;\n padding-top: 8px !important;\n`;\n","import React from 'react';\nimport Link from 'next/link';\n\nimport { IMenuItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport * as ST from '~/src/features/_layout/Header/mobile/components/Card/styled';\n\ninterface IProps {\n clickHandler?: () => void,\n itemMenuType?: string,\n onClickHandlerGA: (item: string, menuType?: string) => void,\n children?: JSX.Element | JSX.Element[],\n childItem: IMenuItem,\n isAvailable: boolean,\n isPromoted?: boolean,\n}\n\nexport const CardChildItemHoc: React.FC = ({\n childItem,\n clickHandler,\n onClickHandlerGA,\n itemMenuType,\n isAvailable,\n}) => {\n\n const clickHandlerWrapper = () => {\n if (typeof clickHandler === 'function') {\n clickHandler();\n }\n onClickHandlerGA(childItem.title, itemMenuType);\n };\n\n return (\n \n \n \n {childItem?.title}\n \n \n \n );\n};\n","import { Context, createContext, useContext } from 'react';\n\nexport interface IMobileHeaderContext {\n isMenuScrolling?: boolean,\n}\n\nexport const MobileHeaderContext: Context =\n createContext({});\n\nexport const useMobileHeaderContext = () => {\n return useContext(MobileHeaderContext);\n};\n","import styled from 'styled-components';\n\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\nexport const PromoWrapper = styled.div<{ isAvailable?: boolean }>`\n width: inherit;\n flex-direction: row;\n flex-wrap: nowrap;\n background-color: ${COLORS.BgSurface};\n border-radius: 12px;\n padding: 8px;\n margin-bottom: 8px;\n display: ${p => p.isAvailable ? 'flex' : 'none'};\n ${FONTS.XS};\n\n a {\n color: ${COLORS.TextPrimary};\n ${FONTS.MediumXS};\n position: relative;\n }\n`;\n\nexport const PromoTextBlock = styled.div<{ isImg?: string }>`\n flex-wrap: wrap;\n flex-direction: column;\n margin-left: ${p => p.isImg ? '8px' : '0'};\n margin-top: ${p => p.isImg ? '8px' : '0'};\n`;\n\nexport const TextLabelBlock = styled.div`\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: baseline;\n`;\n\nexport const PromoTitle = styled.div<{ isPromoted?: boolean }>`\n transition: color 0.3s ease;\n display: inline-block;\n ${FONTS.MediumS};\n color: ${p => p.isPromoted ? COLORS.Logo : COLORS.TextPrimary};\n\n span {\n vertical-align: middle;\n }\n\n &:hover {\n color: ${COLORS.Logo};\n }\n`;\n\nexport const PromoDesc = styled.p<{ isImg?: string }>`\n ${p => p.isImg ? FONTS.XXS : FONTS.XS};\n color: ${COLORS.TextInfo};\n white-space: pre-wrap;\n margin-top: 4px;\n padding: 0 !important;\n`;\n\nexport const PromoMore = styled.p`\n ${FONTS.XS};\n white-space: pre-wrap;\n align-items: center;\n display: flex;\n margin-top: 8px;\n padding: 0 !important;\n justify-content: flex-start !important;\n\n span {\n ${FONTS.MediumXS};\n color: ${COLORS.Logo};\n }\n\n img{\n margin-left: 4px; \n color: ${COLORS.Logo};\n }\n`;\n\nexport const PromoImg = styled.div`\n border-radius: ${BorderRadius.labelRadius};\n width: 100%;\n height: 100%;\n\n img{\n width: 136px;\n height: 134px;\n border-radius: ${BorderRadius.labelRadius};\n object-fit: cover;\n image-rendering: -webkit-optimize-contrast;\n }\n`;\n\nexport const Label = styled.span<{ bgColor?: string, colorText?: string }>`\n background-color: ${p => p.bgColor};\n width: auto;\n padding: 2px 8px;\n margin-right: 8px;\n height: 20px;\n border-radius: ${BorderRadius.labelRadius};\n vertical-align: baseline;\n margin-left: 6px;\n color: ${p => p.colorText};\n ${FONTS.MediumXXS};\n`;\n","import { useEffect, useState } from 'react';\nimport Link from 'next/link';\n\nimport { IMenuItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport { useMobileHeaderContext } from '~/src/features/_layout/Header/mobile/context';\n\nimport * as ST from './styled';\n\ninterface IProps {\n item: IMenuItem,\n typeMenu?: string,\n clickHandler?: () => void,\n itemMenuType?: string,\n onClickHandlerGA: (item: string, menuType?: string) => void,\n isAvailable: boolean,\n isPromoted: boolean,\n}\n\nconst Promo = ({ item, isAvailable, isPromoted, clickHandler, onClickHandlerGA, itemMenuType }: IProps): JSX.Element => {\n const { image, image_webp, title, link, add_desc, button_text, button_link, labels = [], advertising } = item;\n\n const [isTooltipShown, setIsTooltipShown] = useState(false);\n\n const clickHandlerWrapper = () => {\n if (typeof clickHandler === 'function') {\n clickHandler();\n }\n onClickHandlerGA(title || button_text || '', itemMenuType);\n };\n\n const src = useWebp() ? image_webp : image;\n\n const { isMenuScrolling } = useMobileHeaderContext();\n\n useEffect(() => {\n isMenuScrolling && setIsTooltipShown(false);\n }, [isMenuScrolling]);\n\n return (\n \n \n \n {advertising && (\n \n {\n e.preventDefault();\n setIsTooltipShown(true);\n }}\n companyName={advertising.companyName}\n erid={advertising.erid}\n tooltip={{\n zIndex: 999,\n isShown: isTooltipShown,\n onClose: () => setIsTooltipShown(false),\n }}\n />\n \n )}\n {src &&\n \n \n \n }\n \n \n \n \n \n {title &&\n \n {title}\n {labels?.map(label =>\n \n {label.title}\n )}\n \n }\n\n {add_desc &&\n \n {add_desc}\n \n }\n \n \n {button_text && \n \n {button_text}\n \n \n }\n \n \n\n );\n};\n\nexport default Promo;\n","import React from 'react';\n\nimport { IMenuByTypesChild } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport { CardChildItemHoc } from '~/src/features/_layout/Header/mobile/components/CardChildItemHoc';\nimport Promo from '~/src/features/_layout/Header/mobile/components/Promo';\n\nimport * as ST from './styled';\n\ninterface IProps {\n item: IMenuByTypesChild,\n onClick: (item: string, menuType?: string) => void,\n clickHandler?: () => void,\n isPromoted: boolean,\n}\n\nconst Card = ({ item, onClick, clickHandler }: IProps): JSX.Element => {\n return (\n \n {item?.title &&\n \n {item.title}\n \n }\n {item?.children?.map((child, index) => (\n child.type\n ? \n : \n\n ))}\n \n );\n};\n\nexport default Card;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const CardWrapper = styled.div`\n width: 100%;\n flex-direction: column;\n position: relative;\n background: ${COLORS.BgMain};\n ${FONTS.XXS};\n`;\n","import React from 'react';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport Card from '~/src/features/_layout/Header/mobile/components/Card';\n\nimport * as ST from './styled';\n\ninterface IProps {\n item: IMenuByTypesItem,\n onClick: (item: string, menuType?: string) => void,\n clickHandler?: () => void,\n isPromoted: boolean,\n}\n\nconst Category = ({ item, onClick, clickHandler, isPromoted }: IProps): JSX.Element => {\n return (\n \n {item?.children?.map((child, index) => (\n \n ))}\n \n );\n};\n\nexport default Category;\n","import styled from 'styled-components';\n\nexport const MainMenuWrapper = styled.div`\n flex-wrap: nowrap;\n padding-left: 24px;\n padding-right: 24px;\n padding-bottom: 256px;\n flex-direction: column;\n width: inherit;\n`;\n","import { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport Accordion from '~/src/features/_layout/Header/mobile/components/Accordion';\nimport Category from '~/src/features/_layout/Header/mobile/components/Category';\n\nimport * as ST from './styled';\n\ninterface IProps {\n menuItems: IMenuByTypesItem[],\n onClick: (item: string, menuType?: string) => void,\n clickHandler?: () => void,\n}\n\nconst CardMenu = ({\n menuItems,\n onClick,\n clickHandler,\n}: IProps): JSX.Element => {\n return (\n \n {menuItems.map(item => (\n 1 || item?.children?.length > 1 || false}\n isPromoted={!!item.promoted}\n onClick={onClick}\n firstItem={menuItems[0]}\n >\n \n \n ))}\n \n );\n};\n\nexport default CardMenu;\n","import styled from 'styled-components';\n\nimport { breakpoints } from '~/src/features/_layout/Header/types';\n\nexport const Logo = styled.div`\n display: block;\n margin: auto 17px auto 0;\n\n @media (max-width: ${breakpoints.sMobile}) {\n margin-right: 14px;\n }\n`;\n","import { useSelector } from 'react-redux';\nimport Link from 'next/link';\n\nimport MenuLogo from '~/src/components/MenuLogo';\nimport { getCurrentCity } from '~/src/store/selectors/city';\n\nimport * as ST from './styled';\n\n\nexport const Logo = () => {\n const city = useSelector(getCurrentCity);\n\n return \n \n \n \n ;\n};\n","import React from 'react';\nimport Link from 'next/link';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport Accordion from '~/src/features/_layout/Header/mobile/components/Accordion';\n\nimport * as ST from '~/src/features/_layout/Header/mobile/styled';\n\ninterface IProps {\n menuItems: IMenuByTypesItem[],\n analytics: string,\n onClick: (item?: string, menuType?: string) => void,\n clickHandler?: () => void,\n}\n\nconst TopMenu = ({\n menuItems,\n onClick,\n analytics,\n}: IProps): JSX.Element => {\n return (\n <>\n {menuItems?.map(item => (\n 1 || item?.children?.length > 1}\n isAvailable={!!item.available}\n isPromoted={!!item.promoted}\n >\n \n {item?.children?.map((itemChild) => (\n itemChild?.children?.map((child) =>\n \n \n onClick(child.title, analytics)}\n >\n {child.title}\n \n \n )\n ))\n }\n \n \n ))}\n \n );\n};\n\nexport default TopMenu;\n","import React from 'react';\nimport Link from 'next/link';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types/dto/IMenuByTypesItem';\n\nimport * as ST from '~/src/features/_layout/Header/mobile/styled';\n\ninterface IProps {\n menuItems: IMenuByTypesItem[],\n isDrop: boolean,\n colorText?: string,\n analytics: string,\n isBottom?: boolean,\n onClick: (item?: string, menuType?: string) => void,\n clickHandler?: () => void,\n}\n\nconst TopMenu = ({\n menuItems,\n onClick,\n colorText,\n clickHandler,\n analytics,\n}: IProps): JSX.Element => {\n\n return (\n <>\n {menuItems?.map(item => (\n \n \n onClick(item.title, analytics)}\n color={colorText}\n >\n \n {item.title}\n \n {item.title}\n \n \n \n ))}\n \n );\n};\n\nexport default TopMenu;\n","import React, { useCallback, useState } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Close, Menu } from '@r1-frontend/ui-react/components/svg/main';\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport Plank from '~/src/components/PlankMobile';\nimport CallRequestByTheme from '~/src/components/Popups/CallRequestByTheme';\nimport { useAppContext } from '~/src/features/_layout/App/AppContext';\nimport { CitySelect } from '~/src/features/_layout/Header/commonComponents/CitySelect';\nimport { ConfirmCitySelection } from '~/src/features/_layout/Header/commonComponents/ConfirmCitySelection';\nimport PhoneInfo from '~/src/features/_layout/Header/commonComponents/PhoneInfo';\nimport CardMenu from '~/src/features/_layout/Header/mobile/components/CardMenu';\nimport { Logo } from '~/src/features/_layout/Header/mobile/components/Logo';\nimport TopMenu from '~/src/features/_layout/Header/mobile/components/TopMenu';\nimport TopMenuWithIcons from '~/src/features/_layout/Header/mobile/components/TopMenuWithIcons';\nimport { MobileHeaderContext } from '~/src/features/_layout/Header/mobile/context';\nimport { ICommonHeaderBaseProps } from '~/src/features/_layout/Header/types';\n\nimport * as ST from '~/src/features/_layout/Header/mobile/styled';\n\nexport interface ICommonActions {\n Actions: JSX.Element,\n ActionsInBurger?: (props: { closeHandler: () => void }) => JSX.Element,\n}\n\nexport interface ICommonMobileHeaderProps extends ICommonHeaderBaseProps {\n isAuth: boolean,\n CommonActions: ICommonActions,\n}\n\nconst CommonMobileHeader = ({\n items,\n isAuth,\n CommonActions: {\n Actions,\n ActionsInBurger,\n },\n hasPhoneInfo = true,\n}: ICommonMobileHeaderProps): JSX.Element => {\n const { partners, service, main } = items;\n\n const { withShadowInMobileHeader, isScrollingUp } = useAppContext();\n\n // атрибут data-visible для автотестирования\n const isMobile = useMatchMediaByWidth(wideBreakpoints.laptop, false);\n\n const [isBurgerOpen, setIsBurgerOpen] = useState(false);\n const [isCallbackOpen, setIsCallbackOpen] = useState(false);\n const [isMenuScrolling, setIsMenuScrolling] = useState(false);\n\n const onMenuScroll = useCallback(() => {\n setIsMenuScrolling(true);\n setTimeout(() => setIsMenuScrolling(false), 0);\n }, []);\n\n const toggleBurgerHandler = useCallback(() => {\n setIsBurgerOpen(!isBurgerOpen);\n }, [isBurgerOpen]);\n\n const closeBurgerHandler = useCallback(() => {\n setIsBurgerOpen(false);\n }, []);\n\n const menuItemClick = useCallback((item, menuType = 'Main menu') => {\n closeBurgerHandler();\n dataLayerPush({\n event: EVENTS.UAevent,\n category: `${menuType} click`,\n action: item,\n label: 'menu_new',\n });\n }, [closeBurgerHandler]);\n\n return (<>\n \n\n \n\n \n \n \n \n \n \n {hasPhoneInfo && }\n \n \n\n \n
\n \n \n\n {Actions}\n\n {!isBurgerOpen &&\n \n \n \n }\n \n
\n
\n
\n\n \n \n
\n \n \n\n \n \n\n {Actions}\n\n {!isBurgerOpen &&\n \n \n \n }\n \n\n \n
\n
\n
\n\n \n\n {isBurgerOpen &&\n \n \n \n \n\n \n\n \n \n \n \n \n\n {ActionsInBurger && }\n\n \n \n \n \n \n \n \n \n \n }\n setIsCallbackOpen(false)}\n />\n
\n \n );\n};\n\nexport default CommonMobileHeader;\n","import styled, { css } from 'styled-components';\n\nimport { BorderRadius } from '../../tokens/borderRadius';\nimport { BoxShadow } from '../../tokens/boxShadow';\nimport { COLORS } from '../../tokens/colors';\n\nexport const BlindMenu = styled.div`\n position: relative;\n`;\n\nexport const DropDownWrapper = styled.div<{ isMobileView?: boolean }>`\n position: absolute;\n top: 100%;\n right: 0;\n background: transparent;\n z-index: 3;\n\n ${p => p.isMobileView && css`\n position: fixed;\n width: 100vw;\n height: 100%;\n top: 0;\n justify-content: center;\n align-items: flex-end;\n background: rgba(0,0,0,0.2);\n `}\n`;\n\nexport const DropDownContent = styled.div<{ isMobileView?: boolean }>`\n flex-direction: column;\n align-items: flex-start;\n margin-top: 8px;\n padding: 0;\n border-radius: ${BorderRadius.componentRadius};\n background-color: ${COLORS.BgMain};\n box-shadow: ${BoxShadow.M};\n\n ${p => p.isMobileView && css`\n width: 100%;\n max-width: 455px;\n align-items: center;\n padding: 24px;\n gap: 12px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n animation-name: fadeIn;\n animation-fill-mode: backwards;\n animation-duration: 0.5s;\n `}\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n`;\n","import React, { useState } from 'react';\n\nimport * as ST from './styled';\n\ninterface IProps {\n activeComponent: React.ReactNode,\n isMobileView?: boolean,\n children?: React.ReactNode,\n blindMenuRef?: React.RefObject,\n\n // Можно управлять состоянием снаружи\n displayDropDown?: boolean,\n onMouseEnter?: () => void,\n onMouseLeave?: () => void,\n\n [key: string]: unknown,\n}\n\nexport const BlindMenu = ({\n activeComponent,\n displayDropDown,\n isMobileView,\n children,\n blindMenuRef,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: IProps): JSX.Element => {\n const [displayDropDownState, setDisplayDropDownState] = useState(false);\n\n const isStateless = (typeof onMouseEnter === 'function' && typeof onMouseLeave === 'function') || isMobileView;\n\n return (\n setDisplayDropDownState(true)}\n onMouseLeave={isStateless ? onMouseLeave : () => setDisplayDropDownState(false)}\n {...rest}\n >\n {activeComponent}\n {(isStateless ? displayDropDown : displayDropDownState) &&\n \n \n {children}\n \n \n }\n \n );\n};\n","import styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Button = styled(BaseButton)<{ isMobileView: boolean }>`\n padding: 12px 24px;\n ${FONTS.XS};\n \n ${p => p.isMobileView && css`\n width: 100%;\n `}\n`;\n","import React, { useMemo } from 'react';\n\nimport { BaseButton, btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\nimport { BlindMenu } from '../index';\n\nimport * as ST from './styled';\n\nexport interface IElemData {\n id: string,\n text: string,\n link?: string,\n onClick?: () => void,\n}\n\ninterface IProps {\n isMobileView: boolean,\n elements: IElemData[],\n btnText?: string,\n Button?: JSX.Element,\n blindMenuRef?: React.RefObject,\n onElementClick?: (id: string) => void,\n displayDropDown?: boolean,\n [key: string]: unknown,\n}\n\nexport const BlindMenuWithBtn = ({\n btnText = 'Меню',\n Button,\n isMobileView,\n elements,\n displayDropDown,\n blindMenuRef,\n onElementClick,\n ...rest\n}: IProps): JSX.Element => {\n\n const elementClickHandler = (el: IElemData) => {\n if (typeof onElementClick === 'function') {\n onElementClick(el.id);\n } else if (typeof el.onClick === 'function') {\n el.onClick();\n }\n };\n\n const activeComponent = useMemo(\n () => Button || ,\n [Button, btnText],\n );\n\n return (\n \n {elements.map(el => (\n elementClickHandler(el)}\n >\n {el.text}\n \n ))}\n \n );\n};\n\nconst DefaultButton = ({ btnText }: Pick) => ;\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const Wrapper = styled.div`\n padding: 24px;\n width: 240px;\n \n // Не получилось использовать ButtonGroup потому что там срабатывает @media (min-width: 767px) width: auto\n ${Button} {\n width: 100%;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: auto;\n padding: 0;\n }\n`;\n\nexport const Info = styled.div`\n position: relative;\n padding-left: 28px;\n margin-bottom: 16px;\n white-space: pre-wrap;\n width: 100%;\n svg {\n position: absolute;\n left: 0;\n top: 0;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n white-space: normal;\n }\n`;\n\nexport const SkeletonContainer = styled.div<{\n width: string,\n height: string,\n isLoading: boolean,\n}>`\n width: ${({ width }) => width};\n height: ${({ height }) => height};\n display: ${({ isLoading }) => isLoading ? 'block' : 'none'};\n > span > span {\n margin-bottom: 0px;\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n > span > span {\n margin-bottom: 4px;\n }\n }\n`;\n","import { ReactNode, useMemo } from 'react';\n\nimport { WithSkeleton, WithSkeletonContext } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { breakpoints } from '~/src/features/_layout/Header/types';\n\nimport { SkeletonContainer } from './styled';\n\nconst getArray = (count: number) => Array.from({ length: count }, (_, i) => ({\n id: i,\n width: i % 2 ? '75%' : '100%',\n}));\n\nconst createMobileSkeletonProps = () => ({\n containerWidth: '350px',\n height: '40px',\n counter: getArray(2),\n});\n\nconst createDesktopSkeletonProps = () => ({\n containerWidth: '164px',\n height: '80px',\n counter: getArray(4),\n});\n\ninterface IProps {\n isLoading: boolean,\n children: ReactNode,\n}\n\nconst SkeletonComponent = ({ isLoading, children }: IProps) => {\n const isMobile = useMatchMediaByWidth(breakpoints.mMobile);\n const currentSkeletonProps = useMemo(() =>\n isMobile ? createMobileSkeletonProps() : createDesktopSkeletonProps(),\n [isMobile]);\n\n return (\n \n \n {currentSkeletonProps.counter.map(({ id, width }) =>\n // eslint-disable-next-line react/no-children-prop\n )}\n \n {children}\n \n );\n};\nexport default SkeletonComponent;\n","import { createSelector } from 'reselect';\n\nimport { TState } from '~/src/store';\nimport { IAddress } from '~/src/store/reducers/auth';\n\nexport const selectClientPersonal = (state: TState) => {\n return state.auth.clientPersonal;\n};\n\ninterface IAgreementInfoMenu {\n agreement: string,\n address: string,\n}\n\nexport const formatPartOfAddress = (part: string | number, prefix: string, postfix = ','): string | undefined => {\n return part ? `${prefix} ${part}${postfix}` : undefined;\n};\n\nexport const formatAddressIntoString = (address: IAddress): string => (\n [\n address.city,\n formatPartOfAddress(address.street, '\\nул.'),\n formatPartOfAddress(address.house, '\\nд.', address.building ? '' : ','),\n formatPartOfAddress(address.building, '/'),\n formatPartOfAddress(address.flat, 'кв.', ''),\n ]\n .filter(item => !!item)\n .join(' ')\n);\n\nexport const selectClientPersonalForHeader = createSelector(\n selectClientPersonal,\n (personal): IAgreementInfoMenu | null => {\n if (!personal) {\n return null;\n }\n const { address, agreement } = personal;\n return {\n agreement: `${agreement}`,\n address: formatAddressIntoString(address),\n };\n },\n);\n\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { DocumentText } from '@r1-frontend/ui-react/components/svg/content';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { USER_CHANGE_ROUTE } from '~/src/constants/routes';\nimport Skeleton from '~/src/features/_layout/Header/commonComponents/AgreementInfo/Skeleton';\nimport { isSso } from '~/src/features/user/helpers';\nimport { selectClientPersonalForHeader } from '~/src/store/selectors/auth/selectClientPersonal';\n\nimport * as ST from './styled';\n\nexport const Agreement = () => {\n const router = useRouter();\n const userInfo = useSelector(selectClientPersonalForHeader);\n\n const clickHandler = () => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.agreementMenu,\n action: 'iam_moving',\n });\n router.push('/lk/management');\n };\n\n const handleChangeAgreement = () => window.location.replace(\n `${USER_CHANGE_ROUTE}?referrer=${window.location.pathname}`,\n );\n\n const isDisplayChangeAgreement = useMemo(isSso, []);\n return (\n \n \n \n \n {userInfo\n ? Договор {userInfo.agreement}
По адресу {userInfo.address}
\n : null}\n
\n
\n \n {isDisplayChangeAgreement && (\n \n )}\n \n Управление договором\n \n \n
\n );\n};\n","import { mapValues } from 'lodash';\nimport keyBy from 'lodash/keyBy';\nimport uniqueId from 'lodash/uniqueId';\nimport { createSelector } from 'reselect';\n\nimport { IServices } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport headerDefaultLinks from '~/src/features/_layout/Header/links.json';\nimport { TState } from '~/src/store';\n\nexport const selectClientProducts = (state: TState) => {\n return state.auth.clientProducts;\n};\n\nexport const getProductPredicate = (productCheck: EProductsId) =>\n (clientInfo: IServices) => clientInfo.productId === productCheck;\n\nconst productInfoPredicates: Record boolean> = {\n '/lk/settings': getProductPredicate(EProductsId.internet),\n '/lk/settings/phone': getProductPredicate(EProductsId.telephony),\n};\n\nconst shouldBeDisplayed = (clientProductsServices: IServices[]) => (link?: string) => {\n return link && productInfoPredicates[link]\n ? clientProductsServices.some(productInfoPredicates[link])\n : true;\n};\n\nexport interface ILinksData {\n id: string,\n text: string,\n link?: string,\n action?: string,\n dataTest?: string,\n isLogout?: string,\n}\n\ninterface IClientPersonalLinksForHeader {\n links: ILinksData[],\n linksForActionSearch: Record,\n isNeedToRequest: boolean,\n}\n\nexport const selectClientPersonalLinksForHeader = createSelector(\n selectClientProducts,\n (products): IClientPersonalLinksForHeader => {\n const clientProductsServices = products?.services ?? [];\n const shouldBeDisplayedFilter = shouldBeDisplayed(clientProductsServices);\n\n const links: ILinksData[] = headerDefaultLinks\n .filter(({ link }) => shouldBeDisplayedFilter(link))\n .map((item) => ({\n ...item,\n id: uniqueId('auth-link_'),\n }));\n\n\n const linksForActionSearch = mapValues(\n keyBy(links, 'id'),\n ({ isLogout, action }) => ({ isLogout, action }),\n );\n\n return {\n links,\n linksForActionSearch,\n isNeedToRequest: !products,\n };\n },\n);\n\n\n","import styled from 'styled-components';\n\nexport const ProfileAuthWrapper = styled.div`\n height: 36px;\n display: flex;\n gap: 8px;\n flex-basis: max-content;\n`;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { BlindMenu } from '@r1-frontend/ui-react/components/BlindMenu';\nimport { BlindMenuWithBtn } from '@r1-frontend/ui-react/components/BlindMenu/BlindMenuWithBtn';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { DocumentText } from '@r1-frontend/ui-react/components/svg/content';\nimport { User } from '@r1-frontend/ui-react/components/svg/users';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { Agreement } from '~/src/features/_layout/Header/commonComponents/AgreementInfo';\nimport { breakpoints } from '~/src/features/_layout/Header/types';\nimport { useClickOutside } from '~/src/helpers/hooks/useClickOutside';\nimport { logout } from '~/src/store/actions/auth/logout';\nimport { fetchClientInfo } from '~/src/store/actions/clientInfo';\nimport { selectClientPersonalLinksForHeader } from '~/src/store/selectors/auth/selectClientProducts';\n\nimport * as ST from './styled';\n\nconst ProfileContainer = () => {\n const { links, linksForActionSearch, isNeedToRequest } = useSelector(selectClientPersonalLinksForHeader);\n const dispatch = useDispatch();\n\n useEffect(()=> {\n if (isNeedToRequest) {\n // todo-porotikova свести к 'personal', 'contacts'\n dispatch(fetchClientInfo());\n }\n }, [dispatch, isNeedToRequest]);\n\n const sendEvent = useCallback((action) => {\n if (action) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.profileMenu,\n action,\n });\n }\n }, []);\n\n const onClickLinkHandler = useCallback((id: string) => {\n const item = linksForActionSearch[id];\n\n sendEvent(item.action);\n if (item.isLogout) {\n dispatch(logout());\n }\n }, [dispatch, linksForActionSearch, sendEvent]);\n\n const blindMenuRef = useRef(null);\n const agreementMenuRef = useRef(null);\n\n const [isDisplay, setIsDisplay] = useState(false);\n const [isDisplayAgreement, setIsDisplayAgreement] = useState(false);\n\n const isMobile = useMatchMediaByWidth(breakpoints.mobile, false, true);\n\n const onOutClick = useCallback((event) => {\n const path = event.composedPath();\n const isBlindMenu = path.includes(blindMenuRef?.current);\n const isAgreementMenu = path.includes(agreementMenuRef?.current);\n\n if (!isBlindMenu) {\n setIsDisplay(false);\n }\n\n if (!isAgreementMenu) {\n setIsDisplayAgreement(false);\n }\n }, []);\n\n useClickOutside(!isDisplay, onOutClick);\n useClickOutside(!isDisplayAgreement, onOutClick);\n\n const agreementDetailClickHandler = useCallback(() => {\n setIsDisplayAgreement(prevState => !prevState);\n if (!isDisplayAgreement) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.agreementMenu,\n action: 'open_agreement_details_menu',\n });\n }\n }, [isDisplayAgreement]);\n\n const profileMenuClickHandler = useCallback(() => {\n setIsDisplay(prevState => !prevState);\n if (!isDisplay) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.profileMenu,\n action: 'open_profile_menu',\n });\n }\n }, [isDisplay]);\n\n return (\n \n }\n />}\n blindMenuRef={agreementMenuRef}\n isMobileView={isMobile}\n displayDropDown={isDisplayAgreement}\n onClick={agreementDetailClickHandler}\n >\n \n \n }\n />}\n blindMenuRef={blindMenuRef}\n isMobileView={isMobile}\n elements={links}\n displayDropDown={isDisplay}\n onClick={profileMenuClickHandler}\n onElementClick={onClickLinkHandler}\n data-test='auth-menu'\n />\n \n );\n};\n\nexport default ProfileContainer;\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport CommonDesktopHeader from '~/src/features/_layout/Header/desktop/components/CommonDesktopHeader';\nimport CommonMobileHeader from '~/src/features/_layout/Header/mobile/components/CommonMobileHeader';\nimport ProfileContainer from '~/src/features/_layout/Header/mobile/components/ProfileContainer';\nimport { selectAuthMenu } from '~/src/store/selectors/menu/selectMenu';\n\nexport const AuthHeader = () => {\n const newMenuItems = useSelector(selectAuthMenu);\n\n const CommonActions = useMemo(() => , []);\n\n return (\n <>\n \n \n \n );\n};\n","import React, { useCallback } from 'react';\nimport Link from 'next/link';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { useHat } from '~/src/features/_layout/Header/commonComponents/Hat/useHat';\n\nimport * as ST from './styled';\n\nconst Hat = (): JSX.Element | null => {\n const { promoline, isShowPromoLine } = useHat() || {\n promoline: undefined,\n isShowPromoLine: false,\n };\n\n const sendGTMevent = useCallback(() => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.bannerOverHeader,\n action: ACTIONS.clickBanner,\n label: 'click',\n });\n }, []);\n\n const advertising = promoline?.advertising;\n\n if (!isShowPromoLine) {\n return null;\n }\n\n return \n
\n {promoline\n ? <>\n \n \n \n {advertising && (\n \n \n \n )}\n \n : null}\n
\n
;\n};\n\nexport default Hat;\n","export interface IImageProps {\n text?: string,\n rotateOnLeave: number,\n top: number,\n left?: number,\n right?: number,\n isHover?: boolean,\n}\n\nexport const imagesParams: IImageProps[] = [\n {\n text: 'Домофон',\n rotateOnLeave: -19.75,\n top: -25,\n left: 92,\n },\n {\n text: 'Интернет',\n rotateOnLeave: 19.56,\n top: -23,\n right: 5,\n },\n {\n text: 'Видеонаблюдение',\n rotateOnLeave: 15,\n top: 38,\n left: 88,\n },\n {\n text: 'ТВ',\n rotateOnLeave: -23.5,\n top: 32,\n right: 5,\n },\n];\n","// in the case of grow this list we should move logic to the component property like a 'hideConnectionButton'\nexport default [\n '/_site/[city]/full-buy',\n '/_site/[city]/constructor',\n '/_site/[city]/novosel',\n '/_site/[city]/order/[order-id]/address',\n '/_site/[city]/order/[order-id]/contacts',\n '/_site/[city]/order/[order-id]/create-agreement',\n '/_site/[city]/order/[order-id]/final',\n '/_site/[city]/order/[order-id]/time-slots',\n];\n","import React, { useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { BaseButton, btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\nimport { USER_LOGIN_ROUTE } from '~/src/constants/routes';\nimport { ConfirmCitySelection } from '~/src/features/_layout/Header/commonComponents/ConfirmCitySelection';\nimport CommonDesktopHeader from '~/src/features/_layout/Header/desktop/components/CommonDesktopHeader';\nimport {\n imagesParams,\n} from '~/src/features/_layout/Header/desktop/components/UnauthDesktopHeader/connectionButtonAnimation';\nimport { IUnauthHeaderProps } from '~/src/features/_layout/Header/types';\nimport urlsForHideConnectButton from '~/src/features/_layout/Header/urlsForHideConnectButton';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nimport * as ST from '../CommonDesktopHeader/styled';\n\nconst UnauthDesktopHeader = ({\n onBecomeClientHandler,\n referrerPath,\n ...props\n}: IUnauthHeaderProps): JSX.Element => {\n const router = useRouter();\n const [isHover, setIsHover] = useState(false);\n const companyName = useSelector(selectCompanyName);\n\n const clientActions = useMemo(() => {\n return \n \n {!urlsForHideConnectButton.includes(router.pathname) && (\n <>\n setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n />\n\n {imagesParams.map((item, index) => (\n \n {item.text}\n \n ))}\n \n )}\n ;\n }, [companyName, isHover, onBecomeClientHandler, referrerPath, router.pathname]);\n\n return (\n \n \n \n );\n};\n\nexport default UnauthDesktopHeader;\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakpoints } from '~/src/features/_layout/Header/types';\n\nexport const Button = styled(BaseButton) <{ isBurgerOpen?: boolean }>`\n align-self: center;\n margin-left: 16px;\n width: 100%;\n cursor: pointer;\n margin-bottom: ${p => p.isBurgerOpen ? '12px' : '0'};\n max-width: ${p => p.isBurgerOpen ? 'auto' : '164px'};\n ${p => p.isBurgerOpen ? FONTS.MediumS : FONTS.MediumXS};\n\n @media (max-width: ${breakpoints.sDesktop}) {\n margin-left: 0;\n }\n\n @media (max-width: ${breakpoints.sMobile}) {\n max-width: ${p => p.isBurgerOpen ? 'auto' : '124px'};\n }\n`;\n\nexport const ButtonsBlock = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n margin-top: 12px;\n margin-bottom: 12px;\n padding-left: 24px;\n padding-right: 24px;\n`;\n\nexport const Login = styled.div`\n color: ${COLORS.TextPrimary};\n align-items: end;\n\n &:hover {\n color: ${COLORS.Logo};\n }\n\n @media (max-width: ${breakpoints.tablet}) {\n &:before {\n margin-bottom: 0;\n }\n }\n`;\n","import React, { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { USER_LOGIN_ROUTE } from '~/src/constants/routes';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nimport * as ST from './styled';\n\nexport interface IConnectionAndLoginBurgerViewProps {\n onOpenBecomeClientPopup: () => void,\n referrerPath: string,\n closeHandler?: () => void,\n}\n\nconst BurgerView = ({\n onOpenBecomeClientPopup,\n referrerPath,\n closeHandler,\n}: IConnectionAndLoginBurgerViewProps): JSX.Element => {\n const companyName = useSelector(selectCompanyName);\n\n const sendAuthEvent = useCallback((action = 'Войти в личный кабинет') => {\n closeHandler && closeHandler();\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.mainMenuClick,\n action,\n label: 'menu_new',\n });\n }, [closeHandler]);\n\n return (\n \n \n sendAuthEvent('Войти в личный кабинет')}\n isBurgerOpen={true}\n >\n Войти\n \n \n );\n};\n\nexport default BurgerView;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\n\nimport urlsForHideConnectButton from '~/src/features/_layout/Header/urlsForHideConnectButton';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nexport interface IConnectionAndLoginMainViewProps {\n onOpenBecomeClientPopup: () => void,\n}\n\nconst MainView = ({ onOpenBecomeClientPopup }: IConnectionAndLoginMainViewProps) => {\n const router = useRouter();\n const companyName = useSelector(selectCompanyName);\n\n if (urlsForHideConnectButton.includes(router.pathname)) {\n return null;\n }\n\n return (\n \n Подключить {companyName}\n \n );\n};\n\nexport default MainView;\n","import React, { useMemo } from 'react';\n\nimport\n CommonMobileHeader, {\n ICommonActions,\n} from '~/src/features/_layout/Header/mobile/components/CommonMobileHeader';\nimport BurgerView from '~/src/features/_layout/Header/mobile/components/ConnectionAndLoginActions/BurgerView';\nimport MainView from '~/src/features/_layout/Header/mobile/components/ConnectionAndLoginActions/MainView';\nimport { IUnauthHeaderProps } from '~/src/features/_layout/Header/types';\n\nconst UnauthMobileHeader = ({\n onBecomeClientHandler,\n referrerPath,\n ...props\n}: IUnauthHeaderProps): JSX.Element => {\n const CommonActions: ICommonActions = useMemo(() => {\n const Actions = ;\n\n const ActionsInBurger = (props: { closeHandler?: () => void }): JSX.Element => {\n return ;\n };\n\n return { Actions, ActionsInBurger };\n }, [onBecomeClientHandler, referrerPath]);\n\n return (\n \n );\n};\n\nexport default UnauthMobileHeader;\n","import React, { useCallback, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport ConnectDomruPopupGroup from '~/src/components/ConnectDomruPopup/ConnectDomruPopupGroup';\nimport UnauthDesktopHeader from '~/src/features/_layout/Header/desktop/components/UnauthDesktopHeader';\nimport UnauthMobileHeader from '~/src/features/_layout/Header/mobile/UnauthMobileHeader';\nimport { IUnauthHeaderProps } from '~/src/features/_layout/Header/types';\nimport { isLeadGenerationHide } from '~/src/helpers/isLeadGenerationHide';\nimport { selectUnauthMenu } from '~/src/store/selectors/menu/selectMenu';\n\nexport const UnauthHeader = () => {\n const newMenuItems = useSelector(selectUnauthMenu);\n const { asPath } = useRouter();\n const [showBecomeClientPopup, setShowBecomeClientPopup] = useState(false);\n const sendAuthEvent = useCallback((action = 'Войти в личный кабинет') => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.mainMenuClick,\n action,\n label: 'menu_new',\n });\n }, []);\n const openBecomeClientPopup = useCallback(() => {\n sendAuthEvent('Подключить Дом.ру');\n setShowBecomeClientPopup(true);\n }, []);\n\n const hasPhoneInfo = !isLeadGenerationHide();\n const referrerPath = `?referrer=${decodeURIComponent(asPath)}`;\n\n const props: IUnauthHeaderProps = {\n hasPhoneInfo,\n items: newMenuItems,\n onBecomeClientHandler: openBecomeClientPopup,\n referrerPath,\n };\n\n return (\n <>\n \n \n setShowBecomeClientPopup(false)}\n />\n \n );\n};\n","import styled from 'styled-components';\n\nexport const HeaderContainer = styled.div`\n display: block;\n position: relative;\n width: 100%;\n`;\n\n\n","import { useSelector } from 'react-redux';\n\nimport { AuthHeader } from '~/src/features/_layout/Header/AuthHeader';\nimport Hat from '~/src/features/_layout/Header/commonComponents/Hat';\nimport { UnauthHeader } from '~/src/features/_layout/Header/UnauthHeader';\nimport { selectHasAuthorization } from '~/src/store/selectors/auth/selectAccessToken';\n\nimport * as ST from '~/src/features/_layout/Header/styled';\n\nconst Header = (): JSX.Element => {\n const hasAuthorization = useSelector(selectHasAuthorization);\n\n return (\n \n \n {hasAuthorization ? : }\n \n );\n};\n\nexport default Header;\n","import styled, { createGlobalStyle } from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\n\nexport const GlobalStyle = createGlobalStyle`\n body {\n position: relative;\n margin: 0;\n padding: 0;\n color: ${COLORS.TextPrimary};\n background-color: ${COLORS.BgMain};\n }\n\n * div {\n display: flex;\n flex-wrap: wrap;\n }\n`;\n\n\nexport const AppContainer = styled.div<{ bgColor?: string }>`\n width: 100%;\n background-color: ${({ bgColor }) => bgColor ? bgColor : 'transparent'};\n`;\n\nexport const Content = styled.div`\n position: relative;\n width: 100%;\n min-width: 320px;\n min-height: 100vh;\n margin-left: auto;\n padding-top: 0;\n`;\n","import React, { FC, RefObject } from 'react';\n\nimport { GlobalStyle } from '@r1-frontend/ui-react/components/GlobalStyles';\nimport UIKitGlobalStyle from '@r1-frontend/ui-kit/themes/UIKitGlobalStyle';\n\nimport CitySelectContainer from '~/src/components/CitySelectContainer';\nimport { Footer } from '~/src/components/Footer';\nimport { CDN_API_ENDPOINT } from '~/src/constants';\nimport Chat from '~/src/features/_layout/Chat';\nimport Header from '~/src/features/_layout/Header';\n\nimport * as ST from './styled';\n\ninterface IApp {\n withMenu: boolean,\n withChat: boolean,\n withFooter: boolean,\n withBottomSticky?: RefObject,\n bgColor?: string,\n withEmailWidget?: boolean,\n emailWidgetText?: string,\n}\n\nconst App: FC = ({\n withMenu,\n withChat,\n withFooter,\n bgColor,\n withEmailWidget,\n withBottomSticky,\n emailWidgetText,\n children,\n}) => {\n return (\n \n \n \n \n {withMenu &&
}\n \n {children}\n\n {withFooter && }\n \n\n \n\n \n \n );\n};\n\nexport default App;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport NextHead from 'next/head';\nimport { useRouter } from 'next/router';\nimport Script from 'next/script';\n\nimport { getHostname } from '~/src/store/selectors/city';\n\nexport interface IHead {\n title?: string,\n url?: string,\n image?: string,\n description?: string,\n relCanonical?: string,\n}\nconst Head = ({\n title = 'Дом.ру',\n url,\n image,\n description,\n relCanonical,\n}: IHead) => {\n const hostname = useSelector(getHostname);\n const { asPath } = useRouter();\n const pathWithoutParam = asPath.split('?')[0];\n const canonicalUrl = relCanonical || `https://${hostname}${pathWithoutParam}`;\n const withGoogleoptimize = asPath.indexOf('/bundles-land-new-2') !== -1;\n\n return (\n \n {title}\n {withGoogleoptimize && }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {url && }\n {image && }\n {description &&\n <>\n \n \n \n \n }\n {canonicalUrl && }\n \n );\n};\n\nexport default Head;\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nexport interface IHeaderScrollProps {\n offset?: number,\n}\n\nconst useScrollingUpState = (offset: number) => {\n const prevScrollY = useRef(isClientSide() ? window.scrollY : 0);\n const [isScrollingUp, setIsScrollingUp] = useState(() => prevScrollY.current <= offset);\n\n const updateScrollDirection = useCallback(() => {\n const scrollY = window.scrollY;\n\n if (Math.abs(scrollY - prevScrollY.current) >= offset) {\n const newScrollDirection = scrollY < prevScrollY.current && scrollY <= offset;\n const newPrevScrollY = scrollY > 0 ? scrollY : 0;\n\n if (newScrollDirection !== isScrollingUp) {\n setIsScrollingUp(newScrollDirection);\n }\n\n if (newPrevScrollY !== prevScrollY.current) {\n prevScrollY.current = newPrevScrollY;\n }\n }\n }, [offset, isScrollingUp]);\n\n return { isScrollingUp, updateScrollDirection };\n};\n\nexport const useHeaderScroll = ({ offset = 100 }: IHeaderScrollProps = {}) => {\n const { isScrollingUp, updateScrollDirection } = useScrollingUpState(offset);\n\n const blocking = useRef(false);\n\n useEffect(() => {\n const onScroll = () => {\n if (!blocking.current) {\n blocking.current = true;\n window.requestAnimationFrame(updateScrollDirection);\n blocking.current = false;\n }\n };\n\n window.addEventListener('scroll', onScroll);\n\n return () => window.removeEventListener('scroll', onScroll);\n }, [updateScrollDirection]);\n\n return { isScrollingUp };\n};\n","import React, { FC, RefObject, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport dynamic from 'next/dynamic';\nimport Router from 'next/router';\nimport Script from 'next/script';\nimport { ThemeProvider } from 'styled-components';\n\nimport { defaultErrorHandler, init } from '@r1-frontend/analytics/campaignLayer';\n\nimport { lightTheme } from '@r1-frontend/ui-kit/themes';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { IS_GTM_DISABLED } from '~/src/constants';\nimport App from '~/src/features/_layout/App';\nimport Head, { IHead } from '~/src/features/_layout/Head';\nimport { useHeaderScroll } from '~/src/features/_layout/Header/useHeaderScroll';\nimport { PassportUpdate } from '~/src/features/lk/PassportUpdate';\nimport { TState } from '~/src/store';\nimport { verifyAuthState } from '~/src/store/actions/auth/verifyAuthState';\n\nimport { AppContext } from './App/AppContext';\n\nconst ymId = 30080914;\n\nconst NO_SCROLL_PATH = [\n '/internet',\n '/internet/mono-village',\n '/full-buy',\n];\n\nconst CookieAlert = dynamic(() => import('@r1-frontend/ui-react/organisms/CookieAlert'), { ssr: false });\n\ninterface ILayout extends IHead {\n withMenu?: boolean,\n withFooter?: boolean,\n withChat?: boolean,\n withBottomSticky?: RefObject,\n bgColor?: string,\n withEmailWidget?: boolean,\n emailWidgetText?: string,\n withShadowInMobileHeader?: boolean,\n withHeaderOffset?: boolean,\n}\n\nconst Layout: FC = ({\n children,\n withMenu = true,\n withFooter = true,\n withChat = true,\n bgColor,\n withShadowInMobileHeader = true,\n ...props\n}) => {\n const isClient = isClientSide();\n\n const dispatch = useDispatch();\n\n const { isAuth, clientPersonal } = useSelector((state: TState) => state.auth);\n const { agreement } = clientPersonal || {};\n\n useEffect(() => {\n const checkCookieInterval = setInterval(() => {\n dispatch(verifyAuthState());\n }, 1000);\n\n return () => {\n clearInterval(checkCookieInterval);\n };\n }, [dispatch]);\n\n useEffect(() => {\n if (!agreement) {\n return;\n }\n\n if (isAuth && agreement) {\n const intervalId = setInterval(() => {\n window.ym && window.ym(\n ymId,\n 'userParams',\n { UserID: agreement },\n );\n clearInterval(intervalId);\n }, 1000);\n\n return () => {\n clearInterval(intervalId);\n };\n }\n }, [isAuth, agreement]);\n\n useEffect(() => {\n if (isClient && agreement) {\n init({\n agreementNumber: agreement,\n onError: defaultErrorHandler,\n environment: process.env.NEXT_PUBLIC_ENVIRONMENT === 'production' ? 'production' : 'sandbox',\n debug: process.env.NEXT_PUBLIC_ENVIRONMENT === 'localhost',\n });\n }\n }, []);\n\n const { isScrollingUp } = useHeaderScroll();\n\n return (\n \n \n \n \n \n \n\n {isClient && (\n IS_GTM_DISABLED\n ? \n {children}\n \n \n \n );\n};\n\n// TODO Проверить актуальность этого решения. Меняет поведение роутинга по дефолту, сложно найти\nRouter.events.on('routeChangeComplete', (pathname) => {\n const [path] = pathname.split('?');\n if (NO_SCROLL_PATH.includes(path)) {\n return;\n }\n window.scrollTo(0, 0);\n});\n\nexport default Layout;\n","import cookie from 'react-cookies';\n\nimport { ACCESS_TOKEN_COOKIE, REFRESH_TOKEN_COOKIE } from '~/src/constants';\nimport { isSso } from '~/src/features/user/helpers';\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport { logout } from '~/src/store/actions/auth/logout';\n\nexport const verifyAuthState = () => {\n return (dispatch: TAppThunkDispatch, getState: TGetState) => {\n const state = getState();\n if (state.auth.isAuth) {\n const accessToken = cookie.load(ACCESS_TOKEN_COOKIE);\n const isAccessTokenDefined = Boolean(accessToken);\n\n const refreshToken = cookie.load(REFRESH_TOKEN_COOKIE);\n const isRefreshTokenDefined = Boolean(refreshToken);\n\n if (!isAccessTokenDefined) {\n if (isSso() && isRefreshTokenDefined) {\n return window.location.replace(\n `/user/change-agreement?referrer=${document.location.pathname}`,\n );\n }\n\n dispatch(logout());\n }\n }\n };\n};\n","import styled from 'styled-components';\n\nimport Button, { TButtonProps } from '@r1-frontend/ui-react/components/buttons/button';\n\nimport GosuslugiIcon from '../../../../assets/img/icons/logo/gosuslugi.svg';\n\n/**\n * Кнопка с логотипом Госуслуг\n */\nconst GosuslugiButton = ({ children, size = 'small', onClick }: Omit) => {\n return (\n }\n onClick={onClick}\n >\n {children}\n \n );\n};\n\nexport default styled(GosuslugiButton)`\n color: #0D4CD3;\n border: 1px solid #0D4CD3;\n`;\n","import { batch, shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport Button, { TButtonType } from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport PopupResult, { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\n\nimport { reset } from '~/src/features/lk/PassportUpdate/store/actions';\nimport { startGettingGosuslugiCode } from '~/src/features/lk/PassportUpdate/store/thunks/startGettingGosuslugiCode';\nimport { TState } from '~/src/store';\nimport { openChat } from '~/src/store/actions/chat';\n\nconst enum EButtonActions {\n CLOSE = 'Закрыть',\n TRY_AGAIN = 'Попробовать ещё раз',\n CHAT = 'Написать в чат',\n}\n\ninterface IContent {\n title: string,\n text: JSX.Element,\n popupType: EResultPopupStatus,\n btns: {\n name: EButtonActions,\n bType: TButtonType,\n }[],\n}\n\nconst content: Record = {\n success: {\n title: 'Теперь ваши данные актуальны',\n text: <>,\n popupType: EResultPopupStatus.SUCCESS,\n btns: [\n {\n name: EButtonActions.CLOSE,\n bType: 'action',\n },\n ],\n },\n error: {\n title: 'Не получилось обновить данные',\n text: <>Пожалуйста, попробуйте ещё раз. Если ошибка повторится — напишите в чат техподдержки.,\n popupType: EResultPopupStatus.ERROR,\n btns: [\n {\n name: EButtonActions.TRY_AGAIN,\n bType: 'action',\n },\n {\n name: EButtonActions.CHAT,\n bType: 'secondary',\n },\n ],\n },\n incorrect: {\n title: 'Данные не совпадают',\n text: <>Данные в договоре не совпадают с вашими данными на Госуслугах. Пожалуйста, напишите в чат техподдержки.,\n popupType: EResultPopupStatus.WARNING,\n btns: [\n {\n name: EButtonActions.CHAT,\n bType: 'action',\n },\n ],\n },\n};\n\nconst getContent = (isUpdateSuccess: boolean, isDataInCorrect: boolean) => isUpdateSuccess\n ? content['success']\n : isDataInCorrect\n ? content['incorrect']\n : content['error'];\n\n/**\n * Попап с сообщением о результате обновления паспортных данных\n */\nexport const PassportUpdateResultPopup = () => {\n const dispatch = useDispatch();\n\n const { status, isUpdateSuccess, isDataInCorrect } = useSelector((state: TState) => {\n return ({\n status: state.passportUpdate.status,\n isUpdateSuccess: state.passportUpdate.isUpdateSuccess,\n isDataInCorrect: state.passportUpdate.isDataInCorrect,\n });\n }, shallowEqual);\n\n const onClick = (btnAction: EButtonActions) => {\n switch (btnAction) {\n case EButtonActions.CLOSE:\n return dispatch(reset());\n case EButtonActions.TRY_AGAIN:\n return dispatch(startGettingGosuslugiCode());\n case EButtonActions.CHAT:\n return batch(() => {\n dispatch(reset());\n dispatch(openChat());\n });\n }\n };\n\n const currentContent = getContent(isUpdateSuccess, isDataInCorrect);\n\n return (\n <>\n onClick(EButtonActions.CLOSE)}\n title={currentContent.title}\n text={currentContent.text}\n type={currentContent.popupType}\n >\n \n {currentContent.btns.map(btn => (\n onClick(btn.name)}\n >\n {btn.name}\n \n ))}\n \n \n \n );\n};\n","import { actionTypes } from '../reducer';\n\nexport const initialized = (isActualData: boolean, isNewEnter: boolean) => ({\n type: actionTypes.INITIALIZED,\n payload: {\n isActualData,\n isNewEnter,\n },\n});\n","import { actionTypes } from '../reducer';\n\nexport const reset = () => ({\n type: actionTypes.RESET,\n payload: null,\n});\n","import { actionTypes } from '../reducer';\n\nexport const updateError = () => ({\n type: actionTypes.UPDATE_ERROR,\n payload: null,\n});\n","import { doRequest } from '@r1-frontend/do-request';\nimport { authUrl, IResponseDto } from '@r1-frontend/api-domru/esign/v1/esia/authUrl';\n\nimport { IS_LOCAL_ENVIROMENT } from '~/src/constants';\nimport { startGetttingCode, updateError } from '~/src/features/lk/PassportUpdate/store/actions';\nimport { TAppThunkDispatch } from '~/src/store';\n\nexport const defaultOrigin = 'https://perm.dom.ru';\n\n/**\n * Стартует процесс получения кода от Госуслуг\n */\nexport const startGettingGosuslugiCode = () => async(dispatch: TAppThunkDispatch): Promise => {\n if (!window) {\n return;\n }\n\n const { origin, pathname } = window.location;\n\n const returnUrl = IS_LOCAL_ENVIROMENT ? `${defaultOrigin}${pathname}` : `${origin}${pathname}`;\n\n const response = await doRequest.apiEsign(authUrl(returnUrl));\n\n if (response.isSuccess) {\n window.location.href = response.payload.authUrl;\n\n dispatch(startGetttingCode());\n } else {\n dispatch(updateError());\n }\n};\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport interface IResponseDto {\n authUrl: string,\n}\n\n/*\n* Возвращает url для редиректа на Госуслуги\n* https://master.esign.sandbox.d2c.r-one.io/docs/#/Esia/EsiaController_getAuthUrl\n*/\nexport const authUrl = (redirectUrl: string): IRequest => ({\n uri: '/api/v1/esia/auth-url',\n method: 'GET',\n withProvider: true,\n withAuth: true,\n queryParams: {\n redirectUrl,\n },\n});\n","import { actionTypes } from '../reducer';\n\nexport const startGetttingCode = () => ({\n type: actionTypes.START_GETTING_CODE,\n payload: null,\n});\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { TButtonSize } from '@r1-frontend/ui-react/components/buttons/button';\nimport GosuslugiButton from '@r1-frontend/ui-react/components/buttons/originalButtons/gosuslugiButton';\n\nimport { startGettingGosuslugiCode } from '~/src/features/lk/PassportUpdate/store/thunks/startGettingGosuslugiCode';\n\ninterface IProps {\n size?: TButtonSize,\n}\n\nexport const PassportUpdateButton = ({ size = 'small' }: IProps) => {\n const dispatch = useDispatch();\n\n const onClick = useCallback(() => {\n dispatch(startGettingGosuslugiCode());\n }, []);\n\n return (\n \n Обновить через Госуслуги\n \n );\n};\n","import { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer, IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { PassportUpdateButton } from '~/src/features/lk/PassportUpdate/containers/PassportUpdateButton';\nimport { downNewEnterFlag } from '~/src/features/lk/PassportUpdate/store/actions';\nimport { TState } from '~/src/store';\n\n/**\n * Информационный попап о необходимости актуализации паспортных данных\n */\nexport const PassportUpdateInfoPopup = () => {\n const dispatch = useDispatch();\n const { isDataActual, isNewEnter } = useSelector((state: TState) => {\n return ({\n isDataActual: state.passportUpdate.isDataActual,\n isNewEnter: state.passportUpdate.isNewEnter,\n });\n }, shallowEqual);\n\n const onClose = () => {\n dispatch(downNewEnterFlag());\n };\n\n return (\n \n \n \n

Обновите свои данные через Госуслуги

\n \n В соответствии с законом 115-ФЗ мы должны следить, чтобы ваши данные оставались актуальными.\n \n \n \n \n
\n
\n \n );\n};\n","import { actionTypes } from '../reducer';\n\nexport const downNewEnterFlag = () => ({\n type: actionTypes.DOWN_NEW_ENTER_FLAG,\n payload: null,\n});\n","import cookie from 'react-cookies';\n\nimport Cookies from '@r1-frontend/shared/helpers/Cookies';\nimport { ACCESS_TOKEN_COOKIE } from '@r1-frontend/shared/helpers/getAccessToken';\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { COOKIE_MAX_AGE_LONG } from '~/src/constants';\n\n/**\n * Кука хранит часть ACCESS_TOKEN, для определения нового входа пользователя\n */\nconst LAST_ENTER_COOKIE = 'lastEnter';\nconst MAX_LENGTH_VALUE = 10;\n\n/**\n * Возвращает true - если пользователь только что залогинился, false - для последующих переходов по сайту\n * сравнивает хвост ACCESS_TOKEN, хранит его в куке LAST_ENTER\n */\nexport const checkNewEnter = () => {\n if (isServerSide()) {\n return false;\n }\n\n const cookies = new Cookies();\n\n const lastEnter = cookie.load(LAST_ENTER_COOKIE);\n const accessToken = cookie.load(ACCESS_TOKEN_COOKIE);\n const partAccessToken = accessToken.substring(accessToken.length - MAX_LENGTH_VALUE, accessToken.length);\n\n if (partAccessToken === lastEnter) {\n return false;\n }\n\n cookies.save({\n name: LAST_ENTER_COOKIE,\n value: partAccessToken,\n config: { maxAge: COOKIE_MAX_AGE_LONG },\n });\n\n return true;\n};\n","import { useEffect } from 'react';\nimport cookie from 'react-cookies';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { ESIA_COOKIE } from '~/src/constants';\nimport { initialize } from '~/src/features/lk/PassportUpdate/store/thunks/initialize';\nimport { updatePassportData } from '~/src/features/lk/PassportUpdate/store/thunks/updatePassportData';\nimport { TState } from '~/src/store';\n\n/**\n * Проверяет необходимость обновления данных пользователя\n * обновляет данные пользователя, по коду из Госуслуг\n * @param usePassportUpdateAbn - аб-тест, включает/отлкючает функционал обновления\n */\nexport const useUpdatePassportData = (usePassportUpdateAbn: boolean) => {\n const esiaKey = cookie.load(ESIA_COOKIE);\n\n const dispatch = useDispatch();\n\n const { isAuth, status, isLoading } = useSelector((state: TState) => {\n return ({\n isAuth: state.auth.isAuth,\n status: state.passportUpdate.status,\n isLoading: state.passportUpdate.isLoading,\n });\n }, shallowEqual);\n\n useEffect(() => {\n if (!isAuth || !usePassportUpdateAbn || esiaKey || isLoading) {\n return;\n }\n\n if (status === 'notInit') {\n dispatch(initialize());\n }\n }, [dispatch, esiaKey, isAuth, isLoading, status, usePassportUpdateAbn]);\n\n useEffect(() => {\n if (!isAuth || !usePassportUpdateAbn) {\n return;\n }\n\n if (esiaKey) {\n dispatch(updatePassportData(esiaKey));\n cookie.remove(ESIA_COOKIE);\n }\n }, [isAuth, esiaKey, usePassportUpdateAbn, dispatch]);\n\n};\n","import { doRequest } from '@r1-frontend/do-request/index';\nimport { checkPassport, IResponseDto } from '@r1-frontend/api-domru/core-profile/api/v1/user/checkPassport';\n\nimport { checkNewEnter } from '~/src/features/lk/PassportUpdate/helpers/checkNewEnter';\nimport { initialized } from '~/src/features/lk/PassportUpdate/store/actions';\nimport { TAppThunkDispatch } from '~/src/store';\n\n/**\n * Проверяем необходимость обновления персональных данных\n */\nexport const initialize = () => async(dispatch: TAppThunkDispatch): Promise => {\n const response = await doRequest.coreProfile(checkPassport());\n\n if (response.isSuccess) {\n const isNewEnter = checkNewEnter();\n\n dispatch(initialized(response.payload.isActualData, isNewEnter));\n }\n};\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport interface IResponseDto {\n isActualData: boolean,\n}\n\n/*\n* Проверяет требуется ли обновление паспортных данных\n* https://master.core-profile.sandbox.d2c.r-one.io/docs#/User/UserController_checkPassport\n*/\nexport const checkPassport = (): IRequest => ({\n uri: '/v1/user/check-passport',\n method: 'GET',\n withAuth: true,\n withProvider: true,\n});\n","import { doRequest } from '@r1-frontend/do-request/index';\nimport { personalData } from '@r1-frontend/api-domru/esign/v1/esia/personal-data';\n\nimport { updateError, updateIncorrect, updateSuccess, updatingData } from '~/src/features/lk/PassportUpdate/store/actions';\nimport { TAppThunkDispatch } from '~/src/store';\n\n/**\n * Обновляем персональные данные в биллинге\n */\nexport const updatePassportData = (gosuslugiCode: string) => async(dispatch: TAppThunkDispatch): Promise => {\n dispatch(updatingData());\n\n const response = await doRequest.apiEsign(personalData({\n esiaCode: gosuslugiCode,\n withValidation: true,\n }));\n\n if (response.isSuccess) {\n dispatch(updateSuccess());\n } else {\n dispatch(response.error.code === 409 ? updateIncorrect() : updateError());\n }\n};\n","import { actionTypes } from '../reducer';\n\nexport const updatingData = () => ({\n type: actionTypes.UPDATING_DATA,\n payload: null,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport interface IRequestDto {\n esiaCode: string,\n withValidation: boolean,\n}\nexport interface IResponseDto {\n authUrl: string,\n}\n\n/*\n* Обновляет персональные данные в биллинге (Запрашивает ПД в esia Госуслуги)\n* https://master.esign.sandbox.d2c.r-one.io/docs/#/Esia/EsiaController_updatePersonalData\n*/\nexport const personalData = (requestDto: IRequestDto): IRequest => ({\n uri: '/api/v1/esia/personal-data',\n method: 'PATCH',\n withProvider: true,\n withAuth: true,\n body: JSON.stringify(requestDto),\n});\n","import { actionTypes } from '../reducer';\n\nexport const updateSuccess = () => ({\n type: actionTypes.UPDATE_SUCCESS,\n payload: null,\n});\n","import { actionTypes } from '../reducer';\n\nexport const updateIncorrect = () => ({\n type: actionTypes.UPDATE_INCORRECT,\n payload: null,\n});\n","import { useSelector } from 'react-redux';\n\nimport Alert, { AlertButtons } from '@r1-frontend/ui-react/components/Alert';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\nimport { PassportUpdateButton } from '~/src/features/lk/PassportUpdate/containers/PassportUpdateButton';\nimport { TState } from '~/src/store';\n\n/**\n * Алерт о необходимости актуализации паспортных данных\n */\nexport const PassportUpdateAlert = () => {\n const isDataActual = useSelector((state: TState) => state.passportUpdate.isDataActual);\n\n if (isDataActual) {\n return null;\n }\n\n return (\n \n \n Пожалуйста, обновите свои данные через Госуслуги. В соответствии с законом 115-ФЗ мы должны следить, чтобы они оставались актуальными.\n \n \n \n \n \n );\n};\n","import { PassportUpdateInfoPopup } from '~/src/features/lk/PassportUpdate/containers/PassportUpdateInfoPopup';\nimport { PassportUpdateResultPopup } from '~/src/features/lk/PassportUpdate/containers/PassportUpdateResultPopup';\nimport { useUpdatePassportData } from '~/src/features/lk/PassportUpdate/hooks/useUpdatePassportData';\n\nimport { usePassportUpdate } from './usePassportUpdate';\n\n// Алерт о необходимости актуализации паспортных данных\nexport { PassportUpdateAlert } from '~/src/features/lk/PassportUpdate/containers/PassportUpdateAlert';\n\n/**\n * Актуализация паспортных данных\n */\nexport const PassportUpdate = () => {\n const passportUpdate = usePassportUpdate();\n\n useUpdatePassportData(passportUpdate);\n\n if (!passportUpdate) {\n return null;\n }\n\n return (\n <>\n \n \n \n );\n};\n","import { useMemo } from 'react';\n\nimport { getABNVariant } from '~/src/helpers/abn-tests';\n\nexport const usePassportUpdate = () => {\n return useMemo(() => getABNVariant('use_passport_update') === 'on_use_passport_update', []);\n};\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled from 'styled-components';\n\nimport GridContainer from '@r1-frontend/ui-react/components/layouts/gridContainer';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { TariffCardPlug } from '~/src/components/TariffCardPlug';\n\nexport const breakpoints = {\n desktop: '1599px',\n sDesktop: '1365px',\n tablet: '1122px',\n mobile: '768px',\n sMobile: '350px',\n};\n\nexport const Wrapper = styled.div`\n display: block;\n overflow: hidden;\n width: 100%;\n padding: 0 90px;\n background: #fff;\n \n @media (max-width: ${breakpoints.tablet}) {\n padding: 0 0 0 16px;\n }\n \n @media (max-width: ${breakpoints.mobile}) {\n padding: 0;\n }\n`;\n\nexport const Container = styled(GridContainer)`\n flex-direction: column;\n \n @media (max-width: 1599px) {\n width: 100%;\n max-width: 1360px;\n padding: 0;\n }\n\n @media (max-width: ${breakpoints.mobile}) {\n padding: 0 16px;\n }\n`;\n\nexport const FormBlock = styled.div`\n width: 100%;\n \n @media (min-width: ${wideBreakpoints.mobile}) and (max-width: ${wideBreakpoints.laptop}) {\n padding-right: 16px;\n }\n}\n`;\n\nexport const Grid = styled.div`\n display: flex;\n`;\n\nexport const STariffCardPlug = styled(TariffCardPlug)`\n margin-top: 24px;\n`;\n\nexport const IncludesPopup = styled(DefaultPopup)`\n width: 600px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n min-height: auto;\n`;\n\nexport const ImageBlock = styled(LazyLoadImage)<{ src: string }>`\n width: 100%;\n background-size: cover;\n border-radius: ${BorderRadius.InnerBlockRadius};\n`;\n\nexport const PopupInner = styled.div`\n padding: 32px;\n flex-direction: column;\n`;\n\n// @todo use @r1-frontend/ui-react/typography/heading\nexport const PopupTitle = styled.div`\n ${FONTS.H3}\n margin-bottom: 8px;\n`;\n\n// @todo use @r1-frontend/ui-react/typography/paragraph\nexport const PopupDescription = styled.div`\n ${FONTS.S}\n display: block;\n & ul li{\n background-image: url('/static/images/tariff-lines/list-style.png');\n background-repeat: no-repeat;\n padding-left: 45px;\n min-height: 40px;\n margin-bottom: 8px;\n line-height: 40px;\n }\n \n & ol {\n list-style: auto;\n padding-left: 20px;\n }\n`;\n\nexport const PopupButtonBlock = styled.div`\n flex-direction: row;\n margin-top: 16px;\n & button:first-child{\n margin-right: 16px;\n }\n \n @media (max-width: ${breakpoints.mobile}) {\n & button{\n width: 100%;\n }\n & button:first-child{\n margin-right: 0;\n margin-bottom: 16px;\n }\n }\n`;\n","import { getABNVariant, getABNVariantFrom } from '~/src/helpers/abn-tests';\n\nconst AUTHORIZATION_SSO = {\n testName: 'authorization_sso',\n variants: {\n on: 'authorization_sso_on',\n off: 'authorization_sso_off',\n },\n};\n\nconst isSso = (abnTests?: string, defaultVariants?: string) => abnTests\n ? getABNVariantFrom(AUTHORIZATION_SSO.testName, abnTests, defaultVariants) === AUTHORIZATION_SSO.variants.on\n : getABNVariant(AUTHORIZATION_SSO.testName) === AUTHORIZATION_SSO.variants.on;\n\nexport default isSso;\n","import { dataLayerPush, TDataLayerPushArgument } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { getDataStatus } from '~/src/helpers/functions';\n\ninterface IData {\n action?: string,\n requestId?: number | null,\n isPopup?: boolean,\n option?: string,\n label?: string,\n uid?: number | null,\n}\n\nexport interface IDataLayerPushUid extends TDataLayerPushArgument {\n uid?: number | null,\n}\n\ninterface IFormat {\n requestId: number | null,\n isPopup?: boolean,\n action: string,\n option?: string,\n}\n\ninterface IDataLayerForCBPhonePushWrapper {\n status: number,\n message?: string,\n isPopup?: boolean,\n option?: string,\n uid?: number | null,\n label?: string,\n}\n\n/**\n * Возвращает свойство label в нужном формате с данными\n *\n * @function\n * @name helpers.getFormattedLabel\n * @param {number | null} requestId - id ответа запроса\n * @param {boolean} isPopup - место вызова\n * @param {string} action - тип действия события\n * @param {string} option - дополнительные свойства события как название акции/партнёрского сервиса/продукта и тд.\n * @returns {string | null}\n */\nexport const getFormattedLabel = ({ isPopup, requestId, option, action }: IFormat): string | null => {\n let id: null | string = '';\n let result = '';\n if (action === ACTIONS.finished) {\n id = (typeof requestId === 'number' || null) && String(requestId);\n }\n\n if (isPopup) {\n result = 'popup';\n }\n\n if (option) {\n result += `${isPopup ? ' | ' : ''}${option}`;\n }\n\n return result + `${result && id ? ` | ${id}` : id ? id : ''}`;\n};\n\n/**\n * Создает событие для аналитики типа UAevent - finished/error/started\n *\n * @function\n * @name helpers.dataLayerForCBPhonePush\n * @param {string} action - тип действия события\n * @param {number | null} requestId - id ответа запроса\n * @param {boolean} isPopup - место вызова\n * @param {string} option - дополнительные свойства события как название акции/партнёрского сервиса/продукта и тд.\n * @returns void\n */\nexport const dataLayerForCBPhonePush = ({\n action = '',\n label,\n requestId = null,\n isPopup = false,\n option,\n uid,\n}: IData): void => {\n const actionWrap = action || (requestId ? ACTIONS.finished : ACTIONS.error);\n\n if (uid) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.applicationForm,\n action: actionWrap,\n label: label || getFormattedLabel({ isPopup, requestId, option, action: actionWrap }),\n uid,\n } as unknown as IDataLayerPushUid);\n } else {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.applicationForm,\n action: actionWrap,\n label: label || getFormattedLabel({ isPopup, requestId, option, action: actionWrap }) || '',\n });\n }\n};\n\nexport const dataLayerForCBPhonePushWrapper = ({ status, label, isPopup, option, uid }: IDataLayerForCBPhonePushWrapper): void => {\n const { ok } = getDataStatus(status);\n\n dataLayerForCBPhonePush({\n action: ok ? ACTIONS.finished : ACTIONS.error,\n label,\n isPopup,\n option,\n uid,\n });\n};\n\n/**\n * Отправляет событие VAS\n *\n * @function\n * @name helpers.sendVasGA\n * @param {string} action - дополнительный action\n * @param {string} label - label\n * @returns void\n */\nexport const sendVasGA = (action: string, label?: string): void => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.vas,\n action,\n label,\n });\n};\n\n/**\n * Создает функцию для отпрвки события с дополнительным label\n * example: 'partner services:'\n *\n * @function\n * @name helpers.createSendVasGA\n * @param {string} additionalLabel - дополнительный label\n * @returns void\n */\nexport const createSendVasGA = (additionalLabel: string) => (action: string, label?: string): void => {\n sendVasGA(action, label && [additionalLabel, label].join(' '));\n};\n\n/**\n * Разделение пользователей заказа обратного звонка GA\n *\n * @function\n * @name helpers.divideUsersGA\n * @param {string} orderType - статус заявки\n * @param {string} isAuth - авторизованная/неавторизованная зона\n * @returns string\n */\nexport const divideUsersGA = (orderType: string | boolean, isAuth: boolean): string => {\n const resultForAuth = orderType ? ACTIONS.orderEquip : ACTIONS.errorEquip;\n const resultForNotAuth = orderType ? ACTIONS.finished : ACTIONS.error;\n return isAuth ? resultForAuth : resultForNotAuth;\n};\n","/**\n * Разбивает строку с домом на номер дома и корпуса\n * @param {string} [house='2б']\n * @return {object}\n */\nexport const dissectHouse = house => {\n house = house ?? '';\n\n const build = {\n house_num: null,\n house_build: null,\n };\n const arr = house.split('/');\n\n if (arr.length === 2) {\n build.house_num = arr[0];\n build.house_build = arr[1];\n } else {\n build.house_num = parseInt(house);\n build.house_build = house.replace(new RegExp(`${build.house_num}|[\\\\-\\s]`, 'gi'), '');\n }\n\n // TODO: временный фикс для биллинга, если нет значения то хотя бы пробел. В конце значения пробел не мешает\n build.house_build += ' ';\n\n return build;\n};\n\n/**\n * Форматируем объект для value в react-select\n * @param {object} object входной объект\n * @param {string} [valueKey='value'] ключь значения в входном объекте\n * @param {string} [labelKey='label'] ключь лейбла в входном объекте\n * @return {object}\n */\nexport const toSelectOption = ({ object, valueKey = 'value', labelKey = 'label' }) => ({\n value: object[valueKey],\n label: object[labelKey],\n});\nexport const toSelectOptionWithProvider = ({ object, valueKey = 'value', labelKey = 'label' }) => ({\n value: { valueKey: object[valueKey], providerId: object['provider_id'] },\n label: object[labelKey],\n});\n\n/**\n * Форматируем массив объектов для options в react-select\n * @param {array} array входной массив объектов\n * @param {object} keys объект ключей для метода toSelectOption\n * @return {array}\n */\nexport const toSelectOptions = ({ array, keys }) => array.map(object => toSelectOption({\n object,\n ...keys,\n}));\nexport const toSelectOptionsWithProvider = ({ array, keys }) => array.map(object => toSelectOptionWithProvider({\n object,\n ...keys,\n}));\n\n\n/**\n * фильтруем уникальные значения массива\n * @param arr\n * @returns {string[]}\n */\nexport const uniqueArrItems = (arr) => {\n const obj = {};\n\n for (var i = 0; i < arr.length; i++) {\n const str = arr[i];\n obj[str] = true; // запомнить строку в виде свойства объекта\n }\n\n return Object.keys(obj); // или собрать ключи перебором для IE8-\n};\n\n/**\n * форматирование даты для вывода 2019-06-07 => 07.06.2019\n * @param date\n * @returns {*}\n */\nexport const showFormatDate = (date) => {\n return date.split('-').reverse().join('.');\n};\n","import { ERequestStatus } from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\ninterface ISortable {\n sort: number | null | undefined,\n requestId?: number,\n}\n\nenum ESortResult {\n FIRST_PARAMETER_BEFORE = -1,\n EQUALS = 0,\n FIRST_PARAMETER_AFTER = 1,\n}\n\nexport function sortFunction(first: ISortable, second: ISortable): ESortResult {\n if (first.sort === second.sort) {\n return ESortResult.EQUALS;\n }\n\n if (first.sort === null || first.sort === undefined) {\n return ESortResult.FIRST_PARAMETER_AFTER;\n }\n\n if (second.sort === null || second.sort === undefined) {\n return ESortResult.FIRST_PARAMETER_BEFORE;\n }\n\n if (first.sort < second.sort) {\n return ESortResult.FIRST_PARAMETER_BEFORE;\n } else if (first.sort > second.sort) {\n return ESortResult.FIRST_PARAMETER_AFTER;\n }\n\n return ESortResult.EQUALS;\n}\n\nexport function sortFunctionWithRequestIdOnTop(first: ISortable, second: ISortable): ESortResult {\n if (first.requestId && !second.requestId) {\n return ESortResult.FIRST_PARAMETER_BEFORE;\n }\n\n if (!first.requestId && second.requestId) {\n return ESortResult.FIRST_PARAMETER_AFTER;\n }\n\n return sortFunction(first, second);\n}\n\n/**\n * По биллинг коду возвращает статус заявки\n *\n * @param {number} status\n * @returns {{ status: string, ok: boolean}}\n */\nexport const getDataStatus = (status: number): { status: ERequestStatus, ok: boolean } => {\n return {\n status: status ? ERequestStatus.success : ERequestStatus.error,\n ok: !!status,\n };\n};\n\nexport const retryIfParamIsLocked = (\n fn: () => Promise,\n maxRetries = 10,\n timeOut = 1000,\n): Promise => {\n return fn()\n .catch((err) => {\n if (maxRetries <= 0 || (err.response?.data?.message || '').indexOf('PARAM_IS_LOCKED') === -1) {\n throw err;\n }\n\n return new Promise(resolve => setTimeout(() => resolve(retryIfParamIsLocked(fn, maxRetries - 1)), timeOut));\n });\n};\n","import { useEffect } from 'react';\n\n/**\n * Кастомный хук useEffect - подписывает/отписывает события клика\n *\n * @function\n * @name hooks.useClickOutside\n * @returns {void}\n */\nexport function useClickOutside(isHidden: boolean, hideHandler: (ev: PointerEvent) => void): void {\n return useEffect(() => {\n if (!isHidden) {\n // options = true необходимо для срабытвания клика раньше SyntheticEvent\n document.addEventListener('pointerdown', hideHandler, true);\n }\n return () => document.removeEventListener('pointerdown', hideHandler, true);\n }, [hideHandler, isHidden]);\n}\n\n","import { getABNVariant } from '~/src/helpers/abn-tests';\n\nconst HIDING_LEAD_GENERATION = {\n testName: 'hiding_lead_generation',\n variants: {\n NEW: 'website_without_callback',\n OLD: 'website_with_callback',\n },\n};\nexport const isLeadGenerationHide = (): boolean => getABNVariant(HIDING_LEAD_GENERATION.testName) === HIDING_LEAD_GENERATION.variants.NEW;\n","import { ANDROID_LINK, DEEPLINK, DEFAULT_LINK,\nIPHONE_LINK, MOBILE_MARKETS, MOBILE_OS } from '~/src/constants';\nimport { getUrlString } from '~/src/helpers/url';\n\nexport const getMobileLink = (accessToken, refreshToken, agreement, city, mobileOs) => {\n let link;\n switch (mobileOs) {\n case MOBILE_OS.iphone:\n link = getIosMobileLink(accessToken, refreshToken, agreement, city);\n break;\n case MOBILE_OS.android:\n link = getAndroidMobileLink(accessToken, refreshToken, agreement, city);\n break;\n default:\n link = getDetectMobileLink(accessToken, refreshToken, agreement, city);\n }\n\n return link;\n};\n\nexport const getDetectMobileLink = (accessToken, refreshToken, agreement, city) => {\n let link;\n if (accessToken && (isAndroid() || isIphone())) {\n const queryParam = {\n token: accessToken,\n refresh_token: refreshToken,\n agreement_number: agreement,\n city_id : city.cityId,\n };\n const queryString = getUrlString(queryParam);\n link = DEEPLINK +\n window.location.href + '?' +\n encodeURIComponent(queryString) + '&' +\n getUrlString(MOBILE_MARKETS);\n } else if (isAndroid()) {\n link = ANDROID_LINK;\n } else if (isIphone()) {\n link = IPHONE_LINK;\n } else {\n link = DEFAULT_LINK;\n }\n return link;\n};\n\nexport const getAndroidMobileLink = (accessToken, refreshToken, agreement, city) => {\n let link;\n if (accessToken && isAndroid()) {\n const queryParam = {\n token: accessToken,\n refresh_token: refreshToken,\n agreement_number: agreement,\n city_id : city.cityId,\n };\n const queryString = getUrlString(queryParam);\n link = DEEPLINK +\n window.location.href + '?' +\n encodeURIComponent(queryString) + '&' +\n getUrlString(MOBILE_MARKETS);\n } else {\n link = ANDROID_LINK;\n }\n return link;\n};\n\nexport const getIosMobileLink = (accessToken, refreshToken, agreement, city) => {\n let link;\n if (accessToken && isIphone()) {\n const queryParam = {\n token: accessToken,\n refresh_token: refreshToken,\n agreement_number: agreement,\n city_id : city.cityId,\n };\n const queryString = getUrlString(queryParam);\n link = DEEPLINK +\n window.location.href + '?' +\n encodeURIComponent(queryString) + '&' +\n getUrlString(MOBILE_MARKETS);\n } else {\n link = IPHONE_LINK;\n }\n return link;\n};\n\nexport const isAndroid = () => {\n return window.navigator.userAgent.match(/Android/i);\n};\n\nexport const isMacOS = () => {\n return window.navigator.userAgent.match(/Mac OS/i);\n};\n\nexport const isIphone = () => {\n return window.navigator.userAgent.match(/iPhone/i) ||\n window.navigator.userAgent.match(/iPod/i) ||\n window.navigator.userAgent.match(/iPad/i);\n};\n\nexport const isMobile = () => {\n return window.navigator.userAgent.match(/Android/i) ||\n window.navigator.userAgent.match(/webOS/i) ||\n window.navigator.userAgent.match(/iPhone/i) ||\n window.navigator.userAgent.match(/iPod/i) ||\n window.navigator.userAgent.match(/iPad/i) ||\n window.navigator.userAgent.match(/BlackBerry/i) ||\n window.navigator.userAgent.match(/Windows Phone/i);\n};\n\nexport const isPlayStation = () => {\n return window.navigator.userAgent.match(/PlayStation/i);\n};\n","import React, { useEffect, useState } from 'react';\n\nconst NoSSR = ({ children }) => {\n const [isBrowser, setIsBrowser] = useState(false);\n\n useEffect(() => {\n setIsBrowser(true);\n }, []);\n\n return isBrowser ? children : <>;\n};\n\nexport default NoSSR;\n","import { IncomingMessage, ServerResponse } from 'http';\nimport Router from 'next/router';\n\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\ninterface IRequest extends IncomingMessage {\n query?: string,\n}\n\ninterface NextApiResponseWithReq extends ServerResponse {\n req: IRequest,\n}\n\ninterface IRedirectingService {\n location: string,\n res?: NextApiResponseWithReq,\n httpCode: number,\n}\n\n/* @deprecated use nonPermanentRedirect or permanentRedirect */\nconst redirectingService = ({ res, location, httpCode }: IRedirectingService): void => {\n if (res && isServerSide()) {\n const { req } = res;\n if (req) {\n const { query } = req;\n\n const queryParams = (new URLSearchParams(query)).toString();\n const Location = queryParams ? `${location}?${queryParams}` : location;\n\n res.writeHead(httpCode, { Location });\n res.end();\n }\n } else {\n Router.push(location);\n }\n};\n\ntype TRedirectServiceWithCode = Omit;\n\n// для страницы, которая переехала навсегда\nexport const permanentRedirect = ({ res, location }: TRedirectServiceWithCode) => redirectingService({\n res,\n location,\n httpCode: 301,\n});\n\n// временная мера для перенаправления\nexport const nonPermanentRedirect = ({ res, location }: TRedirectServiceWithCode) => redirectingService({\n res,\n location,\n httpCode: 302,\n});\n","import { WorkerLocation } from '@sentry/types';\n\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nexport const getHostNameFromUrl = (url: Location | string): string => {\n const urlRegExp = /(.+:\\/\\/)?([^/]+)(\\/.*)*/i;\n\n const urlParts = urlRegExp.exec(url.toString());\n\n if (!urlParts || urlParts.length < 4) {\n return '';\n }\n\n return urlParts[2];\n};\n\nexport const getUrlParams = (query: Location | WorkerLocation): Record => {\n const search = query.search.substr(1);\n const query_string: Record = {};\n if (search) {\n let keyValuePair, paramName, paramValue;\n const str = search.split('#')[0];\n const params = str.split('&');\n\n for (let i = 0; i < params.length; i++) {\n keyValuePair = params[i].split('=');\n paramName = keyValuePair.shift() || '';\n paramValue = keyValuePair.join('=') || '';\n query_string[paramName] = decodeURIComponent(paramValue.replace(/\\+/g, ' '));\n }\n }\n return query_string;\n};\n\nexport const getUrlString = (params: Record): string => {\n const urlParams = Object.keys(params).map(key => {\n return `${key}=${params[key]}`;\n });\n return urlParams.length ? `${urlParams.join('&')}` : '';\n};\n\nexport const hasStrInUrl = (str: string): boolean => {\n if (isServerSide()) {\n return false;\n }\n\n const href = window?.location?.href;\n return href ? href.includes(str) : false;\n};\n\nexport const isValidLink = (urlString: string): boolean => {\n let url: URL;\n const isProtocol = urlString.match(/http[s]?/gi);\n if (isProtocol !== null && isProtocol?.length !== 1) {\n return false;\n }\n try {\n url = new URL(urlString);\n const isSpace = url.host.match(/\\s[[:space:]]/g);\n if (isSpace?.length) {\n return false;\n }\n const lastLetter = url.host.slice(-1);\n const isSymbols = lastLetter.match(/[^a-z0-9]/gi);\n return !isSymbols?.length;\n } catch (e) {\n return false;\n }\n};\n\nexport { nonPermanentRedirect, permanentRedirect } from './redirects';\n","import { doRequest } from '@r1-frontend/do-request';\nimport { getInfoAll } from '@r1-frontend/api-domru/api-profile/v2/info/all';\nimport { ResponseContactDto } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { getAgreementNumber } from '@r1-frontend/shared/helpers/getAgreementNumber';\n\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport { clientContactsLoading, setClientContacts } from '~/src/store/actionCreators/auth';\nimport { logout } from '~/src/store/actions/auth/logout';\nimport { parseContacts } from '~/src/store/actions/clientInfo';\n\nexport function getClientContacts() {\n return async(dispatch: TAppThunkDispatch, getState: TGetState) => {\n const state = getState();\n if (!state.auth.isAuth) {\n return;\n }\n if (state.auth.isClientContactsLoading) {\n return;\n }\n\n const providerId = state.city.provider.providerId;\n const accessToken = state.auth.accessToken;\n const agreementNumber = getAgreementNumber();\n\n const resp = await doRequest.apiProfile(\n getInfoAll(providerId, accessToken, agreementNumber, ['contacts']),\n );\n if (resp.isSuccess) {\n const { contacts } = resp.payload;\n dispatch(setClientContacts(parseContacts(contacts)));\n } else if (resp.error.code.toString() === '401') {\n dispatch(logout());\n }\n\n dispatch(clientContactsLoading(false));\n };\n}\n","import { captureMessage, Severity } from '@sentry/node';\nimport { Response } from 'express';\n\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { USER_LOGOUT_ROUTE } from '~/src/constants/routes';\n\n// todo: переделать чтобы это был не action\nexport const logout = (res?: Response) => {\n return () => {\n if (isServerSide()) {\n if (!res) {\n captureMessage(\n 'функция auth.logout была вызвана без параметра Response на серверной стороне',\n { level: Severity.Error },\n );\n console.error('функция auth.logout была вызвана без параметра Response на серверной стороне');\n return;\n }\n\n res.redirect(`${USER_LOGOUT_ROUTE}?referrer=${res.req.url}`);\n } else {\n window.location.replace(`${USER_LOGOUT_ROUTE}?referrer=${location.href}`);\n }\n };\n};\n","import { CLOSE_CHAT, LOADED_CHAT, OPEN_CHAT } from '../actionTypes/chat';\n\nexport const openChat = () => ({\n type: OPEN_CHAT,\n});\n\nexport const closeChat = () => ({\n type: CLOSE_CHAT,\n});\n\nexport const loadedChat = payload => ({\n type: LOADED_CHAT,\n payload,\n});\n","import { batch } from 'react-redux';\nimport { Response } from 'express';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { getInfoAll } from '@r1-frontend/api-domru/api-profile/v2/info/all';\nimport { ResponseContactDto } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { getAgreementNumber } from '@r1-frontend/shared/helpers/getAgreementNumber';\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport {\n setClientContacts,\n setClientPayment,\n setClientPersonal,\n setClientProducts,\n setErrorClientPayment,\n setFetchClientPayment,\n} from '~/src/store/actionCreators/auth';\nimport { logout } from '~/src/store/actions/auth/logout';\nimport { IClientContacts } from '~/src/store/reducers/auth';\n\nimport selectProviderId from '../selectors/selectProviderId';\n\nexport const parseContacts = (_contacts: ResponseContactDto['contacts']): IClientContacts => {\n const { contacts } = _contacts;\n return {\n email: contacts.email.map((el) => ({\n ...el,\n value: el.contactValue,\n })),\n phone: contacts.phone.map((el) => ({\n ...el,\n value: el.contactValue,\n })),\n };\n};\n\n\n/**\n * Информация о клиенте\n */\nexport const fetchClientInfo = (response?: Response, agreementNumber?: string) => {\n return async(dispatch: TAppThunkDispatch, getState: TGetState) => {\n const state = getState();\n\n const providerId = selectProviderId(state);\n const accessToken = state.auth.accessToken;\n const isFetching = state.auth.clientPaymentFetching;\n const agreement = agreementNumber || getAgreementNumber();\n\n if (!providerId || !accessToken || isFetching) {\n return;\n }\n\n dispatch(setFetchClientPayment(true));\n\n const resp = await doRequest.apiProfile(\n getInfoAll(providerId, accessToken, agreement, ['personal', 'payment', 'products', 'contacts']),\n );\n\n if (resp.isSuccess) {\n const { personal, payment, products, contacts } = resp.payload;\n\n batch(() => {\n dispatch(setClientPersonal(personal));\n dispatch(setClientPayment(payment));\n dispatch(setClientProducts(products));\n dispatch(setClientContacts(parseContacts(contacts)));\n });\n } else {\n if (resp.error.code.toString() === '401') {\n dispatch(logout(response));\n return;\n }\n\n if (isServerSide()) {\n console.log(JSON.stringify({ event: 'Ошибка при вызове getInfoAll', ...resp.error }));\n }\n }\n\n dispatch(setErrorClientPayment(false));\n };\n};\n","import cookie from 'react-cookies';\n\nimport { ICurrentCity } from '@r1-frontend/entities/City/models/ICurrentCity';\n\nimport { COOKIE_DOMAIN, COOKIE_MAX_AGE_LONG, PLANK_COOKIE } from '~/src/constants';\nimport { getMobileLink } from '~/src/helpers/mobile';\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport { PLANK_IS_HIDDEN, PLANK_IS_SHOWN, PLANK_MOBILE_LINK_AND_TYPE } from '~/src/store/actionTypes/plank';\n\nexport const hidePlank = () => ({\n type: PLANK_IS_HIDDEN,\n});\n\nexport const setPlankCookieAndClose = () => {\n return (dispatch: TAppThunkDispatch): void => {\n cookie.save(\n PLANK_COOKIE,\n 1,\n {\n maxAge:COOKIE_MAX_AGE_LONG,\n domain:COOKIE_DOMAIN,\n path: '/',\n },\n );\n dispatch(hidePlank());\n };\n};\n\nconst location = [\n '/',\n '/user/login',\n '/payments',\n '/payments/lost',\n '/promo',\n '/action/pr',\n '/lk/feedback',\n '/service/contact',\n '/service/agent',\n '/service/document',\n '/service/helper',\n];\n\nexport const smartHomeLocations = [\n '/domofon',\n '/videocontrol',\n '/payments/keys',\n];\n\nexport const excludeLocations = [\n '/speed-test',\n];\n\ninterface IMobileLinkAndPlankType {\n accessToken: string,\n refreshToken: string,\n agreement: number | undefined,\n currentCity: ICurrentCity,\n pathname: string,\n domain: string,\n}\n\nconst setMobileLinkAndPlankType = ({\n accessToken,\n refreshToken,\n agreement,\n currentCity,\n pathname,\n domain,\n}: IMobileLinkAndPlankType) => {\n return (dispatch: TAppThunkDispatch) => {\n const mobileLink = !smartHomeLocations.includes(pathname)\n ? getMobileLink(accessToken, refreshToken, agreement, currentCity)\n : null;\n\n const plankType = (smartHomeLocations.includes(pathname)\n ? ({\n headerText: 'Умный Дом.ру',\n text: 'Управляйте домом в приложении',\n href: 'https://qr.dom.ru/domofon',\n linkName: 'Открыть',\n pic: 'static/images/domofon/AppIcon.png',\n domain,\n })\n : undefined);\n dispatch({\n type: PLANK_MOBILE_LINK_AND_TYPE,\n payload: { mobileLink, plankType },\n });\n };\n};\n\nconst getHasNotNotificationMobileAppCookie = () => !cookie.load(PLANK_COOKIE);\nconst getIsNotExcludePath = (pathname: string) => !excludeLocations.includes(pathname);\n\nexport const getIsActiveByTerms = ({ search, pathname }: { search: string, pathname: string }) => {\n const params = new URLSearchParams(search);\n const utmSource = params.has('utm_source');\n\n return getHasNotNotificationMobileAppCookie() && !utmSource && getIsNotExcludePath(pathname);\n};\nexport const getIsLocationByTerms = (pathname: string) => {\n return location.includes(pathname) || smartHomeLocations.includes(pathname);\n};\n\nexport const initPlankStatus = ({ asPath, pathname }: { asPath: string, pathname: string }) => {\n return (dispatch: TAppThunkDispatch, getState: TGetState): void => {\n const state = getState();\n const { city: { currentCity }, auth: { isAuth, refreshToken, accessToken, clientPersonal } } = state;\n\n const { domain } = currentCity;\n const agreement = clientPersonal?.agreement;\n dispatch(setMobileLinkAndPlankType({ accessToken, refreshToken, agreement, currentCity, pathname, domain }));\n\n const isActiveByTerms = getIsActiveByTerms({ search: asPath, pathname });\n const isLocationByTerm = getIsLocationByTerms(pathname);\n\n if (isActiveByTerms && (isAuth || isLocationByTerm)) {\n dispatch({\n type: PLANK_IS_SHOWN,\n });\n return;\n }\n dispatch(hidePlank());\n };\n};\n","import { TState } from '~/src/store';\n\nexport const selectAccessToken = (state: TState) => {\n return state.auth.accessToken;\n};\n\nexport const selectHasAuthorization = (state: TState) => {\n return !!state.auth.accessToken;\n};\n","import { TState } from '~/src/store';\n\nexport const selectCsrf = (state: TState) => {\n return state.auth.csrf || '';\n};\n","import { createSelector } from 'reselect';\n\nimport { ICurrentCity } from '@r1-frontend/entities/City/models/ICurrentCity';\n\nimport { toSelectOption, toSelectOptions, toSelectOptionsWithProvider } from '~/src/helpers/form';\nimport { TState } from '~/src/store';\n\nconst getCities = ({ state }: { state: TState }) => {\n const { citiesList } = state?.city || {};\n return citiesList || [];\n};\n\nconst getCity = ({ state }: { state: TState }): ICurrentCity => {\n const { currentCity } = state?.city || {};\n return currentCity || null;\n};\n\nexport const getHostname = (state: TState): string => {\n const { hostname } = state?.city?.currentCity || window.location.hostname;\n return hostname || '';\n};\n\nexport const getCurrentCity = (state: TState): ICurrentCity => {\n return getCity({ state });\n};\n\nexport function getCurrentCityIn(state: TState): string | undefined {\n return getCurrentCity(state)?.cityIn;\n}\n\nexport const citiesListForHeader = createSelector(\n [getCities],\n cities => cities.map(city => ({\n cityId: city.city_id,\n domain: city.domain,\n name: city.name,\n phone: city.phone_code === '0' ? city.sale_phone : `+7 (${city.phone_code}) ${city.sale_phone}`,\n callCenter: city.call_center_phone.length > 10 ? city.call_center_phone : `+7 (${city.phone_code}) ${city.call_center_phone}`,\n billingHost: city.billing_host,\n cityIn: city.pred_name,\n prefixAgreement: city.prefix_agreement,\n })),\n);\n\nconst getOptionKeys = ({ optionKeys }: { optionKeys: Record }) => optionKeys;\n\nexport const selectCurrentCityOptions = createSelector(\n [getCity, getOptionKeys],\n (object, keys) => toSelectOption({ object, ...keys }),\n);\n\n/**\n Возвращает массив объектов типа {value: 'angarsk', label: 'Ангарск'} из списка городов\n*/\nexport const selectCitiesOptions = createSelector(\n [getCities, getOptionKeys],\n (array, keys) => toSelectOptions({ array, keys }),\n);\n/**\n Возвращает массив объектов типа {value: { domain:'angarsk', providerId: 47}, label: 'Ангарск'} из списка городов\n*/\nexport const selectCitiesOptionWithProvider = createSelector(\n [getCities, getOptionKeys],\n (array, keys) => toSelectOptionsWithProvider({ array, keys }),\n);\n\nexport function selectCurrentCityDomain(state: TState): string {\n return state?.city?.currentCity?.domain;\n}\n\n/**\n * Получение электронной почты для контактов.\n * todo на данный момент нет источника получения почты с бека (в модели города в контенте отсутствует такое поле)\n * todo когда появится - доработать селектор\n * @param {TState} state\n * @return {string}\n */\nexport function selectContactEmail(state: TState): string {\n // для кобренда Rinet (Кроникс Плюс)\n if (state?.city?.provider.providerId === 41) {\n return 'client_rinetdomru@domru.ru';\n } else {\n return 'help@domru.ru';\n }\n}\n\n/**\n * Получение текущего названия компании. Вернет 'Дом.ру' если значение не задано в контенте.\n * @param {TState} state\n * @return {string}\n */\nexport function selectCompanyName(state: TState): string {\n return state.city.currentCity.companyName || 'Дом.ру';\n}\n\nexport interface ICityLogo {\n /**\n * Стандартный, полный логотип.\n */\n full: string,\n /**\n * Сокращенный вариант логотипа.\n */\n narrow: string,\n}\n\n/**\n * Получение путей до логотипов города.\n * @param {TState} state\n * @return {ICityLogo}\n */\nexport function selectCityLogo(state: TState): ICityLogo {\n const fallBackLogo = '/static/images/domru.svg';\n\n return {\n full: state?.city?.currentCity?.logoFull || fallBackLogo,\n narrow: state?.city?.currentCity?.logo_narrow || fallBackLogo,\n };\n}\n\n/**\n * Получение названия юридического лица города.\n * @param {TState} state\n * @return {string}\n */\nexport function selectLegalEntity(state: TState): string {\n return state?.city?.currentCity?.legalEntity ? state.city.currentCity.legalEntity : 'АО «ЭР-Телеком Холдинг»';\n}\n\nexport const selectCurrentCityPhone = createSelector(\n getCurrentCity,\n (city) => {\n const { callCenter, phoneCode } = city || {};\n const callCenterNumber = callCenter?.replace(/\\D/g, '');\n const href = `tel:+${callCenterNumber}`;\n const hasPhoneData = callCenterNumber?.replace(`7${phoneCode}`, '') !== '';\n\n return { callCenterNumber, href, hasPhoneData, callCenter };\n },\n);\n","import { createSelector } from 'reselect';\n\nimport { IMenuByTypesItem, TMenuKey as TMenuKeyFromResponse } from '@r1-frontend/api-domru/api-content/v2/menu/by-types';\n\nimport { TState } from '~/src/store';\nimport { TAuthorisationDependentMenuKey } from '~/src/store/reducers/menu';\n\ntype THeaderMenuKey = Exclude;\n\nexport type IHeaderMenuItems = Record\n\nexport const selectNewMenuItems = (state: TState) => state.menu.newMenuItems;\nconst selectPartners = createSelector(selectNewMenuItems, menuItems => menuItems?.partners || []);\nconst selectService = createSelector(selectNewMenuItems, menuItems => menuItems?.service || []);\nexport const selectWebUnderMenu = createSelector(selectNewMenuItems, menuItems => menuItems?.WebUnderMenu || []);\n\nexport const selectHasMenu = createSelector(selectNewMenuItems, menuItems => !!menuItems);\n\nconst selectMenuItems = (menuKey: TAuthorisationDependentMenuKey) => createSelector(\n selectNewMenuItems,\n selectPartners,\n selectService,\n (menuItems, partners, service): IHeaderMenuItems => {\n return {\n main: menuItems ? menuItems[menuKey] ?? [] : [],\n partners,\n service,\n };\n },\n);\n\nexport const selectAuthMenu = selectMenuItems('authMain');\n\nexport const selectUnauthMenu = selectMenuItems('unauthMain');\n","import { IExtendedEvent, IRequestConfig } from '../types';\n\nconst requestUrl = {\n development: 'https://master.api-campaign.sandbox.d2c.r-one.io',\n production: 'https://api-campaign.web-api.dom.ru',\n};\n\ntype TRequestProps = Required> & {\n events: IExtendedEvent[],\n}\n\nexport const postEvents = async({ agreementNumber, environment, events }: TRequestProps): Promise => {\n const baseUrl = environment === 'production' ? requestUrl.production : requestUrl.development;\n\n await fetch(`${baseUrl}/api/v1/analytics/events`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'agreementNumber': `${agreementNumber}`,\n },\n body: JSON.stringify({ events }),\n });\n};\n","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport { IEvent, ILayer, IRequestConfig } from '../types';\n\nimport { postEvents } from './postEvents';\n\ndayjs.extend(utc);\n\nconst intervalDelay = 5000;\n\nexport const layer: ILayer = {\n environment: 'production',\n debug: false,\n events: [],\n push(event: IEvent) {\n const date = dayjs.utc().format('YYYY-MM-DD HH:mm:ss');\n const place = window?.location.pathname ?? '';\n\n this.events.push({ ...event, date, place });\n\n if (this.debug) {\n console.log(`event pushed at ${date}`);\n }\n },\n init(config: IRequestConfig) {\n const { agreementNumber, onError, environment = 'production', debug = false } = config;\n\n this.environment = environment;\n this.debug = debug;\n\n setInterval(\n (self => {\n return () => {\n if (self.events.length) {\n const eventsClone = [...self.events];\n\n // считается самым быстрым способом очистить массив\n while (self.events.length > 0) {\n self.events.pop();\n }\n\n (async() => {\n try {\n await postEvents({ agreementNumber, environment, events: eventsClone });\n\n if (debug) {\n console.log('events posted');\n }\n } catch (error) {\n onError(error);\n this.events = [...self.events, ...eventsClone];\n }\n })();\n }\n };\n })(this),\n intervalDelay,\n );\n },\n};\n","import { captureException, Severity } from '@sentry/node';\n\nexport const defaultErrorHandler = (error: unknown) => {\n captureException(error, {\n level: Severity.Warning,\n tags: {\n place: 'failed to post api-campaign events',\n isSsr: false,\n },\n });\n};\n","import { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { layer } from './lib/main';\n\nexport { defaultErrorHandler } from './lib/defaultErrorHandler';\nexport type { IEvent } from './types';\nexport type { IRequestConfig } from './types';\n\nexport const init = layer.init.bind(layer);\nexport const push = layer.push.bind(layer);\n\nif (isClientSide()) {\n window.campaignLayer = layer;\n}\n","import cookie from 'cookie';\n\nexport type TDataLayerPushArgument = {\n event: string,\n ecommerce?: TEcommerceProps,\n category: string,\n action: string,\n label?: string,\n ABNtest?: string,\n}\n\ntype TDataLayerWindow = Window & typeof globalThis & {\n dataLayer: Array,\n}\n\n/**\n * Отправка события в GA\n * @example\n * dataLayerPush({event: 'UAevent', category: 'sale', action: 'get gift'});\n */\nexport const dataLayerPush = ({ label = '', ...params }: TDataLayerPushArgument): void => {\n if (typeof window === 'undefined') {\n throw new Error('The dataLayerPush function must not be used on the backend side.');\n }\n\n if (!('dataLayer' in window)) {\n (window as TDataLayerWindow).dataLayer = [];\n }\n\n window.dataLayer.push({\n ...params,\n 'ABNtest': cookie.parse(document.cookie)['abn_variant'],\n label,\n });\n\n return;\n};\n","import { dataLayerPush, TDataLayerPushArgument } from './helpers';\n\ninterface IAnalytics {\n category: string,\n send: (action: string, label?: string) => void,\n}\n\nabstract class BaseAnalytics implements IAnalytics {\n private sender: typeof dataLayerPush = dataLayerPush;\n public category = '';\n\n public send(action: string, label?: string): void {\n if (!this.category) {\n throw new Error('The analytics category is not set. Add a public variable \"category\" on a child class');\n }\n\n this.sender({\n event: 'UAevent',\n category: this.category,\n action,\n label,\n });\n }\n\n protected sendEcommerce(params: TDataLayerPushArgument): void {\n this.sender(params);\n }\n\n // The core methods or properties do not need to be shown.\n static get excludedNames() {\n return ['sender', 'category'];\n }\n\n public toJSON(): unknown {\n // @ts-ignore\n const ownMethods = this.__proto__ instanceof BaseAnalytics\n // @ts-ignore\n ? this.getMethodsFromInstance(this.__proto__)\n : [];\n\n const properties = this.getMethodsFromInstance(this);\n\n return {\n _className: this.constructor.name,\n category: this.category,\n root: ownMethods,\n children: properties,\n };\n }\n\n private getMethodsFromInstance(instance: Object): Record {\n return Object.keys(instance).reduce>((acc, key) => {\n if (BaseAnalytics.excludedNames.includes(key)) {\n return acc;\n }\n\n const entity = Reflect.getOwnPropertyDescriptor(instance, key);\n\n if (entity) {\n if (typeof entity.value === 'function') {\n // finding all `this.send(*)`\n const sendCalls = entity.value\n .toString()\n .match(/.*this.send\\(.*\\);/gm);\n\n // finding all arguments inside the `this.send(*)`\n const sendArgs = sendCalls.map(\n (call: string) => call\n .replace(/\\s\\s/g, '')\n .replace(/\\);/, '')\n .replace(/this\\.send\\(/, ''),\n );\n\n if (sendCalls.length > 1) {\n sendArgs.forEach((args: string) => {\n const _args = this.processArgs(args);\n acc[`${key}->${_args[0]}`] = {\n eventAction: _args[0],\n labels: _args.slice(1),\n };\n });\n } else {\n const _args = this.processArgs(sendArgs[0]);\n acc[key] = {\n eventAction: _args[0],\n labels: _args.slice(1),\n };\n }\n }\n\n if (entity.value instanceof BaseAnalytics) {\n acc[key] = entity.value.toJSON();\n }\n }\n\n return acc;\n }, {});\n }\n\n private processArgs(_args: string) {\n const args = _args.split('\", ');\n // eslint-disable-next-line no-useless-escape\n args[0] = args[0].replaceAll('\\\"', '');\n\n if (args.length > 1) {\n // eslint-disable-next-line no-useless-escape\n const isSecondArgConstantValue = args[1].match(/\\\"/);\n\n if (!isSecondArgConstantValue) {\n args[1] = `%${args[1]}`;\n } else {\n // eslint-disable-next-line no-useless-escape\n args[1] = args[1].replaceAll('\\\"', '');\n }\n }\n\n return args;\n }\n}\n\nexport default BaseAnalytics;\n","import BaseAnalytics from './BaseAnalytics';\n\ninterface IEcommerceItem {\n id: number,\n name: string,\n category: string,\n list: string,\n position: number,\n variant?: string,\n price?: number,\n}\n\ninterface IEcommerceDetail {\n detail: {\n products: IEcommerceItem[],\n },\n}\n\ninterface IEcommercePurchase {\n purchase: {\n actionField: {\n id: string,\n },\n products: IEcommerceItem[],\n },\n}\n\ninterface IEcommerceImpressions {\n currencyCode: string,\n impressions: IEcommerceItem[],\n}\n\nclass EcommerceAnalytics extends BaseAnalytics {\n\n constructor(category = 'ecommerce') {\n super();\n this.category = category;\n }\n\n sendDetails(products: IEcommerceItem[]) {\n this.sendEcommerce({\n event: 'UAevent',\n category: this.category,\n action: 'detail',\n ecommerce: {\n detail: {\n products,\n },\n },\n });\n }\n\n sendPurchase(products: IEcommerceItem[], transactionId: string) {\n this.sendEcommerce({\n event: 'UAevent',\n category: this.category,\n action: 'purchase',\n ecommerce: {\n purchase: {\n actionField: {\n id: transactionId,\n },\n products,\n },\n },\n });\n }\n\n sendImpressions(impressions: IEcommerceItem[], currencyCode = 'RUB') {\n this.sendEcommerce({\n event: 'UAevent',\n category: this.category,\n action: 'impressions',\n ecommerce: {\n currencyCode,\n impressions,\n },\n });\n }\n}\n\n\nexport default EcommerceAnalytics;\n\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\n/**\n * Добавить email\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v1#/Contacts/f51565fdbca29c63108097fda47f6eaa\n * */\nexport const addUnconfirmedEmail = (params: RequestDto): IRequest => ({\n uri: '/v1/contacts/add-unconfirmed-email',\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(params),\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\n/**\n * Подтверждение контакта ключём из письма\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v1#/Contacts/86f78d2d8df3b6daa4b5e1b360d98e5f\n * */\nexport const confirmEmail = (params: RequestDto): IRequest => ({\n uri: '/v1/contacts/confirm-email',\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(params),\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\n/**\n * Подтверждение контакта ключём из письма\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v1#/Contacts/86f78d2d8df3b6daa4b5e1b360d98e5f\n * */\nexport const contactsSendMailForConfirm = (params: RequestDto): IRequest => ({\n uri: '/v1/contacts/send-mail-for-confirm',\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(params),\n});\n","export interface IPromisedPaymentBalance {\n payForDay: number,\n day: unknown,\n /**\n * Дата конца активности ОП (вернется, если есть активный ОП)\n */\n activeTo: string | null,\n activeToTimestamp: unknown,\n activeToIsoNoOffset: string | null,\n activeFromIsoNoOffset: string | null,\n activeFromTimestamp: number | null,\n auto: unknown,\n critDay: number | null,\n /**\n * Показывает стоимость ОП\n */\n isFree: 0 | 1 | null,\n\n /**\n * Дата, с которой подключается ОП (вернется, если доступен)\n * Дата, с которой активен ОП (вернется, если есть активный ОП)\n */\n activeFrom: string | null,\n\n /**\n * Подключен ли ОП\n */\n isActive: 0 | 1,\n}\n\nexport interface IPromisedPaymentInfo {\n code: string | null,\n promisedPaymentBal: IPromisedPaymentBalance,\n}\n\nexport interface IBindingCard {\n id: number,\n maskedNumber: string,\n numberWithPaySystem?: string,\n autoPayStatus: boolean,\n autopayText?: string,\n comingPayDay: string,\n payDay: number,\n paySystem?: string,\n}\n\nexport interface IAlertButton {\n text: string,\n url: string,\n}\n\nexport interface IAlert {\n text: string,\n type: 'info' | 'error',\n buttons: IAlertButton[],\n}\n\nexport interface IPaymentInfo {\n balance: number,\n paySum: number,\n payDay: string,\n bindingCards: IBindingCard[],\n promisedPayment: unknown[] | null,\n promisedPaymentInfo: IPromisedPaymentInfo,\n payText: string,\n payChargesSum: string,\n payTextParam: string,\n payPeriodDates: string,\n payCurBalance: string,\n payIsDeny: boolean,\n payTextShort: string,\n alert?: IAlert,\n\n agreementClosingDate?: string | null,\n payDayShort?: string | null,\n payChargesSumShort?: number | null,\n}\n\nexport interface ITerminalResources {\n id: number,\n name: string,\n serviceId: number,\n type: string,\n}\n\n/**\n * Статус приостановления сервиса\n * + 0 - нет приостановления\n * + 1 - приостановлено клиентом или АО\n * + 2 - приостановлено биллингом по ДЗ\n */\nexport enum ESuspendStatus {\n Active = 0,\n SuspendedByClient = 1,\n SuspendedByBilling = 2,\n}\n\nexport interface IServices {\n productId: number,\n productName: string,\n planId: number,\n planName: string,\n specification: number,\n activated: 0 | 1,\n activateDateFrom: unknown,\n activateDateTo: unknown,\n terminalResources: ITerminalResources[],\n suspendStatus: ESuspendStatus,\n}\n\nexport interface ITariffActivation {\n isNeeded: 0 | 1 | boolean,\n dateFrom: string | null,\n dateTo: string | null,\n}\n\nexport interface IWidgetData {\n imageBackground: string,\n imageBackgroundWebp: string,\n textColor: string,\n}\n\nexport interface IProducts {\n tariffPriceMvno: number,\n salePackageId: number,\n tariffPrice: number,\n tariffPriceWithSale: number,\n tariffName: string,\n tariffPriceDiscount: number,\n services: IServices[],\n widgetData: IWidgetData | null,\n tariffActivation: ITariffActivation,\n isConstructor: boolean,\n alert?: IAlert,\n}\n\nexport interface IPersonal {\n address: {\n city: string,\n street: string,\n streetId: number,\n house: number,\n building: string,\n flat: number,\n },\n agreement: number,\n agreementId: number,\n agreementTypeId: number,\n billingCity: {\n domain: string,\n providerId: number,\n },\n cityId: number,\n fio: string,\n photoUrl: string,\n}\n\nexport enum EContactStatuses {\n confirmed = 'confirmed',\n unconfirmed = 'unconfirmed'\n}\n\nexport interface IContact {\n id: number,\n contactValue: string,\n status: EContactStatuses,\n}\n\nexport interface IPhoneContact extends IContact {\n phoneTypeId: number,\n needUpdate?: boolean,\n}\n\nexport interface IContacts {\n email: IContact[],\n phone: IPhoneContact[],\n}\n\nexport interface ResponseContactDto {\n contacts: { contacts: IContacts },\n personal: IPersonal,\n products: IProducts,\n payment: IPaymentInfo,\n}\n","// https://kb.ertelecom.ru/pages/viewpage.action?pageId=195003438#:~:text=%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8-,%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0%20%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2%20%D0%BF%D0%BE%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%83%20%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0%2C%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%BE%D0%B2%20%D0%BF%D0%BE%20%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D1%83%20%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0,-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%3A%C2%A0get_agr_list_contact%20(%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n\ntype TModelsTypes = 'payment' | 'personal' | 'products' | 'contacts';\n\n/**\n * Запрос информации о клиенте\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v2#/Info/app%5Cmodules%5Cv2%5Ccontrollers%5CInfoController%3A%3AactionAll\n */\nexport const getInfoAll = (\n providerId: number,\n accessToken: string,\n agreementNumber: string,\n models: TModelsTypes[] = ['personal', 'payment', 'products', 'contacts'],\n): IRequest => ({\n uri: '/v2/info/all',\n method: 'GET',\n headers: {\n 'ProviderId': `${providerId}`,\n 'Authorization': `Bearer ${accessToken}`,\n agreementNumber,\n },\n queryParams: {\n models,\n floatRecSum: 1,\n },\n});\n\n","import { getYmAnalyticsId } from '@r1-frontend/shared/helpers/getYmId';\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport enum ESendByCallPetitions {\n ProblemNew = 'problem_new',\n RequestNew = 'request_new',\n}\n\nexport interface ISendByCallParams {\n fio?: string,\n phone?: string,\n phoneId?: string,\n petition: ESendByCallPetitions,\n}\n\nexport interface ICallback {\n status: number,\n message: string,\n}\n/**\n * GET-запрос обратного звонка /user/by-call\n * https://master.api-request.sandbox.d2c.r-one.io/docs/v1#/RequestByCall/97236e7264c5c74498176d791577cf75\n */\nexport const sendByCall = (providerId: number, queryParams: ISendByCallParams): IRequest => {\n return {\n uri: '/v1/user/by-call',\n method: 'GET',\n headers: { providerId: `${providerId}` },\n queryParams: {\n ...queryParams,\n ...getYmAnalyticsId(),\n },\n };\n};\n","export enum ERequestStatus {\n success = 'success',\n error = 'error',\n notRequest = 'not-request',\n}\n","import { getYmAnalyticsId } from '@r1-frontend/shared/helpers/getYmId';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\nexport type { ResponseDto } from './dto/ResponseDto';\nexport type { RequestDto };\nexport { ERequestStatus } from './dto/ERequestStatus';\n\n/**\n * Создание заявки на подключение\n * https://master.api-request.sandbox.d2c.r-one.io/docs/v1#/RequestByConnection/8c545c8dcd28e73bf95ac9e063c53463\n */\nexport const requestByConnection = ({ check_call_type, csrf, ...body }: RequestDto): IRequest => {\n if (isClientSide() && !check_call_type) {\n check_call_type = window.location.pathname;\n }\n return {\n uri: '/v1/user/request-by-connection',\n method: 'POST',\n withProvider: true,\n body: JSON.stringify({\n check_call_type,\n ...body,\n ...getYmAnalyticsId(),\n }),\n headers: {\n 'x-csrf-token': csrf,\n },\n };\n};\n","import { RequestDto } from '@r1-frontend/api-domru/core-requests/api/v1/call/back/dto/RequestDto';\n\nimport { getYmAnalyticsId } from '@r1-frontend/shared/helpers/getYmId';\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/*\n * Заявка на обратный звонок (на сервере OMS)\n * @link https://master.core-requests.sandbox.d2c.r-one.io/docs#/%D0%97%D0%B0%D1%8F%D0%B2%D0%BA%D0%B8%20%D0%BD%D0%B0%20%D0%B7%D0%B2%D0%BE%D0%BD%D0%BE%D0%BA/CallsController_callBack\n */\nexport const backCall = (body: RequestDto): IRequest => {\n return {\n uri: '/api/v1/call/back',\n method: 'POST',\n body: JSON.stringify({\n ...body,\n ...getYmAnalyticsId(),\n }),\n withProvider: true,\n };\n};\n","// TODO: Удалить заменив все использования на строки\nexport enum ERequestMethod {\n GET = 'GET',\n POST = 'POST',\n DELETE = 'DELETE',\n HEAD = 'HEAD',\n PUT = 'PUT',\n PATCH = 'PATCH',\n OPTIONS = 'OPTIONS',\n}\n","import BaseAxiosRequest from '@r1-frontend/do-request/core/BaseAxiosRequest';\nimport { DoRequest } from '@r1-frontend/do-request/core/DoRequest';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport const doRequest = new DoRequest(new BaseAxiosRequest());\n","/**\n * Категории событий\n *\n * @name constants.EVENTS\n * @type {Record}\n * @deprecated\n */\nexport const CATEGORIES = {\n applicationForm: 'application_form',\n applicationButton: 'application_button',\n applicationManagement: 'application_management',\n auth: 'Auth',\n abnTests: 'abn tests',\n bundles: 'bundles',\n banner: 'banner',\n bannerServices: 'banner_services',\n bannerOverHeader: 'banner_over_header',\n bonus: 'bonus',\n changePassword: 'changePassword',\n connectRequest: 'connect request',\n crash: 'CRASH',\n cbFormNew: 'callback form new',\n delivery: 'delivery',\n dealerWidget: 'dealer_widget',\n deviceManagement: 'device_management',\n equipment: 'equipment',\n fullBuy: 'fullbuy',\n fullBuyEquip: 'full_buy_equip',\n header: 'Header',\n loyaltyProgramLanding: 'loyalty_program_landing',\n landing: 'landing',\n mainMenuClick: 'Main menu click',\n multibundleWidget: 'multibundle_widget',\n multibundle: 'multibundle',\n miniMenuClick: 'Mini menu click',\n miniMenuHover: 'Mini menu hover',\n newPayment: 'new_payment',\n orderManagement: 'order_management',\n paidServices: 'paid_services',\n phoneStatistic: 'phone_statistics',\n purchaseEquipment: 'purchase_equipment',\n spas: 'spas',\n tariffCards: 'tariff_cards',\n tariffLines: 'tariff_lines',\n tariffChange: 'tariff change',\n vas: 'VAS',\n lk: 'lk',\n seasonTickets: 'season tickets',\n profileMenu: 'profile_menu',\n agreementMenu: 'agreement_details_menu',\n lkMenu: 'lk_main_navigation',\n onlineBuy: 'online_buy',\n equipmentPayment: 'equipment_payment',\n constructor: 'constructor',\n diagnosticsLk: 'diagnostics_lk',\n support: 'support',\n};\n\n/**\n * Тип действия событий\n *\n * @name constants.ACTIONS\n * @type {Record}\n * @deprecated\n */\nexport const ACTIONS = {\n addRemoveFilter: 'add/remove filter',\n\n cancelServiceRequest: 'cancel_service_request',\n click: 'click',\n clickOnBtn: 'click_on_btn',\n clickChooseTariff: 'click_choose_tariff',\n clickViewAll: 'click view all',\n clickOrder: 'click order',\n clickChooseBtn: 'click choose btn',\n clickOnCalltouch: 'click_on_calltouch',\n clickBanner: 'click banner',\n clickChooseCb: 'click choose сallback',\n clickTicketOpen: 'click check payment',\n clickContinueOnline: 'click_continue_online',\n clickConnectForRouble: 'click_connect_for_ruble',\n clickConnectByPhone: 'open_connect_by_phone',\n clickConnectForRoublePopup: 'click_connect_for_ruble_popup',\n choiceRecommendedTariff: 'choice_recommended_tariff',\n chooseRouter: 'choose_router',\n clickAgreeBtn: 'click agree btn',\n clickConsultation: 'click_get_consultation',\n clickDisagreeBtn: 'click disagree btn',\n clickFindPrice: 'click_find_price',\n clickProblem: 'click_problem_solution',\n clickedToOrder: 'clicked_to_order',\n clickConnectChoosedSpeed: 'click_connect_choosed_speed',\n\n error: 'error',\n errorService: 'error_service',\n errorEquip: 'error_equipment',\n errorVas: 'error_vas',\n\n finished: 'finished',\n\n move: 'move',\n moveSpeedSlider: 'move_speed_slider',\n\n navigationClick: 'navigation_click',\n\n openLazyPopup: 'open_lazy_application',\n openCallbackForm: 'open_callback_form',\n orderVas: 'order_vas',\n orderService: 'order_service',\n orderEquip: 'order_equipment',\n\n popup: 'popup',\n\n routers: 'routers',\n\n checkboxTvChannelsOn: 'checkbox_tv_channels_on',\n checkboxTvChannelsOff: 'checkbox_tv_channels_off',\n\n serviceRequest: 'service_request',\n started: 'started',\n startedEquip: 'started_equipment',\n startedService: 'started_service',\n startedVas: 'started_vas',\n success: 'success',\n serviceRequestEdit: 'edit_service_request',\n showRecommendedTariff: 'show_recommended_tariff',\n\n transitionToForm: 'transition_to_form',\n\n view: 'view',\n};\n\n/**\n * Типы событий\n *\n * @name constants.EVENTS\n * @type {Record}\n */\nexport const EVENTS: Record = {\n UAevent: 'UAevent',\n};\n","import cookie from 'react-cookies';\n\nimport { generateAbtTestValue } from '@r1-frontend/shared/helpers/generateAbtTestValue';\n\nexport const getProjectClientId = () => cookie.load('abn_test') ?? generateAbtTestValue();\n\nfunction getKeyStartsWith(keys: string[], prefix: K): `${K}${string}` | null {\n const result = keys.find((key: string) => key.startsWith(prefix));\n return result ? result as `${K}${string}` : null;\n}\n\n/**\n * Получение YA clientId из yacounter\n */\nconst getYmClientId = (): string | undefined => {\n try {\n const yaCounterKey = getKeyStartsWith(Object.keys(window), 'yaCounter');\n\n if (yaCounterKey) {\n return window[yaCounterKey]?.getClientID();\n }\n } catch {\n return getProjectClientId();\n }\n};\n\nexport const COOKIE_YM_ID = '_ym_uid';\n\ninterface IResultGetAnalyticsIdId {\n analyticsId: string,\n}\n\nexport const getYmIdValue = (): string => {\n const clientYAId: string | undefined = cookie.load(COOKIE_YM_ID);\n return clientYAId || getYmClientId() || getProjectClientId();\n};\n\nexport const getYmAnalyticsId = (): IResultGetAnalyticsIdId => {\n return {\n analyticsId: getYmIdValue(),\n };\n};\n\n","/**\n * В число\n * @param hex\n * @return {string}\n */\n export const hex2rgb = (hex: string): string => {\n const bigint = parseInt(hex.replace('#', ''), 16);\n return `${(bigint >> 16) & 255},${(bigint >> 8) & 255},${bigint & 255}`;\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\nimport { useIsomorphicLayoutEffect } from '@r1-frontend/shared/hooks/useIsomorphicLayoutEffect';\n\n/**\n * Проверяет переданное медиа-выражение, возвращает результат проверки\n * @param {string} mediaQuery медиавыражение вида: '(max-width: 1000px)'\n * @param {boolean} hasInitMatch учитывать совпадение в init состояние\n * @return {boolean}\n */\n\nexport const useMatchMedia = (mediaQuery: string, hasInitMatch?: boolean): boolean => {\n const _mql = useMemo(() => {\n if (isClientSide() && window.matchMedia) {\n return window.matchMedia(mediaQuery);\n } else {\n return null;\n }\n }, [mediaQuery]);\n\n const [isMatch, setIsMatch] = useState(hasInitMatch ? _mql?.matches ?? false : false);\n\n const handleMediaChange = useCallback((e) => {\n setIsMatch(e.matches);\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (!_mql) {\n return;\n }\n\n setIsMatch(_mql.matches);\n\n if ('function' === typeof _mql.addEventListener) {\n _mql.addEventListener('change', handleMediaChange);\n }\n\n return () => {\n if ('function' === typeof _mql.removeEventListener) {\n _mql.removeEventListener('change', handleMediaChange);\n }\n };\n }, [_mql, handleMediaChange]);\n\n return isMatch;\n};\n\n/**\n * Возвращает медиа-выражение для указанной ширины экрана\n * screenWidth - ширина экрана строкой или числом '768px' или 768\n * isMobileFirst: true - если нужен min-width, по умолчанию max-width\n */\nconst createMediaQuery = (screenWidth: string | number, isMobileFirst?: boolean) => {\n const width = typeof screenWidth === 'number' ? `${screenWidth}px` : screenWidth;\n return `(${isMobileFirst ? 'min' : 'max'}-width: ${width})`;\n};\n\n/**\n * Позволяет передать требуемую ширину экрана вместо медиа-выражения\n * screenWidth - ширина экрана строкой или числом '768px' или 768\n * isMobileFirst: true - если нужен min-width, по умолчанию max-width\n * hasInitMatch: true - учитывать совпадение в init состояние\n */\nexport const useMatchMediaByWidth = (screenWidth: string | number, isMobileFirst?: boolean, hasInitMatch?: boolean) => {\n const mq = createMediaQuery(screenWidth, isMobileFirst);\n return useMatchMedia(mq, hasInitMatch);\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nexport const useWebp = () => {\n const [{ webP: supportsWebP }, setWebPSupport] = useState({ webP: true });\n const webPCheck = useCallback(() => new Promise(resolve => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(image.width === 1);\n image.src = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=';\n }).catch(() => false), []);\n\n useEffect(() => {\n const checkForSupport = async() => {\n const browserSupportsWebP = await webPCheck();\n\n // @ts-ignore\n setWebPSupport({ webP: browserSupportsWebP });\n };\n checkForSupport();\n }, []);\n\n return supportsWebP;\n};\n\n/**\n * Если нельзя использовать хук выше\n * Возвращает true если браузер поддерживает webp\n * Должен использоваться только на стороне браузера\n */\nexport const isWebp = async(): Promise => {\n if (isServerSide()) {\n throw new Error('Проверка isWebp(), вызвана на стороне сервера (SSR)!');\n }\n\n return new Promise(resolve => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(image.width === 1);\n image.src = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=';\n }).catch(() => false);\n};\n","// todo: Собрать все продукты по проекту и положить в одно место - сюда\n// todo: Добавить ссылку на документацию по productId\nexport enum EProductsId {\n internet = 5,\n internetCorporat = 7,\n tv = 53,\n ktv = 12,\n ktvPersonal = 19,\n telephony = 31,\n content = 67,\n domofon = 75,\n videoControl = 112,\n others = 0,\n}\n","const breakpointValues = ['1567px', '1279px', '999px', '767px', '359px'] as const;\n\nexport type BreakpointType = typeof breakpointValues[number];\n\nexport interface BreakpointsInterface {\n sDesktop: BreakpointType,\n laptop: BreakpointType,\n tablet: BreakpointType,\n mobile: BreakpointType,\n sMobile: BreakpointType,\n}\n\nconst breakpoints: BreakpointsInterface = {\n sDesktop: breakpointValues[0],\n laptop: breakpointValues[1],\n tablet: breakpointValues[2],\n mobile: breakpointValues[3],\n sMobile: breakpointValues[4],\n};\n\nexport default breakpoints;\n","import themeBreakpoints from './breakpoints';\nimport themeIndents from './indents';\nimport borderRadii from './radii';\nimport { TTheme } from './types';\nimport themeHeaders from './typography.headers';\nimport themeText from './typography.paragraphs';\n\nconst commonTheme: Omit = {\n typography: {\n headers: themeHeaders,\n text: themeText,\n },\n indents: themeIndents,\n breakpoints: themeBreakpoints,\n radii: borderRadii,\n};\n\nexport default commonTheme;\n","const themeHeaders = {\n h1: { mobile: { fs: 32, lh: 36 }, desktop: { fs: 40, lh: 52 } },\n h2: { mobile: { fs: 24, lh: 28 }, desktop: { fs: 32, lh: 40 } },\n h3: { mobile: { fs: 20, lh: 24 }, desktop: { fs: 24, lh: 32 } },\n h4: { mobile: { fs: 16, lh: 20 }, desktop: { fs: 20, lh: 28 } },\n h5: { mobile: { fs: 14, lh: 16 }, desktop: { fs: 16, lh: 24 } },\n h6: { mobile: { fs: 14, lh: 20 }, desktop: { fs: 14, lh: 20 } },\n};\n\nexport default themeHeaders;\n","const textSize = ['xs', 'sm', 'md', 'lg'] as const;\n\nexport type TextSizeType = typeof textSize[number];\n\nexport interface TextInterface {\n /**\n * font-size\n */\n fs: number,\n\n /**\n * line-height\n */\n lh: number,\n}\n\nexport interface TextThemeInterface {\n xs: TextInterface,\n sm: TextInterface,\n md: TextInterface,\n lg: TextInterface,\n}\n\nconst themeText: TextThemeInterface = {\n xs: { fs: 10, lh: 14 },\n sm: { fs: 12, lh: 16 },\n md: { fs: 14, lh: 20 },\n lg: { fs: 16, lh: 24 },\n};\n\nexport default themeText;\n","export const indentsNaming = ['xxxxxs', 'xxxxs', 'xxxs', 'xxs', 'xs', 's', 'xm', 'm', 'l', 'xl', 'xxl', 'xxxl', 'xxxxl', 'xxxxxl', 'xxxxxxl'] as const;\n\nexport type IndentsType = typeof indentsNaming[number];\n\nconst themeIndents: Record = {\n 'xxxxxs': 0,\n 'xxxxs': 2,\n 'xxxs': 4,\n 'xxs': 8,\n 'xs': 12,\n 's': 16,\n 'xm': 20,\n 'm': 24,\n 'l': 32,\n 'xl': 40,\n 'xxl': 52,\n 'xxxl': 64,\n 'xxxxl': 80,\n 'xxxxxl': 96,\n 'xxxxxxl': 128,\n} as const;\n\nexport default themeIndents;\n","export const radiiNamingPx = ['xs', 's', 'm', 'l', 'xl', 'xxl', 'xxxl'] as const;\nexport const radiiNamingPrcnt = ['half', 'quarter'] as const;\n\ntype BorderRadiiInPixelsType = typeof radiiNamingPx[number];\ntype BorderRadiiInPercentageType = typeof radiiNamingPrcnt[number];\n\nexport type BorderRadiiInterface = {\n pixel: Record,\n percentage: Record,\n}\n\nconst borderRadii: BorderRadiiInterface = {\n pixel: {\n 'xs': 4,\n 's': 8,\n 'm': 16,\n 'l': 24,\n 'xl': 32,\n 'xxl': 62,\n 'xxxl': 128,\n },\n percentage: {\n 'half': 50,\n 'quarter': 25,\n },\n};\n\nexport default borderRadii;\n","import { ColorsInterface } from './types';\n\nconst dark: ColorsInterface = {\n brand: '#ff312c',\n notifications: {\n success: '#10b278',\n warning: '#f3b840',\n error: '#ff312c',\n info: '#007ae5',\n },\n links: {\n accent: '#45b6fc',\n native: '#d6e3f0',\n },\n text: {\n head: '#ffffff',\n primary: '#eef0f6',\n hint: '#9498a1',\n disabled: '#474f5e',\n contrast: '#181b21',\n },\n system: {\n accent: '#dc3935',\n primary: '#a9c1cf',\n secondary: '#232c35',\n disabled: '#232C3566',\n deep: '#E6EEF51A',\n light: '#CCE5FF1A',\n background: '#0D0F13',\n },\n overlay: '#20202099',\n};\n\nexport default dark;\n","import dark from '@r1-frontend/ui-kit/themes/colors/dark';\nimport { TTheme } from '@r1-frontend/ui-kit/themes/types';\n\nimport commonTheme from './theme.common';\n\nconst darkTheme: TTheme = {\n ...commonTheme,\n colors: dark,\n};\n\nexport default darkTheme;\n","import React, { Children, ReactNode } from 'react';\n\nimport { TAlertTypes } from '@r1-frontend/ui-react/components/Alert/TAlertTypes';\nimport Button, { TButtonType } from '@r1-frontend/ui-react/components/buttons/button';\nimport Cookie from '@r1-frontend/ui-react/components/emoji/emoji/Cookie';\nimport { TSvgProps } from '@r1-frontend/ui-react/components/svg/createSvg';\nimport { InfoCircle, InfoCircleFlip, TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as S from './styled';\n\nexport type TAlertIcon = (props: TSvgProps) => JSX.Element\n\nexport type TAlertProps = {\n type?: TAlertTypes,\n withShadow?: boolean,\n Icon?: TAlertIcon,\n children: ReactNode,\n className?: string,\n}\n\ntype TAlertTypedMap = {\n [key in TAlertTypes]: T\n}\n\ntype TAlertStateMap = TAlertTypedMap<[TAlertIcon, COLORS]>\n\nconst getAlertState = (type: TAlertTypes) => {\n const map: TAlertStateMap = {\n error: [InfoCircle, COLORS.BgError],\n success: [TickCircle, COLORS.BgSuccess],\n info: [InfoCircleFlip, COLORS.BgSurface],\n transparent: [InfoCircleFlip, COLORS.transparent],\n white: [Cookie, COLORS.BgMain],\n };\n\n return map[type];\n};\n\nconst Alert = ({ Icon, children, type = 'info', withShadow = false, ...props }: TAlertProps): JSX.Element => {\n const [PredifinedIcon, background] = getAlertState(type);\n const [content, buttons] = Children.toArray(children);\n\n return (\n \n \n \n {Icon ? : }\n \n {content}\n \n {buttons}\n \n );\n};\n\nexport const AlertButtons = ({ children }: { children: ReactNode }) => {\n if (Children.count(children) > 2) {\n throw new Error('@r1-frontend/ui-react. The \"AlertButtons\" cannot contain more than 2 buttons');\n }\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nconst getAlertPrimaryButtonType = (type: TAlertTypes) => {\n const map: TAlertTypedMap = {\n error: 'action',\n success: 'primary',\n info: 'secondary',\n transparent: 'secondary',\n white: 'white',\n };\n\n return map[type];\n};\n\nexport type TActionAlertButton = {\n label: string,\n onClick: () => void,\n btnType?: TButtonType,\n isLoading?: boolean,\n};\n\ntype TActionAlert = {\n type: TAlertTypes,\n children: ReactNode,\n}\n\ntype TActionAlertProps = TActionAlert & {\n button: TActionAlertButton,\n};\n\ntype TConfirmAlertProps = TActionAlert & {\n buttons: Array,\n};\n\nexport const ActionAlert = ({\n type,\n children,\n button: { label, onClick },\n}: TActionAlertProps) => {\n return (\n \n {children}\n \n \n {label}\n \n \n \n );\n};\n\nexport const ConfirmAlert = ({ type, children, buttons }: TConfirmAlertProps) => {\n return (\n \n {children}\n \n {buttons.map(({ label, onClick, btnType = 'white', isLoading }, index) => (\n \n {label}\n \n ))}\n \n \n );\n};\n\nexport default Alert;\n","import styled, { css } from 'styled-components';\n\nimport { TAlertTypes } from '@r1-frontend/ui-react/components/Alert/TAlertTypes';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IndentContainer, ListContainer, RounderContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { BoxShadow } from '@r1-frontend/ui-react/tokens/boxShadow';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst getIconBackgroundByType = (type: TAlertTypes): COLORS => {\n switch (type) {\n case 'info': {\n return COLORS.Outline_Dark;\n }\n case 'success': {\n return COLORS.Success;\n }\n case 'error': {\n return COLORS.Error;\n }\n default: {\n return COLORS.Outline_Dark;\n }\n }\n};\n\nexport const AlertIcon = styled.div`\n width: 24px;\n height: 24px;\n`;\n\nexport const AlertButtons = styled.div`\n @media(max-width: ${wideBreakpoints.mobile}) {\n button,\n ${ListContainer},\n ${IndentContainer} {\n width: 100%;\n }\n }\n`;\n\nexport const Alert = styled(RounderContainer)<{\n background: COLORS,\n type: TAlertTypes,\n withShadow: boolean,\n}>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n max-width: 100%;\n align-items: center;\n padding: 16px;\n color: ${COLORS.TextPrimary};\n background-color: ${({ background }) => background};\n\n ${({ withShadow }) => withShadow && css`\n box-shadow: ${BoxShadow.S};\n `};\n\n & > button,\n & > ${AlertButtons} {\n margin-left: auto;\n }\n\n & > ${ListContainer} {\n align-items: center;\n flex-wrap: nowrap;\n }\n \n ${AlertIcon} {\n align-self: flex-start;\n\n /**\n * ad-hoc\n * TODO по дизайну типа transparent больше нет\n * Убрать после решения в какой из новых типов его перенести\n */\n ${({ type }) => type !== 'transparent' && css`\n & > svg {\n fill: ${getIconBackgroundByType(type)};\n \n #contour {\n stroke: transparent; \n }\n\n #guts { \n stroke: ${COLORS.TextWhite}; \n }\n }\n `}\n }\n\n @media(max-width: ${wideBreakpoints.mobile}) {\n /**\n * Using block instead of grid to display properly in Safari\n */\n display: block;\n border-radius: ${BorderRadius.InnerBlockRadius};\n\n & > button {\n margin-top: 12px;\n }\n\n & > button,\n & > ${AlertButtons} {\n width: 100%;\n }\n }\n`;\n","import styled from 'styled-components';\n\nimport { COLORS } from '../../assets/js/constants';\n\nexport const View = styled.div`\n ${p => p.extStyle ?? ''};\n padding-right: 6px;\n padding-bottom: 6px;\n ${p => p.customStyles?.view ?? ''};\n`;\n\nexport const TrackVertical = styled.div`\n ${p => p.extStyle ?? ''};\n right: 0;\n bottom: 2px;\n top: 0;\n width: 4px;\n border-radius: 2px;\n background-color: rgba(0, 0, 0, .05);\n ${p => p.customStyles?.trackVertical ?? ''};\n`;\n\nexport const ThumbVertical = styled.div`\n ${p => p.extStyle ?? ''};\n width: 4px;\n height: 40px;\n border-radius: 2px;\n background-color: ${COLORS.grey};\n ${p => p.customStyles?.thumbVertical ?? ''};\n`;\n\nexport const TrackHorizontal = styled.div`\n ${p => p.extStyle ?? ''};\n right: 2px;\n bottom: 0;\n left: 0;\n height: 4px;\n border-radius: 2px;\n background-color: rgba(0, 0, 0, .05);\n ${p => p.customStyles?.trackHorizontal ?? ''};\n`;\n\nexport const ThumbHorizontal = styled.div`\n ${p => p.extStyle ?? ''};\n width: 40px;\n height: 4px;\n border-radius: 2px;\n background-color: ${COLORS.grey};\n ${p => p.customStyles?.thumbHorizontal ?? ''};\n`;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport * as ST from './styled';\n\nconst CustomScrollbar = ({ customStyles = {}, hideTracksWhenNotNeeded = true, ...props }) => {\n const RenderView = ({ style, ...props }) => {\n return ;\n };\n\n const RenderTrackHorizontal = ({ style, ...props }) => {\n return ;\n };\n\n const RenderTrackVertical = ({ style, ...props }) => {\n return ;\n };\n\n const RenderThumbHorizontal = ({ style, ...props }) => {\n return (\n \n );\n };\n\n const RenderThumbVertical = ({ style, ...props }) => {\n return (\n \n );\n };\n\n return (\n \n );\n};\n\nCustomScrollbar.propTypes = {\n customStyles: PropTypes.shape({\n view: PropTypes.object,\n trackVertical: PropTypes.object,\n thumbVertical: PropTypes.object,\n trackHorizontal: PropTypes.object,\n thumbHorizontal: PropTypes.object,\n }),\n hideTracksWhenNotNeeded: PropTypes.bool,\n};\n\nexport default CustomScrollbar;\n","import React from 'react';\n\nimport { Paragraph5 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\nexport interface IPolicyNote {\n agreeUrl: string,\n buttonText?: string | React.ReactNode,\n urlTextGenitive?: string,\n children?: React.ReactNode,\n}\n\nexport const PolicyNote = ({\n agreeUrl,\n buttonText = 'Отправить',\n urlTextGenitive = 'Условиями обработки данных',\n children,\n}: IPolicyNote): JSX.Element => {\n return (\n \n Нажимая «{buttonText}», вы соглашаетесь с \n \n {urlTextGenitive}\n \n {children}\n \n );\n};\n","import React, { useMemo } from 'react';\n\ninterface IProps {\n urlWebp?: string,\n children: React.ReactElement,\n}\n\nconst WebpImage = ({ urlWebp, children }: IProps): JSX.Element => {\n const isSvg = useMemo(() => {\n const image = children?.props?.src;\n if (image) {\n const extension = image.split('.').pop();\n\n return extension === 'svg';\n }\n return false;\n }, [children]);\n\n return (urlWebp && !isSvg)\n ? \n \n {children}\n \n : <>{children};\n};\n\nexport default WebpImage;\n","import styled, { css } from 'styled-components';\n\nimport { COLORS } from '../../../tokens/colors';\nimport { FONTS } from '../../../tokens/fonts';\nimport Throbber from '../../loaders/Throbber';\nimport { btnTypes, sizes } from './index';\n\nconst ELocalColors = {\n SecondaryHover: '#EFF3F7',\n WhiteHover: '#F2F2F2',\n GhostLoading: '#DEDEDE',\n};\n\nconst getSize = (size) => {\n return sizes[size] || sizes['large'];\n};\n\nconst getIconTextColors = (theColor) => {\n return css`\n color: ${theColor};\n fill: ${theColor};\n stroke: ${theColor};\n `;\n};\n\nconst getAccentStyle = (p) => {\n if (p.type !== btnTypes.ACCENT) {\n return '';\n }\n\n return css`\n ${getIconTextColors(COLORS.TextWhite)};\n background-image: none;\n background-color: ${COLORS.ButtonAccent};\n\n\n ${!p.disabled && !p.isLoading && css`\n @media (hover: hover) {\n &:hover {\n ${getIconTextColors(COLORS.TextWhite)};\n background-image: none;\n background-color: ${COLORS.Error};\n }\n }\n `}\n\n ${p.disabled && css`\n ${getIconTextColors(COLORS.TextHint)};\n background-image: none;\n background-color: ${COLORS.GRAY_LIGHT};\n `}\n `;\n};\n\nconst getSecondaryStyle = (p) => {\n if (p.type !== btnTypes.SECONDARY) {\n return '';\n }\n\n return css`\n ${getIconTextColors(COLORS.TextPrimary)};\n background-image: none;\n background-color: ${COLORS.ButtonSecondary};\n\n ${!p.disabled && !p.isLoading && css`\n @media (hover: hover) {\n &:hover {\n ${getIconTextColors(COLORS.TextPrimary)};\n background-image: none;\n background-color: ${ELocalColors.SecondaryHover};\n }\n }\n `}\n\n ${p.disabled && css`\n ${getIconTextColors(COLORS.TextHint)};\n background-image: none;\n background-color: ${COLORS.GRAY_LIGHT};\n `}\n `;\n};\n\nconst getWhiteStyle = (p) => {\n if (p.type !== btnTypes.WHITE) {\n return '';\n }\n\n return css`\n ${getIconTextColors(COLORS.TextPrimary)};\n background-image: none;\n background-color: ${COLORS.ButtonWhite};\n\n ${!p.disabled && !p.isLoading && css`\n @media (hover: hover) {\n &:hover {\n ${getIconTextColors(COLORS.TextPrimary)};\n background-image: none;\n background-color: ${ELocalColors.WhiteHover};\n }\n }\n `}\n\n ${p.disabled && css`\n ${getIconTextColors(COLORS.TextHint)};\n background-image: none;\n background-color: ${COLORS.GRAY_LIGHT};\n `}\n `;\n};\n\nconst getGhostStyle = (p) => {\n if (p.type !== btnTypes.GHOST) {\n return '';\n }\n\n return css`\n ${getIconTextColors(COLORS.TextPrimary)};\n background-image: none;\n background-color: transparent;\n\n ${!p.disabled && !p.isLoading && css`\n @media (hover: hover) {\n &:hover {\n ${getIconTextColors(COLORS.TextHint)};\n background-color: transparent;\n }\n }\n `}\n\n ${p.disabled && css`\n ${getIconTextColors(COLORS.TextDisabled)};\n background-color: transparent;\n background-image: none;\n `}\n `;\n};\n\nexport const Button = styled.div`\n /*** Primary style ***/\n\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: ${p => p.isOnlyIcon\n ? `${getSize(p.size).iconPadding}px`\n : `${p.isIcon ? getSize(p.size).iconPadding : getSize(p.size).vPadding}px ${getSize(p.size).hPadding}px`\n };\n width: auto;\n max-width: 100%;\n opacity: ${p => p.isLoading ? '.6' : '1'};\n\n border: none;\n border-radius: 30px;\n box-shadow: none;\n\n ${p => p.size === 'small' ? FONTS.MediumXS : FONTS.MediumS};\n ${getIconTextColors(COLORS.TextWhite)};\n text-align: center;\n white-space: nowrap;\n\n background-color: ${COLORS.ButtonPrimary};\n transition: transform .2s;\n\n cursor: pointer;\n\n outline: none;\n\n ${p => !p.disabled && !p.isLoading && css`\n @media (hover: hover) {\n &:hover {\n ${getIconTextColors(COLORS.TextWhite)};\n background-color: ${COLORS.GRAY_DARK};\n }\n }\n\n &:active {\n transform: scale(${getSize(p.size).ratio});\n }\n `}\n\n ${p => p.disabled && css`\n ${getIconTextColors(COLORS.TextHint)};\n background-color: ${COLORS.GRAY_LIGHT};\n background-image: none;\n animation-name: none;\n `}\n\n /*** Accent style ***/\n ${p => getAccentStyle(p)}\n\n /*** Secondary style ***/\n ${p => getSecondaryStyle(p)}\n\n /*** White style ***/\n ${p => getWhiteStyle(p)}\n\n /*** Ghost style ***/\n ${p => getGhostStyle(p)}\n`;\n\nexport const IconWrap = styled.div`\n flex: 0 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n width: ${p => getSize(p.size).iconSize}px;\n height: ${p => getSize(p.size).iconSize}px;\n margin-right: ${p => p.isOnlyIcon ? '0' : '8px'};\n overflow: hidden;\n pointer-events: none;\n cursor: inherit;\n\n svg {\n max-width: 100%;\n max-height: 100%;\n transform: ${p => p.isRotatedIcon ? 'rotate(180deg)' : 'rotate(0deg)'};\n transition: all 0.2s;\n }\n`;\n\nexport const Inner = styled.div`\n display: block;\n white-space: nowrap;\n overflow: ${p => p.isLoading ? 'visible' : 'hidden'};\n text-overflow: ellipsis;\n pointer-events: none;\n cursor: inherit;\n\n span:nth-child(2) {\n margin-left: 20px;\n }\n`;\n\nexport const SThrobber = styled(Throbber)`\n div{\n width: 15px;\n height: 15px;\n margin-top: 4px;\n margin-bottom: 4px;\n }\n`;\n","import React, { forwardRef } from 'react';\n\nimport { COLORS } from '../../../tokens/colors';\nimport * as ST from './styled';\n\nexport const btnTypes = {\n PRIMARY: 'primary',\n ACCENT: 'accent',\n SECONDARY: 'secondary',\n WHITE: 'white',\n GHOST: 'ghost',\n};\n\nexport const btnSizes = {\n LARGE: 'large',\n MIDDLE: 'middle',\n SMALL: 'small',\n};\n\nexport const sizes = {\n large: {\n vPadding: 12,\n hPadding: 24,\n iconPadding: 12,\n iconSize: 24,\n ratio: 0.83,\n },\n middle: {\n vPadding: 8,\n hPadding: 24,\n iconPadding: 8,\n iconSize: 24,\n ratio: 0.90,\n },\n small: {\n vPadding: 8,\n hPadding: 16,\n iconPadding: 6,\n iconSize: 24,\n ratio: 0.89,\n },\n};\n\n/**\n * @deprecated\n */\nexport const BaseButton = forwardRef(({\n type = 'primary',\n size,\n text,\n price,\n iconsSprite,\n symbolId,\n iconTitle,\n href,\n className,\n isLoading,\n disabled,\n isRotatedIcon,\n onClick,\n children,\n ...rest\n}, ref) => {\n const elementType = href ? 'a' : 'button';\n\n const isOnlyIcon = symbolId && !text && !children;\n\n return (\n null : onClick}\n isOnlyIcon={isOnlyIcon}\n isIcon={!!symbolId}\n {...rest}\n >\n {iconsSprite && symbolId &&\n \n \n {iconTitle || symbolId}\n \n \n \n }\n\n \n {!isLoading\n ? children\n ? children\n : <>\n {text}\n {price && {price}}\n \n : \n }\n \n \n );\n});\n\nBaseButton.displayName = 'BaseButtonWithForwardedRef';\n","import { CSSProperties } from 'react';\nimport styled from 'styled-components';\n\nimport { TButtonSize } from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\ntype TButtonProps = {\n $justify?: CSSProperties['justifyContent'],\n size?: TButtonSize,\n isStatic?: boolean,\n}\n\nconst getIndentByType = (size: TButtonSize) => {\n switch (size) {\n case 'small':\n case 'medium':\n return 8;\n case 'large':\n return 12;\n }\n};\n\nexport const ButtonGroup = styled.div`\n width: 100%;\n\n display: flex;\n flex-direction: column;\n justify-content: ${({ $justify = 'flex-start' }) => $justify};\n row-gap: ${({ size = 'large' }) => `${getIndentByType(size)}px`};\n\n button {\n width: 100%;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n flex-direction: row;\n column-gap: ${({ size = 'large' }) => `${getIndentByType(size)}px`};\n\n button {\n width: auto;\n }\n }\n\n ${({ isStatic = false, size = 'large' }) => {\n return isStatic\n ? `\n flex-direction: row;\n column-gap: ${getIndentByType(size)}px;\n\n button {\n width: auto;\n }\n `\n : '';\n }}\n`;\n","import styled, { css } from 'styled-components';\n\nenum L_COLORS {\n PRIMARY = '#000000',\n OUTLINE = '#FFFFFF',\n BORDER = '#A6A6A6',\n}\n\ninterface IStyleProps {\n btnType: 'PRIMARY' | 'OUTLINE',\n storeIcon: 'AppStore' | 'GooglePlay' | 'AppGallery' | 'RuStore',\n width: string | number,\n height: string | number,\n textPath: string,\n}\n\nexport const StoreIcon = styled.div>`\n ${({ storeIcon }) => storeIcon !== 'AppGallery' && css`\n width: 23px;\n height: 26px;\n margin-right: 8px;\n `}\n`;\n\nexport const StoreText = styled.div>`\n ${({ storeIcon }) => storeIcon === 'AppGallery' && css`\n width: 95px;\n height: 26px;\n `};\n\n ${({ storeIcon }) => storeIcon === 'AppStore' && css`\n width: 78px;\n height: 26px;\n `};\n\n ${({ storeIcon }) => storeIcon === 'GooglePlay' && css`\n width: 85px;\n height: 26px;\n `};\n ${({ storeIcon }) => storeIcon === 'RuStore' && css`\n width: 85px;\n height: 26px;\n `};\n background-color: ${({ btnType }) => btnType === 'PRIMARY' ? L_COLORS.OUTLINE : L_COLORS.PRIMARY};\n mask-image: url(${({ textPath }) => textPath});\n mask-size: contain;\n mask-position: center;\n mask-repeat: no-repeat;\n`;\n\nexport const StoreContent = styled.div>`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n width: ${({ width }) => width ? typeof width === 'number' ? `${width}px` : width : 'auto'};\n height: ${({ height }) => height ? typeof height === 'number' ? `${height}px` : height : 'auto'};\n`;\n\nexport const BtnWrapper = styled.a>`\n padding: 6px 9px;\n border: 1px solid ${L_COLORS.BORDER};\n border-radius: 6px;\n background-color: ${({ btnType }) => btnType === 'PRIMARY' ? L_COLORS.PRIMARY : L_COLORS.OUTLINE};\n transition: opacity .25s;\n\n @media (hover: hover) {\n &:hover {\n opacity: 0.5;\n }\n }\n`;\n","import AppGalleryIcon from '../../../assets/img/icons/mobileStores/AppGalleryIcon.svg';\nimport AppGalleryText from '../../../assets/img/icons/mobileStores/AppGalleryText.svg';\nimport AppStoreText from '../../../assets/img/icons/mobileStores/AppStoreText.svg';\nimport AppStoreWhiteIcon from '../../../assets/img/icons/mobileStores/AppStoreWhiteIcon.svg';\nimport GooglePlayIcon from '../../../assets/img/icons/mobileStores/GooglePlayIcon.svg';\nimport GooglePlayText from '../../../assets/img/icons/mobileStores/GooglePlayText.svg';\nimport RuStoreIcon from '../../../assets/img/icons/mobileStores/RuStoreIcon.svg';\nimport RuStoreText from '../../../assets/img/icons/mobileStores/RuStoreText.svg';\n\nimport { EStoreName } from './index';\n\ninterface IStoreData {\n link: string,\n title: string,\n store: {\n icon: 'AppStoreIcon' | 'GooglePlayIcon' | 'AppGalleryIcon'| 'RuStoreIcon',\n text: string,\n },\n storeType: 'AppStore' | 'GooglePlay' | 'AppGallery'| 'RuStore',\n}\n\ntype TData = {\n [key in EStoreName]: IStoreData;\n};\n\nexport const storeData: TData = {\n AppStore: {\n link: 'https://apps.apple.com/ru/app/dom-ru-agent/id799358248?mt8',\n title: 'AppStore',\n store: {\n icon: AppStoreWhiteIcon,\n text: AppStoreText,\n },\n storeType: 'AppStore',\n },\n GooglePlay: {\n link: 'https://play.google.com/store/apps/details?id=com.ertelecom.agent&hl=ru',\n title: 'GooglePlay',\n store: {\n icon: GooglePlayIcon,\n text: GooglePlayText,\n },\n storeType: 'GooglePlay',\n },\n AppGallery: {\n link: 'https://appgallery.huawei.com/app/C101960911',\n title: 'HuaweiAppGallery',\n store: {\n icon: AppGalleryIcon,\n text: AppGalleryText,\n },\n storeType: 'AppGallery',\n },\n MovixAppStore: {\n link: 'https://apps.apple.com/ru/app/dom-ru-tv/id825552263?mt=8&ign-mpt=uo%3D4',\n title: 'MovixAppStore',\n store: {\n icon: AppStoreWhiteIcon,\n text: AppStoreText,\n },\n storeType: 'AppStore',\n },\n MovixGooglePlay: {\n link: 'https://play.google.com/store/apps/details?id=com.ertelecom.domrutv',\n title: 'MovixGooglePlay',\n store: {\n icon: GooglePlayIcon,\n text: GooglePlayText,\n },\n storeType: 'GooglePlay',\n },\n SmartAppStore: {\n link: 'https://apps.apple.com/ru/app/%D1%83%D0%BC%D0%BD%D1%8B%D0%B9-%D0%B4%D0%BE%D0%BC-ru/id1373157818',\n title: 'SmartAppStore',\n store: {\n icon: AppStoreWhiteIcon,\n text: AppStoreText,\n },\n storeType: 'AppStore',\n },\n SmartGooglePlay: {\n link: 'https://play.google.com/store/apps/details?id=com.ertelecom.smarthome',\n title: 'SmartGooglePlay',\n store: {\n icon: GooglePlayIcon,\n text: GooglePlayText,\n },\n storeType: 'GooglePlay',\n },\n RuStore: {\n link: 'https://apps.rustore.ru/app/com.ertelecom.agent',\n title: 'RuStore',\n store: {\n icon: RuStoreIcon,\n text: RuStoreText,\n },\n storeType: 'RuStore',\n },\n};\n","import React, { useMemo } from 'react';\n\nimport AppStoreBlackIcon from '../../../assets/img/icons/mobileStores/AppStoreBlackIcon.svg';\nimport GooglePlayIconBlack from '../../../assets/img/icons/mobileStores/GooglePlayIconBlack.svg';\nimport { BaseButton, btnTypes } from '../../../components/buttons/baseButton';\n\nimport { storeData } from './data';\n\nimport { BtnWrapper, StoreContent, StoreIcon, StoreText } from './styled';\n\nexport enum EStoreName {\n AppStore = 'AppStore',\n GooglePlay = 'GooglePlay',\n AppGallery = 'AppGallery',\n MovixAppStore = 'MovixAppStore',\n MovixGooglePlay = 'MovixGooglePlay',\n SmartAppStore = 'SmartAppStore',\n SmartGooglePlay = 'SmartGooglePlay',\n RuStore = 'RuStore',\n}\n\ninterface IComponentProps {\n store: EStoreName,\n btnType?: 'PRIMARY' | 'OUTLINE',\n simpleMode?: boolean,\n link?: string,\n width?: string | number,\n height?: string | number,\n [key: string]: unknown,\n}\n\nconst MobileStoreButton = ({\n store,\n btnType = 'PRIMARY',\n simpleMode = false,\n link,\n width,\n height,\n ...rest\n}: IComponentProps): JSX.Element => {\n const currentData = storeData[store];\n\n const imgSrc = useMemo(() => {\n if (simpleMode) {\n return null;\n }\n\n const imgSrcAppStore = btnType === 'OUTLINE' && currentData.storeType === 'AppStore';\n const imgSrcGooglePlay = btnType === 'OUTLINE' && currentData.storeType === 'GooglePlay';\n\n if (imgSrcAppStore) {\n return AppStoreBlackIcon;\n }\n\n if (imgSrcGooglePlay) {\n return GooglePlayIconBlack;\n }\n\n return currentData.store.icon;\n }, [btnType, currentData.storeType]);\n\n return (\n simpleMode\n ? \n {currentData.storeType === 'AppStore'\n ? 'Скачать для iOS'\n : 'Скачать для Android'\n }\n \n : \n \n \n Изображение для скачивания мобильного приложения\n \n \n \n \n );\n};\n\nexport default MobileStoreButton;\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\n\nimport { COLORS } from '../../../assets/js/constants';\nimport { FONTS } from '../../../tokens/fonts';\nimport Odn from './img/odnoklasnik.svg';\nimport Vk from './img/vk.svg';\n\nconst DEFAULT_SOCIALS = {\n vk: {\n img: Vk,\n background: '#4C6F92',\n link: 'https://vk.com/domru',\n },\n odn: {\n img: Odn,\n background: '#EA7147',\n link: 'https://ok.ru/domru',\n },\n};\n\nconst List = styled.ul`\n display: flex;\n justify-content: flex-start;\n column-gap: 20px;\n align-items: stretch;\n margin: 0;\n padding-left: 0;\n`;\n\nconst Item = styled.li`\n display: flex;\n list-style: none;\n`;\n\nconst Link = styled.a`\n ${FONTS.MediumS};\n display: flex;\n justify-content: center;\n align-items: center;\n width: 39px;\n height: 39px;\n background: ${props => props.bg || COLORS.grey};\n opacity: 0.75;\n transition: 0.25s;\n cursor: pointer;\n border-radius: ${props => props.borderRadius || '4px'};\n &:hover {\n opacity: 1;\n transition: 0.25s;\n }\n`;\n\nconst IconImage = styled.img`\n max-width: 25px;\n max-height: 25px;\n`;\n\nclass Social extends Component {\n render() {\n const { socials = DEFAULT_SOCIALS, radius, className } = this.props;\n const types = Object.keys(socials);\n const buttons = types.map(type => (\n {\n ...DEFAULT_SOCIALS[type],\n ...socials[type],\n }\n ));\n return (\n \n {\n buttons.map((item, index) => (\n \n \n {\n item.img && \n }\n \n \n ))\n }\n \n );\n }\n}\n\nexport default Social;\n","import styled from 'styled-components';\n\nconst Emoji = (props: { code: number }): JSX.Element =>
{String.fromCodePoint(props.code)}
;\n\nexport default styled(Emoji)``;\n","import { createEmojiIcon } from '@r1-frontend/ui-react/components/emoji/createEmojiIcon';\n\nconst Cookie = 127850;\n\nexport default createEmojiIcon(Cookie);\n","import React from 'react';\n\nimport EmojiIcon from './Emoji';\n\nexport const createEmojiIcon = (code: number) => {\n const EmojiComponent = (props: React.DetailedHTMLProps, HTMLDivElement>) => {\n return ;\n };\n\n EmojiComponent.displayName = `EmojiIcon_${code}`;\n\n return EmojiComponent;\n};\n","import cookies from 'react-cookies';\n\nconst ABNtest = 'ABNtest';\n\n/**\n * Отправка события в GA\n * @example\n * dataLayerPush({event: 'UAevent', category: 'sale', action: 'get gift'});\n * @param {JSON} params параметры события\n *\n * @deprecated\n */\n export function dataLayerPush(params) {\n window.dataLayer = window.dataLayer || [];\n const label = params.label || '';\n params[ABNtest] = cookies.load('abn_variant');\n\n const dataLayerParams = { ...params, label };\n\n window.dataLayer.push(dataLayerParams);\n}\n","\nexport const THIS_YEAR = +(new Date().getFullYear());\n\nexport const THIS_MONTH = +(new Date().getMonth()) + 1;\n\nexport const WEEK_DAYS = [\n 'Пн',\n 'Вт',\n 'Ср',\n 'Чт',\n 'Пт',\n 'Сб',\n 'Вс',\n];\n\nexport const CALENDAR_MONTHS = [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n];\n\nexport const CALENDAR_MONTHS_FOR_DATE = [\n 'Января',\n 'Февраля',\n 'Марта',\n 'Апреля',\n 'Мая',\n 'Июня',\n 'Июля',\n 'Августа',\n 'Сентября',\n 'Октября',\n 'Ноября',\n 'Декабря',\n];\n\n\nexport const getStartArray = (date) => {\n const dateArr = date.split('-');\n return [dateArr[0], +dateArr[1], +dateArr[2]];\n};\n\n// количество отображаемых недель\nexport const CALENDAR_WEEKS = 6;\n\n/**\n * добавить нужное количество 0 в начало строки - zeroPad(5, 2) => \"05\"\n * @param value\n * @param length\n * @returns {string}\n */\nexport const zeroPad = (value, length) => {\n return `${value}`.padStart(length, '0');\n};\n\n\n/**\n * определить количество дней в месяце (28 - 31)\n * @param month\n * @param year\n * @returns {number}\n */\nexport const getMonthDays = (month = THIS_MONTH, year = THIS_YEAR) => {\n return 33 - new Date(year, month - 1, 33).getDate();\n};\n\n/**\n * получить номер первого дня месяца\n * @param month\n * @param year\n * @returns {number}\n */\nexport const getMonthFirstDay = (month = THIS_MONTH, year = THIS_YEAR) => {\n return +new Date(`${year}-${zeroPad(month, 2)}-01`).getDay();\n};\n\n\n/**\n * проверка на валидность даты\n * @param date\n * @returns {boolean|*}\n */\nexport const isDate = date => {\n const isDate = Object.prototype.toString.call(date) === '[object Date]';\n const isValidDate = date && !Number.isNaN(date.valueOf());\n\n return isDate && isValidDate;\n};\n\n/**\n * формат даты для показа\n * @param date\n * @returns {*}\n */\nexport const getDateToShow = (date = new Date()) => {\n if (!isDate(date)) {\n return null;\n }\n\n return [\n zeroPad(+date.getDate(), 2),\n zeroPad(+date.getMonth() + 1, 2),\n date.getFullYear(),\n ].join('.');\n};\n\n/**\n * формат даты для показа\n * @param date\n * @returns {*}\n */\nexport const arrToDate = (arr) => {\n return [\n arr[0],\n zeroPad(arr[1], 2),\n zeroPad(arr[2], 2),\n ].join('-');\n};\n\n/**\n * преобразование даты для возврата 12.06.2019 -> 2019-06-12\n * @param strDate\n * @returns {string}\n */\nexport const convertDate = (strDate) => {\n return strDate.split('.').reverse().join('-');\n};\n\n\n/**\n * получить предыдущий месяц\n * @param month\n * @param year\n * @returns {{month: number, year: number}}\n */\nexport const getPreviousMonth = (month, year) => {\n const prevMonth = (month > 1) ? month - 1 : 12;\n const prevMonthYear = (month > 1) ? year : year - 1;\n\n return { month: prevMonth, year: prevMonthYear };\n};\n\n/**\n * получить следующий месяц\n * @param month\n * @param year\n * @returns {{month: number, year: *}}\n */\nexport const getNextMonth = (month, year) => {\n const nextMonth = (month < 12) ? month + 1 : 1;\n const nextMonthYear = (month < 12) ? year : year + 1;\n\n return { month: nextMonth, year: nextMonthYear };\n};\n\n/**\n * сформировать массив чисел (каждое число [YYYY, MM, DD])\n * @param month\n * @param year\n * @returns {*[]}\n */\nexport default (month = THIS_MONTH, year = THIS_YEAR) => {\n\n // получим количество дней в нужном месяце\n const monthDays = getMonthDays(month, year);\n // номер в неделе первого дня месяца\n const monthFirstDay = getMonthFirstDay(month, year);\n\n\n // сколько дней прошлого месяца показать\n const daysFromPrevMonth = monthFirstDay - 1 < 0 ? 6 : monthFirstDay - 1;\n // сколько дней будущего месяца показать\n const daysFromNextMonth = (CALENDAR_WEEKS * 7) - (daysFromPrevMonth + monthDays);\n\n // получим следующий и прошлый месяца\n const { month: prevMonth, year: prevMonthYear } = getPreviousMonth(month, year);\n const { month: nextMonth, year: nextMonthYear } = getNextMonth(month, year);\n\n // количество дней в прошлом месяце\n const prevMonthDays = getMonthDays(prevMonth, prevMonthYear);\n\n // формируем массив чисел за прошлый месяц\n const prevMonthDates = [...new Array(daysFromPrevMonth)].map((n, index) => {\n const day = index + 1 + (prevMonthDays - daysFromPrevMonth);\n return [prevMonthYear, prevMonth, day];\n });\n\n // формируем массив чисел за текущий месяц\n const thisMonthDates = [...new Array(monthDays)].map((n, index) => {\n const day = index + 1;\n return [year, month, day];\n });\n\n // формируем массив чисел за будущий месяц\n const nextMonthDates = [...new Array(daysFromNextMonth)].map((n, index) => {\n const day = index + 1;\n return [nextMonthYear, nextMonth, day];\n });\n\n // собираем общий массив\n return [...prevMonthDates, ...thisMonthDates, ...nextMonthDates];\n\n};\n","import styled, { css } from 'styled-components';\n\nimport arrow from '../../../assets/img/arrow-grey.svg';\nimport { COLORS } from '../../../tokens/colors';\nimport { FONTS } from '../../../tokens/fonts';\n\nconst getBodyPosition = (value) => {\n switch (value) {\n case 'right':\n return css`\n right: 0;\n `;\n case 'center':\n return css`\n left: 50%;\n transform: translate(-50%, 0);\n `;\n default:\n return '';\n }\n};\n\nexport const CalendarBody = styled.div`\n width: 352px;\n max-width: 352px;\n height: 332px;\n padding: 8px;\n background: ${COLORS.BgMain};\n box-shadow: 4px 4px 20px 0px rgba(0, 0, 0, .10);\n border-radius: 16px;\n align-items: baseline;\n flex-direction: column;\n position: absolute;\n z-index: +1;\n display: ${props => props.showCalendar ? 'flex' : 'none'};\n top: 60px;\n ${p => getBodyPosition(p.$position)};\n @media (max-width: 350px) {\n width: 290px;\n }\n`;\n\nexport const CalendarHeader = styled.div`\n display: flex;\n width: 100%;\n height: 48px;\n justify-content: space-between;\n align-items: center;\n`;\nexport const CalendarDayLine = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-around;\n margin-bottom: 2px;\n`;\n\nexport const CalendarArrow = styled.div`\n display: flex;\n width: 35px;\n height: 48px;\n cursor: pointer;\n &::before {\n background: url(${arrow}) center center no-repeat;\n position: absolute;\n content: ' ';\n width: 12px;\n height: 8px;\n transform: rotate(90deg);\n margin: 18px 0 0 25px;\n }\n`;\n\nexport const CalendarMonth = styled.div`\n display: flex;\n ${FONTS.S};\n text-align: center;\n color: ${COLORS.TextPrimary};\n`;\n\nexport const CalendarDayTitle = styled.div`\n display: flex;\n ${FONTS.S};\n text-align: center;\n color: ${COLORS.TextPrimary};\n height: 36px;\n width: 36px;\n justify-content: center;\n align-items: center;\n`;\n\nexport const CalendarNumber = styled.div`\n display: flex;\n ${FONTS.S};\n text-align: center;\n color: ${props => props.isDisabled ? COLORS.TextDisabled : COLORS.TextPrimary};\n background: ${props => props.isSelected ? `${COLORS.ButtonSecondary} !important` : COLORS.BgMain};\n border: ${props => props.isNow ? '1px' : '0'} solid ${COLORS.BgSecondary};\n border-radius: 50%;\n height: 36px;\n width: 36px;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n &:hover {\n background: ${COLORS.BgSurface};\n }\n`;\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\n\nimport Base, { arrToDate,\n CALENDAR_MONTHS,\n CALENDAR_WEEKS,\n getNextMonth,\n getPreviousMonth,\n getStartArray,\n THIS_MONTH,\n THIS_YEAR,\n WEEK_DAYS,\n zeroPad } from './calendarHelpers';\nimport {\n CalendarArrow,\n CalendarBody,\n CalendarDayLine,\n CalendarDayTitle,\n CalendarHeader,\n CalendarMonth,\n CalendarNumber,\n} from './elements';\n\nconst ArrowLeft = styled(CalendarArrow)`\n &::before {\n transform: rotate(90deg);\n margin: 18px 0 0 25px;\n }\n`;\n\nconst ArrowRight = styled(CalendarArrow)`\n &::before {\n transform: rotate(270deg);\n margin: 18px 25px 0 0;\n }\n`;\n\nclass Calendar extends Component {\n\n state = {\n calendarMonth: `${CALENDAR_MONTHS[THIS_MONTH - 1]} ${THIS_YEAR}`,\n selectedDate: [],\n monthDays: [],\n month: THIS_MONTH,\n year: THIS_YEAR,\n minDate: null,\n maxDate: null,\n };\n\n componentDidMount() {\n this.init();\n }\n\n componentDidUpdate(prevProps) {\n const { nowDate } = this.props;\n if (prevProps.nowDate !== nowDate) {\n this.init();\n }\n }\n\n setCalendarMonth = () => {\n const { month, year } = this.state;\n this.setState({ calendarMonth: `${CALENDAR_MONTHS[month - 1]} ${year}` });\n }\n\n init = () => {\n const { nowDate, minDate, maxDate } = this.props;\n if (nowDate) {\n const startDate = getStartArray(nowDate);\n this.setState({ monthDays: Base(+startDate[1], +startDate[0]),\n selectedDate: startDate,\n month: +startDate[1],\n year: +startDate[0],\n minDate: minDate ? minDate : null,\n maxDate: maxDate ? maxDate : null }, () => this.setCalendarMonth());\n } else {\n this.setState({ monthDays: Base() });\n }\n }\n\n setPrevMonth = (e) => {\n const { month, year } = this.state;\n const date = getPreviousMonth(month, year);\n e.stopPropagation();\n this.setState({ monthDays: Base(+date.month, +date.year),\n month: +date.month,\n year: +date.year }, () => this.setCalendarMonth());\n }\n\n setNextMonth = (e) => {\n const { month, year } = this.state;\n const date = getNextMonth(month, year);\n e.stopPropagation();\n this.setState({ monthDays: Base(+date.month, +date.year),\n month: +date.month,\n year: +date.year }, () => this.setCalendarMonth());\n }\n\n selectNumber = (e, selectedDate, disabled) => {\n const { onChange } = this.props;\n if (disabled) {\n e.stopPropagation();\n } else {\n this.setState({ selectedDate });\n onChange([\n selectedDate[0],\n zeroPad(selectedDate[1], 2),\n zeroPad(selectedDate[2], 2),\n ].join('-'));\n }\n }\n\n /**\n * Проверим входит ли дата в доступный интервал. Если он не определен или дата входит в него, вернем true\n * @param item\n * @returns {boolean|*}\n */\n inInterval = (item) => {\n const { minDate, maxDate } = this.props;\n\n const itemTempVal = new Date(arrToDate(item));\n const itemDate = itemTempVal.getTime();\n\n const tempMinValue = minDate ? new Date(minDate) : null;\n const tempMaxValue = maxDate ? new Date(maxDate) : null;\n\n const minValue = tempMinValue ? tempMinValue.getTime() : null;\n const maxValue = tempMaxValue ? tempMaxValue.getTime() : null;\n\n if (!minDate && maxDate) {\n return (itemDate === maxValue) || (itemDate < maxValue);\n }\n if (!maxDate && minDate) {\n return (itemDate === minValue) || (itemDate > minValue);\n }\n if (maxDate && minDate) {\n return ((itemDate > minValue) || (itemDate === minValue)) && ((itemDate < maxValue) || (itemDate === maxValue));\n }\n\n return true;\n }\n\n getItems = (items, start, count, month, now) => {\n const { selectedDate } = this.state;\n const menuItems = [];\n const selectedDateStr = selectedDate.join('-');\n for (let i = start; i < start + count; i++) {\n const item = items[i];\n const disabled = month !== item[1] || !this.inInterval(item);\n const itemStr = item.join('-');\n menuItems.push( this.selectNumber(e, item, disabled)}\n isDisabled={disabled}\n isNow={now[0] === item[0] && now[1] === item[1] && now[2] === item[2]}\n isSelected={selectedDateStr === itemStr}>{item[2]});\n }\n return menuItems;\n }\n\n render() {\n const { calendarMonth, monthDays, month } = this.state;\n const { showCalendar, $position } = this.props;\n const weekDays = WEEK_DAYS.map(item => {item});\n const lines = [];\n\n if (monthDays.length > 0) {\n const viewMonth = month || THIS_MONTH;\n const nowDate = new Date();\n const now = [\n nowDate.getFullYear(),\n nowDate.getMonth() + 1,\n nowDate.getDate(),\n ];\n for (let i = 0; i < CALENDAR_WEEKS; i++) {\n lines.push({this.getItems(monthDays, i * 7, 7, viewMonth, now)});\n }\n }\n\n return (\n \n \n this.setPrevMonth(e)} />\n {calendarMonth}\n this.setNextMonth(e)} />\n \n \n {weekDays}\n \n \n {lines}\n \n \n );\n }\n}\n\nexport default Calendar;\n","import { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport styled from 'styled-components';\n\nexport const AutoCompleteContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n flex-wrap: nowrap;\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n width: 100%;\n height: auto;\n max-height: 240%;\n overflow-y: auto;\n overflow-x: hidden;\n background: ${COLORS.white};\n border: solid 1px ${COLORS.grey};\n border-radius: ${BorderRadius.componentRadius};\n visibility: ${props => (props.show ? 'visible' : 'hidden')};\n z-index: 10;\n`;\n\nexport const AutoCompleteItem = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n flex-shrink: 0;\n width: 100%;\n height: 30px;\n padding: 8px 13px;\n cursor: pointer;\n color: ${props => props.focused ? COLORS.TextWhite : COLORS.TextPrimary};\n background: ${props => (props.focused ? COLORS.Control : COLORS.BgMain)};\n\n &:hover {\n background: ${props => !props.focused && COLORS.lightGrey};\n }\n`;\n","import PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { AutoCompleteContainer, AutoCompleteItem } from './styled';\n\n/**\n * a list of default email domains,\n * can be overriden in component props\n */\nconst DEFAULT_DOMAINS = [\n 'mail.ru',\n 'yandex.ru',\n 'bk.ru',\n 'gmail.com',\n 'rambler.ru',\n 'ya.ru',\n 'list.ru',\n 'inbox.ru',\n 'icloud.com',\n 'yahoo.com',\n];\n\n/**\n * handle clicks outside of the input wrapper\n *\n * @param {Object} ref parent container ref\n * @param {Function} fn state property setter function\n */\nconst useClickOutside = (ref, fn) => {\n const handleClickOutside = e => {\n if (ref && !ref.contains(e.target)) {\n fn();\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n }, [fn]);\n};\n\n/**\n * Autocomplete addition for the input of email type\n *\n * @param {String} value current input value\n * @param {Object} parentRef input container ref\n * @param {Function} handleSelect exec function on option select\n * @param {Function} setNoBlurValidation toggle input validation on blur\n * @param {Array} domains custom list of email domains\n */\nconst AutoComplete = ({\n value = '',\n parentRef,\n handleSelect,\n setNoBlurValidation,\n domains = DEFAULT_DOMAINS,\n}) => {\n const [show, setShow] = useState(false);\n const [refs, setRefs] = useState([]);\n const [focus, setFocus] = useState(-1);\n\n const [name, domain] = useMemo(() => {\n setShow(!!~value.indexOf('@'));\n setFocus(-1);\n return value.split('@');\n }, [value]);\n\n const onClickOutside = useCallback(() => {\n show && handleSelect();\n setShow(false);\n }, [show]);\n\n /**\n * render auto completion list\n */\n const items = useMemo(() => {\n const domainsFiltered = domain\n ? domains.filter(item => item.startsWith(domain))\n : domains;\n\n if (\n !name ||\n !domainsFiltered.length ||\n (domainsFiltered.length === 1 && domainsFiltered[0] === domain)\n ) {\n setShow(false);\n return null;\n }\n\n const tempRefs = [];\n\n const mappedItems = domainsFiltered.map((item, index) => {\n const completion = domain ? item.split(domain)[1] : item;\n\n return (\n {\n setShow(false);\n handleSelect(value + completion);\n }}\n ref={el => {\n tempRefs.push(el);\n }}\n >\n {value}\n {completion}\n \n );\n });\n\n setRefs(tempRefs);\n return mappedItems;\n }, [name, domain, focus]);\n\n /**\n * handle external dependencies of current state\n */\n useEffect(() => {\n setNoBlurValidation(show);\n }, [show]);\n\n /**\n * bind key actions\n * up: 38, down: 40, enter: 13\n */\n useEffect(() => {\n const handleKeyDown = e => {\n if (!show || !refs.length) {\n return;\n }\n\n let tempFocus = focus;\n\n switch (e.keyCode) {\n case 38:\n e.preventDefault();\n tempFocus = tempFocus - 1 < 0 ? refs.length - 1 : tempFocus - 1;\n setFocus(tempFocus);\n refs[tempFocus].scrollIntoView(false);\n break;\n case 40:\n e.preventDefault();\n tempFocus = tempFocus + 1 >= refs.length - 1 ? 0 : tempFocus + 1;\n setFocus(tempFocus);\n refs[tempFocus].scrollIntoView(false);\n break;\n case 13:\n if (focus !== -1) {\n handleSelect(refs[tempFocus].textContent);\n setShow(false);\n setFocus(-1);\n }\n break;\n }\n };\n\n if (parentRef) {\n parentRef.addEventListener('keydown', handleKeyDown);\n return () => {\n parentRef.removeEventListener('keydown', handleKeyDown);\n };\n }\n }, [parentRef, items, focus]);\n\n /**\n * bind click event listener\n */\n useClickOutside(parentRef, onClickOutside);\n\n return (\n \n {items ||
}\n \n );\n};\n\nAutoComplete.propTypes = {\n value: PropTypes.string,\n handleSelect: PropTypes.func,\n setNoBlurValidation: PropTypes.func,\n parentRef: PropTypes.object,\n domains: PropTypes.array,\n};\n\nexport default AutoComplete;\n","import React, { PureComponent } from 'react';\n\nimport eyeClosed from '../../assets/img/icons/eye-closed.svg';\nimport eyeOpened from '../../assets/img/icons/eye-opened.svg';\nimport Tooltip from '../tooltip';\nimport Calendar from './calendar';\nimport { CALENDAR_MONTHS_FOR_DATE, convertDate, getDateToShow } from './calendar/calendarHelpers';\nimport AutoComplete from './email/autocomplete';\nimport { CalendarIcon,\n DescriptionBlock,\n Eye,\n InputContainer,\n InputError,\n PrettyText,\n QuestionIcon,\n StyledInput } from './styles';\n\nexport const VALIDATION_REGEXP = {\n name: /[0-9!\"№;%:?*()_+=~[\\]`@#$^&{},.<>/|\\\\']/,\n cyrillicName: /^([а-яёА-ЯЁ]+[-']?[а-яёА-ЯЁ]*\\s??){0,5}$/,\n password: /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[^*а-яА-ЯёЁ\"@№;$%:^<>|=&+?~`(){},]{8,50}$/,\n agreement: /\\b([A-z0-9]){5,16}\\b/,\n email: /^[a-z0-9._+-]+@[a-z0-9.-]+\\.[a-z]{2,64}/i,\n phone: /^((\\+7|7|8)+([0-9]){10})$/,\n login: /[a-z0-9]+/i,\n amount: /^(0|[1-9]\\d*)(\\.\\d{0,2})?$/,\n integer: /^[+-]?\\d+$/i,\n date: /(19|20)\\d\\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])/,\n passportSeries: /([0-9]){4}/i,\n passportNumber: /([0-9]){6}/i,\n passportFull: /\\d{4}\\d{6}/i,\n card: /([0-9]){4}/i,\n mac: /^([0-9A-Fa-f]{12})$/,\n};\n\nconst MASK = {\n phone: '+{7}(000)000-00-00',\n date: '00.00.0000',\n amount: VALIDATION_REGEXP.amount,\n passportSeries: '00 00',\n passportNumber: '000000',\n passportFull: '0000 000000',\n card: '0000',\n mac: '**:**:**:**:**:**',\n};\n\nclass Input extends PureComponent {\n static defaultProps = {\n onChange: () => {},\n onBlur: () => {},\n onKeyUp: () => {},\n lazyMask: true,\n };\n\n // Added as a component property\n static defaultComponentState = {\n hasError: false,\n showErrorText: false,\n touched: false,\n showText: true,\n prettyText: false,\n tempValue: null,\n inputVal: null,\n showHelper: false,\n isFocused: false,\n noBlurValidation: false,\n };\n\n constructor(props) {\n super(props);\n // Set the default state immediately\n this.state = {\n ...Input.defaultComponentState,\n };\n this.inputRef = React.createRef();\n }\n\n resetStateWithUpdates(stateUpdates = {}) {\n // Rest operators ensure a new object with merged properties and values.\n // Requires the \"transform-object-rest-spread\" Babel plugin\n this.setState({ ...Input.defaultComponentState, ...stateUpdates }, () => {\n if (this.mask) {\n this.mask.value = '';\n this.mask.updateValue();\n }\n });\n }\n\n componentDidMount() {\n const { value, type, defaultValue, lazyMask } = this.props;\n this.validate(value);\n this.showText(type !== 'hidden' && !['password', 'fakePassword'].includes(type));\n const input = this.inputRef.current;\n const mask = MASK[type];\n if (input && mask) {\n import('imask').then(({ default: IMask }) => {\n this.mask = new IMask(input, {\n mask: mask,\n lazy: lazyMask,\n prepare: (added, masked) => {\n if (this.props.type === 'phone' && added === '8' && masked.value === '') {\n return '';\n }\n return added;\n },\n });\n this.mask.alignCursor();\n });\n\n if (type === 'date') {\n if (window) {\n window.addEventListener('click', this.hideHelper);\n }\n this.setTempValue(defaultValue);\n }\n }\n }\n\n componentWillUnmount() {\n const { type } = this.props;\n if (this.mask && this.mask.destroy) {\n this.mask.destroy();\n }\n if (type === 'date') {\n window.removeEventListener('click', this.hideHelper);\n }\n }\n\n // если есть minDate или maxDate, после выбора даты возможен ввод, нужно проверить значение\n checkDate = (value) => {\n const { minDate, maxDate } = this.props;\n let isValid = true,\n isValidMin,\n isValidMax;\n const valueDate = new Date(value);\n\n if (minDate) {\n const minD = new Date(minDate);\n isValidMin = valueDate > minD;\n isValid = isValidMin;\n }\n if (maxDate) {\n const maxD = new Date(maxDate);\n isValidMax = valueDate < maxD;\n isValid = isValidMin ? isValidMin && isValidMax : isValidMax;\n }\n return isValid;\n }\n\n validate = (value) => {\n // TODO: Требуется рефакторинг этой пачки if/else, а лучше всего компонента\n // eslint-disable-next-line sonarjs/cognitive-complexity\n return new Promise((resolve) => {\n const { type, min, max, required, validationRegexp } = this.props;\n const { hasError } = this.state;\n const validator = validationRegexp ? new RegExp(validationRegexp) : VALIDATION_REGEXP[type];\n if (validator !== undefined) {\n let invalid = type === 'name'\n ? validator.test(value)\n : !validator.test(value);\n if ((min && Number(value) < min) || (max && Number(value) > max)) {\n invalid = true;\n }\n\n if (!required && value === '') {\n invalid = false;\n }\n if (type === 'name' && required && value === '') {\n invalid = true;\n }\n\n if (type === 'date') {\n invalid = invalid || !this.checkDate(value);\n }\n\n if (hasError !== invalid) {\n this.setHasError(!hasError).then((res) => {\n resolve(res);\n });\n } else {\n resolve(!hasError);\n }\n } else {\n resolve(true);\n }\n });\n\n }\n\n check = (value) => {\n return new Promise((resolve) => {\n if (value !== undefined) {\n this.setTouched(true);\n this.validate(value).then((res) => {\n resolve(res);\n });\n } else {\n resolve(true);\n }\n });\n }\n\n setTouched = (value = true) => {\n this.setState({\n touched: value,\n });\n }\n\n setHasError = (value = true) => {\n return new Promise((resolve) => {\n this.setState({\n hasError: value,\n }, () => {\n resolve(!value);\n });\n });\n\n }\n\n setShowError = (value = false) => {\n this.setState({\n showErrorText: value,\n });\n }\n\n onKeyPress = (event, regexpToReplace, replaceTo, convertFunc) => {\n if (event.which === 13) {\n this.setState({ tempValue: null });\n const value = this.getValue(event, regexpToReplace, replaceTo, convertFunc);\n this.check(value).then((isValid) => {\n if (isValid) {\n this.setPrettyText(value);\n this.props.onChange(value);\n }\n });\n }\n }\n\n showText = (value) => {\n this.setState({\n showText: value,\n });\n }\n\n blur = (event, regexpToReplace, replaceTo, convertFunc) => {\n this.toggleFocus();\n\n if (this.state.noBlurValidation) {\n return;\n }\n\n const value = this.getValue(\n event,\n regexpToReplace,\n replaceTo,\n convertFunc,\n );\n\n this.check(value)\n .then(isValid => {\n if (isValid) {\n this.setPrettyText(value);\n this.setState({ inputVal: value });\n } else {\n this.setState({ inputVal: null });\n }\n this.setShowError(this.state.hasError);\n })\n .then(() => {\n this.props.onBlur(event, value);\n });\n }\n\n getValue = (event, regexpToReplace, replaceTo, convertFunc) => {\n const { type } = this.props;\n let value = this.mask && type !== 'date' ? this.mask.unmaskedValue : event.target.value;\n if (regexpToReplace) {\n value = value.replace(regexpToReplace, replaceTo ? replaceTo : '');\n }\n if (!this.mask && type !== 'date') {\n value = value.replace(/(^\\s*)/gi, '')\n .replace(/[ ]{2,}/gi, ' ');\n }\n if (convertFunc) {\n value = convertFunc(value);\n }\n return value;\n }\n\n change = (event, regexpToReplace, replaceTo, convertFunc) => {\n const { type } = this.props;\n if (this.mask) {\n this.mask.updateValue();\n }\n this.setState({ tempValue: event.target.value });\n const value = this.getValue(event, regexpToReplace, replaceTo, convertFunc);\n this.setShowError();\n this.check(value).then((isValid) => {\n if (isValid || type !== 'date') {\n this.props.onChange(value);\n }\n });\n }\n\n onPaste = (event) => {\n if (this.mask) {\n const masked = this.mask.masked;\n const text = event.clipboardData.getData('text');\n masked.value = text;\n this.props.onChange(masked.unmaskedValue);\n }\n }\n\n setPrettyText = (value) => {\n const { type } = this.props;\n if (value && type === 'date') {\n const dateArr = value.split('-');\n let prettyText = null;\n const date = new Date(value);\n if (date) {\n prettyText = `${dateArr[2]} ${CALENDAR_MONTHS_FOR_DATE[dateArr[1] - 1]} ${dateArr[0]}`;\n }\n this.setState({ prettyText });\n }\n }\n\n hidePretty = () => {\n this.setState({ prettyText: null });\n this.inputRef.current.focus();\n }\n\n setTempValue = (value) => {\n const date = new Date(value);\n const showDate = getDateToShow(date);\n this.setPrettyText(value);\n\n this.setState({\n tempValue: showDate,\n inputVal: value,\n showHelper: false,\n }, () => {\n if (this.mask) {\n this.mask.updateValue();\n this.check(value);\n this.props.onChange(value);\n }\n });\n }\n\n toggleFocus = () => {\n this.setState((prevState) => ({\n isFocused: !prevState.isFocused,\n }));\n }\n\n showHelper = (e, def) => {\n e.stopPropagation();\n const { showHelper } = this.state;\n const show = def || !showHelper;\n this.setState({ showHelper: show });\n }\n\n hideHelper = (e) => {\n const { showHelper } = this.state;\n showHelper ? this.showHelper(e, false) : null;\n }\n\n /**\n * Set email input value after selecting one from the list,\n * and validate it\n * @param {String} value email value, selected in the autocompletion list\n */\n onEmailSelect = value => {\n this.check(value).then(isValid => {\n this.setShowError(this.state.hasError);\n\n this.pushOnChangeEvent(value);\n\n this.setState({\n inputVal: isValid ? value : null,\n tempValue: value,\n });\n });\n };\n\n /**\n * Force onchange event on the input after email autocompletion form is closed\n * @param {String} value\n */\n pushOnChangeEvent(value) {\n if (!value) {\n return;\n }\n\n const input = this.inputRef.current;\n const valueSetter = Object.getOwnPropertyDescriptor(input, 'value')\n .set;\n const prototype = Object.getPrototypeOf(input);\n const prototypeValueSetter = Object.getOwnPropertyDescriptor(\n prototype,\n 'value',\n ).set;\n\n if (valueSetter && valueSetter !== prototypeValueSetter) {\n prototypeValueSetter.call(input, value);\n } else {\n valueSetter(input, value);\n }\n\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n setContainerRef = el => {\n this.containerRef = el;\n };\n\n setNoBlurValidation = (val = false) => {\n this.setState(() => ({\n noBlurValidation: val,\n }));\n };\n\n // TODO: Требуется рефакторинг этой пачки if/else, а лучше всего компонента\n // eslint-disable-next-line sonarjs/cognitive-complexity\n render() {\n // attrs - стандартные атрибуты\n const {\n type,\n value,\n errorMessage,\n required,\n autoComplete = 'off',\n className,\n minDate,\n maxDate,\n placeholder,\n emailDomains,\n description,\n tooltipText = '',\n minLength = -1,\n ...attrs\n } = this.props;\n const { touched, hasError, showText, showErrorText, prettyText, tempValue, inputVal, showHelper, isFocused } = this.state;\n let icon = null;\n let inputType = type || 'text';\n attrs.minLength = minLength;\n attrs.onChange = event => this.change(event);\n if ((type === 'phone') && MASK[type]) {\n attrs.onKeyUp = event => this.change(event);\n }\n attrs.onBlur = event => this.blur(event);\n switch (type) {\n case 'amount':\n inputType = 'tel';\n attrs.onChange = event => this.change(event, /,/g, '.');\n attrs.onBlur = event => this.blur(event, /,/g, '.');\n break;\n case 'date':\n inputType = 'text';\n attrs.onChange = event => this.change(event, null, null, convertDate);\n attrs.onBlur = event => this.blur(event, null, null, convertDate);\n attrs.onKeyPress = event => this.onKeyPress(event, null, null, convertDate);\n icon = this.showHelper(e)} />;\n break;\n case 'phone':\n case 'integer':\n inputType = 'tel';\n attrs.onChange = event => this.change(event, /\\D/g);\n break;\n case 'hidden':\n case 'fakePassword':\n case 'password':\n inputType = showText\n ? 'text'\n : type === 'fakePassword' ? 'text' : 'password';\n icon = this.showText(!showText)}\n onClick={() => this.showText(!showText)}\n />;\n attrs.onChange = event => this.change(event, /\\s/ig);\n break;\n case 'agreement':\n inputType = 'text';\n attrs.maxLength = 16;\n break;\n case 'email':\n case 'login':\n attrs.onChange = event => this.change(event, /[а-яё ]/ig);\n break;\n default:\n break;\n }\n\n const hasMask = this.mask && this.mask.masked.unmaskedValue;\n const emptyValue = !(hasMask || (this.inputRef.current && this.inputRef.current.value) || value);\n const valueLengthGreaterThanMin = required ? !emptyValue && (tempValue || value)?.length >= minLength : true;\n const valid = touched && !hasError && ((!emptyValue && !required) || (!emptyValue && required));\n const notValid = touched && ((required && emptyValue) || hasError || !valueLengthGreaterThanMin);\n const error = errorMessage && showErrorText ? {errorMessage} : null;\n const pretty = prettyText ? {prettyText} : null;\n return (\n \n \n {pretty}\n {\n tooltipText\n ? }\n stateful={true}\n >\n {tooltipText}\n \n : icon\n }\n {error}\n {description && {description}}\n {type === 'date' &&\n \n }\n {\n type === 'email' &&\n \n }\n \n );\n }\n}\n\nexport default Input;\n","import calendar from '@r1-frontend/ui-react/assets/img/icons/calendar.svg';\nimport question from '@r1-frontend/ui-react/assets/img/icons/question.svg';\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';\nimport styled, { css } from 'styled-components';\n\nconst commonStyles = css`\n &:disabled {\n border-color: ${COLORS.BgSecondary};\n background-color: ${COLORS.BgSecondary};\n color: ${COLORS.TextDisabled};\n }\n\n &::placeholder {\n color: ${COLORS.TextDisabled};\n }\n`;\n\nexport const InputContainer = styled.div`\n width: 100%;\n margin-bottom: 20px;\n position: relative;\n flex-direction: column;\n`;\n\nexport const Eye = styled.img`\n position: absolute;\n object-fit: none;\n top: 0;\n right: 10px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n\n &:hover {\n filter: invert(1);\n }\n`;\n\nexport const StyledInput = styled.input`\n height: 48px;\n width: 100%;\n padding: 14px 0 14px 16px;\n padding-right: ${props => props.isIconExist ? '50px' : '0'};\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n border: 2px solid ${p => p.notValid ? COLORS.Error : COLORS.BgSecondary};\n border-radius: ${BorderRadius.componentRadius};\n opacity: ${props => props.pretty ? '0' : '1'};\n transition: border 0.2s ease-in;\n outline: none;\n box-shadow: none;\n box-sizing: border-box;\n ${commonStyles};\n\n &:not(:placeholder-shown) {\n border-color: ${p => p.notValid ? COLORS.Error : COLORS.GRAY_LIGHT};\n }\n\n &:focus, &:hover {\n border-color: ${p => p.notValid ? COLORS.Error : COLORS.GRAY_DARK};\n\n & ~ ${Eye} {\n filter: invert(1);\n }\n }\n\n &::-ms-clear,\n &::-ms-reveal,\n &:focus::-ms-clear, ::-ms-reveal {\n display: none !important;\n }\n &[type=number]::-webkit-inner-spin-button,\n &[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n -webkit-text-security: ${props => props.showText ? 'none' : 'disc'}!important;\n`;\n\nexport const PrettyText = styled.div`\n height: 48px;\n padding: 14px 0 14px 16px;\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n border: 2px solid ${COLORS.BgSecondary};\n border-radius: ${BorderRadius.componentRadius};\n transition: border 0.2s ease-in;\n outline: none;\n box-shadow: none;\n background: ${COLORS.BgMain};\n align-items: center;\n width: inherit;\n position: absolute;\n box-sizing: border-box;\n top: 0;\n\n ${p => p.isDisabled\n ? css`\n border-color: ${COLORS.BgSecondary};\n background-color: ${COLORS.BgSecondary};\n color: ${COLORS.TextDisabled};\n `\n : css`\n &:focus, &:hover {\n border-color: ${COLORS.GRAY_DARK};\n }\n `\n }\n\n &:not(:placeholder-shown) {\n border-color: ${COLORS.GRAY_LIGHT};\n }\n`;\n\nexport const InputError = styled.p`\n display: block;\n ${FONTS.XXS};\n margin: 0;\n color: ${COLORS.Error};\n transition: opacity 0.2s ease-in-out;\n`;\n\nexport const CalendarIcon = styled.div`\n position: absolute;\n background-image: url(${calendar});\n background-repeat: no-repeat;\n background-position: 50%;\n top: 0;\n right: 10px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n`;\n\nexport const QuestionIcon = styled.div`\n position: absolute;\n background-image: url(${question});\n background-repeat: no-repeat;\n background-position: 50%;\n top: 0;\n right: 10px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n`;\n\nexport const DescriptionBlock = styled.div`\n ${FONTS.XXS};\n margin: 0;\n color: ${COLORS.TextDisabled};\n`;\n","import React, { forwardRef, useState } from 'react';\n\nimport { Input, InputContainer, InputError } from './styles';\n\nconst InputSimple = forwardRef((props, ref) => {\n const {\n value,\n placeholder,\n showText,\n errorMessage,\n className,\n isNotValid,\n inputType,\n onChange,\n onPaste,\n onBlur,\n onFocus,\n name,\n ...rest\n } = props;\n\n const onFocusHandler = e => {\n onFocus(e);\n setIsFocused(true);\n };\n\n const onBlurHandler = e => {\n onBlur(e);\n setIsFocused(false);\n };\n\n const [isFocused, setIsFocused] = useState(false);\n\n return (\n \n \n {\n isNotValid && {errorMessage}\n }\n \n );\n});\n\nInputSimple.defaultProps = {\n value: '',\n name: '',\n placeholder: '',\n showText: true,\n errorMessage: '',\n className: '',\n isNotValid: false,\n inputType: '',\n isValid: true,\n onChange: () => null,\n onPaste: () => null,\n onFocus: () => null,\n onBlur: () => null,\n};\n\nInputSimple.displayName = 'InputSimple';\nexport default InputSimple;\n","/**\n * @description This function remove all symbols from string, except numbers.\n * @param {string} value The value for phone number.\n * @return {string}\n */\nexport const replaceValueForPhone = (value, isAutocomplete = false) => {\n\n let onlyNumber = (value && value.length) ? value.replace(/\\D+/g, '') : '7';\n\n // проверка на то, что случайно к автоматически добавленой \"7\", не дописали еще \"8\";\n if (onlyNumber.indexOf('789') === 0 || onlyNumber.indexOf('788') === 0) {\n onlyNumber = '7' + onlyNumber.substr(2);\n }\n // если удалили весь номер и попытались ввести не с \"7\";\n if (onlyNumber.length && onlyNumber[0] !== '7') {\n onlyNumber = '7' + onlyNumber;\n }\n\n if (isAutocomplete && onlyNumber.indexOf('8') === 1) {\n onlyNumber = onlyNumber.slice(0, 1) + onlyNumber.slice(2);\n }\n\n onlyNumber = onlyNumber.substr(0, 11);\n\n return onlyNumber;\n};\n\n/**\n * @description This function formatting string as required +7(999)999-99-99\n * @param {string} value The value for phone number.\n * @returns {string}\n */\nexport const formatValueForPhone = value => {\n\n const onlyNumber = replaceValueForPhone(value);\n\n let formattedValue = '';\n\n for (let i = 0; i < onlyNumber.length; i++) {\n const currentNumeral = onlyNumber[i];\n switch (i) {\n case 0:\n formattedValue += `+${currentNumeral}(`;\n break;\n case 4:\n formattedValue += `)${currentNumeral}`;\n break;\n case 7:\n formattedValue += `-${currentNumeral}`;\n break;\n case 9:\n formattedValue += `-${currentNumeral}`;\n break;\n default:\n formattedValue += currentNumeral;\n }\n }\n return formattedValue;\n};\n","export const checkValidate = value => {\n if (!value || value.length < 2) {\n return false;\n }\n return !(/[0-9!\"№;%:?*()_+=~[\\]`@#$^&{},.<>/|\\\\']/).test(value);\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { checkValidate } from './helpers/nameDecorator';\n\n// eslint-disable-next-line react/display-name\nconst nameDecorator = Input => props => {\n\n const {\n placeholder,\n errorMessage,\n className,\n onChange,\n name,\n initialValue,\n ...rest\n } = props;\n\n const [isValid, setIsValid] = useState(false);\n const [isNotValid, setIsNotValid] = useState(false);\n const [value, setValue] = useState(initialValue);\n\n const onChangeHandler = event => {\n event.preventDefault();\n const value = event.target.value;\n setValue(value);\n setIsValid(checkValidate(value));\n };\n\n const clearInput = () => {\n setValue('');\n setIsValid(false);\n setIsNotValid(false);\n };\n\n const onBlurHandler = () => {\n setIsNotValid(!isValid);\n };\n\n useEffect(() => onChange({ value: value, isValid, clearInput }), [value, isValid]);\n useEffect(() => setValue(initialValue), [initialValue]);\n useEffect(() => setIsValid(checkValidate(value)), [value]);\n\n return (\n \n );\n};\n\nnameDecorator.defaultProps = {\n placeholder: 'Ваше имя',\n name: 'name',\n errorMessage: 'Ожидаются только буквы и дефисы',\n className: '',\n onChange: () => null,\n initialValue: '',\n};\n\nexport default nameDecorator;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { formatValueForPhone, replaceValueForPhone } from './helpers/phoneDecorator';\n\nconst INITIAL = 7;\n\n// eslint-disable-next-line react/display-name,sonarjs/cognitive-complexity\nconst phoneDecorator = Input => props => {\n\n const {\n placeholder,\n errorMessage,\n className,\n onChange,\n name,\n initialValue,\n hasError,\n ...rest\n } = props;\n\n const input = useRef({});\n\n const [isValid, setIsValid] = useState(false);\n const [isNotValid, setIsNotValid] = useState(false);\n const [isTouch, setIsTouch] = useState(false);\n const [value, setValue] = useState(initialValue);\n\n const onChangeHandler = event => {\n event.preventDefault();\n const incomingValue = event.target.value;\n const isAutocomplete = !event?.nativeEvent?.inputType;\n const newValue = replaceValueForPhone(incomingValue, isAutocomplete);\n setValue(newValue);\n checkValidate(newValue);\n };\n\n const onFocusHandler = () => {\n if (!isTouch) {\n setIsTouch(true);\n }\n if (!value || !value.length) {\n setValue(INITIAL);\n const timeout = setTimeout(() => {\n input.current.setSelectionRange(3, 3);\n clearTimeout(timeout);\n }, 150);\n }\n };\n\n const onBlurHandler = () => {\n if (value.length !== 11) {\n setIsNotValid(true);\n }\n };\n\n const checkValidate = value => {\n if (value && value.length === 11) {\n setIsValid(true);\n setIsNotValid(false);\n } else {\n setIsValid(false);\n }\n };\n\n const clearInput = () => {\n setIsTouch(false);\n setValue('');\n setIsValid(false);\n };\n\n useEffect(() => {\n if (value && value !== INITIAL) {\n onChange({ value, isValid, clearInput });\n }\n }, [value, isValid]);\n\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n\n useEffect(() => {\n checkValidate(value);\n }, [value]);\n\n return (\n \n );\n};\n\nphoneDecorator.defaultProps = {\n placeholder: 'Номер телефона',\n name: 'phone',\n errorMessage: 'Введите телефон в формате +7 (999) 999-99-99',\n className: '',\n onChange: () => null,\n initialValue: '',\n hasError: false,\n};\n\nexport default phoneDecorator;\n","import InputSimple from './InputSimple';\nexport { default as nameDecorator } from './decorators/nameDecorator';\nexport { default as phoneDecorator } from './decorators/phoneDecorator';\n\nexport default InputSimple;\n","import { 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';\nimport styled from 'styled-components';\n\nexport const InputContainer = styled.div`\n width: 100%;\n margin-bottom: 20px;\n position: relative;\n flex-direction: column;\n`;\n\nexport const Input = styled.input`\n height: 48px;\n width: 100%;\n padding: 14px 0 14px 16px;\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n border: 2px solid ${p => p.isNotValid ? COLORS.Error : COLORS.BgSecondary};\n border-radius: ${BorderRadius.componentRadius};\n transition: border 0.2s ease-in;\n outline: none;\n box-shadow: none;\n box-sizing: border-box;\n\n &:not(:placeholder-shown) {\n border-color: ${p => p.isNotValid ? COLORS.Error : COLORS.GRAY_LIGHT};\n }\n\n &:focus, &:hover {\n border-color: ${p => p.isNotValid ? COLORS.Error : COLORS.GRAY_DARK};\n }\n\n &:disabled {\n border-color: ${COLORS.BgSecondary};\n background-color: ${COLORS.BgSecondary};\n color: ${COLORS.TextDisabled};\n }\n\n &::placeholder {\n color: ${COLORS.TextDisabled};\n }\n\n &::-ms-clear,\n &::-ms-reveal,\n &:focus::-ms-clear, ::-ms-reveal {\n display: none !important;\n }\n\n &[type=number]::-webkit-inner-spin-button,\n &[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n -webkit-text-security: ${p => p.showText ? 'none' : 'disc'}!important;\n`;\n\nexport const InputError = styled.p`\n display: block;\n ${FONTS.XXS};\n margin: 0;\n color: ${COLORS.Error};\n transition: opacity 0.2s ease-in-out;\n`;\n","import React, { forwardRef } from 'react';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as ST from './styled';\n\nexport type TLabelType = Extract<\n keyof typeof COLORS,\n | 'LabelsText_1'\n | 'LabelsText_2'\n | 'LabelsText_3'\n | 'LabelsText_4'\n | 'LabelsText_5'\n | 'LabelsText_6'\n>;\n\nconst colorScheme: {\n [key in TLabelType]: Extract<\n keyof typeof COLORS,\n | 'LabelsBg_1'\n | 'LabelsBg_2'\n | 'LabelsBg_3'\n | 'LabelsBg_4'\n | 'LabelsBg_5'\n | 'LabelsBg_6'\n >;\n} = {\n LabelsText_1: 'LabelsBg_1',\n LabelsText_2: 'LabelsBg_2',\n LabelsText_3: 'LabelsBg_3',\n LabelsText_4: 'LabelsBg_4',\n LabelsText_5: 'LabelsBg_5',\n LabelsText_6: 'LabelsBg_6',\n};\n\nexport interface ILabelProps {\n /**\n * @deprecated use `type` property\n */\n textColor?: string,\n\n /**\n * @deprecated use `type` property\n */\n bgColor?: string,\n className?: string,\n children: React.ReactNode,\n outlined?: boolean,\n type?: TLabelType,\n onClick?: React.MouseEventHandler,\n}\n\nconst Label = forwardRef(({\n textColor,\n bgColor,\n className,\n outlined,\n children,\n type,\n onClick,\n}, ref): JSX.Element => {\n return (\n \n \n {children}\n \n \n );\n});\n\nLabel.displayName = 'Label';\n\nexport { Label };\n","import styled from 'styled-components';\n\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 { TLabelType } from './index';\n\ninterface ILabelProps {\n textColor?: string,\n bgColor?: string,\n outlined?: boolean,\n type?: TLabelType,\n}\n\nexport const Label = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n align-self: flex-start;\n padding: 2px 8px;\n\n ${FONTS.LABEL};\n color: ${p => p.textColor || COLORS.LabelsText_2};\n white-space: nowrap;\n\n border: ${p => p.outlined ? `1.5px solid ${p.type ? p.textColor : p.bgColor}` : 'none'};\n background-color: ${p => p.outlined ? 'transparent' : p.bgColor || COLORS.LabelsBg_2};\n border-radius: ${BorderRadius.labelRadius};\n`;\n\nexport const LabelContent = styled.span<{ type?: TLabelType }>`\n display: inline-flex;\n align-items: center;\n gap: 5px;\n\n ${({ type }) => type && `\n & > svg {\n #contour,\n #guts {\n stroke: ${COLORS[type]} !important;\n }\n }\n `}\n`;\n","import { css } from 'styled-components';\n\nconst THEME_CONF = 'flexboxgrid';\nexport const BASE_CONF = {\n gridSize: 12,\n gutterWidth: 1,\n outerMargin: 2,\n mediaQuery: 'only screen',\n container: {\n sm: 46,\n md: 61,\n lg: 76,\n },\n breakpoints: {\n xs: 0,\n sm: 48,\n md: 64,\n lg: 75,\n },\n};\n\nconst configCache = [];\nconst makeCacheId = props => JSON.stringify((props.theme && props.theme[THEME_CONF]) || {});\nconst resolveConfig = props => {\n const themeConf = (props.theme && props.theme[THEME_CONF]) || {};\n\n const conf = {\n ...BASE_CONF,\n ...themeConf,\n container: {\n ...BASE_CONF.container,\n ...themeConf.container,\n },\n breakpoints: {\n ...BASE_CONF.breakpoints,\n ...themeConf.breakpoints,\n },\n };\n\n conf.media = Object.keys(conf.breakpoints).reduce((media, breakpoint) => {\n const breakpointWidth = conf.breakpoints[breakpoint];\n media[breakpoint] = makeMedia(\n [\n conf.mediaQuery,\n breakpoint !== 0 && `(min-width: ${breakpointWidth}em)`,\n ]\n .filter(Boolean)\n .join(' and '),\n );\n return media;\n }, {});\n\n return conf;\n};\n\nexport const DIMENSION_NAMES = ['xs', 'sm', 'md', 'lg'];\n\nexport default function config(props) {\n const cacheId = makeCacheId(props);\n if (configCache[0] === cacheId) {\n return configCache[1];\n }\n\n const conf = resolveConfig(props);\n\n configCache[0] = cacheId;\n configCache[1] = conf;\n\n return conf;\n}\n\nfunction makeMedia(media) {\n return (...args) => css`\n @media ${media} {\n ${css(...args)}\n }\n `;\n}\n","import styled from 'styled-components';\n\nimport config, { DIMENSION_NAMES } from './config';\n\nconst offsetProps = DIMENSION_NAMES.map(d => d + 'Offset');\n\nconst Col = styled.div`\n box-sizing: border-box;\n flex: 0 0 auto;\n padding-right: ${p => config(p).gutterWidth / 2}rem;\n padding-left: ${p => config(p).gutterWidth / 2}rem;\n ${p => p.reverse && `\n flex-direction: column-reverse;\n `}\n ${p => Object.keys(p)\n .filter(k => ~DIMENSION_NAMES.indexOf(k))\n .sort((k1, k2) => DIMENSION_NAMES.indexOf(k1) - DIMENSION_NAMES.indexOf(k2))\n .map(k => config(p).media[k]`${\n Number.isInteger(p[k])\n // Integer value\n ? `\n flex-basis: ${100 / config(p).gridSize * p[k]}%;\n max-width: ${100 / config(p).gridSize * p[k]}%;\n display: block;\n `\n // Boolean\n : (p[k]\n // Auto-width\n ? `\n flex-grow: 1;\n flex-basis: 0;\n max-width: 100%;\n display: block;\n `\n // Hide element\n : 'display: none;'\n )\n }`)\n }\n ${p => Object.keys(p)\n .filter(k => ~offsetProps.indexOf(k))\n .map(k =>\n config(p).media[k.replace(/Offset$/, '')]`\n margin-left: ${100 / config(p).gridSize * p[k]}%;\n `)\n }\n`;\n\nCol.displayName = 'Col';\n\nexport default Col;\n","import styled from 'styled-components';\n\nimport config from './config';\n\nconst Row = styled.div`\n box-sizing: border-box;\n display: flex;\n flex: 0 1 auto;\n flex-direction: row;\n flex-wrap: wrap;\n margin-right: ${p => config(p).gutterWidth / 2 * -1}rem;\n margin-left: ${p => config(p).gutterWidth / 2 * -1}rem;\n ${p => p.reverse && `\n flex-direction: row-reverse;\n `}\n ${p => p.start && config(p).media[p.start]`\n justify-content: flex-start;\n `}\n ${p => p.center && config(p).media[p.center]`\n justify-content: center;\n `}\n ${p => p.end && config(p).media[p.end]`\n justify-content: flex-end;\n `}\n ${p => p.top && config(p).media[p.top]`\n align-items: flex-start;\n `}\n ${p => p.middle && config(p).media[p.middle]`\n align-items: center;\n `}\n ${p => p.bottom && config(p).media[p.bottom]`\n align-items: flex-end;\n `}\n ${p => p.around && config(p).media[p.around]`\n justify-content: space-around;\n `}\n ${p => p.between && config(p).media[p.between]`\n justify-content: space-between;\n `}\n ${p => p.first && config(p).media[p.first]`\n order: -1;\n `}\n ${p => p.last && config(p).media[p.last]`\n order: 1;\n `}\n`;\n\nRow.displayName = 'Row';\n\nexport default Row;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport Col from './components/Col';\nimport Row from './components/Row';\n\nexport const FlexBoxRow = props => ;\nexport const FlexBoxCol = props => ;\n\nconst ResponsiveName = ['xs', 'sm', 'md', 'lg'];\n\nconst ResponsiveType = PropTypes.oneOf(ResponsiveName);\nFlexBoxRow.propTypes = {\n reverse: PropTypes.bool,\n start: ResponsiveType,\n center: ResponsiveType,\n end: ResponsiveType,\n top: ResponsiveType,\n middle: ResponsiveType,\n bottom: ResponsiveType,\n around: ResponsiveType,\n between: ResponsiveType,\n first: ResponsiveType,\n last: ResponsiveType,\n children: PropTypes.node,\n};\n\nconst DimensionPropTypes = ResponsiveName.reduce((propTypes, dimension) => {\n propTypes[dimension] = PropTypes.oneOfType([PropTypes.number, PropTypes.bool]);\n propTypes[dimension + 'Offset'] = PropTypes.number;\n return propTypes;\n}, {});\n\nFlexBoxCol.propTypes = {\n ...DimensionPropTypes,\n reverse: PropTypes.bool,\n children: PropTypes.node,\n};\n","import { createContext, ReactElement, ReactNode, useContext } from 'react';\nimport Skeleton, { SkeletonProps } from 'react-loading-skeleton';\n\nexport { SkeletonTheme } from 'react-loading-skeleton';\n\nimport 'react-loading-skeleton/dist/skeleton.css';\n\nexport interface IWithSkeletonProps extends SkeletonProps {\n isLoading?: boolean,\n children: ReactElement | null,\n}\n\nexport const SkeletonContext = createContext(false);\n\nexport const WithSkeleton = (\n {\n isLoading,\n children,\n ...skeletonProps\n }: IWithSkeletonProps,\n): ReactElement | null => {\n const contextState = useContext(SkeletonContext);\n const currentState = isLoading;\n\n return (currentState === undefined ? contextState : currentState)\n ? \n : children;\n};\n\nexport type TWithSkeletonContextProps = {\n isLoading: boolean,\n children: ReactNode,\n}\n\nexport const WithSkeletonContext = (\n {\n isLoading,\n children,\n }: TWithSkeletonContextProps,\n): JSX.Element => {\n return (\n \n {children}\n \n );\n};\n\nexport { Skeleton };\n","import styled, { CSSObject } from 'styled-components';\n\nimport { COLORS } from '../../../tokens/colors';\nimport { FONTS } from '../../../tokens/fonts';\nimport DefaultPopup from '../defaultPopup';\n\nimport { wideBreakpoints } from './../../layouts/wideContainer/index';\n\nexport interface IBasePopupCustomStyles {\n topWrapper?: CSSObject,\n contentWrapper?: CSSObject,\n contentInner?: CSSObject,\n}\n\nexport const SDefaultPopup = styled(DefaultPopup)`\n padding: 32px 0 32px 32px !important;\n overflow: hidden !important;\n display: flex !important;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 16px 0 16px 16px !important;\n width: calc(100% - 48px) !important;\n }\n`;\n\nexport const TopWrapper = styled.div<{ customStyles?: IBasePopupCustomStyles }>`\n display: block;\n padding-right: 32px;\n padding-bottom: 16px;\n ${p => p?.customStyles?.topWrapper || ''};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding-right: 16px;\n }\n`;\n\nexport const ContentWrapper = styled.div<{ customStyles?: IBasePopupCustomStyles }>`\n width: 100%;\n height: 100%;\n padding-right: 8px;\n ${p => p?.customStyles?.contentWrapper || ''};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding-right: 0;\n }\n`;\n\nexport const ContentInner = styled.div<{ customStyles?: IBasePopupCustomStyles }>`\n height: 100%;\n width: 100%;\n padding-right: 17px;\n ${p => p?.customStyles?.contentInner || ''};\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: -16px;\n padding-right: 10px;\n }\n`;\n\nexport const Title = styled.h2`\n ${FONTS.H3}\n width: calc(100% - 42px);\n margin: 0;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4};\n margin-top: 10px;\n margin-left: 8px;\n }\n`;\n\nexport const Text = styled.p`\n ${FONTS.S};\n margin: 8px 0 16px 0;\n color: ${COLORS.TextInfo};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 12px;\n }\n`;\n","import React from 'react';\nimport { CSSObject } from 'styled-components';\n\nimport CustomScrollbars from '../../CustomScrollbar';\nimport { IDefaultPopup } from '../defaultPopup';\n\nimport * as ST from './styled';\n\nexport interface IBasePopup extends IDefaultPopup {\n title: string | JSX.Element,\n description?: string | JSX.Element,\n children: JSX.Element,\n customBasePopupStyles?: ST.IBasePopupCustomStyles,\n customDefaultPopupStyles?: CSSObject,\n customScrollBarStyles?: CSSObject,\n}\n\nconst BasePopup = ({\n children,\n title,\n description,\n customBasePopupStyles,\n customDefaultPopupStyles,\n customScrollBarStyles,\n ...props\n}: IBasePopup): JSX.Element => {\n const descIsString = typeof description === 'string';\n\n return (\n \n \n {title}\n {description\n ? descIsString\n ? {description}\n : description\n : null\n }\n \n \n \n \n {children}\n \n \n \n \n );\n};\n\nexport default BasePopup;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '../../../components/layouts/wideContainer';\nimport { BorderRadius } from '../../../tokens/borderRadius';\nimport { COLORS } from '../../../tokens/colors';\nimport { FONTS } from '../../../tokens/fonts';\nimport { BaseButton } from '../../buttons/baseButton';\nimport InputSimple, { nameDecorator, phoneDecorator } from '../../inputSimple';\n\nexport const InputPhone = styled(phoneDecorator(InputSimple))<{ width?: number }>`\n width: ${props => props.width || '100%'};\n margin-bottom: 8px;\n\n @media(max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const InputName = styled(nameDecorator(InputSimple))<{ width?: number }>`\n width: ${props => props.width || '100%'};\n margin-bottom: 8px;\n\n @media(max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const Inputs = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n margin-top: 24px;\n gap: 12px;\n align-items: flex-start;\n\n @media(max-width: ${wideBreakpoints.mobile}) {\n flex-wrap: wrap;\n margin-top: 16px;\n display: block;\n }\n`;\n\nexport const Container = styled.div<{ waitStatus: boolean }>`\n opacity: ${props => props.waitStatus ? '1' : '.5'};\n flex-direction: column;\n background: ${COLORS.BgMain};\n padding: 32px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n position: relative;\n`;\n\nexport const Title = styled.div`\n ${FONTS.H3};\n\n @media(max-width: ${wideBreakpoints.mobile}) {\n padding-right: 20px;\n max-width: 290px;\n }\n`;\n\nexport const Description = styled.div`\n ${FONTS.S};\n margin-top: 18px;\n`;\n\nexport const ChildrenBlock = styled.div`\n margin-top: 18px;\n`;\n\nexport const Button = styled(BaseButton)`\n max-width: 143px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const LegalWrap = styled.div`\n gap: 10px;\n margin-bottom: 16px;\n flex-wrap: nowrap;\n\n label {\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 2px;\n align-items: flex-start;\n }\n\n input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n\n &:checked {\n &:after {\n mask-size: 8px 5px;\n }\n }\n }\n }\n`;\n\nexport const AgreeTextWrap = styled.div`\n ${FONTS.MediumXXS};\n color: ${COLORS.TextPrimary};\n align-items: center;\n`;\n\nexport const AgreeTextLink = styled.a`\n ${FONTS.MediumXXS};\n color: ${COLORS.Link};\n`;\n","import React, { Dispatch, FC, ReactFragment, SetStateAction, useEffect, useState } from 'react';\n\nimport Throbber from '@r1-frontend/ui-react/components/loaders/Throbber';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { ICurrentCity } from '@r1-frontend/ui-react/organisms/NotAuth/types';\n\nimport { dataLayerPush } from '../../helpers';\nimport DefaultPopup from '../defaultPopup';\n\nimport * as ST from './styled';\n\nconst POLICY_URL = 'https://dom.ru/policy.pdf';\n\nexport type TField = {\n value: string,\n isValid: boolean,\n clearInput: () => void,\n}\n\nexport interface ISubmitParam {\n fio: string,\n phone: string,\n}\n\ninterface IProps {\n city?: ICurrentCity,\n isOpen: boolean,\n onClose: () => void,\n title?: string,\n description?: string,\n children?: ReactFragment,\n buttonText?: string,\n waitStatus?: boolean,\n nameInputValue?: string,\n phoneInputValue?: string,\n option: string,\n category: string,\n formFilledHandler?: () => void,\n submitRequest: (param: ISubmitParam) => void,\n}\n\nconst PopupCallback: FC = ({\n isOpen,\n onClose,\n title,\n description,\n children,\n buttonText,\n formFilledHandler,\n submitRequest,\n option,\n category,\n}) => {\n\n const [phone, setPhone] = useState();\n const [name, setName] = useState();\n const [isValidInputs, setIsValidInputs] = useState(false);\n const [startInput, setStartInput] = useState(false);\n const [waitStatus, setWaitStatus] = useState(true);\n\n useEffect(() => {\n setIsValidInputs(!!(phone?.isValid && name?.isValid));\n if (phone?.isValid && name?.isValid && formFilledHandler) {\n formFilledHandler();\n }\n }, [phone, name, formFilledHandler]);\n\n useEffect(() => {\n setStartInput(false);\n }, [option]);\n\n useEffect(() => {\n if (!isOpen) {\n setWaitStatus(true);\n }\n }, [isOpen]);\n\n // TODO: Убрать отправку в гугланалитику из компонента ui-react!\n const onChangeHandler = (stateInput: TField, _setState: Dispatch>) => {\n\n if (!startInput && stateInput.value !== undefined) {\n dataLayerPush({\n event: 'UAevent',\n category,\n action: 'started',\n label: option,\n });\n setStartInput(true);\n }\n _setState(stateInput);\n };\n\n const submitHandler = (event: { preventDefault: () => void }) => {\n event.preventDefault();\n setWaitStatus(false);\n\n if (isValidInputs) {\n submitRequest({\n fio: name?.value || '',\n phone: phone?.value || '',\n });\n\n phone?.clearInput();\n name?.clearInput();\n\n setPhone(undefined);\n setName(undefined);\n }\n };\n\n return (\n // @ts-ignore\n \n \n {title && {title}}\n {description && {description}}\n
\n {children && {children}}\n \n onChangeHandler(stateInput, setName)}\n placeholder='Ваше имя'\n name='name'\n errorMessage='Укажите ваше имя'\n required\n />\n onChangeHandler(stateInput, setPhone)}\n placeholder='Телефон'\n name='phone1'\n errorMessage='Укажите ваш телефон'\n />\n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default PopupCallback;\n","import checkIcon from '@r1-frontend/ui-react/assets/img/check-green.svg';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { SingleArrowDown } from '@r1-frontend/ui-react/components/svg/arrows';\nimport { BoxShadow } from '@r1-frontend/ui-react/tokens/boxShadow';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport React from 'react';\nimport { components } from 'react-select';\nimport styled, { css, keyframes } from 'styled-components';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: translateY(-16px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n`;\n\n/**\n * Добавочный элемент. Костыль для устранения обрезки тени, когда у родительского компонента overflow: hidden\n * Добавляется невидимый элемент под тенью списка, подымая край тени чуть выше\n */\nconst getBottomElement = () => {\n return css`\n &::after {\n content: \"\";\n position: absolute;\n bottom: -25px;\n width: 100%;\n height: 1px;\n background-color: transparent;\n z-index: 1;\n }\n `;\n};\n\nexport const StyledMenu = styled(components.Menu)`\n position: absolute;\n margin: 0 !important;\n top: calc(100% + 10px) !important;\n left: 0;\n box-shadow: ${BoxShadow.M} !important;\n border-radius: 16px !important;\n animation: ${fadeIn} 0.2s ease-in-out;\n z-index: 10000 !important;\n\n ${p => p.selectProps?.addBottomElement && getBottomElement()};\n`;\n\nexport const Menu = (props) => {\n const { children, ...rest } = props;\n\n return (\n \n {children}\n \n );\n};\n\nconst BtnWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 16px 30px 16px 20px;\n`;\n\nconst MenuListStyled = styled.div`\n width: 100%;\n border-radius: 16px;\n padding: 0;\n max-height: ${(props) => {\n if (!props.maxHeight) {\n return '300px';\n }\n return props.maxHeight + 'px';\n }};\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n`;\n\nexport const MenuList = (props) => {\n const { children, innerRef, selectProps: { btnProps, maxHeight } } = props;\n\n return (\n \n {children}\n {!!btnProps &&\n \n \n {btnProps.btnText}\n \n \n }\n \n );\n};\n\nconst StyledOption = styled.div`\n width: 100%;\n min-height: ${props => props.smallOption ? '36px' : '48px'};\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: ${COLORS.BgMain};\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n padding: 8px 30px 8px 20px;\n transition: background-color linear .2s;\n cursor: pointer;\n text-align: left;\n\n &:hover {\n background-color: ${COLORS.BgSecondary};\n }\n`;\n\nconst StyledOptionSmall = styled.div`\n width: 100%;\n min-height: 32px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: ${COLORS.BgMain};\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n padding: 6px 20px 6px 10px;\n transition: background-color linear .2s;\n cursor: pointer;\n text-align: left;\n\n &:hover {\n background-color: ${COLORS.BgSecondary};\n }\n\n @media (max-width: 1000px) {\n min-height: 28px;\n padding: 4px 20px 4px 10px;\n }\n`;\n\nconst StyledIcon = styled.img`\n width: 20px;\n position: absolute;\n right: 16px;\n`;\n\nconst StyledOptionLinked = styled.a`\n text-decoration: none;\n width: 100%;\n min-height: 48px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: ${COLORS.BgMain};\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n padding: 8px 30px 8px 20px;\n transition: background-color linear .2s;\n cursor: pointer;\n text-align: left;\n\n &:hover {\n background-color: ${COLORS.BgSecondary};\n }\n`;\n\nexport const OptionLinked = (props) => {\n const {\n children,\n isDisabled,\n isFocused,\n isSelected,\n innerRef,\n innerProps,\n } = props;\n const path = props.data.path ? props.data.path : './';\n return (\n \n {children}\n {isSelected && }\n \n );\n};\n\nexport const Option = (props) => {\n const {\n children,\n isDisabled,\n isFocused,\n isSelected,\n innerRef,\n innerProps,\n smallOption,\n } = props;\n return (\n \n {children}\n {isSelected && }\n \n );\n};\n\nexport const SmallOption = (props) => {\n const {\n children,\n isDisabled,\n isFocused,\n isSelected,\n innerRef,\n innerProps,\n } = props;\n return (\n \n {children}\n {isSelected && }\n \n );\n};\n\nconst ControlDiv = styled.div`\n box-sizing: border-box;\n width: 100%;\n min-width: 100px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n ${FONTS.XS};\n\n border: 2px solid ${props => {\n if (props.menuIsOpen) {\n return COLORS.Control;\n }\n\n return props.isFocused ? COLORS.GRAY_LIGHT : COLORS.BgSecondary;\n }};\n \n border-radius: 16px;\n transition: border-color linear .1s;\n \n background-color: ${(props) => {\n if (props.isDisabled) {\n return COLORS.BgSecondary;\n }\n\n return COLORS.BgMain;\n }};\n\n cursor: pointer;\n transition: all 0.2s linear;\n\n &:hover {\n border-color: ${props => props.menuIsOpen ? COLORS.GRAY_DARK : COLORS.GRAY_LIGHT};\n }\n`;\n\nexport const Control = ({ innerRef, innerProps, ...rest }) => {\n delete rest['cx'];\n return ;\n};\n\nexport const Container = styled.div`\n width: ${props => props.width || '100%'};\n display: block;\n\n ${props => !props.isSearchable && css`\n input {\n user-select: none;\n }\n `}\n`;\n\nconst Icon = styled.span`\n background: url(\"${({ path }) => path}\") 50% 50% no-repeat;\n width: ${({ size = 0 }) => size}px;\n height: ${({ size = 0 }) => size}px;\n\n ${props => props.isOpen && css`transform: rotate(180deg); transition: 0.30s;`}\n`;\n\nconst IconWrap = styled.div`\n width: ${({ size = 24 }) => size}px;\n height: ${({ size = 24 }) => size}px;\n\n ${props => props.isOpen && css`transform: rotate(180deg); transition: 0.30s;`}\n`;\n\nconst Indicator = styled(components.DropdownIndicator)`\n width: 17px;\n height: 100%;\n justify-content: center;\n align-items: center;\n margin-right: 20px;\n padding: 0 !important;\n`;\n\nconst Clear = styled(components.ClearIndicator)`\n width: 17px;\n height: 100%;\n justify-content: center;\n align-items: center;\n margin-right: 20px;\n padding: 0 !important;\n`;\n\nexport const DropdownIndicator = props => {\n const isOpen = props?.selectProps?.menuIsOpen;\n\n return (\n \n \n \n \n \n );\n};\n\nexport const ClearIndicator = props => {\n const isOpen = props?.selectProps?.menuIsOpen;\n const color = isOpen ? COLORS.TextWhite : COLORS.TextPrimary;\n return (\n \n \n \n );\n};\n\nexport const customStyles = {\n valueContainer: (provided) => ({\n ...provided,\n padding: '2px 16px',\n }),\n noOptionsMessage: (provided) => ({\n ...provided,\n font: 'var(--regular-xs)',\n color: COLORS.TextDisabled,\n textAlign: 'left',\n padding: '8px 30px 8px 20px',\n }),\n loadingMessage: (provided) => ({\n ...provided,\n font: 'var(--regular-xs)',\n color: COLORS.TextDisabled,\n }),\n placeholder: (provided) => ({\n ...provided,\n color: COLORS.TextDisabled,\n }),\n input: (provided) => ({\n ...provided,\n color: COLORS.TextPrimary,\n }),\n singleValue: (provided, state) => ({\n ...provided,\n color: state.selectProps.menuIsOpen ? COLORS.TextWhite : COLORS.TextPrimary,\n }),\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactSelect from 'react-select';\nimport AsyncSelect from 'react-select/async';\n\nimport {\n ClearIndicator,\n Container,\n Control,\n customStyles,\n DropdownIndicator,\n Menu,\n MenuList,\n Option,\n OptionLinked,\n SmallOption,\n} from '../dropdown';\n\nconst Select = ({ width, tag, selectRef, components, asyncMode, isSearchable, isLinked, smallOption, dataTest, ...rest }) => {\n const SelectComponent = asyncMode ? AsyncSelect : ReactSelect;\n\n const SelectOption = isLinked\n ? OptionLinked\n : smallOption\n ? SmallOption\n : Option;\n\n return (\n \n \n \n );\n};\n\nSelect.propTypes = {\n width: PropTypes.string,\n components: PropTypes.object,\n asyncMode: PropTypes.bool,\n isSearchable: PropTypes.bool,\n smallOption: PropTypes.bool,\n};\n\nSelect.defaultProps = {\n isSearchable: false,\n};\n\nexport default Select;\n","import { createSvg } from '../createSvg';\n\nconst ArrowLeft = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return \n \n \n ;\n};\n\nexport default createSvg(\n ArrowLeft,\n 'arrow-left',\n);\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst SingleArrowDown = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n \n \n \n );\n};\n\nexport default createSvg(\n SingleArrowDown,\n 'single-arrow-down',\n);\n","import { createSvg } from '../createSvg';\n\nconst DocumentText = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return \n \n \n \n \n ;\n};\n\nexport default createSvg(\n DocumentText,\n 'document-text',\n);\n","import { createSvg } from '../createSvg';\n\nconst Location = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n );\n};\n\nexport default createSvg(\n Location,\n 'location',\n);\n","import { createSvg } from '../createSvg';\n\nconst InfoCircle = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return <>\n \n \n \n \n \n \n \n ;\n};\n\nexport default createSvg(\n InfoCircle,\n 'info-circle',\n);\n","import { createSvg } from '../createSvg';\n\nconst InfoCircleFlip = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return <>\n \n \n \n \n \n \n \n ;\n};\n\nexport default createSvg(\n InfoCircleFlip,\n 'info-circle-flip',\n);\n","import { createSvg } from '../createSvg';\n\nconst TickCircle = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return <>\n \n \n \n \n \n \n ;\n};\n\nexport default createSvg(\n TickCircle,\n 'tick-circle',\n);\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst User = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n );\n};\n\nexport default createSvg(\n User,\n 'user',\n);\n","import { BorderRadius } from '../../tokens/borderRadius';\nimport { COLORS } from '../../tokens/colors';\n\nconst common = {\n style: {\n boxShadow: '0 3px 16px 0 rgba(0, 0, 0, 0.24)',\n borderRadius: BorderRadius.labelRadius,\n minWidth: '28px',\n minHeight: '28px',\n padding: '8px 12px',\n display: 'block',\n transition: 'opacity .3s ease-in-out, visibility .3s ease-in-out',\n },\n arrowStyle: {\n borderColor: false,\n transition: false,\n },\n};\n\nconst defaultTheme = {\n light: {\n style: {\n ...common.style,\n background: COLORS.BgMain,\n color: COLORS.TextPrimary,\n },\n arrowStyle: {\n ...common.arrowStyle,\n color: COLORS.BgMain,\n },\n },\n dark: {\n style: {\n ...common.style,\n background: COLORS.ButtonPrimary,\n color: COLORS.TextWhite,\n },\n arrowStyle: {\n ...common.arrowStyle,\n color: COLORS.ButtonPrimary,\n },\n },\n};\n\nexport default defaultTheme;\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport themes from './theme';\n\nconst ToolTip = ({ theme = 'light', stateful = false, customStyles, ...props }) => {\n const [hasMounted, setHasMounted] = useState(false);\n const [Component, setComponent] = useState(<>);\n\n useEffect(() => {\n if (stateful) {\n import('./components/StatefulTooltip').then(component => {\n setComponent(component);\n setHasMounted(true);\n });\n } else {\n import('./components/StatelessTooltip').then(component => {\n setComponent(component);\n setHasMounted(true);\n });\n }\n }, [stateful]);\n\n const additionalStyles = useMemo(() => {\n if (themes[theme]) {\n const { style, arrowStyle } = themes[theme];\n return {\n style: {\n ...style,\n ...customStyles?.style,\n },\n arrowStyle: {\n ...arrowStyle,\n ...customStyles?.arrowStyle,\n },\n };\n }\n }, [customStyles, theme]);\n\n return hasMounted && (\n \n );\n};\n\nexport default ToolTip;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nconst emptyIndent = 'margin:0;';\n\ntype THeaderColor =\n | 'TextPrimary'\n | 'TextSecondary'\n | 'TextInfo'\n | 'TextHint'\n | 'TextDisabled'\n | 'TextWhite';\n\nconst getColor = ({ $color = 'TextPrimary' }: { $color?: THeaderColor }): string => {\n return COLORS[$color];\n};\n\nexport type THStaticSize = {\n $desktop?: never,\n $mobile?: never,\n} | {\n $desktop: boolean,\n $mobile?: never,\n} | {\n $desktop?: never,\n $mobile: boolean,\n}\n\nexport type THBaseProps = {\n $withIndent?: boolean,\n $inline?: boolean,\n $color?: THeaderColor,\n} & THStaticSize;\n\nexport type THSmallerProps = {\n $smaller?: boolean,\n} & THBaseProps;\n\n/**\n * Desktop: 56/68\n * Mobile: 32/40\n */\nexport const H1 = styled.h1`\n width: ${({ $inline = false }) => $inline ? 'auto' : '100%'};\n ${({ $withIndent = true }) => $withIndent ? 'margin: 0 0 24px;' : emptyIndent}\n \n color: ${getColor};\n\n ${({ $desktop }) => $desktop ? FONTS.H0 : FONTS.H2};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $withIndent = true }) => $withIndent ? 'margin-bottom: 56px;' : emptyIndent}\n ${({ $mobile }) => $mobile ? FONTS.H2 : FONTS.H0};\n }\n`;\n\n/**\n * Desktop: 40/52, $smaller: 32/40\n * Mobile: 24/32\n */\nexport const H2 = styled.h2`\n width: ${({ $inline = false }) => $inline ? 'auto' : '100%'};\n ${({ $withIndent = true }) => $withIndent ? 'margin: 0 0 24px;' : emptyIndent}\n \n color: ${getColor};\n\n ${({ $desktop, $smaller }) => $desktop ? $smaller ? FONTS.H2 : FONTS.H1 : FONTS.H3};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $mobile, $smaller = false }) => $mobile ? FONTS.H3 : $smaller ? FONTS.H2 : FONTS.H1};\n }\n`;\n\n/**\n * Desktop: 24/32\n * Mobile: 20/28\n */\nexport const H3 = styled.h3`\n width: ${({ $inline = false }) => $inline ? 'auto' : '100%'};\n ${({ $withIndent = true }) => $withIndent ? 'margin: 0 0 16px;' : emptyIndent}\n\n color: ${getColor};\n\n ${({ $desktop }) => $desktop ? FONTS.H3 : FONTS.H4};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $mobile }) => $mobile ? FONTS.H4 : FONTS.H3};\n ${({ $withIndent = true }) => $withIndent ? 'margin: 0 0 24px;' : emptyIndent}\n }\n`;\n\n/**\n * Desktop: 20/28, $smaller: 16/24\n * Mobile: 16/24\n */\nexport const H4 = styled.h4`\n width: ${({ $inline = false }) => $inline ? 'auto' : '100%'};\n ${({ $withIndent = true }) => $withIndent ? 'margin: 0 0 16px;' : emptyIndent}\n\n color: ${getColor};\n\n ${({ $desktop, $smaller }) => $desktop ? $smaller ? FONTS.H5 : FONTS.H4 : FONTS.H5};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $mobile, $smaller = false }) => $smaller || $mobile ? FONTS.H5 : FONTS.H4};\n }\n`;\n\n/**\n * All: 14/20\n */\nexport const H5 = styled.h5>`\n width: ${({ $inline = false }) => $inline ? 'auto' : '100%'};\n ${({ $withIndent = true }) => $withIndent ? 'margin: 0 0 16px;' : emptyIndent}\n\n color: ${getColor};\n\n ${FONTS.H6};\n`;\n\n/**\n * @deprecated\n */\nexport const H6 = styled.h6>`\n width: ${({ $inline = false }) => $inline ? 'auto' : '100%'};\n\n color: ${getColor};\n\n ${FONTS.LABEL};\n\n text-transform: uppercase;\n`;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nconst BaseParagraph = styled.p`\n margin: 0;\n color: ${({ $color }) => $color ? $color : 'inherit'};\n ${({ $withIndent }) => $withIndent ? 'margin-bottom: 24px;' : ''}\n`;\n\nexport type TPBaseProps = {\n $withIndent?: boolean,\n $color?: COLORS,\n}\n\nexport type TPSmallerProps = {\n $smaller?: boolean,\n} & TPBaseProps;\n\ntype TActionDesktopFont = Extract<\n keyof typeof FONTS,\n | 'Medium'\n | 'MediumS'\n | 'MediumXS'\n | 'MediumXXS'\n | 'MediumXXXS'\n>;\n\ntype TActionDesktopStylesProps = {\n $mobile: TActionDesktopFont,\n $desktop: TActionDesktopFont,\n $smaller?: boolean,\n};\n\nexport const createActionDesktopElementStyles = ({ $mobile, $desktop, $smaller }: TActionDesktopStylesProps) => `\n b {\n ${FONTS[$mobile]};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n b {\n ${FONTS[$smaller ? $mobile : $desktop]};\n }\n }\n`;\n\nexport const Paragraph1 = styled(BaseParagraph)`\n ${FONTS.L};\n\n b {\n ${FONTS.Medium};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $withIndent = false }) => $withIndent ? 'margin-bottom: 56px;' : ''}\n ${FONTS.XXL};\n }\n`;\n\nexport const Paragraph2 = styled(BaseParagraph)`\n ${FONTS.M};\n\n b {\n ${FONTS.Medium};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $smaller = false }) => $smaller ? FONTS.L : FONTS.XL};\n }\n`;\n\nexport const Paragraph3 = styled(BaseParagraph)`\n ${FONTS.S};\n ${createActionDesktopElementStyles({ $mobile: 'MediumS', $desktop: 'Medium' })};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.M};\n }\n`;\n\nexport const Paragraph4 = styled(BaseParagraph)`\n ${FONTS.XS};\n ${({ $smaller = false }) => createActionDesktopElementStyles({ $mobile: 'MediumXS', $desktop: 'MediumS', $smaller })};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ $smaller = false }) => $smaller ? FONTS.XS : FONTS.S};\n }\n`;\n\nexport const Paragraph5 = styled(BaseParagraph)`\n ${FONTS.XXS};\n\n b {\n ${FONTS.MediumXXS};\n }\n`;\n\nexport const StoryParagraph = styled(BaseParagraph)`\n ${FONTS.StoriesS};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.Stories}\n }\n`;\n","import styled from 'styled-components';\n\nimport ListContainer from '@r1-frontend/ui-react/experimental/containers/ListContainer';\n\nconst FullWidthListContainer = styled(ListContainer)`\n width: 100%;\n`;\n\nexport default FullWidthListContainer;\n","import styled, { css } from 'styled-components';\n\nimport { mobileFirstBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\n/**\n * Indent variations:\n *\n * You should use a padding / margin css notation without `px`.\n *\n * Static\n * $united: 4\n * $united: 4, 6 // 4 for horizontal and 6 for vertical (aka top-bottom, left-right of a css margin or padding)\n * $united: 4, 6, 8 // 4 for top, 6 for vertical and 8 for bottom (aka top, left-right, bottom of a css margin or padding);\n * $united: 4, 6, 8, 12 // 4 for top, 6 for right, 8 for bottom and 12 for left (aka top/right/bottom/left of a css margin or padding);\n *\n * Dynamic\n * $mobile: 4, $desktop: 16\n * $mobile: 4, 8, $desktop: 12, 16\n * $mobile: 4, 8, 12, $desktop: 8, 12, 16\n * $mobile: 4, 8, 12, 16, $desktop: 8, 12, 16, 20\n */\nexport const indents = [0, 4, 8, 12, 16, 20, 24, 32, 36, 40, 48, 64, 80] as const;\n\nexport type Indent = typeof indents[number];\n\n/**\n * Проверяет принадлежит ли переданное число типу Indent\n */\nexport const isIndent = (_number: number): _number is Indent => {\n return !!indents.find(el => el === _number);\n};\n\ntype StaticIndent = [Indent];\ntype TopRightPattern = [Indent, Indent];\ntype TopRightBottomPattern = [Indent, Indent, Indent];\ntype FullPattern = [Indent, Indent, Indent, Indent];\n\ntype TUnionIndentPattern = StaticIndent | TopRightPattern | TopRightBottomPattern | FullPattern\n\nexport type TContainerProps = {\n $united: TUnionIndentPattern,\n $mobile?: never,\n $desktop?: never,\n} | {\n $united?: never,\n $mobile: TUnionIndentPattern,\n $desktop: TUnionIndentPattern,\n}\n\nconst getMarginFromCompositeValue = (indent: TUnionIndentPattern) => indent.map(item => `${item}px`).join(' ');\n\nexport const getPaddingByIncomingIndent = ({ $united, $mobile, $desktop }: TContainerProps) => {\n if ($united) {\n return css`\n padding: ${getMarginFromCompositeValue($united)};\n `;\n } else if ($mobile && $desktop) {\n return css`\n padding: ${getMarginFromCompositeValue($mobile)};\n\n @media (min-width: ${mobileFirstBreakpoints.mobile}) {\n padding: ${getMarginFromCompositeValue($desktop)};\n }\n `;\n }\n};\n\nconst IndentContainer = styled.div`\n display: block;\n\n ${getPaddingByIncomingIndent};\n`;\n\nexport default IndentContainer;\n","import { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const sizes = [0, 4, 8, 12, 16, 20, 24, 32, 36, 40, 48, 64, 80] as const;\n\nexport type TListSize = typeof sizes[number];\n\ntype TListSizeProps = {\n $size: TListSize,\n $desktop?: never,\n $mobile?: never,\n} | {\n $size?: never,\n $desktop: TListSize,\n $mobile: TListSize,\n}\n\ntype TAlign = CSSProperties['alignItems'];\ntype TJustify = CSSProperties['justifyContent'];\n\nexport type TListProps = {\n $direction?: 'column' | 'row',\n $reverse?: boolean,\n $wrap?: 'wrap' | 'wrap-reverse' | 'nowrap',\n $justifyContent?: TJustify,\n $alignItems?: TAlign,\n} & TListSizeProps;\n\nconst getGapBySizeProps = ({ $size, $desktop, $mobile }: TListProps) => {\n if (typeof $size !== 'undefined') {\n return css`\n gap: ${() => `${$size}px`};\n `;\n } else {\n return css`\n gap: ${() => `${$mobile}px`};\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n gap: ${() => `${$desktop}px`};\n }\n `;\n }\n};\n\nconst ListContainer = styled.div`\n display: flex;\n \n margin: 0;\n padding: 0;\n \n ${({ $direction = 'row', $reverse = false, $wrap = 'wrap', $justifyContent = 'normal', $alignItems = 'normal' }) => css`\n flex-direction: ${$direction}${$reverse ? '-reverse' : ''};\n flex-wrap: ${$wrap};\n justify-content: ${$justifyContent};\n align-items: ${$alignItems};\n `}\n \n ${getGapBySizeProps}\n`;\n\nexport default ListContainer;\n","import React, { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\ntype TCoordinate = Partial<{\n [key in\n | '$top'\n | '$left'\n | '$bottom'\n | '$right'\n ]: T\n}>\n\ninterface IPosition {\n $position?: Exclude,\n $zIndex?: CSSProperties['zIndex'],\n}\n\ninterface ICoordinatePatternPosition extends IPosition, TCoordinate {\n $inset?: never,\n}\ninterface IInsetPatternPosition extends IPosition, TCoordinate {\n $inset: number,\n}\n\nexport type TNonStaticPosition =\n | ICoordinatePatternPosition\n | IInsetPatternPosition;\n\nexport type TNonStaticProps = {\n $united: TNonStaticPosition,\n $desktop?: never,\n $mobile?: never,\n} | {\n $united?: never,\n $desktop: TNonStaticPosition,\n $mobile: TNonStaticPosition,\n}\n\nconst valueOrAuto = (value: number | undefined) => value !== undefined ? `${value}px` : 'auto';\n\nconst getPositionFromCompositeValue = ({\n $position = 'absolute',\n $top,\n $left,\n $right,\n $bottom,\n $inset,\n $zIndex,\n}: TNonStaticPosition) =>\n css`\n position: ${$position};\n z-index: ${$zIndex || 1};\n top: ${valueOrAuto($inset || $top)};\n left: ${valueOrAuto($inset || $left)};\n right: ${valueOrAuto($inset || $right)};\n bottom: ${valueOrAuto($inset || $bottom)};\n `;\n\nexport const getPositionByIncomingProps = (props: TNonStaticProps) => {\n if (props.$united) {\n return getPositionFromCompositeValue(props.$united);\n } else {\n const { $mobile, $desktop } = props;\n\n return css`\n ${getPositionFromCompositeValue($mobile)}\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${getPositionFromCompositeValue($desktop)}\n }\n `;\n }\n};\n\nconst NonStaticContainer = styled.div`\n ${getPositionByIncomingProps};\n`;\n\nexport const withPosition = >(\n Component: React.ComponentType,\n props: TNonStaticProps,\n) => {\n return styled(Component)`\n ${getPositionByIncomingProps(props)};\n `;\n};\nexport default NonStaticContainer;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const radius = [8, 16, 24, 32] as const;\n\nexport type TRadius = typeof radius[number];\n\nexport type TRounderProps = {\n $radius: TRadius,\n $desktop?: never,\n $mobile?: never,\n} | {\n $radius?: never,\n $desktop: TRadius,\n $mobile: TRadius,\n}\n\nexport const getRadiusByIncomingProps = ({ $radius, $desktop, $mobile }: TRounderProps) => {\n if ($radius) {\n return css`border-radius: ${$radius}px`;\n } else {\n return css`\n border-radius: ${$mobile}px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n border-radius: ${$desktop}px;\n }\n `;\n }\n};\n\nconst RounderContainer = styled.div`\n ${getRadiusByIncomingProps};\n overflow: hidden;\n`;\n\nexport const withRadius = (Component: (props: T) => JSX.Element, props: TRounderProps) => {\n return styled(Component)`\n ${getRadiusByIncomingProps(props)};\n overflow: hidden;\n `;\n};\n\nexport default RounderContainer;\n","import { useMemo } from 'react';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\ninterface ITooltipArrowProps {\n color: COLORS,\n direction?: 'left' | 'right' | 'top' | 'bottom',\n}\n\n/**\n * Вынесено отдельным компонентом (вне ui-react/svg/icons) поскольку\n * не находится в дизайн системе и не поддерживает цветовую схему `TSvgTypes`\n *\n * TODO согласовать с дизайнерами данный компонент как иконку,\n * либо заменить на существующую из дизайн системы\n */\nexport const TooltipArrow = ({ color, direction = 'top' }: ITooltipArrowProps): JSX.Element => {\n const transform = useMemo(() => {\n switch (direction) {\n case 'bottom':\n return 'rotate(0deg)';\n case 'right':\n return 'rotate(-90deg) translateY(2px)';\n case 'left':\n return 'rotate(90deg) translateY(2px)';\n case 'top':\n return 'rotate(180deg)';\n }\n }, [direction]);\n\n return (\n \n \n \n );\n};\n","import { CSSProperties } from 'react';\nimport styled from 'styled-components';\n\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { createCornerMap } from '@r1-frontend/ui-react/experimental/tooltip/helpers';\nimport { TTooltipPosition } from '@r1-frontend/ui-react/experimental/tooltip/types';\n\nexport const TooltipArrowContainer = styled(IndentContainer)<{ position: TTooltipPosition }>`\n display: flex;\n align-self: ${({ position }) => createCornerMap({\n position,\n onCornerLeft: 'flex-start',\n onCornerRight: 'flex-end',\n onDefault: undefined,\n })};\n`;\n\nexport const TooltipContainer = styled(ListContainer)>`\n align-items: center;\n z-index: ${p => p.zIndex};\n`;\n","import React, { forwardRef, useMemo } from 'react';\n\nimport {\n IndentContainer,\n RounderContainer,\n} from '@r1-frontend/ui-react/experimental/containers';\nimport { createCornerMap } from '@r1-frontend/ui-react/experimental/tooltip/helpers';\nimport { TooltipArrow } from '@r1-frontend/ui-react/experimental/tooltip/TooltipArrow';\nimport { ITooltipBodyProps } from '@r1-frontend/ui-react/experimental/tooltip/types';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as ST from './styled';\n\nconst TooltipBody = forwardRef(({\n content,\n position = 'top-center',\n withArrow = true,\n\n background = COLORS.Control,\n arrowIndent = 16,\n radius = 8,\n zIndex,\n\n className,\n}, ref) => {\n const arrowDirection = useMemo(() => {\n switch (true) {\n case position === 'left':\n return 'left';\n case position === 'right':\n return 'right';\n case position.startsWith('top'):\n return 'top';\n default:\n return 'bottom';\n }\n }, [position]);\n\n return (\n \n {\n withArrow && \n \n \n }\n \n \n {content}\n \n \n \n );\n});\n\nTooltipBody.displayName = 'ForwardedTooltip';\n\nexport default TooltipBody;\n","import React, {\n Children,\n cloneElement,\n useEffect,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport noop from 'lodash/noop';\n\nimport { useClickOutside } from '@r1-frontend/shared/hooks/useClickOutside';\nimport { useIsomorphicLayoutEffect } from '@r1-frontend/shared/hooks/useIsomorphicLayoutEffect';\nimport { useRootElement } from '@r1-frontend/shared/hooks/useRootElement';\n\nimport { getTooltipPosition } from './helpers';\nimport TooltipBody from './TooltipBody';\nimport { isDOMTypeElement, TTooltipProps } from './types';\n\nconst WithStatelessTooltip = ({\n children,\n content,\n\n position = 'top-center',\n isShown,\n withArrow,\n\n closeOnClickOutside = true,\n closeOnTransition = false,\n closeOnScroll,\n onClose,\n\n background,\n gap = 4,\n arrowIndent = 16,\n radius,\n zIndex,\n}: TTooltipProps) => {\n const root = useRootElement({ id: 'tooltip-root' });\n const tooltipRef = useRef(null);\n const child = Children.only(children);\n const childRef = useRef();\n const target = childRef.current;\n\n useClickOutside(\n tooltipRef,\n closeOnClickOutside && typeof onClose === 'function' && isShown\n ? onClose\n : noop,\n );\n\n useIsomorphicLayoutEffect(() => {\n const tooltip = tooltipRef.current;\n\n if (!target || !tooltip) {\n return;\n }\n\n const { left, top } = getTooltipPosition({\n child: target,\n tooltip,\n position,\n gap,\n arrowIndent: withArrow ? arrowIndent : 0,\n });\n\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n tooltip.style.position = 'absolute';\n }, [position, gap, arrowIndent, isShown, withArrow, target]);\n\n useEffect(() => {\n const onScroll = () => {\n if (closeOnScroll && typeof onClose === 'function' && isShown) {\n onClose();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n return () => window.removeEventListener('scroll', onScroll);\n }, [closeOnScroll, onClose]);\n\n useEffect(() => {\n const onTransition = debounce(() => {\n if (closeOnTransition && typeof onClose === 'function' && isShown) {\n onClose();\n }\n }, 100);\n\n window.addEventListener('transitionstart', onTransition);\n return () => window.removeEventListener('transitionstart', onTransition);\n }, [closeOnTransition, onClose]);\n\n const setRef = (element: HTMLElement) => {\n childRef.current = element;\n\n const ref = isDOMTypeElement, HTMLElement>(child)\n ? child.ref\n : null;\n\n if (!ref) {\n return;\n }\n\n if (typeof ref === 'function') {\n return ref(element);\n }\n\n (ref as React.MutableRefObject).current = element;\n };\n\n return (\n <>\n {cloneElement(child, { ref: setRef })}\n {root &&\n isShown &&\n target &&\n createPortal(\n ,\n root,\n )}\n \n );\n};\n\nexport default WithStatelessTooltip;\n","import { RefObject, useEffect } from 'react';\n\nexport const useClickOutside = (\n ref: RefObject,\n callback: () => void,\n) => {\n const handleClick = (e: MouseEvent | TouchEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n callback();\n }\n };\n\n useEffect(() => {\n document.addEventListener('mouseup', handleClick);\n document.addEventListener('touchend', handleClick);\n\n return () => {\n document.removeEventListener('mouseup', handleClick);\n document.removeEventListener('touchend', handleClick);\n };\n });\n};\n","import React, { CSSProperties } from 'react';\n\nimport { Indent } from '@r1-frontend/ui-react/experimental/containers/IndentContainer';\nimport { TRadius } from '@r1-frontend/ui-react/experimental/containers/RounderContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport type TTooltipPosition =\n| 'bottom-left'\n| 'bottom-center'\n| 'bottom-right'\n| 'right'\n| 'top-right'\n| 'top-center'\n| 'top-left'\n| 'left';\n\n/**\n* Нужно для того, чтобы тип у {ref} не мог быть string, так как он deprecated\n* В оригинальном `React.DOMElement` задаётся `React.LegacyRef`, в котором есть `string`\n*/\nexport interface DOMElement<\n P extends React.HTMLAttributes | React.SVGAttributes,\n T extends Element\n> extends React.DOMElement {\n ref: React.Ref,\n}\n\nexport const isDOMTypeElement = <\n P extends React.HTMLAttributes | React.SVGAttributes,\n T extends Element\n>(\n element: React.ReactElement,\n): element is DOMElement => {\n return React.isValidElement(element) && typeof element.type === 'string';\n};\n\nexport interface ITooltipBodyProps {\n background?: COLORS,\n content: React.ReactNode,\n position?: TTooltipPosition,\n arrowIndent?: Indent,\n radius?: TRadius,\n withArrow?: boolean,\n zIndex?: CSSProperties['zIndex'],\n className?: string,\n}\n\nexport interface IStatefulTooltipProps extends ITooltipBodyProps {\n gap?: number,\n children: React.ReactElement,\n}\n\nexport type TTooltipProps = ITooltipBodyProps &\n (\n | {\n gap?: number,\n children: React.ReactElement,\n isShown?: never,\n closeOnClickOutside?: never,\n onClose?: never,\n closeOnScroll?: never,\n closeOnTransition?: never,\n }\n | {\n gap?: number,\n children: React.ReactElement,\n isShown: boolean,\n closeOnClickOutside?: boolean,\n onClose?: () => void,\n closeOnScroll?: boolean,\n closeOnTransition?: boolean,\n }\n );\n","import React, { useState } from 'react';\n\nimport WithStatelessTooltip from '@r1-frontend/ui-react/experimental/tooltip/WithStatelessTooltip';\n\nimport { IStatefulTooltipProps } from './types';\n\nconst WithStatefulTooltip = ({\n children,\n content,\n\n position,\n withArrow,\n\n background,\n gap,\n arrowIndent,\n radius,\n}: IStatefulTooltipProps) => {\n const [isShown, setIsShown] = useState(false);\n\n return (\n \n setIsShown(true)}\n onMouseLeave={() => setIsShown(false)}\n >\n {children}\n
\n \n );\n};\n\nexport default WithStatefulTooltip;\n","import React from 'react';\n\nimport WithStatefulTooltip from '@r1-frontend/ui-react/experimental/tooltip/WithStatefulTooltip';\nimport WithStatelessTooltip from '@r1-frontend/ui-react/experimental/tooltip/WithStatelessTooltip';\n\nimport { TTooltipProps } from './types';\n\n/**\n * Добавляет оборачиваемому компоненту возможность отображения\n * всплывающей подсказки\n *\n * @notes\n * Компонент автоматически определяет stateful/stateless поведение\n * в зависимости от использования параметра `isShown`\n */\nconst WithTooltip = (props: TTooltipProps) => {\n const { isShown } = props;\n\n return isShown !== undefined\n ? \n : ;\n};\n\nexport default WithTooltip;\n","import { TTooltipPosition } from './types';\n\ntype TGetTooltipPosition = {\n child: HTMLElement,\n tooltip: HTMLDivElement,\n position: TTooltipPosition,\n gap: number,\n arrowIndent: number,\n};\n\ntype TTooltipVector = {\n left: number,\n top: number,\n};\n\nexport const getTooltipPosition = ({\n child,\n tooltip,\n position,\n gap,\n arrowIndent,\n}: TGetTooltipPosition): TTooltipVector => {\n const {\n top: childTop,\n left: childLeft,\n height: childHeight,\n width: childWidth,\n } = child.getBoundingClientRect();\n\n const { width: tooltipWidth, height: tooltipHeight } = tooltip.getBoundingClientRect();\n\n const scrollY = (window.scrollY !== undefined) ? window.scrollY : window.pageYOffset;\n const scrollX = (window.scrollX !== undefined) ? window.scrollX : window.pageXOffset;\n\n switch (position) {\n case 'top-center': {\n return {\n left: childLeft + childWidth / 2 - tooltipWidth / 2 + scrollX,\n top: childTop - gap - tooltipHeight + scrollY,\n };\n }\n case 'top-left': {\n return {\n left: childLeft - arrowIndent + scrollX,\n top: childTop - gap - tooltipHeight + scrollY,\n };\n }\n case 'top-right': {\n return {\n left: childLeft + childWidth - tooltipWidth + arrowIndent + scrollX,\n top: childTop - gap - tooltipHeight + scrollY,\n };\n }\n case 'left': {\n return {\n left: childLeft - gap - tooltipWidth + scrollX,\n top: childTop + childHeight / 2 - tooltipHeight / 2 + scrollY,\n };\n }\n case 'right': {\n return {\n left: childLeft + childWidth + gap + scrollX,\n top: childTop + childHeight / 2 - tooltipHeight / 2 + scrollY,\n };\n }\n case 'bottom-left': {\n return {\n left: childLeft - arrowIndent + scrollX,\n top: childTop + childHeight + gap + scrollY,\n };\n }\n case 'bottom-right': {\n return {\n left: childLeft + childWidth - tooltipWidth + arrowIndent + scrollX,\n top: childTop + childHeight + gap + scrollY,\n };\n }\n case 'bottom-center':\n default:\n return {\n left: childLeft + childWidth / 2 - tooltipWidth / 2 + scrollX,\n top: childTop + childHeight + gap + scrollY,\n };\n }\n};\n\ntype TCreateCornerMap = {\n position: TTooltipPosition,\n onCornerLeft: T,\n onCornerRight: T,\n onDefault: T,\n}\n\nexport const createCornerMap = ({\n position,\n onCornerLeft,\n onCornerRight,\n onDefault,\n}: TCreateCornerMap) => {\n return ['top-left', 'bottom-left'].includes(position)\n ? onCornerLeft\n : ['top-right', 'bottom-right'].includes(position)\n ? onCornerRight\n : onDefault;\n};\n","import { Paragraph5 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport interface IAdvertiserProps {\n companyName: string,\n erid: string,\n}\n\n/**\n * Информация о рекламодателе\n */\nexport const Advertiser = ({ companyName, erid }: IAdvertiserProps) => (\n \n {companyName}\n
\n erid: {erid}\n
\n);\n","import styled from 'styled-components';\n\nimport { RounderContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport { hex2rgb } from '@r1-frontend/shared/helpers/hex2rgb';\n\nexport const Content = styled.div`\n align-items: center;\n ${FONTS.LABEL_S};\n color: rgba(${hex2rgb(COLORS.TextWhite)}, .8);\n`;\n\nexport const LabelContainer = styled(RounderContainer)`\n background: rgba(${hex2rgb(COLORS.GRAY_LIGHT)}, .3);\n cursor: pointer;\n height: fit-content;\n width: min-content;\n`;\n","import React, { forwardRef, HTMLProps } from 'react';\n\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport * as ST from './styled';\n\nexport interface IAdvertisingLabelProps extends Omit, 'ref' | 'as'> {\n children?: React.ReactNode,\n onClick?: React.MouseEventHandler,\n}\n\n/**\n * Рекламная метка\n */\nconst AdvertisingLabel = forwardRef(({\n children,\n onClick,\n ...props\n}, ref): JSX.Element => {\n return (\n \n \n {children}\n \n \n );\n});\n\nAdvertisingLabel.displayName = 'LabelAdvertising';\n\nexport { AdvertisingLabel };\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { WithTooltip } from '@r1-frontend/ui-react/experimental/tooltip';\nimport { TTooltipProps } from '@r1-frontend/ui-react/experimental/tooltip/types';\n\nimport { Advertiser, IAdvertiserProps } from './AdvertiserInfo';\nimport { AdvertisingLabel, IAdvertisingLabelProps } from './AdvertisingLabel';\n\nexport interface IAdvertisingLabelWithTooltipProps extends IAdvertisingLabelProps, IAdvertiserProps {\n tooltip?: Omit<\n TTooltipProps,\n 'children' | 'content' | 'closeOnScroll'\n >,\n}\n\n/**\n * Рекламный лейбл с поддержкой отображения тултипа по клику на лейбл\n * @example\n * \n */\nexport const AdvertisingLabelWithTooltip = ({\n tooltip = {},\n onClick,\n companyName,\n erid,\n children = 'Реклама',\n ...props\n}: IAdvertisingLabelWithTooltipProps) => {\n const [isShown, setIsShown] = useState(false);\n\n const onLabelClick: React.MouseEventHandler = useCallback((e) => {\n if (tooltip.isShown === undefined) {\n setIsShown(!isShown);\n }\n\n if (typeof onClick === 'function') {\n onClick(e);\n }\n }, [isShown, onClick, tooltip.isShown]);\n\n const isTooltipShown = useMemo(\n () => tooltip.isShown !== undefined ? tooltip.isShown : isShown,\n [tooltip.isShown, isShown],\n );\n\n const onTooltipClose = useCallback(() => {\n if (tooltip.isShown === undefined) {\n return setIsShown(false);\n }\n\n const { onClose } = tooltip;\n\n if (typeof onClose === 'function') {\n onClose();\n }\n }, [tooltip]);\n\n return (\n \n }\n closeOnScroll\n {...tooltip}\n >\n \n {children}\n \n \n );\n};\n","export enum BoxShadow {\n S = '2px 2px 10px rgba(0, 0, 0, .1)',\n M = '4px 4px 20px rgba(0, 0, 0, .1)',\n L = '6px 6px 40px rgba(0, 0, 0, .1)',\n}\n","/*\n * Неразрывный пробел. Применять в случае, когда нет возможности явно использовать html special symbol, либо он не интерпретируется за спец символ и выводится строкой\n */\nexport const NBSP = String.fromCharCode(160);\nexport const RubleSymbol = String.fromCharCode(8381);\nexport const MDASH = String.fromCharCode(8212);\nexport const NBHYPHEN = String.fromCharCode(8209);\nexport const LAQUO = String.fromCharCode(171);\nexport const RAQUO = String.fromCharCode(187);\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTczIiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMTczIDI2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC4zMjQ2MTUgMjIuMTMyNkwxMi4wNDY4IDIuNjQ4N0MxMi45NTE3IDEuMTQ1NTkgMTUuMTgyNiAxLjE0NTU5IDE2LjA4NjQgMi42NDg3TDI3LjgwODUgMjIuMTMyNkMyOC43MjI3IDIzLjY1MjcgMjcuNTk3NCAyNS41NjcyIDI1Ljc4ODcgMjUuNTY3MkgyLjM0NDQzQzAuNTM1NzYyIDI1LjU2NzIgLTAuNTg5NTgyIDIzLjY1MzggMC4zMjQ2MTUgMjIuMTMyNloiIGZpbGw9IiNGRjMxMkMiLz4KPHBhdGggZD0iTTM4LjQwMDcgMC4wMDE4NzQ1M0MzMy4wNzc5IC0wLjA4NTE0NzUgMjguNDU0OCAyLjg2NTY5IDI2LjIzMzEgNy4xOTA4QzI1LjY0MzcgOC4zMzc5MSAyNS42OTM2IDkuNjk4NjIgMjYuMzU5NSAxMC44MDVMMzQuODU2NSAyNC45Mjc1QzM1LjE2NTEgMjUuNDQwNiAzNS42OTY0IDI1Ljc4NzUgMzYuMjk5NyAyNS44NzEyQzM2LjkxMTEgMjUuOTU1OSAzNy41MzY0IDI2IDM4LjE3MjIgMjZDNDUuNTIyOSAyNiA1MS40ODYgMjAuMjEwMiA1MS41MTczIDEzLjA1NjNDNTEuNTQ5OCA1Ljk4MDQgNDUuNjY0NCAwLjExOTQxMSAzOC40MDA3IDAuMDAxODc0NTNaIiBmaWxsPSIjRkYzMTJDIi8+CjxwYXRoIGQ9Ik03Mi4wMjQgMC40MzM1OTRINTMuOTEwNkM1Mi43NjY2IDAuNDMzNTk0IDUyLjEwNjUgMS42OTM3MiA1Mi43NzM2IDIuNTk4OTdDNTQuOTU0NyA1LjU1OTk4IDU2LjIzNTUgOS4xODU1MyA1Ni4yMTgxIDEzLjA3ODlDNTYuMjAwNyAxNi45MTgxIDU0LjkzMzggMjAuNDc2OSA1Mi43OTU3IDIzLjM5MTZDNTIuMTI2MiAyNC4zMDI1IDUyLjc4MDYgMjUuNTY4MyA1My45MzAzIDI1LjU2ODNINzIuMDI0QzczLjY1NjMgMjUuNTY4MyA3NC45OCAyNC4yNzg4IDc0Ljk4IDIyLjY4ODZWMy4zMTMyM0M3NC45OCAxLjcyMzEgNzMuNjU2MyAwLjQzMzU5NCA3Mi4wMjQgMC40MzM1OTRaIiBmaWxsPSIjRkYzMTJDIi8+CjxwYXRoIGQ9Ik0xNTAuNjU1IDE2LjA3NzJDMTQ4Ljg0NiAxNi4wNzcyIDE0Ny42ODUgMTQuNjc1OCAxNDcuNjg1IDEyLjkzNTRDMTQ3LjY4NSAxMS4xOTQ5IDE0OC43OTkgOS43NzA5NSAxNTAuNjU1IDkuNzcwOTVDMTUyLjUxMiA5Ljc3MDk1IDE1My42MDIgMTEuMTk0OSAxNTMuNjAyIDEyLjkzNTRDMTUzLjYwMiAxNC42NzU4IDE1Mi40NjUgMTYuMDc3MiAxNTAuNjU1IDE2LjA3NzJaTTE1MS40MjEgNi41NjEzMUMxNDkuNzA0IDYuNTYxMzEgMTQ4LjM1OCA3LjI2MiAxNDcuNjM5IDguMTY2MTNWNi45MDAzNUgxNDQuMjc1VjIyLjcyMjVIMTQ3LjgwMVYxNy43NzI1QzE0OC41NjcgMTguNjU0IDE0OS45NTkgMTkuMjg2OSAxNTEuMzUyIDE5LjI4NjlDMTU1LjAxOCAxOS4yODY5IDE1Ny4xNzUgMTYuNjY0OSAxNTcuMTc1IDEyLjg5MDJDMTU3LjE3NSA5LjM0MTQ5IDE1NC45NzEgNi41NjEzMSAxNTEuNDIxIDYuNTYxMzFaTTE2OS4yNDEgNi44NTUxNUwxNjUuOTY5IDE1LjAxNDlIMTY1LjUwNUwxNjIuMjggNi44NTUxNUgxNTguMTk2TDE2My4xMTUgMTcuOTc1OUwxNjMuNzY1IDE5LjAxNTZMMTYzLjUxIDE5LjM3NzNIMTU5LjQ5NlYyMi43MjI1SDE2MS44MTZDMTY0Ljc2MyAyMi43MjI1IDE2Ni42MTkgMjEuNDM0MiAxNjcuODcyIDE4LjU2MzZMMTczIDYuODU1MTVIMTY5LjI0MVpNMTM5LjQ3MiAxNC44NzkzQzEzOC4yMTkgMTQuODc5MyAxMzcuMTk4IDE1Ljg3MzggMTM3LjE5OCAxNy4wOTQ0QzEzNy4xOTggMTguMzM3NSAxMzguMjE5IDE5LjMzMjEgMTM5LjQ3MiAxOS4zMzIxQzE0MC43NDggMTkuMzMyMSAxNDEuNzY5IDE4LjMzNzUgMTQxLjc2OSAxNy4wOTQ0QzE0MS43NjkgMTUuODczOCAxNDAuNzQ4IDE0Ljg3OTMgMTM5LjQ3MiAxNC44NzkzWk0xMzAuNjU0IDYuODU1MTVMMTI3LjI0NCAxMS43MTQ4SDEyNi44NzJMMTIzLjUwOCA2Ljg1NTE1SDExOS4zMzFWMTkuMDE1NkgxMjIuODEyVjEyLjMyNTFIMTIzLjI5OUwxMjYuMTc2IDE2LjQ2MTVIMTI3Ljg0N0wxMzAuNzcgMTIuMzI1MUgxMzEuMjExVjE5LjAxNTZIMTM0LjY5MlY2Ljg1NTE1SDEzMC42NTRaTTExMC40NDUgMTUuOTg2OEMxMDguNjM1IDE1Ljk4NjggMTA3LjUyMSAxNC42MzA2IDEwNy41MjEgMTIuOTM1NEMxMDcuNTIxIDExLjI2MjggMTA4LjYxMiA5LjkwNjU3IDExMC40NDUgOS45MDY1N0MxMTIuMzAxIDkuOTA2NTcgMTEzLjM5MSAxMS4yNjI4IDExMy4zOTEgMTIuOTM1NEMxMTMuMzkxIDE0LjYzMDYgMTEyLjI1NSAxNS45ODY4IDExMC40NDUgMTUuOTg2OFpNMTEwLjQ0NSA2LjU2MTMxQzEwNi4zMzggNi41NjEzMSAxMDMuODc4IDkuNDMxOSAxMDMuODc4IDEyLjkzNTRDMTAzLjg3OCAxNi40NjE1IDEwNi40MzEgMTkuMzA5NSAxMTAuNDQ1IDE5LjMwOTVDMTE0LjQ4MiAxOS4zMDk1IDExNy4wMTEgMTYuNDYxNSAxMTcuMDExIDEyLjkzNTRDMTE3LjAxMSA5LjQzMTkgMTE0LjU3NSA2LjU2MTMxIDExMC40NDUgNi41NjEzMVpNOTUuMDYxMSA5Ljk1MTc4TDk3LjMxMTggMTUuNzYwOEg5Mi40MTZMOTQuNjQzNSA5Ljk1MTc4SDk1LjA2MTFaTTEwMC45NTUgMTUuNzYwOEw5Ny40NTEgNi44NTUxNUg5Mi4xMzc1TDg4LjYzMzkgMTUuNzYwOEg4Ni42MTUyVjIxLjg0MUg4OS45Nzk3VjE5LjAxNTZIOTkuNDQ2NVYyMS44NDFIMTAyLjgzNFYxNS43NjA4SDEwMC45NTVaIiBmaWxsPSIjRkYzMTJDIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzUiIGhlaWdodD0iMjciIHZpZXdCb3g9IjAgMCA3NSAyNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMzI0NzAxIDIyLjcyNTlMMTIuMDQ5OSAyLjcxOTY5QzEyLjk1NTEgMS4xNzYyOCAxNS4xODY3IDEuMTc2MjggMTYuMDkwNiAyLjcxOTY5TDI3LjgxNTkgMjIuNzI1OUMyOC43MzAzIDI0LjI4NjggMjcuNjA0NyAyNi4yNTI2IDI1Ljc5NTUgMjYuMjUyNkgyLjM0NTA1QzAuNTM1OTA0IDI2LjI1MjYgLTAuNTg5NzM4IDI0LjI4NzkgMC4zMjQ3MDEgMjIuNzI1OVoiIGZpbGw9IiNGRjMxMkMiLz4KPHBhdGggZD0iTTM4LjQxMDkgMC4wMDE5MjQ3OUMzMy4wODY3IC0wLjA4NzQzMDMgMjguNDYyMyAyLjk0MjUyIDI2LjI0IDcuMzgzNThDMjUuNjUwNSA4LjU2MTQ0IDI1LjcwMDQgOS45NTg2MyAyNi4zNjY1IDExLjA5NDdMMzQuODY1NyAyNS41OTU4QzM1LjE3NDQgMjYuMTIyNiAzNS43MDU4IDI2LjQ3ODkgMzYuMzA5MyAyNi41NjQ3QzM2LjkyMDggMjYuNjUxOCAzNy41NDYzIDI2LjY5NyAzOC4xODIzIDI2LjY5N0M0NS41MzQ5IDI2LjY5NyA1MS40OTk2IDIwLjc1MiA1MS41MzEgMTMuNDA2M0M1MS41NjM1IDYuMTQwNzMgNDUuNjc2NSAwLjEyMjYxMiAzOC40MTA5IDAuMDAxOTI0NzlaIiBmaWxsPSIjRkYzMTJDIi8+CjxwYXRoIGQ9Ik03Mi4wNDMzIDAuNDQ1MjUxSDUzLjkyNTFDNTIuNzgwOSAwLjQ0NTI1MSA1Mi4xMjA2IDEuNzM5MTYgNTIuNzg3OCAyLjY2ODY4QzU0Ljk2OTUgNS43MDkwOCA1Ni4yNTA2IDkuNDMxODIgNTYuMjMzMiAxMy40Mjk2QzU2LjIxNTggMTcuMzcxNyA1NC45NDg2IDIxLjAyNTkgNTIuODA5OSAyNC4wMTg3QzUyLjE0MDMgMjQuOTU0MSA1Mi43OTQ4IDI2LjI1MzggNTMuOTQ0OCAyNi4yNTM4SDcyLjA0MzNDNzMuNjc2IDI2LjI1MzggNzUuMDAwMSAyNC45Mjk3IDc1LjAwMDEgMjMuMjk2OVYzLjQwMjA5Qzc1LjAwMDEgMS43NjkzMyA3My42NzYgMC40NDUyNTEgNzIuMDQzMyAwLjQ0NTI1MVoiIGZpbGw9IiNGRjMxMkMiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNCA4IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTc5Nzk3O3N0cm9rZS1saW5lY2FwOnJvdW5kOyI+PHBhdGggZD0iTTEgMWw1LjY1IDUuNjVjLjIuMi41LjIuNyAwTDEzIDEiLz48L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMSAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEgNy45MDQxMUw2Ljk0NTIxIDEzLjg0OTNMMTkuNzk0NSAxIiBzdHJva2U9IiM2OUM0OEYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMiAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNS44OTU5OCIgY3k9IjExLjA4ODEiIHI9IjAuNSIgc3Ryb2tlPSIjOTc5Nzk3Ii8+CjxjaXJjbGUgY3g9IjExLjAzODYiIGN5PSIxMS4wODgxIiByPSIwLjUiIHN0cm9rZT0iIzk3OTc5NyIvPgo8Y2lyY2xlIGN4PSIxNi4xODE3IiBjeT0iMTEuMDg4MSIgcj0iMC41IiBzdHJva2U9IiM5Nzk3OTciLz4KPGNpcmNsZSBjeD0iNS44OTU5OCIgY3k9IjE1LjY1OTciIHI9IjAuNSIgc3Ryb2tlPSIjOTc5Nzk3Ii8+CjxjaXJjbGUgY3g9IjExLjAzODYiIGN5PSIxNS42NTk3IiByPSIwLjUiIHN0cm9rZT0iIzk3OTc5NyIvPgo8Y2lyY2xlIGN4PSIxNi4xODE3IiBjeT0iMTUuNjU5NyIgcj0iMC41IiBzdHJva2U9IiM5Nzk3OTciLz4KPHBhdGggZD0iTTEuMzI0NTYgMi41NzEzNlYyMEgyMC43NTMyVjIuMjg1NjRIMS4zMjQ1NiIgc3Ryb2tlPSIjOTc5Nzk3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTAuODg0MjQ3IDYuOTI4NUwyMC43MzAyIDYuOTI4NDciIHN0cm9rZT0iIzk3OTc5NyIvPgo8bGluZSB4MT0iNS45NjcxMyIgeTE9IjMuNjE0MjYiIHgyPSI1Ljk2NzEzIiB5Mj0iMC40OTk5MTgiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxsaW5lIHgxPSIxNS42ODEzIiB5MT0iMy42MTQyNiIgeDI9IjE1LjY4MTMiIHkyPSIwLjQ5OTkxOCIgc3Ryb2tlPSIjOTc5Nzk3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAyMCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOC40MTczIDAuNzE5MjQzQzE4LjcxMDIgMS4wMTIxNCAxOC43MTAyIDEuNDg3MDEgMTguNDE3MyAxLjc3OTlMMi42NDMzIDE3LjU1MzlDMi4zNTA0MSAxNy44NDY4IDEuODc1NTQgMTcuODQ2OCAxLjU4MjY0IDE3LjU1MzlDMS4yODk3NSAxNy4yNjEgMS4yODk3NSAxNi43ODYxIDEuNTgyNjQgMTYuNDkzMkwzLjU1NDAxIDE0LjUyMTlDMi4xMzQwNyAxMy4yMjU3IDAuOTQ1MDU3IDExLjQ5NCAwLjA2MDM4NjkgOS40MzMxMkMtMC4wMjA5MTU4IDkuMjQzNzIgLTAuMDIwNjg5MiA5LjAyOTIgMC4wNjEwMTM1IDguODM5OTdDMS4wODQ4MiA2LjQ2ODc4IDIuNTA3MDYgNC41MzAxNiA0LjIxOTA1IDMuMTgzNDRDNS45MjQyIDEuODM0MjQgNy45MTU4MSAxLjA4NDI3IDkuOTk5NTcgMS4wODQyN0MxMS44ODM1IDEuMDg0MjcgMTMuNjgxIDEuNjk4ODYgMTUuMjY4OCAyLjgwNzA2TDE3LjM1NjYgMC43MTkyNDNDMTcuNjQ5NSAwLjQyNjM0OSAxOC4xMjQ0IDAuNDI2MzQ5IDE4LjQxNzMgMC43MTkyNDNaTTE0LjE4ODggMy44ODcxM0MxMi44ODUzIDMuMDMzMDYgMTEuNDYwOCAyLjU4NDI3IDkuOTk5NTcgMi41ODQyN0M4LjI4NzcxIDIuNTg0MjcgNi42MTc2NyAzLjE5ODA0IDUuMTQ5MDEgNC4zNjAzN0w1LjE0NzIyIDQuMzYxNzlDMy43MzMyMyA1LjQ3Mzg2IDIuNDk5NzMgNy4wOTIyMSAxLjU2OTUxIDkuMTM4MDlDMi4zNzg2MyAxMC45MjY2IDMuNDIyMzEgMTIuMzg0OSA0LjYxNTk1IDEzLjQ1OTlMNi43NTM5IDExLjMyMkM2LjMzMDk3IDEwLjY5OTMgNi4wODU1NyA5Ljk1MDYgNi4wODU1NyA5LjEzNzc3QzYuMDg1NTcgNi45NzEwMiA3LjgzMjkgNS4yMjE3NyA5Ljk5OTU3IDUuMjIxNzdDMTAuODAyNiA1LjIyMTc3IDExLjU2MDMgNS40NjU3IDEyLjE4NjIgNS44ODk3MkwxNC4xODg4IDMuODg3MTNaTTExLjA5MyA2Ljk4Mjg3QzEwLjc2NTggNi44MTYwNyAxMC4zOTI4IDYuNzIxNzcgOS45OTk1NyA2LjcyMTc3QzguNjYyMjUgNi43MjE3NyA3LjU4NTU3IDcuNzk4NTIgNy41ODU1NyA5LjEzNzc3QzcuNTg1NTcgOS41MzM3OSA3LjY3ODc3IDkuOTAyOTYgNy44NDY0MiAxMC4yMjk1TDExLjA5MyA2Ljk4Mjg3Wk0xNi45OTY1IDUuMzkxNTZDMTcuMzI3NSA1LjE0MjQ1IDE3Ljc5NzcgNS4yMDg3OSAxOC4wNDY4IDUuNTM5NzJDMTguNzc0MyA2LjUwNjE1IDE5LjQwOCA3LjYxMzcgMTkuOTM4IDguODM5MDhDMjAuMDIgOS4wMjg4OCAyMC4wMjAxIDkuMjQ0MTQgMTkuOTM4MiA5LjQzNEMxNy44OTYzIDE0LjE2NDUgMTQuMjAyNiAxNy4xODg4IDkuOTk5NTcgMTcuMTg4OEM5LjA1NDg5IDE3LjE4ODggOC4xMjM3NiAxNy4wMzU0IDcuMjMwMTQgMTYuNzM3MkM2LjgzNzIzIDE2LjYwNjEgNi42MjUwMiAxNi4xODEyIDYuNzU2MTUgMTUuNzg4M0M2Ljg4NzI4IDE1LjM5NTQgNy4zMTIxIDE1LjE4MzIgNy43MDUgMTUuMzE0M0M4LjQ0NzM5IDE1LjU2MjEgOS4yMTgyNiAxNS42ODg4IDkuOTk5NTcgMTUuNjg4OEMxMy4zMzI2IDE1LjY4ODggMTYuNTE5OSAxMy4zMzQ1IDE4LjQyOTIgOS4xMzY5OEMxNy45NzAzIDguMTI5MDMgMTcuNDM5MyA3LjIyNjkzIDE2Ljg0ODQgNi40NDE4MkMxNi41OTkzIDYuMTEwODkgMTYuNjY1NiA1LjY0MDY3IDE2Ljk5NjUgNS4zOTE1NlpNMTMuMjM3NSA4Ljk2MDcyQzEzLjY0NTIgOS4wMzQwMyAxMy45MTYyIDkuNDIzOTUgMTMuODQyOSA5LjgzMTYzQzEzLjU1NTYgMTEuNDI5NSAxMi4yOTg5IDEyLjY4ODkgMTAuNzAxNyAxMi45Nzg4QzEwLjI5NDIgMTMuMDUyOCA5LjkwMzgyIDEyLjc4MjQgOS44Mjk4MyAxMi4zNzQ4QzkuNzU1ODUgMTEuOTY3MyAxMC4wMjYzIDExLjU3NjkgMTAuNDMzOCAxMS41MDI5QzExLjQxNDcgMTEuMzI0OSAxMi4xOSAxMC41NDgzIDEyLjM2NjYgOS41NjYxMkMxMi40Mzk5IDkuMTU4NDUgMTIuODI5OSA4Ljg4NzQgMTMuMjM3NSA4Ljk2MDcyWiIgZmlsbD0iI0M1QzZDNyIvPgo8L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAyMCAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljk5OTU1IDUuNjQxMTJDOC42Njc5MiA1LjY0MTEyIDcuNTg4NTUgNi43MjAxNyA3LjU4ODU1IDguMDUzMTFDNy41ODg1NSA5LjM4NDkgOC42Njc3NiAxMC40NjQxIDkuOTk5NTUgMTAuNDY0MUMxMS4zMzE2IDEwLjQ2NDEgMTIuNDExNSA5LjM4NDU5IDEyLjQxMTUgOC4wNTMxMUMxMi40MTE1IDYuNzIwNDggMTEuMzMxNSA1LjY0MTEyIDkuOTk5NTUgNS42NDExMlpNNi4wODg1NSA4LjA1MzExQzYuMDg4NTUgNS44OTIwNiA3LjgzOTE4IDQuMTQxMTIgOS45OTk1NSA0LjE0MTEyQzEyLjE1OTYgNC4xNDExMiAxMy45MTE1IDUuODkxNzUgMTMuOTExNSA4LjA1MzExQzEzLjkxMTUgMTAuMjEzNiAxMi4xNTk1IDExLjk2NDEgOS45OTk1NSAxMS45NjQxQzcuODM5MzMgMTEuOTY0MSA2LjA4ODU1IDEwLjIxMzMgNi4wODg1NSA4LjA1MzExWiIgZmlsbD0iI0M1QzZDNyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTkuMjQ4MDUgMC43NTA5MTZDOS4yNDgwNSAwLjMzNjcwMiA5LjU4MzgzIDAuMDAwOTE1NTI3IDkuOTk4MDUgMC4wMDA5MTU1MjdDMTQuMjAxIDAuMDAwOTE1NTI3IDE3LjkwMjYgMy4wMTcwMSAxOS45MzkxIDcuNzU2ODRDMjAuMDIwNCA3Ljk0NTg3IDIwLjAyMDQgOC4xNTk5NiAxOS45MzkxIDguMzQ4OTlDMTcuOTAyNiAxMy4wODg4IDE0LjIwMSAxNi4xMDQ5IDkuOTk4MDUgMTYuMTA0OUM5LjU4MzgzIDE2LjEwNDkgOS4yNDgwNSAxNS43NjkxIDkuMjQ4MDUgMTUuMzU0OUM5LjI0ODA1IDE0Ljk0MDcgOS41ODM4MyAxNC42MDQ5IDkuOTk4MDUgMTQuNjA0OUMxMy4zMzM1IDE0LjYwNDkgMTYuNTI3MSAxMi4yNTU1IDE4LjQzMDMgOC4wNTI5MUMxNi41MjcxIDMuODUwMzMgMTMuMzMzNSAxLjUwMDkyIDkuOTk4MDUgMS41MDA5MkM5LjU4MzgzIDEuNTAwOTIgOS4yNDgwNSAxLjE2NTEzIDkuMjQ4MDUgMC43NTA5MTZaIiBmaWxsPSIjQzVDNkM3Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMC43NTA5MTZDMTEgMC4zMzY3MDIgMTAuNjY0MyAwLjAwMDkxNTUyNyAxMC4yNSAwLjAwMDkxNTUyN0M2LjA0NzA1IDAuMDAwOTE1NTI3IDIuMzQ1NTEgMy4wMTcwMSAwLjMwODk2MiA3Ljc1Njg0QzAuMjI3NzQyIDcuOTQ1ODcgMC4yMjc3NDIgOC4xNTk5NiAwLjMwODk2MiA4LjM0ODk5QzIuMzQ1NTEgMTMuMDg4OCA2LjA0NzA1IDE2LjEwNDkgMTAuMjUgMTYuMTA0OUMxMC42NjQzIDE2LjEwNDkgMTEgMTUuNzY5MSAxMSAxNS4zNTQ5QzExIDE0Ljk0MDcgMTAuNjY0MyAxNC42MDQ5IDEwLjI1IDE0LjYwNDlDNi45MTQ1OCAxNC42MDQ5IDMuNzIwOTggMTIuMjU1NSAxLjgxNzc1IDguMDUyOTFDMy43MjA5OCAzLjg1MDMzIDYuOTE0NTggMS41MDA5MiAxMC4yNSAxLjUwMDkyQzEwLjY2NDMgMS41MDA5MiAxMSAxLjE2NTEzIDExIDAuNzUwOTE2WiIgZmlsbD0iI0M1QzZDNyIvPgo8L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0yMi43OTg1IDcuOTYxMjVDMjIuNzA0MSA2LjcyNDQyIDIxLjc2IDUuMTM4NzMgMjAuODE2IDQuMzc3NkMxOS43NTQ0IDMuNTk4NjcgMTguNjUxMyAyLjg3ODc1IDE3LjUxMTggMi4yMjEwN0MxNi4zODA5IDEuNTQ1NTMgMTUuMjE0OSAwLjkzMTUyMSAxNC4wMTg4IDAuMzgxNjc2QzEzLjM3OTkgMC4xMTkwMTIgMTIuNjk0NyAtMC4wMTA0NDgxIDEyLjAwNDggMC4wMDExMTJDMTEuMzE0NiAtMC4wMTM1MDI0IDEwLjYyODkgMC4xMTYwNzMgOS45OTA4MSAwLjM4MTY3NkM4Ljc5NDkyIDAuOTMxOTExIDcuNjI4OTMgMS41NDU5MSA2LjQ5NzgxIDIuMjIxMDdDNC42NzI2MyAzLjMzMTA1IDMuMTkzNjEgNC4zNzc2IDMuMTkzNjEgNC4zNzc2QzIuNDg1OTQgNC45NzQ0NyAxLjkzNDY1IDUuNzI3NSAxLjU3NzA4IDYuNTcwMjVDMS40NDY1NiA2Ljg3Nzg2IDEuNjg2MzggNy4yIDIuMDIwNTMgNy4ySDIuOTUwNEMzLjMyMTk0IDcuMiAzLjY1NTgzIDYuOTg4OCAzLjg2ODQ2IDYuNjg0MTFDNC4xMDk0NiA2LjMzODc2IDQuMzk2NSA2LjAyNDA3IDQuNzI0MTMgNS43NDk2M0M0LjcyNDEzIDUuNzQ5NjMgNS45NDUzMyA0Ljg5MTQ2IDcuNDUyMzQgMy45ODEyOEM4LjM4NjI4IDMuNDI3NjUgOS4zNDkwMSAyLjkyNDE3IDEwLjMzNjQgMi40NzI5N0MxMC44NjMzIDIuMjU1MTggMTEuNDI5NSAyLjE0ODkzIDExLjk5OTMgMi4xNjA5MUMxMi41NjkgMi4xNTE0MyAxMy4xMzQ3IDIuMjU3NTkgMTMuNjYyMyAyLjQ3Mjk3QzE0LjY0OTggMi45MjM4NSAxNS42MTI2IDMuNDI3MzQgMTYuNTQ2NCAzLjk4MTI4QzE3LjQ4NzIgNC41MjA1OCAxOC4zOTggNS4xMTA5MSAxOS4yNzQ2IDUuNzQ5NjNDMjAuMDU0IDYuMzczNzYgMjAuODMzNSA3LjY3NDAyIDIwLjkxMTUgOC42ODgyMkMyMC45MTE1IDguNjg4MjIgMjEuMDkzNCAxMC4xOTY1IDIxLjExOTMgMTEuOTgzMUMyMS4xMTc4IDEzLjA4NjQgMjEuMDU3IDE0LjE4ODkgMjAuOTM3NSAxNS4yODU4QzIwLjc1NjIgMTYuNDM0MiAyMC4xNjU0IDE3LjQ3ODEgMTkuMjc0NiAxOC4yMjQzQzE5LjI3NDYgMTguMjI0MyAxOC4wNTM0IDE5LjEwODUgMTYuNTQ2NCAyMC4wMTg3QzE1LjYxMjQgMjAuNTcyMyAxNC42NDk3IDIxLjA3NTggMTMuNjYyMyAyMS41MjdDMTMuMTM1NCAyMS43NDQ4IDEyLjU2OTIgMjEuODUxMSAxMS45OTkzIDIxLjgzOTFDMTEuNDMwMiAyMS44NTEgMTAuODY0NSAyMS43NDc1IDEwLjMzNjQgMjEuNTM0OEM5LjM0ODg2IDIxLjA4MzkgOC4zODYxMSAyMC41ODA0IDcuNDUyMzQgMjAuMDI2NUM1Ljk0NTMzIDE5LjE0MjMgNC43MjQxMyAxOC4yMzIxIDQuNzI0MTMgMTguMjMyMUM0LjQzNDEyIDE3Ljk5OTkgNC4xNDQxIDE3LjY3NDEgMy44ODg4OCAxNy4zMDQzQzMuNjgxMzQgMTcuMDAzNSAzLjM1MDgzIDE2LjggMi45ODU0MiAxNi44SDIuMDMzNDhDMS42OTUwNiAxNi44IDEuNDU2NjcgMTcuMTI5MSAxLjU5NzIzIDE3LjQzN0MxLjk4NyAxOC4yOTA2IDIuNTkwMzEgMTkuMTEzOCAzLjE5MzYxIDE5LjYwMDJDMy4xOTM2MSAxOS42MDAyIDQuNjcyNjMgMjAuNzEwMiA2LjQ5NzgxIDIxLjc4ODRDNy42Mjg3MiAyMi40NjQgOC43OTQ3MyAyMy4wNzggOS45OTA4MSAyMy42Mjc4QzEwLjYzMDQgMjMuODg3MiAxMS4zMTU1IDI0LjAxMzQgMTIuMDA0OCAyMy45OTg5QzEyLjY5NSAyNC4wMTM1IDEzLjM4MDcgMjMuODgzOSAxNC4wMTg4IDIzLjYxODNDMTUuMjE0NyAyMy4wNjgxIDE2LjM4MDcgMjIuNDU0MSAxNy41MTE4IDIxLjc3ODlDMTkuMzM3IDIwLjY2ODkgMjAuODE2IDE5LjU5MDcgMjAuODE2IDE5LjU5MDdDMjEuODk1IDE4LjY4MDYgMjIuNjEwNCAxNy40MDc2IDIyLjgzIDE2LjAwN0MyMi45NzQ4IDE0LjY2OTQgMjMuMDQ4MyAxMy4zMjQ5IDIzLjA1MDMgMTEuOTc5NEMyMy4wMTg4IDkuODAwNjQgMjIuNzk4NSA3Ljk2MTI1IDIyLjc5ODUgNy45NjEyNVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yMDI3NF8xODQzNSkiLz4KICAgIDxwYXRoIGQ9Ik0wLjk2MDkzOCA5LjM1OTM5QzAuOTYwOTM4IDkuMDk0MyAxLjE3NTg0IDguODc5MzkgMS40NDA5NCA4Ljg3OTM5SDguODgwOTRDOS4xNDYwMyA4Ljg3OTM5IDkuMzYwOTQgOS4wOTQzIDkuMzYwOTQgOS4zNTkzOVYxMC43OTk0QzkuMzYwOTQgMTEuMDY0NSA5LjE0NjAzIDExLjI3OTQgOC44ODA5NCAxMS4yNzk0SDAuOTYwOTM4VjkuMzU5MzlaIiBmaWxsPSIjMDA2NkIzIi8+CiAgICA8cGF0aCBkPSJNMC45NjA5MzggMTIuNzIwN0gxNi4wODA5QzE2LjM0NiAxMi43MjA3IDE2LjU2MDkgMTIuOTM1NiAxNi41NjA5IDEzLjIwMDdWMTQuNjQwN0MxNi41NjA5IDE0LjkwNTggMTYuMzQ2IDE1LjEyMDcgMTYuMDgwOSAxNS4xMjA3SDEuNDQwOTRDMS4xNzU4NCAxNS4xMjA3IDAuOTYwOTM4IDE0LjkwNTggMC45NjA5MzggMTQuNjQwN1YxMi43MjA3WiIgZmlsbD0iI0VFMkY1MyIvPgogICAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjAyNzRfMTg0MzUiIHgxPSIxMi4xOTk5IiB5MT0iMCIgeDI9IjEyLjE5OTkiIHkyPSIyNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwNjZCMyIvPgogICAgPHN0b3Agb2Zmc2V0PSIwLjM1NDE2NyIgc3RvcC1jb2xvcj0iIzAwNjZCMyIvPgogICAgPHN0b3Agb2Zmc2V0PSIwLjY4NzUiIHN0b3AtY29sb3I9IiNFRTJGNTMiLz4KICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0VFMkY1MyIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KPC9zdmc+\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjMuNDUiIGhlaWdodD0iMjMuNDYiIHZpZXdCb3g9IjAgMCAyNyAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE4LjkzMy4zMzNINy44NjRDMi42NDUuMzMzLjczNiAyLjI0My43MzYgNy40NjFWMTguNTRjMCA1LjIxOCAxLjkxIDcuMTI4IDcuMTI4IDcuMTI4aDExLjA3YzUuMjE4IDAgNy4xMy0xLjkxIDcuMTMtNy4xMjhWNy40NmMuMDA1LTUuMjE4LTEuOTA0LTcuMTI4LTcuMTMtNy4xMjhaIiBmaWxsPSIjQzgxMDJFIi8+PHBhdGggZD0iTTUuNzUyIDEzaC42NzJ2My4zMTVoLS42NzJ2LTEuMzQ3SDQuMjM1djEuMzQ3aC0uNjcyVjEzaC42NzJ2MS4zMzNoMS41MTdWMTNabTMuNzg3IDEuODk2YzAgLjUzMy0uMjY3LjgyNy0uNzUyLjgyNy0uNDg2IDAtLjc1OC0uMjk0LS43NTgtLjg1NlYxM2gtLjY3MnYxLjg5M2MwIC45MzEuNTE4IDEuNDY0IDEuNDE5IDEuNDY0czEuNDM1LS41MzMgMS40MzUtMS40OTNWMTNoLS42NzJ2MS44OTZabTcuNzY1LjM4MUwxNi41NTIgMTNIMTZsLS43NDcgMi4yOEwxNC41MiAxM2gtLjcxNWwxLjE1NSAzLjMxNWguNTU3bC43NS0yLjE3Ni43NTIgMi4xNzZoLjU2MkwxOC43MzYgMTNoLS42OTlsLS43MzMgMi4yNzdabTIuNjM1LS4zOTJoMS4yMjR2LS42aC0xLjIyNHYtLjY3N2gxLjc3NlYxM2gtMi40Mzh2My4zMDdoMi41MDJ2LS41OThoLTEuODR2LS44MjRabTIuNjQgMS40MjJoLjY2NFYxM2gtLjY2NHYzLjMwN1ptLTExLjA0LS42ODYtLjMwMi42ODhoLS42ODVMMTIgMTNoLjU5MmwxLjQ1MyAzLjMxaC0uNjkzbC0uMjg1LS42ODYtMS41MjgtLjAwM1ptLjI1LS41OTdIMTIuOGwtLjUwNy0xLjE4NC0uNTA0IDEuMTg0Wk0xMy40MDMgOC43ODRhNC4yMTkgNC4yMTkgMCAwIDEtNC4yMTYtNC4yMTZoLjU5NGEzLjYyMSAzLjYyMSAwIDEgMCA3LjI0MyAwaC41OTVhNC4yMTkgNC4yMTkgMCAwIDEtNC4yMTYgNC4yMTZaIiBmaWxsPSIjZmZmIi8+PC9zdmc+\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.13/frontend/_next/static/images/AppGalleryText-2472cd41ba2203cf2ecca2c9fc97f9fe.svg\";","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTkgMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1Ljc2OSAxMi4zYTQuOTQ3IDQuOTQ3IDAgMCAxIDIuMzU3LTQuMTUxIDUuMDY2IDUuMDY2IDAgMCAwLTMuOTkyLTIuMTU4Yy0xLjY3OS0uMTc2LTMuMzA3IDEuMDA1LTQuMTYzIDEuMDA1LS44NzIgMC0yLjE5LS45ODctMy42MDgtLjk1OEE1LjMxNSA1LjMxNSAwIDAgMCAxLjg5IDguNzY2Yy0xLjkzNCAzLjM0OC0uNDkxIDguMjcgMS4zNjEgMTAuOTc2LjkyNyAxLjMyNSAyLjAxIDIuODA1IDMuNDI4IDIuNzUzIDEuMzg3LS4wNTggMS45MDUtLjg4NSAzLjU4LS44ODUgMS42NTggMCAyLjE0NC44ODUgMy41OS44NTIgMS40ODktLjAyNCAyLjQyNi0xLjMzMiAzLjMyLTIuNjdhMTAuOTYgMTAuOTYgMCAwIDAgMS41Mi0zLjA5MiA0Ljc4MiA0Ljc4MiAwIDAgMS0yLjkyLTQuNFpNMTMuMDM3IDQuMjExYTQuODczIDQuODczIDAgMCAwIDEuMTE1LTMuNDkgNC45NTggNC45NTggMCAwIDAtMy4yMDggMS42NTkgNC42MzggNC42MzggMCAwIDAtMS4xNDMgMy4zNjEgNC4xIDQuMSAwIDAgMCAzLjIzNi0xLjUzWiIgZmlsbD0iIzAwMCIvPjwvc3ZnPg==\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.13/frontend/_next/static/images/AppStoreText-0c6cb2df66ecb58d50e2f11c81d785e2.svg\";","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTkgMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1Ljc2OSAxMi4zYTQuOTQ3IDQuOTQ3IDAgMCAxIDIuMzU3LTQuMTUxIDUuMDY2IDUuMDY2IDAgMCAwLTMuOTkyLTIuMTU4Yy0xLjY3OS0uMTc2LTMuMzA3IDEuMDA1LTQuMTYzIDEuMDA1LS44NzIgMC0yLjE5LS45ODctMy42MDgtLjk1OEE1LjMxNSA1LjMxNSAwIDAgMCAxLjg5IDguNzY2Yy0xLjkzNCAzLjM0OC0uNDkxIDguMjcgMS4zNjEgMTAuOTc2LjkyNyAxLjMyNSAyLjAxIDIuODA1IDMuNDI4IDIuNzUzIDEuMzg3LS4wNTggMS45MDUtLjg4NSAzLjU4LS44ODUgMS42NTggMCAyLjE0NC44ODUgMy41OS44NTIgMS40ODktLjAyNCAyLjQyNi0xLjMzMiAzLjMyLTIuNjdhMTAuOTYgMTAuOTYgMCAwIDAgMS41Mi0zLjA5MiA0Ljc4MiA0Ljc4MiAwIDAgMS0yLjkyLTQuNFpNMTMuMDM3IDQuMjExYTQuODczIDQuODczIDAgMCAwIDEuMTE1LTMuNDkgNC45NTggNC45NTggMCAwIDAtMy4yMDggMS42NTkgNC42MzggNC42MzggMCAwIDAtMS4xNDMgMy4zNjEgNC4xIDQuMSAwIDAgMCAzLjIzNi0xLjUzWiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDQuNTRhMiAyIDAgMCAwLS40NyAxLjR2MjIuMTJhMS45NCAxLjk0IDAgMCAwIC40NyAxLjRsLjA3LjA4TDEzLjkgMTMuMTV2LS4zTDEuNTEuNDdsLS4wNy4wN1oiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtMTggMTcuMjgtNC4xLTQuMTN2LS4zTDE4IDguNzJsLjA5LjA2TDIzIDExLjU2YzEuNC43OSAxLjQgMi4wOSAwIDIuODlsLTQuODkgMi43OC0uMTEuMDVaIiBmaWxsPSJ1cmwoI2IpIi8+PHBhdGggZD0iTTE4LjEyIDE3LjIyIDEzLjkgMTMgMS40NCAyNS40NmExLjYyIDEuNjIgMCAwIDAgMi4wNy4wN2wxNC42MS04LjMxIiBmaWxsPSJ1cmwoI2MpIi8+PHBhdGggZD0iTTE4LjEyIDguNzggMy41MS40OGExLjYxIDEuNjEgMCAwIDAtMi4wNy4wNkwxMy45IDEzbDQuMjItNC4yMloiIGZpbGw9InVybCgjZCkiLz48cGF0aCBvcGFjaXR5PSIuMiIgZD0iTTE4IDE3LjEzIDMuNTEgMjUuMzhhMS42NiAxLjY2IDAgMCAxLTIgMGwtLjA3LjA3LjA3LjA4YTEuNjYgMS42NiAwIDAgMCAyIDBsMTQuNjEtOC4zMS0uMTItLjA5WiIgZmlsbD0iIzAwMCIvPjxwYXRoIG9wYWNpdHk9Ii4xMiIgZD0iTTEuNDQgMjUuMzJBMiAyIDAgMCAxIDEgMjMuOTF2LjE1YTEuOTQgMS45NCAwIDAgMCAuNDcgMS40bC4wNy0uMDctLjEtLjA3Wk0yMyAxNC4zbC01IDIuODMuMDkuMDlMMjMgMTQuNDRBMS43NSAxLjc1IDAgMCAwIDI0LjA2IDEzIDEuODYgMS44NiAwIDAgMSAyMyAxNC4zWiIgZmlsbD0iIzAwMCIvPjxwYXRoIG9wYWNpdHk9Ii4yNSIgZD0iTTMuNTEuNjIgMjMgMTEuN2ExLjg2IDEuODYgMCAwIDEgMS4wNiAxLjNBMS43NSAxLjc1IDAgMCAwIDIzIDExLjU2TDMuNTEuNDhDMi4xMi0uMzIuOTcuMzQuOTcgMS45NHYuMTVDMSAuNDkgMi4xMi0uMTcgMy41MS42MloiIGZpbGw9IiNmZmYiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIxMi44IiB5MT0iMS43MSIgeDI9Ii0zLjk4IiB5Mj0iMTguNDkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjMDBBMEZGIi8+PHN0b3Agb2Zmc2V0PSIuMDEiIHN0b3AtY29sb3I9IiMwMEExRkYiLz48c3RvcCBvZmZzZXQ9Ii4yNiIgc3RvcC1jb2xvcj0iIzAwQkVGRiIvPjxzdG9wIG9mZnNldD0iLjUxIiBzdG9wLWNvbG9yPSIjMDBEMkZGIi8+PHN0b3Agb2Zmc2V0PSIuNzYiIHN0b3AtY29sb3I9IiMwMERGRkYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMEUzRkYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjI0LjgzIiB5MT0iMTMiIHgyPSIuNjQiIHkyPSIxMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNGRkUwMDAiLz48c3RvcCBvZmZzZXQ9Ii40MSIgc3RvcC1jb2xvcj0iI0ZGQkQwMCIvPjxzdG9wIG9mZnNldD0iLjc4IiBzdG9wLWNvbG9yPSJvcmFuZ2UiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjlDMDAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9IjE1LjgzIiB5MT0iMTUuMyIgeDI9Ii02LjkzIiB5Mj0iMzguMDUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjRkYzQTQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQzMxMTYyIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImQiIHgxPSItMS43IiB5MT0iLTYuODIiIHgyPSI4LjQ2IiB5Mj0iMy4zNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiMzMkEwNzEiLz48c3RvcCBvZmZzZXQ9Ii4wNyIgc3RvcC1jb2xvcj0iIzJEQTc3MSIvPjxzdG9wIG9mZnNldD0iLjQ4IiBzdG9wLWNvbG9yPSIjMTVDRjc0Ii8+PHN0b3Agb2Zmc2V0PSIuOCIgc3RvcC1jb2xvcj0iIzA2RTc3NSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwRjA3NiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibS41NDUgMjUuNjk4IDEyLjI1LTEyLjcwNkwuNTU2LjMxQy4yMy41MDYuMDI3Ljk2My4wMjcgMS41NjJ2MjIuODk1Yy4wMDUuNTk5LjIgMS4wMjMuNTIgMS4yNDFaTTEzLjIzNSAxMi42NDFsMy42NDktMy43ODVMMi4wMjQuNDA0QTEuNiAxLjYgMCAwIDAgMS4yLjE3NEwxMy4yMzMgMTIuNjRsLjAwMi4wMDFaTTEzLjIzNSAxMy4zNDUgMS4xNjMgMjUuODY0Yy4zMDMuMDA2LjYwMS0uMDc2Ljg2Mi0uMjM2bDE0Ljg5LTguNDc1LTMuNjgtMy44MVpNMjIuMjY3IDExLjkyM2wtNC45NDUtMi44MTgtMy43NDkgMy44ODkgMy43NzcgMy45MTMgNC45MTYtMi44MWMxLjA0NS0uNTk4IDEuMDQ1LTEuNTguMDAxLTIuMTc0WiIgZmlsbD0iIzAwMCIvPjwvc3ZnPg==\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.13/frontend/_next/static/images/GooglePlayText-3ec2e035f00f9158f6f674037b1758d1.svg\";","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjciIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyNyAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuOTAwNjYgMjUuODQwMUMzLjgwMTMxIDI3Ljc1ODUgNi44NDg0IDI3Ljc1ODUgMTIuOTU3NyAyNy43NTg1SDE0LjAzNjJDMjAuMTQ1NSAyNy43NTg1IDIzLjIwMDEgMjcuNzU4NSAyNS4wOTMyIDI1Ljg0MDFDMjYuOTkzOSAyMy45MjE2IDI2Ljk5MzkgMjAuODM1MSAyNi45OTM5IDE0LjY1NDNWMTMuNTYzNkMyNi45OTM5IDcuMzkwNDkgMjYuOTkzOSA0LjI5NjIyIDI1LjA5MzIgMi4zNzc3N0MyMy4xOTI1IDAuNDU5MzIgMjAuMTQ1NSAwLjQ1OTMyIDE0LjAzNjIgMC40NTkzMkgxMi45NTc3QzYuODQ4NCAwLjQ1OTMyIDMuNzkzNzcgMC40NTkzMiAxLjkwMDY2IDIuMzc3NzdDLTMuNTk2NDRlLTA3IDQuMjk2MjIgMCA3LjM4Mjc1IDAgMTMuNTYzNlYxNC42NTQzQzAgMjAuODI3NCAtMy41OTY0NGUtMDcgMjMuOTIxNiAxLjkwMDY2IDI1Ljg0MDFaIiBmaWxsPSIjMDA3N0ZGIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuODM5NSAxOC42MDczTDE5LjAxNDMgMTguMTQzMkMxOC43OTU2IDE4LjA4MTMgMTguNjM3MiAxNy44ODAyIDE4LjYyOTYgMTcuNjQ4MUwxOC40MDM0IDEwLjg1NjJDMTguMzM1NSA5Ljk1ODgzIDE3LjY3OTMgOS4yMzk0MSAxNi45ODU0IDkuMDMwNTVDMTYuOTQ3NyA5LjAxNTA3IDE2LjkwMjUgOS4wMzA1NCAxNi44Nzk4IDkuMDY5MjJDMTYuODU3MiA5LjEwMDE3IDE2Ljg2NDcgOS4xNTQzMiAxNi44OTQ5IDkuMTc3NTJDMTcuMDY4NCA5LjMwOTAzIDE3LjUzNiA5Ljc0MjIzIDE3LjUzNiAxMC40OTI2VjE5LjM2NTRDMTcuNTM2IDIwLjIyNDEgMTYuNzM2NSAyMC44NTA3IDE1LjkwNjkgMjAuNjQxOEwxNC4wNTE1IDIwLjE3NzdDMTMuODQ3OCAyMC4xMDggMTMuNzA0NSAxOS45MTQ2IDEzLjY5NyAxOS42OTAzTDEzLjQ3MDcgMTIuODk4NEMxMy40MDI4IDEyLjAwMSAxMi43NDY3IDExLjI4MTYgMTIuMDUyOCAxMS4wNzI4QzEyLjAxNSAxMS4wNTczIDExLjk2OTggMTEuMDcyOCAxMS45NDcyIDExLjExMTRDMTEuOTI0NSAxMS4xNDI0IDExLjkzMjEgMTEuMTk2NSAxMS45NjIzIDExLjIxOTdDMTIuMTM1NyAxMS4zNTEyIDEyLjYwMzMgMTEuNzg0NCAxMi42MDMzIDEyLjUzNDhWMTkuOTMwMVYyMS40MDc2QzEyLjYwMzMgMjIuMjY2MyAxMS44MDM5IDIyLjg5MjkgMTAuOTc0MiAyMi42ODRMNS43Mzk4NiAyMS4zNjEyQzUuMDE1OCAyMS4xNzU2IDQuNTAyOTMgMjAuNTE4IDQuNTAyOTMgMTkuNzY3N1YxMC44Nzk0QzQuNTAyOTMgMTAuMDIwNyA1LjMwMjQxIDkuMzk0MTIgNi4xMzIwNiA5LjYwMjk5TDkuNDI4MDQgMTAuNDM4NFY4LjgzNzE1QzkuNDI4MDQgNy45Nzg0OSAxMC4yMjc1IDcuMzUxOSAxMS4wNTcyIDcuNTYwNzdMMTQuMzUzMiA4LjM5NjIyVjYuNzk0OTNDMTQuMzUzMiA1LjkzNjI3IDE1LjE1MjYgNS4zMDk2OCAxNS45ODIzIDUuNTE4NTVMMjEuMjE2NiA2Ljg0MTM1QzIxLjk0MDcgNy4wMjcgMjIuNDUzNiA3LjY4NDU0IDIyLjQ1MzYgOC40MzQ5VjE3LjMyMzJDMjIuNDUzNiAxOC4xODE5IDIxLjY1NDEgMTguODA4NCAyMC44MjQ0IDE4LjU5OTZMMjAuODM5NSAxOC42MDczWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.13/frontend/_next/static/images/RuStoreText-adeef037d09044bd22be5b2c947dc375.svg\";","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExLjUiIGZpbGw9IiNGN0Y3RjgiIHN0cm9rZT0iI0VCRUJFQiIvPgogICAgPHBhdGggZD0iTTExLjUwMDggMTQuMjkzNUMxMS4yNDAyIDE0LjI5MzUgMTEuMDI3NiAxNC4wNzk1IDExLjA1IDEzLjgxOThDMTEuMDg2MyAxMy4zOTc5IDExLjE2MjggMTMuMDQzNyAxMS4yNzk1IDEyLjc1NzFDMTEuNDM3NiAxMi4zNjg5IDExLjc3NzYgMTEuOTEzNCAxMi4yOTkzIDExLjM5MDVDMTIuODIxIDEwLjg2MjIgMTMuMTU1NyAxMC40OTAyIDEzLjMwMzIgMTAuMjc0NkMxMy40NTYxIDEwLjA1MzYgMTMuNTcyIDkuODEzNjggMTMuNjUxMSA5LjU1NDkyQzEzLjczNTQgOS4yOTA3NyAxMy43Nzc2IDguOTkxNTggMTMuNzc3NiA4LjY1NzM0QzEzLjc3NzYgNy45ODM0OSAxMy42MDEgNy40NTUxOSAxMy4yNDc5IDcuMDcyNDRDMTIuOTAwMSA2LjY4NDMgMTIuNDEyNiA2LjQ5MDIzIDExLjc4NTUgNi40OTAyM0MxMS4xNTMgNi40OTAyMyAxMC42NDE4IDYuNjc2MjEgMTAuMjUxOSA3LjA0ODE4QzkuOTY2MTkgNy4zMjAzOCA5Ljc4MzY4IDcuNjY1NCA5LjcwNDMyIDguMDgzMjVDOS42NTYzMSA4LjMzNjAyIDkuNDUyNjUgOC41NDQxNCA5LjE5NTM1IDguNTQ0MTRDOC45MzI3OSA4LjU0NDE0IDguNzE2NzYgOC4zMjg2NCA4Ljc1MzQ5IDguMDY4NjZDOC44NDc1NCA3LjQwMzE1IDkuMTI4MjggNi44NTU0NCA5LjU5NTczIDYuNDI1NTRDMTAuMTcwMiA1Ljg5MTg1IDEwLjkwMDEgNS42MjUgMTEuNzg1NSA1LjYyNUMxMi42OTE5IDUuNjI1IDEzLjQwNiA1Ljg5NzI0IDEzLjkyNzcgNi40NDE3MUMxNC40NTQ4IDYuOTgwOCAxNC43MTgzIDcuNzEzOTUgMTQuNzE4MyA4LjY0MTE3QzE0LjcxODMgOS4yMjMzOCAxNC41ODkxIDkuNzcwNTUgMTQuMzMwOSAxMC4yODI3QzE0LjA3MjcgMTAuNzg5NCAxMy41ODI2IDExLjM4MjQgMTIuODYwNiAxMi4wNjE3QzEyLjM2MzcgMTIuNDg5IDEyLjA3NDEgMTMuMDc3NyAxMS45OTE4IDEzLjgyNzhDMTEuOTYzNyAxNC4wODM4IDExLjc1ODQgMTQuMjkzNSAxMS41MDA4IDE0LjI5MzVaTTEwLjkwMDEgMTYuOTk0M0MxMC45MDAxIDE2LjgxMSAxMC45NTU0IDE2LjY1NzMgMTEuMDY2MSAxNi41MzM0QzExLjE4MiAxNi40MDQgMTEuMzQyOCAxNi4zMzkzIDExLjU0ODMgMTYuMzM5M0MxMS43NDg2IDE2LjMzOTMgMTEuOTA2NyAxNi40MDQgMTIuMDIyNiAxNi41MzM0QzEyLjE0MzggMTYuNjU3MyAxMi4yMDQ0IDE2LjgxMSAxMi4yMDQ0IDE2Ljk5NDNDMTIuMjA0NCAxNy4xNzIyIDEyLjE0MzggMTcuMzIzMSAxMi4wMjI2IDE3LjQ0NzFDMTEuOTA2NyAxNy41NjU3IDExLjc0ODYgMTcuNjI1IDExLjU0ODMgMTcuNjI1QzExLjM0MjggMTcuNjI1IDExLjE4MiAxNy41NjU3IDExLjA2NjEgMTcuNDQ3MUMxMC45NTU0IDE3LjMyMzEgMTAuOTAwMSAxNy4xNzIyIDEwLjkwMDEgMTYuOTk0M1oiIGZpbGw9IiM2NTY1NjUiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNTAiIGZpbGw9IndoaXRlIi8+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNTAiIGZpbGw9IiNGRjMxMkMiLz4KPHBhdGggZD0iTTQwLjc1OTUgMTQ5Ljc4NUw2OC4xODYzIDEwNC4xOTdDNzAuMzAzNiAxMDAuNjggNzUuNTIzNCAxMDAuNjggNzcuNjM4IDEwNC4xOTdMMTA1LjA2NSAxNDkuNzg1QzEwNy4yMDQgMTUzLjM0MSAxMDQuNTcxIDE1Ny44MiAxMDAuMzM5IDE1Ny44Mkg0NS40ODU0QzQxLjI1MzUgMTU3LjgyIDM4LjYyMDUgMTUzLjM0NCA0MC43NTk1IDE0OS43ODVaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMTI5Ljg0NyA5OC4wMDQ0QzExNy4zOTMgOTcuODAwOCAxMDYuNTc2IDEwNC43MDUgMTAxLjM3OCAxMTQuODI1Qzk5Ljk5ODkgMTE3LjUwOSAxMDAuMTE2IDEyMC42OTIgMTAxLjY3NCAxMjMuMjgxTDEyMS41NTQgMTU2LjMyNEMxMjIuMjc2IDE1Ny41MjQgMTIzLjUyIDE1OC4zMzYgMTI0LjkzMSAxNTguNTMyQzEyNi4zNjIgMTU4LjczIDEyNy44MjUgMTU4LjgzMyAxMjkuMzEyIDE1OC44MzNDMTQ2LjUxMSAxNTguODMzIDE2MC40NjMgMTQ1LjI4NyAxNjAuNTM2IDEyOC41NDhDMTYwLjYxMiAxMTEuOTkzIDE0Ni44NDIgOTguMjc5NCAxMjkuODQ3IDk4LjAwNDRaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjA4LjUxOCA5OS4wMTQ2SDE2Ni4xMzdDMTYzLjQ2IDk5LjAxNDYgMTYxLjkxNiAxMDEuOTYzIDE2My40NzcgMTA0LjA4MUMxNjguNTggMTExLjAwOSAxNzEuNTc3IDExOS40OTIgMTcxLjUzNiAxMjguNjAxQzE3MS40OTUgMTM3LjU4NCAxNjguNTMxIDE0NS45MTEgMTYzLjUyOCAxNTIuNzNDMTYxLjk2MiAxNTQuODYyIDE2My40OTMgMTU3LjgyMyAxNjYuMTgzIDE1Ny44MjNIMjA4LjUxOEMyMTIuMzM3IDE1Ny44MjMgMjE1LjQzNCAxNTQuODA2IDIxNS40MzQgMTUxLjA4NlYxMDUuNzUyQzIxNS40MzQgMTAyLjAzMiAyMTIuMzM3IDk5LjAxNDYgMjA4LjUxOCA5OS4wMTQ2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMjMiIHZpZXdCb3g9IjAgMCAxNSAyMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC40NDg0IDEyLjI1MzZDMTQuMTIyNyAxMS42MTQ2IDEzLjIyMDUgMTEuMDgzIDEyLjAyMTYgMTIuMDA1NUMxMC40MDExIDEzLjI1MjYgNy43OTgxNiAxMy4yNTI2IDcuNzk4MTYgMTMuMjUyNkM3Ljc5ODE2IDEzLjI1MjYgNS4xOTUyNCAxMy4yNTI2IDMuNTc0NjUgMTIuMDA1NUMyLjM3NTcxIDExLjA4MyAxLjQ3MzYzIDExLjYxNDYgMS4xNDc4OCAxMi4yNTM2QzAuNTgwMDUxIDEzLjM2NzcgMS4yMjE2MyAxMy45MDYyIDIuNjY5NDkgMTQuODEzOUMzLjkwNjEzIDE1LjU4OTMgNS42MDUzMyAxNS44Nzg5IDYuNzAyNjMgMTUuOTg3Mkw1Ljc4Njc4IDE2Ljg4MTdDNC40OTY1NiAxOC4xNDE3IDMuMjUxMSAxOS4zNTggMi4zODcwNiAyMC4yMDJDMS44NzAzOCAyMC43MDY0IDEuODcwMzggMjEuNTI0NSAyLjM4NzA2IDIyLjAyOTFMMi41NDI5NCAyMi4xODE0QzMuMDU5NjIgMjIuNjg1OSAzLjg5NzA5IDIyLjY4NTcgNC40MTM3NyAyMi4xODE0TDcuODEzNDkgMTguODYxMUM5LjEwMzcgMjAuMTIxIDEwLjM0OTEgMjEuMzM3NCAxMS4yMTMxIDIyLjE4MTJDMTEuNzI5NyAyMi42ODU3IDEyLjU2NzQgMjIuNjg1NyAxMy4wODM5IDIyLjE4MTJMMTMuMjM5OCAyMi4wMjlDMTMuNzU2NSAyMS41MjQ0IDEzLjc1NjQgMjAuNzA2NCAxMy4yMzk4IDIwLjIwMTlMOC45MjEyNiAxNS45ODQ0QzEwLjAxOTQgMTUuODczOSAxMS43MDA1IDE1LjU4MjggMTIuOTI2OCAxNC44MTM5QzE0LjM3NDYgMTMuOTA2MiAxNS4wMTYyIDEzLjM2NzcgMTQuNDQ4NCAxMi4yNTM2Wk03Ljc5ODI0IDMuMTU5MThDOS4zNjU4MSAzLjE1OTE4IDEwLjYzNjYgNC40MDAzIDEwLjYzNjYgNS45MzExM0MxMC42MzY2IDcuNDYyMDggOS4zNjU4MSA4LjcwMzA5IDcuNzk4MjQgOC43MDMwOUM2LjIzMDY3IDguNzAzMDkgNC45NTk5NiA3LjQ2MjA4IDQuOTU5OTYgNS45MzExM0M0Ljk1OTk2IDQuNDAwMyA2LjIzMDY3IDMuMTU5MTggNy43OTgyNCAzLjE1OTE4Wk03Ljc5ODU2IDExLjU2NTZDMTAuOTg0NyAxMS41NjU2IDEzLjU2NzggOS4wNDI5NSAxMy41Njc4IDUuOTMxMjJDMTMuNTY3OCAyLjgxOTQ5IDEwLjk4NDcgMC4yOTY4NzUgNy43OTg1NiAwLjI5Njg3NUM0LjYxMjI2IDAuMjk2ODc1IDIuMDI5MyAyLjgxOTQ5IDIuMDI5MyA1LjkzMTIyQzIuMDI5MyA5LjA0Mjk1IDQuNjEyMjYgMTEuNTY1NiA3Ljc5ODU2IDExLjU2NTZaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNSAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi4wOTUxIDEzLjQ3MTFIMTMuNTA5OUMxMy41MDk5IDEzLjQ3MTEgMTMuOTM3MiAxMy40MjQ5IDE0LjE1NTcgMTMuMTk0MkMxNC4zNTY0IDEyLjk4MjIgMTQuMzUgMTIuNTg0MyAxNC4zNSAxMi41ODQzQzE0LjM1IDEyLjU4NDMgMTQuMzIyNCAxMC43MjEyIDE1LjIwMzMgMTAuNDQ2OEMxNi4wNzIxIDEwLjE3NjQgMTcuMTg3NCAxMi4yNDc0IDE4LjM2OTUgMTMuMDQzOEMxOS4yNjM1IDEzLjY0NjMgMTkuOTQyOCAxMy41MTQ0IDE5Ljk0MjggMTMuNTE0NEwyMy4xMDQgMTMuNDcxMUMyMy4xMDQgMTMuNDcxMSAyNC43NTc1IDEzLjM3MSAyMy45NzM0IDEyLjA5NUMyMy45MDkyIDExLjk5MDggMjMuNTE2NiAxMS4xNTEyIDIxLjYyMyA5LjQyNjE3QzE5LjY0MDcgNy42MjA2NSAxOS45MDY0IDcuOTEyNzcgMjIuMjk0IDQuNzg5NjdDMjMuNzQ4MSAyLjg4NzcxIDI0LjMyOTMgMS43MjY2MiAyNC4xNDc3IDEuMjI5MzVDMjMuOTc0NyAwLjc1NTU1OSAyMi45MDUxIDAuODgwNzE1IDIyLjkwNTEgMC44ODA3MTVMMTkuMzQ1OSAwLjkwMjMxMUMxOS4zNDU5IDAuOTAyMzExIDE5LjA4MTkgMC44NjcwNTQgMTguODg2MyAwLjk4MTkwM0MxOC42OTUgMS4wOTQyMiAxOC41NzIzIDEuMzU2NjQgMTguNTcyMyAxLjM1NjY0QzE4LjU3MjMgMS4zNTY2NCAxOC4wMDg3IDIuODI4MzIgMTcuMjU3NyA0LjA4MDEzQzE1LjY3MjggNi43MjExNyAxNS4wMzkgNi44NjA5NyAxNC43OCA2LjY5NjcxQzE0LjE3NzIgNi4zMTQ0NSAxNC4zMjc5IDUuMTYxMzggMTQuMzI3OSA0LjM0MTk3QzE0LjMyNzkgMS43ODI0MSAxNC43MjM0IDAuNzE1MjMxIDEzLjU1NzUgMC40Mzg5ODhDMTMuMTcwNyAwLjM0NzM3MSAxMi44ODU3IDAuMjg2NzU2IDExLjg5NjIgMC4yNzY4NThDMTAuNjI2MiAwLjI2NDE3OSA5LjU1MTUxIDAuMjgwNzAyIDguOTQyODcgMC41NzMzMDZDOC41Mzc5NCAwLjc2NzkxMSA4LjIyNTU0IDEuMjAxNDYgOC40MTU5MSAxLjIyNjQxQzguNjUxMjIgMS4yNTcxNyA5LjE4Mzg0IDEuMzY3NTEgOS40NjYyNCAxLjc0NDYyQzkuODMxMDcgMi4yMzE3NSA5LjgxODMyIDMuMzI1MjcgOS44MTgzMiAzLjMyNTI3QzkuODE4MzIgMy4zMjUyNyAxMC4wMjggNi4zMzgyNSA5LjMyODg3IDYuNzEyNDFDOC44NDkxOCA2Ljk2OTExIDguMTkxMDMgNi40NDUwOSA2Ljc3ODA0IDQuMDQ4OTZDNi4wNTQyIDIuODIxNjIgNS41MDc0OSAxLjQ2NDc4IDUuNTA3NDkgMS40NjQ3OEM1LjUwNzQ5IDEuNDY0NzggNS40MDIyMiAxLjIxMTI3IDUuMjE0MTggMS4wNzU1N0M0Ljk4NjEyIDAuOTExMTQ1IDQuNjY3NDcgMC44NTkwMzggNC42Njc0NyAwLjg1OTAzOEwxLjI4NTE5IDAuODgwNzE1QzEuMjg1MTkgMC44ODA3MTUgMC43Nzc1NzMgMC44OTQ2MjEgMC41OTEwMyAxLjExMTMxQzAuNDI1MDc1IDEuMzA0MiAwLjU3Nzc3NyAxLjcwMjY1IDAuNTc3Nzc3IDEuNzAyNjVDMC41Nzc3NzcgMS43MDI2NSAzLjIyNTU1IDcuNzgyMjkgNi4yMjM5MSAxMC44NDYxQzguOTczNDYgMTMuNjU1NSAxMi4wOTUxIDEzLjQ3MTEgMTIuMDk1MSAxMy40NzExWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjA0NTIgNS4wMzcxM0MxMC44ODM4IDUuMDM3MTMgMTEuNTY1OSA1LjcxOTIzIDExLjU2NTkgNi41NTc3OEMxMS41NjU5IDcuMzk1NjMgMTAuODgzNiA4LjA3NzcyIDEwLjA0NTIgOC4wNzc3MkM5LjIwNzIyIDguMDc3NzIgOC41MjQ5NSA3LjM5NTYzIDguNTI0OTUgNi41NTc3OEM4LjUyNDc3IDUuNzE5MDUgOS4yMDczOSA1LjAzNzEzIDEwLjA0NTIgNS4wMzcxM1pNMTAuMDQ1MiAxMC4yMjkxQzEyLjA3MDggMTAuMjI5MSAxMy43MTggOC41ODI0NCAxMy43MTggNi41NTc3OEMxMy43MTggNC41MzIwNyAxMi4wNzEgMi44ODQ2NyAxMC4wNDUyIDIuODg0NjdDOC4wMTk4OCAyLjg4NDY3IDYuMzcyNDkgNC41MzIyNSA2LjM3MjQ5IDYuNTU3NzhDNi4zNzI0OSA4LjU4MjQ0IDguMDE5ODggMTAuMjI5MSAxMC4wNDUyIDEwLjIyOTFaTTExLjUzMTEgMTMuMjI0OUMxMi4yODY2IDEzLjA1MjggMTMuMDA3NiAxMi43NTQzIDEzLjY2MzcgMTIuMzQxOUMxMy45MDUyIDEyLjE4OTkgMTQuMDc2NCAxMS45NDgyIDE0LjEzOTggMTEuNjdDMTQuMjAzMSAxMS4zOTE4IDE0LjE1MzMgMTEuMDk5OCAxNC4wMDE0IDEwLjg1ODNDMTMuOTI2MiAxMC43Mzg2IDEzLjgyODIgMTAuNjM0OSAxMy43MTMgMTAuNTUzMUMxMy41OTc3IDEwLjQ3MTMgMTMuNDY3NCAxMC40MTMgMTMuMzI5NiAxMC4zODE2QzEzLjE5MTggMTAuMzUwMiAxMy4wNDkyIDEwLjM0NjMgMTIuOTA5OSAxMC4zN0MxMi43NzA1IDEwLjM5MzggMTIuNjM3MyAxMC40NDQ4IDEyLjUxNzcgMTAuNTIwMUMxMS4wMTMgMTEuNDY2IDkuMDc2NDMgMTEuNDY1MyA3LjU3MzAxIDEwLjUyMDFDNy40NTM0MiAxMC40NDQ3IDcuMzIwMTYgMTAuMzkzNyA3LjE4MDg0IDEwLjM3QzcuMDQxNTMgMTAuMzQ2MiA2Ljg5ODg5IDEwLjM1MDEgNi43NjEwOSAxMC4zODE2QzYuNjIzMyAxMC40MTMgNi40OTMwNSAxMC40NzEyIDYuMzc3OCAxMC41NTMxQzYuMjYyNTYgMTAuNjM0OSA2LjE2NDU3IDEwLjczODYgNi4wODk0NiAxMC44NTgzQzUuOTM3NDYgMTEuMDk5OCA1Ljg4NzYgMTEuMzkxNyA1Ljk1MDgzIDExLjY2OTlDNi4wMTQwNiAxMS45NDgxIDYuMTg1MjEgMTIuMTg5OCA2LjQyNjY0IDEyLjM0MTlDNy4wODI2MSAxMi43NTQxIDcuODAzNSAxMy4wNTI3IDguNTU4ODggMTMuMjI0OUw2LjUwNTc0IDE1LjI3ODRDNi4zMDM5OCAxNS40ODAyIDYuMTkwNjUgMTUuNzUzOSA2LjE5MDcgMTYuMDM5M0M2LjE5MDc1IDE2LjMyNDcgNi4zMDQxNyAxNi41OTg0IDYuNTA2MDEgMTYuODAwMkM2LjcwNzg0IDE3LjAwMTkgNi45ODE1NyAxNy4xMTUzIDcuMjY2OTYgMTcuMTE1MkM3LjU1MjM1IDE3LjExNTIgNy44MjYwMyAxNy4wMDE3IDguMDI3OCAxNi43OTk5TDEwLjA0NDkgMTQuNzgyNEwxMi4wNjMyIDE2LjgwMDFDMTIuMTYzIDE2LjkgMTIuMjgxNSAxNi45NzkzIDEyLjQxMiAxNy4wMzM0QzEyLjU0MjUgMTcuMDg3NSAxMi42ODIzIDE3LjExNTMgMTIuODIzNSAxNy4xMTUzQzEyLjk2NDggMTcuMTE1MyAxMy4xMDQ2IDE3LjA4NzUgMTMuMjM1MSAxNy4wMzM0QzEzLjM2NTYgMTYuOTc5MyAxMy40ODQxIDE2LjkgMTMuNTgzOSAxNi44MDAxQzEzLjY4NCAxNi43MDAzIDEzLjc2MzQgMTYuNTgxNyAxMy44MTc1IDE2LjQ1MTJDMTMuODcxNyAxNi4zMjA3IDEzLjg5OTYgMTYuMTgwNyAxMy44OTk2IDE2LjAzOTRDMTMuODk5NiAxNS44OTgxIDEzLjg3MTcgMTUuNzU4MSAxMy44MTc1IDE1LjYyNzZDMTMuNzYzNCAxNS40OTcxIDEzLjY4NCAxNS4zNzg1IDEzLjU4MzkgMTUuMjc4N0wxMS41MzExIDEzLjIyNDlaIiBmaWxsPSIjMTgxQjIxIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iMzQiIHZpZXdCb3g9IjAgMCAzNCAzNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM0IiBoZWlnaHQ9IjM0IiByeD0iNCIgZmlsbD0ibm9uZSIvPgo8cGF0aCBkPSJNMTAuMTM3NCAxNi4wMjdDMTQuNTc4OCAxNC4wNTEzIDE3LjU0MDQgMTIuNzQ4NyAxOS4wMjIzIDEyLjExOTRDMjMuMjUzMiAxMC4zMjI2IDI0LjEzMjQgMTAuMDEwNSAyNC43MDU0IDEwLjAwMDFDMjQuODMxNSA5Ljk5Nzk0IDI1LjExMzMgMTAuMDI5OCAyNS4yOTU4IDEwLjE4MTFDMjUuNDQ5OSAxMC4zMDg4IDI1LjQ5MjMgMTAuNDgxMyAyNS41MTI2IDEwLjYwMjNDMjUuNTMyOSAxMC43MjM0IDI1LjU1ODIgMTAuOTk5MiAyNS41MzgxIDExLjIxNDdDMjUuMzA4OCAxMy42NzQ0IDI0LjMxNjcgMTkuNjQzNCAyMy44MTIgMjIuMzk4M0MyMy41OTg1IDIzLjU2NCAyMy4xNzc5IDIzLjk1NDggMjIuNzcwOCAyMy45OTMxQzIxLjg4NjEgMjQuMDc2MiAyMS4yMTQzIDIzLjM5NjEgMjAuMzU3NCAyMi44MjI2QzE5LjAxNjUgMjEuOTI1MSAxOC4yNTg5IDIxLjM2NjQgMTYuOTU3NCAyMC40OTA3QzE1LjQ1MzIgMTkuNDc4NiAxNi40MjgzIDE4LjkyMjQgMTcuMjg1NSAxOC4wMTMzQzE3LjUwOTkgMTcuNzc1NCAyMS40MDggMTQuMTU1MiAyMS40ODM1IDEzLjgyNjhDMjEuNDkyOSAxMy43ODU3IDIxLjUwMTcgMTMuNjMyNiAyMS40MTI2IDEzLjU1MTdDMjEuMzIzNSAxMy40NzA5IDIxLjE5MiAxMy40OTg1IDIxLjA5NzEgMTMuNTIwNUMyMC45NjI3IDEzLjU1MTcgMTguODIwNiAxNC45OTczIDE0LjY3MDggMTcuODU3M0MxNC4wNjI4IDE4LjI4MzYgMTMuNTEyMSAxOC40OTEzIDEzLjAxODYgMTguNDgwNUMxMi40NzQ3IDE4LjQ2ODUgMTEuNDI4MyAxOC4xNjY0IDEwLjY1MDQgMTcuOTA4M0M5LjY5NjI4IDE3LjU5MTYgOC45Mzc5OCAxNy40MjQyIDkuMDA0MDEgMTYuODg2NEM5LjAzODQgMTYuNjA2MyA5LjQxNjIgMTYuMzE5OCAxMC4xMzc0IDE2LjAyN1oiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIuODEyOSAxNy42MDc3QzYuNjY5ODcgMTcuNjA3NyAzLjE2NjAyIDEzLjM5NjMgMy4wMjAwMiA2LjM4ODQ5SDYuMDk3MTdDNi4xOTgyNSAxMS41MzIxIDguNDY2NzUgMTMuNzEwOCAxMC4yNjM2IDE0LjE2VjYuMzg4NDlIMTMuMTYxMlYxMC44MjQ1QzE0LjkzNTYgMTAuNjMzNiAxNi43OTk3IDguNjEyMTIgMTcuNDI4NiA2LjM4ODQ5SDIwLjMyNjFDMTkuODQzMiA5LjEyODczIDE3LjgyMTcgMTEuMTUwMiAxNi4zODQyIDExLjk4MTNDMTcuODIxNyAxMi42NTUxIDIwLjEyNCAxNC40MTgzIDIxIDE3LjYwNzdIMTcuODEwNUMxNy4xMjU0IDE1LjQ3NCAxNS40MTg1IDEzLjgyMzEgMTMuMTYxMiAxMy41OTg1VjE3LjYwNzdIMTIuODEyOVoiIGZpbGw9IiM1MTgzOTkiLz48L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjY3NzQgMTQuNjczMUM1LjU1ODE0IDE0LjY3MzEgMi42MzgyNyAxMS4xNjM2IDIuNTE2NiA1LjMyMzczSDUuMDgwOUM1LjE2NTEyIDkuNjEwMDMgNy4wNTU1NCAxMS40MjU2IDguNTUyOTQgMTEuOFY1LjMyMzczSDEwLjk2NzZWOS4wMjA0M0MxMi40NDYzIDguODYxMzMgMTMuOTk5NiA3LjE3Njc2IDE0LjUyMzcgNS4zMjM3M0gxNi45MzgzQzE2LjUzNTkgNy42MDcyNiAxNC44NTEzIDkuMjkxODQgMTMuNjUzNCA5Ljk4NDM4QzE0Ljg1MTMgMTAuNTQ1OSAxNi43NyAxMi4wMTUyIDE3LjQ5OTkgMTQuNjczMUgxNC44NDJDMTQuMjcxMSAxMi44OTQ5IDEyLjg0ODcgMTEuNTE5MiAxMC45Njc2IDExLjMzMlYxNC42NzMxSDEwLjY3NzRaIiBmaWxsPSIjMTgxQjIxIi8+Cjwvc3ZnPgo=\""],"names":["isPopup","csrf","useSelector","selectCsrf","useState","message","isLoading","status","undefined","state","setState","doSubmit","name","phone","label","dataParams","resp","prevState","petition","fio","product_id","tv_equipment_id","doRequest","requestByConnection","isSuccess","payload","dataLayerForCBPhonePush","action","ACTIONS","option","ERequestStatus","requestId","InputPhone","phoneDecorator","InputSimple","InputName","nameDecorator","Wrapper","styled","COLORS","BoxShadow","BorderRadius","Title","FONTS","wideBreakpoints","Inputs","Name","Phone","ButtonBlock","Button","p","textColor","BaseButton","Message","connect","cityDomain","city","currentCity","domain","props","title","buttonText","handleSuccess","getParams","handleAuthClick","onlyBecomeClient","disableButton","setPhone","setName","isValidInputs","setIsValidInputs","isLoadingButton","setIsLoadingButton","beenStarted","setDataLayer","useEffect","isValid","useSubmitAuthForm","onChangeHandler","stateInput","_setState","value","onSubmit","e","preventDefault","params","onChange","placeholder","errorMessage","className","IndentContainer","$united","PolicyNote","data-test","agreeUrl","POLICY_PAGE_LINK","type","btnTypes","text","disabled","href","USER_LOGIN_ROUTE","onClick","fadeInAnimation","keyframes","RegionElement","RegionTitle","isOpen","CitiesWrap","CityItem","isMain","region","isRegionOpen","onRegionSelect","onCitySelect","ST","cities","length","map","index","provider_id","main","citySelectHandler","cityName","createSvg","strokeWidth","g","id","path","d","strokeLinecap","strokeLinejoin","TopCitiesWrap","TopCityElement","CityIcon","cityIndex","Moscow","size","StPetersburg","topCities","topCity","GlobalStyle","createGlobalStyle","$active","Container","ContentWrapper","WideContainer","DropDown","Select","ColumnsWrapper","Column","FlexBoxCol","RegionsWrapper","RegionsLetter","filterConfig","ignoreCase","ignoreAccents","trim","matchFrom","field","regions","citiesSatellites","selectedRegion","citiesOptions","useMemo","lettersByColumns","useMatchMediaByWidth","isTablet","isLaptop","isDesktop","firstColumnSize","columnsCount","regionsCount","reduce","result","otherColRegionSize","Math","round","Map","regionLetters","Object","keys","currCol","currCount","letter","mid","push","fromEntries","entries","clear","set","useColumnsByRegionLetters","bType","Icon","ArrowLeft","H2","$withIndent","selectedCityOption","options","noOptionsMessage","inputValue","get","isSearchable","filterOption","createFilter","lettersColumn","columnIndex","columnLetters","TopCities","region_id","Throbber","getCitiesSatellites","providerId","uri","method","headers","dispatch","getState","selectProviderId","setSatellites","values","getCitiesByRegion","queryParams","citySelect","regionLetter","charAt","letterRegions","updatedRegionIndex","findIndex","_region","regionWithCities","splice","setRegions","setSelectedRegion","orderBy","batch","updateRegion","getRegionsGroups","ERequestMethod","sortBy","groupBy","getTopCities","setTopCities","changeCity","newCityDomain","newProviderId","window","location","protocol","pathname","searchParams","URLSearchParams","search","append","host","split","splittedHost","join","replace","toString","selectedCity","isAuth","auth","logout","Cookies","save","CITYDOMAIN_COOKIE","config","maxAge","COOKIE_MAX_AGE_LONG","closeCitySelect","useDispatch","shallowEqual","satellites","citySelectIsOpen","isEmpty","fetchRegionsList","fetchTopCities","fetchCitiesSatellites","CitySelect","fetchRegionCities","expires","Date","setDate","getDate","cookie","COOKIE_DOMAIN","saveCity","Label","checked","required","children","useCallback","event","target","isChecked","withLabel","input","span","AdvertisingLabelWithTooltip","Paragraph4","SPopupResponse","PopupNoAuth","PopupResponse","SMultiCheckbox","MultiCheckbox","SMultiCheckboxWrapper","CLIENT_REFERRAL_LINK","onClose","showRequestFormPopup","isMobile","isLeadGeneration","isLeadGenerationHide","onClickReferralButton","dataLayerPush","category","CATEGORIES","EVENTS","onShowRequestFormPopup","BasePopup","width","height","fullWidth","customScrollBarStyles","view","position","paddingBottom","customBasePopupStyles","topWrapper","customDefaultPopupStyles","popup","mobile","backgroundImage","default","backgroundPosition","backgroundSize","backgroundRepeat","div","br","Link","prefetch","passHref","multiCheckboxGroup","EProductsId","closeBecomeClientPopup","showBecomeClientPopup","setShowRequestFormPopup","showResponsePopup","setShowResponsePopup","becomeClientResponseMessage","setBecomeClientResponseMessage","EResultPopupStatus","setStatus","filters","setFilters","companyName","selectCompanyName","selectedProductsIds","productIdsArray","Set","filter","el","forEach","add","toggleFilter","currFilters","sendBecomeClient","clientData","ok","check_call_type","request_id","error","openRequestFormPopup","closeRequestFormPopup","closeResponsePopup","ConnectDomruPopup","PopupCallBackNoAuth","waitStatus","submitRequest","item","Copyright","CopyrighLeft","CopyrightCompany","CopyrightText","CopyrightLink","memo","company","link","NBSP","displayName","copyrightLink","cobrandLegalEntity","cobrandCopyrightLink","getFullYear","ListItemLi","ListItem","css","ListItemButton","ListItemA","dataTest","FooterLinks","LinksTitle","LinksList","links","PayBtn","PayButton","payButtonLink","clearFields","fields","clearInput","NameInput","PhoneInput","BreakHack","ButtonLookLikeHref","Popup","DefaultPopup","ButtonsContainer","BaseContainer","InputContainer","Text","isError","RenderMessage","openChatHandler","RenderForm","policyLink","theme","onEditFio","onEditPhone","onChangeTheme","onSendRequest","onChangeHandle","stateResult","initialValue","RenderSelectTheme","themes","onSelectTheme","highlightIndex","code","EThemes","PROBLEMS_REPORT","GET_CONSULTATION","BECOME_CLIENT","COMPLAIN","OTHER","THEMES","CallRequestByTheme","sendRequestHandle","setTheme","selectBlockVisible","setVisible","isHighlight","setHighlight","setFio","clearTimeoutLink","setClearTimeout","setIsLoading","setIsError","setMessage","useIsValidForm","setIsValid","clearFieldsPatch","handleClose","clearTimeout","handleSendRequest","fioValue","phoneValue","Number","setTimeout","Header","LinkPhone","LinkCallBack","LinkWithIcon","RowNav","RowCallback","List","SOCIAL_NETWORKS","network","icon","IconVk","Support","requestLink","contactEmail","withChat","isCallbackOpen","setIsCallbackOpen","onCallbackClick","phoneLink","img","src","alt","Footer","FooterTop","Wrap","FooterSupport","SocialContainer","LinksWrap","SocialText","SocialStyled","Social","FooterService","Store","StoreButtons","FooterBottom","FooterText","SOCIALS","background","vkontakte","odnoklassniki","telegram","onClickMobileButton","servicesLinks","socials","services","info","linkList","key","MobileStoreButton","store","EStoreName","selectClientContacts","clientContacts","selectClientContactsEmailConfirmed","createSelector","items","email","emails","acc","val","EContactStatuses","EmailPopup","breakPoint","Body","EmailBlock","EmailInput","Input","EmailNotice","CodeBlock","CodeInput","ErrorMessage","SendAgainLink","EPopupSteps","success","addedUnconfirmedEmail","showPopup","popupStep","onClosePopup","contactId","setErrorMessage","setPopupStep","emailConfirmedHandler","setCode","codeError","setCodeError","changeCode","sendCodeAgain","url","response","origin","contactsSendMailForConfirm","contact_id","show_code","closePopupHandler","submit","confirmEmail","PopupResult","a","NON_BREAKING_SPACE","OpenChat","hidden","MainText","breakPoints","mainText","emailInput","useRef","emailsConfirmed","setEmail","setContactId","showWidget","setShowWidget","setShowPopup","eventStartSended","setEventStartSended","query","fetchQueryParams","String","changeEmail","current","hasError","addUnconfirmedEmail","getClientContacts","GridContainerUI","dangerouslySetInnerHTML","__html","ref","selectHasIntercom","selectNewMenuItems","menuItems","authMain","unauthMain","getFilteredMenuItems","findIntercom","COBRAND_DATA","FOOTER_LINKS","withEmailWidget","emailWidgetText","provider","clientPersonal","accessToken","refreshToken","selectContactEmail","legalEntity","selectLegalEntity","hasIntercom","internet","ctv","ktv","videocontrol","agreement","uid","sendByCall","ESendByCallPetitions","backCall","phoneNumber","hasInternet","hasCtv","hasKtv","hasVideocontrol","hasDomofon","aboutCompanyLinks","otherLinks","useFooterLinks","openChat","supportPhone","EmailWidget","FooterComponent","mobileOs","getMobileLink","LinkOriginal","Logo","LogoImg","maxWidth","breakpoints","MenuLogo","forwardRef","cityData","logoFull","logo","setLogo","useMatchMedia","logo_narrow","MobileLogoDefault","LogoDefault","clickHandle","PLANK_MOBILE_HEIGHT","PlankWrap","isHide","isShows","PopupAuth","render","this","currentTvPackage","NoSSR","open","close","AuthForm","Component","BaseAnimation","rightToLeftAnimation","TariffsPlug","isWebpUsed","fadeIn","PlugContent","SvgIcon","TariffCardPlug","rest","useWebp","Head","rel","as","aria-label","use","desktop","sDesktop","tablet","sMobile","BreakPointsMFirst","USER_LOGOUT_ROUTE","USER_CHANGE_ROUTE","NON_BREAKING_DASH","OP_BR","CL_BR","AppContext","createContext","isScrollingUp","useAppContext","useContext","PROMO_LINE_HEIGHT","HatLink","image","HatWrapperWithIndent","promoLine","PATHS_CONTAIN_TO_HIDE_LINE","useHat","data","promolines","setPromolines","withPromoLines","hasAuthorization","selectHasAuthorization","prevPromolinesData","useRouter","asPath","promoline","find","line","isShowPromoLine","paths","some","link1","TOP_WRAPPER_HEIGHT","commonWrapperWithIndentStyle","MainWrapperOffset","TopWrapperOffset","TopWrapper","HeaderWrapper","GridContainer","withShadow","DropDownContainerTop","DropDownContainerBottom","LinkItemDrop","TopMenuItemBlock","IconTextBlock","BurgerBlock","BurgerWrapper","BurgerIcon","isBurgerOpen","TopMenuItem","PartnersItem","Right","isBlockedBody","BurgerMenu","BurgerMenuWrapper","PromoImg","isSmallMobile","mMobile","brand","notifications","warning","accent","native","head","primary","hint","contrast","system","secondary","deep","light","overlay","baseTheme","colors","reset","normalize","endpoint","ChatFrame","dynamic","ssr","enabled","chat","thisPlayStation","isClientSide","isPlayStation","addEventListener","openchat","IS_SANDBOX_ENVIROMENT","document","chatIsOpen","loadedChat","closeChat","onLoad","chatLink","CHAT_ENDPOINT","initiator","isHideButton","CityPhone","selectCurrentCityPhone","hasPhoneData","callCenter","MenuType","SDescription","isPromo","description","SButton","btnText","btnLink","STitle","onClickHandler","ItemWrapper","isCurrent","ItemTitle","ItemBtn","add_desc","button_text","button_link","Description","AnimationImg","PromoItemWrapper","isPromoMemu","ImageBlock","ItemImage","ContentBlock","ContentLinkWrapper","LabelsBlock","SLabel","ItemDescription","EMenuType","isOnlyPromo","image_webp","image_animated","labels","advertising","mainMenu","NonStaticContainer","$bottom","$right","erid","tooltip","zIndex","closeOnTransition","WebpImage","urlWebp","color_text","bgColor","color","TitleRow","CityWrapper","getCurrentCity","role","openCitySelect","Location","CitySelectionBlock","PartnersBlock","ServiceBlock","MainWrapper","LogoBlock","SMenuLogo","MainBlockInnerContainer","ClientActionsBlock","isHover","rotateOnLeave","top","left","right","SBaseButton","CollapsedMenu","MenuItemWrapper","TextItem","CollapsedContainer","TypeWrapper","TypeTitle","TypeContent","DESCRIPTION_LABEL","DESCRIPTION_BUTTON","COMMON","getContentTypeStylesByType","CommonTitle","LinkItem","MainMenuItem","mainMenuItem","itemRef","onDataLayerHandler","promoted","child","currentPath","dataLayerHandler","isOnlyPromoChildren","DESCRIPTION_BUTTON_IMAGE","DescriptionButtonImage","DescriptionButton","DescriptionLabel","getItemByType","PartnerSvgIcon","iconPath","PartnerIcon","PartnerLink","PartnersMenuItem","partner","isSvgIcon","image_icon","indexOf","withDropDown","isCollapsed","ItemText","ItemLink","Ul","DropDownLink","ServiceMenuItem","currentChild","service","router","substrateRef","setIsCollapsed","Overlay","ToolTip","active","parent","arrow","align","customStyles","style","padding","borderRadius","backgroundColor","boxShadow","li","hasPhoneInfo","ClientActions","partners","onDataLayerSendEventHandler","menuType","data-visible","serviceItem","PhoneInfo","mainItem","Plank","CloseButton","Chest","Paragraph","Pic","LinkContainer","PlankMobile","headerText","pic","linkName","onCloseLink","onClosePlank","defaultProps","logoPlank","plank","mobileLink","plankType","isHideByDevice","setIsHideByDevice","isMobileWidth","initPlankStatus","res","hidePlank","handleClosePlank","setPlankCookieAndClose","handleCloseLink","HighlightIndex","Fragment","TooltipWrapper","show","Content","TooltipTitle","TooltipCity","TooltipFooter","process","CitySelection","handleClick","noBtnClick","onBackClick","gaCityShow","sessionStorage","getItem","setItem","componentDidMount","componentDidUpdate","StyledCitySelection","CityConfirmationBlock","ConfirmCitySelection","isAvailable","isPromoted","AccordionTitle","isVisible","AccordionBody","firstItem","setIsOpen","toggle","itemProp","CardWrapper","CardChildItem","CardChildLink","CategoryLink","CardChildItemHoc","childItem","clickHandler","onClickHandlerGA","itemMenuType","MobileHeaderContext","PromoWrapper","PromoTextBlock","isImg","PromoTitle","PromoDesc","PromoMore","colorText","isTooltipShown","setIsTooltipShown","clickHandlerWrapper","isMenuScrolling","isShown","Promo","available","Card","MainMenuWrapper","Accordion","Category","analytics","itemChild","CommonActions","Actions","ActionsInBurger","withShadowInMobileHeader","setIsBurgerOpen","setIsMenuScrolling","onMenuScroll","toggleBurgerHandler","closeBurgerHandler","menuItemClick","Provider","Menu","onScroll","Close","closeHandler","TopMenu","TopMenuWithIcons","isDrop","CardMenu","BlindMenu","DropDownWrapper","isMobileView","DropDownContent","activeComponent","displayDropDown","blindMenuRef","onMouseEnter","onMouseLeave","displayDropDownState","setDisplayDropDownState","isStateless","BlindMenuWithBtn","elements","onElementClick","DefaultButton","btnSizes","elementClickHandler","Info","SkeletonContainer","getArray","count","Array","from","_","i","currentSkeletonProps","containerWidth","counter","WithSkeletonContext","WithSkeleton","formatPartOfAddress","part","prefix","postfix","formatAddressIntoString","address","street","house","building","flat","selectClientPersonalForHeader","personal","Agreement","userInfo","isDisplayChangeAgreement","isSso","DocumentText","Skeleton","$smaller","ButtonGroup","getProductPredicate","productCheck","clientInfo","productId","productInfoPredicates","selectClientPersonalLinksForHeader","clientProducts","products","shouldBeDisplayedFilter","clientProductsServices","shouldBeDisplayed","headerDefaultLinks","uniqueId","linksForActionSearch","mapValues","keyBy","isLogout","isNeedToRequest","ProfileAuthWrapper","fetchClientInfo","sendEvent","onClickLinkHandler","agreementMenuRef","isDisplay","setIsDisplay","isDisplayAgreement","setIsDisplayAgreement","onOutClick","composedPath","isBlindMenu","includes","isAgreementMenu","useClickOutside","agreementDetailClickHandler","profileMenuClickHandler","rounded","User","AuthHeader","newMenuItems","selectAuthMenu","ProfileContainer","CommonDesktopHeader","CommonMobileHeader","sendGTMevent","imagesParams","onBecomeClientHandler","referrerPath","setIsHover","clientActions","urlsForHideConnectButton","ButtonsBlock","Login","onOpenBecomeClientPopup","sendAuthEvent","MainView","BurgerView","UnauthHeader","selectUnauthMenu","setShowBecomeClientPopup","openBecomeClientPopup","decodeURIComponent","UnauthMobileHeader","UnauthDesktopHeader","ConnectDomruPopupGroup","HeaderContainer","data-auth","Hat","AppContainer","withMenu","withFooter","withBottomSticky","CDN_API_ENDPOINT","UIKitGlobalStyle","Chat","CitySelectContainer","relCanonical","hostname","getHostname","pathWithoutParam","canonicalUrl","withGoogleoptimize","NextHead","Script","async","meta","property","content","sizes","noscript","useScrollingUpState","offset","prevScrollY","scrollY","setIsScrollingUp","updateScrollDirection","abs","newScrollDirection","newPrevScrollY","NO_SCROLL_PATH","CookieAlert","Router","scrollTo","isClient","checkCookieInterval","setInterval","ACCESS_TOKEN_COOKIE","isAccessTokenDefined","Boolean","REFRESH_TOKEN_COOKIE","isRefreshTokenDefined","clearInterval","intervalId","ym","UserID","init","agreementNumber","onError","defaultErrorHandler","environment","debug","blocking","requestAnimationFrame","removeEventListener","useHeaderScroll","ThemeProvider","lightTheme","App","PassportUpdate","IS_GTM_DISABLED","GosuslugiIcon","initialized","isActualData","isNewEnter","actionTypes","updateError","startGettingGosuslugiCode","returnUrl","IS_LOCAL_ENVIROMENT","withProvider","withAuth","redirectUrl","authUrl","PassportUpdateButton","GosuslugiButton","PassportUpdateInfoPopup","isDataActual","passportUpdate","$desktop","$mobile","FullWidthListContainer","$direction","$wrap","$size","H3","EButtonActions","popupType","btns","incorrect","PassportUpdateResultPopup","isUpdateSuccess","isDataInCorrect","btnAction","currentContent","getContent","btn","LAST_ENTER_COOKIE","checkNewEnter","isServerSide","cookies","lastEnter","partAccessToken","substring","useUpdatePassportData","usePassportUpdateAbn","esiaKey","ESIA_COOKIE","gosuslugiCode","requestDto","esiaCode","withValidation","body","JSON","stringify","PassportUpdateAlert","Alert","AlertButtons","getABNVariant","Grid","STariffCardPlug","IncludesPopup","LazyLoadImage","PopupInner","PopupTitle","PopupDescription","PopupButtonBlock","AUTHORIZATION_SSO","on","off","abnTests","defaultVariants","getABNVariantFrom","getFormattedLabel","actionWrap","dataLayerForCBPhonePushWrapper","getDataStatus","sendVasGA","createSendVasGA","additionalLabel","divideUsersGA","orderType","resultForAuth","resultForNotAuth","toSelectOption","object","valueKey","labelKey","toSelectOptions","array","toSelectOptionsWithProvider","toSelectOptionWithProvider","uniqueArrItems","arr","obj","showFormatDate","date","reverse","sortFunction","first","second","sort","ESortResult","EQUALS","FIRST_PARAMETER_AFTER","FIRST_PARAMETER_BEFORE","sortFunctionWithRequestIdOnTop","retryIfParamIsLocked","fn","maxRetries","timeOut","catch","err","Promise","resolve","isHidden","hideHandler","HIDING_LEAD_GENERATION","NEW","OLD","MOBILE_OS","getIosMobileLink","getAndroidMobileLink","getDetectMobileLink","isAndroid","isIphone","queryParam","token","refresh_token","agreement_number","city_id","cityId","queryString","getUrlString","DEEPLINK","encodeURIComponent","MOBILE_MARKETS","ANDROID_LINK","IPHONE_LINK","DEFAULT_LINK","navigator","userAgent","match","isMacOS","isBrowser","setIsBrowser","redirectingService","httpCode","req","writeHead","end","permanentRedirect","nonPermanentRedirect","getHostNameFromUrl","urlParts","exec","getUrlParams","substr","query_string","keyValuePair","paramName","paramValue","shift","urlParams","hasStrInUrl","str","contacts","isClientContactsLoading","getAgreementNumber","getInfoAll","setClientContacts","parseContacts","clientContactsLoading","captureMessage","level","Severity","console","redirect","OPEN_CHAT","CLOSE_CHAT","LOADED_CHAT","_contacts","contactValue","isFetching","payment","clientPaymentFetching","setFetchClientPayment","setClientPersonal","setClientPayment","setClientProducts","log","setErrorClientPayment","PLANK_IS_HIDDEN","PLANK_COOKIE","smartHomeLocations","excludeLocations","getIsActiveByTerms","utmSource","has","getIsNotExcludePath","getIsLocationByTerms","PLANK_MOBILE_LINK_AND_TYPE","setMobileLinkAndPlankType","isActiveByTerms","isLocationByTerm","PLANK_IS_SHOWN","selectAccessToken","getCities","citiesList","getCity","getCurrentCityIn","cityIn","citiesListForHeader","phone_code","sale_phone","call_center_phone","billingHost","billing_host","pred_name","prefixAgreement","prefix_agreement","getOptionKeys","optionKeys","selectCurrentCityOptions","selectCitiesOptionWithProvider","selectCurrentCityDomain","phoneCode","callCenterNumber","menu","selectPartners","selectService","selectWebUnderMenu","WebUnderMenu","selectMenuItems","menuKey","requestUrl","postEvents","events","baseUrl","fetch","dayjs","utc","layer","format","place","self","eventsClone","pop","captureException","tags","isSsr","campaignLayer","dataLayer","parse","BaseAnalytics","sender","send","Error","sendEcommerce","toJSON","ownMethods","__proto__","getMethodsFromInstance","properties","_className","constructor","root","instance","excludedNames","entity","Reflect","getOwnPropertyDescriptor","sendCalls","sendArgs","call","args","_args","processArgs","eventAction","slice","replaceAll","isSecondArgConstantValue","EcommerceAnalytics","sendDetails","ecommerce","detail","sendPurchase","transactionId","purchase","actionField","sendImpressions","impressions","currencyCode","ESuspendStatus","Active","SuspendedByClient","SuspendedByBilling","confirmed","unconfirmed","models","floatRecSum","getYmAnalyticsId","GET","POST","DELETE","HEAD","PUT","PATCH","OPTIONS","DoRequest","BaseAxiosRequest","applicationForm","applicationButton","applicationManagement","bundles","banner","bannerServices","bannerOverHeader","bonus","changePassword","connectRequest","crash","cbFormNew","delivery","dealerWidget","deviceManagement","equipment","fullBuy","fullBuyEquip","header","loyaltyProgramLanding","landing","mainMenuClick","multibundleWidget","multibundle","miniMenuClick","miniMenuHover","newPayment","orderManagement","paidServices","phoneStatistic","purchaseEquipment","spas","tariffCards","tariffLines","tariffChange","vas","lk","seasonTickets","profileMenu","agreementMenu","lkMenu","onlineBuy","equipmentPayment","diagnosticsLk","support","addRemoveFilter","cancelServiceRequest","click","clickOnBtn","clickChooseTariff","clickViewAll","clickOrder","clickChooseBtn","clickOnCalltouch","clickBanner","clickChooseCb","clickTicketOpen","clickContinueOnline","clickConnectForRouble","clickConnectByPhone","clickConnectForRoublePopup","choiceRecommendedTariff","chooseRouter","clickAgreeBtn","clickConsultation","clickDisagreeBtn","clickFindPrice","clickProblem","clickedToOrder","clickConnectChoosedSpeed","errorService","errorEquip","errorVas","finished","move","moveSpeedSlider","navigationClick","openLazyPopup","openCallbackForm","orderVas","orderService","orderEquip","routers","checkboxTvChannelsOn","checkboxTvChannelsOff","serviceRequest","started","startedEquip","startedService","startedVas","serviceRequestEdit","showRecommendedTariff","transitionToForm","UAevent","getProjectClientId","generateAbtTestValue","getYmIdValue","yaCounterKey","startsWith","getClientID","getYmClientId","analyticsId","hex2rgb","hex","bigint","parseInt","mediaQuery","hasInitMatch","_mql","matchMedia","matches","isMatch","setIsMatch","handleMediaChange","useIsomorphicLayoutEffect","screenWidth","isMobileFirst","mq","createMediaQuery","webP","setWebPSupport","webPCheck","Image","onerror","onload","checkForSupport","browserSupportsWebP","supportsWebP","isWebp","internetCorporat","tv","ktvPersonal","telephony","domofon","videoControl","others","breakpointValues","typography","h1","fs","lh","h2","h3","h4","h5","h6","xs","sm","md","lg","indents","laptop","radii","pixel","percentage","commonTheme","dark","getAlertState","InfoCircle","TickCircle","InfoCircleFlip","transparent","white","Cookie","PredifinedIcon","Children","buttons","S","$radius","ListContainer","getAlertPrimaryButtonType","ActionAlert","button","ConfirmAlert","btnType","loading","AlertIcon","RounderContainer","getIconBackgroundByType","View","extStyle","TrackVertical","trackVertical","ThumbVertical","thumbVertical","TrackHorizontal","trackHorizontal","ThumbHorizontal","thumbHorizontal","CustomScrollbar","hideTracksWhenNotNeeded","Scrollbars","renderView","renderTrackHorizontal","renderTrackVertical","renderThumbHorizontal","renderThumbVertical","propTypes","PropTypes","urlTextGenitive","Paragraph5","b","isSvg","picture","draggable","source","srcSet","ELocalColors","getSize","getIconTextColors","theColor","isOnlyIcon","iconPadding","isIcon","vPadding","hPadding","ratio","ACCENT","getAccentStyle","SECONDARY","getSecondaryStyle","WHITE","getWhiteStyle","GHOST","getGhostStyle","IconWrap","iconSize","isRotatedIcon","Inner","SThrobber","PRIMARY","LARGE","MIDDLE","SMALL","large","middle","small","price","iconsSprite","symbolId","iconTitle","elementType","svg","isPrice","getIndentByType","$justify","isStatic","storeData","AppStore","AppStoreWhiteIcon","AppStoreText","storeType","GooglePlay","GooglePlayIcon","GooglePlayText","AppGallery","AppGalleryIcon","AppGalleryText","MovixAppStore","MovixGooglePlay","SmartAppStore","SmartGooglePlay","RuStore","RuStoreIcon","RuStoreText","L_COLORS","StoreIcon","storeIcon","StoreText","OUTLINE","textPath","StoreContent","BtnWrapper","BORDER","simpleMode","currentData","imgSrc","imgSrcAppStore","imgSrcGooglePlay","AppStoreBlackIcon","GooglePlayIconBlack","DEFAULT_SOCIALS","vk","Vk","odn","Odn","Item","bg","IconImage","radius","fromCodePoint","EmojiComponent","EmojiIcon","dataLayerParams","THIS_YEAR","THIS_MONTH","getMonth","WEEK_DAYS","CALENDAR_MONTHS","CALENDAR_MONTHS_FOR_DATE","getStartArray","dateArr","CALENDAR_WEEKS","zeroPad","padStart","getMonthDays","month","year","getMonthFirstDay","getDay","isDate","prototype","isValidDate","isNaN","valueOf","getDateToShow","arrToDate","convertDate","strDate","getPreviousMonth","getNextMonth","monthDays","monthFirstDay","daysFromPrevMonth","daysFromNextMonth","prevMonthDays","prevMonth","prevMonthYear","prevMonthDates","n","thisMonthDates","nextMonthDates","nextMonthYear","nextMonth","CalendarBody","showCalendar","getBodyPosition","$position","CalendarHeader","CalendarDayLine","CalendarArrow","CalendarMonth","CalendarDayTitle","CalendarNumber","isDisabled","isSelected","isNow","ArrowRight","Calendar","calendarMonth","selectedDate","minDate","maxDate","setCalendarMonth","nowDate","startDate","Base","setPrevMonth","stopPropagation","setNextMonth","selectNumber","inInterval","itemDate","getTime","tempMinValue","tempMaxValue","minValue","maxValue","getItems","start","now","itemStr","selectedDateStr","prevProps","weekDays","lines","viewMonth","AutoCompleteContainer","AutoCompleteItem","focused","DEFAULT_DOMAINS","AutoComplete","parentRef","handleSelect","setNoBlurValidation","domains","setShow","refs","setRefs","focus","setFocus","onClickOutside","domainsFiltered","tempRefs","mappedItems","completion","strong","handleKeyDown","tempFocus","keyCode","scrollIntoView","textContent","handleClickOutside","contains","VALIDATION_REGEXP","cyrillicName","password","login","amount","integer","passportSeries","passportNumber","passportFull","card","mac","MASK","checkDate","isValidMin","isValidMax","valueDate","validate","min","max","validationRegexp","validator","RegExp","invalid","test","setHasError","then","check","setTouched","touched","setShowError","showErrorText","onKeyPress","regexpToReplace","replaceTo","convertFunc","which","tempValue","getValue","setPrettyText","showText","blur","toggleFocus","noBlurValidation","inputVal","onBlur","mask","unmaskedValue","change","updateValue","onPaste","masked","clipboardData","getData","prettyText","hidePretty","inputRef","setTempValue","showDate","showHelper","isFocused","def","hideHelper","onEmailSelect","pushOnChangeEvent","setContainerRef","containerRef","defaultComponentState","React","resetStateWithUpdates","stateUpdates","defaultValue","lazyMask","IMask","lazy","prepare","added","alignCursor","componentWillUnmount","destroy","valueSetter","getPrototypeOf","prototypeValueSetter","dispatchEvent","Event","bubbles","autoComplete","emailDomains","tooltipText","minLength","attrs","inputType","onKeyUp","CalendarIcon","Eye","eyeOpened","eyeClosed","onTouchStart","maxLength","hasMask","emptyValue","valueLengthGreaterThanMin","valid","notValid","InputError","pretty","PrettyText","StyledInput","onFocus","isHasMask","isIconExist","Tooltip","QuestionIcon","stateful","DescriptionBlock","bind","PureComponent","commonStyles","calendar","question","isNotValid","setIsFocused","selectorForTest","replaceValueForPhone","isAutocomplete","onlyNumber","formatValueForPhone","formattedValue","currentNumeral","checkValidate","setIsNotValid","setValue","isTouch","setIsTouch","incomingValue","nativeEvent","newValue","timeout","setSelectionRange","colorScheme","LabelsText_1","LabelsText_2","LabelsText_3","LabelsText_4","LabelsText_5","LabelsText_6","outlined","LabelContent","BASE_CONF","gridSize","gutterWidth","outerMargin","container","configCache","resolveConfig","themeConf","conf","media","breakpoint","breakpointWidth","makeMedia","DIMENSION_NAMES","cacheId","makeCacheId","offsetProps","Col","k","k1","k2","isInteger","Row","center","bottom","around","between","last","FlexBoxRow","ResponsiveName","ResponsiveType","DimensionPropTypes","dimension","SkeletonContext","skeletonProps","contextState","SDefaultPopup","contentWrapper","ContentInner","contentInner","descIsString","CustomScrollbars","ChildrenBlock","LegalWrap","formFilledHandler","startInput","setStartInput","setWaitStatus","form","StyledMenu","components","selectProps","addBottomElement","MenuListStyled","maxHeight","MenuList","innerRef","btnProps","isDisable","StyledOption","smallOption","StyledOptionSmall","StyledIcon","StyledOptionLinked","OptionLinked","innerProps","checkIcon","Option","SmallOption","ControlDiv","menuIsOpen","Control","Indicator","Clear","DropdownIndicator","SingleArrowDown","ClearIndicator","valueContainer","provided","font","textAlign","loadingMessage","singleValue","tag","selectRef","asyncMode","isLinked","SelectComponent","AsyncSelect","ReactSelect","SelectOption","styles","IndicatorSeparator","strokeMiterlimit","common","minWidth","minHeight","display","transition","arrowStyle","borderColor","hasMounted","setHasMounted","setComponent","component","additionalStyles","emptyIndent","getColor","$color","H1","$inline","H4","H5","H6","BaseParagraph","createActionDesktopElementStyles","Paragraph1","Paragraph2","Paragraph3","StoryParagraph","isIndent","_number","getMarginFromCompositeValue","indent","getPaddingByIncomingIndent","mobileFirstBreakpoints","$reverse","$justifyContent","$alignItems","valueOrAuto","getPositionFromCompositeValue","$top","$left","$inset","$zIndex","getPositionByIncomingProps","getRadiusByIncomingProps","withRadius","TooltipArrow","direction","transform","viewBox","fill","xmlns","TooltipArrowContainer","createCornerMap","onCornerLeft","onCornerRight","onDefault","TooltipContainer","TooltipBody","withArrow","arrowIndent","arrowDirection","closeOnClickOutside","closeOnScroll","gap","useRootElement","tooltipRef","childRef","callback","noop","getTooltipPosition","onTransition","debounce","cloneElement","element","isDOMTypeElement","createPortal","setIsShown","WithStatelessTooltip","WithStatefulTooltip","getBoundingClientRect","pageYOffset","scrollX","pageXOffset","childLeft","childWidth","tooltipWidth","childTop","tooltipHeight","childHeight","Advertiser","LabelContainer","AdvertisingLabel","onLabelClick","onTooltipClose","WithTooltip","fromCharCode","RubleSymbol","MDASH","NBHYPHEN","LAQUO","RAQUO","module","exports"],"sourceRoot":""}