/**** (c) Valve Corporation. Use is governed by the terms of the Steam Subscriber Agreement http://store.steampowered.com/subscriber_agreement/.
 ****/
(self.webpackChunkstore = self.webpackChunkstore || []).push([
  [4268],
  {
    63292: (e) => {
      e.exports = {
        LanguageHeader: "_3lQvIyPYpaHHXs7hQOWgDs",
        CuratorInfoRow: "_3tR2dfU_Wenr_xcshy1wUY",
        CuratorInfoImg: "_1BVHFIbcMgjId-0ciy-1ob",
        CuratorInfoName: "_2X1CS5jZKk28-_m8wP08G8",
        CuratorInfoTitleCtn: "_3odsmWB7MUrxxcucBMYcgN",
        CuratorInfoActionCtn: "_2y3rSYHLpo0MERj2EMWQQ9",
        CuratorInfoPreview: "_1EbwpNpOWS4nmsjolxyUhi",
        CuratorInfoIcon: "_3Y0jFDFWk_msMNnvpgfjwB",
        CuratorInfoFollow: "_1I_eQgAgorxHE60P5m2zqq",
        CuratorHoverContainer: "_38fVPOADgxGJbfbw7jz_uG",
        CuratorHoverToolTip: "rSTyUxh3-fZYKih45mKb1",
      };
    },
    68224: (e) => {
      e.exports = {
        FeedSuggestContainerBG: "_3ICp4Zk0uKS3wBOo3rcx-6",
        FeedSuggestContainer: "_1420TVzKCePW589d4gqd4d",
        FeedSuggestCaption: "_38Zh0nmnrxXlh3yhtCnIPn",
        RowContainer: "_39bJZgNeIUX9mSWi0r8tNT",
        ClanInfo: "_2gUTgIVt7XIFc01CxohM9B",
        DismissButton: "_3YtGjvmV0WmN0i3sdMqGz2",
        BrowseMore: "_2nWAPvq239PI0lGHmtFmgc",
      };
    },
    10686: (e) => {
      e.exports = {
        strMaxMobileWidth: "700px",
        strMinMobileHeight: "360px",
        strDesktopControlBarWidth: "300px",
        strDesktopGlobalHeaderHeight: "104px",
        strMobileGlobalHeaderHeight: "62px",
        strDesktopLabsBannerHeight: "46px",
        strMobileLabsBannerHeight: "42px",
        strDesktopHubBannerHeight: "80px",
        strMobileHubBannerHeight: "80px",
        strJumboHubBannerHeight: "150px",
        strDesktopGroupHeaderHeight: "70px",
        strMobileGroupHeaderHeight: "37px",
        strMobileNavBannerHeight: "52px",
        strLogInBannerLargeHeight: "239px",
        strLogInBannerSmallHeight: "70px",
        HubBanner: "_2zTu0OPJoqo1BXb1J9pDJ2",
        LargeMode: "_3OnTrhLh97xov3GKenO-l_",
        CloseFilterPage: "_3XZe_jfTYppPFYW0hZ0LRl",
        ShowSettings: "_1qCUdL_PYKT0_bKFAFAWQa",
        ControlPageContainer: "_2LztMgS2eI0MWKHJ3v-l0H",
        FiltersTitle: "tQZ7I-5Bxpp4zpDf48imu",
        FiltersDescription: "_17nuaBuSlylN8eWUkcLsAv",
        SideSteamLabsBannerCtn: "_1UOp4B_Y4H72j2sToElzRf",
        SteamLabsIdentifiers: "_3SWqwk3OkmIyA0ID3h7V3G",
        SteamLabsName: "_1wILkHwglmD4JCdY_6Qw_H",
        SteamLabsNumber: "_2ByePau03c09GPc7l80smz",
        SteamLabsButton: "_3YoSz4AbfNlw05okAd2yQa",
        SteamLabsBanner: "_8sQflgMCSidxvEXBYL4n_",
        SteamLabsBannerCtn: "_3olyO1vhDEhoc4qwI4pDyt",
        SidebarContainer: "_15YLDKm80opUF5Tivo7UK-",
        SidebarCollapsed: "_3x2Igmho_SeKqPI3_cnWfG",
        CollapseButton: "_1RCioHSgo99b0iUemHy2OE",
        DesktopButton: "_2vMIlVM2BeWTC0m5_Ys2WN",
        SidebarBackground: "_1ZO60tnVO9UhZWFk1zLM4r",
        Sidebar: "_1nf0vlWuKk9Qn7ncHC5uhq",
        SidebarTitle: "_3uZE-tI5d1lF6NQwSrxauh",
        FilterControlPage: "_uX0hAa1v6coYNh6Al4D6",
        FilterOption: "_2LoObf7xShKZbZ1G71rR_3",
        FilterSubOption: "_2ctVaeTDGGfjh-pOjQ4ktO",
        SideBarFilterNavLinks: "fhYfjG7Ry-VB6uq75Ccbm",
        FilterLink: "_1zyVyzldzUj085oNa8Y0r1",
        NumberDisplay: "_23qmf5MYL9D2szWuV-txE2",
        FilterSettingsCtn: "_3CSX8aqaZna9ZM6WLxhZC3",
        OpenFilterSettings: "_3cMESjaODP5L2fXHzANkNT",
        SidebarBackLink: "_2NQEg_ngTN4otkyy-9VfGQ",
        MobileCloseButton: "_3Es2qlfJBkwe2Yqco9B1VL",
        FilterSection: "_34HOA5NqMETdKvOv8I0QPz",
        FilterSubSection: "_1Ko6oJ92gSqJKHJhVCi2Pc",
        FilterSubSectionTitle: "MeJhm7ZvNEcgMNrj4YyRg",
        ConfigPanelSteamLabs: "_3wJ-zapSyyDGYNL9munfGQ",
        ForceResponsiveLink: "_3dRqLQAbzE1yESy7-PmVZK",
        SidebarLink: "_2VFTM7o6Mn2fvJXYr9mSVo",
        SidebarManageMutedApps: "_2IWYfBr6LLolwVjYdZcBco",
        MutedSourcesGroup: "_2B7QL2HvQhNvxTElRnADjb",
        MutedSourcesCount: "_3nwCq_gduAro-qt7Kt3x6s",
        SidebarFooter: "_3sXsgTKq8xa1K7EYzNNOBq",
        FooterLegal: "_3YG_3Z8DhgeYtKBWrOkNAA",
        MobileButton: "_3cMvc6AfC8k2OaILY81XXB",
        BodyNoScroll: "_1d-cxT1sPNzIVcm8qsNT7o",
        EventCalendarContainer: "_1e3WbBz7-mqMKmK8HnpzFF",
        ReserveControlSpace: "_18npkDI3gKg9S7EeTFOj-2",
        WideLeftGutter: "ws9ANxmy2MKDDodGRGkqN",
        LogInFeedRow: "nydHEEVdYQNQyocchG2Kr",
        RowContainer: "_3yqpPRFLwr6ETVDgLGT37s",
        Loading: "_2XF_gSfLb9JlFYAqd0PRA8",
        LoadingProgress: "_2k5Q_MrQn9caFbIUp8eEdr",
        AdjustFiltersText: "gM9YyLCnVPfTKfy2_Hsue",
        Rows: "r3Dia2Yw2X-goqFn-_UPT",
        FutureSection: "_290nkT9By-jIKGFyKBcIn3",
        PastSection: "_3FpvGiwJqnukNOcrsKd_sN",
        DarkerBackground: "_1U2BW9tpHKOVi_TG0XvjT",
        EmptySectionText: "_3TwYr6FsLY9hGiZ2Ed5897",
        CalendarEventListRow: "_3m6GW1eCeaSg9ypsv0JVD9",
        CalendarEventListContainer: "_3QenzSfSDt0SQcUy8yeaD-",
        CalendarRow: "_398u23KF15gxmeH741ZSyL",
        EventListTitle: "_qpO2uX5bg1l7b0G2FbFI",
        GroupHeader: "_3j2deAP85R6gftsIWiHe7n",
        GroupHeaderTitle: "_2aVLRsz60HV81P8VKT3kQj",
        GroupHeaderLine: "bcTEUtZM5us_nPhh-83J9",
        SeeAllLink: "_28rp7N0KcAtfF3xtD0m2DZ",
        SeeAllCount: "IOckOLV5f75IljZ0DqXdX",
        HorizontalTileContainer: "muk0v4M7AjwCVox0Kk1Q6",
        HorizontalTiles: "_1YVOyhzWrYyfeINbwhHVqc",
        HeaderAtTop: "_2VZunYlTR5OcMdubo0AYh_",
        EndOfRows: "_1lK7p5C13fouRsvpdUxeya",
        BackToThePast: "_18uWsMJww9J9esJ56PvIGe",
        MobileSeeAllink: "_3yeVNRj7J_UtR-fgIDVAMr",
        NoCount: "_2qW89hLYPJtBAANjQ9kJR-",
        LiveText: "_14EbBf2Uz8VI7xVl0RuDue",
        UpdatePageBanner: "_1hWgY3UxRcdnjka_axlCxE",
        LoginPrompt: "_1EXXCsUBCckCnFzBip-EwP",
        LoginButton: "_1wuxXz1nGOaX_Hj3qnXchJ",
        SpecialEventListGroup: "_5UEq9U_QY0YTaXXOsSIV2",
        SpecialEventListTitle: "_2fFKiTlt1nFQb3dFvEaqWW",
        SpecialEventList: "_3AESvlyhJ0vmRThgNB6Ebb",
        SpecialEvent: "_2s-UQIMf5ZWwh4641BF6Vy",
        SpecialEventTitle: "_3xq6Fl5_4RS4LYFK0NJGY1",
        SpecialEventTime: "_3cGYpNuy_GrG8AK-OwuvIZ",
        NewsChannelGroup: "_3U5MYaJE0i8UYZ_pUzyNk7",
        NewsChannelListTitle: "_3X16Tg0OrHJJL36_8dwlHo",
        NewsChannelList: "_19CIwB_GEUli1IquP3CIHn",
        NewsChannel: "_1n4vpyqKJYF8lc1kW9fr8-",
        NewsChannelText: "_2NbubYs7clHa8InE5qSifq",
        NewsChannelCount: "_1HQl8PnDDWs3V4bob4bBNk",
        NewsChannelOnPage: "kJoC7bJXT-uU6GorEljio",
        NewsChannelTitle: "_11O61s8Pr7CrLbKxzm9VMK",
        NewsChannelSubtitle: "_3_CIMpiaZYsgSD9rEIImZh",
        DiscoverGroup: "kUY00QAjWvDLtDIbUN5A",
        NewsChannelIcon: "_2NCtvce1qaFUggZ9OFpf8N",
        SidePanelGameSearch: "_1LTVIwFRYJjiwzhWzSVOd4",
        MobileNavBannerCtn: "_20PrZ-yvcNH561NUmAH7_Y",
        SearchDismiss: "eIKAr3iSqLCgmFyiNryB2",
        SearchBox: "_2i8gkeopkt1mSdGiNXYmd-",
        SearchExpanded: "_3rn-PPTfKI7di5ILvkjVyy",
        SettingsPanel: "tifiV2QTtklqCycSc8RpW",
        MobileNavHScroll: "yps0ywc-By1zfTHujot5E",
        MobileNavBannerList: "_3xi45UCnCWYdn3vwsjNkYD",
        MobileNavButton: "_3kOf_98MdXe617YcQtkFO6",
        MobileNavCount: "_3m7pyQzrfOHXYdheEaL0oM",
        MobileNavButtonActive: "_2XXBax726YbJCKgIAAgPhM",
        CalendarEventList: "_3Pm1aWPIBv2SjplauZbDnI",
        LogInSmallMode: "_21ANYFXCED2fJk0gtzrBci",
        LogInFeedText: "_3HgPBoJHm2b4URrMDxMeAs",
        PromptCtn: "_19gywKI5KqBR4uSRoXMxmB",
        LogInFeedTitle: "cmQc676wTF0GVI4iDpw_g",
        LogInButton: "_35WTOIomH5SPesM-UbjHBB",
        LazyCalendarSectionCtn: "_1_BP6N2tGh4484bcmYnZeX",
        TimeEventRow: "_2JQL9twuHonw_iuvnsdVBi",
        TimeEventLastPlayed: "_1QplXJ_L-d0BqrYdzD7uSN",
        TimeEventWishlisted: "_3_HujJS7DVArS8dgqixpOJ",
      };
    },
    57688: (e) => {
      e.exports = {
        simpleTitleSmallHeight: "80",
        simpleTitleLargeHeight: "200",
        SimpleTitleHeaderCtn: "_3VhPz9bkSXYdTyrsNHyclF",
        CollectionBannerGroup: "XKrAaB35oi_F1FfPvgMIe",
        AppBannerLogoCtn: "_1Vrsgns9yWeU55IkUV47iw",
        SimpleTitleCtn: "zWLw0Q_JjKfhgFgSDvBu1",
        Title: "_1_MCH_a2eJssfIIs2ipZjw",
        Subtitle: "_2Ym_jx4AIkRhj7T0qvKwhx",
        LargeHeader: "_1Y7af9n7NgyJVP8OA1voO5",
        NoHeaderImg: "_1wnpWYTPyd-qnyinYlNKwa",
        AppBannerLogo: "QDuRwp2w0MLb6hWd0_HT8",
      };
    },
    72978: (e) => {
      e.exports = {
        GameTitleContainer: "WHJ_WMTSDKqO4yn_MLrau",
        AppIcon: "_3gwk6hFh7bUc2K174mzjyQ",
        TileTextAppName: "_71phFKOzg8aQlBU1rCA2T",
        EnableHovers: "_2BniJe0boLDKV9lwtWTCtm",
        TileContainer: "_1E3Anhs34BXsWWWqH4RNPL",
        CoverImageCtn: "_3HF9tOy_soo1B_odf1XArk",
        GameShortDescription: "_3Se1TZA5yo9V-vrUszNDAI",
        LiveText: "RNDf0d63hDSUu28sIkteH",
        LiveNow: "EVDkYKG_ikfyfH16lmQ-1",
        FutureDateText: "_2xdhMrjKEposPfgPK9UPe-",
        PastDateText: "_4-fqVd8yRSHEAjj7Hkx_V",
        GameSource: "vfv1QjSe1vEobRaHWlf3",
        SourceList: "_3BIx7glwN6Q0_mUUMyFyHu",
        Source: "_2lYFqIB0i1IONPFV4BTvfl",
        RecommendedSource: "_3ayJyXzZoAWy8wXs6YlftR",
        SourceRecommended: "_1yaRLkRkzjuw8xLjPX-zlc",
        DateAndSourceLine: "_2xxMBw-_ndXEC-SIBejGuu",
        EventTypeAndDateCtn: "sUBHF-Qdb_RUPYOBkgO1a",
        LeaveRoomForReminder: "_3djUmSsXnHX2qN5HdooYJz",
        SmallAppName: "_1-Jl_evfBGuwaMNm1CNSR5",
        TileTextCategoryType: "_1LkWXJVxWYdKiKf2Mxq3zs",
        EventType28: "_1qGfEmcWJdG1dp2gDhH7oP",
        EventType10: "_22QY5O4_i6LqHbtIXgilEV",
        EventType11: "_2Gv13-3mXe6Q4QJmTs3mNX",
        EventType23: "_590_lEtmh8atjjKVBT9t7",
        EventType35: "_2wHiBVvtv56AMUWeVWRbuz",
        EventType13: "_2D0ZNOuC3rrY9bf_BY1msw",
        EventType14: "_2mVdtaB_oY5b1fladlbBaM",
        EventType15: "_2Xke62sWB6bPMJuv72Qkw8",
        Tile: "_3xvUZtQ1j-pu-l2xy-lFAq",
        MainContentContainer: "_2pq2vP5kJ_wI2nw-igwJXF",
        YoutubePreviewImage: "_1UgZvqy4xNDdu4gJ6tlT-Q",
        TileImage: "d8bPiEt0DUII_mRqek_ht",
        TileTextContainer: "_3IQK4rcEU5IYtZuW-Ogsgu",
        EventType12: "_2X_hMZpqI8fyqbeFPi4JPj",
        EventName: "_1M8-Pa3b3WboayCgd5VBJT",
        EventSubTitle: "_1JjUp7sfpntpaOqu1_lyvO",
        GameCapsuleCtn: "_3HJFiuJiM5fUKk0czInoZg",
        AppBannerLogo: "u8z1m_ainssHj7AbLKOZs",
        FallbackImage: "_9rv9PL7ZWe4vZofYqYl3M",
        ClanSource: "_17Iog8CXlR0s8DuWS0rD0n",
        TileTextHeader: "_3-0KOhYVQX2zIP3z-jCAdu",
        PatchIconCtn: "Fm9_5yqk4wkh8BTsDC7CU",
        EventTitleCtn: "_1h5cJPC1IYFGDEMbRAWSNy",
        Footer: "_1tdf14bc7ZlvhWfiLIlpEf",
        EventCapsuleCtn: "_27kWH1D3y2WfR8D-sD8Rw2",
        LiveBroadcastPreview: "_4UYuS9QM4MsN9y4q5Livc",
        TileBackgroundImage: "gGujG17QdIx5Nn89DjTl8",
        TileCoverImagePlayable: "_2eoFkqfZovVT02IaU8nRNn",
        TileCoverLiveIcon: "_dmbjH8bEtPkaRrVTzwov",
        ReminderContainer: "_1_taBomEIggVub90iRWW1Y",
        OnlyIcon: "iO5Eug6GGz9JIqPndBJIG",
        EventSummaryDefault: "_2g3JjlrRkzgUWXF57w3leW",
        Vote_NotLoggedIn: "_17oqR-EnZiAHLri2CKnxmC",
        Vote_LimitedUser: "_2FlPoqF3vz8s8KjjoZ7sXn",
        Vote_Positive: "ysX-kDvwrjduqk2LGUkUg",
        RateIcon: "_2se4HtRbAckWOfTCGHox0X",
        Vote_Negative: "_3LqNuO0ebCJ_aJo3YJYjdE",
        Vote_Ready: "_3issE2anPtdsqPA_3_72Z0",
        FooterRightSide: "_1Hhqg7g-POjV0ysalDN4YM",
        Options: "_3nZg0h8xaxxZeW0g870Htl",
        TileViewerCount: "pg-a3zK8HAVaAKqUDx7t-",
        FooterStat: "_3_86JJo-1O_KkOZwRl2uZ6",
        CommentIcon: "Wn7qAQikmqUtnSPDCnzi3",
        CommentIconCtn: "PR8xM_Lig1kieA79gLjOB",
        LoadingTile: "_24QfL3thPI_MZMIbgL7tmb",
        CarouselMode: "_144ghSsl2jkmXzzHxgtQtX",
        UpcomingMode: "_2vzY3sqcpyNcqGqlP6cLOv",
        TileVideoIcon: "aK0jlBL0B6MxMGC4n-WzB",
        DateAndTime: "_1gEM9daUydLT65bFx2wXwE",
        HasVideo: "qbgBAwp3iK3ESknHvr2SQ",
        SubTitleShown: "_5C13zntXVrSwbAGXNrmv6",
        VideoPlayerReady: "_1onQjxTJsTnadbj-DAgoPK",
      };
    },
    25738: (e) => {
      e.exports = {
        EventTileCarousel: "_1mKD0MQ507t89Ii7mxDqSO",
        HorizontalTiles: "_1mUGBQxkYbGPRBk1SDhMHi",
        EventTileCarouselTitleContainer: "_3I_aGTx-KPOMeeyG7MAhPl",
        EventTileCarouselTextTitle: "_1kQ9N4FGH5M9XE7WS_Tk4o",
        EventTileCarouselTitle: "_3X3hCmDBBr2dKG-77H4TuQ",
        EventTileCarouselFollow: "_1qgVA9sM06WHigo755qFWq",
      };
    },
    29342: (e) => {
      e.exports = {
        LanguageFeedNoteBucket: "r8580cv-HTxYA6k0N1n-U",
        LanguageFeedNoteCtn: "_3jTgs16YR8cjlIdBj-VfXM",
        BodyFlow: "_1JI7CLvlOj0UNyivvhIaO4",
        LeftColumn: "_3l03TsLKQ1kgJ9y9srfOtu",
        RightColumn: "XKuYh_bCSCQcXf-hL_G3Y",
        Title: "TzlhguvzJY0mbc-5KxGQW",
        LanguageList: "_1VBz-c24qcoV4360Y5ZW2b",
        Text: "_1SGbC-0D-qeX8p1wEKWHcN",
        DismissButton: "_3zHKDN908qfKPXxxiQRS1A",
      };
    },
    12088: (e) => {
      e.exports = {
        LegalFooter: "_2XzXRucgCsdN2x7oRwSJu0",
        FooterLegal: "_7TrXidlVTKkfcdujKCtM5",
        mainmenu_socials_china: "sfMZciSGx86izSy_6vXjH",
        mainmenu_social_box: "_1BGLVq8Z8sJY-fjcMuT2VP",
        mainmenu_line: "ykCRRQsIcQBjAwGpnQFG7",
        mainmenu_links_china: "_9ImS9D7NtBJGkHgcrwlUX",
        mainmenu_legal_china: "_3hCum12eFRKC9ukPg3-305",
        mainmenu_legal_pwlegal: "_3RFkMNbBZIBVARA4st-AjH",
        mainmenu_logos_china: "_3D_5cMcjUFurdWptDxoP3y",
        mainmenu_china_wechat_logo: "_2sDKMGZPUGhXYuJnr4RO2g",
        mainmenu_china_weibo_logo: "E2dhWjYyH6xGs7zJ2KHC8",
        mainmenu_china_pw_logo: "_2vnv_k5xmD37qKbr7I8pTr",
        mainmenu_china_valve_logo: "Ig7VEoh78RH53WEJS3MKv",
        mainmenu_footer_spacer: "_3w1gNL-euGEyq49PCOGvbQ",
        china_spacer: "_16fnFsYrB3xAg2va_37FfV",
      };
    },
    16345: (e) => {
      e.exports = {
        SuggestContainer: "_2gBFqL_6eXiRN7TI_GDjzF",
        Results: "_3eXNgAtnlHBfgWZbxO2n3h",
        EmptyResults: "_3w0K5X735sKAZhhifZGs84",
        ResultSectionHeader: "_1KK1sGDuxehec0lBB_4lpU",
        ResultRow: "_16oSf0MiTpUTJe7YQpCV2A",
        AvatarImage: "_3dr2A8wfoYU0kJtS9ACoR1",
        GameName: "_3CWrph5moGF_F746uM5tdI",
        Label: "I1zVikvORZt41zc-QTAsw",
      };
    },
    70758: (e) => {
      e.exports = {
        YoutubePreviewImage: "_3bVwKmAuh70AH8XVDnyf5z",
        YoutubePlayer: "_3oXEPQSJY3yN1IVhfxeSy0",
      };
    },
    9905: (e) => {
      e.exports = { ErrorMsg: "_1ZEL9R8kTy3jJqcuU_IguM" };
    },
    94743: (e, t, n) => {
      "use strict";
      n.d(t, { l: () => d, r: () => u });
      var a = n(90626),
        r = n(26296),
        l = n(12155),
        o = n(48211),
        s = n(52038),
        i = n(61859),
        c = n(70758),
        m = n.n(c);
      const u = (e) => {
          const t = ["maxresdefault", "mqdefault", "default"],
            [n, l] = a.useState(0);
          a.useEffect(() => l(0), [e.video]);
          const o = a.useRef();
          if (e.altImgWithFallback && e.altImgWithFallback.length > 0)
            return a.createElement(r.o, {
              className: e.className,
              srcs: e.altImgWithFallback,
            });
          if (e.altImg)
            return a.createElement("img", {
              src: e.altImg,
              className: e.className,
            });
          {
            const r =
                "https://img.youtube.com/vi/" + e.video + "/" + t[n] + ".jpg",
              i = () => {
                n + 1 < t.length && l(n + 1);
              },
              c = () => {
                o.current && o.current.naturalHeight < 91 && i();
              };
            return a.createElement("img", {
              ref: o,
              onLoad: c,
              onError: i,
              src: r,
              className: (0, s.A)(m().YoutubePreviewImage, e.className),
            });
          }
        },
        d = (e) => {
          const [t, n] = a.useState(!1);
          if (
            (a.useEffect(() => {
              e.preloadYoutubeScripts && (0, o.o)(() => {});
            }, [e.preloadYoutubeScripts]),
            t)
          )
            return a.createElement(o.N, {
              ...e,
              classnames: (0, s.A)(m().YoutubePlayer, e.classnames),
            });
          {
            const t = (t) => {
              e.onPlayerActivated && e.onPlayerActivated(),
                n(!0),
                t.stopPropagation(),
                t.preventDefault();
            };
            return a.createElement(
              "div",
              {
                className: (0, s.A)(
                  "YoutubePreviewContainer",
                  m().YoutubePreviewImage,
                  e.imageClassnames,
                ),
                onClick: t,
              },
              a.createElement(u, {
                className: "YoutubePreviewImage",
                altImgWithFallback: e.altImgWithFallback,
                altImg: e.altImg,
                video: e.video,
              }),
              a.createElement(
                "div",
                { className: "YoutubePreviewPlay" },
                a.createElement(l.IOc, null),
              ),
              a.createElement(
                "div",
                { className: "VideoHintText" },
                (0, i.we)("#EventCalendar_WatchYouTubeVideo"),
              ),
            );
          }
        };
    },
    86252: (e, t, n) => {
      "use strict";
      n.r(t), n.d(t, { default: () => Fn });
      var a = n(43527),
        r = n(90626),
        l = n(92757),
        o = n(17720),
        s = n(95034),
        i = n(41735),
        c = n.n(i),
        m = n(75844),
        u = n(22837),
        d = n(2160),
        p = n(4796),
        g = n(73964),
        h = n(84811),
        E = n(30756),
        v = n(8107),
        _ = n(75113),
        C = n(35685),
        S = n(77156),
        b = n(90316),
        f = n.n(b),
        I = n(95695),
        w = n.n(I),
        y = n(22797),
        T = n(52038),
        N = n(61859),
        G = n(68797),
        A = n(78327),
        k = n(9905),
        B = n.n(k),
        L = n(43068),
        D = n(82097),
        H = n(55263);
      const F = g.$.Get();
      function R() {
        document.body.classList.contains("events_hub") &&
          document.body.classList.remove("events_hub");
      }
      const M = (0, m.PA)((e) => {
          const {
              bInfiniteScroll: t,
              event_gid: n,
              announcement_gid: a,
              clansteamid: l,
              appid: o,
            } = e,
            [s, i] = (0, r.useState)(n ? F.GetClanEventModel(n) : void 0),
            [m] = (0, H.t7)(s?.appid, {
              include_assets: !0,
              include_release: !0,
              include_platforms: !0,
              include_screenshots: !0,
            }),
            [g, b] = (0, r.useState)(!1),
            I = (e, t) => {
              t.token.reason ||
                (i(e),
                (function (e) {
                  let t;
                  if (e && e.appid) t = D.A.Get().GetApp(e.appid)?.GetName();
                  else if (e && e.clanSteamID) {
                    const n = p.ac.GetClanInfoByClanAccountID(
                      e.clanSteamID.GetAccountID(),
                    );
                    t = n && n.group_name;
                  }
                  const n =
                    e && e.GetNameWithFallback((0, u.sf)(A.TS.LANGUAGE));
                  if (e && t && n) {
                    const e = (0, N.we)(
                      "#EventCalendar_TabTitle_GroupNameAndEventDetail",
                      t,
                      n,
                    );
                    document.title != e && (document.title = e);
                  }
                })(e));
            },
            k = (e) => {
              const t = (0, G.H)(e);
              console.error("StoreEventDetailView failed " + t.strErrorMsg, t),
                b(!0);
            };
          if (
            ((0, r.useEffect)(R, []),
            (0, r.useEffect)(() => {
              const e = c().CancelToken.source();
              return (
                s ||
                  (n && !F.GetClanEventModel(n)
                    ? F.LoadPartnerEventGeneric(l, o, n, void 0, 0)
                        .then((t) => I(t, e))
                        .catch(() => {
                          e.token.reason ||
                            F.LoadPartnerEventGeneric(l, o, void 0, n, 0)
                              .then((t) => I(t, e))
                              .catch(k);
                        })
                    : a &&
                      !F.GetClanEventGIDFromAnnouncementGID(a) &&
                      F.LoadPartnerEventGeneric(l, o, void 0, a, 0)
                        .then((t) => I(t, e))
                        .catch(k)),
                () => {
                  e.cancel("StoreEventDetailView: unmounting");
                }
              );
            }, [n, l, o, a, s]),
            g || !s || (s?.appid && !m))
          ) {
            const e = "lang_" + (0, u.ww)((0, u.sf)(A.TS.LANGUAGE)),
              t = "";
            return r.createElement(
              "div",
              {
                className: (0, T.A)(
                  f().EventDetailsPageContainer,
                  e,
                  w().PartnerEventFont,
                  f().NoTitleArtwork,
                ),
              },
              r.createElement("div", { style: { height: "100px" } }),
              r.createElement(S.K8, { strImageURL: t }),
              r.createElement(S.P2, {
                strImageURL: t,
                body: g
                  ? r.createElement(
                      "div",
                      { className: B().ErrorMsg },
                      (0, N.PP)(
                        "#Events_FailedToFind",
                        r.createElement(
                          "a",
                          { href: A.TS.STORE_BASE_URL + "news/" },
                          (0, N.we)("#EventDisplay_NewsHubSubtitle"),
                        ),
                      ),
                    )
                  : r.createElement(y.t, {
                      string: (0, N.we)("#Loading"),
                      size: "medium",
                      position: "center",
                    }),
                postbody: Boolean(g && l)
                  ? r.createElement(C.rN, {
                      clanAccountID: l.GetAccountID(),
                      partnerEventStore: F,
                    })
                  : void 0,
              }),
            );
          }
          return t
            ? r.createElement(
                h.tH,
                null,
                r.createElement(v.N, {
                  appid: s.appid,
                  trackingLocation: 7,
                  announcementGID: s.GetAnnouncementGID(),
                  partnerEventStore: F,
                  eventModel: s,
                  showAppHeader: !0,
                  closeModal: () =>
                    e.history.push(
                      (0, _.qT)(s, _.PH.k_eStoreNewsHub, "allowRelative"),
                    ),
                }),
              )
            : r.createElement(
                h.tH,
                null,
                r.createElement(S.jA, {
                  lang: (0, u.sf)(A.TS.LANGUAGE),
                  partnerEventStore: F,
                  event: s,
                  adminPanel:
                    A.TS.EREALM === d.TU.k_ESteamRealmChina
                      ? r.createElement(L.P, { eventModel: s })
                      : r.createElement(E.g, {
                          eventModel: s,
                          partnerEventStore: F,
                        }),
                  otherEventRow: r.createElement(C.rN, {
                    clanAccountID: s.clanSteamID.GetAccountID(),
                    gidAnnouncement: s.AnnouncementGID,
                    partnerEventStore: F,
                  }),
                }),
              );
        }),
        O = (0, l.y)(M);
      var x = n(34629),
        P = n(14947),
        U = n(65946),
        V = n(31561),
        W = n(47822),
        q = n(77516),
        Y = n(71138),
        K = n(95886),
        z = n(46910),
        j = n(67540),
        J = n(44165),
        X = n(60746),
        Q = n(1059),
        Z = n(91254),
        $ = n(17083),
        ee = n(81886),
        te = n(33737),
        ne = n(12155),
        ae = n(32754),
        re = n(51272),
        le = n(44332),
        oe = n(56011),
        se = n(73745),
        ie = n(738),
        ce = n(30894);
      class me {
        static s_newsCuratorStore;
        m_mapNewsCurators = new Map();
        m_bIsLoadComplete = !1;
        m_mapLangToNewsCurators = new Map();
        m_LoadingPromise = null;
        static Get() {
          return (
            me.s_newsCuratorStore ||
              ((me.s_newsCuratorStore = new me()),
              (me.s_newsCuratorStore.m_LoadingPromise =
                me.s_newsCuratorStore.Init()),
              (window.g_NewsCuratorStore = me.s_newsCuratorStore)),
            me.s_newsCuratorStore
          );
        }
        constructor() {
          (0, P.Gn)(this);
        }
        IsLoaded() {
          return this.m_bIsLoadComplete;
        }
        WaitForInitialLoad() {
          return this.m_LoadingPromise;
        }
        get allNewsCurators() {
          return Array.from(this.m_mapNewsCurators.values());
        }
        GetCuratorsForLang(e) {
          return this.m_mapLangToNewsCurators.get(e);
        }
        GetNewsCuratorForAccount(e) {
          return this.m_mapNewsCurators.get(e);
        }
        BIsTrustedPressAccount(e) {
          return void 0 !== this.GetNewsCuratorForAccount(e);
        }
        async Init() {
          N.A0.GetLanguageListForRealms([A.TS.EREALM]).forEach((e) =>
            this.m_mapLangToNewsCurators.set(e, []),
          );
          const e = A.TS.STORE_BASE_URL + "events/ajaxgetnewscurators";
          let t = { origin: self.origin };
          const n = await c().get(e, { params: t });
          (0, P.h5)(() => {
            n.data && n.data.success && this.HandleCuratorResponse(n.data),
              (this.m_bIsLoadComplete = !0);
          });
        }
        HandleCuratorResponse(e) {
          if (
            (e.groupvanityinfo && p.ac.RegisterClanData(e.groupvanityinfo),
            e.newscuratorinfo)
          )
            for (const t of e.newscuratorinfo) {
              if (this.m_mapNewsCurators.has(t.clanAccountID)) continue;
              this.m_mapNewsCurators.set(t.clanAccountID, t);
              const e = p.ac.GetClanInfoByClanAccountID(t.clanAccountID);
              e && this.m_mapLangToNewsCurators.get(e.rss_language)?.push(t);
            }
        }
      }
      (0, x.Cg)([P.sH], me.prototype, "m_mapNewsCurators", void 0),
        (0, x.Cg)([P.sH], me.prototype, "m_bIsLoadComplete", void 0),
        (0, x.Cg)([P.sH], me.prototype, "m_mapLangToNewsCurators", void 0),
        (0, x.Cg)([P.EW], me.prototype, "allNewsCurators", null),
        (0, x.Cg)([P.XI], me.prototype, "HandleCuratorResponse", null);
      var ue = n(6144),
        de = n(41338),
        pe = n(16345),
        ge = n.n(pe);
      function he(e) {
        const t = new Set();
        return (
          (e.indexOf("games") >= 0 || e.indexOf("dlc") >= 0) && t.add("apps"),
          e.indexOf("curators") >= 0 && t.add("curators"),
          t
        );
      }
      class Ee extends r.Component {
        state = {
          strSearchString: "",
          rgAppSuggestions: null,
          rgCuratorSuggestions: null,
        };
        m_nHighestSentRequestID = 0;
        m_mapHighestReceivedRequestIDFromBackEnd = new Map([
          ["apps", 0],
          ["curators", 0],
        ]);
        m_timerForChange = new ue.LU();
        componentWillUnmount() {
          this.m_timerForChange.Cancel();
        }
        CloseSuggestions() {
          this.setState({
            rgCuratorSuggestions: null,
            rgAppSuggestions: null,
            strSearchString: "",
          });
        }
        async GetSuggestionsFromServer(e) {
          const t = he(this.props.rgCorporaToSearch);
          t.has("apps") && this.GetAppSuggestionsFromServer(e),
            t.has("curators") && this.GetCuratorSuggestions(e);
        }
        async GetCuratorSuggestions(e) {
          const t = me.Get().allNewsCurators,
            n = [];
          for (const a of t) {
            const t = p.ac.GetClanInfoByClanAccountID(a.clanAccountID),
              l = {
                corpus: "curators",
                id: a.clanAccountID,
                name: t?.group_name,
                img: t?.avatar_full_url,
              };
            if ((t?.group_name?.toLocaleLowerCase() || "").indexOf(e) >= 0) {
              if (
                this.props.fnFilterSuggestion &&
                !this.props.fnFilterSuggestion(l)
              )
                continue;
              if (ce.Fm.Get().BIsIgnoringCurator(t.clanAccountID)) continue;
              const e = ce.Fm.Get().BIsFollowingCurator(t.clanAccountID),
                a = r.createElement(ve, {
                  key: "curatorsug_" + l.id,
                  suggestion: l,
                  fnOnSelected: this.props.fnOnSelected,
                  bShowFollowingLabel: e,
                });
              n.push(
                this.props.fnDecorateSuggestion
                  ? this.props.fnDecorateSuggestion(l, a)
                  : a,
              );
            }
          }
          this.m_mapHighestReceivedRequestIDFromBackEnd.set(
            "curators",
            this.m_nHighestSentRequestID,
          ),
            this.setState({ rgCuratorSuggestions: n });
        }
        async GetAppSuggestionsFromServer(e) {
          const t = this.m_nHighestSentRequestID,
            n = [];
          this.props.rgCorporaToSearch.indexOf("games") >= 0 &&
            (n.push("game"), n.push("software")),
            this.props.rgCorporaToSearch.indexOf("dlc") >= 0 &&
              (n.push("dlc"), n.push("music"));
          const a = {
              cc: A.TS.COUNTRY,
              l: A.TS.LANGUAGE,
              realm: d.TU.k_ESteamRealmGlobal,
              origin: self.origin,
              f: "jsonfull",
              term: e.replace(" ", "+"),
              require_type: n.join(","),
              excluded_tags: ce.Fm.Get().GetExcludedTagsSortedByID(),
              excluded_content_descriptors:
                ce.Fm.Get().ExcludedContentDescriptor,
            },
            l = `${A.TS.STORE_BASE_URL}search/suggest`,
            o = await c().get(l, { params: a, withCredentials: !0 });
          if (t < this.m_mapHighestReceivedRequestIDFromBackEnd.get("apps"))
            return;
          let s;
          this.m_mapHighestReceivedRequestIDFromBackEnd.set("apps", t),
            o?.data?.length &&
              (s = o.data.map((e) => {
                const t = {
                  corpus:
                    ((n = e.type),
                    "game" == n || "software" == n
                      ? "games"
                      : "dlc" == n || "music" == n
                        ? "dlc"
                        : null),
                  ...e,
                  id: parseInt(e.id),
                };
                var n;
                if (
                  this.props.fnFilterSuggestion &&
                  !this.props.fnFilterSuggestion(t)
                )
                  return null;
                const a = r.createElement(ve, {
                  key: t.type + t.id,
                  suggestion: t,
                  fnOnSelected: this.props.fnOnSelected,
                });
                return this.props.fnDecorateSuggestion
                  ? this.props.fnDecorateSuggestion(t, a)
                  : a;
              })),
            this.setState({ rgAppSuggestions: s });
        }
        async UpdateSuggestions(e) {
          const t = e.target.value && e.target.value.trim().toLocaleLowerCase();
          if ((this.m_nHighestSentRequestID++, !t?.length))
            return (
              Array.from(he(this.props.rgCorporaToSearch)).forEach((e) =>
                this.m_mapHighestReceivedRequestIDFromBackEnd.set(
                  e,
                  this.m_nHighestSentRequestID,
                ),
              ),
              this.m_timerForChange.Cancel(),
              this.setState({ strSearchString: "" }),
              void this.ResetSuggestions()
            );
          this.setState({ strSearchString: t }),
            this.m_timerForChange.Schedule(300, () =>
              this.GetSuggestionsFromServer(t),
            );
        }
        ResetSuggestions() {
          this.setState({ rgAppSuggestions: null, rgCuratorSuggestions: null });
        }
        GetLimitedSuggestions() {
          let { rgAppSuggestions: e, rgCuratorSuggestions: t } = this.state;
          let n = e ? e.length : 10,
            a = t ? t.length : 10;
          return (
            n + a > 10 && (n = 10 - Math.min(a, 2)),
            (a = 10 - n),
            (e = e?.slice(0, n)),
            (t = t?.slice(0, a)),
            { rgAppSuggestions: e, rgCuratorSuggestions: t }
          );
        }
        render() {
          const {
              strLabel: e,
              focusOnMount: t,
              rgCorporaToSearch: n,
              strResultsClass: a,
            } = this.props,
            { strSearchString: l } = this.state,
            { rgAppSuggestions: o, rgCuratorSuggestions: s } =
              this.GetLimitedSuggestions(),
            i = l?.length > 0,
            c = o?.length > 0,
            m = s?.length > 0,
            u = he(n).size > 1,
            d =
              u &&
              c &&
              (0, N.we)(
                n.indexOf("dlc") >= 0
                  ? "#EventCalendar_SearchResultsHeader_GameAndDLCSection"
                  : "#EventCalendar_SearchResultsHeader_GameSection",
              ),
            p = Array.from(he(n)).some(
              (e) =>
                this.m_nHighestSentRequestID >
                this.m_mapHighestReceivedRequestIDFromBackEnd.get(e),
            ),
            g = !m && !c && !p;
          return r.createElement(
            "div",
            { className: ge().SuggestContainer },
            r.createElement(te.pd, {
              type: "text",
              label: e,
              onChange: this.UpdateSuggestions,
              bAlwaysShowClearAction: i,
              focusOnMount: t,
            }),
            i &&
              r.createElement(
                "div",
                { className: (0, T.A)(ge().Results, a) },
                c &&
                  r.createElement(
                    "div",
                    { key: "game-suggestions" },
                    u &&
                      r.createElement(
                        "div",
                        { className: ge().ResultSectionHeader },
                        d,
                      ),
                    o,
                  ),
                m &&
                  r.createElement(
                    "div",
                    { key: "curator-suggestions" },
                    u &&
                      r.createElement(
                        "div",
                        { className: ge().ResultSectionHeader },
                        (0, N.we)(
                          "#EventCalendar_SearchResultsHeader_CuratorSection",
                        ),
                      ),
                    s,
                  ),
                g &&
                  r.createElement(
                    "div",
                    { className: ge().EmptyResults, key: "empty-results" },
                    (0, N.we)("#EventCalendar_GameSearch_NoneFound"),
                  ),
                p && r.createElement(y.t, { size: "small" }),
              ),
          );
        }
      }
      (0, x.Cg)([se.oI], Ee.prototype, "UpdateSuggestions", null);
      const ve = (e) =>
        r.createElement(
          "div",
          {
            className: ge().ResultRow,
            key: `suggestion-${e.suggestion.id}`,
            onClick: () => e.fnOnSelected(e.suggestion),
          },
          r.createElement("img", {
            src: e.suggestion.img,
            className: ge().AvatarImage,
          }),
          r.createElement(
            "div",
            { className: ge().GameName },
            " ",
            (0, de.EK)(e.suggestion.name),
            " ",
          ),
          e.bShowFollowingLabel &&
            r.createElement(
              "div",
              { className: ge().Label },
              (0, N.we)("#EventCalendar_FollowingCurator"),
            ),
        );
      var _e = n(51706),
        Ce = n(32541),
        Se = n(48838),
        be = n(63292),
        fe = n.n(be);
      const Ie = (e) =>
          r.createElement(
            _e.x_,
            { onEscKeypress: e.closeModal },
            r.createElement(
              h.tH,
              null,
              r.createElement(
                te.UC,
                null,
                r.createElement(
                  te.Y9,
                  null,
                  (0, N.we)("#EventCurator_BrowseDialog_Title"),
                ),
                r.createElement(
                  te.nB,
                  null,
                  r.createElement(
                    "div",
                    null,
                    (0, N.we)("#EventCurator_BrowseDialog_Desc"),
                  ),
                  r.createElement(ye, null),
                ),
                r.createElement(
                  te.wi,
                  null,
                  r.createElement(
                    te.jn,
                    { onClick: e.closeModal },
                    (0, N.we)("#Button_Dismiss"),
                  ),
                ),
              ),
            ),
          ),
        we = (e) =>
          r.createElement(
            $e,
            {
              title: (0, N.we)("#EventCurator_BrowseDialog_Title"),
              description: (0, N.we)("#EventCurator_BrowseDialog_Desc"),
            },
            r.createElement(ye, null),
          ),
        ye = (e) => {
          const [t, n] = r.useState(me.Get().IsLoaded());
          r.useEffect(() => {
            if (!t) {
              (async () => {
                await me.Get().WaitForInitialLoad(), n(!0);
              })();
            }
          }, [t]);
          let a = new Array();
          if (t) {
            N.pf
              .GetELanguageFallbackOrder([d.TU.k_ESteamRealmGlobal])
              .forEach((e) =>
                a.push(r.createElement(Te, { key: "curlang" + e, lang: e })),
              );
          }
          return r.createElement(
            r.Fragment,
            null,
            t
              ? r.createElement(r.Fragment, null, a)
              : r.createElement(y.t, {
                  size: "medium",
                  position: "center",
                  string: (0, N.we)("#Loading"),
                }),
          );
        },
        Te = (e) => {
          const t = me.Get().GetCuratorsForLang(e.lang);
          if (!t) return null;
          const n = t
            .map((e) => p.ac.GetClanInfoByClanAccountID(e.clanAccountID))
            .filter((e) => Boolean(e));
          if (0 == n.length) return null;
          n.sort((e, t) => e.group_name.localeCompare(t.group_name));
          const a = n.map((e) =>
            r.createElement(Ge, {
              clanInfo: e,
              key: "curatorbrowse_" + e.clanAccountID,
              layout: "row",
            }),
          );
          return r.createElement(
            "div",
            null,
            r.createElement(
              "div",
              { className: fe().LanguageHeader },
              (0, N.we)(
                "#EventCurator_BrowseDialog_LangCurator",
                (0, N.we)("#Language_" + (0, u.Lg)(e.lang)),
              ),
            ),
            a,
          );
        },
        Ne = (0, m.PA)((e) => {
          const t = p.ac.GetClanInfoByClanAccountID(e.clanid);
          if (!t) return r.createElement("div", null, e.children);
          const n = {
              clan_account_id: t.clanAccountID,
              name: t.group_name,
              type: "developer",
            },
            a = r.createElement(
              "div",
              { className: fe().CuratorHoverContainer },
              r.createElement(Ce.hA, {
                creatorID: n,
                bSmallFormat: !0,
                bHideCreatorType: !0,
                bHideFollowButton: !0,
              }),
            );
          return r.createElement(
            ae.m9,
            { toolTipContent: a, bTopmost: !0 },
            e.children,
          );
        }),
        Ge = (e) => {
          const [t, n] = r.useState(!1),
            a = () => {
              (0, ie.pg)(
                r.createElement(_e.KG, {
                  strDescription: (0, N.we)("#EventCurator_NoEventsFound_Body"),
                  strTitle: (0, N.we)("#EventCurator_NoEventsFound_Title"),
                }),
                window,
              ),
                n(!1);
            },
            { clanInfo: l, layout: o } = e,
            s = "row" === o ? fe().CuratorInfoRow : fe().CuratorInfoIcon,
            i = r.createElement(
              Ne,
              { clanid: l.clanSteamID.GetAccountID() },
              r.createElement(
                "div",
                {
                  className: (0, T.A)(
                    w().FlexRowContainer,
                    fe().CuratorInfoTitleCtn,
                  ),
                  onClick: () => n(!0),
                },
                r.createElement("img", {
                  className: fe().CuratorInfoImg,
                  src: l.avatar_full_url,
                  alt: l.group_name,
                }),
                r.createElement(
                  "div",
                  { className: fe().CuratorInfoName },
                  l.group_name,
                ),
              ),
            );
          return r.createElement(
            "div",
            { className: (0, T.A)(w().FlexRowWrapSpaceBetweenContainer, s) },
            t
              ? r.createElement(
                  h.tH,
                  null,
                  r.createElement(v.N, {
                    onEventNotFound: a,
                    appid: 0,
                    clanSteamID: e.clanInfo.clanSteamID,
                    trackingLocation: 8,
                    eventModel: void 0,
                    announcementGID: void 0,
                    partnerEventStore: Z.O3,
                    showAppHeader: !0,
                    closeModal: () => n(!1),
                  }),
                )
              : null,
            r.createElement("div", { onClick: () => n(!0) }, i),
            r.createElement(
              "div",
              {
                className: (0, T.A)(
                  w().FlexRowContainer,
                  fe().CuratorInfoActionCtn,
                ),
              },
              r.createElement(Se.of, {
                clanAccountID: l.clanAccountID,
                className: fe().CuratorInfoFollow,
              }),
            ),
          );
        };
      var Ae = n(10686),
        ke = n.n(Ae),
        Be = n(19367),
        Le = n.n(Be);
      class De {
        m_dateLoadTime = J.HD.GetTimeNowWithOverrideAsDate();
        IsCurrentlyVisible(e) {
          return (
            (!e.startVisible || e.startVisible <= this.m_dateLoadTime) &&
            (!e.endVisible || e.endVisible >= this.m_dateLoadTime)
          );
        }
        static IsCurrentlyActive(e) {
          const t = J.HD.GetTimeNowWithOverrideAsDate();
          return (
            (!e.startEvent || e.startEvent <= t) &&
            (!e.endEvent || e.endEvent >= t)
          );
        }
        static LocalizeDateString(e) {
          if (!e.startEvent) return null;
          const t = e.startEvent.toLocaleDateString(
            N.pf.GetPreferredLocales(),
            { month: "long", day: "numeric" },
          );
          if (!e.endEvent) return t;
          const n = {
            month:
              e.startEvent.getMonth() != e.endEvent.getMonth()
                ? "long"
                : void 0,
            day: "numeric",
          };
          return `${t} - ${e.endEvent.toLocaleDateString(N.pf.GetPreferredLocales(), n)}`;
        }
        GetVisibleSpecialEvents() {
          return [
            {
              sLocToken: "#NewsHubSpecialEvent_GameFestival",
              startVisible: new Date(
                1e3 * Le()("2020-06-16T14:00:00-07:00").unix(),
              ),
              endVisible: new Date(
                1e3 * Le()("2020-06-22T10:00:00-07:00").unix(),
              ),
              startEvent: new Date(
                1e3 * Le()("2020-06-16T10:00:00-07:00").unix(),
              ),
              endEvent: new Date(
                1e3 * Le()("2020-06-22T10:00:00-07:00").unix(),
              ),
              newshubUrl: "news/collection/GameFestival2020",
            },
          ].filter((e) => this.IsCurrentlyVisible(e));
        }
      }
      const He = new De();
      class Fe extends r.Component {
        render() {
          const { specialEvent: e } = this.props,
            t = window.location.href === A.TS.STORE_BASE_URL + e.newshubUrl,
            n = De.IsCurrentlyActive(e),
            a = De.LocalizeDateString(e);
          return r.createElement(
            $.N_,
            { to: "/" + e.newshubUrl },
            r.createElement(
              "div",
              {
                className: (0, T.A)(
                  ke().SpecialEvent,
                  t && ke().SpecialEventOnPage,
                  n && ke().SpecialEventActive,
                ),
              },
              r.createElement(
                "div",
                { className: ke().SpecialEventTitle },
                (0, N.we)(e.sLocToken),
              ),
              a &&
                r.createElement("div", { className: ke().SpecialEventTime }, a),
            ),
          );
        }
      }
      class Re extends r.Component {
        render() {
          const e = He.GetVisibleSpecialEvents();
          return 0 === e.length
            ? null
            : r.createElement(
                "div",
                { className: ke().SpecialEventListGroup },
                r.createElement(
                  "div",
                  { className: ke().SpecialEventListTitle },
                  (0, N.we)("#Events_SpecialEvents"),
                ),
                r.createElement(
                  "div",
                  { className: ke().SpecialEventList },
                  e.map((e) =>
                    r.createElement(Fe, { key: e.sLocToken, specialEvent: e }),
                  ),
                ),
              );
        }
      }
      var Me = n(91941),
        Oe = n(12088),
        xe = n.n(Oe);
      function Pe() {
        return (0, N.vl)(new Date());
      }
      const Ue = (e) => {
          const t = A.TS.PUBLIC_SHARED_URL + "images/";
          return r.createElement(
            "div",
            { className: xe().LegalFooter },
            r.createElement(
              "div",
              { className: xe().mainmenu_links_china },
              r.createElement(
                "a",
                { href: A.TS.STORE_BASE_URL + "about" },
                "关于蒸汽平台",
              ),
              "  |  ",
              r.createElement(
                "a",
                { href: A.TS.STORE_BASE_URL + "steam_refunds" },
                "退款政策",
              ),
              "  |  ",
              r.createElement(
                "a",
                { href: A.TS.STORE_BASE_URL + "subscriber_agreement" },
                "软件许可服务协议",
              ),
              "  |  ",
              r.createElement("br", null),
              r.createElement(
                "a",
                { href: A.TS.STORE_BASE_URL + "privacy_agreement" },
                "个人信息保护政策",
              ),
              "  |  ",
              r.createElement(
                "a",
                {
                  href: "https://about.steamchina.com/content_report.html",
                  target: "_blank",
                  rel: "noreferrer",
                },
                "不良内容举报投诉",
              ),
              "  |  ",
              r.createElement(
                "a",
                {
                  href: "https://about.steamchina.com/infringement_report.html",
                  target: "_blank",
                  rel: "noreferrer",
                },
                "侵权投诉",
              ),
              "  |  ",
              r.createElement(
                "a",
                {
                  href: "https://about.steamchina.com/parentguardianship_agreement.html",
                  target: "_blank",
                  rel: "noreferrer",
                },
                "家长监护",
              ),
            ),
            r.createElement("div", { className: xe().mainmenu_line }),
            r.createElement(
              "div",
              { className: xe().mainmenu_logos_china },
              r.createElement(
                "a",
                {
                  href: "https://www.wanmei.com/",
                  target: "_blank",
                  rel: "noreferrer",
                },
                r.createElement("img", {
                  className: xe().mainmenu_china_pw_logo,
                  src: t + "footer/pw_logo_gy.svg?v=1",
                }),
              ),
              r.createElement(
                "a",
                {
                  href: "https://valvesoftware.com",
                  target: "_blank",
                  rel: "noreferrer",
                },
                r.createElement("img", {
                  className: xe().mainmenu_china_valve_logo,
                  src: t + "footer/valve_logo_gy.svg?v=1",
                }),
              ),
            ),
            r.createElement(
              "div",
              { className: xe().mainmenu_legal_china },
              r.createElement(
                "div",
                { className: xe().mainmenu_legal_valvelegal },
                `© ${Pe()} Valve Corporation 版权所有，完美世界已获授权`,
                r.createElement("br", null),
                "所有商标均属于其在美国或其他国家的拥有者。",
              ),
              r.createElement(
                "div",
                { className: xe().mainmenu_legal_pwlegal },
                "© 完美世界征奇(上海)多媒体科技有限公司 版权所有。",
                r.createElement("br", null),
                "增值电信业务经营许可证沪B2-20180406",
              ),
            ),
          );
        },
        Ve = (e) =>
          r.createElement(
            "div",
            { className: xe().LegalFooter },
            r.createElement("img", {
              src:
                A.TS.STORE_CDN_URL + "public/images/footerLogo_valve_new.png",
            }),
            r.createElement(
              "div",
              { className: xe().FooterLegal },
              (0, N.we)("#Legal_Footer_WithYear", Pe()),
            ),
          ),
        We = (e) =>
          (0, A.Y2)() ? r.createElement(Ue, null) : r.createElement(Ve, null);
      class qe {
        m_curDisplay = "desktop_navigation";
        m_fnGetRouterHistory = void 0;
        static s_GlobalStore;
        static Get() {
          return (
            qe.s_GlobalStore || (qe.s_GlobalStore = new qe()), qe.s_GlobalStore
          );
        }
        constructor() {
          (0, P.Gn)(this);
        }
        UpdateLocation(e, t) {
          this.m_fnGetRouterHistory = e;
          const n = (0, s.f3)(t, "optionpane");
          if (n)
            switch (n) {
              case "event_filter":
              case "browse_curator":
              case "desktop_navigation":
                this.m_curDisplay != n && (this.m_curDisplay = n);
            }
          else
            "desktop_navigation" != this.m_curDisplay &&
              (this.m_curDisplay = "desktop_navigation");
          return this.m_curDisplay;
        }
        SetDisplay(e) {
          (this.m_curDisplay = e),
            this.m_fnGetRouterHistory &&
              (0, s.Bm)(
                this.m_fnGetRouterHistory(),
                "optionpane",
                "desktop_navigation" == this.m_curDisplay
                  ? void 0
                  : this.m_curDisplay,
              );
        }
        GetDisplay() {
          return this.m_curDisplay;
        }
        ShowBrowseCurator(e) {
          Cn()
            ? qe.Get().SetDisplay("browse_curator")
            : (0, ie.pg)(r.createElement(Ie, null), (0, oe.uX)(e));
        }
      }
      (0, x.Cg)([P.sH], qe.prototype, "m_curDisplay", void 0);
      let Ye = class extends r.Component {
        GetVisibilityStore() {
          return (0, K.v0)().m_visibilityStore;
        }
        OnEventTypeChange(e, t) {
          this.GetVisibilityStore().SetEventTypeGroupAllowed(e, t),
            this.props.fnOnFilterChange();
        }
        RenderEventTypeCheckbox(e) {
          const t = this.GetVisibilityStore().BIsEventTypeGroupAllowed(e);
          return r.createElement(
            ae.he,
            {
              key: `group-${e}`,
              toolTipContent: (0, N.we)(
                "#EventCalendar_EventTypeGroup_ttip_" + e,
              ),
              direction: "top",
            },
            r.createElement(Ze, {
              label: (0, N.we)("#EventCalendar_EventTypeGroup_" + e),
              checked: t,
              onChange: (t) => this.OnEventTypeChange(e, t),
            }),
          );
        }
        OnGameSourceChange(e, t) {
          this.GetVisibilityStore().SetGameSourceAllowed(e, t),
            this.props.fnOnFilterChange();
        }
        RenderGameSourceCheckbox(e, t) {
          const n =
            this.GetVisibilityStore().BIsGameSourceAllowed(e) ||
            (e == z.FD.k_ELibrary &&
              this.GetVisibilityStore().BIsGameSourceAllowed(z.FD.k_ERecent));
          return r.createElement(
            ae.he,
            {
              key: `gs-${e}`,
              direction: "top",
              toolTipContent: t
                ? (0, N.we)("#EventCalendar_DisabledFilter_LoginPrompt")
                : (0, N.we)("#EventCalendar_GameSource_ttip_" + e),
            },
            r.createElement(Ze, {
              label: (0, N.we)("#EventCalendar_GameSource_" + e),
              checked: n,
              disabled: t,
              onChange: (t) => this.OnGameSourceChange(e, t),
            }),
          );
        }
        render() {
          const { bUserIsLoggedIn: e } = this.props,
            t = (0, K.v0)();
          let n = !0;
          if (t.BIsSingleGroupCalendar()) {
            let e = p.ac.GetClanInfoByClanAccountID(t.GetSingleGroupID());
            e && e.has_rss_feed && (n = !1);
          } else
            !t.BIsCollectionCalendar() ||
              (t.GetKey().collectionid != j.g.Press &&
                t.GetKey().collectionid != j.g.Dev_Sales &&
                t.GetKey().collectionid != j.g.Dev_AssociatedPress) ||
              (n = !1);
          const a = (function (e) {
              return (
                e.BIsCollectionCalendar() && "steam" === e.GetCollectionID()
              );
            })(t),
            l = Q.S.Get().GetMutedSourceCount(),
            o =
              t.BIsSingleSourceMuted() ||
              (!t.BIsSingleSourceCalendar() && l > 0);
          return r.createElement(
            $e,
            {
              title: (0, N.we)("#EventCalendar_FiltersTitle"),
              description: (0, N.we)(
                t.BIsGlobalCalendar()
                  ? "#EventCalendar_FiltersDescription"
                  : "#EventCalendar_FiltersDescription_NonPersonalized",
              ),
            },
            r.createElement(
              "div",
              { className: ke().FilterSection },
              n &&
                r.createElement(
                  Ke,
                  null,
                  r.createElement(
                    ze,
                    null,
                    (0, N.we)(
                      "#EventCalendar_FilterSubSection_EventTypeGroups",
                    ),
                  ),
                  this.RenderEventTypeCheckbox(z.xj.k_EEvents),
                  this.RenderEventTypeCheckbox(z.xj.k_EStreaming),
                  this.RenderEventTypeCheckbox(z.xj.k_EUpdates),
                  this.RenderEventTypeCheckbox(z.xj.k_EReleases),
                  this.RenderEventTypeCheckbox(z.xj.k_ESales),
                  this.RenderEventTypeCheckbox(z.xj.k_ENews),
                ),
              Boolean(t.BIsGlobalCalendar()) &&
                r.createElement(
                  Ke,
                  null,
                  r.createElement(
                    ze,
                    null,
                    (0, N.we)("#EventCalendar_FilterSubSection_GameSources"),
                  ),
                  this.RenderGameSourceCheckbox(z.FD.k_ELibrary, !e),
                  r.createElement(
                    "div",
                    { className: ke().FilterSubOption },
                    this.RenderGameSourceCheckbox(z.FD.k_ERecent, !e),
                  ),
                  this.RenderGameSourceCheckbox(z.FD.k_EWishlist, !e),
                  J.HD.bIsFollowingEnabled &&
                    this.RenderGameSourceCheckbox(z.FD.k_EFollowing, !e),
                  this.RenderGameSourceCheckbox(z.FD.k_ERecommended, !e),
                  this.RenderGameSourceCheckbox(z.FD.k_ESteam),
                  J.HD.bIncludeFeaturedAsGameSource &&
                    this.RenderGameSourceCheckbox(z.FD.k_EFeatured),
                ),
              Boolean(
                J.HD.bIsCuratorsEnabled &&
                  (t.BIsGlobalCalendar() || t.BIsSingleAppCalendar()),
              ) &&
                r.createElement(
                  Ke,
                  null,
                  r.createElement(
                    ze,
                    null,
                    (0, N.we)("#EventCalendar_FilterSubSection_CuratorSources"),
                  ),
                  this.RenderGameSourceCheckbox(z.FD.k_ECurator, !e),
                  r.createElement(
                    je,
                    { onClick: qe.Get().ShowBrowseCurator },
                    (0, N.we)("#EventCalendar_BrowseCurators"),
                  ),
                ),
              a &&
                r.createElement(Je, {
                  calendar: t,
                  onFilterChange: this.props.fnOnFilterChange,
                }),
              Boolean(t.BIsSingleSourceMuted()) &&
                r.createElement(
                  "div",
                  null,
                  (0, N.we)(
                    t.BIsSingleGroupCalendar()
                      ? "#EventCalendar_SingleGroupIsMuted"
                      : "#EventCalendar_SingleAppIsMuted",
                  ),
                ),
            ),
            r.createElement(
              "div",
              { className: ke().SideBarFilterNavLinks },
              o &&
                r.createElement(
                  re.uU,
                  {
                    className: ke().MutedSourcesGroup,
                    href: A.TS.STORE_BASE_URL + "account/emailoptout/app",
                    bDisableContextMenu: !0,
                  },
                  r.createElement(
                    je,
                    null,
                    r.createElement(ne.fSs, { muted: !0 }),
                    (0, N.we)("#EventCalendar_ManageMutedSources"),
                    r.createElement(
                      "div",
                      { className: ke().NumberDisplay },
                      l,
                    ),
                  ),
                ),
              r.createElement(
                re.uU,
                {
                  href: A.TS.STORE_BASE_URL + "account/preferences",
                  bDisableContextMenu: !0,
                },
                r.createElement(
                  je,
                  null,
                  r.createElement(ne.nkJ, null),
                  (0, N.we)("#EventCalendar_ManageStorePref"),
                ),
              ),
            ),
          );
        }
      };
      Ye = (0, x.Cg)([m.PA], Ye);
      const Ke = (0, re.Ri)(ke().FilterSubSection),
        ze = (0, re.Ri)(ke().FilterSubSectionTitle),
        je = (0, re.Ri)(ke().FilterLink);
      function Je(e) {
        const { calendar: t, onFilterChange: n } = e,
          [a, l] = (0, U.q3)(() => [
            t
              .GetAllClans()
              .filter((e) => p.ac.GetClanInfoByClanAccountID(e)?.group_name),
            t.GetAllApps().filter((e) => D.A.Get().GetApp(e)?.GetName()),
          ]);
        return (
          (0, le.w)(
            t.BIsCollectionCalendar,
            "Attempted to render collection source filters for a non collection calendar",
          ),
          t.BIsCollectionCalendar()
            ? r.createElement(
                Ke,
                null,
                r.createElement(
                  ze,
                  null,
                  (0, N.we)(
                    "#EventCalendar_FilterSubSection_CollectionSources",
                  ),
                ),
                a.map((e) =>
                  r.createElement(Xe, {
                    calendar: t,
                    clanid: e,
                    key: e,
                    onFilterChange: n,
                  }),
                ),
                l.map((e) =>
                  r.createElement(Qe, {
                    calendar: t,
                    appid: e,
                    key: e,
                    onFilterChange: n,
                  }),
                ),
              )
            : null
        );
      }
      function Xe(e) {
        const { calendar: t, clanid: n, onFilterChange: a } = e,
          l = (0, U.q3)(() => t.m_visibilityStore.BIsClanVisible(n));
        return r.createElement(Ze, {
          label: p.ac.GetClanInfoByClanAccountID(n)?.group_name,
          checked: l,
          onChange: (e) => {
            t.m_visibilityStore.SetClanVisibility(n, e), a();
          },
        });
      }
      function Qe(e) {
        const { calendar: t, appid: n, onFilterChange: a } = e,
          l = t.m_visibilityStore.BIsAppVisible(n);
        return r.createElement(Ze, {
          label: D.A.Get().GetApp(n)?.GetName(),
          checked: l,
          onChange: (e) => {
            t.m_visibilityStore.SetAppVisibility(n, e), a();
          },
        });
      }
      function Ze(e) {
        return r.createElement(
          "div",
          { className: ke().FilterOption },
          r.createElement(te.Yh, { ...e }),
        );
      }
      const $e = (e) =>
        r.createElement(
          "div",
          { className: ke().FilterControlPage },
          r.createElement("div", { className: ke().FiltersTitle }, e.title),
          Boolean(e.description) &&
            r.createElement(
              "div",
              { className: ke().FiltersDescription },
              e.description,
            ),
          e.children,
        );
      let et = class extends r.Component {
        OpenFilterSettings(e) {
          qe.Get().SetDisplay(e ? "event_filter" : "desktop_navigation");
        }
        render() {
          const {
              bUserIsLoggedIn: e,
              nDisappearingHeaderVisibleHeight: t,
              bIsCollapsed: n,
              fnToggleCollapsed: a,
              fnOnFilterChange: l,
            } = this.props,
            o = Cn(),
            s = r.createElement(
              "div",
              {
                className: ke().MobileCloseButton,
                onClick: () => {
                  this.OpenFilterSettings(!1), a();
                },
              },
              r.createElement(ne.i6V, null),
            ),
            i = n ? Math.max(0, t) : 0,
            c = o
              ? null
              : r.createElement(
                  "div",
                  { onClick: a, className: ke().CollapseButton },
                  r.createElement(
                    "div",
                    {
                      style: { marginTop: `${i}px` },
                      className: ke().DesktopButton,
                    },
                    r.createElement(ne.F2T, { angle: n ? 180 : 0 }),
                  ),
                ),
            m = o
              ? null
              : r.createElement(
                  "div",
                  {
                    onClick: () => this.OpenFilterSettings(!1),
                    className: ke().CollapseButton,
                  },
                  r.createElement(
                    "div",
                    {
                      style: { marginTop: `${i}px` },
                      className: ke().DesktopButton,
                    },
                    r.createElement(ne.i6V, null),
                  ),
                ),
            u = "desktop_navigation" != qe.Get().GetDisplay() ? m : c,
            d = n ? null : { top: `${t}px` };
          (0, K.v0)();
          let p;
          switch (qe.Get().GetDisplay()) {
            case "event_filter":
              p = r.createElement(Ye, {
                bUserIsLoggedIn: e,
                fnOnFilterChange: l,
              });
              break;
            case "browse_curator":
              p = r.createElement(we, null);
              break;
            case "desktop_navigation":
              p = r.createElement(tt, {
                ...this.props,
                fnOpenFilterSettings: this.OpenFilterSettings,
              });
          }
          return r.createElement(
            r.Fragment,
            null,
            r.createElement(
              "div",
              {
                className: (0, T.A)(
                  ke().SidebarContainer,
                  n && ke().SidebarCollapsed,
                ),
                style: d,
              },
              n
                ? u
                : r.createElement(
                    "div",
                    { className: ke().Sidebar },
                    s,
                    u,
                    r.createElement(
                      "div",
                      { className: ke().ControlPageContainer },
                      p,
                    ),
                  ),
            ),
          );
        }
      };
      (0, x.Cg)([se.oI], et.prototype, "OpenFilterSettings", null),
        (et = (0, x.Cg)([m.PA], et));
      const tt = (0, m.PA)((e) => {
        const { bShouldIncludeLegalFooter: t, bShowUpcoming: n } = e,
          a =
            "Responsive_RequestMobileView" in window &&
            window.Responsive_RequestMobileView;
        return r.createElement(
          r.Fragment,
          null,
          r.createElement(
            "div",
            { className: ke().SidebarBackground },
            r.createElement(ne.Qte, null),
          ),
          r.createElement(
            "div",
            { className: ke().SidebarTitle },
            (0, N.PP)("#EventCalendar_Title", r.createElement("br", null)),
          ),
          r.createElement(mt, { bIsUpcoming: n }),
          r.createElement(Re, null),
          r.createElement(
            "div",
            { className: ke().SidePanelGameSearch },
            r.createElement(nt, {
              label: (0, N.we)("#EventCalendar_UniversalSearch"),
            }),
          ),
          r.createElement(ut, { bIsUpcoming: n }),
          r.createElement(
            "div",
            { className: ke().FilterSettingsCtn },
            r.createElement(
              "div",
              {
                className: (0, T.A)(ke().FilterLink, ke().OpenFilterSettings),
                onClick: () => e.fnOpenFilterSettings(!0),
              },
              r.createElement(ne.wB_, null),
              (0, N.we)("#EventCalendar_EditFilters"),
            ),
          ),
          a &&
            r.createElement(
              "div",
              {
                className: (0, T.A)(ke().SidebarLink, ke().ForceResponsiveLink),
                onClick: a,
              },
              (0, N.we)("#EventCalendar_ShowResponsiveView"),
            ),
          t && r.createElement(We, null),
        );
      });
      let nt = class extends r.Component {
        DecorateSearchSuggestion(e, t) {
          if (e && e.id) {
            let n = "";
            return (
              "curators" == e.corpus
                ? (n = "group/" + e.id)
                : "games" == e.corpus &&
                  ((0, le.w)(
                    (0, ee.f)(e.type),
                    "Unexpected app type " + e.type,
                  ),
                  (n = "app/" + e.id)),
              r.createElement(
                $.N_,
                { key: `suggestion-${e.id}`, to: `/${(0, _.LJ)()}/${n}/` },
                t,
              )
            );
          }
          return t;
        }
        render() {
          return r.createElement(Ee, {
            strLabel: this.props.label,
            fnOnSelected: () => {},
            fnDecorateSuggestion: this.DecorateSearchSuggestion,
            rgCorporaToSearch: ["games", "curators"],
            focusOnMount: this.props.focusOnMount,
          });
        }
      };
      nt = (0, x.Cg)([m.PA], nt);
      function at(e, t) {
        const n = (0, j.d)(e);
        if (((0, le.w)(!!n, "Must define collection " + e), !n)) return null;
        let a,
          r = (0, K.v0)().GetCollectionID() == e;
        switch (e) {
          case j.g.Default:
            r = (0, K.v0)().BIsGlobalCalendar() && !t;
            break;
          case j.g.Upcoming:
            (r = (0, K.v0)().BIsGlobalCalendar() && t),
              (a = (function () {
                if (!(0, K.v0)().BIsGlobalCalendar()) return;
                if (!A.iA.logged_in) return;
                const e =
                    (0, K.v0)().GetStoreInitializationTimestamp().getTime() /
                    1e3,
                  t = (0, K.v0)().GetCurrentlyLoadedEventCount(e);
                if (!t) return;
                return (0, K.v0)().BHitEventHorizon("forward")
                  ? String(t.nCount)
                  : t.nCount + "+";
              })());
        }
        return {
          name: n.strName,
          shortName: n.strShortName,
          key: e,
          url: n.strUrl,
          subtitle: n.strSubtitle,
          onPage: r,
          count: a,
          bValveOnly: n.bIsValveOnly,
        };
      }
      function rt(e, t) {
        const n = new Array();
        return n.push(at(j.g.Default, e)), n.push(at(j.g.Upcoming, e)), n;
      }
      function lt(e, t) {
        const n = new Array();
        return (
          n.push(at(j.g.Featured, e)),
          n.push(at(j.g.Steam, e)),
          J.HD.GetTimeNowWithOverride() < 1668160800 &&
            n.push(at(j.g.Halloween, e)),
          n
        );
      }
      function ot(e, t) {
        (0, K.v0)().BIsCollectionCalendar(), (0, _.LJ)();
        const n = new Array();
        if ((J.HD.bIsCuratorsEnabled && n.push(at(j.g.Press, e)), t))
          for (const e of He.GetVisibleSpecialEvents()) {
            const t = !1;
            n.push({
              name: (0, N.we)(e.sLocToken),
              url: e.newshubUrl,
              onPage: t,
              key: "event_" + e.sLocToken,
            });
          }
        return (
          A.iA.is_support &&
            (n.push(at(j.g.Dev_All, e)),
            n.push(at(j.g.Dev_Sales, e)),
            n.push(at(j.g.Dev_AssociatedPress, e))),
          n
        );
      }
      const st = (e) => {
        const {
          shortName: t,
          name: n,
          url: a,
          onPage: l,
          count: o,
          bValveOnly: s,
        } = e.element;
        return !A.iA.is_support && s
          ? null
          : r.createElement(
              $.N_,
              { to: "/" + a },
              r.createElement(
                "div",
                {
                  className: (0, T.A)(
                    ke().MobileNavButton,
                    l && ke().MobileNavButtonActive,
                  ),
                },
                t || n,
                o &&
                  r.createElement("div", { className: ke().MobileNavCount }, o),
              ),
            );
      };
      let it = class extends r.Component {
        state = { bSearchExpanded: !1 };
        onExpandSearch(e) {
          this.setState({ bSearchExpanded: e });
        }
        render() {
          const { bSearchExpanded: e } = this.state,
            t = [
              ...rt(this.props.bIsUpcoming),
              ...lt(this.props.bIsUpcoming),
              ...ot(this.props.bIsUpcoming, !1),
            ];
          return r.createElement(
            "div",
            {
              style: { transform: `translateY(${this.props.nTopOffset}px)` },
              className: ke().MobileNavBannerCtn,
            },
            r.createElement(
              "div",
              {
                className: ke().SettingsPanel,
                onClick: this.props.fnToggleCollapsed,
              },
              r.createElement(ne.wB_, null),
            ),
            r.createElement(
              "div",
              {
                className: (0, T.A)(
                  ke().SettingsPanel,
                  e && ke().SearchExpanded,
                ),
                onClick: () => this.onExpandSearch(!e),
              },
              r.createElement(ne.eSy, null),
            ),
            e &&
              r.createElement(
                r.Fragment,
                null,
                r.createElement("div", {
                  className: ke().SearchDismiss,
                  onClick: () => this.onExpandSearch(!1),
                }),
                r.createElement(
                  "div",
                  {
                    className: (0, T.A)(
                      ke().SearchBox,
                      e && ke().SearchExpanded,
                    ),
                  },
                  r.createElement(nt, { focusOnMount: !0 }),
                ),
              ),
            r.createElement(
              Me.Z,
              { className: ke().MobileNavHScroll },
              r.createElement(
                "div",
                { className: ke().MobileNavBannerList },
                t.map((e) => r.createElement(st, { key: e.key, element: e })),
              ),
            ),
          );
        }
      };
      (0, x.Cg)([se.oI], it.prototype, "onExpandSearch", null),
        (it = (0, x.Cg)([m.PA], it));
      const ct = (e) => {
        const {
          key: t,
          name: n,
          subtitle: a,
          url: l,
          onPage: o,
          count: s,
          bValveOnly: i,
          icon: c,
        } = e.element;
        return !A.iA.is_support && i
          ? null
          : r.createElement(
              $.N_,
              { to: "/" + l },
              r.createElement(
                "div",
                {
                  className: (0, T.A)(
                    ke().NewsChannel,
                    o && ke().NewsChannelOnPage,
                    i && w().ValveOnlyBackground,
                  ),
                },
                Boolean(c) &&
                  r.createElement("img", {
                    className: (0, T.A)(ke().NewsChannelIcon),
                    src: c,
                  }),
                r.createElement(
                  "div",
                  { className: ke().NewsChannelText },
                  r.createElement(
                    "div",
                    { className: ke().NewsChannelTitle },
                    i && "(VO) ",
                    n,
                  ),
                  a &&
                    r.createElement(
                      "div",
                      { className: ke().NewsChannelSubtitle },
                      a,
                    ),
                ),
                Boolean(void 0 !== s) &&
                  r.createElement(
                    "div",
                    { className: ke().NewsChannelCount },
                    s,
                  ),
              ),
            );
      };
      let mt = class extends r.Component {
        render() {
          const e = rt(this.props.bIsUpcoming),
            t = lt(this.props.bIsUpcoming);
          return r.createElement(
            "div",
            { className: ke().NewsChannelGroup },
            r.createElement(
              "div",
              { className: ke().NewsChannelListTitle },
              (0, N.we)("#EventCalendar_NewsChannels"),
            ),
            r.createElement(
              "div",
              { className: ke().NewsChannelList },
              e.map((e) => r.createElement(ct, { key: e.key, element: e })),
            ),
            r.createElement(
              "div",
              { className: ke().NewsChannelListTitle },
              (0, N.we)("#EventCalendar_NewsChannels_Global"),
            ),
            r.createElement(
              "div",
              { className: ke().NewsChannelList },
              t.map((e) => r.createElement(ct, { key: e.key, element: e })),
            ),
          );
        }
      };
      mt = (0, x.Cg)([m.PA], mt);
      class ut extends r.Component {
        render() {
          const e = ot(this.props.bIsUpcoming, !1);
          return e && e.length > 0
            ? r.createElement(
                "div",
                {
                  className: (0, T.A)(
                    ke().NewsChannelGroup,
                    ke().DiscoverGroup,
                  ),
                },
                r.createElement(
                  "div",
                  { className: ke().NewsChannelListTitle },
                  (0, N.we)("#EventCalendar_NewsChannels_Discover"),
                ),
                r.createElement(
                  "div",
                  { className: ke().NewsChannelList },
                  e.map((e) => r.createElement(ct, { key: e.key, element: e })),
                ),
              )
            : null;
        }
      }
      var dt = n(94607),
        pt = n(81477),
        gt = n(42011),
        ht = n(88997),
        Et = n(68451),
        vt = n(61336),
        _t = n(72978),
        Ct = n.n(_t);
      let St = class extends r.Component {
        OnMuteButton(e) {
          const { calendarEvent: t } = this.props;
          let n = t.GetEntityName();
          (0, ie.pg)(
            r.createElement(
              _e.o0,
              {
                strTitle: (0, N.we)("#EventCalendar_MuteApp_Title", n),
                strDescription: (0, N.we)("#EventCalendar_MuteApp_details", n),
                onOK: () =>
                  (0, K.v0)().UpdateEventBlockFromCalendarEvent(t, !1),
              },
              r.createElement(
                "a",
                {
                  href: A.TS.STORE_BASE_URL + "account/emailoptout/app",
                  target: A.TS.IN_CLIENT ? void 0 : "_blank",
                },
                (0, N.we)("#EventCalendar_ManageMutedSources"),
              ),
            ),
            (0, oe.uX)(e),
          );
        }
        OnUnMuteButton() {
          const { calendarEvent: e } = this.props;
          (0, K.v0)().UpdateEventBlockFromCalendarEvent(e, !0);
        }
        HideAllEventsOfMyType() {
          const { eventModel: e } = this.props,
            t = this.GetVisibilityStore().MapClanEventTypeToGroup(
              e.GetEventType(),
            );
          this.GetVisibilityStore().SetEventTypeGroupAllowed(t, !1);
        }
        GetVisibilityStore() {
          return (0, K.v0)().m_visibilityStore;
        }
        AddContextMenuForSource(e, t, n, a = !0) {
          this.GetVisibilityStore().BIsGameSourceAllowed(t) &&
            (a &&
              e.push(
                r.createElement(
                  Et.kt,
                  {
                    key: `item-source-${n}-${t}`,
                    disabled: !0,
                    onSelected: () => {},
                  },
                  (0, N.we)("#EventCalender_Reason_" + t),
                ),
              ),
            e.push(
              r.createElement(
                Et.kt,
                {
                  key: `item-hidesource-${n}-${t}`,
                  onSelected: () => {
                    this.GetVisibilityStore().SetGameSourceAllowed(t, !1);
                  },
                },
                (0, N.we)("#EventCalender_Hide_Reason_" + t),
              ),
            ));
        }
        GotoGameOrClanHub() {
          const { eventModel: e } = this.props,
            t = (0, _.qT)(e, _.PH.k_eStoreNewsHub, "allowRelative");
          t.startsWith("http")
            ? (window.location.href = t)
            : this.props.history.push(t);
        }
        ToggleFollowCurator() {
          (0, Se.cI)(this.props.eventModel.clanSteamID.GetAccountID());
        }
        CreateContextMenu(e) {
          const { eventModel: t, calendarEvent: n } = this.props;
          let a = [];
          const l = n.GetSource(),
            o = n.unique_id,
            s = (0, A.Y2)(),
            i = (0, K.v0)();
          if (
            (i.BIsGlobalCalendar() &&
              (l &&
                l & W.bK.k_eLibrary &&
                (this.GetVisibilityStore().BIsGameSourceAllowed(
                  z.FD.k_ERecent,
                ) && n.appInfo
                  ? (a.push(
                      r.createElement(
                        Et.kt,
                        {
                          key: `item-source-${o}-lastplayed`,
                          disabled: !0,
                          onSelected: () => {},
                        },
                        (0, N.we)(
                          "#EventCalender_LastPlayed",
                          (0, N.Hq)(
                            J.HD.GetTimeNowWithOverride() -
                              n.appInfo.last_played,
                          ),
                        ),
                      ),
                    ),
                    this.AddContextMenuForSource(a, z.FD.k_ERecent, o, !1))
                  : this.AddContextMenuForSource(a, z.FD.k_ELibrary, o)),
              l &&
                l & W.bK.k_eWishlist &&
                this.AddContextMenuForSource(a, z.FD.k_EWishlist, o),
              l &&
                l & W.bK.k_eFollowing &&
                this.AddContextMenuForSource(a, z.FD.k_EFollowing, o),
              !s &&
                l &&
                l & W.bK.k_eCurator &&
                this.AddContextMenuForSource(a, z.FD.k_ECurator, o),
              l &&
                l & W.bK.k_eRecommended &&
                this.AddContextMenuForSource(a, z.FD.k_ERecommended, o),
              l &&
                l & W.bK.k_eSteam &&
                this.AddContextMenuForSource(a, z.FD.k_ESteam, o),
              l &&
                l & W.bK.k_eFeatured &&
                this.AddContextMenuForSource(a, z.FD.k_EFeatured, o)),
            a.push(
              r.createElement(
                Et.kt,
                {
                  key: t.GID + "hidetype",
                  onSelected: this.HideAllEventsOfMyType,
                },
                (0, N.we)(
                  "#EVentCalendar_Hide_EventType",
                  (0, N.we)(
                    "#EventCalendar_EventTypeGroup_" +
                      this.GetVisibilityStore().MapClanEventTypeToGroup(
                        t.GetEventType(),
                      ),
                  ),
                ),
              ),
            ),
            A.iA.logged_in &&
              (Q.S.Get().BIsEventBlocked(n)
                ? a.push(
                    r.createElement(
                      Et.kt,
                      {
                        key: t.GID + "unmuteapp",
                        onSelected: this.OnUnMuteButton,
                      },
                      r.createElement(
                        ae.he,
                        {
                          toolTipContent: (0, N.we)(
                            "#EventCalendar_UnMuteApp_ttip",
                          ),
                        },
                        (0, N.we)(
                          "#EventCalendar_UnMuteApp_Title",
                          this.props.calendarEvent.GetEntityName(),
                        ),
                      ),
                    ),
                  )
                : a.push(
                    r.createElement(
                      Et.kt,
                      { key: t.GID + "muteapp", onSelected: this.OnMuteButton },
                      r.createElement(
                        ae.he,
                        {
                          toolTipContent: (0, N.we)(
                            "#EventCalendar_MuteApp_ttip",
                          ),
                        },
                        (0, N.we)(
                          "#EventCalendar_MuteApp_Title",
                          this.props.calendarEvent.GetEntityName(),
                        ),
                      ),
                    ),
                  )),
            !t.BIsOGGEvent() && !s)
          ) {
            const e = ce.Fm.Get().BIsFollowingCurator(t.clanSteamID);
            a.push(
              r.createElement(
                Et.kt,
                {
                  key: t.GID + "followcurator",
                  onSelected: this.ToggleFollowCurator,
                },
                r.createElement(
                  ae.he,
                  {
                    toolTipContent: (0, N.we)(
                      e
                        ? "#EventCalendar_UnFollowCurator_ttip"
                        : "#EventCalendar_FollowCurator_ttip",
                    ),
                  },
                  (0, N.we)(
                    e
                      ? "#EventCalendar_UnFollowCurator"
                      : "#EventCalendar_FollowCurator",
                    this.props.calendarEvent.GetEntityName(),
                  ),
                ),
              ),
            );
          }
          i.BIsSingleSourceCalendar() ||
            a.push(
              r.createElement(
                Et.kt,
                { key: t.GID + "goto", onSelected: this.GotoGameOrClanHub },
                (0, N.we)(
                  "#EventCalendar_Goto_SpecificCalendar",
                  n.GetEntityName(),
                ),
              ),
            ),
            t.appid &&
              a.push(
                r.createElement(
                  Et.kt,
                  {
                    key: t.GID + "goto",
                    onSelected: () =>
                      (window.location.href = (0, vt.k2)(
                        A.TS.STORE_BASE_URL + "app/" + t.appid,
                      )),
                  },
                  (0, N.we)("#EventDisplay_ViewStorePage"),
                ),
              ),
            (0, ht.lX)(r.createElement(Et.tz, null, a), e);
        }
        render() {
          return r.createElement(
            "div",
            {
              className: (0, T.A)(Ct().FooterStat, Ct().Options),
              onClick: this.CreateContextMenu,
            },
            r.createElement(ne.faJ, null),
          );
        }
      };
      (0, x.Cg)([se.oI], St.prototype, "OnMuteButton", null),
        (0, x.Cg)([se.oI], St.prototype, "OnUnMuteButton", null),
        (0, x.Cg)([se.oI], St.prototype, "HideAllEventsOfMyType", null),
        (0, x.Cg)([se.oI], St.prototype, "AddContextMenuForSource", null),
        (0, x.Cg)([se.oI], St.prototype, "GotoGameOrClanHub", null),
        (0, x.Cg)([se.oI], St.prototype, "ToggleFollowCurator", null),
        (0, x.Cg)([se.oI], St.prototype, "CreateContextMenu", null),
        (St = (0, x.Cg)([m.PA], St));
      const bt = (0, l.y)(St);
      var ft = n(74976),
        It = n(43667),
        wt = n(76684),
        yt = n(10224),
        Tt = n(94743),
        Nt = n(82227),
        Gt = n(27543);
      function At(e) {
        const {
            eventModel: t,
            calendarEvent: n,
            bSuppressHoverEffects: a,
            mode: l,
            bHideGameTitle: s,
            fnOnClicked: i,
          } = e,
          [c, m] = r.useState(!1);
        r.useEffect(() => {
          if (n.clanInfo) {
            let e = o.b.InitFromClanID(n.clanInfo.clanid);
            p.ac.LoadClanInfoForClanSteamID(e);
          }
        }, [n.clanInfo]);
        const d = X.KN.Get(),
          g = (0, u.sf)(A.TS.LANGUAGE),
          h = "capsule",
          [E, v, C, S, b, f, I, w, y, N, G] = (0, U.q3)(() => [
            t.has_live_stream,
            t.GetEventType(),
            t.GetAllTags(),
            t.GetCategoryAsString(),
            t.GetNameWithFallback(g),
            t.BImageNeedScreenshotFallback(h, g),
            t.appid,
            t.GID,
            t.GetStartTimeAndDateUnixSeconds(),
            t.GetSubTitleWithLanguageFallback(g),
            t.GetSummaryWithFallback(g),
          ]),
          [k, B] = r.useState(() =>
            (0, yt.c)() && 14 == v ? Y.wI.full : Y.wI.capsule_main,
          ),
          L = (0, U.q3)(() =>
            Boolean(f && I)
              ? t.GetFallbackArtworkScreenshot()
              : t.GetImageURLWithFallback(h, g, k),
          ),
          D =
            "upcoming" !== l &&
            (function (e, t, n, a) {
              const { video_preview_type: l, video_preview_id: o, type: s } = e,
                i = t.appid;
              if (!o) return null;
              if (12 === s) return null;
              if ("youtube" === l) {
                const t = (0, u.sf)(A.TS.LANGUAGE),
                  l = (0, yt.c)() && 14 == s ? Y.wI.full : Y.wI.capsule_main,
                  c = e.GetImageForSizeAsArrayWithFallback("capsule", t, l, !0);
                if ("carousel" === a)
                  return r.createElement(Tt.r, {
                    altImgWithFallback: c,
                    video: o,
                    className: Ct().YoutubePreviewImage,
                  });
                const m = () => {
                  pt.V.RecordAppInteractionEvent(i, pt.E.k_ePlayedVideo), n(!0);
                };
                return r.createElement(Tt.l, {
                  video: o,
                  altImgWithFallback: c,
                  autoplay: !0,
                  autopause: !0,
                  showFullscreenBtn: !0,
                  controls: !0,
                  imageClassnames: Ct().YoutubePreviewImage,
                  onPlayerActivated: m,
                  preloadYoutubeScripts: !0,
                  playsInline: !0,
                });
              }
              return null;
            })(t, n, m, l),
          H = Ct()[`EventType${v}`],
          F = C.map((e) => Ct()[`Tag-${e}`]),
          R = (0, T.A)(
            Ct().TileContainer,
            H,
            E && Ct().TileVideoIcon,
            a ? Ct().DisableHovers : Ct().EnableHovers,
            c && Ct().VideoPlayerReady,
            D && Ct().HasVideo,
            d.HasEventBeenRead(w) && Ct().HasBeenRead,
            "wide" === l && Ct().WideMode,
            "carousel" === l && Ct().CarouselMode,
            "upcoming" === l && Ct().UpcomingMode,
            ...F,
          );
        let M = N,
          O = G;
        M === O && (O = void 0), M === b && (M = void 0);
        const x = (0, q.j3)(L),
          P = r.createElement(kt, {
            videoPreview: D,
            calendarEvent: n,
            eventModel: t,
            mode: l,
            artworkType: h,
            strCapsuleImgURLForBackground: x,
            fnSetCoverSize: B,
          }),
          V = a && 14 != v && !(D && "carousel" !== l),
          W = V && P,
          K = !V && P,
          z = "wide" !== l || a,
          j =
            28 !== v &&
            12 !== v &&
            J.HD.GetTimeNowWithOverride() < y &&
            r.createElement(
              "div",
              {
                className: (0, T.A)(Ct().ReminderContainer, z && Ct().OnlyIcon),
              },
              r.createElement(It.j, {
                eventModel: t,
                lang: g,
                bShowStartTime: !0,
                bOnlyShowIcon: z,
                bExpandLeft: z,
              }),
            ),
          Q = Boolean(12 !== v && O),
          Z = Boolean(
            M &&
              (!Q ||
                !(function (e, t) {
                  const n = (e) => e.replace(/\W+/g, "").toLocaleLowerCase(),
                    a = n(e);
                  return n(t).startsWith(a);
                })(M, O)),
          );
        return r.createElement(
          "div",
          { className: R },
          r.createElement(ft.C, { event: t, recordNewsHubStats: !0 }),
          r.createElement(
            _.tj,
            { eventModel: t, route: _.PH.k_eView },
            r.createElement(
              "div",
              {
                className: Ct().Tile,
                onClick: (e) => {
                  pt.V.RecordAppInteractionEvent(n.appid, pt.E.k_eClickThrough),
                    i(t),
                    e.stopPropagation(),
                    e.preventDefault();
                },
              },
              14 === v &&
                r.createElement("div", {
                  className: (0, T.A)(
                    Ct().TileBackgroundImage,
                    f && Ct().FallbackImage,
                  ),
                  style: { backgroundImage: `url(${x})` },
                }),
              r.createElement(
                "div",
                { className: Ct().MainContentContainer },
                r.createElement(
                  "div",
                  { className: Ct().TileTextContainer },
                  Boolean(12 == v) &&
                    r.createElement(
                      "div",
                      { className: Ct().PatchIconCtn },
                      r.createElement(ne.vjL, null),
                    ),
                  r.createElement(
                    "div",
                    { className: Ct().EventTitleCtn },
                    W,
                    !s &&
                      r.createElement(
                        "div",
                        { className: Ct().GameSource },
                        r.createElement(Lt, { ...e }),
                        n && r.createElement(Ht, { calendarEvent: n }),
                      ),
                    r.createElement("div", { className: Ct().EventName }, b),
                    r.createElement(
                      "div",
                      { className: Ct().EventTypeAndDateCtn },
                      r.createElement(
                        "div",
                        { className: (0, T.A)(Ct().TileTextCategoryType, H) },
                        S,
                      ),
                      r.createElement(Dt, {
                        eventModel: t,
                        className: (0, T.A)(z && Ct().LeaveRoomForReminder),
                      }),
                      z && j,
                    ),
                    Z &&
                      r.createElement(
                        "div",
                        { className: Ct().EventSubTitle },
                        M,
                      ),
                    Q &&
                      r.createElement(
                        "div",
                        {
                          className: (0, T.A)(
                            Ct().EventSummaryDefault,
                            M ? Ct().SubTitleShown : "",
                          ),
                        },
                        O,
                      ),
                  ),
                  !z && j,
                ),
                K,
              ),
            ),
          ),
          r.createElement(Rt, { ...e }),
        );
      }
      function kt(e) {
        const {
            videoPreview: t,
            eventModel: n,
            calendarEvent: a,
            mode: l,
            artworkType: o,
            strCapsuleImgURLForBackground: s,
            fnSetCoverSize: i,
          } = e,
          c = (0, u.sf)(A.TS.LANGUAGE),
          m = !t && "upcoming" !== l,
          [d, g, h, E, v, _] = (0, U.q3)(() => [
            n.GetEventType(),
            n.has_live_stream,
            n.has_live_stream,
            n.clanSteamID.GetAccountID(),
            a.GetGameCapsule(),
            n.BImageNeedScreenshotFallback(o, c),
          ]);
        r.useEffect(() => {
          const e = new Image();
          (e.src = s),
            (e.onerror = () => {
              i(Y.wI.full);
            });
        }, [s, i]);
        const C = p.ac.GetClanInfoByClanAccountID(E),
          S = C && !C.is_ogg;
        let b = n.GetSummaryWithFallback(c);
        return (
          n.GetSubTitleWithLanguageFallback(c) === b && (b = void 0),
          r.createElement(
            "div",
            { className: Ct().CoverImageCtn },
            t,
            m &&
              r.createElement(
                r.Fragment,
                null,
                12 === d &&
                  r.createElement(
                    r.Fragment,
                    null,
                    r.createElement(
                      "div",
                      { className: Ct().GameCapsuleCtn },
                      r.createElement("div", {
                        className: (0, T.A)({
                          [Ct().AppBannerLogo]: !0,
                          [Ct().FallbackImage]: _,
                          [Ct().ClanSource]: S,
                        }),
                        style: { backgroundImage: `url(${v})` },
                      }),
                    ),
                    r.createElement(
                      "div",
                      { className: Ct().GameShortDescription },
                      b,
                    ),
                  ),
                12 !== d &&
                  r.createElement(
                    "div",
                    {
                      className: (0, T.A)({
                        [Ct().EventCapsuleCtn]: !0,
                        [Ct().LiveBroadcastPreview]: h,
                      }),
                    },
                    r.createElement("div", {
                      className: (0, T.A)({
                        [Ct().TileImage]: !0,
                        [Ct().FallbackImage]: _,
                        [Ct().ClanSource]: S,
                      }),
                      style: { backgroundImage: `url(${s})` },
                    }),
                    h &&
                      r.createElement("div", {
                        className: Ct().TileCoverImagePlayable,
                      }),
                    g &&
                      r.createElement(
                        "div",
                        { className: Ct().TileCoverLiveIcon },
                        (0, N.we)("#home_page_live_broadcast"),
                      ),
                    h &&
                      r.createElement(
                        "div",
                        { className: "VideoHintText" },
                        (0, N.we)("#EventCalendar_WatchLiveBroadcast"),
                      ),
                  ),
              ),
          )
        );
      }
      let Bt = class extends r.Component {
        OnTitleClick(e) {
          const { eventModel: t } = this.props,
            n = (0, _.qT)(t, _.PH.k_eStoreNewsHub, "allowRelative");
          n.startsWith("http")
            ? (window.location.href = n)
            : this.props.history.push(n),
            e.stopPropagation(),
            e.preventDefault();
        }
        render() {
          const {
              eventModel: e,
              calendarEvent: t,
              bSuppressHoverEffects: n,
            } = this.props,
            a = t.GetEntityName(),
            l = t.GetGameIcon(),
            o = (0, T.A)(
              Ct().GameTitleContainer,
              n ? Ct().DisableHovers : Ct().EnableHovers,
            );
          return r.createElement(
            h.tH,
            null,
            r.createElement(
              "div",
              { className: Ct().TileTextHeader },
              r.createElement(
                "div",
                { className: o, onClick: this.OnTitleClick },
                r.createElement("img", { className: Ct().AppIcon, src: l }),
                r.createElement(
                  "div",
                  { className: Ct().TileTextAppName },
                  a,
                  " ",
                ),
              ),
            ),
          );
        }
      };
      (0, x.Cg)([se.oI], Bt.prototype, "OnTitleClick", null),
        (Bt = (0, x.Cg)([m.PA], Bt));
      const Lt = (0, l.y)(Bt),
        Dt = (0, m.PA)((e) => {
          const { eventModel: t, calendarEvent: n, className: a } = e,
            l = (0, K.v0)().GetStoreInitializationTimestamp().getTime() / 1e3,
            o = t ? t.GetStartTimeAndDateUnixSeconds() : n.start_time,
            s = t && (0, Gt.JS)(t.type) && t.GetEndTimeAndDateUnixSeconds();
          if (s && o < l && l < s) {
            const e = s - l,
              t = (0, N.Hq)(e, !0);
            return r.createElement(
              "div",
              { className: (0, T.A)(Ct().LiveText, a) },
              r.createElement(
                wt.gS,
                { rtFullDate: o, stylesmodule: Ct() },
                r.createElement(
                  "div",
                  { className: Ct().LiveNow },
                  (0, N.we)("#EventCalendar_LiveNow"),
                ),
              ),
              r.createElement(
                wt.gS,
                { rtFullDate: s, stylesmodule: Ct() },
                (0, N.we)("#EventCalendar_TimeLeft", t),
              ),
            );
          }
          if (o < l) {
            const e = l - o,
              t = e < 86400 ? (0, N.Hq)(e, !1, !0) : (0, N._l)(o);
            return r.createElement(
              wt.gS,
              { className: a, rtFullDate: o, stylesmodule: Ct() },
              r.createElement("div", { className: Ct().PastDateText }, t),
            );
          }
          {
            const e = new Date(1e3 * l);
            e.setHours(0, 0, 0, 1);
            const t = e.getTime() / 1e3,
              n = Math.floor((o - t) / 86400),
              s = n > 1 && n <= 5 ? (0, N.cc)(new Date(1e3 * o)) : (0, N._l)(o),
              i = (0, wt.pg)(o);
            return r.createElement(
              wt.gS,
              { className: a, rtFullDate: o, stylesmodule: Ct() },
              r.createElement(
                "div",
                { className: Ct().FutureDateText },
                (0, N.we)("#EventCalendar_WillStartAtDateTime", s, i),
              ),
            );
          }
        }),
        Ht = (0, m.PA)((e) => {
          const t = e.calendarEvent.GetSource(),
            n = [],
            a = (0, K.v0)().m_visibilityStore;
          t & W.bK.k_eLibrary && a.BIsGameSourceAllowed(z.FD.k_ELibrary)
            ? n.push({
                id: W.bK.k_eLibrary,
                name: "#EventCalendar_GameSource_inLibrary",
                ttip: "#EventCalendar_GameSource_EventExplanation_ttip_library",
                styles: Ct().LibrarySource,
              })
            : t & W.bK.k_eWishlist && a.BIsGameSourceAllowed(z.FD.k_EWishlist)
              ? n.push({
                  id: W.bK.k_eWishlist,
                  name: "#EventCalendar_GameSource_onWishlist",
                  ttip: "#EventCalendar_GameSource_EventExplanation_ttip_wishlist",
                  styles: Ct().WishlistSource,
                })
              : t & W.bK.k_eRecommended &&
                  a.BIsGameSourceAllowed(z.FD.k_ERecommended)
                ? n.push({
                    id: W.bK.k_eRecommended,
                    name: "#EventCalendar_GameSource_recommended_Verbose",
                    ttip: "#EventCalendar_GameSource_EventExplanation_ttip_recommended",
                    styles: Ct().RecommendedSource,
                  })
                : t & W.bK.k_eFeatured &&
                  a.BIsGameSourceAllowed(z.FD.k_EFeatured) &&
                  n.push({
                    id: W.bK.k_eFeatured,
                    name: "#EventCalendar_GameSource_featured",
                    ttip: "#EventCalendar_GameSource_ttip_featured",
                    styles: Ct().FeaturedSource,
                  }),
            t & W.bK.k_eFollowing &&
              a.BIsGameSourceAllowed(z.FD.k_EFollowing) &&
              n.push({
                id: W.bK.k_eFollowing,
                name: "#EventCalendar_GameSource_followed",
                ttip: "#EventCalendar_GameSource_EventExplanation_ttip_following",
                styles: Ct().FollowingSource,
              });
          const l = n.map((t, a) => {
            const r = e.calendarEvent.unique_id;
            return Ft(
              `item-source-${r}-${t.id}`,
              t.name,
              t.ttip,
              t.styles,
              a + 1 < n.length,
            );
          });
          return r.createElement("div", { className: Ct().SourceList }, l);
        }),
        Ft = (e, t, n, a, l) =>
          r.createElement(
            ae.he,
            {
              key: e,
              className: (0, T.A)(Ct().Source, a),
              toolTipContent: (0, N.we)(n),
            },
            (0, N.we)(t) + (l ? ", " : ""),
          );
      let Rt = class extends r.Component {
        OnPerformVoteUp() {
          const { eventModel: e } = this.props,
            t = X.KN.Get();
          !0 !== t.GetPreviouslyLoadedVote(this.props.eventModel) &&
            (0, gt.W)(e, t) &&
            (t.Vote(e, !0, c().CancelToken.source()),
            pt.V.RecordAppInteractionEvent(e.appid, pt.E.k_eThumbsUp));
        }
        OnDiscussionClicked() {
          const { eventModel: e } = this.props;
          pt.V.RecordAppInteractionEvent(e.appid, pt.E.k_eDiscussions);
        }
        render() {
          const e = X.KN.Get(),
            { eventModel: t } = this.props,
            n = Math.max(0, t.nVotesUp - t.nVotesDown),
            a = e.GetPreviouslyLoadedVote(this.props.eventModel),
            l = (function (e, t) {
              return e.BIsUserLoggedIn()
                ? A.iA.is_limited
                  ? Ct().Vote_LimitedUser
                  : !0 === t
                    ? Ct().Vote_Positive
                    : !1 === t
                      ? Ct().Vote_Negative
                      : Ct().Vote_Ready
                : Ct().Vote_NotLoggedIn;
            })(e, a),
            o = t.GetForumTopicURL(),
            s = !(0, A.Y2)() && o,
            i =
              t.live_stream_viewer_count > 0
                ? t.live_stream_viewer_count
                : void 0;
          return r.createElement(
            "div",
            { className: Ct().Footer },
            r.createElement(
              "div",
              { className: Ct().FooterRightSide },
              Boolean(i) &&
                r.createElement(
                  "div",
                  { className: Ct().TileViewerCount },
                  (0, Nt.Dq)(i),
                ),
              r.createElement(
                "div",
                {
                  className: (0, T.A)(Ct().FooterStat, Ct().Vote, l),
                  onClick: this.OnPerformVoteUp,
                },
                r.createElement(ne.bfp, { className: Ct().RateIcon }),
                r.createElement("span", null, Number(n).toLocaleString()),
              ),
              s &&
                r.createElement(
                  "div",
                  { className: Ct().FooterStat },
                  r.createElement(
                    "a",
                    {
                      href: o,
                      className: Ct().CommentIconCtn,
                      target: "_blank",
                      onClick: this.OnDiscussionClicked,
                    },
                    r.createElement(ne._h6, { className: Ct().CommentIcon }),
                    r.createElement(
                      "span",
                      null,
                      Number(t.nCommentCount).toLocaleString(),
                    ),
                  ),
                ),
              r.createElement(bt, { ...this.props }),
            ),
          );
        }
      };
      (0, x.Cg)([se.oI], Rt.prototype, "OnPerformVoteUp", null),
        (0, x.Cg)([se.oI], Rt.prototype, "OnDiscussionClicked", null),
        (Rt = (0, x.Cg)([m.PA], Rt));
      const Mt = {
        include_assets: !0,
        include_release: !0,
        include_screenshots: !0,
      };
      const Ot = (0, m.PA)((e) => {
          const {
              calendarEvent: t,
              partnerEventStore: n,
              mode: a,
              forceParentUpdate: l,
            } = e,
            o = "-500px",
            s = Ct()[`EventType${t.event_type}`],
            i = (0, T.A)(Ct().TileContainer, s),
            c = "carousel" === a;
          return r.createElement(
            dt.Y,
            {
              onEnter: () => {
                !(function (e, t, n) {
                  const a = Array();
                  a.push(t.QueueLoadPartnerEvent(e.clanid, e.unique_id)),
                    e.appid && a.push(D.A.Get().QueueAppRequest(e.appid, Mt)),
                    e.clanInfo &&
                      a.push(
                        p.ac.LoadClanInfoForClanAccountID(e.clanInfo.clanid),
                      ),
                    Promise.all(a).then(() => {
                      const a = t.GetClanEventModel(e.unique_id);
                      a.appid &&
                      a.appid != e.appid &&
                      !D.A.Get().BHasApp(a.appid, Mt)
                        ? D.A.Get().QueueAppRequest(a.appid, Mt).then(n)
                        : n();
                    });
                })(t, n, l);
              },
              topOffset: o,
              bottomOffset: o,
            },
            r.createElement(
              "div",
              { className: i },
              r.createElement(
                "div",
                { className: (0, T.A)(Ct().Tile, Ct().LoadingTile) },
                c && r.createElement(y.t, null),
              ),
              r.createElement("div", { className: Ct().Footer }),
            ),
          );
        }),
        xt = (0, m.PA)((e) => {
          const { partnerEventStore: t, calendarEvent: n, ...a } = e,
            l = t.GetClanEventModel(n.unique_id),
            o = (function (e, t) {
              const n = t.GetClanEventModel(e.unique_id);
              return !(
                !n ||
                (e.appid && !D.A.Get().BHasApp(e.appid, Mt)) ||
                (n.appid &&
                  n.appid != e.appid &&
                  !D.A.Get().BHasApp(n.appid, Mt)) ||
                (e.clanInfo && !p.ac.HasLoadedClanAccountID(e.clanInfo.clanid))
              );
            })(n, t),
            s = (0, se.CH)();
          return o
            ? r.createElement(At, { eventModel: l, calendarEvent: n, ...a })
            : r.createElement(Ot, {
                calendarEvent: n,
                partnerEventStore: t,
                ...a,
                forceParentUpdate: s,
              });
        });
      var Pt = n(96236),
        Ut = n(17009),
        Vt = n.n(Ut),
        Wt = n(41841),
        qt = n(4434),
        Yt = n(62490),
        Kt = n(68224),
        zt = n.n(Kt);
      const jt = "SteamNewsHub_SuggestCuratorsDismissed";
      function Jt() {
        const e = N.pf.GetELanguageFallbackOrder();
        void 0 === e.find((e) => 0 === e) && e.push(0);
        const t = new Array();
        for (const n of e) {
          const e = me.Get().GetCuratorsForLang(n);
          if (!e) continue;
          const a = e.filter(
            (e) => !ce.Fm.Get().BIsIgnoringCurator(e.clanAccountID),
          );
          (0, Yt.fW)(a), t.push(...a);
        }
        return t;
      }
      function Xt(e) {
        const { bCanDismiss: t } = e,
          [n, a] = (0, r.useState)(() =>
            (function () {
              const e = JSON.parse(localStorage.getItem(jt));
              return e && e.bDismissed;
            })(),
          ),
          [l, o] = (0, r.useState)(0),
          [s, i] = (0, r.useState)(null),
          c = (0, r.useRef)(),
          m = (0, qt.m)("CuratorFeedSuggestRow"),
          u = (0, r.useCallback)(() => {
            if (!m.token.reason)
              if (c.current) {
                const e = 118,
                  t = Math.floor(
                    Math.min(c.current.clientWidth, window.innerWidth) / e,
                  );
                o(Math.max(t - 1, 0));
              } else o(0);
          }, [m.token.reason]);
        if (
          ((0, r.useEffect)(() => u(), [u]),
          (0, r.useEffect)(() => {
            if (null == s) {
              (async () => {
                await me.Get().WaitForInitialLoad(), m.token.reason || i(Jt);
              })();
            }
            return (
              window.addEventListener("resize", u),
              () => window.removeEventListener("resize", u)
            );
          }, [m.token.reason, u, s]),
          n)
        )
          return null;
        let d = s?.slice(0, l).map((e) => {
          const t = p.ac.GetClanInfoByClanAccountID(e.clanAccountID);
          return t
            ? r.createElement(
                "div",
                { className: zt().ClanInfo, key: t.clanAccountID },
                r.createElement(Ge, { clanInfo: t, layout: "icon" }),
              )
            : null;
        });
        return r.createElement(
          h.tH,
          null,
          r.createElement(
            "div",
            { className: zt().FeedSuggestContainerBG },
            r.createElement(
              "div",
              { className: zt().FeedSuggestContainer },
              r.createElement(
                "div",
                { className: zt().FeedSuggestCaption },
                (0, N.we)("#EventCurator_FeedCaption_Long"),
              ),
              t &&
                r.createElement(
                  "div",
                  {
                    className: zt().DismissButton,
                    onClick: (e) => {
                      (0, ie.pg)(
                        r.createElement(_e.o0, {
                          strTitle: (0, N.we)("#EventCurator_DismissTitle"),
                          strDescription: (0, N.we)(
                            "#EventCurator_DismissBody",
                          ),
                          onOK: () => {
                            localStorage.setItem(
                              jt,
                              JSON.stringify({ bDismissed: !0 }),
                            ),
                              m.token.reason || a(!0);
                          },
                        }),
                        (0, oe.uX)(e),
                      );
                    },
                  },
                  r.createElement(ne.i6V, null),
                ),
              r.createElement(
                "div",
                { className: zt().RowContainer, ref: c },
                d || r.createElement(y.t, null),
                r.createElement(
                  "div",
                  {
                    className: zt().BrowseMore,
                    onClick: qe.Get().ShowBrowseCurator,
                  },
                  (0, N.we)("#EventCurator_BrowseMore"),
                ),
              ),
            ),
          ),
        );
      }
      var Qt = n(57688),
        Zt = n.n(Qt);
      const $t = (e) => {
        const {
            titleToken: t,
            subtitleToken: n,
            backgroundImg: a,
            headerImg: l,
            headerURL: o,
          } = e,
          s = a ? { backgroundImage: a } : {};
        return r.createElement(
          "div",
          {
            className: (0, T.A)(
              Zt().CommonHeaderStyles,
              Zt().SimpleTitleHeaderCtn,
              e.largeHeader && Zt().LargeHeader,
            ),
            style: s,
          },
          r.createElement(
            "div",
            {
              className: (0, T.A)(
                Zt().CollectionBannerGroup,
                l ? Zt().HeaderImg : Zt().NoHeaderImg,
              ),
            },
            Boolean(o && l) &&
              r.createElement(
                "a",
                { href: o, className: Zt().AppBannerLogoCtn },
                r.createElement("img", {
                  className: Zt().AppBannerLogo,
                  src: l,
                }),
              ),
            Boolean(l && !o) &&
              r.createElement(
                "div",
                { className: Zt().AppBannerLogoCtn },
                r.createElement("img", {
                  className: Zt().AppBannerLogo,
                  src: l,
                }),
              ),
            r.createElement(
              "div",
              { className: Zt().SimpleTitleCtn },
              r.createElement(
                "div",
                { className: Zt().Title },
                t.startsWith("#") ? (0, N.we)(t) : t,
              ),
              n &&
                r.createElement(
                  "div",
                  { className: Zt().Subtitle },
                  n.startsWith("#") ? (0, N.we)(n) : n,
                ),
            ),
          ),
        );
      };
      function en(e) {
        const t = (0, j.d)(e);
        return (
          (0, le.w)(!!t, "Must define collection " + e),
          {
            collection: e,
            smallHeight: Number(Zt().simpleTitleSmallHeight),
            largeHeight: Number(Zt().simpleTitleLargeHeight),
            component: (e, n, a) =>
              r.createElement($t, {
                largeHeader: e,
                titleToken: t.strHeaderTitle,
                subtitleToken: t.strHeaderSubtitle,
                headerImg: n,
                headerURL: a,
              }),
          }
        );
      }
      let tn = null;
      function nn() {
        return (
          tn ||
            ((tn = new Array()),
            tn.push(en(j.g.Press)),
            tn.push(en(j.g.Halloween))),
          tn
        );
      }
      var an,
        rn = n(43568),
        ln = n(25738),
        on = n.n(ln);
      let sn = class extends r.Component {
        render() {
          const {
            rgCalendarItems: e,
            bSuppressHoverEffects: t,
            strMultipleSourceTitle: n,
          } = this.props;
          if (!e || 0 == e.length) return null;
          const a = e[0];
          if (!e.every((e) => e.appid === a.appid && e.clanid === a.clanid))
            return n
              ? r.createElement(
                  "div",
                  { className: on().EventTileCarouselTitleContainer },
                  r.createElement(
                    "div",
                    { className: on().EventTileCarouselTextTitle },
                    n,
                  ),
                )
              : null;
          const l = Boolean(0 === a.appid && A.iA.accountid);
          return r.createElement(
            "div",
            { className: on().EventTileCarouselTitleContainer },
            r.createElement(
              "div",
              { className: on().EventTileCarouselTitle },
              r.createElement(Nn, {
                calendarItem: a,
                bSuppressHoverEffects: t,
              }),
            ),
            l &&
              r.createElement(
                "div",
                { className: on().EventTileCarouselFollow },
                r.createElement(Se.of, { clanAccountID: a.clanid }),
              ),
          );
        }
      };
      sn = (0, x.Cg)([m.PA], sn);
      let cn = (an = class extends r.Component {
        state = {
          bScreenIsWide: an.IsWideScreen(),
          nMaxCapsulesPerRow: this.GetMaxCapsulesPerRow(),
        };
        componentDidMount() {
          window.addEventListener("resize", this.OnResize);
        }
        componentWillUnmount() {
          window.removeEventListener("resize", this.OnResize);
        }
        static IsWideScreen() {
          return window.innerWidth >= 910;
        }
        GetMaxCapsulesPerRow() {
          return an.IsWideScreen() ? 3 : window.innerWidth > 700 ? 2 : 1;
        }
        OnResize() {
          this.setState({
            bScreenIsWide: an.IsWideScreen(),
            nMaxCapsulesPerRow: this.GetMaxCapsulesPerRow(),
          });
        }
        render() {
          const {
            rgCalendarItems: e,
            fnOnEventClick: t,
            bSuppressHoverEffects: n,
            bHideGameTitle: a,
            strMultipleSourceTitle: l,
          } = this.props;
          if (!e || 0 == e.length) return null;
          const o = e.map((l) =>
            r.createElement(xt, {
              key: "ht-" + l.unique_id,
              calendarEvent: l,
              partnerEventStore: Z.O3,
              fnOnClicked: t,
              bSuppressHoverEffects: n,
              mode: e.length > 1 ? "carousel" : "wide",
              bHideGameTitle: a,
            }),
          );
          return r.createElement(
            "div",
            { className: on().CalendarRow },
            r.createElement(sn, {
              rgCalendarItems: e,
              bSuppressHoverEffects: n,
              strMultipleSourceTitle: l,
            }),
            r.createElement(
              "div",
              {
                className: (0, T.A)(
                  on().EventTileCarousel,
                  "EventTileCarouselCtn",
                ),
              },
              r.createElement(
                rn.F,
                {
                  hideArrows: !0,
                  visibleElements: Math.min(
                    this.state.nMaxCapsulesPerRow,
                    this.props.rgCalendarItems.length,
                  ),
                  className: on().HorizontalTiles,
                  useTestScrollbar: !0,
                  bLazyRenderChildren: !0,
                  disableEdgeWrap: !0,
                  screenIsWide: this.state.bScreenIsWide,
                },
                o,
              ),
            ),
          );
        }
      });
      (0, x.Cg)([se.oI], cn.prototype, "OnResize", null),
        (cn = an = (0, x.Cg)([m.PA], cn));
      var mn = n(29342),
        un = n.n(mn);
      const dn = (e) => {
          let t = new Array();
          return (
            A.TS.SUPPORTED_LANGUAGES?.length
              ? (t = A.TS.SUPPORTED_LANGUAGES.map((e) => e.localizedName))
              : t.push((0, N.we)("#Language_" + A.TS.LANGUAGE)),
            r.createElement(
              "div",
              { className: un().LanguageList },
              t.join(", "),
            )
          );
        },
        pn = (e) => {
          const t = "SteamNewsHub_LanguageDismissed",
            [n, a] = r.useState(
              (() => {
                const e = JSON.parse(localStorage.getItem(t));
                return e && e.bDismissed;
              })(),
            );
          if (n) return null;
          if ((0, A.Y2)()) return null;
          const l = A.TS.STORE_BASE_URL + "account/languagepreferences/";
          return r.createElement(
            "div",
            { className: un().LanguageFeedNoteBucket },
            r.createElement(
              "div",
              { className: un().LanguageFeedNoteCtn },
              r.createElement(
                "div",
                {
                  className: un().DismissButton,
                  onClick: () => {
                    a(!0),
                      localStorage.setItem(
                        t,
                        JSON.stringify({ bDismissed: !0 }),
                      );
                  },
                },
                r.createElement(ne.i6V, null),
              ),
              r.createElement(
                "div",
                { className: un().BodyFlow },
                r.createElement(
                  "div",
                  { className: un().LeftColumn },
                  r.createElement(ne.vCk, null),
                ),
                r.createElement(
                  "div",
                  { className: un().RightColumn },
                  r.createElement(
                    "div",
                    { className: un().Title },
                    (0, N.we)("#EventCalendar_NewsLanguage_Title"),
                  ),
                  r.createElement(dn, null),
                  r.createElement(
                    "div",
                    { className: un().Text },
                    (0, N.PP)(
                      "#EventCalendar_NewsLanguage_Text",
                      r.createElement(
                        "a",
                        { href: l },
                        (0, N.we)(
                          "#EventCalendar_NewsLanguage_TextInHyperlink",
                        ),
                      ),
                    ),
                  ),
                ),
              ),
            ),
          );
        };
      var gn,
        hn,
        En = n(82477);
      const vn = "global_header";
      function _n() {
        const e = document.getElementById(vn);
        if (e && "none" != getComputedStyle(e).display) return e;
        const t = document.getElementsByClassName("responsive_header");
        if (
          ((0, le.w)(t.length <= 1, "Must have at most one responsive_header"),
          1 == t.length)
        ) {
          return t[0];
        }
        return null;
      }
      function Cn() {
        const e = _n();
        return (e && e.id != vn) || A.TS.IN_MOBILE_WEBVIEW;
      }
      function Sn() {
        return (
          Cn() ||
          window.innerWidth <
            parseInt(ke().strDesktopControlBarWidth) +
              parseInt(ke().strMaxMobileWidth)
        );
      }
      let bn = class extends r.Component {
        static {
          gn = this;
        }
        state = {
          bUserIsLoggedIn: A.iA.logged_in,
          nVisibleHeight: 0,
          nScrollTop: 0,
          bControlBarIsCollapsed: Sn(),
          bControlBarWasOpenedByUser: !1,
          nDisappearingHeaderTop: 0,
          nSteamNavHeaderHeight: 0,
          nMobileNavBannerHeight: 0,
          nHubBannerHeight: 0,
          nGroupHeaderHeight: 0,
          nLogInBannerHeight: 0,
          nAccumScrollUp: 0,
          nAccumScrollDown: 0,
        };
        m_refControlBar = r.createRef();
        m_cancelSignal = c().CancelToken.source();
        componentDidMount() {
          this.InitEventCalendarStore(),
            this.UpdateDocumentUI(),
            window.addEventListener("resize", this.OnResize),
            window.addEventListener("scroll", this.OnScroll),
            this.setState({ nVisibleHeight: window.innerHeight }),
            window.scrollTo(0, 0),
            this.UpdateEventControlLocationAndVisibility(),
            A.TS.IN_MOBILE_WEBVIEW &&
              this.props.location &&
              0 == this.props.history.length &&
              this.props.history.push(this.props.location);
        }
        componentDidUpdate(e, t) {
          (t.bUserIsLoggedIn == this.state.bUserIsLoggedIn &&
            JSON.stringify(e.filter_to_appids) ==
              JSON.stringify(this.props.filter_to_appids) &&
            JSON.stringify(e.filter_to_clanids) ==
              JSON.stringify(this.props.filter_to_clanids) &&
            e.filter_to_collection === this.props.filter_to_collection &&
            e.filter_to_saleid === this.props.filter_to_saleid &&
            e.filter_to_contenthub_hubtype ===
              this.props.filter_to_contenthub_hubtype &&
            e.filter_to_contenthub_category_or_language ===
              this.props.filter_to_contenthub_category_or_language &&
            e.filter_to_contenthub_tag_name ===
              this.props.filter_to_contenthub_tag_name &&
            e.section_by_day === this.props.section_by_day) ||
            (window.scrollTo(0, 0), this.InitEventCalendarStore()),
            this.UpdateDocumentUI(),
            this.LoadEventToShowAsModal(),
            this.UpdateEventControlLocationAndVisibility();
        }
        UpdateEventControlLocationAndVisibility() {
          if (this.props.location) {
            const e = qe
              .Get()
              .UpdateLocation(() => this.props.history, this.props.location);
            (("desktop_navigation" != e && this.state.bControlBarIsCollapsed) ||
              ("desktop_navigation" == e &&
                !this.state.bControlBarIsCollapsed &&
                Cn())) &&
              this.ToggleControlBarCollapsed();
          }
        }
        componentWillUnmount() {
          this.m_cancelSignal.cancel("component unmounted"),
            window.removeEventListener("resize", this.OnResize),
            window.removeEventListener("scroll", this.OnScroll),
            this.UpdateBodyScrollState(!0);
          const e = _n();
          e && (e.style.transform = "");
        }
        GetCurrentHubBannerHeight(e) {
          const t = e && !(0, yt.c)();
          return (0, K.v0)().GetCollectionID()
            ? (function (e, t) {
                if (!e) return 0;
                const n = nn().find((t) => t.collection === e);
                return n ? (t ? n.largeHeight : n.smallHeight) : 0;
              })((0, K.v0)().GetCollectionID(), t)
            : (0, K.v0)().BIsSaleCalendar()
              ? ((n = (0, K.v0)().GetSaleID()),
                (a = t),
                n && Z.O3.GetClanEventModel(n)
                  ? Number(
                      a
                        ? Zt().simpleTitleLargeHeight
                        : Zt().simpleTitleSmallHeight,
                    )
                  : 0)
              : (0, K.v0)().BIsSingleSourceCalendar()
                ? parseInt(
                    t
                      ? ke().strJumboHubBannerHeight
                      : ke().strDesktopHubBannerHeight,
                  ) - 1
                : 0;
          var n, a;
        }
        BShowLogInBanner() {
          return Boolean(
            !this.state.bUserIsLoggedIn && (0, K.v0)().BIsGlobalCalendar(),
          );
        }
        GetCurrentHeaderHeights(e) {
          const t = Cn(),
            n = (0, yt.c)();
          let a = 0;
          _n() &&
            ((a = parseInt(
              t
                ? ke().strMobileGlobalHeaderHeight
                : ke().strDesktopGlobalHeaderHeight,
            )),
            (a -= 1));
          const r =
              parseInt(
                n
                  ? ke().strMobileGroupHeaderHeight
                  : ke().strDesktopGroupHeaderHeight,
              ) - 1,
            l = (t ? parseInt(ke().strMobileNavBannerHeight) : 0) - 1,
            o = this.GetCurrentHubBannerHeight(e);
          let s = 0;
          return (
            this.BShowLogInBanner() &&
              (s =
                e && !n
                  ? parseInt(ke().strLogInBannerLargeHeight)
                  : parseInt(ke().strLogInBannerSmallHeight)),
            {
              nSteamNavHeaderHeight: a,
              nMobileNavBannerHeight: l,
              nHubBannerHeight: o,
              nGroupHeaderHeight: r,
              nLogInBannerHeight: s,
            }
          );
        }
        async LoadEventToShowAsModal() {
          const e = (0, s.f3)(this.props.location, "megaphone");
          if (!!e && "0" !== e && "false" !== e) {
            (0, s.le)(this.props.history, "megaphone", null);
            const e = { exclude_tags: ["patchnotes", "skip_megaphone"] },
              t = await Z.O3.LoadAdjacentPartnerEvents(
                null,
                null,
                q.DU,
                0,
                1,
                e,
              );
            if (1 == t?.length) {
              const e = t[0];
              (0, s.iV)(this.props.history, {
                emclan: e.clanSteamID.ConvertTo64BitString(),
                emgid: e.GID,
              });
            } else
              console.error("Could not find the most recent Steam Blog post.");
          }
          const t = (0, s.f3)(this.props.location, "clientpatchnotes");
          if (!!t && "0" !== t && "false" !== t) {
            (0, s.le)(this.props.history, "clientpatchnotes", null);
            const [e, n] = "beta" === t ? [null, q.Ro] : [q.DU, null],
              a = { require_tags: ["patchnotes"] },
              r = await Z.O3.LoadAdjacentPartnerEvents(
                null,
                o.b.InitFromClanID(n),
                e,
                0,
                1,
                a,
              );
            if (1 == r?.length) {
              const e = r[0];
              (0, s.iV)(this.props.history, {
                emclan: e.clanSteamID.ConvertTo64BitString(),
                emgid: e.GID,
              });
            } else
              console.error(
                "Could not find the most recent Steam client patch notes.",
              );
          }
          const n = (0, s.f3)(this.props.location, "emclan"),
            a = (0, s.f3)(this.props.location, "emgid");
          if (n && a) {
            const e = new o.b(n);
            if (
              this.state.modalEvent &&
              this.state.modalEvent.clanSteamID.ConvertTo64BitString() ==
                e.ConvertTo64BitString() &&
              this.state.modalEvent.GID == a
            )
              return;
            const t = await Z.O3.LoadPartnerEventFromClanEventGIDAndClanSteamID(
              e,
              a,
              0,
            );
            this.setState({ modalEvent: t });
          } else this.state.modalEvent && this.setState({ modalEvent: null });
        }
        BShowFutureView() {
          const e = (0, s.f3)(this.props.location, "upcoming");
          return e && "false" != e;
        }
        BShowUpdatesOnly() {
          return !(
            !this.props.filter_to_appids ||
            1 != this.props.filter_to_appids.length ||
            "true" != (0, s.f3)(this.props.location, "updates")
          );
        }
        UpdateDocumentUI() {
          let e, t;
          const n = (0, K.v0)();
          if (n.BIsGlobalCalendar()) {
            const t = (0, j.d)(
              this.BShowFutureView() ? j.g.Upcoming : j.g.Default,
            );
            e = t?.strHeaderTitle ?? t?.strName;
          } else if (n.BIsSingleAppCalendar()) {
            const t = n.GetSingleAppID();
            e = D.A.Get().GetApp(t)?.GetName();
          } else if (n.BIsSingleGroupCalendar()) {
            const t = n.GetSingleGroupID(),
              a = t && p.ac.GetClanInfoByClanAccountID(t);
            e = a && a.group_name;
          } else if (n.BIsCollectionCalendar()) {
            const t = n.GetCollectionID(),
              a = (0, j.d)(t);
            e = a?.strHeaderTitle ?? a?.strName;
          } else if (n.BIsSaleCalendar()) {
            const a = Z.O3.GetClanEventModel(n.GetSaleID());
            if (a) {
              if (a.appid) e = D.A.Get().GetApp(a.appid)?.GetName();
              else {
                const t = a.clanSteamID?.GetAccountID(),
                  n = t && p.ac.GetClanInfoByClanAccountID(t);
                e = n && n.group_name;
              }
              t = a && a.GetNameWithFallback((0, u.sf)(A.TS.LANGUAGE));
            }
          }
          let a = (0, N.we)("#EventCalendar_TabTitle_Global");
          e &&
            (a = t
              ? (0, N.we)(
                  "#EventCalendar_TabTitle_GroupNameAndEventDetail",
                  e,
                  t,
                )
              : (0, N.we)("#EventCalendar_TabTitle_GroupHub", e)),
            document.title != a && (document.title = a),
            document.body.classList.contains("events_hub") ||
              document.body.classList.add("events_hub");
        }
        OnResize() {
          this.setState((e) => {
            const t = window.innerHeight,
              n = !e.bControlBarWasOpenedByUser && Sn(),
              a = this.GetCurrentHeaderHeights(this.state.nScrollTop <= 0);
            return (
              this.UpdateBodyScrollState(n),
              { nVisibleHeight: t, bControlBarIsCollapsed: n, ...a }
            );
          });
        }
        OnScroll() {
          const e = Math.round(window.scrollY);
          this.setState((t) => {
            const n = t.nScrollTop <= 0,
              a = e <= 0;
            let { nHubBannerHeight: r, nLogInBannerHeight: l } = t;
            if (n != a) {
              const e = this.GetCurrentHeaderHeights(a);
              (r = e.nHubBannerHeight), (l = e.nLogInBannerHeight);
            }
            const o = e - t.nScrollTop;
            let s = Math.max(0, t.nAccumScrollUp - o),
              i = Math.max(0, t.nAccumScrollDown + o),
              c = t.nDisappearingHeaderTop;
            let m = t.nDisappearingHeaderTop < 0;
            i > 80 && ((s = 0), (i = 0), (m = !0)),
              (s > 100 || a) && ((s = 0), (i = 0), (m = !1)),
              this.state.bControlBarIsCollapsed || (m = !1),
              t.modalEvent && (m = !0);
            const u = t.nSteamNavHeaderHeight + r + t.nMobileNavBannerHeight;
            if (((c = m ? -1 * u : 0), c !== t.nDisappearingHeaderTop)) {
              const e = _n();
              e && (e.style.transform = `translateY(${c}px)`);
            }
            return {
              nScrollTop: e,
              nAccumScrollUp: s,
              nAccumScrollDown: i,
              nDisappearingHeaderTop: c,
              nHubBannerHeight: r,
              nLogInBannerHeight: l,
            };
          });
        }
        static m_bInitialLoad = !0;
        async InitEventCalendarStore() {
          const e = {
              appids: this.props.filter_to_appids,
              clanaccountids: this.props.filter_to_clanids,
              collectionid: this.props.filter_to_collection,
              saleid: this.props.filter_to_saleid,
              hubtype: this.props.filter_to_contenthub_hubtype,
              category_or_language:
                this.props.filter_to_contenthub_category_or_language,
              tag_name: this.props.filter_to_contenthub_tag_name,
              bSectionByDay: this.props.section_by_day,
            },
            t = (0, K.Zr)(e, this.props.initialFilters),
            n = (0, K.v0)(),
            a =
              (Q.S.Get(),
              Boolean(this.state.bUserIsLoggedIn && A.iA.accountid)),
            r = n.BIsGlobalCalendar() && a ? "local" : "session",
            l = n.BIsGlobalCalendar() ? "U" + A.iA.accountid : t;
          n.m_visibilityStore.Init(
            a,
            this.BShowUpdatesOnly(),
            n.BIsShowingFeaturedFeed(),
            l,
            r,
          );
          const s = !n.BIsCollectionCalendar();
          if (
            (n.SetFilteredView(
              (e) => n.m_visibilityStore.BShouldDisplayEvent(e),
              s,
            ),
            gn.m_bInitialLoad)
          ) {
            const e = (0, A.Tc)("metadatainfo", "application_config");
            n.SetCollectionMetaData(n.ValidateCollectionMetadata(e) ? e : null);
          }
          const i =
            gn.m_bInitialLoad &&
            (0, A.Tc)("initialEvents", "application_config");
          i
            ? (await n.RegisterCalendarEventsAndModels(i),
              (gn.m_bInitialLoad = !1))
            : await n.RegisterCalendarEventsAndModels({ success: 1 }),
            n.BIsSingleSourceCalendar() &&
              (n.BIsSingleAppCalendar()
                ? D.A.Get().QueueAppRequest(n.GetSingleAppID(), {
                    include_assets: !0,
                    include_platforms: !0,
                    include_basic_info: !0,
                    include_release: !0,
                  })
                : p.ac.LoadClanInfoForClanSteamID(
                    o.b.InitFromClanID(n.GetSingleGroupID()),
                  )),
            this.OnResize();
        }
        UpdateBodyScrollState(e) {
          const t = !e && Cn(),
            n = document.body;
          n &&
            (t
              ? n.classList.add(ke().BodyNoScroll)
              : n.classList.remove(ke().BodyNoScroll));
        }
        MobileNavOpenSettings() {
          this.ToggleControlBarCollapsed(),
            this.m_refControlBar.current &&
              this.m_refControlBar.current.OpenFilterSettings(!0);
        }
        ToggleControlBarCollapsed() {
          this.setState((e) => {
            const t = !e.bControlBarIsCollapsed,
              n = e.bControlBarIsCollapsed,
              a = t ? e.nDisappearingHeaderTop : 0,
              r = _n();
            return (
              r && (r.style.transform = `translateY(${a}px)`),
              this.UpdateBodyScrollState(t),
              {
                bControlBarIsCollapsed: t,
                bControlBarWasOpenedByUser: n,
                nDisappearingHeaderTop: a,
              }
            );
          });
        }
        OnControlBarChange() {
          window.scrollTo(0, 0);
        }
        CloseEventModal() {
          const e = _n();
          e &&
            (e.style.transform = `translateY(${this.state.nDisappearingHeaderTop}px)`),
            "PUSH" === this.props.history.action
              ? this.props.history.goBack()
              : (0, s.ip)(this.props.history, {
                  emclan: void 0,
                  emgid: void 0,
                });
        }
        OnEventClicked(e) {
          X.KN.Get().RecordEventRead(e, 8);
          const t =
              this.state.nSteamNavHeaderHeight +
              this.state.nHubBannerHeight +
              this.state.nMobileNavBannerHeight,
            n = _n();
          if (
            (n && (n.style.transform = `translateY(${-1 * t}px)`),
            J.HD.bOpenEventLandingPage)
          ) {
            const t = (0, _.qT)(e, _.PH.k_eStoreView, "allowRelative");
            this.props.history.push(t);
          } else
            (0, s.ip)(this.props.history, {
              emclan: e.clanSteamID.ConvertTo64BitString(),
              emgid: e.GID,
            });
        }
        ToggleFutureView() {
          (0, s.Bm)(
            this.props.history,
            "upcoming",
            this.BShowFutureView() ? "false" : "true",
          );
        }
        ResetAllFilters() {
          (0, s.Bm)(this.props.history, "updates", void 0),
            (0, K.v0)().m_visibilityStore.InitDefaultCheckboxes(
              this.state.bUserIsLoggedIn,
              !1,
            );
        }
        render() {
          const e =
              this.state.nSteamNavHeaderHeight +
              this.state.nHubBannerHeight +
              this.state.nMobileNavBannerHeight +
              this.state.nLogInBannerHeight,
            t =
              this.state.nDisappearingHeaderTop +
              this.state.nSteamNavHeaderHeight,
            n = t + this.state.nMobileNavBannerHeight,
            a = n + this.state.nLogInBannerHeight,
            l = this.state.nVisibleHeight <= parseInt(ke().strMinMobileHeight),
            o = l
              ? 0
              : this.state.nDisappearingHeaderTop +
                this.state.nSteamNavHeaderHeight,
            s = l ? 0 : this.state.nDisappearingHeaderTop + e,
            i = (0, K.v0)().m_visibilityStore.BAreAnyEventsFiltered(
              this.state.bUserIsLoggedIn,
            )
              ? this.ResetAllFilters
              : null;
          return r.createElement(
            r.Fragment,
            null,
            r.createElement(
              "div",
              { className: ke().EventCalendarContainer },
              r.createElement(
                h.tH,
                null,
                this.state.modalEvent
                  ? r.createElement(v.N, {
                      appid: this.state.modalEvent.appid,
                      trackingLocation: 8,
                      announcementGID:
                        this.state.modalEvent.GetAnnouncementGID(),
                      partnerEventStore: Z.O3,
                      eventModel: this.state.modalEvent,
                      showAppHeader: !0,
                      closeModal: this.CloseEventModal,
                    })
                  : null,
              ),
              r.createElement(
                h.tH,
                null,
                r.createElement(et, {
                  ref: this.m_refControlBar,
                  bUserIsLoggedIn: this.state.bUserIsLoggedIn,
                  nDisappearingHeaderVisibleHeight: o,
                  bIsCollapsed: this.state.bControlBarIsCollapsed,
                  bShowUpcoming: this.BShowFutureView(),
                  bShouldIncludeLegalFooter: !Cn(),
                  fnToggleCollapsed: this.ToggleControlBarCollapsed,
                  fnOnFilterChange: this.OnControlBarChange,
                }),
              ),
              r.createElement(
                h.tH,
                null,
                r.createElement(
                  "div",
                  {
                    className: (0, T.A)(
                      ke().ReserveControlSpace,
                      !this.state.bControlBarIsCollapsed && ke().WideLeftGutter,
                    ),
                  },
                  r.createElement(
                    h.tH,
                    null,
                    this.state.nLogInBannerHeight > 0 &&
                      r.createElement(Bn, {
                        nTopOffset: n,
                        bLargeMode: this.state.nScrollTop <= 0 && !(0, yt.c)(),
                      }),
                  ),
                  r.createElement(
                    h.tH,
                    null,
                    this.state.nMobileNavBannerHeight > 0 &&
                      r.createElement(it, {
                        bIsUpcoming: this.BShowFutureView(),
                        nTopOffset: t,
                        fnToggleCollapsed: this.MobileNavOpenSettings,
                      }),
                    r.createElement(In, {
                      nTopOffset: a,
                      bLargeMode: this.state.nScrollTop <= 0 && !(0, yt.c)(),
                    }),
                  ),
                  r.createElement(
                    h.tH,
                    null,
                    r.createElement(wn, {
                      bShowFutureViewOnly: this.BShowFutureView(),
                      bShowUpdatesOnly: this.BShowUpdatesOnly(),
                      fnOnEventClick: this.OnEventClicked,
                      fnToggleSeeFuture: this.ToggleFutureView,
                      fnResetFilters: i,
                      nVisibleHeight: this.state.nVisibleHeight,
                      nScrollTop: this.state.nScrollTop,
                      nDisappearingHeaderVisibleHeight: s,
                      bUserIsLoggedIn: Boolean(
                        this.state.bUserIsLoggedIn && A.iA.accountid,
                      ),
                    }),
                  ),
                ),
              ),
            ),
          );
        }
      };
      (0, x.Cg)([se.oI], bn.prototype, "OnResize", null),
        (0, x.Cg)([se.oI], bn.prototype, "OnScroll", null),
        (0, x.Cg)([se.oI], bn.prototype, "MobileNavOpenSettings", null),
        (0, x.Cg)([se.oI], bn.prototype, "ToggleControlBarCollapsed", null),
        (0, x.Cg)([se.oI], bn.prototype, "OnControlBarChange", null),
        (0, x.Cg)([se.oI], bn.prototype, "CloseEventModal", null),
        (0, x.Cg)([se.oI], bn.prototype, "OnEventClicked", null),
        (0, x.Cg)([se.oI], bn.prototype, "ToggleFutureView", null),
        (0, x.Cg)([se.oI], bn.prototype, "ResetAllFilters", null),
        (bn = gn = (0, x.Cg)([m.PA], bn));
      const fn = (0, l.y)(bn);
      function In(e) {
        const t = (0, U.q3)(() => (0, K.v0)()),
          [n, a, l, s, i, c, m, d] = (0, U.q3)(() => [
            t.GetCollectionMetaData()?.clan_event_gid || void 0,
            t.GetCollectionID(),
            t.BHasCollectionMetaData(),
            t.BIsSaleCalendar(),
            t.GetSaleID(),
            t.BIsSingleSourceCalendar(),
            t.BIsSingleAppCalendar() ? t.GetSingleAppID() : void 0,
            t.BIsSingleGroupCalendar() ? t.GetSingleGroupID() : void 0,
          ]),
          [p, g] = r.useState(!1),
          h = (0, u.sf)(A.TS.LANGUAGE);
        if (
          (r.useEffect(() => {
            if (l && n && !Z.O3.GetClanEventModel(n)) {
              g(!0);
              (async () => {
                const e = t.GetCollectionMetaData(),
                  n = o.b.InitFromClanID(e.clanid);
                await Z.O3.LoadPartnerEventFromClanEventGIDAndClanSteamID(
                  n,
                  e.clan_event_gid,
                  0,
                ),
                  g(!1);
              })();
            }
          }, [t, l, n]),
          a)
        ) {
          let t, o;
          if (l && !p) {
            const e = Z.O3.GetClanEventModel(n);
            e &&
              ((t = e.GetImageURLWithFallback("capsule", h, Y.wI.capsule_main)),
              (o = e.GetSaleURL()));
          }
          const s = (function (e, t, n, a) {
            if (!e) return null;
            const r = nn().find((t) => t.collection === e);
            return r ? r.component(t, n, a) : null;
          })(a, e.bLargeMode, t, o);
          if (!s) return null;
          const i = (0, T.A)(ke().HubBanner, Vt().WideBanner);
          return r.createElement(
            "div",
            {
              style: { transform: `translateY(${e.nTopOffset}px)` },
              className: i,
            },
            s,
          );
        }
        if (s) {
          const t = (function (e, t) {
            if (!e) return null;
            let n = Z.O3.GetClanEventModel(e);
            if (!n) return null;
            let a = (0, u.sf)(A.TS.LANGUAGE);
            return r.createElement($t, {
              largeHeader: t,
              titleToken: n.GetNameWithFallback(a),
              subtitleToken: n.GetSubTitleWithSummaryFallback(a),
              headerImg: n.GetImageURLWithFallback(
                "capsule",
                a,
                Y.wI.capsule_main,
              ),
            });
          })(i, e.bLargeMode);
          if (!t) return null;
          const n = (0, T.A)(ke().HubBanner, Vt().WideBanner);
          return r.createElement(
            "div",
            {
              style: { transform: `translateY(${e.nTopOffset}px)` },
              className: n,
            },
            t,
          );
        }
        if (c) {
          const t = (0, T.A)(
            ke().HubBanner,
            Vt().WideBanner,
            e.bLargeMode && ke().LargeMode,
            e.bLargeMode && Vt().TallBanner,
          );
          return r.createElement(
            "div",
            {
              style: { transform: `translateY(${e.nTopOffset}px)` },
              className: t,
            },
            r.createElement(Wt.W, { appId: m, clanId: d, bShowRSSFeed: !0 }),
          );
        }
        return null;
      }
      let wn = class extends r.Component {
        GetCurrentSectionLayout() {
          let e = 0;
          return (0, K.v0)()
            .GetCalendarSections(this.props.bShowFutureViewOnly)
            .map((t) => {
              const n = Math.max(e, t.nTopOffset),
                a = n + t.nRenderedHeight;
              return (e = a), { section: t, nTopOfSection: n };
            });
        }
        GetMergeEventsType() {
          const e = (0, K.v0)(),
            t = e.GetCollectionID();
          return e.BIsSingleSourceCalendar() || t === j.g.Steam
            ? "none"
            : e.BIsShowingFeaturedFeed()
              ? "full"
              : t
                ? "samesource"
                : "full";
        }
        GetCuratorSuggestionSettings(e) {
          if (A.iA.accountid && J.HD.bIsCuratorsEnabled)
            if (e.BIsGlobalCalendar() && !this.props.bShowFutureViewOnly) {
              if (e.m_visibilityStore.BIsGameSourceAllowed(z.FD.k_ECurator))
                return {
                  nInlineOffset: 1e3,
                  bInlineDismissable: !0,
                  bShowAtEnd: !0,
                };
            } else if (e.GetCollectionID() === j.g.Press)
              return {
                nInlineOffset: 1e3,
                bInlineDismissable: !1,
                bShowAtEnd: !1,
              };
          return {
            nInlineOffset: void 0,
            bInlineDismissable: !1,
            bShowAtEnd: !1,
          };
        }
        render() {
          const e = (0, K.v0)(),
            {
              bShowFutureViewOnly: t,
              bShowUpdatesOnly: n,
              fnOnEventClick: a,
              fnToggleSeeFuture: l,
              fnResetFilters: o,
              nScrollTop: s,
              nDisappearingHeaderVisibleHeight: i,
            } = this.props,
            c = e.GetCalendarSections(t);
          if (0 == c.length) return null;
          const m = (0, yt.c)(),
            u = e.m_visibilityStore.BAreAllEventsHidden(),
            d = s;
          let p = !0;
          const g = this.GetCuratorSuggestionSettings(e);
          let h;
          const E = u
            ? []
            : this.GetCurrentSectionLayout().map(
                ({ section: e, nTopOfSection: n }, o) => {
                  const {
                      strId: s,
                      strSectionLabel: i,
                      rtSectionStart: c,
                      rtSectionEnd: u,
                      bIsFutureSection: E,
                      nRenderedHeight: v,
                    } = e,
                    _ = n < d,
                    C = (0, T.A)(ke().PastSection, p && ke().DarkerBackground);
                  v > 0 &&
                    ((p = !p),
                    void 0 !== g.nInlineOffset &&
                      n >= g.nInlineOffset &&
                      void 0 === h &&
                      (h = o));
                  const S = !t && E;
                  return r.createElement(
                    Pt.K,
                    {
                      key: s,
                      className: ke().LazyCalendarSectionCtn,
                      placeholderHeight: v,
                      rootMargin: "100% 0px 100% 0px",
                    },
                    r.createElement(An, {
                      bRenderStickyHeader: _,
                      strSectionLabel: i,
                      rtSectionStart: c,
                      rtSectionEnd: u,
                      strSectionClassname: C,
                      bUseHorizontalLayout: S,
                      fnOnSeeFutureClick: l,
                      bShowEarliestFirst: t || S,
                      section: e,
                      fnOnEventClick: a,
                      bSuppressHoverEffects: m,
                      strMergeEvents: this.GetMergeEventsType(),
                    }),
                  );
                },
              );
          void 0 !== h &&
            E.splice(
              h,
              0,
              r.createElement(Xt, {
                key: "CuratorSuggestions",
                bCanDismiss: g.bInlineDismissable,
              }),
            ),
            e.GetCollectionID() === j.g.Press &&
              E.splice(0, 0, r.createElement(pn, { key: "LanguageFeedRow" }));
          const v = c[0].rtSectionStart,
            _ = (0, K.v0)().GetCurrentlyLoadedEventCount(0, v),
            C = (0, K.v0)().GetCurrentlyLoadedEventCount(v);
          let S =
              _ &&
              (_.nCount
                ? "#EventCalendar_NoMorePastEvents"
                : "#EventCalendar_NoPastEvents"),
            b =
              o &&
              r.createElement(
                ae.he,
                {
                  key: "link-back",
                  toolTipContent: (0, N.we)("#EventCalendar_ResetFilters_ttip"),
                  className: (0, T.A)(ke().BackToThePast, ke().NoCount),
                  onClick: o,
                },
                (0, N.we)("#EventCalendar_ResetFiltersButton"),
              );
          u && this.props.fnResetFilters
            ? (S = "#EventCalendar_EmptyCalendar")
            : t
              ? ((S =
                  C &&
                  (C.nCount
                    ? "#EventCalendar_NoMoreFutureEvents"
                    : "#EventCalendar_NoFutureEvents")),
                (b =
                  _ &&
                  r.createElement(
                    "div",
                    {
                      key: "link-back",
                      className: ke().BackToThePast,
                      onClick: l,
                    },
                    (0, N.we)("#EventCalendar_PastEventsLink"),
                    r.createElement(
                      "span",
                      { className: ke().SeeAllCount },
                      _.nCount + (_.bIsComplete ? "" : "+"),
                    ),
                  )))
              : n &&
                (S =
                  _ &&
                  (_.nCount
                    ? "#EventCalendar_NoMorePastUpdates"
                    : "#EventCalendar_NoPastUpdates"));
          let f = null;
          return (
            (u || e.BHitEventHorizon(t ? "forward" : "backward")) &&
              (f = r.createElement(
                r.Fragment,
                null,
                r.createElement(
                  "div",
                  {
                    key: "no-more-events",
                    className: (0, T.A)(ke().EndOfRows, ke().CalendarRow),
                  },
                  r.createElement(
                    "div",
                    { className: ke().NoMoreRows },
                    " ",
                    (0, N.we)(S),
                    " ",
                  ),
                ),
                g.bShowAtEnd &&
                  r.createElement(Xt, {
                    key: "CuratorSuggestions",
                    bCanDismiss: !1,
                  }),
                b,
              )),
            r.createElement(
              "div",
              {
                className: ke().RowContainer,
                style: { transform: `translateY(${i - 1}px)` },
              },
              r.createElement(
                "div",
                { className: ke().Rows },
                n &&
                  r.createElement(
                    "div",
                    { className: ke().UpdatePageBanner },
                    (0, N.we)("#EventCalendar_UpdatesViewHeader"),
                  ),
                E,
                f,
              ),
            )
          );
        }
      };
      wn = (0, x.Cg)([m.PA], wn);
      let yn = class extends r.Component {
        render() {
          const e = this.props.rgCalendarItems[0].start_time,
            t = (0, K.v0)().GetCurrentlyLoadedEventCount(e);
          return this.props.rgCalendarItems.length <= 1
            ? null
            : r.createElement(
                "div",
                {
                  key: "see-all-link",
                  className: ke().MobileSeeAllink,
                  onClick: this.props.fnOnSeeFutureClick,
                },
                (0, N.we)("#EventCalendar_FutureEventsLink"),
                r.createElement(
                  "span",
                  { className: ke().SeeAllCount },
                  t.nCount + (t.bIsComplete ? "" : "+"),
                ),
              );
        }
      };
      yn = (0, x.Cg)([m.PA], yn);
      let Tn = class extends r.Component {
        render() {
          const {
            rgCalendarItems: e,
            fnOnEventClick: t,
            fnOnSeeFutureClick: n,
            bSuppressHoverEffects: a,
          } = this.props;
          return e && 0 != e.length
            ? r.createElement(
                "div",
                { className: ke().CalendarRow },
                r.createElement(
                  "div",
                  {
                    className: (0, T.A)(
                      ke().HorizontalTileContainer,
                      "HorizontalTileCtn",
                    ),
                  },
                  r.createElement(
                    "div",
                    { className: ke().HorizontalTiles },
                    e.map((n) =>
                      r.createElement(xt, {
                        key: "ht-" + n.unique_id,
                        calendarEvent: n,
                        partnerEventStore: Z.O3,
                        fnOnClicked: t,
                        bSuppressHoverEffects: a,
                        mode: e.length > 1 ? "upcoming" : "wide",
                        bHideGameTitle:
                          (0, K.v0)().BIsSingleSourceCalendar() &&
                          (0, K.v0)().BEventMatchCalendarSingleSource(n),
                      }),
                    ),
                  ),
                  r.createElement(yn, {
                    rgCalendarItems: e,
                    fnOnSeeFutureClick: n,
                  }),
                ),
              )
            : null;
        }
      };
      Tn = (0, x.Cg)([m.PA], Tn);
      const Nn = (0, m.PA)((e) => {
        const { calendarItem: t, bSuppressHoverEffects: n } = e,
          a = Z.O3.GetClanEventModel(t.unique_id);
        return a
          ? r.createElement(
              "div",
              { className: ke().EventListTitle },
              r.createElement(Lt, {
                eventModel: a,
                calendarEvent: t,
                bSuppressHoverEffects: n,
              }),
            )
          : null;
      });
      var Gn;
      !(function (e) {
        e[(e.eCurators = 1)] = "eCurators";
      })(Gn || (Gn = {}));
      let An = (hn = class extends r.Component {
        m_ref = r.createRef();
        rtSectionStart = void 0;
        rtSectionEnd = void 0;
        constructor(e) {
          super(e),
            (0, P.Gn)(this),
            (this.rtSectionStart = e.rtSectionStart),
            (this.rtSectionEnd = e.rtSectionEnd);
        }
        componentDidMount() {
          this.UpdatePositioning();
        }
        componentDidUpdate() {
          this.UpdatePositioning(),
            (this.rtSectionStart = this.props.rtSectionStart),
            (this.rtSectionEnd = this.props.rtSectionEnd);
        }
        UpdatePositioning() {
          this.m_ref.current &&
            (0, P.h5)(() => {
              const { section: e } = this.props,
                t = this.m_ref.current.getBoundingClientRect().height;
              e.nRenderedHeight != t && (e.nRenderedHeight = t);
              const n = this.m_ref.current.offsetTop;
              e.nTopOffset != n && (e.nTopOffset = n);
            });
        }
        get cachedCalendarItems() {
          return (0, K.v0)().GetCalendarItemsInTimeRange(
            (0, V.uP)(() => this.rtSectionStart),
            (0, V.uP)(() => this.rtSectionEnd),
          );
        }
        GetCarouselGroupTitle(e) {
          return e.BIsShowingFeaturedFeed()
            ? (0, N.we)("#EventCalendar_GroupTitle_FeaturedCurators")
            : e.BIsGlobalCalendar()
              ? (0, N.we)("#EventCalendar_GroupTitle_Curators")
              : "";
        }
        GenerateKeyFromItem(e, t) {
          return t.GetSource() & W.bK.k_eSteam || t.appid || "full" !== e
            ? t.clanid
            : Gn.eCurators;
        }
        static IsTimestampInRange(e, t, n) {
          return Boolean(e) && t < e && e <= n;
        }
        GetTimestampEvents(e) {
          const t = new Array();
          return t;
        }
        AddTimestampEventsInInterval(e, t, n, a) {
          for (const r of e)
            hn.IsTimestampInRange(r.rtTime, t, n) && a.push(r.component);
        }
        RenderEventList(e) {
          const {
              fnOnEventClick: t,
              bSuppressHoverEffects: n,
              strMergeEvents: a,
            } = this.props,
            l = (0, K.v0)();
          let o = null;
          if ("none" !== a) {
            o = new Map();
            for (const t of e) {
              const e = this.GenerateKeyFromItem(a, t),
                n = o.get(e);
              if (n) n.push(t);
              else {
                const n = new Array();
                n.push(t), o.set(e, n);
              }
            }
          }
          const s = new Array(),
            i = new Array(),
            c = "full" === a ? i : s,
            m = this.GetTimestampEvents(l);
          let u = this.props.bShowEarliestFirst
            ? this.props.rtSectionStart
            : this.props.rtSectionEnd;
          for (const i of e) {
            let e = s;
            if (o) {
              const s = this.GenerateKeyFromItem(a, i),
                m = o.get(s);
              if (!m) continue;
              if ((s === Gn.eCurators && (e = c), m.length >= 3)) {
                const a =
                    s === Gn.eCurators ? this.GetCarouselGroupTitle(l) : "",
                  c = !m.find((e) => e.clanid != i.clanid);
                m.sort((e, t) =>
                  t.score != e.score
                    ? t.score - e.score
                    : t.start_time - e.start_time,
                ),
                  e.push(
                    r.createElement(
                      "div",
                      {
                        key: i.unique_id,
                        className: ke().CalendarEventListRow,
                      },
                      r.createElement(
                        "div",
                        { className: ke().CalendarEventListContainer },
                        r.createElement(cn, {
                          key: i.unique_id,
                          rgCalendarItems: m,
                          bSuppressHoverEffects: n,
                          fnOnEventClick: t,
                          bHideGameTitle: c,
                          strMultipleSourceTitle: a,
                        }),
                      ),
                    ),
                  ),
                  o.delete(s);
                continue;
              }
            }
            e === s &&
              (this.AddTimestampEventsInInterval(
                m,
                Math.min(u, i.start_time),
                Math.max(u, i.start_time),
                s,
              ),
              (u = i.start_time)),
              e.push(
                r.createElement(
                  "div",
                  { key: i.unique_id, className: ke().CalendarRow },
                  r.createElement(xt, {
                    calendarEvent: i,
                    partnerEventStore: Z.O3,
                    mode: "wide",
                    fnOnClicked: t,
                    bSuppressHoverEffects: n,
                    bHideGameTitle:
                      l.BIsSingleSourceCalendar() &&
                      l.BEventMatchCalendarSingleSource(i),
                  }),
                ),
              );
          }
          return (
            this.props.bShowEarliestFirst
              ? this.AddTimestampEventsInInterval(
                  m,
                  u,
                  this.props.rtSectionEnd,
                  s,
                )
              : this.AddTimestampEventsInInterval(
                  m,
                  this.props.rtSectionStart,
                  u,
                  s,
                ),
            s.push(...i),
            s
          );
        }
        render() {
          const {
            bRenderStickyHeader: e,
            strSectionLabel: t,
            strSectionClassname: n,
            bUseHorizontalLayout: a,
            fnOnSeeFutureClick: l,
            bShowEarliestFirst: o,
            fnOnEventClick: s,
            bSuppressHoverEffects: i,
          } = this.props;
          let { rgCalendarItems: c, bIsComplete: m } = this.cachedCalendarItems;
          if (0 == c.length && m)
            return r.createElement("div", { ref: this.m_ref, className: n });
          c.length && o && (c = c.slice().reverse());
          let u = null;
          c.length > 0 &&
            (u = r.createElement(
              "div",
              {
                className: (0, T.A)(
                  ke().GroupHeader,
                  ke().CalendarRow,
                  e && ke().HeaderAtTop,
                ),
              },
              r.createElement(
                "div",
                { className: ke().GroupHeaderTitle },
                r.createElement("span", null, t),
                r.createElement("div", { className: ke().GroupHeaderLine }),
                a &&
                  c.length > 3 &&
                  r.createElement(
                    "div",
                    { className: ke().SeeAllLink, onClick: l },
                    (0, N.we)("#EventCalendar_FutureEventsLink"),
                    r.createElement(
                      "span",
                      { className: ke().SeeAllCount },
                      c.length + (m ? "" : "+"),
                    ),
                  ),
              ),
            ));
          let d = null;
          return (
            (!J.HD.bRequireAllEventsLoadedInTimeBlock ||
              m ||
              (a && c.length >= 3)) &&
              (d = a
                ? r.createElement(Tn, {
                    rgCalendarItems: c.slice(0, 3),
                    fnOnEventClick: s,
                    fnOnSeeFutureClick: l,
                    bSuppressHoverEffects: i,
                  })
                : this.RenderEventList(c)),
            r.createElement(
              "div",
              { ref: this.m_ref, className: n },
              u,
              d,
              !m &&
                !a &&
                r.createElement(kn, {
                  bShowEarliestFirst: this.props.bShowEarliestFirst,
                }),
            )
          );
        }
      });
      (0, x.Cg)([P.sH], An.prototype, "rtSectionStart", void 0),
        (0, x.Cg)([P.sH], An.prototype, "rtSectionEnd", void 0),
        (0, x.Cg)([P.EW], An.prototype, "cachedCalendarItems", null),
        (An = hn = (0, x.Cg)([m.PA], An));
      const kn = (e) => {
          const t = (0, K.v0)().GetTimeEdgeForDirection(
            e.bShowEarliestFirst ? "forward" : "backward",
            void 0,
          );
          return r.createElement(
            "div",
            { className: ke().Loading },
            r.createElement(y.t, { size: "xlarge", position: "center" }),
            t &&
              r.createElement(
                r.Fragment,
                null,
                r.createElement(
                  "div",
                  { className: ke().LoadingProgress },
                  (0, N.we)(
                    "#EventCalendar_LoadEventsProgress",
                    Number((0, K.v0)().GetNumEventsLoaded()).toLocaleString(),
                    (0, N.lQ)(t),
                  ),
                ),
                r.createElement(
                  "div",
                  { className: ke().AdjustFiltersText },
                  (0, N.we)("#EventCalendar_LoadEventsFilters"),
                ),
              ),
          );
        },
        Bn = (e) =>
          r.createElement(
            "div",
            {
              className: (0, T.A)(
                ke().LogInFeedRow,
                !e.bLargeMode && ke().LogInSmallMode,
              ),
              style: { transform: `translateY(${e.nTopOffset}px)` },
            },
            r.createElement(
              "div",
              { className: ke().PromptCtn },
              r.createElement(
                "div",
                { className: ke().LogInFeedTitle },
                (0, N.we)("#EventCalendar_SignIn_Title"),
              ),
              r.createElement(
                "button",
                { onClick: En.vg, className: ke().LogInButton },
                (0, N.we)("#Login_SignIn"),
              ),
              r.createElement(
                "div",
                { className: ke().LogInFeedText },
                (0, N.we)("#EventCalendar_SignIn_Text"),
              ),
            ),
          );
      var Ln = n(81881),
        Dn = n(80782);
      function Hn(e) {
        if ("steam" === e) {
          if ("beta" !== new URLSearchParams().get("branch"))
            return { rgHiddenClans: [q.Ro] };
        }
      }
      const Fn = (e) => {
        const [t] = (0, s.QD)("byday", !1),
          [n] = (0, s.QD)("upcoming", !1);
        return (0, Dn.vb)()
          ? r.createElement(
              Ln.d,
              { bSalePage: !0 },
              r.createElement(
                l.dO,
                null,
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.EventViewByApp(
                    ":appid(\\d+)",
                    ":event_gid(\\d+)",
                    ":vanity?",
                  ),
                  render: (e) =>
                    r.createElement(O, {
                      key: "detailview_" + e.match.params.event_gid,
                      ...e,
                      appid:
                        e.match.params.appid &&
                        Number.parseInt(e.match.params.appid),
                      event_gid: e.match.params.event_gid,
                      bInfiniteScroll: "inline" == e.match.params.viewtype,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.EventViewByGroup(
                    ":groupid(\\d+)",
                    ":event_gid(\\d+)",
                    ":vanity?",
                  ),
                  render: (e) =>
                    r.createElement(O, {
                      key: "detailview_" + e.match.params.event_gid,
                      ...e,
                      clansteamid: new o.b(e.match.params.groupid),
                      event_gid: e.match.params.event_gid,
                      bInfiniteScroll: "inline" == e.match.params.viewtype,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.OldAnnouncementViewByApp(
                    ":appid(\\d+)",
                    ":announcement_gid(\\d+)",
                    ":vanity?",
                  ),
                  render: (e) =>
                    r.createElement(O, {
                      key: "detailoldview_" + e.match.params.announcement_gid,
                      ...e,
                      appid:
                        e.match.params.appid &&
                        Number.parseInt(e.match.params.appid),
                      announcement_gid: e.match.params.announcement_gid,
                      bInfiniteScroll: "old_inline" == e.match.params.viewtype,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.OldAnnouncementViewByGroup(
                    ":groupid(\\d+)",
                    ":announcement_gid(\\d+)",
                    ":vanity?",
                  ),
                  render: (e) =>
                    r.createElement(O, {
                      key: "detailoldview_" + e.match.params.announcement_gid,
                      ...e,
                      clansteamid: new o.b(e.match.params.groupid),
                      announcement_gid: e.match.params.announcement_gid,
                      bInfiniteScroll: "old_inline" == e.match.params.viewtype,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.NewsHubApp(":appid(\\d+)", ":vanity?"),
                  render: (e) =>
                    r.createElement(fn, {
                      key: e.match.params.appid,
                      ...e,
                      filter_to_appids: [Number(e.match.params.appid)],
                      section_by_day: t,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.NewsHubGroup(":groupid(\\d+)", ":vanity?"),
                  render: (e) =>
                    r.createElement(fn, {
                      key: e.match.params.groupid,
                      ...e,
                      filter_to_clanids: [Number(e.match.params.groupid)],
                      section_by_day: t,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.NewsHubCollection(":collectionid", ":vanity?"),
                  render: (e) =>
                    r.createElement(fn, {
                      key: e.match.params.collectionid,
                      initialFilters: Hn(e.match.params.collectionid),
                      ...e,
                      filter_to_collection: e.match.params.collectionid,
                      section_by_day: t,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.NewsHubSale(":saleid", ":vanity?"),
                  render: (e) =>
                    r.createElement(fn, {
                      key: e.match.params.saleid,
                      ...e,
                      filter_to_saleid: e.match.params.saleid,
                      section_by_day: t || n,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.NewsHubContentHub(
                    ":hubtype",
                    ":category_or_language?",
                    ":tag_name?",
                  ),
                  render: (e) =>
                    r.createElement(fn, {
                      key:
                        e.match.params.hubtype +
                        "_" +
                        e.match.params.category_or_language +
                        "_" +
                        e.match.params.tag_name,
                      ...e,
                      filter_to_contenthub_hubtype: e.match.params.hubtype,
                      filter_to_contenthub_category_or_language:
                        e.match.params.category_or_language,
                      filter_to_contenthub_tag_name: e.match.params.tag_name,
                      section_by_day: t,
                    }),
                }),
                r.createElement(l.qh, {
                  exact: !0,
                  path: a.B.NewsHub(),
                  render: (e) =>
                    r.createElement(fn, {
                      key: "global",
                      ...e,
                      section_by_day: t,
                    }),
                }),
              ),
            )
          : null;
      };
    },
  },
]);
