/**** (c) Valve Corporation. Use is governed by the terms of the Steam Subscriber Agreement http://store.steampowered.com/subscriber_agreement/.
 ****/
var CLSTAMP = "9433597";
(() => {
  var e,
    t,
    n,
    i,
    o,
    r = {
      9437: (e, t, n) => {
        var i = {
          "./friendsui_arabic.json": [83784, 6518],
          "./friendsui_brazilian.json": [18522, 4154],
          "./friendsui_bulgarian.json": [96737, 6385],
          "./friendsui_czech.json": [60347, 7487],
          "./friendsui_danish.json": [78365, 4787],
          "./friendsui_dutch.json": [46350, 4302],
          "./friendsui_english.json": [30188, 3016],
          "./friendsui_finnish.json": [47487, 8759],
          "./friendsui_french.json": [25572, 8194],
          "./friendsui_german.json": [43898, 5480],
          "./friendsui_greek.json": [90192, 4488],
          "./friendsui_hungarian.json": [5365, 5341],
          "./friendsui_indonesian.json": [49588, 762],
          "./friendsui_italian.json": [68740, 3232],
          "./friendsui_japanese.json": [611, 3485],
          "./friendsui_koreana.json": [33731, 6971],
          "./friendsui_latam.json": [923, 1499],
          "./friendsui_norwegian.json": [80148, 4776],
          "./friendsui_polish.json": [92357, 6127],
          "./friendsui_portuguese.json": [77505, 3415],
          "./friendsui_romanian.json": [31807, 7861],
          "./friendsui_russian.json": [30757, 2945],
          "./friendsui_sc_schinese.json": [69423, 43],
          "./friendsui_schinese.json": [5184, 9746],
          "./friendsui_spanish.json": [86700, 9808],
          "./friendsui_swedish.json": [41005, 6609],
          "./friendsui_tchinese.json": [50195, 8766],
          "./friendsui_thai.json": [47194, 6888],
          "./friendsui_turkish.json": [37468, 3e3],
          "./friendsui_ukrainian.json": [6922, 4434],
          "./friendsui_vietnamese.json": [53179, 3789],
        };
        function o(e) {
          if (!n.o(i, e))
            return Promise.resolve().then(() => {
              var t = new Error("Cannot find module '" + e + "'");
              throw ((t.code = "MODULE_NOT_FOUND"), t);
            });
          var t = i[e],
            o = t[0];
          return n.e(t[1]).then(() => n.t(o, 19));
        }
        (o.keys = () => Object.keys(i)), (o.id = 9437), (e.exports = o);
      },
      48516: (e, t, n) => {
        var i = {
          "./friendsui_arabic.json": [83784, 6518],
          "./friendsui_brazilian.json": [18522, 4154],
          "./friendsui_bulgarian.json": [96737, 6385],
          "./friendsui_czech.json": [60347, 7487],
          "./friendsui_danish.json": [78365, 4787],
          "./friendsui_dutch.json": [46350, 4302],
          "./friendsui_english.json": [30188, 3016],
          "./friendsui_finnish.json": [47487, 8759],
          "./friendsui_french.json": [25572, 8194],
          "./friendsui_german.json": [43898, 5480],
          "./friendsui_greek.json": [90192, 4488],
          "./friendsui_hungarian.json": [5365, 5341],
          "./friendsui_indonesian.json": [49588, 762],
          "./friendsui_italian.json": [68740, 3232],
          "./friendsui_japanese.json": [611, 3485],
          "./friendsui_koreana.json": [33731, 6971],
          "./friendsui_latam.json": [923, 1499],
          "./friendsui_norwegian.json": [80148, 4776],
          "./friendsui_polish.json": [92357, 6127],
          "./friendsui_portuguese.json": [77505, 3415],
          "./friendsui_romanian.json": [31807, 7861],
          "./friendsui_russian.json": [30757, 2945],
          "./friendsui_sc_schinese.json": [69423, 43],
          "./friendsui_schinese.json": [5184, 9746],
          "./friendsui_spanish.json": [86700, 9808],
          "./friendsui_swedish.json": [41005, 6609],
          "./friendsui_tchinese.json": [50195, 8766],
          "./friendsui_thai.json": [47194, 6888],
          "./friendsui_turkish.json": [37468, 3e3],
          "./friendsui_ukrainian.json": [6922, 4434],
          "./friendsui_vietnamese.json": [53179, 3789],
        };
        function o(e) {
          if (!n.o(i, e))
            return Promise.resolve().then(() => {
              var t = new Error("Cannot find module '" + e + "'");
              throw ((t.code = "MODULE_NOT_FOUND"), t);
            });
          var t = i[e],
            o = t[0];
          return n.e(t[1]).then(() => n.t(o, 19));
        }
        (o.keys = () => Object.keys(i)), (o.id = 48516), (e.exports = o);
      },
      65070: (e) => {
        e.exports = { "duration-app-launch": "800ms" };
      },
      70757: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          ChatMessageSteamStore_Failed:
            "bbcode_ChatMessageSteamStore_Failed_POkia",
          ChatMessageSteamStore: "bbcode_ChatMessageSteamStore_tdVvE",
          ChatMessagesSteamStore_FilteredContent:
            "bbcode_ChatMessagesSteamStore_FilteredContent_3D-qb",
          TinyContent: "bbcode_TinyContent_2nHeA",
          ChatMessageSteamStore_HeaderImage:
            "bbcode_ChatMessageSteamStore_HeaderImage_2TxYr",
          Blurred: "bbcode_Blurred_1PTbG",
          SmallContent: "bbcode_SmallContent_1jJqS",
          MediumContent: "bbcode_MediumContent_qWPvC",
          ChatMessageSteamStore_GameDetails:
            "bbcode_ChatMessageSteamStore_GameDetails_2lHQv",
          ChatMessageSteamStore_MediaContainer:
            "bbcode_ChatMessageSteamStore_MediaContainer_E2ikP",
          ChatMessageSteamStore_MainMedia:
            "bbcode_ChatMessageSteamStore_MainMedia_3N2Lb",
          senderName: "bbcode_senderName_vnEqe",
          URLSent: "bbcode_URLSent_3emIc",
          SteamURL: "bbcode_SteamURL_l55fo",
          ChatMessageSteamStore_Name: "bbcode_ChatMessageSteamStore_Name_ihXhe",
          ChatMessageSteamStore_GameNameAndIcon:
            "bbcode_ChatMessageSteamStore_GameNameAndIcon_4GpSr",
          ChatMessageSteamStore_Header:
            "bbcode_ChatMessageSteamStore_Header_2KIJQ",
          ChatMessageSteamStore_HeaderImageFiltered:
            "bbcode_ChatMessageSteamStore_HeaderImageFiltered_3mT9j",
          ChatMessageSteamStore_Description:
            "bbcode_ChatMessageSteamStore_Description_2-RDz",
          ChatMessageSteamStore_FilteredDescription:
            "bbcode_ChatMessageSteamStore_FilteredDescription_2ck_R",
          ChatMessageSteamStore_GameIcon:
            "bbcode_ChatMessageSteamStore_GameIcon_1F9xl",
          ChatMessageSteamStore_Body: "bbcode_ChatMessageSteamStore_Body_2VE1v",
          ChatMessageSteamStore_DetailsContainer:
            "bbcode_ChatMessageSteamStore_DetailsContainer_3gcwY",
          ChatMessageSteamStore_VideoThumbnail:
            "bbcode_ChatMessageSteamStore_VideoThumbnail_3I1zl",
          ChatMessageSteamStore_ThumbnailsContainer:
            "bbcode_ChatMessageSteamStore_ThumbnailsContainer_34Rxn",
          ChatMessageSteamStore_Screenshot:
            "bbcode_ChatMessageSteamStore_Screenshot_3qmZW",
          ChatMessageSteamStore_ScreenshotThumbnail:
            "bbcode_ChatMessageSteamStore_ScreenshotThumbnail_2dT1V",
          videoPlaying: "bbcode_videoPlaying_RHKEP",
          ChatMessageSteamStore_VideoPlayButton:
            "bbcode_ChatMessageSteamStore_VideoPlayButton_hvkD1",
          ChatMessageSteamStore_VideoLargeContainer:
            "bbcode_ChatMessageSteamStore_VideoLargeContainer_1WCdP",
          ChatMessageSteamStore_VideoLarge:
            "bbcode_ChatMessageSteamStore_VideoLarge_-Ge8B",
          ChatMessageSteamStore_Footer:
            "bbcode_ChatMessageSteamStore_Footer_EuKJj",
          ChatMessageSteamStore_PricingContainer:
            "bbcode_ChatMessageSteamStore_PricingContainer_23NxJ",
          ChatMessageSteamStore_Pricing:
            "bbcode_ChatMessageSteamStore_Pricing_3qTYl",
          ChatMessageSteamStore_Pricing_Discount:
            "bbcode_ChatMessageSteamStore_Pricing_Discount_2u76T",
          ChatMessageSteamStore_Pricing_FinalContainer:
            "bbcode_ChatMessageSteamStore_Pricing_FinalContainer_1ZFsy",
          ChatMessageSteamStore_Pricing_Final:
            "bbcode_ChatMessageSteamStore_Pricing_Final_1Nn_P",
          hasDiscount: "bbcode_hasDiscount_t5udJ",
          ChatMessageSteamStore_Pricing_Initial:
            "bbcode_ChatMessageSteamStore_Pricing_Initial_2jXsq",
          ChatMessageSteamStore_ViewStore:
            "bbcode_ChatMessageSteamStore_ViewStore_2SBI6",
          ChatMessageSteamStore_Free: "bbcode_ChatMessageSteamStore_Free_rJaoz",
          ChatMessageSteamStore_CopyURL:
            "bbcode_ChatMessageSteamStore_CopyURL_FLbi2",
          ChatMessageTweet: "bbcode_ChatMessageTweet_xuMZ3",
          ChatMessageTweet_Header: "bbcode_ChatMessageTweet_Header_38ujm",
          ChatMessageTweet_ProfileImage:
            "bbcode_ChatMessageTweet_ProfileImage_zx9vf",
          ChatMessageTweet_NameSection:
            "bbcode_ChatMessageTweet_NameSection_-lb62",
          ChatMessageTweet_NameGroup: "bbcode_ChatMessageTweet_NameGroup_pjf4e",
          ChatMessageTweet_Name: "bbcode_ChatMessageTweet_Name_1lQ98",
          ChatMessageTweet_Logo: "bbcode_ChatMessageTweet_Logo_3WqG0",
          ChatMessageTweet_Verified: "bbcode_ChatMessageTweet_Verified_2gPBN",
          ChatMessageTweet_ScreenName:
            "bbcode_ChatMessageTweet_ScreenName_3VjS6",
          ChatMessageTweet_Body: "bbcode_ChatMessageTweet_Body_1RFo5",
          ChatMessageTweet_Footer: "bbcode_ChatMessageTweet_Footer_35Jlr",
          ChatMessageTweet_Created: "bbcode_ChatMessageTweet_Created_shGvL",
          numberCounterContainer: "bbcode_numberCounterContainer_C4Hz0",
          numberColumn: "bbcode_numberColumn_2enY9",
          randomNumberLabel: "bbcode_randomNumberLabel_2-fsM",
          randomActual: "bbcode_randomActual_1EGTO",
          randomNumberShadow: "bbcode_randomNumberShadow_19_KK",
          startingZero: "bbcode_startingZero_1kHyX",
          randomMsg: "bbcode_randomMsg_13nuz",
          MsgAnimating: "bbcode_MsgAnimating_1yiaq",
          none: "bbcode_none_3CUw2",
          randomValues: "bbcode_randomValues_4j8MC",
          coinLabel: "bbcode_coinLabel_dj-Tq",
          CoinModel: "bbcode_CoinModel_1YPnK",
          flipCoinContainer: "bbcode_flipCoinContainer_3piF5",
          coinFade: "bbcode_coinFade_3vnZn",
          flipCoinAndResult: "bbcode_flipCoinAndResult_1Cjb-",
          coin: "bbcode_coin_1NRdX",
          front: "bbcode_front_M-4A0",
          back: "bbcode_back_VjaUk",
          coinFlipBottom: "bbcode_coinFlipBottom_2QVOk",
          coinFlipTop: "bbcode_coinFlipTop_YyWbD",
          front_b: "bbcode_front_b_J0ttd",
          back_b: "bbcode_back_b_2iPGJ",
          mid: "bbcode_mid_1nWDG",
          coinFace: "bbcode_coinFace_1abwJ",
          flipCoinWinningSide: "bbcode_flipCoinWinningSide_1Akyv",
          flipCoinLosingSide: "bbcode_flipCoinLosingSide_3Bl0q",
          coinFlip: "bbcode_coinFlip_1Jv6_",
          resultLabel: "bbcode_resultLabel_1E5Fs",
          coinFlipResult: "bbcode_coinFlipResult_19V-m",
          plusOne: "bbcode_plusOne_1QO4I",
          ImageModalBackground: "bbcode_ImageModalBackground_1feGl",
          ImageModalContent: "bbcode_ImageModalContent_gDAHS",
          RoomEffectContainer: "bbcode_RoomEffectContainer_1JKUF",
          RoomEffectIcon: "bbcode_RoomEffectIcon_3uKYi",
          AssociatedAppContainer: "bbcode_AssociatedAppContainer_3TbqB",
          AssociatedApp: "bbcode_AssociatedApp_cjQYf",
          Image: "bbcode_Image_2kzXM",
          Name: "bbcode_Name_1CWNZ",
          randomNumbers: "bbcode_randomNumbers_1n1A9",
          randomNumbers0: "bbcode_randomNumbers0_3QS0S",
          randomNumbers1: "bbcode_randomNumbers1_3jFyW",
          randomNumbers2: "bbcode_randomNumbers2_20O32",
          randomNumbers3: "bbcode_randomNumbers3_zIVdx",
          randomNumbers4: "bbcode_randomNumbers4_aYdH6",
          randomNumbers5: "bbcode_randomNumbers5_jPYa-",
          randomNumbers6: "bbcode_randomNumbers6_2pW0w",
          randomNumbers7: "bbcode_randomNumbers7_16G5k",
          randomNumbers8: "bbcode_randomNumbers8_3gDn5",
          randomNumbers9: "bbcode_randomNumbers9_1TE63",
          randomNumbers10: "bbcode_randomNumbers10_2WzZJ",
          randomNumbersZero: "bbcode_randomNumbersZero_1LaDI",
          coinSpin: "bbcode_coinSpin_2j-M3",
        };
      },
      30543: (e) => {
        e.exports = {
          InviteDropMessage: "invitedrop_InviteDropMessage_2f19f",
          InviteDropImage: "invitedrop_InviteDropImage_2r81X",
          InviteDropName: "invitedrop_InviteDropName_3jmXx",
          InviteDropContainer: "invitedrop_InviteDropContainer_zQt7M",
          InviteDropBackground: "invitedrop_InviteDropBackground_1JqA8",
          ChatModalCover: "invitedrop_ChatModalCover_tIAxX",
          appear: "invitedrop_appear_2qt74",
          enter: "invitedrop_enter_2uAVr",
          appearActive: "invitedrop_appearActive_38QQQ",
          enterActive: "invitedrop_enterActive_22bK-",
          exit: "invitedrop_exit_1G2Ph",
          exitActive: "invitedrop_exitActive_ccqOP",
        };
      },
      73744: (e) => {
        e.exports = {
          PreMessage: "messages_PreMessage_2M4GH",
          CodeMessage: "messages_CodeMessage_1E4OI",
          QuoteMessage: "messages_QuoteMessage_3-LVU",
        };
      },
      68628: (e) => {
        e.exports = {
          MessageReactions: "reactions_MessageReactions_2AYLk",
          OpenPickerButton: "reactions_OpenPickerButton_2q3fS",
          AddReactionIcon: "reactions_AddReactionIcon_ynET7",
          Plus: "reactions_Plus_1TuQz",
          MessageReaction: "reactions_MessageReaction_22B6h",
          EmoticonReaction: "reactions_EmoticonReaction_1NDA4",
          Large: "reactions_Large_1s0yZ",
          StickerReaction: "reactions_StickerReaction_2rRhc",
          ReactionCount: "reactions_ReactionCount_2-mTQ",
          ReactionHover: "reactions_ReactionHover_12Ox3",
          HoverDescription: "reactions_HoverDescription_3nUn3",
          ReactorName: "reactions_ReactorName_1epTJ",
          ReactionName: "reactions_ReactionName_2bwkm",
        };
      },
      11057: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth: "chatroom_DialogContent_InnerWidth_3GRWm",
          FriendPicker_Focus: "chatroom_FriendPicker_Focus_3qxoN",
          FriendRequestViewActive: "chatroom_FriendRequestViewActive_1o-7-",
          VoiceRequested: "chatroom_VoiceRequested_1ocVq",
          chatRoomGroupHeader: "chatroom_chatRoomGroupHeader_2t--s",
          YuleLog: "chatroom_YuleLog_2SldD",
          Watching: "chatroom_Watching_18OiO",
          VoiceChatQuickChatChannelOption:
            "chatroom_VoiceChatQuickChatChannelOption_sV-rY",
          ManageVoiceChannelsModal: "chatroom_ManageVoiceChannelsModal_1e0x4",
          ManageTextChannelsModal: "chatroom_ManageTextChannelsModal_3XLA3",
          ManageVoiceChannels: "chatroom_ManageVoiceChannels_ojO_e",
          AddVoiceChannelBtn: "chatroom_AddVoiceChannelBtn_1t6E6",
          "ItemFocusAnim-darkerGrey": "chatroom_ItemFocusAnim-darkerGrey_3R7Sv",
          ChannelStatusLabel: "chatroom_ChannelStatusLabel_3jAZQ",
          ChatRoomGroupControlsSteamDeck:
            "chatroom_ChatRoomGroupControlsSteamDeck_imObP",
          currentUserInVoiceChannel: "chatroom_currentUserInVoiceChannel_2TAg1",
          HasActiveVoiceRoom: "chatroom_HasActiveVoiceRoom_3leHQ",
          VoiceChannelCount: "chatroom_VoiceChannelCount_115TN",
          "ItemFocusAnim-darkGrey": "chatroom_ItemFocusAnim-darkGrey_1a6zU",
          "ItemFocusAnim-green": "chatroom_ItemFocusAnim-green_w6bcQ",
          RightAlignedStats: "chatroom_RightAlignedStats_2sB5U",
          MemberCount: "chatroom_MemberCount_2wtcJ",
          InGame: "chatroom_InGame_32Voq",
          Total: "chatroom_Total_2Zymb",
          TextChannelCount: "chatroom_TextChannelCount_13NBA",
          ChatRoomGroupControlsFiller:
            "chatroom_ChatRoomGroupControlsFiller_1Op5Z",
          UnreadTextChannel: "chatroom_UnreadTextChannel_KiYpf",
          GroupMemberListDialog: "chatroom_GroupMemberListDialog_45AAE",
          ChatRoomVoiceInviteDialog: "chatroom_ChatRoomVoiceInviteDialog_3k-p6",
          FriendSearchInput: "chatroom_FriendSearchInput_2OcL1",
          InviteLists: "chatroom_InviteLists_29o-F",
          InviteList: "chatroom_InviteList_3KgQD",
          BackgroundAnimation: "chatroom_BackgroundAnimation_225-z",
          "ItemFocusAnim-darkerGrey-nocolor":
            "chatroom_ItemFocusAnim-darkerGrey-nocolor_2SpA2",
          "ItemFocusAnim-grey": "chatroom_ItemFocusAnim-grey_3b0vu",
          "ItemFocusAnim-translucent-white-10":
            "chatroom_ItemFocusAnim-translucent-white-10_3sQ7j",
          "ItemFocusAnim-translucent-white-20":
            "chatroom_ItemFocusAnim-translucent-white-20_j2b41",
          "ItemFocusAnimBorder-darkGrey":
            "chatroom_ItemFocusAnimBorder-darkGrey_1gy_j",
        };
      },
      33310: (e) => {
        e.exports = {
          ChatRoomContextNoPermission:
            "chatroommenu_ChatRoomContextNoPermission_w04cA",
          SVGIcon_Lock: "chatroommenu_SVGIcon_Lock_2GYOl",
          ChatroomContextMenuDisableableItem:
            "chatroommenu_ChatroomContextMenuDisableableItem_wxpoI",
          DisabledDescriptor: "chatroommenu_DisabledDescriptor_l2_77",
        };
      },
      58574: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth: "chattabs_DialogContent_InnerWidth_3SFdH",
          FriendPicker_Focus: "chattabs_FriendPicker_Focus_2TZpS",
          FriendRequestViewActive: "chattabs_FriendRequestViewActive_cWNMu",
          VoiceRequested: "chattabs_VoiceRequested_x4Xq_",
          chatRoomGroupHeader: "chattabs_chatRoomGroupHeader_33pi7",
          ChatTabTransitionGroup: "chattabs_ChatTabTransitionGroup_1GEzX",
          ChatTab: "chattabs_ChatTab_2Vrcp",
          Active: "chattabs_Active_Lrqoj",
          ChatTabTransition_Enter: "chattabs_ChatTabTransition_Enter_2GwaB",
          ChatTabTransition_EnterActive:
            "chattabs_ChatTabTransition_EnterActive_2DmAV",
          ChatTabTransition_Exit: "chattabs_ChatTabTransition_Exit_2aLc6",
          TabBounce: "chattabs_TabBounce_2PkSl",
          ChatTabTransition_ExitActive:
            "chattabs_ChatTabTransition_ExitActive_pfXry",
          VoiceStatusMessage: "chattabs_VoiceStatusMessage_2UhLP",
          VoiceActive: "chattabs_VoiceActive_33vMa",
          MicMuted: "chattabs_MicMuted_2Sn4b",
          MicStatus: "chattabs_MicStatus_30H7N",
          CloseButton: "chattabs_CloseButton_7gMwY",
          ChatTabRow: "chattabs_ChatTabRow_2TndF",
          ChatTabContent_Friend: "chattabs_ChatTabContent_Friend_2ZiZ7",
          IsNotFriendLabel: "chattabs_IsNotFriendLabel_2vv7a",
          ChatTabContent_ChatRoom: "chattabs_ChatTabContent_ChatRoom_3kJeo",
          ChatTabContent_ChatRoomName:
            "chattabs_ChatTabContent_ChatRoomName_1svcL",
          UnreadGlow: "chattabs_UnreadGlow_3oV47",
          UnreadCircle: "chattabs_UnreadCircle_52cn_",
          BackgroundAnimation: "chattabs_BackgroundAnimation_20GyX",
          "ItemFocusAnim-darkerGrey-nocolor":
            "chattabs_ItemFocusAnim-darkerGrey-nocolor_wLNQI",
          "ItemFocusAnim-darkerGrey": "chattabs_ItemFocusAnim-darkerGrey_hzsQQ",
          "ItemFocusAnim-darkGrey": "chattabs_ItemFocusAnim-darkGrey_1esdt",
          "ItemFocusAnim-grey": "chattabs_ItemFocusAnim-grey_ry028",
          "ItemFocusAnim-translucent-white-10":
            "chattabs_ItemFocusAnim-translucent-white-10_33vsA",
          "ItemFocusAnim-translucent-white-20":
            "chattabs_ItemFocusAnim-translucent-white-20_2nvh8",
          "ItemFocusAnimBorder-darkGrey":
            "chattabs_ItemFocusAnimBorder-darkGrey_1NFKR",
          "ItemFocusAnim-green": "chattabs_ItemFocusAnim-green_1-pOQ",
        };
      },
      86275: (e) => {
        e.exports = {
          General: "chatroomgroupsettings_General_8XwlG",
          Avatar: "chatroomgroupsettings_Avatar_2LpXh",
          AvatarAndUser: "chatroomgroupsettings_AvatarAndUser_24KH7",
          NoIconLabel: "chatroomgroupsettings_NoIconLabel_2ZLCb",
          ChannelsButtons: "chatroomgroupsettings_ChannelsButtons_oAUPW",
          Notification: "chatroomgroupsettings_Notification_3uem_",
          LeaveButton: "chatroomgroupsettings_LeaveButton_2qL15",
          PermissionsEdit: "chatroomgroupsettings_PermissionsEdit_18be2",
          Back: "chatroomgroupsettings_Back_15FJA",
          PermissionsGroup: "chatroomgroupsettings_PermissionsGroup_3-iw_",
          PermissionToggle: "chatroomgroupsettings_PermissionToggle_55say",
          PermissionsDescription:
            "chatroomgroupsettings_PermissionsDescription_3volV",
          RoleNameHeader: "chatroomgroupsettings_RoleNameHeader_33Yxs",
          FixedRoleName: "chatroomgroupsettings_FixedRoleName_2aLHy",
        };
      },
      78161: (e) => {
        e.exports = {
          scrollMaskVertical:
            "chatroomnotificationsettings_scrollMaskVertical_3tyz6",
        };
      },
      50643: (e) => {
        e.exports = {
          DialogTitle: "dialogs_DialogTitle_2dqzN",
          DialogContent: "dialogs_DialogContent_3yd-p",
        };
      },
      84512: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth:
            "pagedcontent_DialogContent_InnerWidth_3bR0Z",
          FriendPicker_Focus: "pagedcontent_FriendPicker_Focus_1SF7f",
          FriendRequestViewActive: "pagedcontent_FriendRequestViewActive_3R0N_",
          VoiceRequested: "pagedcontent_VoiceRequested_1DtjQ",
          chatRoomGroupHeader: "pagedcontent_chatRoomGroupHeader_7oNG5",
          Container: "pagedcontent_Container_3-t6T",
          Nav: "pagedcontent_Nav_1Vqsn",
          NavTitle: "pagedcontent_NavTitle_tK0Cu",
          NavItems: "pagedcontent_NavItems_1ce4K",
          NavItem: "pagedcontent_NavItem_-GYTF",
          Active: "pagedcontent_Active_36pPi",
          Content: "pagedcontent_Content_2mJpA",
          BackgroundAnimation: "pagedcontent_BackgroundAnimation_1XVbj",
          "ItemFocusAnim-darkerGrey-nocolor":
            "pagedcontent_ItemFocusAnim-darkerGrey-nocolor_1vMKF",
          "ItemFocusAnim-darkerGrey":
            "pagedcontent_ItemFocusAnim-darkerGrey_2g_AN",
          "ItemFocusAnim-darkGrey": "pagedcontent_ItemFocusAnim-darkGrey_1c2HK",
          "ItemFocusAnim-grey": "pagedcontent_ItemFocusAnim-grey_2BLVS",
          "ItemFocusAnim-translucent-white-10":
            "pagedcontent_ItemFocusAnim-translucent-white-10_3TnSz",
          "ItemFocusAnim-translucent-white-20":
            "pagedcontent_ItemFocusAnim-translucent-white-20_1C2QC",
          "ItemFocusAnimBorder-darkGrey":
            "pagedcontent_ItemFocusAnimBorder-darkGrey_OpVxu",
          "ItemFocusAnim-green": "pagedcontent_ItemFocusAnim-green_fceUL",
        };
      },
      72754: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          PanelSection: "remoteplay_PanelSection_3CTSQ",
          PanelSectionTitle: "remoteplay_PanelSectionTitle_2y3UQ",
          Text: "remoteplay_Text__u55r",
          PanelSectionRow: "remoteplay_PanelSectionRow_rC25a",
          Label: "remoteplay_Label_UfIGB",
          ComingSoon: "remoteplay_ComingSoon_2MGRk",
          QuickAccessNotifications: "remoteplay_QuickAccessNotifications_3EHGW",
          VR: "remoteplay_VR_3zGD_",
          EmptyNotifications: "remoteplay_EmptyNotifications_2H2il",
          LowBattery: "remoteplay_LowBattery_2byQS",
          ReallyLow: "remoteplay_ReallyLow_3CHEe",
          LowBatteryGauge: "remoteplay_LowBatteryGauge_1UMUg",
          Remaining: "remoteplay_Remaining_lttQ8",
          BatterySectionContainer: "remoteplay_BatterySectionContainer_1Dlgs",
          BatteryIcon: "remoteplay_BatteryIcon_3XW55",
          BatteryPercentageLabel: "remoteplay_BatteryPercentageLabel_1SDW_",
          BatteryDetailsLabels: "remoteplay_BatteryDetailsLabels_2pdWI",
          BatteryProjectedValue: "remoteplay_BatteryProjectedValue_30ZTF",
          BatteryProjectedLabel: "remoteplay_BatteryProjectedLabel_1bS5R",
          ContentForm: "remoteplay_ContentForm_3yIT_",
          ContentBox: "remoteplay_ContentBox_3g04Q",
          Interactable: "remoteplay_Interactable_2_OjI",
          DialogHeader: "remoteplay_DialogHeader_1omLn",
          StreamPausedNote: "remoteplay_StreamPausedNote_1yY7B",
          HeaderActions: "remoteplay_HeaderActions_IZNod",
          HeaderActionsButtons: "remoteplay_HeaderActionsButtons_3VsHt",
          MediaBox: "remoteplay_MediaBox_UAdii",
          Media: "remoteplay_Media_1b-b-",
          Content: "remoteplay_Content_7-0ht",
          Top: "remoteplay_Top_2e2Pp",
          DesktopButtons: "remoteplay_DesktopButtons_2dyAi",
          Bottom: "remoteplay_Bottom_2sHQp",
          Section: "remoteplay_Section_1gsof",
          SectionItemMargin: "remoteplay_SectionItemMargin_14zCU",
          SectionTitle: "remoteplay_SectionTitle_2w_yp",
          GameSettingsBox: "remoteplay_GameSettingsBox_3CJFr",
          ControllerDropSlotsContainer:
            "remoteplay_ControllerDropSlotsContainer_EIvpa",
          ControllerDropSlots: "remoteplay_ControllerDropSlots_1BzWI",
          HowToHint: "remoteplay_HowToHint_3tZOj",
          ControllerDropSlot: "remoteplay_ControllerDropSlot_14PL3",
          WithMargin: "remoteplay_WithMargin_3SadY",
          Controller: "remoteplay_Controller_1Kwg5",
          SlotFilled: "remoteplay_SlotFilled_xQywn",
          DragHovered: "remoteplay_DragHovered_Md8vG",
          DropSlotNumber: "remoteplay_DropSlotNumber_16UQH",
          QuickAccessControllerOrderSlot:
            "remoteplay_QuickAccessControllerOrderSlot_bA_5P",
          DropSlotBackgroundPulse: "remoteplay_DropSlotBackgroundPulse_FQlQN",
          ControllerClearDropSlot: "remoteplay_ControllerClearDropSlot_23QlC",
          ClearDropSlotIcon: "remoteplay_ClearDropSlotIcon_3q7Qx",
          DropSlotClearFillPulse: "remoteplay_DropSlotClearFillPulse_GQKQT",
          MediaButton: "remoteplay_MediaButton_2a9L1",
          ButtonContent: "remoteplay_ButtonContent_1HCRV",
          RecentlyInteracted: "remoteplay_RecentlyInteracted_2TDHR",
          MediaButtonLabel: "remoteplay_MediaButtonLabel_1a0qK",
          MediaImage: "remoteplay_MediaImage_3TsrF",
          PersonaName: "remoteplay_PersonaName_11FQa",
          PersonaNameName: "remoteplay_PersonaNameName_1vbfY",
          PersonaAvatar: "remoteplay_PersonaAvatar_1sgR5",
          PlayerControlsContainer: "remoteplay_PlayerControlsContainer_1MLzR",
          PlayerControls: "remoteplay_PlayerControls_3IoOu",
          QuickAccessPlayerControlsContainer:
            "remoteplay_QuickAccessPlayerControlsContainer_RNCoe",
          PlayerControl: "remoteplay_PlayerControl_1SN8P",
          NoInputWarning: "remoteplay_NoInputWarning_1hPkC",
          WarningIcon: "remoteplay_WarningIcon_1fiUw",
          ControlEnabled: "remoteplay_ControlEnabled_XdDQO",
          QuickAccess: "remoteplay_QuickAccess_2UJXH",
          ControlDisabled: "remoteplay_ControlDisabled_306vA",
          InteractableControl: "remoteplay_InteractableControl_1qor0",
          SliderControlContainer: "remoteplay_SliderControlContainer_1RJcX",
          SliderIconContainer: "remoteplay_SliderIconContainer_2XRDA",
          SliderContainer: "remoteplay_SliderContainer_1Ppzh",
          SliderIcon: "remoteplay_SliderIcon_1Ygk7",
          Disabled: "remoteplay_Disabled_wH_Ax",
          Slider: "remoteplay_Slider_3fHEV",
          MediaBoxTitle: "remoteplay_MediaBoxTitle_3WR0p",
          TitleText: "remoteplay_TitleText_H4M1y",
          TitleStatusDivider: "remoteplay_TitleStatusDivider_1b2Fy",
          TitleStatus: "remoteplay_TitleStatus_1UC1a",
          InvitedGuestBox: "remoteplay_InvitedGuestBox_st7xQ",
          LinkContainer: "remoteplay_LinkContainer_2Ojy0",
          GuestTitle: "remoteplay_GuestTitle_1ysXO",
          PlayerController: "remoteplay_PlayerController_14Xjj",
          PlayerControllerNumber: "remoteplay_PlayerControllerNumber_3dA2r",
          Hidden: "remoteplay_Hidden_MlU_V",
          PlayerControllerIcon: "remoteplay_PlayerControllerIcon_2kild",
          Enabled: "remoteplay_Enabled_2T1ZK",
          InteractableController: "remoteplay_InteractableController_k4Tnw",
          Grabbable: "remoteplay_Grabbable_1vagK",
          QuickAccessPlayerController:
            "remoteplay_QuickAccessPlayerController_wHOHE",
          BoxButton: "remoteplay_BoxButton_hewCY",
          Light: "remoteplay_Light_3QXQR",
          Dark: "remoteplay_Dark_31ktR",
          MicFillOverride: "remoteplay_MicFillOverride_3PcsE",
          ClientQualityContainer: "remoteplay_ClientQualityContainer_2lHmz",
          CanGrab: "remoteplay_CanGrab_3XVXb",
          Wiggle: "remoteplay_Wiggle_2D6_l",
          HeaderBitrate: "remoteplay_HeaderBitrate_2tJ0L",
          PlayerBitRate: "remoteplay_PlayerBitRate_3ILbI",
          BitRateQuality_1: "remoteplay_BitRateQuality_1_253Jl",
          BitRateQuality_2: "remoteplay_BitRateQuality_2_1kGJj",
          BitRateQuality_3: "remoteplay_BitRateQuality_3_1eQXB",
          BitRateQuality_4: "remoteplay_BitRateQuality_4_215zU",
          IconMobile: "remoteplay_IconMobile_2371n",
          Row: "remoteplay_Row_1Z52v",
          HeaderButton: "remoteplay_HeaderButton_2IHDm",
          NoMarginTop: "remoteplay_NoMarginTop_1qAhG",
          QuickAccessContainer: "remoteplay_QuickAccessContainer_3Moue",
          QuickAccessTitle: "remoteplay_QuickAccessTitle_2dcwM",
          QuickAccessScrollPanel: "remoteplay_QuickAccessScrollPanel_1kWfg",
          QuickAccessMediaBoxTitleRow:
            "remoteplay_QuickAccessMediaBoxTitleRow_2ouij",
          Wrap: "remoteplay_Wrap_1M_Cq",
          QuickAccessMediaBoxTitle: "remoteplay_QuickAccessMediaBoxTitle_doZeh",
          QuickAccessIconContainer: "remoteplay_QuickAccessIconContainer_bVyVi",
          QuickAccessMediaBoxChildrenContainer:
            "remoteplay_QuickAccessMediaBoxChildrenContainer_2NyJr",
          QuickAccessStatusText: "remoteplay_QuickAccessStatusText_1EJYY",
          QuickAccessConnectURL: "remoteplay_QuickAccessConnectURL_H2sUm",
          QuickAccessClipboardStatus:
            "remoteplay_QuickAccessClipboardStatus_2rioh",
          QuickAccessControlIcon: "remoteplay_QuickAccessControlIcon_Ll-uN",
          Mouse: "remoteplay_Mouse_3lhsI",
          Keyboard: "remoteplay_Keyboard_2kge0",
          QuickAccessControllerOrderContainer:
            "remoteplay_QuickAccessControllerOrderContainer_2xZxy",
          Divider: "remoteplay_Divider_1D4hg",
          ReorderLabelName: "remoteplay_ReorderLabelName_3ZavZ",
          ReorderLabelPersonaAvatar:
            "remoteplay_ReorderLabelPersonaAvatar_-dtG_",
          InviteFriendGuestButtons: "remoteplay_InviteFriendGuestButtons_XVDsC",
          InlineInviteButton: "remoteplay_InlineInviteButton_2WLe2",
          MediaBoxBody: "remoteplay_MediaBoxBody_322vo",
          Footer: "remoteplay_Footer_2l7VY",
          BackgroundAnimation: "remoteplay_BackgroundAnimation_2Uu7J",
          "ItemFocusAnim-darkerGrey-nocolor":
            "remoteplay_ItemFocusAnim-darkerGrey-nocolor_PvXtR",
          "ItemFocusAnim-darkerGrey":
            "remoteplay_ItemFocusAnim-darkerGrey_2B8-4",
          "ItemFocusAnim-darkGrey": "remoteplay_ItemFocusAnim-darkGrey_3ybDj",
          "ItemFocusAnim-grey": "remoteplay_ItemFocusAnim-grey_1C6kb",
          "ItemFocusAnim-translucent-white-10":
            "remoteplay_ItemFocusAnim-translucent-white-10_260b3",
          "ItemFocusAnim-translucent-white-20":
            "remoteplay_ItemFocusAnim-translucent-white-20_3OEDn",
          "ItemFocusAnimBorder-darkGrey":
            "remoteplay_ItemFocusAnimBorder-darkGrey_1SP1k",
          "ItemFocusAnim-green": "remoteplay_ItemFocusAnim-green_3xx9X",
          focusAnimation: "remoteplay_focusAnimation_-2njw",
          hoverAnimation: "remoteplay_hoverAnimation_jPA3E",
        };
      },
      10893: (e) => {
        e.exports = {
          RecommendedNote: "voicesettings_RecommendedNote_iZ7Ud",
          TransmissionTypeSettings:
            "voicesettings_TransmissionTypeSettings_2lDZA",
          HotkeySettingRow: "voicesettings_HotkeySettingRow_2TALW",
          HotkeyButton: "voicesettings_HotkeyButton_1Lz3_",
          Capturing: "voicesettings_Capturing_ANwfj",
          WalkDashedOutline: "voicesettings_WalkDashedOutline_37_j8",
          HotkeyClearButton: "voicesettings_HotkeyClearButton_CRx3r",
          HotkeySettingDescription:
            "voicesettings_HotkeySettingDescription_1WaGV",
          VoiceSettings: "voicesettings_VoiceSettings_W4WXV",
          AdvancedSettingsButton: "voicesettings_AdvancedSettingsButton_1e8R9",
          ToggleRow: "voicesettings_ToggleRow_2u4ju",
        };
      },
      65226: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth:
            "friendinvites_DialogContent_InnerWidth_1y6SQ",
          FriendPicker_Focus: "friendinvites_FriendPicker_Focus_1XujO",
          FriendRequestViewActive:
            "friendinvites_FriendRequestViewActive_3EsTu",
          VoiceRequested: "friendinvites_VoiceRequested_1QzU9",
          chatRoomGroupHeader: "friendinvites_chatRoomGroupHeader_3F_La",
          InvitesList: "friendinvites_InvitesList_3i8Fo",
          IncomingInvites: "friendinvites_IncomingInvites_3Usmq",
          OutgoingInvites: "friendinvites_OutgoingInvites_exhhf",
          InvitesSectionHeader: "friendinvites_InvitesSectionHeader_3B_sJ",
          Text: "friendinvites_Text_45XAJ",
          InvitesRow: "friendinvites_InvitesRow_35_aF",
          InvitesFriend: "friendinvites_InvitesFriend_HtZ4l",
          MutualFriendRow: "friendinvites_MutualFriendRow_3ajxC",
          TopSection: "friendinvites_TopSection_2uvvl",
          AddFriendSection: "friendinvites_AddFriendSection_3BjIx",
          InputForm: "friendinvites_InputForm_36n9v",
          Input: "friendinvites_Input_OgGFI",
          SubmitButton: "friendinvites_SubmitButton_3H1Wq",
          Title: "friendinvites_Title_1ZEdD",
          Description: "friendinvites_Description_KI_gF",
          FriendCodeSection: "friendinvites_FriendCodeSection_39nte",
          FriendCode: "friendinvites_FriendCode_27408",
          Code: "friendinvites_Code_1-bTQ",
          Caption: "friendinvites_Caption__XK9j",
          Divider: "friendinvites_Divider_3Jqss",
          BackgroundAnimation: "friendinvites_BackgroundAnimation_3ZMc5",
          "ItemFocusAnim-darkerGrey-nocolor":
            "friendinvites_ItemFocusAnim-darkerGrey-nocolor_1OURP",
          "ItemFocusAnim-darkerGrey":
            "friendinvites_ItemFocusAnim-darkerGrey_1Fi1a",
          "ItemFocusAnim-darkGrey":
            "friendinvites_ItemFocusAnim-darkGrey_wQRdQ",
          "ItemFocusAnim-grey": "friendinvites_ItemFocusAnim-grey_51gAo",
          "ItemFocusAnim-translucent-white-10":
            "friendinvites_ItemFocusAnim-translucent-white-10_2JKoK",
          "ItemFocusAnim-translucent-white-20":
            "friendinvites_ItemFocusAnim-translucent-white-20_2oq2Q",
          "ItemFocusAnimBorder-darkGrey":
            "friendinvites_ItemFocusAnimBorder-darkGrey_WAjoc",
          "ItemFocusAnim-green": "friendinvites_ItemFocusAnim-green_Dm1Of",
        };
      },
      31857: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth:
            "friendslist_DialogContent_InnerWidth_21fxW",
          FriendPicker_Focus: "friendslist_FriendPicker_Focus_2E-wE",
          FriendRequestViewActive: "friendslist_FriendRequestViewActive_3JB6m",
          VoiceRequested: "friendslist_VoiceRequested_1_H_d",
          chatRoomGroupHeader: "friendslist_chatRoomGroupHeader_33QGT",
          RemotePlayInviteLinkSection:
            "friendslist_RemotePlayInviteLinkSection_3J8nN",
          LinkRow: "friendslist_LinkRow_3rRyF",
          LinkRowText: "friendslist_LinkRowText_25cZw",
          LinkRowIconContainer: "friendslist_LinkRowIconContainer_psSBf",
          LinkRowIcon: "friendslist_LinkRowIcon_1aGTk",
          LinkExplanation: "friendslist_LinkExplanation_-1XpC",
          ExplanationText: "friendslist_ExplanationText_1Qb3G",
          Strong: "friendslist_Strong_23ygL",
          GotItButton: "friendslist_GotItButton_2Pup6",
          AccentChevron: "friendslist_AccentChevron_1m0a1",
          TabBumper: "friendslist_TabBumper_3Jr0A",
          RecentChatIcon: "friendslist_RecentChatIcon_2mQc_",
          UnreadAlert: "friendslist_UnreadAlert_1RSzq",
          NotificationUnreadMention:
            "friendslist_NotificationUnreadMention_pSwCC",
          LastMessage: "friendslist_LastMessage_3HNwU",
          OfflineContainer: "friendslist_OfflineContainer_J8oP5",
          OfflineMessage: "friendslist_OfflineMessage_2aYfi",
          summaryText: "friendslist_summaryText_A_QAo",
          detailText: "friendslist_detailText_37w_J",
          retryButton: "friendslist_retryButton_1NI2e",
          BackgroundAnimation: "friendslist_BackgroundAnimation_1-Raw",
          "ItemFocusAnim-darkerGrey-nocolor":
            "friendslist_ItemFocusAnim-darkerGrey-nocolor_3BGg0",
          "ItemFocusAnim-darkerGrey":
            "friendslist_ItemFocusAnim-darkerGrey_3FD_T",
          "ItemFocusAnim-darkGrey": "friendslist_ItemFocusAnim-darkGrey_i0vR_",
          "ItemFocusAnim-grey": "friendslist_ItemFocusAnim-grey_m46wK",
          "ItemFocusAnim-translucent-white-10":
            "friendslist_ItemFocusAnim-translucent-white-10_118kp",
          "ItemFocusAnim-translucent-white-20":
            "friendslist_ItemFocusAnim-translucent-white-20_9L9Wc",
          "ItemFocusAnimBorder-darkGrey":
            "friendslist_ItemFocusAnimBorder-darkGrey_I4Me_",
          "ItemFocusAnim-green": "friendslist_ItemFocusAnim-green_2Ox84",
        };
      },
      51234: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth:
            "quickaccessvoicecontrolssteamdeck_DialogContent_InnerWidth_HlXy1",
          FriendPicker_Focus:
            "quickaccessvoicecontrolssteamdeck_FriendPicker_Focus_120ia",
          FriendRequestViewActive:
            "quickaccessvoicecontrolssteamdeck_FriendRequestViewActive_3Uu-6",
          VoiceRequested:
            "quickaccessvoicecontrolssteamdeck_VoiceRequested_RXOEA",
          chatRoomGroupHeader:
            "quickaccessvoicecontrolssteamdeck_chatRoomGroupHeader_3TQLb",
          Title: "quickaccessvoicecontrolssteamdeck_Title_8BFsa",
          PendingVoiceChats:
            "quickaccessvoicecontrolssteamdeck_PendingVoiceChats_3WFt2",
          PendingVoiceChatsList:
            "quickaccessvoicecontrolssteamdeck_PendingVoiceChatsList_kGZyg",
          PendingVoiceChatRequest:
            "quickaccessvoicecontrolssteamdeck_PendingVoiceChatRequest_1qta3",
          VoiceChatList:
            "quickaccessvoicecontrolssteamdeck_VoiceChatList_3Ri6R",
          FriendVoiceChatSliderContainer:
            "quickaccessvoicecontrolssteamdeck_FriendVoiceChatSliderContainer_ucY0N",
          SliderPadding:
            "quickaccessvoicecontrolssteamdeck_SliderPadding_1xn70",
          FriendVoiceChatContainer:
            "quickaccessvoicecontrolssteamdeck_FriendVoiceChatContainer_303Rc",
          FriendVoiceChat:
            "quickaccessvoicecontrolssteamdeck_FriendVoiceChat_2djlw",
          "ItemFocusAnim-darkerGrey":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-darkerGrey_3xI7Y",
          GroupVoiceChatContainer:
            "quickaccessvoicecontrolssteamdeck_GroupVoiceChatContainer_3rgaD",
          GroupContainer:
            "quickaccessvoicecontrolssteamdeck_GroupContainer_2x4Fd",
          GroupTitle: "quickaccessvoicecontrolssteamdeck_GroupTitle_3uwZc",
          LeaveVoiceChat:
            "quickaccessvoicecontrolssteamdeck_LeaveVoiceChat_1DSas",
          GroupRoomContainer:
            "quickaccessvoicecontrolssteamdeck_GroupRoomContainer_2MbsP",
          ActiveVoiceRoom:
            "quickaccessvoicecontrolssteamdeck_ActiveVoiceRoom_xHmjh",
          UserInRoom: "quickaccessvoicecontrolssteamdeck_UserInRoom_1hpKh",
          RoomHeader: "quickaccessvoicecontrolssteamdeck_RoomHeader_1lbdO",
          RoomTitle: "quickaccessvoicecontrolssteamdeck_RoomTitle_1H-_S",
          GroupVoiceChatFriend:
            "quickaccessvoicecontrolssteamdeck_GroupVoiceChatFriend_jSCjW",
          MicMutedLocally:
            "quickaccessvoicecontrolssteamdeck_MicMutedLocally_KMowQ",
          OutputMutedRemotely:
            "quickaccessvoicecontrolssteamdeck_OutputMutedRemotely_32Kh-",
          MicMutedRemotely:
            "quickaccessvoicecontrolssteamdeck_MicMutedRemotely_3gMw6",
          BackgroundAnimation:
            "quickaccessvoicecontrolssteamdeck_BackgroundAnimation_23GbG",
          "ItemFocusAnim-darkerGrey-nocolor":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-darkerGrey-nocolor_1xyIi",
          "ItemFocusAnim-darkGrey":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-darkGrey_2GqB7",
          "ItemFocusAnim-grey":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-grey_2bTxY",
          "ItemFocusAnim-translucent-white-10":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-translucent-white-10_2jM4E",
          "ItemFocusAnim-translucent-white-20":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-translucent-white-20_O-onA",
          "ItemFocusAnimBorder-darkGrey":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnimBorder-darkGrey_OGL0h",
          "ItemFocusAnim-green":
            "quickaccessvoicecontrolssteamdeck_ItemFocusAnim-green_RX24G",
        };
      },
      68189: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth:
            "recentchatssteamdeck_DialogContent_InnerWidth_7aHI_",
          FriendPicker_Focus: "recentchatssteamdeck_FriendPicker_Focus_2dn20",
          FriendRequestViewActive:
            "recentchatssteamdeck_FriendRequestViewActive_1Rudc",
          VoiceRequested: "recentchatssteamdeck_VoiceRequested_TymZy",
          chatRoomGroupHeader: "recentchatssteamdeck_chatRoomGroupHeader_3GxlH",
          RecentChatsList: "recentchatssteamdeck_RecentChatsList_2-4f0",
          RecentChatElement: "recentchatssteamdeck_RecentChatElement_1-Coz",
          "ItemFocusAnim-darkerGrey":
            "recentchatssteamdeck_ItemFocusAnim-darkerGrey_-5J2j",
          "ItemFocusAnim-darkGrey":
            "recentchatssteamdeck_ItemFocusAnim-darkGrey_1pEXV",
          UnreadCount: "recentchatssteamdeck_UnreadCount_LTCvn",
          Time: "recentchatssteamdeck_Time_20ewu",
          BackgroundAnimation: "recentchatssteamdeck_BackgroundAnimation_v87rF",
          "ItemFocusAnim-darkerGrey-nocolor":
            "recentchatssteamdeck_ItemFocusAnim-darkerGrey-nocolor_1W_MK",
          "ItemFocusAnim-grey": "recentchatssteamdeck_ItemFocusAnim-grey_35kWn",
          "ItemFocusAnim-translucent-white-10":
            "recentchatssteamdeck_ItemFocusAnim-translucent-white-10_odmKL",
          "ItemFocusAnim-translucent-white-20":
            "recentchatssteamdeck_ItemFocusAnim-translucent-white-20_smtou",
          "ItemFocusAnimBorder-darkGrey":
            "recentchatssteamdeck_ItemFocusAnimBorder-darkGrey_8pVLM",
          "ItemFocusAnim-green":
            "recentchatssteamdeck_ItemFocusAnim-green_ENPFC",
        };
      },
      98077: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth: "main_DialogContent_InnerWidth_3NSzY",
          FriendPicker_Focus: "main_FriendPicker_Focus_1VEHr",
          FriendRequestViewActive: "main_FriendRequestViewActive_2m8dd",
          VoiceRequested: "main_VoiceRequested_1Us1G",
          chatRoomGroupHeader: "main_chatRoomGroupHeader_2kpIH",
          throbberContainer: "main_throbberContainer_2gRz4",
          throbberContainerSteamDeckFriendsQuickAccess:
            "main_throbberContainerSteamDeckFriendsQuickAccess_oq071",
          throbberContainerSteamDeckFriends:
            "main_throbberContainerSteamDeckFriends_28sB2",
          "throbberContainer-exit-active":
            "main_throbberContainer-exit-active_2z9OY",
          SteamPageHeader: "main_SteamPageHeader_3NLSM",
          SteamPageHeaderShortLogo: "main_SteamPageHeaderShortLogo_lWgFM",
          LogoGlobal: "main_LogoGlobal_3A7qr",
          LogoChina: "main_LogoChina_iYyr7",
          SteamPageHeaderTopLink: "main_SteamPageHeaderTopLink_2mGrI",
          BackgroundAnimation: "main_BackgroundAnimation_3-MCu",
          "ItemFocusAnim-darkerGrey-nocolor":
            "main_ItemFocusAnim-darkerGrey-nocolor_3plWN",
          "ItemFocusAnim-darkerGrey": "main_ItemFocusAnim-darkerGrey_BqEst",
          "ItemFocusAnim-darkGrey": "main_ItemFocusAnim-darkGrey_3khNe",
          "ItemFocusAnim-grey": "main_ItemFocusAnim-grey_9rnEz",
          "ItemFocusAnim-translucent-white-10":
            "main_ItemFocusAnim-translucent-white-10_38cxd",
          "ItemFocusAnim-translucent-white-20":
            "main_ItemFocusAnim-translucent-white-20_1KpqF",
          "ItemFocusAnimBorder-darkGrey":
            "main_ItemFocusAnimBorder-darkGrey_4BFNo",
          "ItemFocusAnim-green": "main_ItemFocusAnim-green_1mHZe",
        };
      },
      94712: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          SpeakerName_InGame: "messages_SpeakerName_InGame_3xyn_",
          SpeakerName_WatchingBroadcast:
            "messages_SpeakerName_WatchingBroadcast_42oIW",
          SpeakerName_Online: "messages_SpeakerName_Online_7B6M2",
          SpeakerName_Default: "messages_SpeakerName_Default_2NMuV",
          MsgWithAddons: "messages_MsgWithAddons_32Uri",
          Addons: "messages_Addons_1pGgX",
          Emoticon: "messages_Emoticon_3uwQM",
          Open: "messages_Open_3GQR8",
        };
      },
      96009: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DialogContent_InnerWidth:
            "unreadchatmessagesheadersteamdeck_DialogContent_InnerWidth_hbNOn",
          FriendPicker_Focus:
            "unreadchatmessagesheadersteamdeck_FriendPicker_Focus_3_Emp",
          FriendRequestViewActive:
            "unreadchatmessagesheadersteamdeck_FriendRequestViewActive_2mE7I",
          VoiceRequested:
            "unreadchatmessagesheadersteamdeck_VoiceRequested_1FUOI",
          chatRoomGroupHeader:
            "unreadchatmessagesheadersteamdeck_chatRoomGroupHeader_cZggu",
          NotificationUnreadMentionContainer:
            "unreadchatmessagesheadersteamdeck_NotificationUnreadMentionContainer_jWNCx",
          HasMessages: "unreadchatmessagesheadersteamdeck_HasMessages_3Xg0H",
          Header_NotificationUnreadMention:
            "unreadchatmessagesheadersteamdeck_Header_NotificationUnreadMention_16uUR",
          BackgroundAnimation:
            "unreadchatmessagesheadersteamdeck_BackgroundAnimation_1Hj25",
          "ItemFocusAnim-darkerGrey-nocolor":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-darkerGrey-nocolor_1drG4",
          "ItemFocusAnim-darkerGrey":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-darkerGrey_3dXBv",
          "ItemFocusAnim-darkGrey":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-darkGrey_3vJLM",
          "ItemFocusAnim-grey":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-grey_1-Lro",
          "ItemFocusAnim-translucent-white-10":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-translucent-white-10_3yWy7",
          "ItemFocusAnim-translucent-white-20":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-translucent-white-20_3Z08b",
          "ItemFocusAnimBorder-darkGrey":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnimBorder-darkGrey_1gM3D",
          "ItemFocusAnim-green":
            "unreadchatmessagesheadersteamdeck_ItemFocusAnim-green_3Pxdu",
        };
      },
      89106: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          "vrgamepadui-floating-side-panel-width": "300px",
          "vrgamepadui-floating-side-panel-height": "600px",
          "vrgamepadui-floating-bar-popup-panel-width": "300px",
          "vrgamepadui-floating-bar-popup-panel-height": "600px",
          "vrgamepadui-floating-keyboard-width": "854px",
          "vrgamepadui-floating-keyboard-height": "279px",
          DialogContent_InnerWidth:
            "voicechatheadersteamdeck_DialogContent_InnerWidth_30h2e",
          FriendPicker_Focus:
            "voicechatheadersteamdeck_FriendPicker_Focus_Lv2z8",
          FriendRequestViewActive:
            "voicechatheadersteamdeck_FriendRequestViewActive_2cb6v",
          VoiceRequested: "voicechatheadersteamdeck_VoiceRequested_2S7KP",
          chatRoomGroupHeader:
            "voicechatheadersteamdeck_chatRoomGroupHeader_-AK_a",
          PopupBody: "voicechatheadersteamdeck_PopupBody_1s0kV",
          VoiceChatHeader: "voicechatheadersteamdeck_VoiceChatHeader_18snG",
          ActiveCall: "voicechatheadersteamdeck_ActiveCall_1ln1Q",
          VoiceChatStatusBackground:
            "voicechatheadersteamdeck_VoiceChatStatusBackground_1zp0Z",
          IncomingCall: "voicechatheadersteamdeck_IncomingCall_3Wjn7",
          GroupVoice: "voicechatheadersteamdeck_GroupVoice_2f6GG",
          FriendVoice: "voicechatheadersteamdeck_FriendVoice_13yPS",
          BackgroundAnimation:
            "voicechatheadersteamdeck_BackgroundAnimation_3E1yZ",
          "ItemFocusAnim-darkerGrey-nocolor":
            "voicechatheadersteamdeck_ItemFocusAnim-darkerGrey-nocolor_jyLlf",
          "ItemFocusAnim-darkerGrey":
            "voicechatheadersteamdeck_ItemFocusAnim-darkerGrey_2CPyB",
          "ItemFocusAnim-darkGrey":
            "voicechatheadersteamdeck_ItemFocusAnim-darkGrey_HsK6E",
          "ItemFocusAnim-grey":
            "voicechatheadersteamdeck_ItemFocusAnim-grey_2plaQ",
          "ItemFocusAnim-translucent-white-10":
            "voicechatheadersteamdeck_ItemFocusAnim-translucent-white-10_2f5VL",
          "ItemFocusAnim-translucent-white-20":
            "voicechatheadersteamdeck_ItemFocusAnim-translucent-white-20_AoFA7",
          "ItemFocusAnimBorder-darkGrey":
            "voicechatheadersteamdeck_ItemFocusAnimBorder-darkGrey_lrn8I",
          "ItemFocusAnim-green":
            "voicechatheadersteamdeck_ItemFocusAnim-green_2Gaqx",
        };
      },
      32621: (e) => {
        e.exports = {
          BodyNoOverflow: "vrpopups_BodyNoOverflow_26wAD",
          RemoteVideo: "vrpopups_RemoteVideo_2kOnU",
        };
      },
      95606: (e) => {
        e.exports = {
          Bold: "bbcodes_Bold_3cln3",
          Italic: "bbcodes_Italic_3TPGD",
          Paragraph: "bbcodes_Paragraph_3lnqG",
          Header1: "bbcodes_Header1_2LYsF",
          Header2: "bbcodes_Header2_6-VR2",
          Header3: "bbcodes_Header3_1sGnl",
          Header4: "bbcodes_Header4_3VHY5",
          Header5: "bbcodes_Header5_1Vk-9",
          CenterSpan: "bbcodes_CenterSpan_zCnp-",
          SmallText: "bbcodes_SmallText_WBzrd",
          Underline: "bbcodes_Underline_GrhFW",
          Strike: "bbcodes_Strike_3pK7s",
          Spoiler: "bbcodes_Spoiler_3kRr4",
          Revealed: "bbcodes_Revealed_3g1-8",
          SpoilerText: "bbcodes_SpoilerText_3r66K",
          DisabledMouseEvents: "bbcodes_DisabledMouseEvents_1O62-",
          BlockQuote: "bbcodes_BlockQuote_3MQ0C",
          QuoteAuthor: "bbcodes_QuoteAuthor_1Mzma",
          PullQuote: "bbcodes_PullQuote_2kA0e",
          Code: "bbcodes_Code_2ODaX",
          CodeBlock: "bbcodes_CodeBlock_1I3OP",
          List: "bbcodes_List_3Y-LR",
          OrderedList: "bbcodes_OrderedList_DojPx",
          ListItem: "bbcodes_ListItem_1iXxY",
          HR: "bbcodes_HR_-xPK0",
          Table: "bbcodes_Table_2CAsi",
          NoBorder: "bbcodes_NoBorder_1rO4D",
          TableRow: "bbcodes_TableRow_3FJk0",
          TableCell: "bbcodes_TableCell_3rLIt",
          EqualCells: "bbcodes_EqualCells_1Ctoy",
          ExpandSectionBlock: "bbcodes_ExpandSectionBlock_2cmZM",
          ExpandSectionHeader: "bbcodes_ExpandSectionHeader_uAvfe",
          EmbedArrow: "bbcodes_EmbedArrow_3tVf4",
          ExpandSectionBody: "bbcodes_ExpandSectionBody_33CTl",
          ExpandSection_WithTitle: "bbcodes_ExpandSection_WithTitle_1dfVJ",
          LinkButton: "bbcodes_LinkButton_3TN0u",
          Image: "bbcodes_Image_3K0Nu",
          PreservedUnsupportedTag: "bbcodes_PreservedUnsupportedTag_3YMzB",
          Tag: "bbcodes_Tag_3SEDw",
          CalendarEventContainer: "bbcodes_CalendarEventContainer_S-ElB",
          CalendarEventLink: "bbcodes_CalendarEventLink_106tp",
        };
      },
      13987: (e) => {
        e.exports = {
          FocusRingRoot: "focusring_FocusRingRoot_3FIjY",
          FocusRing: "focusring_FocusRing_1wPpl",
          flash: "focusring_flash_1RqM3",
          growOutline: "focusring_growOutline_2o99S",
          fadeOutline: "focusring_fadeOutline_zn08h",
          blinker: "focusring_blinker_1aef_",
          DebugFocusRing: "focusring_DebugFocusRing_1uiTT",
          FocusRingOnHiddenItem: "focusring_FocusRingOnHiddenItem_2rIZm",
        };
      },
      8804: (e) => {
        e.exports = {
          ScrollPanel: "scrollpanel_ScrollPanel_3td3c",
          ScrollY: "scrollpanel_ScrollY_29Wyp",
          ScrollX: "scrollpanel_ScrollX_1l1Hf",
          ScrollBoth: "scrollpanel_ScrollBoth_1mUVX",
        };
      },
      63437: (e) => {
        e.exports = {
          BroadcastChat: "broadcastchat_BroadcastChat_3URK7",
          ChatEntry: "broadcastchat_ChatEntry_3soy-",
          ChatPanel: "broadcastchat_ChatPanel_2ZCAI",
          ChatMessages: "broadcastchat_ChatMessages_3M5L0",
          EmoticonContainer: "broadcastchat_EmoticonContainer_1wa4o",
          ChatSend: "broadcastchat_ChatSend_3JUnD",
          ChatBox: "broadcastchat_ChatBox_2qfgS",
          ChatControls: "broadcastchat_ChatControls_1TekO",
          MessageChat: "broadcastchat_MessageChat_22PB4",
          MessageName: "broadcastchat_MessageName_BJe6C",
          MessageContents: "broadcastchat_MessageContents_PNYZa",
          EmoticonsOnly: "broadcastchat_EmoticonsOnly_gFjH8",
          MessageNotification: "broadcastchat_MessageNotification_3Xb4_",
          MessageError: "broadcastchat_MessageError_8MzyW",
          minHeightZero: "broadcastchat_minHeightZero_r7HLM",
          ChatLoginButton: "broadcastchat_ChatLoginButton_2TAQo",
          RateLimitProgressBarContainer:
            "broadcastchat_RateLimitProgressBarContainer_JPqUG",
          RateLimitProgressBar: "broadcastchat_RateLimitProgressBar_1EcVK",
          TimedProgressBarContainer:
            "broadcastchat_TimedProgressBarContainer_39xGj",
          wrapper: "broadcastchat_wrapper_2vz6R",
          pie: "broadcastchat_pie_1k4dS",
          spinner: "broadcastchat_spinner_3nRh5",
          rota: "broadcastchat_rota_1xXh6",
          filler: "broadcastchat_filler_3Eegk",
          fill: "broadcastchat_fill_2tyuX",
          mask: "broadcastchat_mask_1V4Ke",
          SelectedUserNameCtn: "broadcastchat_SelectedUserNameCtn_3K4QX",
          SelectedUserName: "broadcastchat_SelectedUserName_c907V",
          FlairContainer: "broadcastchat_FlairContainer_166wp",
          RoleFlairContainer: "broadcastchat_RoleFlairContainer_1QRJ2",
          Description: "broadcastchat_Description_105HH",
          LogInPrompt: "broadcastchat_LogInPrompt_CsA8v",
          SignInButton: "broadcastchat_SignInButton_1dMwW",
        };
      },
      16910: (e) => {
        e.exports = {
          GiveawayWinnerBox:
            "broadcastchatannouncement_GiveawayWinnerBox_3cv4l",
          GiveawayWinnerAnnounced:
            "broadcastchatannouncement_GiveawayWinnerAnnounced_oLk3w",
          WinnerFlash: "broadcastchatannouncement_WinnerFlash_29x--",
          GiveawayWinnerBoxRight:
            "broadcastchatannouncement_GiveawayWinnerBoxRight_2ftrc",
          GiveawayWinnerText:
            "broadcastchatannouncement_GiveawayWinnerText_1SY2g",
          GiveawayWinnerCountdown:
            "broadcastchatannouncement_GiveawayWinnerCountdown_1eP67",
          GiveawayWinnerBoxLeft:
            "broadcastchatannouncement_GiveawayWinnerBoxLeft_N6Rk1",
          GiveawayWinnerArt:
            "broadcastchatannouncement_GiveawayWinnerArt_1sgyp",
          GiveawayWinnerQuestion:
            "broadcastchatannouncement_GiveawayWinnerQuestion_3mvdc",
          InViewerBar: "broadcastchatannouncement_InViewerBar_25VQ8",
          GiveawayRegisterButton:
            "broadcastchatannouncement_GiveawayRegisterButton_eKSAv",
          GiveawayAlreadyRegistered:
            "broadcastchatannouncement_GiveawayAlreadyRegistered_2AVNR",
        };
      },
      70874: (e) => {
        e.exports = {
          Login: "newlogindialog_Login_lat0M",
          SideBySide: "newlogindialog_SideBySide_ZHRZ8",
          GuestContainer: "newlogindialog_GuestContainer_3Sfbz",
          GuestLayout: "newlogindialog_GuestLayout_1r_sY",
          GuestText: "newlogindialog_GuestText_2gE59",
          GuestLink: "newlogindialog_GuestLink_3zcmX",
          ConfirmCredntialsNag: "newlogindialog_ConfirmCredntialsNag_2oMva",
          QRSection: "newlogindialog_QRSection_3wSeH",
          MessagingContainer: "newlogindialog_MessagingContainer_mFCQS",
          MessagingTag: "newlogindialog_MessagingTag_2vrvE",
          MessagingSubtitleCtn: "newlogindialog_MessagingSubtitleCtn_1SepN",
          MessagingIcon: "newlogindialog_MessagingIcon_1IIkZ",
          MessagingSubtitle: "newlogindialog_MessagingSubtitle_14ZzK",
          MessagingButton: "newlogindialog_MessagingButton_3k-6J",
          MessagingLink: "newlogindialog_MessagingLink_1kBrG",
          ScanQRButton: "newlogindialog_ScanQRButton_3wGxE",
          QRIcon: "newlogindialog_QRIcon_27u_P",
          QRCodeContainer: "newlogindialog_QRCodeContainer_3ToZQ",
          QR: "newlogindialog_QR_35Q-U",
          QRHideLink: "newlogindialog_QRHideLink_1MIDA",
          HideButton: "newlogindialog_HideButton_1kEk5",
          UseMobileAppForQR: "newlogindialog_UseMobileAppForQR_3pxTS",
          InClient: "newlogindialog_InClient_1VAFg",
          TextField: "newlogindialog_TextField_3BkiH",
          TextInput: "newlogindialog_TextInput_2GBWe",
          Danger: "newlogindialog_Danger_16BUa",
          LoginForm: "newlogindialog_LoginForm_2v60t",
          FieldLabel: "newlogindialog_FieldLabel_XrYge",
          Highlight: "newlogindialog_Highlight_12zBm",
          CheckboxField: "newlogindialog_CheckboxField_1Qku5",
          CheckboxFieldLabel: "newlogindialog_CheckboxFieldLabel_10bGi",
          Checkbox: "newlogindialog_Checkbox_LBS7I",
          Check: "newlogindialog_Check_28MB9",
          RefreshButtonContainer: "newlogindialog_RefreshButtonContainer_1Y8X9",
          SignInButtonContainer: "newlogindialog_SignInButtonContainer_16fbi",
          RefreshQuitButton: "newlogindialog_RefreshQuitButton_9Ig1o",
          OfferOfflineButton: "newlogindialog_OfferOfflineButton_2Z68v",
          TryAgainButton: "newlogindialog_TryAgainButton_25eT2",
          GuestButton: "newlogindialog_GuestButton_3t6Qg",
          SubmitButton: "newlogindialog_SubmitButton_DjSvC",
          Loading: "newlogindialog_Loading_2NVQc",
          LoadingContainer: "newlogindialog_LoadingContainer_3AseU",
          Text: "newlogindialog_Text_1zFEa",
          Center: "newlogindialog_Center_2jDjx",
          TextLink: "newlogindialog_TextLink_1K431",
          FormError: "newlogindialog_FormError_1W_6H",
          TextAlignCenter: "newlogindialog_TextAlignCenter_2FyQD",
          FlexCol: "newlogindialog_FlexCol_1NOsG",
          AlignItemsCenter: "newlogindialog_AlignItemsCenter_2QHQ1",
          JustifyContentCenter: "newlogindialog_JustifyContentCenter_2tsIi",
          ProtectingAccount: "newlogindialog_ProtectingAccount_3JBYG",
          Label: "newlogindialog_Label_1hKgi",
          AccountName: "newlogindialog_AccountName_31Vq4",
          Description: "newlogindialog_Description_2o5mE",
          ConfirmationContainer: "newlogindialog_ConfirmationContainer_3zQ9h",
          AwaitingMobileConfText: "newlogindialog_AwaitingMobileConfText_2WgwH",
          ConfirmationEntryContainer:
            "newlogindialog_ConfirmationEntryContainer_3huyZ",
          AwaitingMobileConfIcon: "newlogindialog_AwaitingMobileConfIcon_3WvDp",
          AwaitingEmailConfIcon: "newlogindialog_AwaitingEmailConfIcon_3qdu3",
          LinkContainer: "newlogindialog_LinkContainer_3yz6x",
          EnterCodeInsteadLink: "newlogindialog_EnterCodeInsteadLink_2YsaR",
          EnterBackupCodeContainer:
            "newlogindialog_EnterBackupCodeContainer_DdK_F",
          EnterCodeFromMobileContainer:
            "newlogindialog_EnterCodeFromMobileContainer_2Io_J",
          EnterCodeFromEmailContainer:
            "newlogindialog_EnterCodeFromEmailContainer_1YQZI",
          EnterCodeFromMobile: "newlogindialog_EnterCodeFromMobile_1rEWO",
          EnterCodeFromEmail: "newlogindialog_EnterCodeFromEmail_3aMbj",
          EnterCodeEmailAddress: "newlogindialog_EnterCodeEmailAddress_3BKzb",
          CodeInputFieldContainer:
            "newlogindialog_CodeInputFieldContainer_3FIQq",
          CodeInputField: "newlogindialog_CodeInputField_1gZuG",
          SegmentContainer: "newlogindialog_SegmentContainer_8gteG",
          Segment: "newlogindialog_Segment_3l55O",
          RefreshTitle: "newlogindialog_RefreshTitle_3yMMw",
          RefreshReason: "newlogindialog_RefreshReason_1b-mL",
          InsecureComputer: "newlogindialog_InsecureComputer_3onX-",
          StandardLayout: "newlogindialog_StandardLayout_2EuR6",
          PrimaryHeader: "newlogindialog_PrimaryHeader_g5L61",
          FormContainer: "newlogindialog_FormContainer_3XCnc",
          Embedded: "newlogindialog_Embedded_2R_n2",
          Compact: "newlogindialog_Compact_3FB9K",
          HeaderLogo: "newlogindialog_HeaderLogo_3v6Wn",
          LogoContainer: "newlogindialog_LogoContainer_14exB",
          BackArrowContainer: "newlogindialog_BackArrowContainer_2Jkgs",
          BackArrow: "newlogindialog_BackArrow_3NHpq",
          EmbeddedRoot: "newlogindialog_EmbeddedRoot_2v9dC",
          RefreshReasonContainer: "newlogindialog_RefreshReasonContainer_1kQPd",
          Universe: "newlogindialog_Universe_yQUZi",
          EmbeddedRootFooter: "newlogindialog_EmbeddedRootFooter_27aIt",
          AccountCreation: "newlogindialog_AccountCreation_3oena",
          AccountCreationPrompt: "newlogindialog_AccountCreationPrompt_3dwSW",
          FailureTitle: "newlogindialog_FailureTitle_1A8Mk",
          FailureDescription: "newlogindialog_FailureDescription_3H-JH",
          FailureButtons: "newlogindialog_FailureButtons_Vf2Dk",
          OfferOffline: "newlogindialog_OfferOffline_2gqhn",
          LoadingSpinner: "newlogindialog_LoadingSpinner_1VLuk",
          LoadAmin: "newlogindialog_LoadAmin_14OTB",
          Small: "newlogindialog_Small_WYrJy",
          Medium: "newlogindialog_Medium_CQ9fA",
          Large: "newlogindialog_Large_1EIKW",
          MutedErrorReference: "newlogindialog_MutedErrorReference_J_2Q0",
          WaitingForTokenContainer:
            "newlogindialog_WaitingForTokenContainer_1h8nX",
          Client: "newlogindialog_Client_3NSip",
        };
      },
      81787: (e) => {
        e.exports = {
          LoginQR: "qrlogin_LoginQR_xlEVp",
          NonPublic: "qrlogin_NonPublic_39rmY",
          QRLoginDeck: "qrlogin_QRLoginDeck_J3DO-",
          Blur: "qrlogin_Blur_1rteF",
          Overlay: "qrlogin_Overlay_464mF",
          Box: "qrlogin_Box_2ltn2",
          Column: "qrlogin_Column_2u8B9",
          Loading: "qrlogin_Loading_3jObI",
          LoadAmin: "qrlogin_LoadAmin_3GMW9",
          Small: "qrlogin_Small_3YZnI",
          Medium: "qrlogin_Medium_rYn6L",
          Large: "qrlogin_Large_16VPM",
        };
      },
      97931: (e) => {
        e.exports = {
          SnoozeContainer: "friendsnooze_SnoozeContainer_1Dsum",
          SnoozeZ: "friendsnooze_SnoozeZ_2n0Ei",
          none: "friendsnooze_none_T3Fb5",
          Medium: "friendsnooze_Medium_1iYPl",
          Large: "friendsnooze_Large_3BESV",
          Dim: "friendsnooze_Dim_rpZ9b",
          Z1: "friendsnooze_Z1_2hnF3",
          Z2: "friendsnooze_Z2_VmQTO",
          Z3: "friendsnooze_Z3_29mta",
          hoverParent: "friendsnooze_hoverParent_3-8cB",
          animating: "friendsnooze_animating_2rXc7",
          Snoring: "friendsnooze_Snoring_38wIV",
        };
      },
      85326: (e) => {
        e.exports = {
          HoverPosition: "hoverposition_HoverPosition_3vg1v",
          Ready: "hoverposition_Ready_1Ye_0",
          NoSpace: "hoverposition_NoSpace_pxVZH",
          EnablePointerEvents: "hoverposition_EnablePointerEvents_2b9OE",
          HoverAboveModal: "hoverposition_HoverAboveModal_EQqOx",
          HoverPositionOuter: "hoverposition_HoverPositionOuter_2_lmT",
        };
      },
      94599: (e) => {
        e.exports = {
          miniProfile: "miniprofile_miniProfile_2QPdq",
          miniProfileContent: "miniprofile_miniProfileContent_1xTAT",
          miniProfileHeader: "miniprofile_miniProfileHeader_3CZcH",
          miniProfilePlayer: "miniprofile_miniProfilePlayer_2jZ0A",
          playerContent: "miniprofile_playerContent_2-pwJ",
          miniProfileBackground: "miniprofile_miniProfileBackground_3HzZh",
          miniProfileBackgroundBlur:
            "miniprofile_miniProfileBackgroundBlur_xUosY",
          miniProfileVideoBackground:
            "miniprofile_miniProfileVideoBackground_2Zqfb",
          miniProfileVideoBackgroundContainer:
            "miniprofile_miniProfileVideoBackgroundContainer_3MrYv",
          miniProfileBackdropBlur: "miniprofile_miniProfileBackdropBlur_1QhpY",
          miniProfileBlocked: "miniprofile_miniProfileBlocked_39Jef",
          miniProfileNotFriends: "miniprofile_miniProfileNotFriends_3Ea91",
          notFriends: "miniprofile_notFriends_2zgR7",
          SnoozeContainer: "miniprofile_SnoozeContainer_1cAsx",
          miniProfileHover: "miniprofile_miniProfileHover_2AWay",
          miniprofile_arrow: "miniprofile_miniprofile_arrow_1YsNo",
          left: "miniprofile_left_1qS_b",
          playerAvatar: "miniprofile_playerAvatar_36eQg",
          Frame: "miniprofile_Frame_2nPON",
          avatarStatus: "miniprofile_avatarStatus_1YdpX",
          miniProfileAvatarStatus: "miniprofile_miniProfileAvatarStatus_1k5Yk",
          personaName: "miniprofile_personaName_qiP8a",
          hasNickname: "miniprofile_hasNickname_2TAWS",
          personaNameLabel: "miniprofile_personaNameLabel_2VUw8",
          nickName: "miniprofile_nickName_h_So5",
          persona: "miniprofile_persona_3c5GO",
          personaAndIcons: "miniprofile_personaAndIcons_1p9kf",
          awayStatusLabel: "miniprofile_awayStatusLabel_1FgWI",
          nickname: "miniprofile_nickname_1SWhp",
          playerNicknameBracket: "miniprofile_playerNicknameBracket_3qa8c",
          notInOrWatchingGame: "miniprofile_notInOrWatchingGame_1NkB7",
          miniProfileBottom: "miniprofile_miniProfileBottom_26ga2",
          miniProfileGameContainer:
            "miniprofile_miniProfileGameContainer_7-U6j",
          gameLogo: "miniprofile_gameLogo_A0XYr",
          ingame: "miniprofile_ingame_24oQz",
          richPresence: "miniprofile_richPresence_39T3E",
          gameState: "miniprofile_gameState_3Hxc3",
          watchingbroadcast: "miniprofile_watchingbroadcast_3hSAG",
          watchingbroadcastThumbnail:
            "miniprofile_watchingbroadcastThumbnail_FmBWy",
          gameContent: "miniprofile_gameContent_3YwnZ",
          miniProfileFeaturedContainer:
            "miniprofile_miniProfileFeaturedContainer_1KDhd",
          favoriteBadgeIcon: "miniprofile_favoriteBadgeIcon_qP4hs",
          badgeIcon: "miniprofile_badgeIcon_1oWOa",
          featuredLabels: "miniprofile_featuredLabels_39har",
          friendPlayerLevelNum: "miniprofile_friendPlayerLevelNum_3vvwM",
          featuredTitle: "miniprofile_featuredTitle_2mCgt",
          mutualFriends: "miniprofile_mutualFriends_3AWk3",
          featuredSubTitle: "miniprofile_featuredSubTitle_3DelZ",
        };
      },
      88903: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          statusAndName: "personanameandstatus_statusAndName_4ZTzG",
          threeLines: "personanameandstatus_threeLines_1oYSX",
          blocked: "personanameandstatus_blocked_VTxPk",
          richPresenceLabel: "personanameandstatus_richPresenceLabel_2Ri00",
          playerName: "personanameandstatus_playerName_nOdcT",
          playerNickname: "personanameandstatus_playerNickname_2saJT",
          DisableColoring: "personanameandstatus_DisableColoring_3oDmK",
          playerNicknameBracket:
            "personanameandstatus_playerNicknameBracket_3XEmW",
          richPresenceContainer:
            "personanameandstatus_richPresenceContainer_3sxE7",
          gameName: "personanameandstatus_gameName_1cB0q",
          NoMask: "personanameandstatus_NoMask_2dAj6",
          twoLine: "personanameandstatus_twoLine_1BbOe",
          DNDContainer: "personanameandstatus_DNDContainer_3IswZ",
          partyBeaconJoin: "personanameandstatus_partyBeaconJoin_3BnDs",
          hidePersona: "personanameandstatus_hidePersona_3ZJkO",
          compactView: "personanameandstatus_compactView_3bbRZ",
          noContextMenu: "personanameandstatus_noContextMenu_1JE5G",
          gameIsPrivateIcon: "personanameandstatus_gameIsPrivateIcon_2gBKQ",
          PendingPersona: "personanameandstatus_PendingPersona_2sxXn",
        };
      },
      17089: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          PersonaStatusIcon: "personastatusicons_PersonaStatusIcon_KxAI_",
          MobilePhoneIcon: "personastatusicons_MobilePhoneIcon_1iRFj",
          SteamDeckIcon: "personastatusicons_SteamDeckIcon_2oLqc",
          VRIcon: "personastatusicons_VRIcon_368tz",
        };
      },
      47814: (e) => {
        e.exports = {
          avatarHolder: "steamavatar_avatarHolder_nibod",
          avatarStatus: "steamavatar_avatarStatus_3xUpb",
          avatar: "steamavatar_avatar_3h-QR",
          avatarFrame: "steamavatar_avatarFrame_X_mJE",
          avatarFrameImg: "steamavatar_avatarFrameImg_3fM0F",
        };
      },
      80825: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          Picker: "addonpicker_Picker_tid_O",
          Tabs: "addonpicker_Tabs_1yVkT",
          Tab: "addonpicker_Tab_2CJ0L",
          Focus: "addonpicker_Focus_1xH5s",
          TabContent: "addonpicker_TabContent_1mROo",
          Active: "addonpicker_Active_1ddEQ",
          Content: "addonpicker_Content_dUQIH",
          ItemList: "addonpicker_ItemList_2OWGR",
          Item: "addonpicker_Item_1SFqy",
          SectionedPageTitle: "addonpicker_SectionedPageTitle_ZmsEl",
          SectionTitle: "addonpicker_SectionTitle_3WuFl",
          FilterInputContainer: "addonpicker_FilterInputContainer_EuFeP",
          FilterInput: "addonpicker_FilterInput_2l4z-",
          AddonPickerMessage: "addonpicker_AddonPickerMessage_2wUk7",
        };
      },
      64409: (e) => {
        e.exports = {
          DynamicLinkBox: "youtubeembed_DynamicLinkBox_1IGUR",
          DynamicLink_Preview: "youtubeembed_DynamicLink_Preview_3ZK9R",
          DynamicLink_Author: "youtubeembed_DynamicLink_Author_3z0n0",
          DynamicLink_Description: "youtubeembed_DynamicLink_Description_eMdGA",
          DynamicLink_Content: "youtubeembed_DynamicLink_Content_2FhVX",
          DynamicLink_Name: "youtubeembed_DynamicLink_Name_1R7Ng",
          DynamicLink_YoutubeViews:
            "youtubeembed_DynamicLink_YoutubeViews_3clz2",
          Dynamiclink_Content: "youtubeembed_Dynamiclink_Content_1EYgV",
          DynamicLink_URL: "youtubeembed_DynamicLink_URL_3otyz",
          DynamicLink_AuthorName: "youtubeembed_DynamicLink_AuthorName_2DML9",
          DynamicLink_Date: "youtubeembed_DynamicLink_Date_281Dh",
          PreviewYouTubeVideo: "youtubeembed_PreviewYouTubeVideo_rUASs",
          sizeThumb: "youtubeembed_sizeThumb_3dy3K",
          sizeFull: "youtubeembed_sizeFull_14CxW",
          PlaceholderImg: "youtubeembed_PlaceholderImg_LILNd",
          floatLeft: "youtubeembed_floatLeft_2OWxr",
          floatRight: "youtubeembed_floatRight_om0Rs",
        };
      },
      80611: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          chatEntryControls: "chatentry_chatEntryControls_3Ule3",
          chatTextarea: "chatentry_chatTextarea_113iu",
          chatEntryActionsGroup: "chatentry_chatEntryActionsGroup_2WfNo",
          chatEntryActionsContainer:
            "chatentry_chatEntryActionsContainer_W0Ohk",
          minHeightZero: "chatentry_minHeightZero_2zeeh",
          chatSubmitButton: "chatentry_chatSubmitButton_RVIs8",
          EmbedButton: "chatentry_EmbedButton_3zOBe",
          EmoticonPickerButton: "chatentry_EmoticonPickerButton_Aupsw",
          disabled: "chatentry_disabled_jaQN2",
          Inactive: "chatentry_Inactive_3G-I9",
          AudioLines: "chatentry_AudioLines_IWaba",
          Active: "chatentry_Active_37tPt",
        };
      },
      26765: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          ContextMenuMouseOverlay: "contextmenu_ContextMenuMouseOverlay_3Knd7",
          ContextMenuPosition: "contextmenu_ContextMenuPosition_2yAm5",
          contextMenu: "contextmenu_contextMenu_PP7LM",
          ContextMenuPopup: "contextmenu_ContextMenuPopup_14wqd",
          contextMenuContents: "contextmenu_contextMenuContents_2EstN",
          contextMenuItem: "contextmenu_contextMenuItem_1n7Wl",
          active: "contextmenu_active_18z-3",
          MenuSectionHeader: "contextmenu_MenuSectionHeader_2Bb4J",
          ContextMenuSeparator: "contextmenu_ContextMenuSeparator_WUOrU",
          NoSeparation: "contextmenu_NoSeparation_3hRb6",
          UpperCase: "contextmenu_UpperCase_uz1Xm",
          SubMenu: "contextmenu_SubMenu_2RlEO",
          Label: "contextmenu_Label_2qdHl",
          Arrow: "contextmenu_Arrow_114nF",
          IconContainer: "contextmenu_IconContainer_38-c8",
          ContextMenuHRSeparator: "contextmenu_ContextMenuHRSeparator_IjIBR",
          ForceDesktop: "contextmenu_ForceDesktop_3qIuY",
          PopoutSubMenu: "contextmenu_PopoutSubMenu_Baq37",
          PopoutSubMenuItems: "contextmenu_PopoutSubMenuItems_2fZ_e",
        };
      },
      65092: (e) => {
        e.exports = {
          DialogDropDownMenu_Item: "dropdown_DialogDropDownMenu_Item_2oAiZ",
          DialogDropDownMenu_Separator:
            "dropdown_DialogDropDownMenu_Separator_1Sa12",
          DialogDropDownMenu: "dropdown_DialogDropDownMenu_30wJO",
        };
      },
      27998: (e) => {
        e.exports = {
          DropDownLabelContainer: "dropdownlabel_DropDownLabelContainer_uujQH",
          DropDownLabelIconContainer:
            "dropdownlabel_DropDownLabelIconContainer_3H05C",
          DropDownLabelTextColumn:
            "dropdownlabel_DropDownLabelTextColumn_3WTX4",
          DropDownLabelTitle: "dropdownlabel_DropDownLabelTitle_3g-QH",
          DropDownLabelUpperDescription:
            "dropdownlabel_DropDownLabelUpperDescription_2fl-T",
          DropDownLabelDescription:
            "dropdownlabel_DropDownLabelDescription_cbinv",
        };
      },
      12008: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          GamepadDialogContent: "gamepaddialog_GamepadDialogContent_16sYN",
          GamepadDialogContent_InnerWidth:
            "gamepaddialog_GamepadDialogContent_InnerWidth_2ywyS",
          Field: "gamepaddialog_Field_eKmEX",
          Button: "gamepaddialog_Button_cXzBZ",
          NoMinWidth: "gamepaddialog_NoMinWidth_R7OZb",
          ActiveAndUnfocused: "gamepaddialog_ActiveAndUnfocused_28cXJ",
          StandaloneFieldSeparator:
            "gamepaddialog_StandaloneFieldSeparator_1vcky",
          StandardPadding: "gamepaddialog_StandardPadding_xIITX",
          CompactPadding: "gamepaddialog_CompactPadding_3hgIZ",
          WithDescription: "gamepaddialog_WithDescription_3tB2l",
          WithBottomSeparatorStandard:
            "gamepaddialog_WithBottomSeparatorStandard_GxgIy",
          WithBottomSeparatorThick:
            "gamepaddialog_WithBottomSeparatorThick_39x36",
          HighlightOnFocus: "gamepaddialog_HighlightOnFocus_2HFrm",
          Clickable: "gamepaddialog_Clickable_2Huzv",
          Disabled: "gamepaddialog_Disabled_aIeh3",
          WithBottomSeparator: "gamepaddialog_WithBottomSeparator_3YKpU",
          "ItemFocusAnim-darkerGrey":
            "gamepaddialog_ItemFocusAnim-darkerGrey_3NU8G",
          "ItemFocusAnim-darkGrey":
            "gamepaddialog_ItemFocusAnim-darkGrey_2NVMb",
          FieldChildrenWithIcon: "gamepaddialog_FieldChildrenWithIcon_1aw7c",
          FieldChildrenInner: "gamepaddialog_FieldChildrenInner_2o2fX",
          FieldClickTarget: "gamepaddialog_FieldClickTarget_1cGG5",
          FieldIcon: "gamepaddialog_FieldIcon_2DM37",
          Front: "gamepaddialog_Front_2sj0i",
          BeforeChildren: "gamepaddialog_BeforeChildren_1mbHa",
          FieldLabelRow: "gamepaddialog_FieldLabelRow_2VcTl",
          VerticalAlignCenter: "gamepaddialog_VerticalAlignCenter_16vVn",
          InlineWrapShiftsChildrenBelow:
            "gamepaddialog_InlineWrapShiftsChildrenBelow_3LCXh",
          ExtraPaddingOnChildrenBelow:
            "gamepaddialog_ExtraPaddingOnChildrenBelow_3nLNL",
          ChildrenWidthFixed: "gamepaddialog_ChildrenWidthFixed_ljcbL",
          ChildrenWidthGrow: "gamepaddialog_ChildrenWidthGrow_Jgod1",
          WithFirstRow: "gamepaddialog_WithFirstRow_2bDqk",
          WithChildrenBelow: "gamepaddialog_WithChildrenBelow_37xzV",
          FieldLabel: "gamepaddialog_FieldLabel_3jMlJ",
          FieldLabelValue: "gamepaddialog_FieldLabelValue_KGS2r",
          FieldDescription: "gamepaddialog_FieldDescription_1W1to",
          ModalPosition: "gamepaddialog_ModalPosition_3A5uj",
          VR: "gamepaddialog_VR_3-Nqu",
          WithStandardPadding: "gamepaddialog_WithStandardPadding_1XQXQ",
          NoHeaderPadding: "gamepaddialog_NoHeaderPadding_1Y7qW",
          ModalClickToDismiss: "gamepaddialog_ModalClickToDismiss_27uCS",
          slideInAnimation: "gamepaddialog_slideInAnimation_2JseU",
          ScrollWithin: "gamepaddialog_ScrollWithin_ze1or",
          BasicTextInput: "gamepaddialog_BasicTextInput_3ZR32",
          Toggle: "gamepaddialog_Toggle_9Ql-o",
          ToggleRail: "gamepaddialog_ToggleRail_2bl0i",
          On: "gamepaddialog_On_yLrDA",
          ToggleSwitch: "gamepaddialog_ToggleSwitch_1PQpp",
          LabelFieldValue: "gamepaddialog_LabelFieldValue_3pteV",
          DropDownControlButtonContents:
            "gamepaddialog_DropDownControlButtonContents_3OHR1",
          Spacer: "gamepaddialog_Spacer_2H-4-",
          DropDownRow: "gamepaddialog_DropDownRow_1fwM1",
          IconContainer: "gamepaddialog_IconContainer_3xrmZ",
          Label: "gamepaddialog_Label_sNbXz",
          ControlsListOuterPanel: "gamepaddialog_ControlsListOuterPanel_2XSsN",
          StandardSpacing: "gamepaddialog_StandardSpacing_1_1cc",
          ExtraSpacing: "gamepaddialog_ExtraSpacing_3CqNn",
          ItemMaxSizeDesktop: "gamepaddialog_ItemMaxSizeDesktop_30JCQ",
          AlignRight: "gamepaddialog_AlignRight_DfEz4",
          AlignLeft: "gamepaddialog_AlignLeft_32h79",
          AlignCenter: "gamepaddialog_AlignCenter_2ilj8",
          FullWidth: "gamepaddialog_FullWidth_3vgH-",
          ControlsListChild: "gamepaddialog_ControlsListChild_2LQjj",
          "QuickAccess-Menu": "gamepaddialog_QuickAccess-Menu_1RRDR",
          BottomButtons: "gamepaddialog_BottomButtons_UeBsD",
          TextareaWrapper: "gamepaddialog_TextareaWrapper_eNk_O",
          Textarea: "gamepaddialog_Textarea_35YPS",
          BackgroundAnimation: "gamepaddialog_BackgroundAnimation_3PwEE",
          "ItemFocusAnim-darkerGrey-nocolor":
            "gamepaddialog_ItemFocusAnim-darkerGrey-nocolor_OLaBY",
          "ItemFocusAnim-grey": "gamepaddialog_ItemFocusAnim-grey_2cC0L",
          "ItemFocusAnim-translucent-white-10":
            "gamepaddialog_ItemFocusAnim-translucent-white-10_2ZXhF",
          "ItemFocusAnim-translucent-white-20":
            "gamepaddialog_ItemFocusAnim-translucent-white-20_3FYJQ",
          "ItemFocusAnimBorder-darkGrey":
            "gamepaddialog_ItemFocusAnimBorder-darkGrey_2bQL7",
          "ItemFocusAnim-green": "gamepaddialog_ItemFocusAnim-green_3YEiB",
          focusAnimation: "gamepaddialog_focusAnimation_27hQa",
          hoverAnimation: "gamepaddialog_hoverAnimation_1n0zr",
        };
      },
      28825: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          DropDownControlButton: "gamepaddropdown_DropDownControlButton_v8oJc",
        };
      },
      22308: (e) => {
        e.exports = {
          TogglePasswordVisibilityBtn:
            "gamepadinput_TogglePasswordVisibilityBtn_2-fpY",
          Digits: "gamepadinput_Digits_c-4HN",
          PinDigit: "gamepadinput_PinDigit_15-eR",
        };
      },
      94464: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          PagedSettingsDialog: "gamepadpagedsettings_PagedSettingsDialog_33vqr",
          PagedSettingsDialog_PageContent:
            "gamepadpagedsettings_PagedSettingsDialog_PageContent_3mgb-",
          NoPadding: "gamepadpagedsettings_NoPadding_3ePFF",
          PagedSettingsDialog_PageListColumn:
            "gamepadpagedsettings_PagedSettingsDialog_PageListColumn_1d6VI",
          PagedSettingsDialog_Title:
            "gamepadpagedsettings_PagedSettingsDialog_Title_3aOHb",
          PagedSettingsDialog_PageList:
            "gamepadpagedsettings_PagedSettingsDialog_PageList_gNwoz",
          PagedSettingsDialog_PageList_DisableScrolling:
            "gamepadpagedsettings_PagedSettingsDialog_PageList_DisableScrolling_sMDrh",
          PagedSettingsDialog_PageList_ShowTitle:
            "gamepadpagedsettings_PagedSettingsDialog_PageList_ShowTitle_3UfIN",
          PageSettingsDialog_PageList_NoHeaderPadding:
            "gamepadpagedsettings_PageSettingsDialog_PageList_NoHeaderPadding_2EiZ3",
          PagedSettingsDialog_PageListItem:
            "gamepadpagedsettings_PagedSettingsDialog_PageListItem_2mL2H",
          DisabledItem: "gamepadpagedsettings_DisabledItem_1G3wh",
          Active: "gamepadpagedsettings_Active_1ELdD",
          "ItemFocusAnim-darkerGrey":
            "gamepadpagedsettings_ItemFocusAnim-darkerGrey_2Shps",
          "ItemFocusAnim-darkGrey":
            "gamepadpagedsettings_ItemFocusAnim-darkGrey_2x0HR",
          PageListItem_Icon: "gamepadpagedsettings_PageListItem_Icon_3f2IO",
          PageListItem_Title: "gamepadpagedsettings_PageListItem_Title_4niDT",
          Separator: "gamepadpagedsettings_Separator_3sUwu",
          PagedSettingDialog_ContentColumn:
            "gamepadpagedsettings_PagedSettingDialog_ContentColumn_ZjHHX",
          Up: "gamepadpagedsettings_Up_1dnQH",
          ContentTransition: "gamepadpagedsettings_ContentTransition_1IuEv",
          Enter: "gamepadpagedsettings_Enter_1GyNi",
          EnterActive: "gamepadpagedsettings_EnterActive_3MKje",
          Exit: "gamepadpagedsettings_Exit_3Xxqh",
          ExitActive: "gamepadpagedsettings_ExitActive_13X1O",
          Down: "gamepadpagedsettings_Down_1C1Jj",
          BackgroundAnimation: "gamepadpagedsettings_BackgroundAnimation_5VEJ9",
          "ItemFocusAnim-darkerGrey-nocolor":
            "gamepadpagedsettings_ItemFocusAnim-darkerGrey-nocolor_gmWXV",
          "ItemFocusAnim-grey": "gamepadpagedsettings_ItemFocusAnim-grey_2_WUb",
          "ItemFocusAnim-translucent-white-10":
            "gamepadpagedsettings_ItemFocusAnim-translucent-white-10_3JK1V",
          "ItemFocusAnim-translucent-white-20":
            "gamepadpagedsettings_ItemFocusAnim-translucent-white-20_2PDwQ",
          "ItemFocusAnimBorder-darkGrey":
            "gamepadpagedsettings_ItemFocusAnimBorder-darkGrey_21sRA",
          "ItemFocusAnim-green":
            "gamepadpagedsettings_ItemFocusAnim-green_1JVe0",
          focusAnimation: "gamepadpagedsettings_focusAnimation_2mE4Z",
          hoverAnimation: "gamepadpagedsettings_hoverAnimation_2TiOQ",
        };
      },
      6541: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          "error-shake-duration": "500ms",
          SliderControlPanelGroup:
            "gamepadslider_SliderControlPanelGroup_198v6",
          SliderControlAndNotches:
            "gamepadslider_SliderControlAndNotches_23hjX",
          WithDefaultValue: "gamepadslider_WithDefaultValue_2vIQR",
          SliderControl: "gamepadslider_SliderControl_1udlG",
          Disabled: "gamepadslider_Disabled_35GyZ",
          SliderTrack: "gamepadslider_SliderTrack_2_vG6",
          SliderHasNotches: "gamepadslider_SliderHasNotches_1Lr71",
          DefaultValueIsColorRange:
            "gamepadslider_DefaultValueIsColorRange_BKyEN",
          DefaultValueColorLeft: "gamepadslider_DefaultValueColorLeft_3mRyv",
          DefaultValueColorRight: "gamepadslider_DefaultValueColorRight_2KP6T",
          SliderTrackDark: "gamepadslider_SliderTrackDark_20c10",
          SliderHandleContainer: "gamepadslider_SliderHandleContainer_8xNY6",
          VerticalLineSliderHandleContainer:
            "gamepadslider_VerticalLineSliderHandleContainer_2jnK7",
          ParenSliderHandleContainer:
            "gamepadslider_ParenSliderHandleContainer_VKqgk",
          SliderHandle: "gamepadslider_SliderHandle_11PBf",
          SliderHandleFocusPop: "gamepadslider_SliderHandleFocusPop_1RC4f",
          VerticalLineSliderHandle:
            "gamepadslider_VerticalLineSliderHandle_3zRgr",
          ParenSliderHandle: "gamepadslider_ParenSliderHandle_2Yg4-",
          Left: "gamepadslider_Left_2vrO5",
          Icon: "gamepadslider_Icon_K9V_G",
          SliderNotchContainer: "gamepadslider_SliderNotchContainer_2yM7S",
          SliderNotch: "gamepadslider_SliderNotch_LYPXt",
          AlignToEnds: "gamepadslider_AlignToEnds_VvfcC",
          SliderNotchLabel: "gamepadslider_SliderNotchLabel_dbACW",
          AlignToLeft: "gamepadslider_AlignToLeft_3jR_d",
          AlignToRight: "gamepadslider_AlignToRight_OBP79",
          SliderNotchTick: "gamepadslider_SliderNotchTick_u8QEa",
          TickActive: "gamepadslider_TickActive_j418S",
          LabelText: "gamepadslider_LabelText_1eMTv",
          DescriptionValue: "gamepadslider_DescriptionValue_11I0_",
          EditableValue: "gamepadslider_EditableValue_3aMli",
          FakeEditableValue: "gamepadslider_FakeEditableValue_1iWWS",
          RedBorder: "gamepadslider_RedBorder_2fKVy",
          ErrorShake: "gamepadslider_ErrorShake_1Fa-z",
          "error-shake": "gamepadslider_error-shake_1LFde",
          CompoundSlider: "gamepadslider_CompoundSlider_2hwF2",
          CompoundSliderSubSlider:
            "gamepadslider_CompoundSliderSubSlider_uOFmz",
          Right: "gamepadslider_Right_3GOpB",
          CompoundSliderSubSliderLabelContainer:
            "gamepadslider_CompoundSliderSubSliderLabelContainer_2iD1m",
          CompoundSliderSubSliderLabelPositioner:
            "gamepadslider_CompoundSliderSubSliderLabelPositioner_3Tp7J",
          CompoundSliderSubSliderLabel:
            "gamepadslider_CompoundSliderSubSliderLabel_2Yb0r",
          CompoundSliderSubSliderLabelInternal:
            "gamepadslider_CompoundSliderSubSliderLabelInternal_38VX5",
          DefaultValueTickContainer:
            "gamepadslider_DefaultValueTickContainer_2aCoH",
          DefaultValueTick: "gamepadslider_DefaultValueTick_1NgUy",
          BackgroundAnimation: "gamepadslider_BackgroundAnimation_34gou",
          "ItemFocusAnim-darkerGrey-nocolor":
            "gamepadslider_ItemFocusAnim-darkerGrey-nocolor_3uBtl",
          "ItemFocusAnim-darkerGrey":
            "gamepadslider_ItemFocusAnim-darkerGrey_1so9R",
          "ItemFocusAnim-darkGrey":
            "gamepadslider_ItemFocusAnim-darkGrey_3rHHM",
          "ItemFocusAnim-grey": "gamepadslider_ItemFocusAnim-grey_3bS2Y",
          "ItemFocusAnim-translucent-white-10":
            "gamepadslider_ItemFocusAnim-translucent-white-10_1eyjV",
          "ItemFocusAnim-translucent-white-20":
            "gamepadslider_ItemFocusAnim-translucent-white-20_1iqNj",
          "ItemFocusAnimBorder-darkGrey":
            "gamepadslider_ItemFocusAnimBorder-darkGrey_2Pzyj",
          "ItemFocusAnim-green": "gamepadslider_ItemFocusAnim-green_2C-5C",
        };
      },
      80583: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          PagedSettingsDialog: "pagedsettings_PagedSettingsDialog_2sssI",
          PagedSettingsDialog_PageContent:
            "pagedsettings_PagedSettingsDialog_PageContent_CFTLX",
          NoPadding: "pagedsettings_NoPadding_qvR0K",
          PagedSettingsDialog_PageListColumn:
            "pagedsettings_PagedSettingsDialog_PageListColumn_2kwFF",
          Hidden: "pagedsettings_Hidden_1v7Jd",
          NewNoteButton: "pagedsettings_NewNoteButton_g8SKU",
          PagedSettingsDialog_Title:
            "pagedsettings_PagedSettingsDialog_Title_2rjVT",
          PagedSettingsDialog_PageList:
            "pagedsettings_PagedSettingsDialog_PageList_18QCu",
          PagedSettingsDialog_PageList_DisableScrolling:
            "pagedsettings_PagedSettingsDialog_PageList_DisableScrolling_yTqIu",
          PagedSettingsDialog_PageListItem:
            "pagedsettings_PagedSettingsDialog_PageListItem_1-vlr",
          PageListItem_Icon: "pagedsettings_PageListItem_Icon_1rD8X",
          PageListItem_Title: "pagedsettings_PageListItem_Title_2PPbM",
          DisabledItem: "pagedsettings_DisabledItem_oUzYn",
          Active: "pagedsettings_Active_2DpXj",
          PageListSpacer: "pagedsettings_PageListSpacer_3HW2U",
          PageListSeparator: "pagedsettings_PageListSeparator_1Hye7",
          Transparent: "pagedsettings_Transparent_1ahzM",
          HidePageListButton: "pagedsettings_HidePageListButton_3LLH_",
        };
      },
      82472: (e) => {
        e.exports = {
          Group: "radio_Group_1ml4S",
          Button: "radio_Button_Hijmc",
          Disabled: "radio_Disabled_3hmGW",
          Active: "radio_Active_3-_jM",
        };
      },
      20788: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          ReorderableListDialog: "reorderablelist_ReorderableListDialog_2NTC7",
          ModalHeader: "reorderablelist_ModalHeader_3JmF6",
          CloseButtonContainer: "reorderablelist_CloseButtonContainer_3Pp8L",
          ReorderableListIconIndexCtr:
            "reorderablelist_ReorderableListIconIndexCtr_3cPT1",
          Selected: "reorderablelist_Selected_3HlFd",
          ReorderableListIndexCtr:
            "reorderablelist_ReorderableListIndexCtr_bu2nP",
          ReorderArrow: "reorderablelist_ReorderArrow_1jEeo",
          ReorderableListIndex: "reorderablelist_ReorderableListIndex_3ZoWp",
          ReorderableListItemLabel:
            "reorderablelist_ReorderableListItemLabel_2HB1m",
          Disabled: "reorderablelist_Disabled_QkdPx",
          ReorderableListItem: "reorderablelist_ReorderableListItem_ZO8-r",
          BackgroundAnimation: "reorderablelist_BackgroundAnimation_3Jw1U",
          "ItemFocusAnim-darkerGrey-nocolor":
            "reorderablelist_ItemFocusAnim-darkerGrey-nocolor_T4rhf",
          "ItemFocusAnim-darkerGrey":
            "reorderablelist_ItemFocusAnim-darkerGrey_3gv_g",
          "ItemFocusAnim-darkGrey":
            "reorderablelist_ItemFocusAnim-darkGrey_2Uq4O",
          "ItemFocusAnim-grey": "reorderablelist_ItemFocusAnim-grey_8Gnfe",
          "ItemFocusAnim-translucent-white-10":
            "reorderablelist_ItemFocusAnim-translucent-white-10_3iJJl",
          "ItemFocusAnim-translucent-white-20":
            "reorderablelist_ItemFocusAnim-translucent-white-20_1bgRU",
          "ItemFocusAnimBorder-darkGrey":
            "reorderablelist_ItemFocusAnimBorder-darkGrey_108fZ",
          "ItemFocusAnim-green": "reorderablelist_ItemFocusAnim-green_1jzI2",
          focusAnimation: "reorderablelist_focusAnimation_3yn4k",
          hoverAnimation: "reorderablelist_hoverAnimation_3lmWT",
        };
      },
      24977: (e) => {
        e.exports = {
          Toggle: "toggle_Toggle_3Sl0Q",
          Disabled: "toggle_Disabled_M8qsA",
          ToggleRail: "toggle_ToggleRail_2Fw7g",
          Highlight: "toggle_Highlight_2OUxg",
          On: "toggle_On_317le",
          Off: "toggle_Off_3blKB",
          ToggleSwitch: "toggle_ToggleSwitch_3IWp5",
          ToggleRow: "toggle_ToggleRow_1MBq0",
          Label: "toggle_Label_1Dhs8",
        };
      },
      82715: (e) => {
        e.exports = {
          NewEmoticonIndicator: "emoticon_NewEmoticonIndicator_3O2gR",
          NewEmoticonCircle: "emoticon_NewEmoticonCircle_JRMFr",
          EmoticonSelector: "emoticon_EmoticonSelector_1_1QI",
          emoticon: "emoticon_emoticon_AB86v",
          large: "emoticon_large_4xBaT",
          EmoticonSelector_Emoticons:
            "emoticon_EmoticonSelector_Emoticons_XWWY6",
          EmoticonSelector_Separator:
            "emoticon_EmoticonSelector_Separator_2rvMU",
          EmoticonSelector_SeparatorBackground:
            "emoticon_EmoticonSelector_SeparatorBackground_3_kYc",
          EmoticonSelector_Controls: "emoticon_EmoticonSelector_Controls_2cdkF",
          EmoticonSelector_Item: "emoticon_EmoticonSelector_Item_2C8r7",
          EmoticonSelector_Item_New: "emoticon_EmoticonSelector_Item_New_1vWJH",
          EffectHeading: "emoticon_EffectHeading_2-uNY",
          StickerHeading: "emoticon_StickerHeading_3-4KS",
          GetFestive: "emoticon_GetFestive_1tX6q",
          TopDivider: "emoticon_TopDivider_2A8Fl",
          BottomDivider: "emoticon_BottomDivider_2IZ1K",
          StickerButton: "emoticon_StickerButton_3Wc3j",
          EffectButton: "emoticon_EffectButton_nnnSn",
          EmoticonHover: "emoticon_EmoticonHover_36iQ4",
          Info: "emoticon_Info_1EGMu",
          Name: "emoticon_Name_1Ancw",
          AppName: "emoticon_AppName_335w0",
          StickerHoverSticker: "emoticon_StickerHoverSticker_2VN79",
          EffectHoverEffect: "emoticon_EffectHoverEffect_3ngRv",
          PickerTab: "emoticon_PickerTab_3JpKJ",
          Clock: "emoticon_Clock_2osi8",
          EmoticonItem: "emoticon_EmoticonItem_gZL64",
        };
      },
      93611: (e) => {
        e.exports = {
          Emoticon_Toggle: "emoticonsuggestion_Emoticon_Toggle_Y5J3n",
          Active: "emoticonsuggestion_Active_YCbwL",
          Emoticon: "emoticonsuggestion_Emoticon_2o57_",
        };
      },
      58073: (e) => {
        e.exports = {
          Ctn: "meetsteambbcode_Ctn_ZXlue",
          CtnRegistered: "meetsteambbcode_CtnRegistered_3PeTr",
          SessionTitle: "meetsteambbcode_SessionTitle_3vGq3",
          SessionDesc: "meetsteambbcode_SessionDesc_24r8E",
          SessionOptions: "meetsteambbcode_SessionOptions_3KAHx",
          SessionColumnCtn: "meetsteambbcode_SessionColumnCtn_iUmtJ",
          SessionInstance: "meetsteambbcode_SessionInstance_1igTM",
          Button: "meetsteambbcode_Button_2qgSQ",
          Title: "meetsteambbcode_Title_3iF42",
          TimeFrame: "meetsteambbcode_TimeFrame_3HLk0",
          Max: "meetsteambbcode_Max_1-LTO",
          InstanceDivider: "meetsteambbcode_InstanceDivider_2IUfD",
          Day: "meetsteambbcode_Day_2Zkbw",
          Time: "meetsteambbcode_Time_8oQG_",
          Registering: "meetsteambbcode_Registering_td3x9",
          Registered: "meetsteambbcode_Registered_1D1F4",
          Unregistering: "meetsteambbcode_Unregistering_twKyI",
          CompleteRegistrationCtn:
            "meetsteambbcode_CompleteRegistrationCtn_6ykmN",
          Visible: "meetsteambbcode_Visible_3WTs5",
          "confirm-panel-intro": "meetsteambbcode_confirm-panel-intro_1zMMd",
        };
      },
      82211: (e) => {
        e.exports = {
          Header1: "eventbbcodeparser_Header1_SPYFj",
          Header2: "eventbbcodeparser_Header2_QuKtT",
          Header3: "eventbbcodeparser_Header3_3s7cU",
          Link: "eventbbcodeparser_Link_29bMZ",
          LinkHost: "eventbbcodeparser_LinkHost_16eO9",
          LinkButton: "eventbbcodeparser_LinkButton_2HnDg",
          UnorderedList: "eventbbcodeparser_UnorderedList_2FoSx",
          OrderedList: "eventbbcodeparser_OrderedList_vV4Iw",
          StoreWidget: "eventbbcodeparser_StoreWidget_36Y-l",
          MedalTVWidget: "eventbbcodeparser_MedalTVWidget_1j2vi",
          LoyaltyRewardCtn: "eventbbcodeparser_LoyaltyRewardCtn_14p7R",
          SaleSectionCtn: "eventbbcodeparser_SaleSectionCtn_39HWX",
          SaleTextCtn: "eventbbcodeparser_SaleTextCtn_2Tqq0",
          ReminderCtn: "eventbbcodeparser_ReminderCtn_25AZk",
          BlockQuote: "eventbbcodeparser_BlockQuote_2cY7b",
          SocialLink: "eventbbcodeparser_SocialLink_2LAnc",
          SocialIcon: "eventbbcodeparser_SocialIcon_dDjYN",
          LocalizeBlock: "eventbbcodeparser_LocalizeBlock_1oBce",
          CheckMark: "eventbbcodeparser_CheckMark_24AtT",
          ScreenshotCarousel: "eventbbcodeparser_ScreenshotCarousel_3uA0h",
        };
      },
      13527: (e) => {
        e.exports = {
          FlexColumnContainer: "eventreminder_FlexColumnContainer_15ufN",
          FullStartTime: "eventreminder_FullStartTime_1YLHW",
          ReminderDialog: "eventreminder_ReminderDialog_3YUEY",
          ReminderOptions: "eventreminder_ReminderOptions_1Tp8K",
          ReminderBackground: "eventreminder_ReminderBackground_TNf9_",
          ReminderExpandsLeft: "eventreminder_ReminderExpandsLeft_38Xly",
          ReminderOption: "eventreminder_ReminderOption_26nnh",
          Unverified: "eventreminder_Unverified_1dcmA",
          CheckboxWrapper: "eventreminder_CheckboxWrapper_1xuKE",
          ReminderCheckBox: "eventreminder_ReminderCheckBox_vPo2j",
          IconMode: "eventreminder_IconMode_1YjsR",
          RemindBell: "eventreminder_RemindBell_3-_M2",
          RemindCheck: "eventreminder_RemindCheck_2qaPr",
          ReminderDefault: "eventreminder_ReminderDefault_19p2Q",
          TextMode: "eventreminder_TextMode_553rC",
          ReminderCheck: "eventreminder_ReminderCheck_3fMhC",
          ReminderOpennedOptions: "eventreminder_ReminderOpennedOptions_vBuhk",
          ReminderOptionsHeader: "eventreminder_ReminderOptionsHeader_2oOZC",
          ReminderCalendarOptions:
            "eventreminder_ReminderCalendarOptions_VO6FS",
          ReminderSettings: "eventreminder_ReminderSettings_2Pn59",
          ReminderNotes: "eventreminder_ReminderNotes_3qE0w",
          RpcThrobber: "eventreminder_RpcThrobber_3F3aB",
        };
      },
      23568: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          PartnerEventFont: "partnereventshared_PartnerEventFont_LK4bX",
          Clear: "partnereventshared_Clear_3UhsQ",
          Divider: "partnereventshared_Divider_3B5HO",
          EventDefaultRowContainer:
            "partnereventshared_EventDefaultRowContainer_3WO6c",
          EventStartPublic: "partnereventshared_EventStartPublic_2LU_Y",
          EventOptions: "partnereventshared_EventOptions_2r_Qe",
          EventStatusContainer: "partnereventshared_EventStatusContainer_vOPSZ",
          FlexColumnContainer: "partnereventshared_FlexColumnContainer_1qhLq",
          FlexRowContainer: "partnereventshared_FlexRowContainer_Ke5f1",
          Centered: "partnereventshared_Centered_qy-9m",
          FlexContainSpaceBetween:
            "partnereventshared_FlexContainSpaceBetween_3nPGW",
          FlexRowWrapSpaceBetweenContainer:
            "partnereventshared_FlexRowWrapSpaceBetweenContainer_19CjI",
          FlexRowWrapFlexStartContainer:
            "partnereventshared_FlexRowWrapFlexStartContainer_tyP_c",
          SaveBackground: "partnereventshared_SaveBackground_V0mbI",
          SupportedGroupLabel: "partnereventshared_SupportedGroupLabel_APmJN",
          LanguageWithContent: "partnereventshared_LanguageWithContent_2Cd1u",
          LargeInput: "partnereventshared_LargeInput_fq68I",
          InputBorder: "partnereventshared_InputBorder_Obyys",
          RadioOption: "partnereventshared_RadioOption_3iJX1",
          FlexGrow: "partnereventshared_FlexGrow_1KvZA",
          EventEditorTextTitleCtn:
            "partnereventshared_EventEditorTextTitleCtn_htm7d",
          doclink: "partnereventshared_doclink_1-bAK",
          EventEditorUnpaddedTextTitle:
            "partnereventshared_EventEditorUnpaddedTextTitle_9hsCL",
          EventEditorTextTitle: "partnereventshared_EventEditorTextTitle_18fHx",
          EventEditorTextTitleLengthInfo:
            "partnereventshared_EventEditorTextTitleLengthInfo_2nHJ1",
          CollapsableSectionTitle:
            "partnereventshared_CollapsableSectionTitle_2zejQ",
          SectionTitle: "partnereventshared_SectionTitle_7Qc_e",
          EventSectionTitleCtn: "partnereventshared_EventSectionTitleCtn_onqWK",
          EventSectionTitle: "partnereventshared_EventSectionTitle_Idd_A",
          EventSectionSpacer: "partnereventshared_EventSectionSpacer_1Bloe",
          EventSectionMoreBtn: "partnereventshared_EventSectionMoreBtn_uckBi",
          EventEditorSpacerPadding:
            "partnereventshared_EventEditorSpacerPadding_1RBfN",
          EventEditorVisibilityCtn:
            "partnereventshared_EventEditorVisibilityCtn_1nqBh",
          EventEditorTextSubTitle:
            "partnereventshared_EventEditorTextSubTitle_1i_pY",
          FloatingTitle: "partnereventshared_FloatingTitle_31XRt",
          EventEditorEventStatus:
            "partnereventshared_EventEditorEventStatus_2JGoL",
          EventHidden: "partnereventshared_EventHidden_2H6fn",
          EventVisible: "partnereventshared_EventVisible_3Z0Qr",
          EventBarBackAndTitle: "partnereventshared_EventBarBackAndTitle_2rTjP",
          EventBarTitleCtn: "partnereventshared_EventBarTitleCtn_WfVze",
          EventBarTitle: "partnereventshared_EventBarTitle_29kVX",
          EventEditButtons: "partnereventshared_EventEditButtons_3nYmf",
          EventStatus: "partnereventshared_EventStatus_1sOFB",
          EventBarBack: "partnereventshared_EventBarBack_s3r9b",
          EditPreviewButton: "partnereventshared_EditPreviewButton_1FhZQ",
          Delete: "partnereventshared_Delete_32kR7",
          Disabled: "partnereventshared_Disabled_2wVCx",
          BrowseMoreButton: "partnereventshared_BrowseMoreButton_1Yrcl",
          Button: "partnereventshared_Button_1ABCO",
          Icon: "partnereventshared_Icon_1dDpS",
          Primary: "partnereventshared_Primary_30ipl",
          ClearThings: "partnereventshared_ClearThings_3x_qL",
          OnIndicator: "partnereventshared_OnIndicator_1GBsB",
          OffIndicator: "partnereventshared_OffIndicator_w0I94",
          IconImage: "partnereventshared_IconImage_2RY89",
          RightColumnContainer: "partnereventshared_RightColumnContainer_30-E9",
          EventPublishButton: "partnereventshared_EventPublishButton_3nIAe",
          FloatRight: "partnereventshared_FloatRight_1bzHf",
          TTip: "partnereventshared_TTip_2aWuk",
          ValveSupportOnly: "partnereventshared_ValveSupportOnly_wC6-U",
          ArtworkAgeNotAppropriate:
            "partnereventshared_ArtworkAgeNotAppropriate_3V64Z",
          EventDashboardHeader: "partnereventshared_EventDashboardHeader_2kZr_",
          ContainerSpaceBetween:
            "partnereventshared_ContainerSpaceBetween_3gYZG",
          EventDashboardTitles: "partnereventshared_EventDashboardTitles_1ym4r",
          EventDashboardActions:
            "partnereventshared_EventDashboardActions_2z_02",
          EventDashboardStatsCtn:
            "partnereventshared_EventDashboardStatsCtn_3IptF",
          EventDashboardAppCtn: "partnereventshared_EventDashboardAppCtn_2iPrK",
          maintitle: "partnereventshared_maintitle_vEk_z",
          AppTitle: "partnereventshared_AppTitle_l-Ow7",
          subtitle: "partnereventshared_subtitle_2mJfc",
          ValveOnlyBackground: "partnereventshared_ValveOnlyBackground_Jckrn",
          ValveOnlyAdminBackground:
            "partnereventshared_ValveOnlyAdminBackground_3HVu1",
          Columns: "partnereventshared_Columns_1oVIR",
          LeftCol: "partnereventshared_LeftCol_3PPz-",
          RightCol: "partnereventshared_RightCol_25xel",
          DropDownScroll: "partnereventshared_DropDownScroll_1CewB",
          DropDownScrollItem: "partnereventshared_DropDownScrollItem_3D3hC",
          CloseButton: "partnereventshared_CloseButton_gR2gS",
          CloseSectionTools: "partnereventshared_CloseSectionTools_1d0D9",
          HalfColumn: "partnereventshared_HalfColumn_3Xmp4",
          InsetOption: "partnereventshared_InsetOption_PKGX8",
          tooltip_Ctn: "partnereventshared_tooltip_Ctn_3nqxI",
          SaleEditorSpacing: "partnereventshared_SaleEditorSpacing_2ZGwd",
          SaleSectionHeader: "partnereventshared_SaleSectionHeader_2WMiQ",
          SaleImageCtn: "partnereventshared_SaleImageCtn_1_lNQ",
          SaleImageHelper: "partnereventshared_SaleImageHelper_12S7L",
          SaleSectionSubtitle: "partnereventshared_SaleSectionSubtitle_2rIaW",
          SaleSectionContainer: "partnereventshared_SaleSectionContainer_3gb3J",
          AddSectionButton: "partnereventshared_AddSectionButton_2_djj",
          EventElementRequired: "partnereventshared_EventElementRequired_12rm6",
          EventElementOptional: "partnereventshared_EventElementOptional_1mpG6",
          EventElementComplete: "partnereventshared_EventElementComplete_1uZCv",
          HelperTooltip: "partnereventshared_HelperTooltip_3T6MQ",
          PixelOffsetCtn: "partnereventshared_PixelOffsetCtn_3Xk96",
          PixelOffsetRow: "partnereventshared_PixelOffsetRow_2PtWb",
          PixelOffsetNote: "partnereventshared_PixelOffsetNote_JjEwa",
          PixelOffsetCallout: "partnereventshared_PixelOffsetCallout_f5QZT",
          Error: "partnereventshared_Error_mSSED",
          GamepadOnlyScrollPanel:
            "partnereventshared_GamepadOnlyScrollPanel_2NO6w",
        };
      },
      14729: (e) => {
        e.exports = {
          SpeakerOuter: "presenterpopup_SpeakerOuter_3rRqP",
          Speaker: "presenterpopup_Speaker_3F7-F",
          SpeakerPopup: "presenterpopup_SpeakerPopup_3y7kV",
          SpeakerInfoOuter: "presenterpopup_SpeakerInfoOuter_1NC9n",
          SpeakerInfoInner: "presenterpopup_SpeakerInfoInner_1bMpE",
          SpeakerTitle: "presenterpopup_SpeakerTitle_2Vo0l",
          SpeakerBio: "presenterpopup_SpeakerBio_2yP7s",
          SpeakerHover: "presenterpopup_SpeakerHover_16UyH",
        };
      },
      49517: (e) => {
        e.exports = { ErrorDiv: "saleeventbbcodeparser_ErrorDiv_XeZEx" };
      },
      64506: (e) => {
        e.exports = {
          Dark: "footericons_Dark_2UAf_",
          Background: "footericons_Background_yjs9m",
          Foreground: "footericons_Foreground_JgT6Z",
          Light: "footericons_Light_1LgIo",
          Knockout: "footericons_Knockout_3BGwJ",
          SizeSmall: "footericons_SizeSmall_1Zc5j",
          SizeMedium: "footericons_SizeMedium_12wgo",
          SizeLarge: "footericons_SizeLarge_3E-9r",
          ChordSummary: "footericons_ChordSummary_2NB_h",
        };
      },
      96655: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          Heading: "managefriends_Heading_3kTQI",
          Body: "managefriends_Body_2s393",
          HeaderBlock: "managefriends_HeaderBlock_X9bYN",
          Background: "managefriends_Background_1xwi0",
          DimBackground: "managefriends_DimBackground_2N55H",
          Input: "managefriends_Input_1BUty",
          CopyContainer: "managefriends_CopyContainer_1HjkZ",
          Text: "managefriends_Text_1ehqR",
          Link: "managefriends_Link_18Sc0",
          Button: "managefriends_Button_2772E",
          GenerateLinkButton: "managefriends_GenerateLinkButton_T52tU",
          ProfileCard: "managefriends_ProfileCard_28a_C",
          UserContainer: "managefriends_UserContainer_29w-2",
          Image: "managefriends_Image_1n4lD",
          ProfileContent: "managefriends_ProfileContent_1qz9x",
          ProfileLink: "managefriends_ProfileLink_1tEt0",
          Failure: "managefriends_Failure_UoMCo",
          Success: "managefriends_Success_zNkyw",
          FriendCodeSelector: "managefriends_FriendCodeSelector_3nmSp",
          SendInviteButton: "managefriends_SendInviteButton_kcAlk",
        };
      },
      73151: (e) => {
        e.exports = {
          Spinner: "gamepadui_svg_library_Spinner_3m_2l",
          SpinnerSpokeFade: "gamepadui_svg_library_SpinnerSpokeFade_2Wg5d",
          WirelessConnectingActive:
            "gamepadui_svg_library_WirelessConnectingActive_cop8-",
          WifiBar1: "gamepadui_svg_library_WifiBar1_1o6HA",
          WifiBar1Anim: "gamepadui_svg_library_WifiBar1Anim_1PDAZ",
          WifiBar2: "gamepadui_svg_library_WifiBar2_1q8-n",
          WifiBar2Anim: "gamepadui_svg_library_WifiBar2Anim_QyijT",
          WifiBar3: "gamepadui_svg_library_WifiBar3_23ih_",
          WifiBar3Anim: "gamepadui_svg_library_WifiBar3Anim_2wGDz",
          WifiBar4: "gamepadui_svg_library_WifiBar4_2DSRH",
          WifiBar4Anim: "gamepadui_svg_library_WifiBar4Anim_3jrA8",
          GenericGamepadHighlight:
            "gamepadui_svg_library_GenericGamepadHighlight_3-ZZD",
          GenericGamepadEmpty:
            "gamepadui_svg_library_GenericGamepadEmpty_1toTl",
        };
      },
      91744: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          PanelSection: "quickaccesscontrols_PanelSection_3gY0a",
          PanelSectionTitle: "quickaccesscontrols_PanelSectionTitle_1IigU",
          Text: "quickaccesscontrols_Text_1cokl",
          PanelSectionRow: "quickaccesscontrols_PanelSectionRow_3LM_Z",
          Label: "quickaccesscontrols_Label_2HohC",
          ComingSoon: "quickaccesscontrols_ComingSoon_3GXel",
          QuickAccessNotifications:
            "quickaccesscontrols_QuickAccessNotifications_2qO6x",
          VR: "quickaccesscontrols_VR_1sOgl",
          EmptyNotifications: "quickaccesscontrols_EmptyNotifications_1W8Ty",
          LowBattery: "quickaccesscontrols_LowBattery_3R8-d",
          ReallyLow: "quickaccesscontrols_ReallyLow_1iaw2",
          LowBatteryGauge: "quickaccesscontrols_LowBatteryGauge_yBJZj",
          Remaining: "quickaccesscontrols_Remaining_1tx3e",
          BatterySectionContainer:
            "quickaccesscontrols_BatterySectionContainer_2prtQ",
          BatteryIcon: "quickaccesscontrols_BatteryIcon_1BT6i",
          BatteryPercentageLabel:
            "quickaccesscontrols_BatteryPercentageLabel_3S2zx",
          BatteryDetailsLabels:
            "quickaccesscontrols_BatteryDetailsLabels_2jtM9",
          BatteryProjectedValue:
            "quickaccesscontrols_BatteryProjectedValue_3ISN8",
          BatteryProjectedLabel:
            "quickaccesscontrols_BatteryProjectedLabel_1N4s2",
          BackgroundAnimation: "quickaccesscontrols_BackgroundAnimation_nTEVK",
          "ItemFocusAnim-darkerGrey-nocolor":
            "quickaccesscontrols_ItemFocusAnim-darkerGrey-nocolor_2HixS",
          "ItemFocusAnim-darkerGrey":
            "quickaccesscontrols_ItemFocusAnim-darkerGrey_qTKB3",
          "ItemFocusAnim-darkGrey":
            "quickaccesscontrols_ItemFocusAnim-darkGrey_3s1Va",
          "ItemFocusAnim-grey": "quickaccesscontrols_ItemFocusAnim-grey_1DbWa",
          "ItemFocusAnim-translucent-white-10":
            "quickaccesscontrols_ItemFocusAnim-translucent-white-10_wzXlo",
          "ItemFocusAnim-translucent-white-20":
            "quickaccesscontrols_ItemFocusAnim-translucent-white-20_2l5JI",
          "ItemFocusAnimBorder-darkGrey":
            "quickaccesscontrols_ItemFocusAnimBorder-darkGrey_3wM82",
          "ItemFocusAnim-green":
            "quickaccesscontrols_ItemFocusAnim-green_1-PV8",
          focusAnimation: "quickaccesscontrols_focusAnimation_38pAq",
          hoverAnimation: "quickaccesscontrols_hoverAnimation_r9xRK",
        };
      },
      28790: (e) => {
        e.exports = {
          ScrollFade: "scrollfade_ScrollFade_30Xro",
          ScrolledToTop: "scrollfade_ScrolledToTop_3bWn5",
          ScrolledToBottom: "scrollfade_ScrolledToBottom_2wvQS",
        };
      },
      46384: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          FriendsListInsetShadowCtn:
            "insetshadow_FriendsListInsetShadowCtn_1qeW3",
          FriendListInsetShadowTop:
            "insetshadow_FriendListInsetShadowTop_1osHa",
          FriendListInsetShadowBottom:
            "insetshadow_FriendListInsetShadowBottom_2OoTJ",
        };
      },
      90170: (e) => {
        e.exports = {
          DateAndTime: "localdateandtime_DateAndTime_2V6GL",
          DateAndTimeInline: "localdateandtime_DateAndTimeInline_HZ6b2",
          At: "localdateandtime_At_Fn5EU",
          ActiveEvent: "localdateandtime_ActiveEvent_rT7Ek",
          ActiveEventCallOut: "localdateandtime_ActiveEventCallOut_2pJft",
          RightSideTitles: "localdateandtime_RightSideTitles_4LAnP",
          DateToolTip: "localdateandtime_DateToolTip_2E5LH",
          ShortDateAndTime: "localdateandtime_ShortDateAndTime_MBkkh",
          ShortDateRange: "localdateandtime_ShortDateRange_3CN6I",
        };
      },
      79880: (e) => {
        e.exports = {
          BodyNoScroll: "modals_BodyNoScroll_1Xs5d",
          BodyNoScrollDialog: "modals_BodyNoScrollDialog_3jhMI",
          OverlayModal: "modals_OverlayModal_24YFX",
          GamepadOnlyModalWrapper: "modals_GamepadOnlyModalWrapper_1GlTs",
          GamepadOnlyPanelWrapper: "modals_GamepadOnlyPanelWrapper_1aY-r",
          ModalDialog: "modals_ModalDialog_32QRv",
        };
      },
      40657: (e) => {
        e.exports = {
          QRBits: "qrcode_QRBits_3BALY",
          Bit: "qrcode_Bit_1YVDT",
          Active: "qrcode_Active_1zNnN",
        };
      },
      43132: (e) => {
        e.exports = {
          SegmentedCharacterInput:
            "segmentedinputs_SegmentedCharacterInput_1gzkm",
          Disabled: "segmentedinputs_Disabled_4Wrcv",
          Danger: "segmentedinputs_Danger_3lEvx",
          BackupCode: "segmentedinputs_BackupCode_V5oAz",
          Loading: "segmentedinputs_Loading_3khV2",
          Input: "segmentedinputs_Input_3xcXq",
        };
      },
      36642: (e) => {
        e.exports = {
          ManualOverlayContainer: "logsettings_ManualOverlayContainer_jKuCG",
          DropDownRow: "logsettings_DropDownRow_cv_p8",
          IconContainer: "logsettings_IconContainer_ka3_o",
          Label: "logsettings_Label_3ces1",
        };
      },
      70734: (e) => {
        e.exports = {
          v6: "shared_common_v6_2Lxgd",
          SubText: "shared_common_SubText_vg0EO",
          AvatarImageContainer: "shared_common_AvatarImageContainer_33hdF",
          GameImageContainer: "shared_common_GameImageContainer_2OYAD",
          AvatarImage: "shared_common_AvatarImage_2CQYc",
          STV_HomeGridPreviewDetails:
            "shared_common_STV_HomeGridPreviewDetails_Yncr-",
          ChatAvatarImage: "shared_common_ChatAvatarImage_1cUR_",
          EditButton: "shared_common_EditButton_VsZ-b",
          Small: "shared_common_Small_3M4j8",
          FlexCenter: "shared_common_FlexCenter_1R3yc",
          ThrobberCtn: "shared_common_ThrobberCtn_3m7p6",
          MarkdownLink: "shared_common_MarkdownLink_1Wqum",
          SummaryTextArea: "shared_common_SummaryTextArea_cNMZ-",
          RemoveIcon: "shared_common_RemoveIcon_3NeLW",
        };
      },
      75223: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          EmoticonBow: "shared_svg_library_EmoticonBow_2Llzt",
          EmoticonBow_st0: "shared_svg_library_EmoticonBow_st0_Fw2WG",
          EmoticonBow_st1: "shared_svg_library_EmoticonBow_st1_luj0t",
          SteamDeckCompatInfo: "shared_svg_library_SteamDeckCompatInfo_3VPnv",
          SteamDeckCompatLogo: "shared_svg_library_SteamDeckCompatLogo_1dzQL",
          SteamDeckCompatIcon: "shared_svg_library_SteamDeckCompatIcon_3hAj0",
          SteamDeckCompatVerified:
            "shared_svg_library_SteamDeckCompatVerified_kEODD",
          SteamDeckCompatPlayable:
            "shared_svg_library_SteamDeckCompatPlayable_mPD42",
          SteamDeckCompatUnsupported:
            "shared_svg_library_SteamDeckCompatUnsupported_2LAax",
          SteamDeckCompatUnknown:
            "shared_svg_library_SteamDeckCompatUnknown_xBqU_",
        };
      },
      13991: (e) => {
        e.exports = {
          "duration-app-launch": "800ms",
          mentionDialogPosition: "suggestdialog_mentionDialogPosition_3isL0",
          mentionDialog: "suggestdialog_mentionDialog_1QU3c",
          mentionSearchText: "suggestdialog_mentionSearchText_1xVcZ",
          suggestOption: "suggestdialog_suggestOption_vquL9",
          mentionSearchOption: "suggestdialog_mentionSearchOption_3O0sM",
          manyMatches: "suggestdialog_manyMatches_1cweL",
          selected: "suggestdialog_selected_boNOG",
          nickname: "suggestdialog_nickname_2dKJq",
          mentionSearchMatch: "suggestdialog_mentionSearchMatch_2_0t_",
        };
      },
      97671: (e) => {
        e.exports = {
          LoadingWrapper: "throbber_LoadingWrapper_2wAKy",
          Static: "throbber_Static_1Qfwp",
          none: "throbber_none_1F0lz",
          bottomCircle: "throbber_bottomCircle_2qjZm",
          noString: "throbber_noString_1Sy0p",
          Throbber: "throbber_Throbber_lYUEj",
          throbber_small: "throbber_throbber_small_2zbyh",
          throbber_medium: "throbber_throbber_medium_2CphU",
          throbber_large: "throbber_throbber_large_1x18v",
          throbber_center_wrapper: "throbber_throbber_center_wrapper_3IYPz",
          ThrobberText: "throbber_ThrobberText_21nVi",
          blur: "throbber_blur_1ctjA",
          ThrobberRoundLoop: "throbber_ThrobberRoundLoop_1O-cW",
          roundOuterOutline: "throbber_roundOuterOutline_1Vv--",
          roundOuter: "throbber_roundOuter_2K0Lz",
          roundFill: "throbber_roundFill_3sQFk",
          ThrobberFillLoop: "throbber_ThrobberFillLoop_ofdi9",
          topCircle: "throbber_topCircle_1LZff",
          circlePulse: "throbber_circlePulse_1XN6Z",
          ThrobberTopCircleLoop: "throbber_ThrobberTopCircleLoop_1jALk",
          ThrobberBottomCircleLoop: "throbber_ThrobberBottomCircleLoop_1KvOg",
          roundThrobber15: "throbber_roundThrobber15_2LGHp",
          roundThrobber14: "throbber_roundThrobber14_2FGCn",
          roundThrobber13: "throbber_roundThrobber13_1X-5j",
          roundThrobber12: "throbber_roundThrobber12_1pj1Q",
          roundThrobber11: "throbber_roundThrobber11_xFmZa",
          roundThrobber10: "throbber_roundThrobber10_3MGYo",
          roundThrobber09: "throbber_roundThrobber09_ktVJ4",
          roundThrobber08: "throbber_roundThrobber08_3s_7m",
          roundThrobber07: "throbber_roundThrobber07_11MVp",
          roundThrobber06: "throbber_roundThrobber06_2cl-m",
          roundThrobber05: "throbber_roundThrobber05_3-JE0",
          roundThrobber04: "throbber_roundThrobber04_1xNIK",
          roundThrobber03: "throbber_roundThrobber03_1S17y",
          roundThrobber02: "throbber_roundThrobber02_1-oUJ",
          roundThrobber01: "throbber_roundThrobber01_2tXge",
          ThrobberRoundLoopThickness:
            "throbber_ThrobberRoundLoopThickness_1fs4R",
          throbber_xlarge: "throbber_throbber_xlarge_1gYeZ",
          throbber_xxlarge: "throbber_throbber_xxlarge_3j-p4",
          ThrobberDelayAppear: "throbber_ThrobberDelayAppear_I3aEq",
          Visible: "throbber_Visible_2SwSJ",
          NewThrobber: "throbber_NewThrobber_1m8iQ",
        };
      },
      1150: (e) => {
        e.exports = {
          TextToolTip: "tooltip_TextToolTip_2FxbH",
          ToolTipCustom: "tooltip_ToolTipCustom_3XGRk",
          ToolTipTitle: "tooltip_ToolTipTitle_1LhVf",
          Center: "tooltip_Center_2ZDqE",
          ToolTipInsetContent: "tooltip_ToolTipInsetContent_i4LuY",
        };
      },
      18827: (e) => {
        e.exports = {
          TransitionGroup: "overlappingtransition_TransitionGroup_2PuNB",
          ContentWrapper: "overlappingtransition_ContentWrapper_MGaAv",
        };
      },
      52124: (e) => {
        e.exports = {
          confettiDurationMs: "7000s/s",
          goldfettiDurationMs: "7000s/s",
          goldfettiColorsNum: "3",
          goldfettiEmojiNum: "4",
          crackerDurationMs: "300s/s",
          balloonsDurationMs: "4000s/s",
          balloonsDurationS: "4s/s",
          balloonsDurationJitterS: "1s/s",
          balloonsDurationMaxMs: "5000s/s",
          snowballDurationMs: "3010s/s",
          snowballSpeed: "1s",
          "animation-container": "chatroomeffects_animation-container_3ZR8Q",
          Snowflake: "chatroomeffects_Snowflake_cZ5Au",
          "Snowflake-0": "chatroomeffects_Snowflake-0_2-hBh",
          "snowflake-0": "chatroomeffects_snowflake-0_U-YAV",
          "Snowflake-1": "chatroomeffects_Snowflake-1_2b67l",
          "snowflake-1": "chatroomeffects_snowflake-1_2Rb7w",
          "Snowflake-2": "chatroomeffects_Snowflake-2_2_NWs",
          "snowflake-2": "chatroomeffects_snowflake-2_1Y4tS",
          "Snowflake-3": "chatroomeffects_Snowflake-3_cBxtQ",
          "snowflake-3": "chatroomeffects_snowflake-3_3t5Lt",
          "Snowflake-4": "chatroomeffects_Snowflake-4_1JQNl",
          "snowflake-4": "chatroomeffects_snowflake-4_1vyLw",
          "Snowflake-5": "chatroomeffects_Snowflake-5_cUP1f",
          "snowflake-5": "chatroomeffects_snowflake-5_3louc",
          "Snowflake-6": "chatroomeffects_Snowflake-6_2F8cs",
          "snowflake-6": "chatroomeffects_snowflake-6_3Hfej",
          "Snowflake-7": "chatroomeffects_Snowflake-7_zJ9BE",
          "snowflake-7": "chatroomeffects_snowflake-7_nX1rZ",
          "Snowflake-8": "chatroomeffects_Snowflake-8_3BAdG",
          "snowflake-8": "chatroomeffects_snowflake-8_WFJba",
          "Snowflake-9": "chatroomeffects_Snowflake-9_2DNE8",
          "snowflake-9": "chatroomeffects_snowflake-9_1m6q0",
          "Snowflake-10": "chatroomeffects_Snowflake-10_19m8q",
          "snowflake-10": "chatroomeffects_snowflake-10_3HhrW",
          "Snowflake-11": "chatroomeffects_Snowflake-11_ijWSF",
          "snowflake-11": "chatroomeffects_snowflake-11_vukho",
          "Snowflake-12": "chatroomeffects_Snowflake-12_Ripsa",
          "snowflake-12": "chatroomeffects_snowflake-12_2KXNx",
          "Snowflake-13": "chatroomeffects_Snowflake-13__5IUE",
          "snowflake-13": "chatroomeffects_snowflake-13_35I49",
          "Snowflake-14": "chatroomeffects_Snowflake-14_pmIdk",
          "snowflake-14": "chatroomeffects_snowflake-14_1MH-J",
          "Snowflake-15": "chatroomeffects_Snowflake-15_2nQdH",
          "snowflake-15": "chatroomeffects_snowflake-15_ek7ku",
          "Snowflake-16": "chatroomeffects_Snowflake-16_lJyG7",
          "snowflake-16": "chatroomeffects_snowflake-16_20hUR",
          "Snowflake-17": "chatroomeffects_Snowflake-17_1L0AZ",
          "snowflake-17": "chatroomeffects_snowflake-17_3CfBV",
          "Snowflake-18": "chatroomeffects_Snowflake-18_1ozac",
          "snowflake-18": "chatroomeffects_snowflake-18_HP-ye",
          "Snowflake-19": "chatroomeffects_Snowflake-19_FOXzc",
          "snowflake-19": "chatroomeffects_snowflake-19_1d9D9",
          "Snowflake-20": "chatroomeffects_Snowflake-20_Qt7pR",
          "snowflake-20": "chatroomeffects_snowflake-20_2N-xe",
          confetti: "chatroomeffects_confetti_VelNh",
          "confetti-0": "chatroomeffects_confetti-0_tlO-i",
          "drop-0": "chatroomeffects_drop-0__37zJ",
          "confetti-1": "chatroomeffects_confetti-1_3OuSs",
          "drop-1": "chatroomeffects_drop-1_x-HP7",
          "confetti-2": "chatroomeffects_confetti-2_1mdZ0",
          "drop-2": "chatroomeffects_drop-2_3XfWb",
          "confetti-3": "chatroomeffects_confetti-3_36OCs",
          "drop-3": "chatroomeffects_drop-3_OTZKZ",
          "confetti-4": "chatroomeffects_confetti-4_3NbOc",
          "drop-4": "chatroomeffects_drop-4_1CAil",
          "confetti-5": "chatroomeffects_confetti-5_VnTYG",
          "drop-5": "chatroomeffects_drop-5_1pPPC",
          "confetti-6": "chatroomeffects_confetti-6_3KEfm",
          "drop-6": "chatroomeffects_drop-6_4Wj8s",
          "confetti-7": "chatroomeffects_confetti-7_1C-Ak",
          "drop-7": "chatroomeffects_drop-7_oHsjU",
          "confetti-8": "chatroomeffects_confetti-8_4oJYN",
          "drop-8": "chatroomeffects_drop-8_2y189",
          "confetti-9": "chatroomeffects_confetti-9_1bEjR",
          "drop-9": "chatroomeffects_drop-9_5c9w0",
          "confetti-10": "chatroomeffects_confetti-10_1oRBM",
          "drop-10": "chatroomeffects_drop-10_1L13_",
          "confetti-11": "chatroomeffects_confetti-11_3W9ZL",
          "drop-11": "chatroomeffects_drop-11_vYvGB",
          "confetti-12": "chatroomeffects_confetti-12_2TwZ0",
          "drop-12": "chatroomeffects_drop-12_3b2Dc",
          "confetti-13": "chatroomeffects_confetti-13_1m8Vr",
          "drop-13": "chatroomeffects_drop-13_2n4ZP",
          "confetti-14": "chatroomeffects_confetti-14_1YV6p",
          "drop-14": "chatroomeffects_drop-14_xQzPb",
          "confetti-15": "chatroomeffects_confetti-15_2D2LH",
          "drop-15": "chatroomeffects_drop-15_oKVqM",
          "confetti-16": "chatroomeffects_confetti-16_pvt2J",
          "drop-16": "chatroomeffects_drop-16_T5UBd",
          "confetti-17": "chatroomeffects_confetti-17_2NCF0",
          "drop-17": "chatroomeffects_drop-17_1d8Dj",
          "confetti-18": "chatroomeffects_confetti-18_o_Hf7",
          "drop-18": "chatroomeffects_drop-18_1zoqm",
          "confetti-19": "chatroomeffects_confetti-19_28L_3",
          "drop-19": "chatroomeffects_drop-19_1zkpz",
          "confetti-20": "chatroomeffects_confetti-20_P-SKX",
          "drop-20": "chatroomeffects_drop-20_2HmVc",
          "confetti-21": "chatroomeffects_confetti-21_27GkO",
          "drop-21": "chatroomeffects_drop-21_1T4Mt",
          "confetti-22": "chatroomeffects_confetti-22_1sCDh",
          "drop-22": "chatroomeffects_drop-22_2svz8",
          "confetti-23": "chatroomeffects_confetti-23_9SZ_A",
          "drop-23": "chatroomeffects_drop-23_3vAxI",
          "confetti-24": "chatroomeffects_confetti-24_1Am3e",
          "drop-24": "chatroomeffects_drop-24_RhAjb",
          "confetti-25": "chatroomeffects_confetti-25_1Ja7L",
          "drop-25": "chatroomeffects_drop-25_201NA",
          "confetti-26": "chatroomeffects_confetti-26_2jMUO",
          "drop-26": "chatroomeffects_drop-26_29n7q",
          "confetti-27": "chatroomeffects_confetti-27_2yQQd",
          "drop-27": "chatroomeffects_drop-27_2m3A7",
          "confetti-28": "chatroomeffects_confetti-28_1Qlxx",
          "drop-28": "chatroomeffects_drop-28_18frj",
          "confetti-29": "chatroomeffects_confetti-29_1b2l6",
          "drop-29": "chatroomeffects_drop-29_2Q2T3",
          "confetti-30": "chatroomeffects_confetti-30_1JH00",
          "drop-30": "chatroomeffects_drop-30_35aPE",
          "confetti-31": "chatroomeffects_confetti-31_Osdxn",
          "drop-31": "chatroomeffects_drop-31_3xx2U",
          "confetti-32": "chatroomeffects_confetti-32_f1SYA",
          "drop-32": "chatroomeffects_drop-32_215c3",
          "confetti-33": "chatroomeffects_confetti-33_g65ei",
          "drop-33": "chatroomeffects_drop-33_2oegr",
          "confetti-34": "chatroomeffects_confetti-34_2yCKI",
          "drop-34": "chatroomeffects_drop-34_3K9VA",
          "confetti-35": "chatroomeffects_confetti-35_3JsiR",
          "drop-35": "chatroomeffects_drop-35_5jMlo",
          "confetti-36": "chatroomeffects_confetti-36_R14L0",
          "drop-36": "chatroomeffects_drop-36_13yR4",
          "confetti-37": "chatroomeffects_confetti-37_24ZmD",
          "drop-37": "chatroomeffects_drop-37_2uYeL",
          "confetti-38": "chatroomeffects_confetti-38_25jbU",
          "drop-38": "chatroomeffects_drop-38_3BJYZ",
          "confetti-39": "chatroomeffects_confetti-39_8zwxi",
          "drop-39": "chatroomeffects_drop-39_2zKzQ",
          "confetti-40": "chatroomeffects_confetti-40_Du-Wg",
          "drop-40": "chatroomeffects_drop-40_3DiQ2",
          "confetti-41": "chatroomeffects_confetti-41_3LjK4",
          "drop-41": "chatroomeffects_drop-41_10ZGR",
          "confetti-42": "chatroomeffects_confetti-42_3u0x8",
          "drop-42": "chatroomeffects_drop-42_2GaWP",
          "confetti-43": "chatroomeffects_confetti-43_2Iip-",
          "drop-43": "chatroomeffects_drop-43_3zDFZ",
          "confetti-44": "chatroomeffects_confetti-44_2qI_Q",
          "drop-44": "chatroomeffects_drop-44_3G_AJ",
          "confetti-45": "chatroomeffects_confetti-45_3FUIw",
          "drop-45": "chatroomeffects_drop-45_1BAsF",
          "confetti-46": "chatroomeffects_confetti-46_2wAK3",
          "drop-46": "chatroomeffects_drop-46_1LOgZ",
          "confetti-47": "chatroomeffects_confetti-47_2dO3B",
          "drop-47": "chatroomeffects_drop-47_l_1GZ",
          "confetti-48": "chatroomeffects_confetti-48_2ud75",
          "drop-48": "chatroomeffects_drop-48_cnRU6",
          "confetti-49": "chatroomeffects_confetti-49_EX-pu",
          "drop-49": "chatroomeffects_drop-49_3ElNG",
          "confetti-50": "chatroomeffects_confetti-50_8qyUx",
          "drop-50": "chatroomeffects_drop-50_IlkNs",
          "confetti-51": "chatroomeffects_confetti-51_AtKXb",
          "drop-51": "chatroomeffects_drop-51_2msFB",
          "confetti-52": "chatroomeffects_confetti-52_1my5Z",
          "drop-52": "chatroomeffects_drop-52_1QnRe",
          "confetti-53": "chatroomeffects_confetti-53_2Cb1i",
          "drop-53": "chatroomeffects_drop-53_1CQh7",
          "confetti-54": "chatroomeffects_confetti-54_2VhA6",
          "drop-54": "chatroomeffects_drop-54_3hZKt",
          "confetti-55": "chatroomeffects_confetti-55_yL87g",
          "drop-55": "chatroomeffects_drop-55_3dM49",
          "confetti-56": "chatroomeffects_confetti-56_1xqgg",
          "drop-56": "chatroomeffects_drop-56_3SnEp",
          "confetti-57": "chatroomeffects_confetti-57_f9kuG",
          "drop-57": "chatroomeffects_drop-57_3DCDa",
          "confetti-58": "chatroomeffects_confetti-58_1O4Ku",
          "drop-58": "chatroomeffects_drop-58_3d1_1",
          "confetti-59": "chatroomeffects_confetti-59_XOFkR",
          "drop-59": "chatroomeffects_drop-59_1ZKa_",
          "confetti-60": "chatroomeffects_confetti-60_2iInd",
          "drop-60": "chatroomeffects_drop-60_3stXq",
          "confetti-61": "chatroomeffects_confetti-61_4hvgI",
          "drop-61": "chatroomeffects_drop-61_ENSW2",
          "confetti-62": "chatroomeffects_confetti-62_1vcmC",
          "drop-62": "chatroomeffects_drop-62_3gyQe",
          "confetti-63": "chatroomeffects_confetti-63_3dgPj",
          "drop-63": "chatroomeffects_drop-63_2047M",
          "confetti-64": "chatroomeffects_confetti-64_Cewk5",
          "drop-64": "chatroomeffects_drop-64_2YCRK",
          "confetti-65": "chatroomeffects_confetti-65_ciQUm",
          "drop-65": "chatroomeffects_drop-65_3kUQk",
          "confetti-66": "chatroomeffects_confetti-66_3a3mu",
          "drop-66": "chatroomeffects_drop-66_3DoHw",
          "confetti-67": "chatroomeffects_confetti-67_39YTy",
          "drop-67": "chatroomeffects_drop-67_Qb0h2",
          "confetti-68": "chatroomeffects_confetti-68_2zcwH",
          "drop-68": "chatroomeffects_drop-68_zRaTb",
          "confetti-69": "chatroomeffects_confetti-69_1O9Qn",
          "drop-69": "chatroomeffects_drop-69_oogaf",
          "confetti-70": "chatroomeffects_confetti-70_3wL25",
          "drop-70": "chatroomeffects_drop-70_ouiMF",
          "confetti-71": "chatroomeffects_confetti-71_2FN6I",
          "drop-71": "chatroomeffects_drop-71_y2t-j",
          "confetti-72": "chatroomeffects_confetti-72_2tgnG",
          "drop-72": "chatroomeffects_drop-72_3hLQt",
          "confetti-73": "chatroomeffects_confetti-73_-0y9h",
          "drop-73": "chatroomeffects_drop-73_-Wx7W",
          "confetti-74": "chatroomeffects_confetti-74_1_vWA",
          "drop-74": "chatroomeffects_drop-74_2L0XL",
          "confetti-75": "chatroomeffects_confetti-75_qNiwF",
          "drop-75": "chatroomeffects_drop-75_2iJw_",
          "confetti-76": "chatroomeffects_confetti-76_2Isn6",
          "drop-76": "chatroomeffects_drop-76_3MdvI",
          "confetti-77": "chatroomeffects_confetti-77_2bgtx",
          "drop-77": "chatroomeffects_drop-77_2ItPx",
          "confetti-78": "chatroomeffects_confetti-78_veCdx",
          "drop-78": "chatroomeffects_drop-78_3D9KT",
          "confetti-79": "chatroomeffects_confetti-79_5cczs",
          "drop-79": "chatroomeffects_drop-79_1x9H7",
          "confetti-80": "chatroomeffects_confetti-80_hz59y",
          "drop-80": "chatroomeffects_drop-80_2ZjKF",
          "confetti-81": "chatroomeffects_confetti-81_1rhSJ",
          "drop-81": "chatroomeffects_drop-81_tGBBf",
          "confetti-82": "chatroomeffects_confetti-82_1jWl7",
          "drop-82": "chatroomeffects_drop-82_26Ftm",
          "confetti-83": "chatroomeffects_confetti-83_1Veaf",
          "drop-83": "chatroomeffects_drop-83_2VByP",
          "confetti-84": "chatroomeffects_confetti-84_3_bdr",
          "drop-84": "chatroomeffects_drop-84_m6um-",
          "confetti-85": "chatroomeffects_confetti-85_9Zttw",
          "drop-85": "chatroomeffects_drop-85_2xtS5",
          "confetti-86": "chatroomeffects_confetti-86_2EJMi",
          "drop-86": "chatroomeffects_drop-86_2dudW",
          "confetti-87": "chatroomeffects_confetti-87_uys-9",
          "drop-87": "chatroomeffects_drop-87_1PZvt",
          "confetti-88": "chatroomeffects_confetti-88_24exN",
          "drop-88": "chatroomeffects_drop-88_5ZbRz",
          "confetti-89": "chatroomeffects_confetti-89_2yKbS",
          "drop-89": "chatroomeffects_drop-89_1s66w",
          "confetti-90": "chatroomeffects_confetti-90_2tEzr",
          "drop-90": "chatroomeffects_drop-90_1dLha",
          "confetti-91": "chatroomeffects_confetti-91_3T4UL",
          "drop-91": "chatroomeffects_drop-91_P_MRR",
          "confetti-92": "chatroomeffects_confetti-92_7p5vh",
          "drop-92": "chatroomeffects_drop-92_1Mwkv",
          "confetti-93": "chatroomeffects_confetti-93_2BaTW",
          "drop-93": "chatroomeffects_drop-93_3NCsF",
          "confetti-94": "chatroomeffects_confetti-94_3DVf7",
          "drop-94": "chatroomeffects_drop-94_fZgnW",
          "confetti-95": "chatroomeffects_confetti-95_23jtb",
          "drop-95": "chatroomeffects_drop-95_1tw1t",
          "confetti-96": "chatroomeffects_confetti-96_2CxeZ",
          "drop-96": "chatroomeffects_drop-96_37GFJ",
          "confetti-97": "chatroomeffects_confetti-97_qoLlt",
          "drop-97": "chatroomeffects_drop-97_v1bhd",
          "confetti-98": "chatroomeffects_confetti-98_3Po3_",
          "drop-98": "chatroomeffects_drop-98_1TcCu",
          "confetti-99": "chatroomeffects_confetti-99_2-vdA",
          "drop-99": "chatroomeffects_drop-99_3lQGo",
          cracker: "chatroomeffects_cracker_k_Aq7",
          "cracker-left": "chatroomeffects_cracker-left_IBSjh",
          "cracker-right": "chatroomeffects_cracker-right_3M0en",
          goldfetti: "chatroomeffects_goldfetti_2oOnq",
          "goldfetti-fragment": "chatroomeffects_goldfetti-fragment_oRJxW",
          "goldfetti-color-1": "chatroomeffects_goldfetti-color-1_2zN8S",
          "goldfetti-color-2": "chatroomeffects_goldfetti-color-2_1fchb",
          "goldfetti-color-3": "chatroomeffects_goldfetti-color-3_2pBYi",
          "goldfetti-emoji-1": "chatroomeffects_goldfetti-emoji-1_33y_B",
          "goldfetti-emoji-2": "chatroomeffects_goldfetti-emoji-2_oOIEt",
          "goldfetti-emoji-3": "chatroomeffects_goldfetti-emoji-3_1oNfH",
          "goldfetti-emoji-4": "chatroomeffects_goldfetti-emoji-4_YFAWN",
          balloons: "chatroomeffects_balloons_2_1pf",
          lantern_glow: "chatroomeffects_lantern_glow_v2QAm",
          snowball_fragment: "chatroomeffects_snowball_fragment_VMzCI",
          "snowball-container": "chatroomeffects_snowball-container_UvZyS",
          snowball: "chatroomeffects_snowball_2buSf",
          SnowballImage: "chatroomeffects_SnowballImage_2_42e",
          SnowballImageCW: "chatroomeffects_SnowballImageCW_1Tf0O",
          "snowball-rotate-cw": "chatroomeffects_snowball-rotate-cw_1x1_6",
          SnowballImageCCW: "chatroomeffects_SnowballImageCCW_3NMkR",
          "snowball-rotate-ccw": "chatroomeffects_snowball-rotate-ccw_2U4NC",
          "snowball-path": "chatroomeffects_snowball-path_3gxEb",
          "snowball-residue": "chatroomeffects_snowball-residue_1aw_2",
          "snowball-chunk": "chatroomeffects_snowball-chunk_379oU",
          "snowball-chunk-1": "chatroomeffects_snowball-chunk-1_7DFP9",
          "snowball-chunk-2": "chatroomeffects_snowball-chunk-2_2TZ3i",
          "snowball-chunk-3": "chatroomeffects_snowball-chunk-3_2dgXy",
          "snowball-chunk-4": "chatroomeffects_snowball-chunk-4_9zq4T",
          "slide-out-tl": "chatroomeffects_slide-out-tl_2vxAr",
          "slide-out-tr": "chatroomeffects_slide-out-tr_1UxlH",
          "slide-out-bottom": "chatroomeffects_slide-out-bottom_2bNZV",
          pyro: "chatroomeffects_pyro_1uf8l",
          before: "chatroomeffects_before_35CE-",
          after: "chatroomeffects_after_1tbcr",
          bang: "chatroomeffects_bang_3GL2k",
          gravity: "chatroomeffects_gravity_S4aDc",
          position: "chatroomeffects_position_15NGb",
          pyroBodyShake: "chatroomeffects_pyroBodyShake_3E298",
          "pyro-body-shake": "chatroomeffects_pyro-body-shake_38sc5",
          pyroBodyShake2: "chatroomeffects_pyroBodyShake2_1Ti3z",
          "pyro-body-shake2": "chatroomeffects_pyro-body-shake2_3qwwM",
          FireworkPath: "chatroomeffects_FireworkPath_1Bk7_",
          "firework-path-animation":
            "chatroomeffects_firework-path-animation_Mm8cl",
          FireworkContainer: "chatroomeffects_FireworkContainer_1aN3b",
          FireworkPNG: "chatroomeffects_FireworkPNG_EHDSM",
          balloon_small_1: "chatroomeffects_balloon_small_1_h2Q7G",
          balloon_move_right: "chatroomeffects_balloon_move_right_8PLpZ",
          balloon_move_left: "chatroomeffects_balloon_move_left_tgIbt",
          balloon_big_1: "chatroomeffects_balloon_big_1_1TGq_",
          balloon_big_2: "chatroomeffects_balloon_big_2_1dSX8",
          balloon_small_2: "chatroomeffects_balloon_small_2_2SLtS",
          balloon_small_3: "chatroomeffects_balloon_small_3_3-4lC",
          "snowball-path-1": "chatroomeffects_snowball-path-1_2XM4v",
          "snowball-path-2": "chatroomeffects_snowball-path-2_1rYsb",
          "snowball-path-3": "chatroomeffects_snowball-path-3_3EhG3",
          "snowball-path-4": "chatroomeffects_snowball-path-4_oIEK7",
          "snowball-path-5": "chatroomeffects_snowball-path-5_1nGpu",
          "snowball-path-6": "chatroomeffects_snowball-path-6_2bquC",
          fireworkBigX: "chatroomeffects_fireworkBigX_3EASz",
          fireworkBigY: "chatroomeffects_fireworkBigY_3HtJy",
          fireworkSmallX: "chatroomeffects_fireworkSmallX_xZrme",
          fireworkSmallY: "chatroomeffects_fireworkSmallY_Vy4av",
          fireworkLongX: "chatroomeffects_fireworkLongX_1h91p",
          fireworkLongY: "chatroomeffects_fireworkLongY_3f3gs",
        };
      },
      61738: (e, t, n) => {
        var i = {
          "./af": 99805,
          "./af.js": 99805,
          "./ar": 94449,
          "./ar-dz": 44468,
          "./ar-dz.js": 44468,
          "./ar-kw": 63480,
          "./ar-kw.js": 63480,
          "./ar-ly": 64197,
          "./ar-ly.js": 64197,
          "./ar-ma": 62180,
          "./ar-ma.js": 62180,
          "./ar-ps": 29343,
          "./ar-ps.js": 29343,
          "./ar-sa": 50230,
          "./ar-sa.js": 50230,
          "./ar-tn": 72808,
          "./ar-tn.js": 72808,
          "./ar.js": 94449,
          "./az": 45865,
          "./az.js": 45865,
          "./be": 86627,
          "./be.js": 86627,
          "./bg": 60901,
          "./bg.js": 60901,
          "./bm": 63179,
          "./bm.js": 63179,
          "./bn": 61966,
          "./bn-bd": 90969,
          "./bn-bd.js": 90969,
          "./bn.js": 61966,
          "./bo": 6317,
          "./bo.js": 6317,
          "./br": 46474,
          "./br.js": 46474,
          "./bs": 35961,
          "./bs.js": 35961,
          "./ca": 77270,
          "./ca.js": 77270,
          "./cs": 61564,
          "./cs.js": 61564,
          "./cv": 43239,
          "./cv.js": 43239,
          "./cy": 92366,
          "./cy.js": 92366,
          "./da": 82453,
          "./da.js": 82453,
          "./de": 76601,
          "./de-at": 25027,
          "./de-at.js": 25027,
          "./de-ch": 8101,
          "./de-ch.js": 8101,
          "./de.js": 76601,
          "./dv": 96080,
          "./dv.js": 96080,
          "./el": 12655,
          "./el.js": 12655,
          "./en-au": 46836,
          "./en-au.js": 46836,
          "./en-ca": 22086,
          "./en-ca.js": 22086,
          "./en-gb": 2103,
          "./en-gb.js": 2103,
          "./en-ie": 35964,
          "./en-ie.js": 35964,
          "./en-il": 74379,
          "./en-il.js": 74379,
          "./en-in": 50765,
          "./en-in.js": 50765,
          "./en-nz": 71502,
          "./en-nz.js": 71502,
          "./en-sg": 1152,
          "./en-sg.js": 1152,
          "./eo": 90050,
          "./eo.js": 90050,
          "./es": 43350,
          "./es-do": 49338,
          "./es-do.js": 49338,
          "./es-mx": 51326,
          "./es-mx.js": 51326,
          "./es-us": 89947,
          "./es-us.js": 89947,
          "./es.js": 43350,
          "./et": 18231,
          "./et.js": 18231,
          "./eu": 28512,
          "./eu.js": 28512,
          "./fa": 59083,
          "./fa.js": 59083,
          "./fi": 25059,
          "./fi.js": 25059,
          "./fil": 32607,
          "./fil.js": 32607,
          "./fo": 83369,
          "./fo.js": 83369,
          "./fr": 27390,
          "./fr-ca": 66711,
          "./fr-ca.js": 66711,
          "./fr-ch": 6152,
          "./fr-ch.js": 6152,
          "./fr.js": 27390,
          "./fy": 62419,
          "./fy.js": 62419,
          "./ga": 3002,
          "./ga.js": 3002,
          "./gd": 82533,
          "./gd.js": 82533,
          "./gl": 16557,
          "./gl.js": 16557,
          "./gom-deva": 48944,
          "./gom-deva.js": 48944,
          "./gom-latn": 25387,
          "./gom-latn.js": 25387,
          "./gu": 17462,
          "./gu.js": 17462,
          "./he": 39237,
          "./he.js": 39237,
          "./hi": 49617,
          "./hi.js": 49617,
          "./hr": 36544,
          "./hr.js": 36544,
          "./hu": 60341,
          "./hu.js": 60341,
          "./hy-am": 41388,
          "./hy-am.js": 41388,
          "./id": 75251,
          "./id.js": 75251,
          "./is": 41146,
          "./is.js": 41146,
          "./it": 37891,
          "./it-ch": 80007,
          "./it-ch.js": 80007,
          "./it.js": 37891,
          "./ja": 73727,
          "./ja.js": 73727,
          "./jv": 5198,
          "./jv.js": 5198,
          "./ka": 28974,
          "./ka.js": 28974,
          "./kk": 37308,
          "./kk.js": 37308,
          "./km": 57786,
          "./km.js": 57786,
          "./kn": 84807,
          "./kn.js": 84807,
          "./ko": 61584,
          "./ko.js": 61584,
          "./ku": 61906,
          "./ku-kmr": 75305,
          "./ku-kmr.js": 75305,
          "./ku.js": 61906,
          "./ky": 79190,
          "./ky.js": 79190,
          "./lb": 7396,
          "./lb.js": 7396,
          "./lo": 38503,
          "./lo.js": 38503,
          "./lt": 33010,
          "./lt.js": 33010,
          "./lv": 5192,
          "./lv.js": 5192,
          "./me": 51944,
          "./me.js": 51944,
          "./mi": 56492,
          "./mi.js": 56492,
          "./mk": 2934,
          "./mk.js": 2934,
          "./ml": 61463,
          "./ml.js": 61463,
          "./mn": 8377,
          "./mn.js": 8377,
          "./mr": 78733,
          "./mr.js": 78733,
          "./ms": 18030,
          "./ms-my": 39445,
          "./ms-my.js": 39445,
          "./ms.js": 18030,
          "./mt": 55887,
          "./mt.js": 55887,
          "./my": 87228,
          "./my.js": 87228,
          "./nb": 48294,
          "./nb.js": 48294,
          "./ne": 19559,
          "./ne.js": 19559,
          "./nl": 20600,
          "./nl-be": 78796,
          "./nl-be.js": 78796,
          "./nl.js": 20600,
          "./nn": 9570,
          "./nn.js": 9570,
          "./oc-lnc": 5662,
          "./oc-lnc.js": 5662,
          "./pa-in": 87101,
          "./pa-in.js": 87101,
          "./pl": 56118,
          "./pl.js": 56118,
          "./pt": 29198,
          "./pt-br": 7203,
          "./pt-br.js": 7203,
          "./pt.js": 29198,
          "./ro": 45565,
          "./ro.js": 45565,
          "./ru": 33315,
          "./ru.js": 33315,
          "./sd": 58473,
          "./sd.js": 58473,
          "./se": 11258,
          "./se.js": 11258,
          "./si": 98798,
          "./si.js": 98798,
          "./sk": 26404,
          "./sk.js": 26404,
          "./sl": 7057,
          "./sl.js": 7057,
          "./sq": 25718,
          "./sq.js": 25718,
          "./sr": 45363,
          "./sr-cyrl": 20478,
          "./sr-cyrl.js": 20478,
          "./sr.js": 45363,
          "./ss": 37260,
          "./ss.js": 37260,
          "./sv": 42231,
          "./sv.js": 42231,
          "./sw": 27104,
          "./sw.js": 27104,
          "./ta": 47493,
          "./ta.js": 47493,
          "./te": 57705,
          "./te.js": 57705,
          "./tet": 94457,
          "./tet.js": 94457,
          "./tg": 22727,
          "./tg.js": 22727,
          "./th": 32206,
          "./th.js": 32206,
          "./tk": 33419,
          "./tk.js": 33419,
          "./tl-ph": 77243,
          "./tl-ph.js": 77243,
          "./tlh": 60016,
          "./tlh.js": 60016,
          "./tr": 87020,
          "./tr.js": 87020,
          "./tzl": 8026,
          "./tzl.js": 8026,
          "./tzm": 78537,
          "./tzm-latn": 87899,
          "./tzm-latn.js": 87899,
          "./tzm.js": 78537,
          "./ug-cn": 40818,
          "./ug-cn.js": 40818,
          "./uk": 48478,
          "./uk.js": 48478,
          "./ur": 77893,
          "./ur.js": 77893,
          "./uz": 89133,
          "./uz-latn": 20311,
          "./uz-latn.js": 20311,
          "./uz.js": 89133,
          "./vi": 52179,
          "./vi.js": 52179,
          "./x-pseudo": 92455,
          "./x-pseudo.js": 92455,
          "./yo": 3310,
          "./yo.js": 3310,
          "./zh-cn": 27244,
          "./zh-cn.js": 27244,
          "./zh-hk": 40076,
          "./zh-hk.js": 40076,
          "./zh-mo": 62305,
          "./zh-mo.js": 62305,
          "./zh-tw": 88588,
          "./zh-tw.js": 88588,
        };
        function o(e) {
          var t = r(e);
          return n(t);
        }
        function r(e) {
          if (!n.o(i, e)) {
            var t = new Error("Cannot find module '" + e + "'");
            throw ((t.code = "MODULE_NOT_FOUND"), t);
          }
          return i[e];
        }
        (o.keys = function () {
          return Object.keys(i);
        }),
          (o.resolve = r),
          (e.exports = o),
          (o.id = 61738);
      },
      78116: (e, t, n) => {
        "use strict";
        n.d(t, {
          QO: () => i.QO,
          Qn: () => i.Qn,
          TS: () => i.TS,
          XJ: () => i.XJ,
          iA: () => i.iA,
          xv: () => i.xv,
        });
        var i = n(17070);
      },
      6256: (e, t, n) => {
        "use strict";
        var i = n(78116),
          o = n(34629),
          r = n(70725),
          a = n(83957),
          s = n.n(a),
          l = n(45518),
          c = n(82924),
          m = n(89193),
          d = n(50669),
          u = n(77631),
          h = n(77765);
        class p {
          m_bLogonFailed = !1;
          m_bForcedDisconnect = !1;
          m_eSteamRealm = d.TU.k_ESteamRealmUnknown;
          m_bConnectSucceeded = !1;
          m_bEverConnected = !1;
          m_bEverLoggedOn = !1;
          m_CMInterface;
          m_cConsecutiveConnectionFailures = 0;
          m_dtNextLogonAttempt;
          m_bWaitingToReconnect = !1;
          m_iTimeoutRetryLogon;
          m_rgdtRecentFailures = [];
          m_eWebLogonState = 0;
          constructor(e, t) {
            (0, m.Gn)(this),
              (this.m_CMInterface = e),
              (this.m_eSteamRealm = t),
              this.m_CMInterface.AddOnDisconnectCallback(this.OnCMDisconnected),
              this.m_CMInterface.AddOnLogonCallback(this.OnCMLoggedOn),
              this.m_CMInterface.messageHandlers.RegisterEMessageHandler(
                757,
                r.l9,
                (e) => {
                  34 == e.Body().eresult() &&
                    ((this.m_eWebLogonState = 15),
                    (this.m_bWaitingToReconnect = !0));
                },
              );
          }
          get web_logon_state() {
            return this.m_eWebLogonState;
          }
          BIsInInitialConnect() {
            return 1 == this.m_eWebLogonState || 5 == this.m_eWebLogonState;
          }
          BIsWaitingToReconnect() {
            return this.m_bWaitingToReconnect;
          }
          BWillAutoReconnect() {
            return void 0 !== this.m_iTimeoutRetryLogon;
          }
          ClearRetryTimeout() {
            this.m_iTimeoutRetryLogon &&
              (window.clearTimeout(this.m_iTimeoutRetryLogon),
              (this.m_iTimeoutRetryLogon = void 0));
          }
          GetMSUntilNextReconnectAttempt() {
            return this.m_dtNextLogonAttempt
              ? Math.max(
                  0,
                  this.m_dtNextLogonAttempt.getTime() - new Date().getTime(),
                )
              : 0;
          }
          ReconnectNow() {
            this.m_bWaitingToReconnect &&
              ((this.m_rgdtRecentFailures = []), this.RetryLogin());
          }
          OnCMDisconnected(e) {
            if (
              13 != this.m_eWebLogonState &&
              14 != this.m_eWebLogonState &&
              15 != this.m_eWebLogonState
            ) {
              if (this.m_bForcedDisconnect)
                return (this.m_bForcedDisconnect = !1), void this.RetryLogin();
              for (; this.m_rgdtRecentFailures.length >= 24; )
                this.m_rgdtRecentFailures.shift();
              if (
                (this.m_rgdtRecentFailures.push(new Date()),
                this.m_bConnectSucceeded &&
                  !this.m_CMInterface.session.m_bWaitingForLogonResponse)
              ) {
                let e = this.m_CMInterface.session.m_eResultLogonSuccess;
                this.m_eWebLogonState =
                  1 != e ? (this.m_bEverLoggedOn ? 6 : 8) : 10;
              } else this.m_eWebLogonState = this.m_bEverConnected ? 10 : 2;
              this.m_cConsecutiveConnectionFailures++,
                e || this.RescheduleLogin();
            }
          }
          OnCMLoggedOn() {
            (this.m_eWebLogonState = 9),
              (this.m_bEverLoggedOn = !0),
              (this.m_cConsecutiveConnectionFailures = 0);
          }
          PerformInitialLogon(e) {
            e.token_use_id &&
              (window.sessionStorage.getItem("token_use_id") == e.token_use_id
                ? (console.log(
                    "In-page token has already been consumed, requesting a new token.",
                  ),
                  (e = null))
                : window.sessionStorage.setItem(
                    "token_use_id",
                    e.token_use_id,
                  )),
              this.PerformWebLogOn(e);
          }
          PerformWebLogOn(e) {
            if (
              ((this.m_bConnectSucceeded = !1),
              (this.m_eWebLogonState = this.m_bEverConnected ? 3 : 1),
              !(e && e.steamid && e.token && e.account_name))
            )
              return void this.RetryLogin();
            (i.iA.steamid = e.steamid),
              (i.iA.accountid = new u.b(e.steamid).GetAccountID()),
              (i.iA.account_name = e.account_name);
            let t = l.w.Init(r.ji, 5514);
            t.Body().set_account_name(e.account_name),
              t.Body().set_protocol_version(65580),
              t.Body().set_qos_level(2),
              t.Body().set_client_os_type(4294966596),
              t.Body().set_ui_mode(3),
              t.Body().set_chat_mode(2),
              t.Body().set_web_logon_nonce(e.token),
              t.Hdr().set_steamid(e.steamid),
              (function (e, t) {
                switch (t) {
                  case d.TU.k_ESteamRealmChina:
                    e.Body().set_launcher_type(7);
                    break;
                  case d.TU.k_ESteamRealmGlobal:
                    break;
                  default:
                    (0, h.w)(!1, "Unknown realm: " + t);
                }
              })(t, this.m_eSteamRealm),
              this.m_CMInterface.session.m_nSessionIDLast &&
                t
                  .Body()
                  .set_last_session_id(
                    this.m_CMInterface.session.m_nSessionIDLast >>> 0,
                  ),
              t
                .Body()
                .set_client_instance_id(
                  this.m_CMInterface.session.m_nClientInstanceID,
                ),
              this.m_CMInterface.Connect().then(() => {
                (i.iA.logged_in = !0),
                  (this.m_bConnectSucceeded = !0),
                  (this.m_bEverConnected = !0),
                  (this.m_eWebLogonState = this.m_bEverLoggedOn ? 7 : 5),
                  this.m_CMInterface.Send(t);
              });
          }
          RetryLogin() {
            if (
              ((this.m_bWaitingToReconnect = !1),
              this.ClearRetryTimeout(),
              this.m_CMInterface.BIsConnected() && this.m_bConnectSucceeded)
            )
              return (
                (this.m_bForcedDisconnect = !0),
                void this.m_CMInterface.ForceDisconnect()
              );
            (0, h.w)(
              11 != this.m_eWebLogonState,
              "RetryLogin called while request in flight",
            ),
              11 != this.m_eWebLogonState &&
                ((this.m_eWebLogonState = 11),
                this.m_CMInterface.Connect().catch(() => {}),
                s()
                  .get(i.TS.TOKEN_URL, { method: "POST" })
                  .then((e) => {
                    let t = e.data;
                    if (t.logged_in && t.steamid && t.token && t.account_name) {
                      let e = new u.b(t.steamid);
                      this.m_bEverLoggedOn &&
                      this.m_CMInterface.steamid.GetAccountID() !=
                        e.GetAccountID()
                        ? ((this.m_eWebLogonState = 14),
                          this.m_CMInterface.ForceDisconnect())
                        : this.PerformWebLogOn(t);
                    } else
                      (this.m_eWebLogonState = 13),
                        this.m_CMInterface.ForceDisconnect();
                  })
                  .catch((e) => {
                    (this.m_eWebLogonState = 12), this.RescheduleLogin();
                  }));
          }
          RescheduleLogin() {
            let e = 0,
              t = 0,
              n = new Date();
            for (let i of this.m_rgdtRecentFailures)
              i.getTime() >= n.getTime() - 6e4
                ? e++
                : i.getTime() >= n.getTime() - 36e5 && t++;
            t += e;
            let i = this.m_cConsecutiveConnectionFailures + e;
            if (i <= 2) this.RetryLogin();
            else if (i <= 10 && t <= 10) {
              let e = 5e3 * (i - 2);
              (this.m_dtNextLogonAttempt = new Date(new Date().getTime() + e)),
                (this.m_bWaitingToReconnect = !0),
                this.ClearRetryTimeout(),
                (this.m_iTimeoutRetryLogon = window.setTimeout(() => {
                  (this.m_dtNextLogonAttempt = void 0), this.RetryLogin();
                }, e));
            } else this.m_bWaitingToReconnect = !0;
          }
        }
        (0, o.Cg)([m.sH], p.prototype, "m_eWebLogonState", void 0),
          (0, o.Cg)([c.oI], p.prototype, "OnCMDisconnected", null),
          (0, o.Cg)([c.oI], p.prototype, "OnCMLoggedOn", null);
        var _ = n(78919),
          g = n(59805),
          C = n(45112),
          f = n(20366),
          S = n(20074),
          v = n(37322),
          b = n(17070),
          I = n(67033),
          w = n(361),
          y = n(8649),
          E = n(50929),
          D = n(9907),
          A = n(57695);
        class T {
          m_bRunOnce = !1;
          m_ClientConnectionCallbacks = new D.lu();
          m_mapServerTypeCallbacks = new Map();
          constructor(e = !1) {
            this.m_bRunOnce = e;
          }
          RunCallbacks(e, ...t) {
            void 0 === e
              ? (this.m_ClientConnectionCallbacks.Dispatch(...t),
                this.m_bRunOnce &&
                  this.m_ClientConnectionCallbacks.ClearAllCallbacks())
              : this.m_mapServerTypeCallbacks.has(e) &&
                (this.m_mapServerTypeCallbacks.get(e).Dispatch(...t),
                this.m_bRunOnce && this.m_mapServerTypeCallbacks.delete(e));
          }
          RunAllCallbacks(e, ...t) {
            this.RunCallbacks(void 0, ...t),
              e.forEach((e) => this.RunCallbacks(e, ...t));
          }
          AddCallback(e, t) {
            let n = this.m_ClientConnectionCallbacks;
            return (
              void 0 !== t &&
                (this.m_mapServerTypeCallbacks.has(t) ||
                  this.m_mapServerTypeCallbacks.set(t, new D.lu()),
                (n = this.m_mapServerTypeCallbacks.get(t))),
              n.Register(e)
            );
          }
        }
        function M(e, t) {
          return () => {
            try {
              e();
            } catch (e) {
              console.error(`Error in ${t} callback:`, e);
            }
          };
        }
        class R {
          m_steamid = new u.b();
          m_bLoggedOn = !1;
          m_bCompletedInitialConnect = !1;
          m_unAccountFlags = 0;
          m_strIPCountry = "";
          m_strPersonaName = "";
          m_rtReconnectThrottleStart = 0;
          m_rtReconnectThrottleExpiration = 0;
          m_bConnected = !1;
          m_bConnectionFailed = !1;
          m_ServiceTransport;
          m_onConnect;
          m_setConnectedServers = new Set();
          m_callbacksOnConnectOneTime = new T(!0);
          m_callbacksOnConnect = new T();
          m_callbacksOnDisconnect = new T();
          m_bForceDisconnect = !1;
          m_bPerformedInitialClockAdjustment = !1;
          m_nWallClockDriftMS = 0;
          m_nPerfClockServerMSOffset = new Date().getTime() - performance.now();
          m_messageHandlers = new A.$();
          constructor() {
            (0, m.Gn)(this),
              (this.m_ServiceTransport = {
                SendMsg: (e, t, n) => (
                  (void 0 !== t.GetEMsg() && 9804 == t.GetEMsg()) ||
                    t.SetEMsg(151),
                  t.Hdr().set_target_job_name(e),
                  this.SendMsgAndAwaitResponse(t, n)
                ),
                SendNotification: (e, t) => (
                  (void 0 !== t.GetEMsg() && 9804 == t.GetEMsg()) ||
                    t.SetEMsg(151),
                  t.Hdr().set_target_job_name(e),
                  this.Send(t)
                ),
                MakeReady: this.MakeReady.bind(this),
              }),
              window &&
                window.addEventListener &&
                window.addEventListener("unload", (e) => {
                  this.ForceDisconnect();
                });
          }
          get steamid() {
            return this.m_steamid;
          }
          get logged_on() {
            return this.m_bLoggedOn;
          }
          get persona_name() {
            return this.m_strPersonaName;
          }
          get messageHandlers() {
            return this.m_messageHandlers;
          }
          get rtReconnectThrottleStart() {
            return this.m_rtReconnectThrottleStart;
          }
          get rtReconnectThrottleExpiration() {
            return this.m_rtReconnectThrottleExpiration;
          }
          BDisconnected() {
            return !this.logged_on && this.m_steamid.BIsValid();
          }
          BConnectedToServer(e) {
            return void 0 === e
              ? this.m_bLoggedOn
              : this.m_setConnectedServers.has(e);
          }
          get has_completed_initial_connect() {
            return this.m_bCompletedInitialConnect;
          }
          get account_flags() {
            return this.m_unAccountFlags;
          }
          GetServiceTransport() {
            return this.m_ServiceTransport;
          }
          GetAnonymousServiceTransport() {
            return this.m_ServiceTransport;
          }
          MakeReady() {
            return SteamClient.User.Connect();
          }
          RunWhenLoggedOn(e, t) {
            let n = M(e, "RunWhenLoggedOn");
            this.BConnectedToServer(t)
              ? n()
              : this.m_callbacksOnConnectOneTime.AddCallback(n, t);
          }
          WaitUntilLoggedOn() {
            return new Promise((e) => this.RunWhenLoggedOn(e));
          }
          AddOnLogonCallback(e, t) {
            let n = M(e, "AddOnLogonCallback");
            return (
              this.BConnectedToServer(t) && n(),
              this.m_callbacksOnConnect.AddCallback(n, t)
            );
          }
          AddOnDisconnectCallback(e, t) {
            let n = (function (e, t) {
              return (n) => {
                try {
                  e(n);
                } catch (e) {
                  console.error(`Error in ${t} callback:`, e);
                }
              };
            })(e, "AddOnDisconnectCallback");
            return this.m_callbacksOnDisconnect.AddCallback(n, t);
          }
          ForceDisconnect() {
            (this.m_bForceDisconnect = !0), this.Disconnect();
          }
          Send(e) {
            return (
              !!this.BIsConnected() &&
              (this.DEBUG_LogCMInterfaceActivity(e, "send"),
              this.SendInternal(e))
            );
          }
          BInternalShouldDispatchMessage(e) {
            return !0;
          }
          ResolveAwaitWithTransportError(e, t, n, i) {
            let o = l.w.Init(t);
            o.Hdr().set_eresult(2),
              o.Hdr().set_transport_error(n),
              i && o.Hdr().set_error_message(i),
              e(o);
          }
          DispatchMessage(e) {
            try {
              if (!this.BInternalShouldDispatchMessage(e)) return;
              if (e.BIsValid()) {
                let t = (t) => {
                  t.Hdr().set_jobid_target(e.Hdr().jobid_source()),
                    this.Send(t);
                };
                this.m_messageHandlers.DispatchMsgToHandlers(e, t) ||
                  this.DEBUG_LogCMInterfaceActivity(e, "receive", !1);
              } else
                console.error(
                  "CMInterface RECV could not parse message of type " +
                    (0, y.JS)(e.GetEMsg()) +
                    " " +
                    e.GetEMsg(),
                );
            } catch (t) {
              console.error(
                `CMInterface RECV exception thrown while processing message of type ${(0, y.JS)(e.GetEMsg())}`,
                t,
              ),
                e.DEBUG_LogToConsole();
            }
          }
          BIsConnected() {
            return this.m_bConnected;
          }
          OnConnect() {
            (this.m_bConnected = !0),
              (this.m_bConnectionFailed = !1),
              (this.m_bForceDisconnect = !1);
          }
          OnLoggedOn() {
            (this.m_bCompletedInitialConnect = !0),
              this.InternalAdjustClock(),
              this.m_callbacksOnConnect.RunAllCallbacks(
                this.m_setConnectedServers,
              ),
              this.m_callbacksOnConnectOneTime.RunAllCallbacks(
                this.m_setConnectedServers,
              );
          }
          OnDisconnect() {
            (this.m_bConnected = !1),
              (this.m_bConnectionFailed = !0),
              (this.m_onConnect = void 0),
              (this.m_bLoggedOn = !1),
              (this.m_unAccountFlags = 0),
              (this.m_strIPCountry = ""),
              this.m_callbacksOnDisconnect.RunAllCallbacks(
                this.m_setConnectedServers,
                this.m_bForceDisconnect,
              ),
              this.m_setConnectedServers.clear();
          }
          ClientServersAvailableHandler =
            this.m_messageHandlers.RegisterEMessageAction(5501, E.HW, (e) => {
              let t = new Set(this.m_setConnectedServers);
              for (let n of e.Body().server_types_available()) {
                let e = n.server();
                void 0 !== e &&
                  (this.m_bLoggedOn &&
                    ((this.m_setConnectedServers.has(e) && !n.changed()) ||
                      (n.changed() &&
                        this.m_setConnectedServers.has(e) &&
                        this.m_callbacksOnDisconnect.RunCallbacks(e, !1),
                      this.m_callbacksOnConnect.RunCallbacks(e),
                      this.m_callbacksOnConnectOneTime.RunCallbacks(e))),
                  this.m_setConnectedServers.add(e),
                  t.delete(e));
              }
              t.forEach((e) => {
                this.m_setConnectedServers.delete(e),
                  this.m_bLoggedOn &&
                    this.m_callbacksOnDisconnect.RunCallbacks(e, !1);
              });
            });
          DEBUG_LogCMInterfaceActivity(e, t, n = !0) {
            0;
          }
          DEBUG_LogMessage(e, ...t) {
            0;
          }
          async InternalAdjustClock() {
            let e = l.w.Init(r.Sb, 9802);
            return (
              e
                .Body()
                .set_client_request_timestamp(
                  Math.floor(performance.now()).toString(),
                ),
              this.SendMsgAndAwaitResponse(e, r.Q_).then((e) => {
                let t = performance.now(),
                  n = new Date(),
                  i = parseInt(e.Body().client_request_timestamp()),
                  o = parseInt(e.Body().server_timestamp_ms()) - ((t - i) >> 1);
                return (
                  o && !isNaN(o) && t && !isNaN(t)
                    ? ((this.m_bPerformedInitialClockAdjustment = !0),
                      (this.m_nPerfClockServerMSOffset = o - t),
                      (this.m_nWallClockDriftMS = n.getTime() - o))
                    : (0, h.w)(
                        !1,
                        `Error computing server time, server echo: ${i} server time ${o}`,
                      ),
                  !0
                );
              })
            );
          }
          BPerformedInitialClockAdjustment() {
            return this.m_bPerformedInitialClockAdjustment;
          }
          GetServerTimeMS() {
            return performance.now() + this.m_nPerfClockServerMSOffset;
          }
          GetServerRTime32() {
            return Math.floor(
              (performance.now() + this.m_nPerfClockServerMSOffset) / 1e3,
            );
          }
          RTime32ToDate(e) {
            return new Date(1e3 * e + this.m_nWallClockDriftMS);
          }
        }
        (0, o.Cg)([m.sH], R.prototype, "m_steamid", void 0),
          (0, o.Cg)([m.sH], R.prototype, "m_bLoggedOn", void 0),
          (0, o.Cg)([m.sH], R.prototype, "m_bCompletedInitialConnect", void 0),
          (0, o.Cg)([m.sH], R.prototype, "m_unAccountFlags", void 0),
          (0, o.Cg)([m.sH], R.prototype, "m_strIPCountry", void 0),
          (0, o.Cg)([m.sH], R.prototype, "m_strPersonaName", void 0),
          (0, o.Cg)([m.sH], R.prototype, "m_rtReconnectThrottleStart", void 0),
          (0, o.Cg)(
            [m.sH],
            R.prototype,
            "m_rtReconnectThrottleExpiration",
            void 0,
          ),
          (0, o.Cg)([m.sH], R.prototype, "m_bConnected", void 0),
          (0, o.Cg)(
            [m.sH],
            R.prototype,
            "m_bPerformedInitialClockAdjustment",
            void 0,
          ),
          (0, o.Cg)([m.XI], R.prototype, "DispatchMessage", null),
          (0, o.Cg)([m.XI], R.prototype, "OnDisconnect", null);
        var k = n(42674),
          L = n(28574);
        class G extends R {
          m_hSharedConnection;
          m_hEMsgRegistrationObserver;
          m_setEMsgHandlers = new Set();
          m_setServiceMethodHandlers = new Set();
          constructor() {
            super(),
              (0, m.Gn)(this),
              (0, k.Dp)("User.RegisterForConnectionAttemptsThrottled") &&
                SteamClient.User.RegisterForConnectionAttemptsThrottled(
                  this.OnConnectionAttemptThrottled,
                );
          }
          SendMsgAndAwaitResponse(e, t) {
            return new Promise((n, i) => {
              if (this.m_hSharedConnection) {
                this.DEBUG_LogCMInterfaceActivity(e, "send");
                let i = v.iI(e.Serialize());
                void 0 !==
                SteamClient.SharedConnection.SendMsgAndAwaitBinaryResponse
                  ? SteamClient.SharedConnection.SendMsgAndAwaitBinaryResponse(
                      this.m_hSharedConnection,
                      i,
                    )
                      .then((e) => {
                        let i = new I.pV(e),
                          o = l.w.InitFromPacket(t, i);
                        this.DEBUG_LogCMInterfaceActivity(o, "receive", !0),
                          o.BIsValid()
                            ? n(o)
                            : this.ResolveAwaitWithTransportError(
                                n,
                                t,
                                102,
                                "Failed to parse response from server",
                              );
                      })
                      .catch((e) => {
                        this.ResolveAwaitWithTransportError(n, t, 2, e);
                      })
                  : SteamClient.SharedConnection.SendMsgAndAwaitResponse(
                      this.m_hSharedConnection,
                      i,
                    )
                      .then((e) => {
                        let i = new I.pV(v.bg(e)),
                          o = l.w.InitFromPacket(t, i);
                        this.DEBUG_LogCMInterfaceActivity(o, "receive", !0),
                          o.BIsValid()
                            ? n(o)
                            : this.ResolveAwaitWithTransportError(
                                n,
                                t,
                                102,
                                "Failed to parse response from server",
                              );
                      })
                      .catch((e) => {
                        this.ResolveAwaitWithTransportError(n, t, 2, e);
                      });
              } else
                this.ResolveAwaitWithTransportError(
                  n,
                  t,
                  102,
                  "Shared connection handle is empty, dropping traffic",
                ),
                  console.warn(
                    "Shared connection handle is empty, dropping traffic",
                  );
            });
          }
          SendInternal(e) {
            let t = v.iI(e.Serialize());
            return (
              SteamClient.SharedConnection.SendMsg(this.m_hSharedConnection, t),
              !0
            );
          }
          OnMsgRecvd(e) {
            let t = new I.pV(e),
              n = l.lI.InitHeaderFromPacket(t);
            this.DispatchMessage(n);
          }
          OnLogonInfoChanged(e) {
            this.DEBUG_LogMessage("Login info from client: ", e),
              (this.m_bLoggedOn = e.bLoggedOn),
              (b.TS.EUNIVERSE = e.eUniverse),
              (b.TS.MEDIA_CDN_COMMUNITY_URL = e.strCommunityImagesURL),
              (b.TS.COUNTRY = e.strUserCountry),
              e.strSteamid
                ? ((this.m_steamid = new u.b(e.strSteamid)),
                  (this.m_strPersonaName = e.strPersonaName),
                  (b.iA.logged_in = e.bLoggedOn),
                  (b.iA.steamid = e.strSteamid),
                  (b.iA.accountid = this.m_steamid.GetAccountID()),
                  (b.iA.account_name = e.strAccountName))
                : 0 != this.m_steamid.GetAccountID() &&
                  (this.m_steamid = new u.b()),
              this.m_bLoggedOn
                ? (this.m_bConnected || this.OnConnect(), this.OnLoggedOn())
                : this.OnDisconnect();
          }
          Connect() {
            return this.m_hSharedConnection
              ? Promise.resolve()
              : (this.m_onConnect = new Promise((e, t) => {
                  SteamClient.SharedConnection.AllocateSharedConnection()
                    .then((n) => {
                      n
                        ? (this.OnSharedConnectionEstablished(n),
                          this.DEBUG_LogMessage(
                            "obtained handle ",
                            this.m_hSharedConnection,
                          ),
                          this.OnConnect(),
                          e())
                        : t();
                    })
                    .catch(t);
                }));
          }
          OnSharedConnectionEstablished(e) {
            (this.m_hSharedConnection = e),
              this.m_setEMsgHandlers.clear(),
              this.m_setServiceMethodHandlers.clear(),
              this.m_hEMsgRegistrationObserver &&
                this.m_hEMsgRegistrationObserver(),
              (this.m_hEMsgRegistrationObserver = (0, m.fm)(() => {
                if (this.m_hSharedConnection) {
                  for (let e of this.m_messageHandlers.emsg_list)
                    this.m_setEMsgHandlers.has(e) ||
                      (this.m_setEMsgHandlers.add(e),
                      SteamClient.SharedConnection.SubscribeToEMsg(
                        this.m_hSharedConnection,
                        e,
                      ));
                  for (let e of this.m_messageHandlers.servicemethod_list)
                    this.m_setServiceMethodHandlers.has(e) ||
                      (this.m_setServiceMethodHandlers.add(e),
                      SteamClient.SharedConnection.SubscribeToClientServiceMethod(
                        this.m_hSharedConnection,
                        e,
                      ));
                }
              }));
            let t = !1;
            SteamClient.SharedConnection.RegisterOnLogonInfoChanged(
              this.m_hSharedConnection,
              (e) => {
                this.OnLogonInfoChanged(e),
                  t ||
                    ((t = !0),
                    void 0 !==
                    SteamClient.SharedConnection.RegisterOnBinaryMessageReceived
                      ? SteamClient.SharedConnection.RegisterOnBinaryMessageReceived(
                          this.m_hSharedConnection,
                          this.OnMsgRecvd.bind(this),
                        )
                      : SteamClient.SharedConnection.RegisterOnMessageReceived(
                          this.m_hSharedConnection,
                          (e) => this.OnMsgRecvd(v.bg(e)),
                        ));
              },
            );
          }
          OnConnect() {
            super.OnConnect();
          }
          Disconnect() {
            if (this.m_hSharedConnection) {
              let e = l.w.Init(w.el, 716);
              e.Body().set_persona_state(0),
                e.Body().set_persona_set_by_user(!1),
                this.Send(e),
                SteamClient.SharedConnection.Close(this.m_hSharedConnection),
                this.OnSharedConnectionClosed();
            }
          }
          OnSharedConnectionClosed() {
            super.OnDisconnect(),
              (this.m_hSharedConnection = void 0),
              this.m_setEMsgHandlers.clear(),
              this.m_hEMsgRegistrationObserver &&
                (this.m_hEMsgRegistrationObserver(),
                (this.m_hEMsgRegistrationObserver = void 0));
          }
          SendHeartbeat() {}
          ClearHeartbeatInterval() {}
          ResetHeartbeatInterval() {}
          OnConnectionAttemptThrottled(e) {
            0 == e.rtCooldownExpiration
              ? (this.m_rtReconnectThrottleStart = 0)
              : 0 == this.m_rtReconnectThrottleStart &&
                (this.m_rtReconnectThrottleStart = (0, L._2)()),
              (this.m_rtReconnectThrottleExpiration = e.rtCooldownExpiration);
          }
        }
        (0, o.Cg)([m.XI], G.prototype, "OnLogonInfoChanged", null),
          (0, o.Cg)(
            [m.XI.bound],
            G.prototype,
            "OnConnectionAttemptThrottled",
            null,
          );
        var F = n(53048),
          P = n(81868),
          B = n(56132);
        class x {
          m_CMList = { rgCMList: [], rtLastLoaded: 0 };
          m_Storage;
          m_InitPromise;
          Init(e) {
            (this.m_Storage = e), (this.m_InitPromise = this.LoadFromCache());
          }
          async LoadFromCache() {
            if (this.m_InitPromise) return this.m_InitPromise;
            const e = await this.m_Storage.GetObject(this.GetLocalStorageKey());
            return (t = e) &&
              "object" == typeof t &&
              Array.isArray(t.rgCMList) &&
              "number" == typeof t.rtLastLoaded
              ? ((this.m_CMList = e), this.m_CMList)
              : ((this.m_CMList = { rgCMList: [], rtLastLoaded: 0 }),
                this.WriteCMListToLocalStorage(),
                this.m_CMList);
            var t;
          }
          async GetBestCMsToConnectTo() {
            try {
              let e = await this.LoadFromCache();
              (!e.rgCMList.length ||
                Date.now() / 1e3 - e.rtLastLoaded > 604800) &&
                ((this.m_CMList = await this.GetCMListFromWebAPI()),
                this.WriteCMListToLocalStorage());
            } catch (e) {
              console.error(
                `There was a problem loading CM list. Attempting to use stale data. ${e}`,
              );
            }
            return this.PingCMs();
          }
          RecordCMDisconnected(e) {
            (e.nConnectFailures = (e.nConnectFailures || 0) + 1),
              (e.msPing = Number.MAX_SAFE_INTEGER),
              (e.nCMLoad = Number.MAX_SAFE_INTEGER),
              this.WriteCMListToLocalStorage();
          }
          BuildCMWebSocketURL(e) {
            return "wss://" + this.FixDevHost(e) + "/cmsocket/";
          }
          FixDevHost(e) {
            if (
              4 == b.TS.EUNIVERSE &&
              "dev" == b.TS.WEB_UNIVERSE &&
              e.match(/^127\.0\.0\.1/)
            ) {
              let t = b.TS.WEBAPI_BASE_URL.match(/https?:\/\/([^\/:]*)/);
              if (t && t[1]) return e.replace(/^127\.0\.0\.1/, t[1]);
            }
            return e;
          }
          GetLocalStorageKey() {
            return "CCMList_" + b.TS.EUNIVERSE;
          }
          WriteCMListToLocalStorage() {
            this.m_Storage.StoreObject(
              this.GetLocalStorageKey(),
              this.m_CMList,
            );
          }
          async GetCMListFromWebAPI() {
            try {
              const n = await ((e = O),
                (t = 1e4),
                () =>
                  new Promise((n, i) => {
                    let o = !1;
                    const r = window.setTimeout(() => {
                      (o = !0), i(new Error("Timed out"));
                    }, t);
                    e().then(
                      (e) => {
                        o || (clearTimeout(r), n(e));
                      },
                      (e) => {
                        o || (clearTimeout(r), i(e));
                      },
                    );
                  }))(),
                i = this.m_CMList.rgCMList.reduce(
                  (e, t) => ({ ...e, [t.strHost]: t }),
                  {},
                );
              return {
                rgCMList: n.map((e) => ({ ...(i[e.strHost] || {}), ...e })),
                rtLastLoaded: new Date().getTime() / 1e3,
              };
            } catch (e) {
              throw new Error("Failed to load CM List from webapi");
            }
            var e, t;
          }
          PingCMs() {
            let e = new Date().getTime() / 1e3 - 18e3,
              t = [];
            const n = {};
            for (const i of this.m_CMList.rgCMList) {
              const o = N(i),
                r = !o || i.rtLastCheck < e;
              r && t.length < 20 && t.push(i),
                (r && !b.TS.IN_MOBILE) || (o && o < 1e4 && (n[i.strHost] = i));
            }
            t.length;
            let i = !1;
            return new Promise((e, o) => {
              let r,
                a,
                s = "immediate",
                l = (t) => {
                  if (
                    ((0, h.w)(!i, "fnPingingComplete called a second time"), !i)
                  ) {
                    const n = Object.keys(t)
                      .map((e) => t[e])
                      .sort((e, t) => N(e) - N(t));
                    if (
                      (n.length,
                      n.length && n[0].strHost,
                      (i = !0),
                      this.WriteCMListToLocalStorage(),
                      r && window.clearTimeout(r),
                      a && window.clearTimeout(a),
                      n.length)
                    )
                      return e(n);
                    const s = this.GetCMWithFewestDisconnects();
                    if (s) return e([s]);
                    o("No CMs available");
                  }
                };
              (0 === t.length ||
                Object.keys(n).some((e) => this.BCMOkToUse(n[e], s)) ||
                (b.TS.IN_MOBILE && Object.keys(n).length)) &&
                (Object.keys(n).length && b.TS.IN_MOBILE, l(n)),
                i ||
                  ((r = window.setTimeout(() => {
                    (s = "timeout"),
                      !i &&
                        Object.keys(n).some((e) => this.BCMOkToUse(n[e], s)) &&
                        l(n);
                  }, 400)),
                  (a = window.setTimeout(() => {
                    (s = "seriouslytimeout"), l(n);
                  }, 12e3)));
              let c,
                m = 0,
                d = 0,
                u = (e) => {
                  !i && this.BCMOkToUse(e, s)
                    ? l({ [e.strHost]: e })
                    : (n[e.strHost] = e),
                    (!i && c()) ||
                      (0 == --d &&
                        (i
                          ? this.WriteCMListToLocalStorage()
                          : this.BCMOkToUse(e, "seriouslytimeout")
                            ? l({ [e.strHost]: e })
                            : ((n[e.strHost] = e), l(n))));
                };
              c = () => {
                if (m < t.length) {
                  let e = t[m++];
                  return (
                    this.PingCM(e).then(() => {
                      u(e);
                    }),
                    !0
                  );
                }
                return !1;
              };
              for (let e = 0; e < 4; e++) c() && d++;
            });
          }
          GetCMWithFewestDisconnects() {
            if (!this.m_CMList.rgCMList.length) return;
            let e = this.m_CMList.rgCMList[0],
              t = 1;
            for (
              ;
              e.nConnectFailures > 0 && t < this.m_CMList.rgCMList.length;
            ) {
              let n = this.m_CMList.rgCMList[t++];
              (!n.nConnectFailures ||
                n.nConnectFailures < e.nConnectFailures) &&
                (e = n);
            }
            return e && this.FixDevHost(e.strHost), e;
          }
          BCMOkToUse(e, t) {
            if (!e) return !1;
            let n = e.msPing + e.nCMLoad;
            return (
              (n < 80 && e.msPing < 60) ||
              ("immediate" !== t &&
                ((n < 140 && e.msPing < 100) ||
                  ("timeout" !== t && n < 350 && e.msPing < 275)))
            );
          }
          async PingCM(e) {
            let t = "https://" + this.FixDevHost(e.strHost) + "/cmping/",
              n = performance.now();
            const i = s().CancelToken.source();
            let o = window.setTimeout(() => {
              e.strHost, i.cancel();
            }, 1e3);
            try {
              let r = await s().head(t, { cancelToken: i.token });
              e.strHost, window.clearTimeout(o);
              let a = performance.now() - n,
                l = r.headers["x-steam-cmload"]
                  ? parseInt(r.headers["x-steam-cmload"])
                  : void 0;
              e.strHost, (e.msPing = a), (e.nCMLoad = l);
            } catch (t) {
              s().isCancel(t) ? e.strHost : window.clearTimeout(o),
                (e.msPing = 1e4),
                (e.nCMLoad = 0);
            }
            return (e.rtLastCheck = new Date().getTime() / 1e3), e.msPing;
          }
        }
        async function O() {
          const e = `${b.TS.WEBAPI_BASE_URL}ISteamDirectory/GetCMListForConnect/v1/?cellid=0&cmtype=websockets&origin=${self.origin}`,
            t = (await s().get(e)).data,
            n = (t && t.response && t.response.serverlist) || [];
          return (
            n.length, n.map((e, t) => ({ strHost: e.endpoint, nPriority: t }))
          );
        }
        function N(e) {
          return (e.msPing || 0) + (e.nCMLoad || 0);
        }
        class V extends R {
          m_Session = {
            m_bWaitingForLogonResponse: !1,
            m_nSessionID: 0,
            m_eResultLogonSuccess: 2,
            m_nSessionIDLast: 0,
            m_nClientInstanceID: "0",
          };
          m_Socket;
          m_SocketCMHost;
          m_bLoadingCMList = !1;
          m_iIntervalHeartbeat;
          m_iCallSeq = 1;
          m_mapWaitingCallbacks = new Map();
          m_CMList = new x();
          constructor(e) {
            super(), (0, m.Gn)(this), this.m_CMList.Init(e);
          }
          BIsConnected() {
            return this.m_Socket && this.m_Socket.readyState == WebSocket.OPEN;
          }
          Connect() {
            return (
              this.m_onConnect ||
                (console.log("Loading CM List"),
                (this.m_bConnected = !1),
                (this.m_bLoggedOn = !1),
                (this.m_bForceDisconnect = !1),
                (this.m_Session.m_bWaitingForLogonResponse = !0),
                (this.m_bLoadingCMList = !0),
                (this.m_onConnect = this.m_CMList
                  .GetBestCMsToConnectTo()
                  .then(
                    (e) => (
                      (this.m_bLoadingCMList = !1),
                      new Promise((t, n) => {
                        let i = 0,
                          o = !1;
                        e.slice(0, 3).forEach((e, r, a) =>
                          this.AttemptHostConnect(e).then(
                            (n) => {
                              o
                                ? n.close(4e3)
                                : ((o = !0),
                                  (this.m_Socket = n),
                                  (this.m_SocketCMHost = e),
                                  (this.m_bConnected = !0),
                                  this.OnConnect(),
                                  t());
                            },
                            () => {
                              console.log(
                                `Failed to connect to CM ${r + 1} of ${a.length}: ${e.strHost}`,
                              ),
                                i++,
                                i === a.length &&
                                  (console.log(
                                    `Failed to connect to all ${a.length} best CMs`,
                                  ),
                                  n());
                            },
                          ),
                        );
                      })
                    ),
                  )
                  .catch((e) => {
                    throw (
                      ((this.m_bLoadingCMList = !1), this.OnDisconnect(), e)
                    );
                  }))),
              this.m_onConnect
            );
          }
          AttemptHostConnect(e) {
            console.log(`Attempting to connect to host ${e.strHost}`);
            let t = new WebSocket(this.m_CMList.BuildCMWebSocketURL(e.strHost));
            return (
              (t.binaryType = "arraybuffer"),
              (t.onmessage = (e) => {
                let t = new I.pV(e.data),
                  n = l.lI.InitHeaderFromPacket(t);
                1 == n.GetEMsg()
                  ? this.DecodeAndDispatchMultiMsg(l.w.InitFromMsg(P.gF, n))
                  : this.DispatchMessage(n);
              }),
              new Promise((n, i) => {
                let o = !1;
                const r = window.setTimeout(() => {
                  console.warn(
                    `Socket connection timed out after 3000ms: ${e.strHost}`,
                  ),
                    (o = !0),
                    t.close(4e3),
                    this.m_CMList.RecordCMDisconnected(e),
                    i();
                }, 3e3);
                (t.onopen = () => {
                  console.log(`Connected socket to host ${e.strHost}`),
                    (0, h.w)(
                      !o,
                      "Socket connection was opened after timing out.",
                    ),
                    o || window.clearTimeout(r),
                    n(t);
                }),
                  (t.onerror = (t) => {
                    o ||
                      (window.clearTimeout(r),
                      (0, h.w)(!1, "Socket connect failed", t),
                      console.log(t),
                      t.message
                        ? console.log(t.message)
                        : console.log("No message"),
                      this.m_CMList.RecordCMDisconnected(e),
                      i());
                  });
              })
            );
          }
          get session() {
            return this.m_Session;
          }
          ClearHeartbeatInterval() {
            this.m_iIntervalHeartbeat &&
              (window.clearInterval(this.m_iIntervalHeartbeat),
              (this.m_iIntervalHeartbeat = void 0));
          }
          ResetHeartbeatInterval() {
            this.ClearHeartbeatInterval(),
              (this.m_iIntervalHeartbeat = window.setInterval(
                () => this.SendHeartbeat(),
                27e3,
              ));
          }
          SendHeartbeat() {
            let e = l.w.Init(r.s5, 703);
            this.Send(e);
          }
          OnConnect() {
            super.OnConnect(),
              this.m_Socket &&
                ((this.m_Socket.onerror = (e) => {}),
                this.ResetHeartbeatInterval(),
                (this.m_Socket.onclose = (e) => {
                  this.OnDisconnect();
                }));
          }
          Disconnect() {
            this.m_Socket && this.m_Socket.close();
          }
          OnDisconnect() {
            (this.m_Socket = void 0),
              (this.m_SocketCMHost = void 0),
              (this.m_onConnect = void 0),
              this.ClearHeartbeatInterval(),
              super.OnDisconnect();
          }
          SendMsgAndAwaitResponse(e, t) {
            return new Promise((n, i) => {
              let o = this.m_iCallSeq++;
              e.Hdr().set_jobid_source("" + o),
                this.Send(e)
                  ? this.m_mapWaitingCallbacks.set(o, {
                      iSeq: o,
                      msgClass: t,
                      fnCallback: n,
                    })
                  : this.ResolveAwaitWithTransportError(
                      n,
                      t,
                      2,
                      "Web socket not connected",
                    );
            });
          }
          SendInternal(e) {
            return (
              !!this.m_Socket &&
              (this.m_steamid.BIsValid() &&
                e.Hdr().set_steamid(this.m_steamid.ConvertTo64BitString()),
              this.m_Session.m_nSessionID &&
                e.Hdr().set_client_sessionid(this.m_Session.m_nSessionID),
              this.m_Socket.send(e.Serialize()),
              703 != e.GetEMsg() && this.ResetHeartbeatInterval(),
              !0)
            );
          }
          BInternalShouldDispatchMessage(e) {
            if (
              e.BIsValid() &&
              e.Hdr().jobid_target() &&
              e.Hdr().jobid_target() !== B.kF
            ) {
              let t = parseInt(e.Hdr().jobid_target());
              if (this.m_mapWaitingCallbacks.has(t)) {
                let n = this.m_mapWaitingCallbacks.get(t);
                if (n) {
                  let i = l.w.InitFromMsg(n.msgClass, e);
                  this.DEBUG_LogCMInterfaceActivity(i, "receive", !0),
                    i.BIsValid()
                      ? n.fnCallback(i)
                      : this.ResolveAwaitWithTransportError(
                          n.fnCallback,
                          n.msgClass,
                          102,
                          "Failed to parse response from server",
                        ),
                    this.m_mapWaitingCallbacks.delete(t);
                }
                return !1;
              }
              this.DEBUG_LogCMInterfaceActivity(e, "receive", !1);
            }
            return !0;
          }
          LogOnResponseHandler = this.messageHandlers.RegisterEMessageAction(
            751,
            r.c1,
            (e) => {
              let t = e.Body().eresult();
              (this.m_Session.m_bWaitingForLogonResponse = !1),
                (this.m_Session.m_eResultLogonSuccess = t),
                1 == t
                  ? ((this.m_steamid = new u.b(
                      e.Body().client_supplied_steamid(),
                    )),
                    (this.m_bLoggedOn = !0),
                    (this.m_Session.m_nSessionID = e.Hdr().client_sessionid()),
                    (this.m_Session.m_nSessionIDLast =
                      this.m_Session.m_nSessionID),
                    (this.m_Session.m_nClientInstanceID = e
                      .Body()
                      .client_instance_id()),
                    this.OnLoggedOn())
                  : (console.warn(
                      "Received error code from LogOnResponse, disconnecting. EResult=",
                      e.Body().eresult(),
                    ),
                    48 == t &&
                      this.m_CMList.RecordCMDisconnected(this.m_SocketCMHost),
                    this.Disconnect());
            },
          );
          ClientAccountInfoHandler =
            this.messageHandlers.RegisterEMessageAction(768, r.dX, (e) => {
              (this.m_unAccountFlags = e.Body().account_flags() || 0),
                (this.m_strIPCountry = e.Body().ip_country() || ""),
                (this.m_strPersonaName = e.Body().persona_name() || "");
            });
          DecodeAndDispatchMultiMsg(e) {
            let t = e.Body().message_body();
            if (!t) return;
            e.Body().size_unzipped() && (t = F.inflate(t));
            let n = new I.pV(t);
            for (; n.GetCountBytesRemaining() > 0; ) {
              let e = n.GetUint32(),
                t = l.lI.InitHeaderFromPacket(
                  new I.pV(n.GetPacket(), n.TellGet(), e),
                );
              this.DispatchMessage(t), n.SeekGetCurrent(e);
            }
          }
        }
        (0, o.Cg)([m.XI], V.prototype, "DecodeAndDispatchMultiMsg", null);
        n(70734), n(22386);
        new Map();
        var U = n(74002),
          H = n(58743),
          W = (n(64951), n(65070), n(34879));
        (0, m.jK)({ enforceActions: "never" }),
          (window.AssertMsg = h.w),
          document.addEventListener("DOMContentLoaded", async function () {
            (0, i.XJ)(),
              i.TS.IN_GAMEPADUI ||
                (await n.e(3159).then(n.t.bind(n, 43159, 23))),
              await (async function (e) {
                const t = U.A0.GetLanguageFallback(e),
                  i = e === t,
                  [o, r, a, s] = await Promise.all([
                    n(80820)(`./shared_${e}.json`),
                    n(9437)(`./friendsui_${e}.json`),
                    i ? {} : n(42619)(`./shared_${t}.json`),
                    i ? {} : n(48516)(`./friendsui_${t}.json`),
                  ]);
                U.pf.AddTokens({ ...o, ...r }, { ...a, ...s });
              })(i.TS.LANGUAGE);
            let e = !0;
            b.GP.steamid && (0, C.dP)(b.GP.steamid),
              !i.TS.IN_CLIENT &&
                i.TS.STEAM_TV &&
                (i.iA.logged_in
                  ? (0, _.xT)(b.GP.steamid)
                  : ((e = !1),
                    (async function () {
                      (0, _.g)();
                      let { CBroadcastApp: e } = await Promise.all([
                        n.e(9489),
                        n.e(7653),
                      ]).then(n.bind(n, 69704));
                      new e().Init(() => {
                        window.location = window.location;
                      });
                    })())),
              S.Ay.SetNavEventParams(
                "steamclient",
                i.TS.STEAM_TV ? "steamtv" : "friendsui",
              ),
              e &&
                (function () {
                  let e,
                    t = i.TS.IN_GAMEPADUI,
                    n = new _.Yw(t),
                    o = null,
                    r = !1;
                  {
                    const t = {
                      GetFriendsUIExportsVersion: () => f.r,
                      FriendsListRoot: (e) =>
                        (0, g.Yg)(n.FriendStore, n.ChatStore, e),
                      FriendsListQuickAccess: (e) =>
                        (0, g.p5)(n.FriendStore, n.ChatStore, e),
                      GroupsListRoot: (e) =>
                        (0, g.vT)(n.FriendStore, n.ChatStore, e),
                      FriendsListAndChatsRoot: (e) =>
                        (0, g.CN)(n.FriendStore, n.ChatStore, e),
                      TabSetRoot: (e) => (0, g.as)(e),
                      VoiceChatControlsRoot: (e) => (0, g.nf)(n.ChatStore, e),
                      VoiceChatHeaderRoot: (e) => (0, g.cQ)(n.ChatStore, e),
                      RemotePlayTogetherControlsRoot: (e) =>
                        (0, g.RM)(n.ChatStore, e),
                      BShowRemotePlayQuickAccessControls: () =>
                        H.xm.RemotePlayStore.BShowQuickAccessControls(),
                      UnreadChatMessagesHeaderRoot: (e) =>
                        (0, g.V8)(n.ChatStore, e),
                      InvitesList: (e) => (0, g.p)(n.FriendStore, e),
                      InstrumentWindow: (e) => {
                        _.ZM.InstrumentWindow(e), (0, _.DW)(e, W.m);
                      },
                      GetCurrentUserStatusInterface: () =>
                        n.GetCurrentUserStatusInterface(),
                      GetVoiceInterface: () => n.GetVoiceInterface(),
                      SetEmoticonTrackerCallback: (e) =>
                        n.SetEmoticonTrackerCallback(e),
                      SetStickerTrackerCallback: (e) =>
                        n.SetStickerTrackerCallback(e),
                      ShowPopupFriendsList: (e) =>
                        H.xm.ShowPopupFriendsList(W.m, !e, e),
                      Reconnect: () => e.Connect(),
                      GetPreferredPersonaState: () =>
                        H.xm.FriendStore.GetPersonaStatePreference(),
                    };
                    Object.assign(window, t);
                  }
                  if (i.TS.IN_CLIENT) {
                    (0, b.bf)();
                    let t = {
                      message: "ChatJavascriptInitialized",
                      data: i.TS.BUILD_TIMESTAMP,
                    };
                    window.parent.postMessage(t, "https://steamloopback.host"),
                      window.parent.postMessage(
                        "ChatJavascriptIntialized",
                        "https://steamloopback.host",
                      ),
                      (e = new G()),
                      (r = !0),
                      e.Connect();
                  } else {
                    const t = (e = new V(n.Storage));
                    (o = new p(t, i.TS.EREALM)), o.PerformInitialLogon(i.iA);
                  }
                  n.Init(e, r, o),
                    r
                      ? (0, g.Af)(
                          n.FriendStore,
                          n.ChatStore,
                          document.getElementById("friendslist-container"),
                        )
                      : (0, g.wE)(
                          n.FriendStore,
                          n.ChatStore,
                          document.getElementById("friendslist-container"),
                        );
                })();
          });
      },
      31370: (e, t, n) => {
        "use strict";
        n.d(t, { o: () => C });
        var i = n(34629),
          o = n(78116),
          r = n(60853),
          a = n(92089),
          s = n(89193),
          l = n(56132),
          c = n(77765),
          m = n(8805),
          d = n(28574);
        class u {
          static k_QueueForEffect = {
            snowball: "snowball",
            snow: "confetti_snow",
            confetti: "confetti_snow",
            goldfetti: "confetti_snow",
            firework: "festive",
            balloons: "festive",
            lny2020_lanterns: "festive",
            lny2020_firework: "festive",
            lny2020_confetti: "confetti_snow",
          };
          name;
          timestamp;
          expires;
          settings;
          constructor(e, t) {
            if (!t.hasOwnProperty(e))
              throw new Error("Room effect " + e + " is not defined.");
            (this.name = e),
              (this.timestamp = Date.now()),
              (this.settings = t[e]),
              (this.expires = this.timestamp + this.settings.timeout);
          }
          static QueueFor(e) {
            return u.k_QueueForEffect[e];
          }
          Queue() {
            return u.k_QueueForEffect[this.name];
          }
          bIsExpired() {
            return Date.now() > this.expires;
          }
          bIsActive() {
            const e = Date.now();
            return this.timestamp <= e && this.expires > e;
          }
          iTimeToExpiry() {
            return this.expires - Date.now();
          }
          render() {
            return this.bIsActive() ? this.settings.render(this) : null;
          }
        }
        class h {
          static k_MaxRoomEffectRunning = {
            default: 1,
            snowball: 10,
            confetti_snow: 3,
            festive: 10,
          };
          m_mapRoomEffectQueue = {
            default: [],
            snowball: [],
            confetti_snow: [],
            festive: [],
          };
          m_effectSettings;
          m_rgRunningEffects = [];
          constructor(e) {
            (0, s.Gn)(this), (this.m_effectSettings = e);
          }
          AddRoomEffect(e) {
            this.QueueRoomEffect(e), this.UpdateRunningRoomEffects();
          }
          QueueRoomEffect(e) {
            this.m_mapRoomEffectQueue[u.QueueFor(e)].push(e);
          }
          ActivateRoomEffect(e) {
            try {
              const t = new u(e, this.m_effectSettings);
              this.m_rgRunningEffects.push(t),
                window.setTimeout(() => {
                  this.UpdateRunningRoomEffects();
                }, t.iTimeToExpiry() + 100);
            } catch (e) {
              console.log(e);
            }
          }
          BIsQueueFull(e) {
            return (
              this.m_rgRunningEffects.filter((t) => t.Queue() == e).length >=
              h.k_MaxRoomEffectRunning[e]
            );
          }
          UpdateRunningRoomEffects() {
            this.m_rgRunningEffects = this.m_rgRunningEffects.filter(
              (e) => !e.bIsExpired(),
            );
            for (let e in this.m_mapRoomEffectQueue) {
              const t = e;
              for (
                ;
                this.m_mapRoomEffectQueue[t].length > 0 &&
                !this.BIsQueueFull(t);
              )
                this.ActivateRoomEffect(this.m_mapRoomEffectQueue[t].shift());
            }
          }
        }
        (0, i.Cg)([s.sH], h.prototype, "m_rgRunningEffects", void 0);
        var p = n(58743);
        const _ = d.Kp.PerMinute,
          g = 6 * d.Kp.PerHour;
        class C {
          BASELOG = new m.wd("Chat", () => this.unique_id).Debug;
          m_FriendStore;
          m_ChatStore;
          m_CMInterface;
          m_rgChatViews = [];
          m_bChatLogsLoaded = !1;
          m_bReceivedChatLogs = !1;
          static k_InitialMessageCount = 100;
          static k_KeepLoadedWhenAtScrollBottom = 2 * C.k_InitialMessageCount;
          static k_LoadMoreMessageCount = 50;
          m_bMoreAvailable = !1;
          m_nLoadingHistoryInProgressCount = 0;
          m_rgChatMessages = [];
          m_ChatMessageBlockList = new r._();
          m_cUnreadChatMessages = 0;
          m_bHasUnreadPriorityChatMessages = !1;
          m_rtFirstUnreadChatMsg = 0;
          m_rtLastAckedChatMsg = 0;
          m_rtLastServerAckedChatMsg = 0;
          m_rtLastMessageReceived = 0;
          m_rtLastServerMessageReceived = 0;
          m_strLastMessage = void 0;
          m_accountIDLastMessage = void 0;
          m_rtFirstUnread = 0;
          m_chatRoomEffects;
          m_oldestMessageTime;
          m_oldestMessageOrdinal;
          m_msTimeActivated = 0;
          m_setInflightClientMessageID = new Set();
          m_MessageSendQueue;
          constructor(e, t, n) {
            (0, s.Gn)(this),
              (this.m_FriendStore = e),
              (this.m_ChatStore = t),
              (this.m_CMInterface = n),
              (this.m_chatRoomEffects = new h(t.ChatRoomEffectSettings));
          }
          UnloadChatState() {
            this.UnloadActiveChatState(),
              (this.m_rtLastMessageReceived = 0),
              (this.m_rtLastServerMessageReceived = 0);
          }
          UnloadActiveChatState() {
            (this.m_rgChatMessages = []),
              this.m_ChatMessageBlockList.Clear(),
              (this.m_bChatLogsLoaded = !1),
              (this.m_bReceivedChatLogs = !1);
          }
          m_bPrepended = !1;
          get BIsPrepend() {
            return this.m_bPrepended;
          }
          ResetPrepended() {
            this.m_bPrepended = !1;
          }
          OnTyping() {}
          get is_friend_typing() {
            return !1;
          }
          OnReceivedNewMessage(e, t, n, i) {}
          BShouldTrackUnreadMessages() {
            return !0;
          }
          BIsVoiceAllowed() {
            return !0;
          }
          GetVoiceNotAllowedReason() {
            return null;
          }
          async SendChatMessage(e) {
            const t = this.m_MessageSendQueue.Add(e);
            try {
              const n = await this.SendChatMessageInternal(e);
              n === r.Bm.None
                ? this.m_MessageSendQueue.RemoveItem(t)
                : this.m_MessageSendQueue.SetItemFailed(t, n);
            } catch (e) {
              this.m_MessageSendQueue.SetItemFailed(t, r.Bm.Generic);
            }
          }
          async SendWithRetries(e, t) {
            let n = 1;
            const i = Date.now();
            for (; Date.now() - 1e3 * _ < i; ) {
              try {
                const i = await t();
                if (1 === i.GetEResult())
                  return (0, s.h5)(() => {
                    (e.rtTimestamp = i.Body().server_timestamp()),
                      (e.unOrdinal = i.Body().ordinal() || 0),
                      this.OnUserChatEcho(
                        e.rtTimestamp,
                        e.unOrdinal,
                        e.strMessage,
                        i.Body().message_without_bb_code() || e.strMessage,
                      );
                    let t = i.Body().modified_message();
                    return (
                      t &&
                        (this.m_ChatStore.EmoticonStore.TrackEmoticonUsage(
                          t,
                          e.rtTimestamp,
                        ),
                        (e.strMessage = t),
                        (this.m_strLastMessage = t),
                        (this.m_accountIDLastMessage =
                          this.m_FriendStore.self.accountid),
                        this.AddRoomEffectIfNeeded(t)),
                      e.OnServerAcknowledged(),
                      r.Bm.None
                    );
                  });
                switch (i.GetEResult()) {
                  case 15:
                    return e.SetErrorSending(r.Bm.NotFriends), e.eErrorSending;
                  case 84:
                    return (
                      e.SetErrorSending(r.Bm.RateLimitExceeded), e.eErrorSending
                    );
                  default:
                    if (3 === i.Hdr().transport_error())
                      return e.SetErrorSending(r.Bm.Generic), e.eErrorSending;
                    console.warn(
                      `Error sending message (Attempt #${n}). Got EResult ${i.GetEResult()}`,
                    );
                }
              } catch (e) {
                console.warn(
                  `Error sending message (Attempt #${n}). Got error ${e}`,
                );
              }
              const i = 1 * Math.pow(2, n - 1);
              await new Promise((e) => setTimeout(e, 1e3 * i)), n++;
            }
            return e.SetErrorSending(r.Bm.Generic), e.eErrorSending;
          }
          InitMessageSessionFromServer(e, t, n) {
            4 !== this.GetVisibilityState() && (this.m_cUnreadChatMessages = e),
              (this.m_bHasUnreadPriorityChatMessages = !1),
              (this.m_rtLastAckedChatMsg = this.m_rtLastServerAckedChatMsg = t),
              (this.m_rtLastMessageReceived = n),
              this.m_rtLastAckedChatMsg < this.m_rtLastMessageReceived &&
                (this.m_rtFirstUnreadChatMsg = this.m_rtLastAckedChatMsg + 1);
          }
          AddChatView(e) {
            this.m_rgChatViews.push(e);
          }
          RemoveChatView(e) {
            let t = this.m_rgChatViews.indexOf(e);
            -1 != t && this.m_rgChatViews.splice(t, 1);
          }
          IsMoreHistoryAvailable() {
            return this.m_bMoreAvailable;
          }
          RoomEffectManager() {
            return this.m_chatRoomEffects;
          }
          InternalLoadChatLogs(e = !1) {
            let t, n, i, o;
            if (e) {
              let e = this.GetMostRecentChatMsg();
              e
                ? ((t = e.rtTimestamp), (n = e.unOrdinal))
                : ((t = l.ME), (n = 0));
            } else (t = l.ME), (n = 0);
            return (
              (i = l.TQ),
              (o = 0),
              (this.m_nLoadingHistoryInProgressCount += 1),
              this.GetMessagesFromTimeRange(t, n, i, 0, C.k_InitialMessageCount)
                .then(({ messages: e, moreAvailable: t }) => {
                  this.AddMessagesToHistory(e, t),
                    (this.m_nLoadingHistoryInProgressCount -= 1),
                    (this.m_bReceivedChatLogs = !0);
                })
                .catch(
                  (e) => (
                    (this.m_nLoadingHistoryInProgressCount -= 1),
                    Promise.reject(e)
                  ),
                )
            );
          }
          LoadMoreHistory() {
            return 0 != this.m_nLoadingHistoryInProgressCount
              ? Promise.resolve(!0)
              : ((this.m_nLoadingHistoryInProgressCount += 1),
                this.GetMessagesFromTimeRange(
                  l.ME,
                  0,
                  this.m_oldestMessageTime,
                  this.m_oldestMessageOrdinal,
                  C.k_LoadMoreMessageCount,
                )
                  .then(
                    ({ messages: e, moreAvailable: t }) => (
                      this.AddMessagesToHistory(e, t),
                      (this.m_nLoadingHistoryInProgressCount -= 1),
                      !0
                    ),
                  )
                  .catch(
                    (e) => (
                      (this.m_nLoadingHistoryInProgressCount -= 1),
                      Promise.reject(e)
                    ),
                  ));
          }
          AddMessagesToHistory(e, t) {
            this.BASELOG(`merging ${e.length} messages`),
              this.MergeChatHistoryChunk(e),
              this.BASELOG(`${this.m_rgChatMessages.length} total messages`),
              (this.m_bMoreAvailable = t),
              this.BASELOG(
                `friend chat oldest time ${this.m_oldestMessageTime} oldest ordinal ${this.m_oldestMessageOrdinal} bMoreAvailable ${this.m_bMoreAvailable}`,
              );
          }
          get ChatStore() {
            return this.m_ChatStore;
          }
          OnActivate() {
            (this.m_cUnreadChatMessages ||
              this.m_bHasUnreadPriorityChatMessages) &&
              ((this.m_cUnreadChatMessages = 0),
              (this.m_bHasUnreadPriorityChatMessages = !1),
              this.m_rtLastMessageReceived &&
                ((this.m_rtLastAckedChatMsg = this.m_rtLastMessageReceived),
                this.AckChatMsg(this.m_rtLastMessageReceived)),
              p.xm.FriendStore.UpdateUnreadMessagesGlobal(),
              p.xm.UIStore.FlashChatWindow(this, !1));
          }
          OnDeactivate() {
            this.m_rtFirstUnreadChatMsg = 0;
          }
          get self() {
            return this.m_FriendStore.self;
          }
          InternalAppendChatMsg(e) {
            (0 != this.m_rgChatViews.length || this.m_bChatLogsLoaded) &&
              (this.HasChatMessage(e.rtTimestamp, e.unOrdinal) ||
                (this.m_rgChatMessages.push(e),
                this.m_ChatMessageBlockList.AppendNewMessage(e),
                this.TrimLogsIfPossible()));
          }
          TrimLogsIfPossible() {
            let e =
              this.m_rgChatMessages.length - C.k_KeepLoadedWhenAtScrollBottom;
            if (e <= 0) return;
            for (let e of this.m_rgChatViews)
              if (!e.is_scrolled_to_bottom) return;
            let t = this.m_ChatMessageBlockList.RemoveOldestMessages(e);
            if (!t) return;
            let n = this.m_rgChatMessages.indexOf(t);
            n < 0
              ? (0, c.w)(!1, "Failed to find message being removed")
              : this.m_rgChatMessages.splice(0, n + 1);
          }
          HasChatMessage(e, t) {
            for (let n = this.m_rgChatMessages.length - 1; n >= 0; n--) {
              let i = this.m_rgChatMessages[n];
              if (i.rtTimestamp == e && i.unOrdinal == t) return !0;
            }
            return !1;
          }
          HasClientMessageInFlight(e) {
            return this.m_setInflightClientMessageID.has(e);
          }
          AppendChatMsg(e, t, n, i) {
            let o = new r.D8(e, t, n, i);
            return (
              (o.eAnimationState = r.oO.Animating),
              this.InternalAppendChatMsg(o),
              o
            );
          }
          AppendLocalEchoChatMsg(e) {
            let t = new r.Lx(this.self.accountid, p.xm.GetServerRTime32(), e);
            return (
              (t.eAnimationState = r.oO.Animating),
              this.InternalAppendChatMsg(t),
              t
            );
          }
          RemoveMessage(e) {
            const t = this.m_rgChatMessages.findIndex(
              (t) => t.UniqueKey() === e.UniqueKey(),
            );
            -1 === t
              ? console.warn("Could not find message to remove.")
              : this.m_rgChatMessages.splice(t, 1),
              this.m_ChatMessageBlockList.RemoveLocalMessage(e),
              this.TrimLogsIfPossible();
          }
          RetryFailedMessage(e) {
            e.eErrorSending !== r.Bm.None
              ? (this.RemoveMessage(e), this.SendChatMessage(e.strMessage))
              : console.log(
                  "RetryFailedMessage called with a non-failed message. Ignoring.",
                );
          }
          AddNewChatMsgAndNotify(e, t, n, i, o, r) {
            let a = this.AppendChatMsg(e, t, n, i);
            (a.Mentions = r), this.OnNewChatMsgAdded(e, t, n, i);
            let s = void 0 !== o;
            this.CheckShouldNotify(a, s ? o : i, i),
              this.AddRoomEffectIfNeeded(a.strMessage);
          }
          AddRoomEffectIfNeeded(e) {
            const t = (0, a.Hd)(e);
            t &&
              t[0] &&
              "roomeffect" === t[0].tag &&
              this.m_chatRoomEffects.AddRoomEffect(t[0].args.type);
          }
          UpdateChatMessageDeletedState(e, t) {
            for (let n of this.m_rgChatMessages)
              for (let i of e)
                n.rtTimestamp == i.rtTimestamp &&
                  n.unOrdinal == i.unOrdinal &&
                  n.eDeleteState != r.$F.Deleted &&
                  (n.eDeleteState = t);
          }
          BShouldSilentlyAddMessage(e) {
            return !1;
          }
          DecorateNotification(e, t, n, i) {
            if (i !== n) {
              const n = this.m_ChatStore.NotificationBBCodeParser,
                o = {
                  chat: this,
                  unAccountIDSender: e.unAccountID,
                  key: e.UniqueKey(),
                  rtTimestamp: e.rtTimestamp,
                  onLoad: () => {},
                },
                r = n.ParseBBCode(i, o);
              if (r) return { ...t, ...r };
            }
            return t;
          }
          CheckShouldNotify(e, t, n) {
            let i = this.self.accountid == e.unAccountID,
              o = !1,
              r = !1,
              a = this.GetVisibilityState(),
              s = this.BShouldSilentlyAddMessage(e),
              l = e.Mentions;
            if (
              e.BIsServerMessage() &&
              !l.mention_all &&
              !l.mention_here &&
              !l.mention_user
            )
              return void (this.m_rtLastServerMessageReceived = e.rtTimestamp);
            i
              ? ((o = !0), (r = !0))
              : (s && 0 == this.m_cUnreadChatMessages) || 4 == a
                ? (o = !0)
                : 3 == a &&
                  0 == this.m_cUnreadChatMessages &&
                  p.xm.IdleTracker.AddOnNextActivityCallback(() => {
                    4 == this.GetVisibilityState() && this.OnActivate();
                  }),
              (this.m_rtLastMessageReceived = e.rtTimestamp),
              (this.m_strLastMessage = e.strMessage),
              (this.m_accountIDLastMessage = e.unAccountID);
            let c = this.m_cUnreadChatMessages,
              m = this.m_bHasUnreadPriorityChatMessages;
            this.BShouldTrackUnreadMessages() &&
              (o
                ? ((this.m_rtLastAckedChatMsg = e.rtTimestamp),
                  (this.m_cUnreadChatMessages = 0),
                  (this.m_bHasUnreadPriorityChatMessages = !1),
                  r || this.AckChatMsg(e.rtTimestamp))
                : (0 == this.m_rtFirstUnreadChatMsg &&
                    (this.m_rtFirstUnreadChatMsg =
                      this.m_rtLastMessageReceived),
                  this.m_cUnreadChatMessages++)),
              s || this.OnReceivedNewMessage(e, a, t, n),
              (c == this.m_cUnreadChatMessages &&
                m == this.m_bHasUnreadPriorityChatMessages) ||
                p.xm.FriendStore.UpdateUnreadMessagesGlobal();
          }
          AddVoiceChannelInviteMsg(e, t, n) {
            this.InternalAppendChatMsg(new r.$G(e, t, n));
          }
          AddLocalMsg(e, t, n) {
            this.InternalAppendChatMsg(new r.on(e, t, n));
          }
          AddNewServerMsg(e, t, n, i, o, a, s) {
            if (!(0, r.$T)(i)) return;
            let l = new r.D8(e, t, n, o, [], i, a, s);
            11 == l.eServerMsgType &&
              this.SetupAppCustomServerMsg(l).then((i) => {
                this.OnNewChatMsgAdded(e, t, n, i),
                  this.CheckShouldNotify(
                    l,
                    i,
                    l.strServerMsgAppCustomLocalized,
                  );
              }),
              this.InternalAppendChatMsg(l);
          }
          AckChatMsg(e) {
            (this.m_cUnreadChatMessages > 0 ||
              this.m_rtLastServerAckedChatMsg != e) &&
              (this.AckChatMsgOnServer(e),
              (this.m_rtLastServerAckedChatMsg = e));
          }
          OnUserChatEcho(e, t, n, i) {
            e >= this.m_rtLastAckedChatMsg &&
              ((this.m_rtLastMessageReceived = e),
              this.UpdateLastAckTimeFromServer(e)),
              this.OnNewChatMsgAdded(
                this.m_FriendStore.self.accountid,
                e,
                t,
                n,
              );
          }
          UpdateLastAckTimeFromServer(e) {
            this.m_rtLastServerAckedChatMsg <= e &&
              ((this.m_rtLastServerAckedChatMsg = e),
              (this.m_rtLastAckedChatMsg = e),
              this.m_rtLastMessageReceived <= e &&
                ((this.m_cUnreadChatMessages = 0),
                (this.m_bHasUnreadPriorityChatMessages = !1),
                p.xm.FriendStore.UpdateUnreadMessagesGlobal(),
                p.xm.UIStore.FlashChatWindow(this, !1)));
          }
          GetMostRecentChatMsg() {
            for (let e = this.m_rgChatMessages.length - 1; e >= 0; e--)
              if (-1 != this.m_rgChatMessages[e].unOrdinal)
                return this.m_rgChatMessages[e];
            return null;
          }
          MergeChatHistoryChunk(e) {
            if (!e.length) return;
            let t,
              n = e[0],
              i = e[e.length - 1],
              o = 0;
            for (t = this.m_rgChatMessages.length - 1; t >= 0; t--)
              if (-1 != this.m_rgChatMessages[t].unOrdinal) {
                if (this.m_rgChatMessages[t].BIsOlderThan(n)) break;
                this.m_rgChatMessages[t].BIsNewerThan(i) && o++;
              }
            for (let t of e) this.MsgLoadedFromHistory(t);
            for (
              t++,
                this.m_rgChatMessages.splice(
                  t,
                  this.m_rgChatMessages.length - t - o,
                  ...e,
                ),
                t = 0;
              t < this.m_rgChatMessages.length &&
              -1 == this.m_rgChatMessages[t].unOrdinal;
              t++
            );
            t >= this.m_rgChatMessages.length
              ? ((this.m_oldestMessageTime = l.TQ),
                (this.m_oldestMessageOrdinal = 0))
              : ((this.m_oldestMessageTime =
                  this.m_rgChatMessages[t].rtTimestamp),
                (this.m_oldestMessageOrdinal =
                  this.m_rgChatMessages[t].unOrdinal)),
              this.m_ChatMessageBlockList.BuildMessageBlocks(
                this.m_rgChatMessages,
              ),
              (this.m_bPrepended = !0);
          }
          InitQueuedMessages() {
            const e = this.m_MessageSendQueue.queued_messages;
            if (0 === e.length) return;
            const t = [];
            e.forEach(({ timestamp: e, message: n, eError: i, id: o }) => {
              if (void 0 === i || i === r.Bm.None)
                Date.now() - 1e3 * g < e &&
                  (this.m_MessageSendQueue.RemoveItem(o),
                  this.SendChatMessage(n));
              else {
                const o = new r.Lx(
                  this.self.accountid,
                  p.xm.GetServerRTime32(),
                  n,
                );
                (o.rtTimestamp = e), o.SetErrorSending(i), t.push(o);
              }
            }),
              this.MergeLocalMessages(t);
          }
          MergeLocalMessages(e) {
            e.sort((e, t) => e.rtTimestamp - t.rtTimestamp);
            const t = [];
            let n = 0,
              i = 0;
            for (; n < this.m_rgChatMessages.length || i < e.length; )
              n >= this.m_rgChatMessages.length
                ? t.push(e[i++])
                : i >= e.length
                  ? t.push(this.m_rgChatMessages[n++])
                  : this.m_rgChatMessages[n].rtTimestamp < e[i].rtTimestamp
                    ? t.push(e[i++])
                    : t.push(this.m_rgChatMessages[n++]);
            this.m_rgChatMessages = t;
          }
          GetBeginFileUploadURL() {
            return o.TS.CHAT_BASE_URL + "chat/beginfileupload/";
          }
          GetCommitFileUploadURL() {
            return o.TS.CHAT_BASE_URL + "chat/commitfileupload/";
          }
          LogFileUploadMessage(e) {
            this.BASELOG(e);
          }
          GetMaxFileSizeMB() {
            return 30;
          }
          MsgLoadedFromHistory(e) {
            11 == e.eServerMsgType && this.SetupAppCustomServerMsg(e);
          }
          async SetupAppCustomServerMsg(e) {
            return (
              console.warn(
                "App custom server message should only be used in a class that knows what to do with it",
              ),
              ""
            );
          }
          GetVisibilityState(e) {
            let t = 0;
            for (let n of this.m_rgChatViews) {
              if (e && !n.BIsInBrowserContext(e)) continue;
              let i = n.GetVisibilityState();
              i > t && (t = i);
            }
            return t;
          }
          GetLastMessage() {
            return this.m_strLastMessage;
          }
          get accountid_last_message() {
            return this.m_accountIDLastMessage;
          }
          get unread_message_count() {
            return this.m_cUnreadChatMessages;
          }
          get has_unread_priority_messages() {
            return this.m_bHasUnreadPriorityChatMessages;
          }
          get first_unread_msg_time() {
            return this.m_rtFirstUnreadChatMsg;
          }
          get time_last_message() {
            return this.m_rtLastMessageReceived;
          }
          get time_last_ack() {
            return this.m_rtLastAckedChatMsg;
          }
          get chat_messages() {
            return this.m_rgChatMessages;
          }
          get chat_message_blocks() {
            return this.m_ChatMessageBlockList;
          }
          get last_voice_participation_time() {
            return this.m_rtLastAckedChatMsg;
          }
          async LoadChatLogs() {
            if (!this.m_bChatLogsLoaded && this.m_CMInterface.logged_on)
              return (
                (this.m_bChatLogsLoaded = !0), this.InternalLoadChatLogs(!1)
              );
          }
          OnConnectionRestored() {
            this.m_bChatLogsLoaded && this.InternalLoadChatLogs(!0);
          }
        }
        (0, i.Cg)([s.sH], C.prototype, "m_bReceivedChatLogs", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_bMoreAvailable", void 0),
          (0, i.Cg)([s.sH.shallow], C.prototype, "m_rgChatMessages", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_cUnreadChatMessages", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_rtFirstUnreadChatMsg", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_rtLastAckedChatMsg", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_rtLastMessageReceived", void 0),
          (0, i.Cg)(
            [s.sH],
            C.prototype,
            "m_rtLastServerMessageReceived",
            void 0,
          ),
          (0, i.Cg)([s.sH], C.prototype, "m_strLastMessage", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_accountIDLastMessage", void 0),
          (0, i.Cg)([s.sH], C.prototype, "m_rtFirstUnread", void 0),
          (0, i.Cg)([s.XI], C.prototype, "InitMessageSessionFromServer", null),
          (0, i.Cg)([s.XI], C.prototype, "AddMessagesToHistory", null),
          (0, i.Cg)([s.XI], C.prototype, "OnActivate", null),
          (0, i.Cg)([s.XI], C.prototype, "OnDeactivate", null),
          (0, i.Cg)([s.XI], C.prototype, "AppendChatMsg", null),
          (0, i.Cg)([s.XI], C.prototype, "AppendLocalEchoChatMsg", null),
          (0, i.Cg)([s.XI], C.prototype, "AddNewChatMsgAndNotify", null),
          (0, i.Cg)([s.XI], C.prototype, "UpdateChatMessageDeletedState", null),
          (0, i.Cg)([s.XI], C.prototype, "AddVoiceChannelInviteMsg", null),
          (0, i.Cg)([s.XI], C.prototype, "AddLocalMsg", null),
          (0, i.Cg)([s.XI], C.prototype, "AddNewServerMsg", null);
      },
      10449: (e, t, n) => {
        "use strict";
        n.d(t, { w: () => l });
        var i = n(34629),
          o = n(93914),
          r = n(89193),
          a = n(45112),
          s = n(77631);
        class l extends o.Q {
          m_steamID;
          m_tabset;
          m_info = void 0;
          m_bShowWatchPromptDialog = !1;
          m_watchPromptInitialFriend = void 0;
          constructor(e, t) {
            super(),
              (0, r.Gn)(this),
              (this.m_steamID = s.b.InitFromAccountID(t)),
              (this.m_tabset = e),
              this.InitInfo();
          }
          async InitInfo() {
            this.m_info = (await l.GetBroadcastWatchStore()).StartInfo(
              this.m_steamID.ConvertTo64BitString(),
            );
          }
          static async GetBroadcastWatchStore() {
            const { BroadcastWatchStore: e } = await Promise.all([
              n.e(9489),
              n.e(7653),
            ]).then(n.bind(n, 65281));
            return e;
          }
          GetSteamID() {
            return this.m_steamID;
          }
          GetTabName() {
            const e = this.m_info && this.m_info.m_strTitle;
            return !e && a.td.bValid ? a.td.name : e;
          }
          GetUniqueID() {
            return "br" + this.m_steamID.GetAccountID();
          }
          OnTabFocus() {}
          InternalOnTabActivate() {}
          OnTabDeactivate() {}
          OnTabClosed() {
            (async () => {
              (await l.GetBroadcastWatchStore()).StopInfo(this.m_info);
            })();
          }
          IsVoiceActive() {
            return !1;
          }
          GetUnreadMessageCount() {
            return 0;
          }
          IsTabForChat(e) {
            return !1;
          }
          GetChatView() {
            return null;
          }
          IsBroadcast() {
            return !0;
          }
          ShowWatchPromptDialog(e) {
            (this.m_bShowWatchPromptDialog = !0),
              (this.m_watchPromptInitialFriend = e);
          }
          HideWatchPromptDialog() {
            (this.m_bShowWatchPromptDialog = !1),
              (this.m_watchPromptInitialFriend = void 0);
          }
        }
        (0, i.Cg)([r.sH], l.prototype, "m_info", void 0),
          (0, i.Cg)([r.sH], l.prototype, "m_bShowWatchPromptDialog", void 0),
          (0, i.Cg)([r.sH], l.prototype, "m_watchPromptInitialFriend", void 0),
          (0, i.Cg)([r.XI], l.prototype, "ShowWatchPromptDialog", null),
          (0, i.Cg)([r.XI], l.prototype, "HideWatchPromptDialog", null);
      },
      42937: (e, t, n) => {
        "use strict";
        n.d(t, { CF: () => G.CF, fl: () => P });
        var i = n(34629),
          o = n(78116),
          r = n(60853),
          a = n(58743),
          s = n(89193);
        class l {
          bCollapsed = !1;
          nDefaultWidth;
          nDesiredWidth;
          IsEmpty() {
            return (
              !this.bCollapsed &&
              void 0 === this.nDefaultWidth &&
              void 0 === this.nDesiredWidth
            );
          }
        }
        const c = "ChatEmbeds";
        class m {
          m_mapEmbed = new s.Es();
          Init() {
            a.xm.SettingsStore.GetObjectFromLocalStorageWhenReady(c, {}).then(
              (e) => {
                this.m_mapEmbed.clear();
                for (let t in e) {
                  let n = new l();
                  Object.assign(n, e[t]), this.m_mapEmbed.set(t, n);
                }
              },
            );
          }
          GetKey(e, t) {
            return t + "_" + e;
          }
          EvictOldestIfNecessary() {
            if (this.m_mapEmbed.size > 100) {
              let e = Array.from(this.m_mapEmbed.keys()).sort()[0];
              this.m_mapEmbed.delete(e);
            }
          }
          GetOrCreateEmbedData(e, t) {
            let n = this.GetKey(e, t),
              i = this.m_mapEmbed.get(n);
            return i || ((i = new l()), (i.bCollapsed = !1)), i;
          }
          SaveEmbedData(e, t, n) {
            n.IsEmpty()
              ? this.m_mapEmbed.delete(this.GetKey(e, t))
              : this.m_mapEmbed.set(this.GetKey(e, t), n),
              this.EvictOldestIfNecessary(),
              this.WriteToLocalStorage();
          }
          WriteToLocalStorage() {
            a.xm.SettingsStore.StoreObjectInLocalStorage(c, this.m_mapEmbed);
          }
          GetCollapsedState(e, t) {
            let n = this.m_mapEmbed.get(this.GetKey(e, t));
            return !(!n || !n.bCollapsed);
          }
          SetCollapsedState(e, t, n) {
            let i = this.GetOrCreateEmbedData(e, t);
            (i.bCollapsed = n), this.SaveEmbedData(e, t, i);
          }
          GetWidths(e, t) {
            let n = this.m_mapEmbed.get(this.GetKey(e, t));
            if (n && n.nDesiredWidth && n.nDefaultWidth)
              return {
                nDesiredWidth: n.nDesiredWidth,
                nDefaultWidth: n.nDefaultWidth,
              };
          }
          SetWidths(e, t, n, i) {
            let o = this.GetOrCreateEmbedData(e, t);
            n == i
              ? (delete o.nDefaultWidth, delete o.nDesiredWidth)
              : ((o.nDesiredWidth = n), (o.nDefaultWidth = i)),
              this.SaveEmbedData(e, t, o);
          }
        }
        var d = n(99059),
          u = n(93625),
          h = n(18775),
          p = n(73880),
          _ = n(82789),
          g = n(45518),
          C = n(77631),
          f = n(42674),
          S = n(94325),
          v = n(70042),
          b = n(361);
        class I extends v.p {
          m_CMInterface;
          Init(e) {
            (this.m_CMInterface = e),
              this.m_CMInterface.messageHandlers.RegisterEMessageAction(
                9331,
                b.q8,
                (e) => {
                  let t = [];
                  for (let n of e.Body().emoticons()) {
                    let e = n.name();
                    if (e.startsWith("^")) t.push({ name: e });
                    else {
                      let i = { name: e.substr(1, e.length - 2) },
                        o = i.name.toLowerCase();
                      o != i.name && (i.name_normalized = o),
                        n.time_last_used() &&
                          (i.last_used = n.time_last_used()),
                        n.use_count() && (i.use_count = n.use_count()),
                        n.time_received() &&
                          (i.time_received = n.time_received()),
                        n.appid() && (i.appid = n.appid()),
                        t.push(i);
                    }
                  }
                  this.OnEmoticonListReceived(t);
                  const n = e.Body().toObject();
                  n.stickers && (this.m_rgStickers = n.stickers.map((e) => e)),
                    n.effects &&
                      (this.m_rgEffects = n.effects.map(
                        ({ name: e, ...t }) => ({ name: e, ...t }),
                      ));
                  let i = this.m_rgStickers
                      .map((e) => e.time_received)
                      .reduce(
                        (e, t) => Math.max(e, t),
                        Number.MIN_SAFE_INTEGER,
                      ),
                    o = this.m_rgEffects
                      .map((e) => e.time_received)
                      .reduce(
                        (e, t) => Math.max(e, t),
                        Number.MIN_SAFE_INTEGER,
                      );
                  this.m_rtLastStickerOrEffect = Math.max(i, o);
                },
              );
          }
          BInitialized() {
            return !!this.m_CMInterface;
          }
          GetServerTime() {
            return this.m_CMInterface.GetServerRTime32();
          }
          RequestEmoticonListInternal() {
            this.m_CMInterface.RunWhenLoggedOn(() => {
              let e = g.w.Init(b.Ql, 9330);
              this.m_CMInterface.Send(e);
            });
          }
        }
        var w = n(28776),
          y = n(55157);
        class E extends y.s {
          m_CMInterface;
          async InitCM(e, t) {
            return null != this.m_CMInterface
              ? null
              : ((this.m_CMInterface = e),
                await this.m_CMInterface.WaitUntilLoggedOn(),
                this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                  w.QA.NotifyCommunityPreferencesChangedHandler,
                  (e) => (
                    this.UpdateCommunityPreferences(e.Body().preferences()),
                    this.OnFilterDataChanged(),
                    1
                  ),
                ),
                this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                  w.QA.NotifyTextFilterWordsChangedHandler,
                  (e) => (
                    this.UpdateTextFilterWords(e.Body().words()),
                    this.OnFilterDataChanged(),
                    1
                  ),
                ),
                this.Init(
                  this.m_CMInterface.steamid.GetAccountID(),
                  this.m_CMInterface.GetServiceTransport(),
                  t,
                ));
          }
        }
        var D = n(37779),
          A = n(77765),
          T = n(74002);
        function M(e, t) {
          if (!e || !t) return [];
          let n = [],
            i = e.values(),
            o = i.next();
          for (; !o.done; ) t(o.value) && n.push(o.value), (o = i.next());
          return n;
        }
        async function R(e, t) {
          const n = Math.floor(Math.random() * t * 1e3);
          return await new Promise((e) => setTimeout(e, n)), e();
        }
        var k = n(28574);
        class L {
          static strSettingsStorageKey = "RecentChats.HiddenItems";
          m_storage;
          m_settings;
          m_bReady = !1;
          constructor() {
            (0, s.Gn)(this);
          }
          Init(e) {
            (this.m_storage = e), this.InitFromStorage();
          }
          get bReady() {
            return this.m_bReady;
          }
          async InitFromStorage() {
            try {
              const e = await this.m_storage.GetObject(L.strSettingsStorageKey);
              if (!e)
                return (
                  (this.m_settings = s.sH.object({ friends: {}, groups: {} })),
                  void (this.m_bReady = !0)
                );
              if (!this.ParseStoredObject(e))
                throw new Error(
                  "Stored object was malformed. Could not parse correctly.",
                );
              (this.m_settings = s.sH.object(e)), (this.m_bReady = !0);
            } catch (e) {
              console.error(
                `CHiddenRecentItemsSettings: Problem initializing from cache: ${e}`,
              ),
                this.m_storage.RemoveObject(L.strSettingsStorageKey),
                (this.m_settings = s.sH.object({ friends: {}, groups: {} })),
                (this.m_bReady = !0);
            }
          }
          ParseStoredObject(e) {
            try {
              if ("object" != typeof e) return !1;
              const t = e;
              return (
                "object" == typeof t.friends &&
                "object" == typeof t.groups &&
                !Object.keys(t.friends).some(
                  (e) => "number" != typeof t.friends[e],
                ) &&
                !Object.keys(t.groups).some(
                  (e) => "number" != typeof t.groups[e],
                )
              );
            } catch (e) {
              return !1;
            }
          }
          BIsFriendHidden(e, t) {
            if (!this.m_bReady) return !1;
            const n = this.m_settings.friends[e.accountid.toString()];
            return n && n >= t;
          }
          BIsGroupHidden(e, t) {
            if (!this.m_bReady) return !1;
            const n = this.m_settings.groups[e.GetGroupID()];
            return n && n >= t;
          }
          SetHiddenTimeForFriend(e, t) {
            return (
              (this.m_settings.friends[e.accountid.toString()] = t),
              (this.m_settings.bHasEverHiddenFriend = !0),
              this.Save()
            );
          }
          SetHiddenTimeForGroup(e, t) {
            return (
              (this.m_settings.groups[e.GetGroupID()] = t),
              (this.m_settings.bHasEverHiddenGroup = !0),
              this.Save()
            );
          }
          Save() {
            return this.m_storage.StoreObject(
              L.strSettingsStorageKey,
              this.m_settings,
            );
          }
          BHasEverHiddenFriend() {
            return this.m_settings.bHasEverHiddenFriend;
          }
          BHasEverHiddenGroup() {
            return this.m_settings.bHasEverHiddenGroup;
          }
        }
        (0, i.Cg)([s.sH], L.prototype, "m_bReady", void 0);
        var G = n(99679),
          F = n(9907);
        n(31370);
        class P {
          m_FriendStore;
          m_CMInterface;
          m_VoiceChat;
          m_EmoticonStore = new I();
          m_FriendChatStore = new _.b(this);
          m_InviteStore = new u.oX(this);
          m_GameInviteStore = new d.e7();
          m_ChatRoomGroupDisplayPrefs = new p.A();
          m_EmbedStore = new m();
          m_TextFilterStore = new E({
            BIsFriend: (e) => !!this.m_FriendStore.GetFriendIfCached(e),
          });
          m_ChatRoomBBCodeParser;
          m_FriendChatBBCodeParser;
          m_NotificationBBCodeParser;
          m_ChatRoomEffectSettings;
          m_mapChatGroups = s.sH.map();
          m_mapActiveChatGroupsToRefCount = s.sH.map();
          m_mapVirtualizedMemberListViews = new Map();
          m_mapClanChatsByClanID = new Map();
          m_HiddenRecentChatSettings = new L();
          m_GroupAddedCallbacks = new F.lu();
          m_bReceivedChatGroupList = !1;
          m_bReadyToRender = !1;
          m_fnOnReadyToRender;
          constructor(e) {
            (0, s.Gn)(this), (this.m_FriendStore = e);
          }
          Init(e, t) {
            (this.m_CMInterface = e),
              this.m_EmoticonStore.Init(e),
              (this.m_VoiceChat = t),
              (this.m_ChatRoomBBCodeParser = a.xm.GetChatRoomBBCodeParser()),
              (this.m_FriendChatBBCodeParser =
                a.xm.GetFriendChatBBCodeParser()),
              (this.m_NotificationBBCodeParser =
                a.xm.GetNotificationBBCodeParser()),
              (this.m_ChatRoomEffectSettings =
                a.xm.GetChatRoomEffectSettings()),
              this.m_ChatRoomGroupDisplayPrefs.Init(a.xm.SettingsStore),
              this.m_EmbedStore.Init(),
              this.m_FriendChatStore.Init(),
              this.m_HiddenRecentChatSettings.Init(a.xm.Storage),
              this.m_TextFilterStore.InitCM(this.m_CMInterface, a.xm.Storage);
            let n = !1,
              i = 0;
            return (
              this.m_CMInterface.AddOnLogonCallback(() => {
                if (n) {
                  const e = i < Date.now() / 1e3 - k.Kp.PerMinute / 2;
                  e
                    ? R(() => this.RestoreStatePostDisconnect(e), 4)
                    : this.RestoreStatePostDisconnect(e);
                } else
                  h.C.Init(
                    a.xm.Storage,
                    e.steamid.GetAccountID().toString(),
                  ).then(() => this.LoadMyChatRooms()),
                    this.m_FriendChatStore.OnLogon(),
                    (n = !0);
                this.m_GameInviteStore.Init();
              }, 102),
              this.m_CMInterface.AddOnDisconnectCallback(
                () => (i = Date.now() / 1e3),
                102,
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                S.I0.NotifyIncomingChatMessageHandler,
                (e) => {
                  let t = e.Body(),
                    n = this.FindChatRoom(t.chat_group_id(), t.chat_id());
                  if (!n) return 2;
                  let i = new C.b(t.steamid_sender());
                  if (0 != (t.server_message().message() || 0))
                    n.AddNewServerMsg(
                      i.GetAccountID(),
                      t.timestamp(),
                      t.ordinal() || 0,
                      t.server_message().message(),
                      t.message(),
                      t.server_message().string_param(),
                      t.server_message().accountid_param(),
                    );
                  else {
                    let e = t.mentions(),
                      o = null;
                    e &&
                      ((o = {}),
                      e.mention_all() && (o.mention_all = !0),
                      e.mention_here() && (o.mention_here = !0),
                      e.mention_accountids() &&
                        -1 !==
                          e
                            .mention_accountids()
                            .indexOf(this.m_FriendStore.self.accountid) &&
                        (o.mention_user = !0)),
                      n.AddNewChatMsgAndNotify(
                        i.GetAccountID(),
                        t.timestamp(),
                        t.ordinal() || 0,
                        t.message(),
                        t.message_no_bbcode(),
                        o,
                      );
                    let r = this.m_TextFilterStore;
                    if (!r.BShownFilterTip() && r.BHasFilter()) {
                      let e = t.message();
                      this.m_TextFilterStore.FilterText(i.GetAccountID(), e) !==
                        e &&
                        (n.AddLocalMsg(
                          i.GetAccountID(),
                          t.timestamp(),
                          (0, T.we)(
                            "#Chat_TextFilter_Active",
                            this.GetTextFilterSettingsURL(),
                          ),
                        ),
                        r.SetFilterTipShown(!0));
                    }
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                S.I0.NotifyChatMessageModifiedHandler,
                (e) => {
                  let t = e.Body(),
                    n = this.FindChatRoom(t.chat_group_id(), t.chat_id());
                  if (!n) return 2;
                  let i = [];
                  for (let t of e.Body().messages())
                    t.deleted &&
                      i.push({
                        rtTimestamp: t.server_timestamp(),
                        unOrdinal: t.ordinal(),
                      });
                  return n.UpdateChatMessageDeletedState(i, r.$F.Deleting), 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                S.I0.NotifyChatRoomHeaderStateChangeHandler,
                (e) => {
                  let t = e.Body().header_state().chat_group_id(),
                    n = this.m_mapChatGroups.get(t);
                  return (
                    n && n.UpdateChatRoomHeaderState(e.Body().header_state()), 1
                  );
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                S.I0.NotifyMemberStateChangeHandler,
                (e) => {
                  let t = e.Body().chat_group_id(),
                    n = e.Body().change(),
                    i = e.Body().member();
                  o.TS.IN_CLIENT &&
                    (0, f.Dp)("WebChat.OnGroupChatUserStateChange") &&
                    a.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                      "SteamworksChatAPI",
                    ) &&
                    SteamClient.WebChat.OnGroupChatUserStateChange(
                      t,
                      i.accountid(),
                      n,
                    );
                  let r = this.m_mapChatGroups.get(t);
                  return r && r.OnUserStateChange(i, n), 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                S.I0.NotifyChatRoomGroupRoomsChangeHandler,
                (e) => {
                  let t = e.Body(),
                    n = this.m_mapChatGroups.get(t.chat_group_id());
                  return n && n.OnRoomStateChange(t), 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                S.I0.NotifyChatGroupUserStateChangedHandler,
                (e) => {
                  let t = e.Body(),
                    n = t.chat_group_id(),
                    i = t.user_action();
                  switch (
                    (o.TS.IN_CLIENT &&
                      (0, f.Dp)("WebChat.OnGroupChatUserStateChange") &&
                      a.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                        "SteamworksChatAPI",
                      ) &&
                      SteamClient.WebChat.OnGroupChatUserStateChange(
                        n,
                        o.iA.accountid,
                        i,
                      ),
                    i)
                  ) {
                    case 1: {
                      let e = this.AddJoinedChatRoomGroup(
                        t.group_summary(),
                        t.user_chat_group_state(),
                      );
                      a.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                        a.xm.GetDefaultBrowserContext(),
                        e,
                        !1,
                      );
                      break;
                    }
                    case 2:
                    case 3:
                    case 10: {
                      a.xm.VoiceStore.GetActiveChatRoomGroupID() == n &&
                        a.xm.VoiceStore.OnUserEndVoiceChat();
                      let e = this.GetChatRoomGroup(n),
                        t = e ? e.name : void 0;
                      this.RemoveChatRoomGroup(n),
                        t &&
                          (3 == i
                            ? a.xm.ShowAlert(
                                (0, T.we)("#Alert_YouWereKickedTitle"),
                                (0, T.we)("#Alert_YouWereKickedDescription", t),
                              )
                            : 10 == i &&
                              a.xm.ShowAlert(
                                (0, T.we)("#Alert_YouWereBannedTitle"),
                                (0, T.we)("#Alert_YouWereBannedDescription", t),
                              ));
                      break;
                    }
                    case 7:
                    case 0: {
                      let e = this.GetChatRoomGroup(n);
                      (0, A.w)(
                        e,
                        "Got state change for ChatRoomGroup we don't know about",
                      ),
                        e && e.UpdateUserState(t.user_chat_group_state());
                      break;
                    }
                    case 4:
                      break;
                    default:
                      (0, A.w)(
                        !1,
                        `Don't know how to handle state change of type ${(0, S.f5)(i)} `,
                      );
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                S.I0.NotifyAckChatMessageEchoHandler,
                (e) => {
                  let t = e.Body().chat_group_id(),
                    n = e.Body().chat_id(),
                    i = e.Body().timestamp(),
                    o = this.GetChatRoomGroup(t);
                  if (!o) return 2;
                  if (n) {
                    let e = o.GetChatRoom(n);
                    if (!e) return 11;
                    e.UpdateLastAckTimeFromServer(i);
                  } else o.UpdateLastAckTimeFromServer(i);
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                S.I0.NotifyMessageReactionHandler,
                (e) => {
                  const {
                      chat_group_id: t,
                      chat_id: n,
                      server_timestamp: i,
                      ordinal: o,
                      is_add: r,
                      reactor: s,
                      reaction: l,
                      reaction_type: c,
                    } = e.Body().toObject(),
                    m = this.GetChatRoomGroup(t);
                  if (m) {
                    const e = m.GetChatRoom(n);
                    if (e) {
                      const t = e.chat_messages.find(
                        (e) => e.rtTimestamp === i && e.unOrdinal === o,
                      );
                      if (t) {
                        const n = t.reactions.find((e) => e.strReaction === l),
                          i = r ? 1 : -1;
                        if (-1 === i && !n)
                          return (
                            console.error(
                              "ChatRoomClientService.NotifyMessageReaction: Got reaction removal notifiaction but no matching reaction was found.",
                            ),
                            1
                          );
                        let o = !!n && n.bUserReacted;
                        s === a.xm.FriendStore.self.steamid64 && (o = r);
                        t.UpdateReaction(c, l, n ? n.cReactors + i : i, o);
                        const m = new C.b(s);
                        e.UpdateMessageReactionReactors(
                          t,
                          l,
                          m.GetAccountID(),
                          r,
                        );
                      }
                    }
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                S.I0.NotifyChatRoomDisconnectHandler,
                (e) => (
                  R(
                    () =>
                      (0, s.h5)(() => {
                        for (let t of e.Body().chat_group_ids()) {
                          let e = this.m_mapChatGroups.get(t);
                          e && e.OnConnectionRestored(!0);
                        }
                        this.SendActiveChatRoomGroupsToServer();
                      }),
                    4,
                  ),
                  1
                ),
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                S.I0.NotifyMemberListViewUpdatedHandler,
                (e) => {
                  let t = this.m_mapVirtualizedMemberListViews.get(
                    e.Body().view_id(),
                  );
                  return t && t.OnServerUpdate(e.Body()), 1;
                },
              ),
              new Promise((e) => {
                this.m_fnOnReadyToRender = e;
              })
            );
          }
          SetReadyToRender() {
            this.m_bReadyToRender ||
              ((this.m_bReadyToRender = !0),
              this.m_fnOnReadyToRender &&
                (this.m_fnOnReadyToRender(),
                (this.m_fnOnReadyToRender = void 0)));
          }
          RestoreStatePostDisconnect(e) {
            e && this.LoadMyChatRooms();
            const t = Array.from(
              this.m_mapActiveChatGroupsToRefCount.values(),
            ).some((e) => e > 0);
            this.m_FriendChatStore.RestoreStatePostDisconnect(e),
              this.m_mapChatGroups.forEach((t) => t.OnConnectionRestored(e)),
              t && this.SendActiveChatRoomGroupsToServer();
          }
          LoadMyChatRooms() {
            let e = !1,
              t = g.w.Init(S.Pv);
            S.xP
              .GetMyChatRoomGroups(this.m_CMInterface.GetServiceTransport(), t)
              .then((t) => {
                (0, s.h5)(() => {
                  1 != t.GetEResult() && (e = !0);
                  let n = t.Body().chat_room_groups();
                  for (let t of n) {
                    let n = t.group_summary().chat_group_id();
                    if (!n) {
                      e = !0;
                      continue;
                    }
                    let i = this.m_mapChatGroups.get(n);
                    i ||
                      ((i = new p.a$(this, n)), this.m_mapChatGroups.set(n, i)),
                      i.SetInitialGroupState(t.group_summary()),
                      i.UpdateUserState(t.user_chat_group_state()),
                      this.OnGroupAdded(i),
                      i.BHasEverBeenAcked() || a.xm.UIStore.ShowUnackedGroup(i);
                  }
                  this.SetReadyToRender(), (this.m_bReceivedChatGroupList = !0);
                });
              })
              .catch((e) => {
                console.error("Failed to load chat rooms from server", e),
                  this.SetReadyToRender();
              });
          }
          OnGroupAdded(e) {
            e.GetClanID() &&
              (this.m_mapClanChatsByClanID.set(e.GetClanID(), e.GetGroupID()),
              this.m_FriendStore.ClanStore.SetClanChatGroupID(
                e.GetClanID(),
                e.GetGroupID(),
              )),
              this.m_GroupAddedCallbacks.Dispatch(e);
          }
          RegisterForGroupAdded(e) {
            return this.m_GroupAddedCallbacks.Register(e);
          }
          OnChatRoomActivated(e) {
            e.GetGroup().OnActivate();
          }
          JoinAndShowChatRoomGroup(e, t, n) {
            let i = this.GetChatRoomGroup(t);
            i && i.BIsCurrentUserAMember()
              ? a.xm.UIStore.ShowAndOrActivateChatRoomGroup(e, i, n)
              : this.m_InviteStore.JoinChatGroup(t, null, e);
          }
          AddCreatedChatRoomGroup(e, t, n, i) {
            if (this.m_mapChatGroups.has(t)) return;
            let o = new p.a$(this, t);
            this.m_mapChatGroups.set(t, o),
              o.UpdateGroupState(n),
              o.UpdateUserState(i),
              this.OnGroupAdded(o),
              a.xm.UIStore.ShowAndOrActivateChatRoomGroup(e, o, !0);
          }
          AddKnownChatRoomGroup(e, t) {
            let n = e.chat_group_id();
            if (this.m_mapChatGroups.has(n)) {
              this.m_mapChatGroups.get(n).SetInitialGroupState(e);
            } else {
              let i = new p.a$(this, n);
              this.m_mapChatGroups.set(n, i),
                i.SetInitialGroupState(e),
                t && i.UpdateUserState(t),
                this.OnGroupAdded(i);
            }
          }
          AddJoinedChatRoomGroup(e, t) {
            let n = t.chat_group_id(),
              i = this.m_mapChatGroups.get(n);
            return (
              i || ((i = new p.a$(this, n)), this.m_mapChatGroups.set(n, i)),
              e instanceof S.P
                ? i.UpdateGroupState(e)
                : i.SetInitialGroupState(e),
              this.OnGroupAdded(i),
              i.UpdateUserState(t),
              i
            );
          }
          RemoveChatRoomGroup(e) {
            let t = this.m_mapChatGroups.get(e);
            if (!t) return;
            let n = this.m_mapChatGroups.get(e);
            n && a.xm.UIStore.CloseTabByID(n.unique_id),
              this.GetRefCountActiveChatRoomGroup(e) <= 0 &&
                t.UnloadAndResetGroupState();
          }
          FindChatRoom_Deprecated(e) {
            let t = null;
            return (
              this.m_mapChatGroups.forEach((n) => {
                let i = n.GetChatRoom(e);
                i && (t = i);
              }),
              t
            );
          }
          FindChatRoom(e, t) {
            let n = this.m_mapChatGroups.get(e);
            return n ? n.GetChatRoom(t) : null;
          }
          get chat_group_list_ready() {
            return this.m_bReceivedChatGroupList;
          }
          get FriendStore() {
            return this.m_FriendStore;
          }
          get CMInterface() {
            return this.m_CMInterface;
          }
          get VoiceChat() {
            return this.m_VoiceChat;
          }
          get ChatRoomBBCodeParser() {
            return this.m_ChatRoomBBCodeParser;
          }
          get FriendChatBBCodeParser() {
            return this.m_FriendChatBBCodeParser;
          }
          get NotificationBBCodeParser() {
            return this.m_NotificationBBCodeParser;
          }
          get ChatRoomEffectSettings() {
            return this.m_ChatRoomEffectSettings;
          }
          get FriendChatStore() {
            return this.m_FriendChatStore;
          }
          get EmoticonStore() {
            return this.m_EmoticonStore;
          }
          get InviteStore() {
            return this.m_InviteStore;
          }
          get GameInviteStore() {
            return this.m_GameInviteStore;
          }
          get EmbedStore() {
            return this.m_EmbedStore;
          }
          get TextFilterStore() {
            return this.m_TextFilterStore;
          }
          GetTextFilterStatus() {
            let e = this.m_TextFilterStore.TextFilterPreferences;
            switch (e.eTextFilterSetting) {
              case 0:
                return (0, T.we)("#TextFilterStatus_SteamLabOptedOut");
              case 1:
                return e.bIgnoreFriends
                  ? (0, T.we)("#TextFilterStatus_Enabled_IgnoreFriends")
                  : (0, T.we)("#TextFilterStatus_Enabled");
              case 2:
                return e.bIgnoreFriends
                  ? (0, T.we)(
                      "#TextFilterStatus_EnabledAllowProfanity_IgnoreFriends",
                    )
                  : (0, T.we)("#TextFilterStatus_EnabledAllowProfanity");
              case 3:
                return (0, T.we)("#TextFilterStatus_Disabled");
              default:
                return "";
            }
          }
          GetTextFilterSettingsURL() {
            return (
              o.TS.STORE_BASE_URL +
              "account/preferences#CommunityContentPreferences"
            );
          }
          get ChatRoomGroupDisplayPrefs() {
            return this.m_ChatRoomGroupDisplayPrefs;
          }
          BIsEligibleForVoiceChat(e, t) {
            let n;
            t && t instanceof _.s && (n = t);
            let i = 2 == e.efriendrelationship,
              o = 4 == e.efriendrelationship;
            return e.persona.is_online && !n && !i && !o && !e.is_blocked;
          }
          GetActiveVoiceChat() {
            let e = this.m_VoiceChat.GetActiveVoiceChatID();
            if ("" != e) {
              let t = this.FindChatRoom_Deprecated(e);
              if (t) return t;
            } else {
              let e = this.m_VoiceChat.GetActiveOneOnOneVoiceChatAccountID();
              if (0 != e) {
                let t = this.GetFriendChat(e, !1);
                if (t) return t;
              }
            }
          }
          GetActiveVoiceChannelName() {
            let e = this.GetActiveVoiceChat();
            return null != e ? e.name : "";
          }
          GetFriendChat(e, t = !0) {
            return e == this.FriendStore.self.accountid
              ? null
              : this.m_FriendChatStore.GetFriendChat(e, t);
          }
          GetFilteredChats(e) {
            const t = Array.from(a.xm.FriendStore.all_friends_accountids)
                .map((e) => a.xm.ChatStore.GetFriendChat(e))
                .filter(
                  (t) =>
                    !this.m_HiddenRecentChatSettings.BIsFriendHidden(
                      t.chat_partner,
                      B(t),
                    ) &&
                    t.chat_partner.BMatchesSearchString(e.toLowerCase(), !1),
                ),
              n = this.FindChatRoomGroupsMatchingSearch(e);
            return this.SortAndMergeChats(t, n);
          }
          GetRecentChats() {
            const e = a.xm.ChatStore.FriendChatStore.GetAllChats().filter(
                (e) =>
                  !this.m_HiddenRecentChatSettings.BIsFriendHidden(
                    e.chat_partner,
                    B(e),
                  ) && B(e) > 0,
              ),
              t = a.xm.ChatStore.currentChatRoomGroups.filter(
                (e) =>
                  !!e.room_with_last_message &&
                  !this.m_HiddenRecentChatSettings.BIsGroupHidden(e, x(e)),
              );
            return this.SortAndMergeChats(e, t);
          }
          SortAndMergeChats(e, t) {
            const n = e.slice().sort((e, t) => B(t) - B(e)),
              i = t.slice().sort((e, t) => x(t) - x(e)),
              o = [];
            for (let e = 0, t = 0; e + t < n.length + i.length; )
              e === n.length
                ? o.push(i[t++])
                : t === i.length
                  ? o.push(n[e++])
                  : i[t].room_with_last_message
                    ? B(n[e]) < x(i[t])
                      ? o.push(i[t++])
                      : o.push(n[e++])
                    : t++;
            return o;
          }
          GetChatRoomGroup(e) {
            return this.m_mapChatGroups.get(e);
          }
          get currentChatRoomGroups() {
            return M(this.m_mapChatGroups, (e) => e.BIsCurrentUserAMember());
          }
          FindChatRoomGroupsMatchingSearch(e) {
            return this.currentChatRoomGroups.filter(
              (t) => -1 !== t.name.toLocaleLowerCase().indexOf(e),
            );
          }
          get ClanChatRooms() {
            return M(this.m_mapChatGroups, (e) => e.BIsClanChatRoom());
          }
          GetRefCountActiveChatRoomGroup(e) {
            let t = this.m_mapActiveChatGroupsToRefCount.get(e);
            return void 0 === t && (t = 0), t;
          }
          IncRefActiveChatRoomGroup(e, t) {
            let n = this.m_mapActiveChatGroupsToRefCount.get(e);
            return (
              void 0 === n && (n = 0),
              (n += 1),
              this.m_mapActiveChatGroupsToRefCount.set(e, n),
              1 == n && t && this.SendActiveChatRoomGroupsToServer(),
              n
            );
          }
          DecRefActiveChatRoomGroup(e) {
            let t = this.m_mapActiveChatGroupsToRefCount.get(e),
              n = void 0 !== t && t > 0;
            if (
              ((0, A.w)(
                n,
                "Attempting to DecRef a Chat Group that has no existing references. Doing nothing.",
              ),
              !n)
            )
              return 0;
            if (((t -= 1), t <= 0)) {
              this.m_mapActiveChatGroupsToRefCount.delete(e);
              let t = this.m_mapChatGroups.get(e);
              t && t.UnloadActiveGroupState(),
                this.SendActiveChatRoomGroupsToServer();
            } else this.m_mapActiveChatGroupsToRefCount.set(e, t);
            return t;
          }
          OnRestorePopupsComplete() {
            this.m_mapActiveChatGroupsToRefCount.size > 0 &&
              this.SendActiveChatRoomGroupsToServer();
          }
          m_bSendingActiveGroups = !1;
          m_bSendActiveGroupsQueued = !1;
          async SendActiveChatRoomGroupsToServer() {
            if (this.m_bSendingActiveGroups)
              return void (this.m_bSendActiveGroupsQueued = !0);
            let e = 0.5;
            const t = async () => {
              try {
                return await this.InternalSendActiveChatRoomGroupsToServer();
              } catch (e) {
                return !1;
              }
            };
            for (; !(await t()); )
              await new Promise((t) => setTimeout(t, 1e3 * e)), (e *= 2);
          }
          async InternalSendActiveChatRoomGroupsToServer() {
            return new Promise((e) => {
              let t = [],
                n = g.w.Init(S.Jw);
              this.m_mapActiveChatGroupsToRefCount.forEach((e, i) => {
                if (
                  ((0, A.w)(
                    e > 0,
                    "SendActiveChatRoomGroupsToServer found invalid ref count for chat group.",
                  ),
                  e <= 0)
                )
                  return;
                n.Body().add_chat_group_ids(i);
                let o = this.m_mapChatGroups.get(i);
                (o && o.readyToRender) ||
                  n.Body().add_chat_groups_data_requested(i),
                  a.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                    "ServerVirtualizedMemberLists",
                  ) && n.Body().set_virtualize_members_threshold(100),
                  o && o.BIsClanChatRoom() && t.push(o.GetClanID());
              });
              const i = (n) => {
                  o.TS.IN_CLIENT && SteamClient.WebChat.SetActiveClanChatIDs(t),
                    n && void 0 !== r && ClearBackgroundTimeout(r),
                    (this.m_bSendingActiveGroups = !1),
                    this.m_bSendActiveGroupsQueued ? e(!1) : e(n);
                },
                r = SetBackgroundTimeout(() => {
                  (this.m_bSendActiveGroupsQueued = !0), i(!1);
                }, 1e4);
              (this.m_bSendActiveGroupsQueued = !1),
                (this.m_bSendingActiveGroups = !0),
                S.xP
                  .SetSessionActiveChatRoomGroups(
                    this.m_CMInterface.GetServiceTransport(),
                    n,
                  )
                  .then(
                    (e) => {
                      let n = !1;
                      return (
                        (0, s.h5)(() => {
                          if (1 == e.GetEResult()) {
                            for (let i of e.Body().chat_states()) {
                              let e = this.m_mapChatGroups.get(
                                i.header_state().chat_group_id(),
                              );
                              if (e)
                                try {
                                  e.UpdateGroupState(i),
                                    e.BIsClanChatRoom() &&
                                      -1 === t.indexOf(e.GetClanID()) &&
                                      t.push(e.GetClanID());
                                } catch (t) {
                                  (n = !0),
                                    console.error(
                                      `exception processing group update for group ${e.GetGroupID()}`,
                                      t,
                                    );
                                }
                            }
                            for (let t of e
                              .Body()
                              .virtualize_members_chat_group_ids()) {
                              let e = this.m_mapChatGroups.get(t);
                              e && e.SetMemberListVirtualized(!0);
                            }
                          } else n = !0;
                        }),
                        !n
                      );
                    },
                    () => !1,
                  )
                  .then(i);
            });
          }
          CreateChatRoomGroup(e, t, n, i = {}) {
            const { unBroadcastAccountId: o } = i;
            let r = g.w.Init(S.SZ);
            r.Body().set_name(t);
            for (let e of n) r.Body().add_steamid_invitees(e);
            return (
              o && r.Body().set_watching_broadcast_accountid(o),
              S.xP
                .CreateChatRoomGroup(
                  this.m_CMInterface.GetServiceTransport(),
                  r,
                )
                .then((t) => {
                  let n = t.GetEResult();
                  if (1 != n) throw n;
                  return (
                    this.AddCreatedChatRoomGroup(
                      e,
                      t.Body().chat_group_id(),
                      t.Body().state(),
                      t.Body().user_chat_state(),
                    ),
                    t.Body().chat_group_id()
                  );
                })
            );
          }
          LeaveChatRoomGroup(e, t) {
            let n = g.w.Init(S.rk);
            return (
              n.Body().set_chat_group_id(t),
              S.xP
                .LeaveChatRoomGroup(this.m_CMInterface.GetServiceTransport(), n)
                .then((e) => {
                  let n = e.GetEResult();
                  if (1 != n) throw n;
                  this.RemoveChatRoomGroup(t);
                })
            );
          }
          FindNamelessChatGroupWithFriends(e) {
            if (0 == e.length) return null;
            let t = e.map((e) => new C.b(e).GetAccountID()),
              n = Array.from(this.m_mapChatGroups.values());
            for (let e of n)
              if (
                !e.IsNamedGroupChat() &&
                e.BRoomContainsJustTheseFriendsAndSelf(t)
              )
                return e;
            return null;
          }
          FillInChatUsabilityMetrics(e) {
            e
              .metrics()
              .set_group_chat_count(
                D.$D(Array.from(this.m_mapChatGroups.values()), (e) =>
                  e.BIsCurrentUserAMember(),
                ),
              ),
              this.m_ChatRoomGroupDisplayPrefs.FillInChatUsabilityMetrics(e);
          }
          GetChatsWithUnreadPriorityMessages() {
            let e = [],
              t = this.FriendChatStore.GetFriendsWithUnreadMessages(null);
            for (let n of t) n.has_unread_priority_messages && e.push(n);
            let n = this;
            return (
              this.m_mapActiveChatGroupsToRefCount.forEach(function (t, i) {
                n.m_mapChatGroups
                  .get(i)
                  .GetChatRoomsWithUnreadPriorityMessages(e);
              }),
              e
            );
          }
          GetChatToActivateForOldestUnread(e) {
            let t = null,
              n = (n) =>
                !(
                  !n.has_unread_priority_messages &&
                  0 == n.GetVisibilityState(e)
                ) &&
                (!t ||
                  (!(
                    t.has_unread_priority_messages &&
                    !n.has_unread_priority_messages
                  ) &&
                    (!(
                      t.has_unread_priority_messages ||
                      !n.has_unread_priority_messages
                    ) ||
                      t.m_msTimeActivated < n.m_msTimeActivated ||
                      (!(t.m_msTimeActivated > n.m_msTimeActivated) &&
                        t.time_last_message < n.time_last_message))));
            this.m_mapActiveChatGroupsToRefCount.forEach((e, i) => {
              const o = this.m_mapChatGroups.get(i).chatRoomList;
              for (let e of o) n(e) && (t = e);
            });
            const i = this.m_FriendChatStore.GetAllChats();
            for (let e of i) n(e) && (t = e);
            return t;
          }
          RegisterVirtualizedMemberListView(e) {
            this.m_mapVirtualizedMemberListViews.set(e.GetViewID(), e);
          }
          UnregisterVirtualizedMemberListView(e) {
            e &&
              (this.m_mapVirtualizedMemberListViews.delete(e.GetViewID()),
              e.UnregisterFromServer());
          }
        }
        function B(e) {
          return Math.max(e.time_last_ack, e.time_last_message);
        }
        function x(e) {
          return e.time_last_activity;
        }
        (0, i.Cg)([s.sH], P.prototype, "m_bReceivedChatGroupList", void 0),
          (0, i.Cg)([a.Nw], P.prototype, "JoinAndShowChatRoomGroup", null),
          (0, i.Cg)([s.XI], P.prototype, "AddCreatedChatRoomGroup", null),
          (0, i.Cg)([s.XI], P.prototype, "AddKnownChatRoomGroup", null),
          (0, i.Cg)([s.XI], P.prototype, "AddJoinedChatRoomGroup", null),
          (0, i.Cg)([s.XI], P.prototype, "RemoveChatRoomGroup", null),
          (0, i.Cg)([s.EW], P.prototype, "currentChatRoomGroups", null),
          (0, i.Cg)([s.EW], P.prototype, "ClanChatRooms", null);
      },
      60853: (e, t, n) => {
        "use strict";
        n.d(t, {
          $F: () => p,
          $G: () => S,
          $T: () => b,
          Bm: () => g,
          D8: () => C,
          K: () => h,
          Lx: () => f,
          MC: () => u,
          _: () => I,
          oO: () => _,
          on: () => v,
        });
        var i = n(34629),
          o = n(89193),
          r = n(56132),
          a = n(58743),
          s = n(17070),
          l = n(50669);
        const c = {
          "/me": {
            strDescriptionToken: "#SlashCommandDescription_Me",
            bAvailableInChina: !0,
          },
          "/code": {
            strDescriptionToken: "#SlashCommandDescription_Code",
            bAvailableInChina: !0,
          },
          "/pre": {
            strDescriptionToken: "#SlashCommandDescription_Pre",
            bAvailableInChina: !0,
          },
          "/giphy": {
            strDescriptionToken: "#SlashCommandDescription_Giphy",
            bAvailableInChina: !1,
          },
          "/spoiler": {
            strDescriptionToken: "#SlashCommandDescription_Spoiler",
            bAvailableInChina: !0,
          },
          "/quote": {
            strDescriptionToken: "#SlashCommandDescription_Quote",
            bAvailableInChina: !0,
          },
          "/random": {
            strDescriptionToken: "#SlashCommandDescription_Random",
            unExpectedArguments: [1, 2],
            bAvailableInChina: !0,
          },
          "/flip": {
            strDescriptionToken: "#SlashCommandDescription_Flip",
            unExpectedArguments: 0,
            bAvailableInChina: !0,
          },
          "/store": {
            strDescriptionToken: "#SlashCommandDescription_Store",
            bAvailableInChina: !1,
          },
        };
        let m = null;
        function d() {
          if (null == m) {
            m = {};
            for (let e in c) {
              let t = c[e];
              (s.TS.EREALM != l.TU.k_ESteamRealmChina || t.bAvailableInChina) &&
                (m[e] = t);
            }
          }
          return m;
        }
        function u() {
          return Object.keys(d());
        }
        function h(e) {
          return d()[e];
        }
        var p, _, g;
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.Deleting = 1)] = "Deleting"),
            (e[(e.Deleted = 2)] = "Deleted");
        })(p || (p = {})),
          (function (e) {
            (e[(e.None = 0)] = "None"), (e[(e.Animating = 1)] = "Animating");
          })(_ || (_ = {})),
          (function (e) {
            (e[(e.None = 0)] = "None"),
              (e[(e.Generic = 1)] = "Generic"),
              (e[(e.NotFriends = 2)] = "NotFriends"),
              (e[(e.NoChatPermissionInGroup = 3)] = "NoChatPermissionInGroup"),
              (e[(e.RateLimitExceeded = 4)] = "RateLimitExceeded");
          })(g || (g = {}));
        class C {
          unAccountID;
          rtTimestamp = void 0;
          unOrdinal = 0;
          strMessageInternal;
          eDeleteState = p.None;
          eAnimationState = _.None;
          eServerMsgType;
          strServerMsgParam;
          unServerMsgParamAccountID;
          strServerMsgAppCustomLocalized = void 0;
          m_strSlashCommand;
          m_bNoUserContent;
          m_mentions;
          m_rgReactions = void 0;
          constructor(e, t, n, i, r = [], a, s, l) {
            (0, o.Gn)(this),
              (this.unAccountID = e),
              (this.rtTimestamp = t),
              (this.unOrdinal = n || 0),
              (this.m_rgReactions = r),
              i && i.length > 13e3
                ? (this.strMessageInternal = i.substr(0, 13e3))
                : (this.strMessageInternal = i),
              (this.m_strSlashCommand = (function (e) {
                if (!e) return null;
                const [t, ...n] = e.split(/\s/);
                let i = d();
                if (i[t]) {
                  const e = i[t].unExpectedArguments;
                  if (
                    void 0 === e ||
                    ("number" == typeof e
                      ? e === n.length
                      : e.indexOf(n.length) > -1)
                  )
                    return t;
                }
                return null;
              })(i)),
              (this.strMessageInternal = this.HandleSpecialMessage(
                this.strMessageInternal,
              )),
              void 0 !== a &&
                ((this.eServerMsgType = a),
                (this.strServerMsgParam = s),
                (this.unServerMsgParamAccountID = l));
          }
          get strMessage() {
            return this.strMessageInternal;
          }
          UniqueKey() {
            return this.unOrdinal
              ? this.rtTimestamp + "_" + this.unOrdinal
              : this.rtTimestamp;
          }
          set Mentions(e) {
            this.m_mentions = e;
          }
          get Mentions() {
            return this.m_mentions || {};
          }
          BIsLocalEcho() {
            return !1;
          }
          BHasServerAcknowledged() {
            return !0;
          }
          get eErrorSending() {
            return g.None;
          }
          BIsServerMessage() {
            return null != this.eServerMsgType && 0 != this.eServerMsgType;
          }
          BIsInvite() {
            return 5 == this.eServerMsgType;
          }
          GetSlashCommand() {
            return this.m_strSlashCommand;
          }
          BIsOlderThan(e) {
            return (
              this.rtTimestamp < e.rtTimestamp ||
              (this.rtTimestamp == e.rtTimestamp &&
                this.unOrdinal < e.unOrdinal)
            );
          }
          BIsNewerThan(e) {
            return (
              this.rtTimestamp > e.rtTimestamp ||
              (this.rtTimestamp == e.rtTimestamp &&
                this.unOrdinal > e.unOrdinal)
            );
          }
          HasUserContent() {
            return !this.m_bNoUserContent;
          }
          HandleSpecialMessage(e) {
            return "+1" == e
              ? ((this.m_bNoUserContent = !0), "[plusone][/plusone]")
              : e;
          }
          OnAnimationEnd() {
            this.eAnimationState = _.None;
          }
          UpdateReaction(e, t, n, i) {
            const o = this.m_rgReactions.findIndex((e) => e.strReaction === t);
            if (-1 === o) {
              if (n > 0) {
                const o = {
                  eReactionType: e,
                  strReaction: t,
                  cReactors: n,
                  bUserReacted: i,
                };
                return this.m_rgReactions.push(o), o;
              }
              return (
                console.error("Did not find reaction we wanted to remove"), null
              );
            }
            return 0 === n
              ? (this.m_rgReactions.splice(o, 1), null)
              : ((this.m_rgReactions[o].cReactors = n),
                (this.m_rgReactions[o].bUserReacted = i),
                this.m_rgReactions[o]);
          }
          get reactions() {
            return this.m_rgReactions;
          }
        }
        (0, i.Cg)([o.sH], C.prototype, "rtTimestamp", void 0),
          (0, i.Cg)([o.sH], C.prototype, "unOrdinal", void 0),
          (0, i.Cg)([o.sH], C.prototype, "eDeleteState", void 0),
          (0, i.Cg)([o.sH], C.prototype, "eAnimationState", void 0),
          (0, i.Cg)(
            [o.sH],
            C.prototype,
            "strServerMsgAppCustomLocalized",
            void 0,
          ),
          (0, i.Cg)([o.sH], C.prototype, "m_rgReactions", void 0);
        class f extends C {
          eErrorSendingObservable = g.None;
          strMessageObservable = void 0;
          m_iLocalEchoID;
          m_bServerAcknowledged = !1;
          static sm_iLocalEchoID = 0;
          constructor(e, t, n) {
            super(e, t, -1, n),
              (0, o.Gn)(this),
              (this.strMessageObservable = this.HandleSpecialMessage(n)),
              (this.m_iLocalEchoID = f.sm_iLocalEchoID++);
          }
          get strMessage() {
            return this.strMessageObservable;
          }
          set strMessage(e) {
            this.strMessageObservable = this.HandleSpecialMessage(e);
          }
          get eErrorSending() {
            return this.eErrorSendingObservable;
          }
          SetErrorSending(e) {
            this.eErrorSendingObservable = e;
          }
          BIsLocalEcho() {
            return !0;
          }
          UniqueKey() {
            return this.m_bServerAcknowledged
              ? super.UniqueKey()
              : "localecho_" + this.m_iLocalEchoID;
          }
          BHasServerAcknowledged() {
            return this.m_bServerAcknowledged;
          }
          OnServerAcknowledged() {
            this.m_bServerAcknowledged = !0;
          }
        }
        (0, i.Cg)([o.sH], f.prototype, "eErrorSendingObservable", void 0),
          (0, i.Cg)([o.sH], f.prototype, "strMessageObservable", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_bServerAcknowledged", void 0),
          (0, i.Cg)([o.XI], f.prototype, "OnServerAcknowledged", null);
        class S extends C {
          static m_nOrdinal = 0;
          constructor(e, t, n) {
            super(e, t, ++S.m_nOrdinal, n);
          }
        }
        class v extends C {
          static m_nOrdinal = 0;
          constructor(e, t, n) {
            super(e, t, ++v.m_nOrdinal, n);
          }
        }
        function b(e) {
          switch (e) {
            case 1:
            case 5:
            case 2:
            case 3:
            case 4:
            case 9:
            case 10:
            case 11:
              return !0;
          }
          return !1;
        }
        class I {
          m_rgMessageBlocks = o.sH.array([], { deep: !1 });
          m_iIndexLastTimePassesGap = void 0;
          constructor() {
            (0, o.Gn)(this), this.Clear();
          }
          get message_blocks() {
            return this.m_rgMessageBlocks;
          }
          get time_passes_index() {
            return this.m_iIndexLastTimePassesGap;
          }
          Clear() {
            this.m_rgMessageBlocks.clear(),
              this.m_rgMessageBlocks.push(new w()),
              (this.m_iIndexLastTimePassesGap = void 0);
          }
          AppendMessage(e) {
            let t = this.m_rgMessageBlocks[this.m_rgMessageBlocks.length - 1];
            if (!t.BCanAccumulateMessage(e)) {
              let n = t;
              (t = new w()),
                this.m_rgMessageBlocks.push(t),
                n.SetNextBlock(t),
                e.rtTimestamp - n.GetRTimeLastMessage() >= 3600 &&
                  (n.GetRTimeMidnightBeforeBlock() ==
                  a.xm.GetLocalMidnightInRTime32(e.rtTimestamp)
                    ? (this.m_iIndexLastTimePassesGap =
                        this.m_rgMessageBlocks.length - 1)
                    : (this.m_iIndexLastTimePassesGap = void 0));
            }
            t.AppendMessage(e);
          }
          BuildMessageBlocks(e) {
            this.Clear();
            for (let t of e) this.AppendMessage(t);
          }
          AppendNewMessage(e) {
            this.AppendMessage(e);
          }
          RemoveLocalMessage(e) {
            for (const t of this.m_rgMessageBlocks)
              if (t.RemoveLocalMessage(e)) return !0;
            return !1;
          }
          RemoveOldestMessages(e) {
            let t = 0;
            for (; e > 0 && !(t >= this.m_rgMessageBlocks.length); ) {
              let n = this.m_rgMessageBlocks[t].messages;
              if (n.length > e) break;
              (e -= n.length), t++;
            }
            if (0 == t) return null;
            let n = null;
            for (let e = t - 1; e >= 0; e--) {
              let t = this.m_rgMessageBlocks[e].messages;
              if (0 != t.length) {
                n = t[t.length - 1];
                break;
              }
            }
            return this.m_rgMessageBlocks.splice(0, t), n;
          }
        }
        (0, i.Cg)([o.sH], I.prototype, "m_iIndexLastTimePassesGap", void 0),
          (0, i.Cg)([o.XI], I.prototype, "BuildMessageBlocks", null),
          (0, i.Cg)([o.XI], I.prototype, "AppendNewMessage", null),
          (0, i.Cg)([o.XI], I.prototype, "RemoveLocalMessage", null),
          (0, i.Cg)([o.XI], I.prototype, "RemoveOldestMessages", null);
        class w {
          constructor() {
            (0, o.Gn)(this);
          }
          m_rgMessages = [];
          m_nextBlock = void 0;
          m_rtMidnightBeforeBlock;
          m_bMessageBlockIsOnlyEmotes = !0;
          CreateVirtualSplitOnTimestamp(e) {
            let t = new w(),
              n = new w();
            t.SetNextBlock(n), n.SetNextBlock(this.m_nextBlock);
            for (let i of this.m_rgMessages)
              i.rtTimestamp < e ? t.AppendMessage(i) : n.AppendMessage(i);
            return [t, n];
          }
          UniqueKey() {
            return this.m_rgMessages.length
              ? this.m_rgMessages[0].UniqueKey()
              : "EmptyBlock";
          }
          get messages() {
            return this.m_rgMessages;
          }
          SetNextBlock(e) {
            this.m_nextBlock = e;
          }
          get is_last_block() {
            return void 0 === this.m_nextBlock;
          }
          GetRTimeMidnightBeforeBlock() {
            return this.m_rtMidnightBeforeBlock;
          }
          GetRTimeMidnightBeforeNextBlock() {
            return this.m_nextBlock
              ? this.m_nextBlock.GetRTimeMidnightBeforeBlock()
              : a.xm.GetLocalMidnightInRTime32();
          }
          GetRTimeLastMessage() {
            return this.m_rgMessages.length
              ? this.m_rgMessages[this.m_rgMessages.length - 1].rtTimestamp
              : r.TQ;
          }
          GetRTimeFirstMessage() {
            return this.m_rgMessages.length
              ? this.m_rgMessages[0].rtTimestamp
              : 0;
          }
          AppendMessage(e) {
            "/me" === e.GetSlashCommand() ||
              (this.m_bMessageBlockIsOnlyEmotes = !1),
              this.m_rgMessages.length ||
                (this.m_rtMidnightBeforeBlock = a.xm.GetLocalMidnightInRTime32(
                  e.rtTimestamp,
                )),
              this.m_rgMessages.push(e);
          }
          BCanAccumulateMessage(e) {
            if (!this.m_rgMessages.length) return !0;
            let t = this.m_rgMessages[0].unAccountID,
              n = this.m_rgMessages[this.m_rgMessages.length - 1].rtTimestamp,
              i = this.m_rgMessages[this.m_rgMessages.length - 1];
            return (
              e.BIsServerMessage() == this.m_rgMessages[0].BIsServerMessage() &&
              (!(
                !e.BIsServerMessage() ||
                e.BIsInvite() ||
                this.m_rgMessages[0].BIsInvite()
              ) ||
                (!(!t || t != e.unAccountID) &&
                  e.BIsInvite() == this.m_rgMessages[0].BIsInvite() &&
                    !(e.rtTimestamp - n > 300) &&
                      (!this.m_bMessageBlockIsOnlyEmotes ||
                        "/me" === e.GetSlashCommand()) &&
                        !(e instanceof S || i instanceof S) &&
                          !(
                            a.xm.GetLocalMidnightInRTime32(e.rtTimestamp) >
                            this.m_rtMidnightBeforeBlock
                          ) &&
                  !(e instanceof v || i instanceof v)))
            );
          }
          BIsInvite() {
            return (
              this.m_rgMessages.length > 0 && this.m_rgMessages[0].BIsInvite()
            );
          }
          BIsServerMsg() {
            return (
              this.m_rgMessages.length > 0 &&
              this.m_rgMessages[0].BIsServerMessage() &&
              !this.m_rgMessages[0].BIsInvite()
            );
          }
          BIsLocalMsg() {
            return (
              this.m_rgMessages.length > 0 && this.m_rgMessages[0] instanceof v
            );
          }
          RemoveLocalMessage(e) {
            const t = this.m_rgMessages.findIndex(
              (t) => t.BIsLocalEcho() && t.UniqueKey() === e.UniqueKey(),
            );
            return -1 !== t && (this.m_rgMessages.splice(t, 1), !0);
          }
        }
        (0, i.Cg)([o.sH.shallow], w.prototype, "m_rgMessages", void 0),
          (0, i.Cg)([o.sH.shallow], w.prototype, "m_nextBlock", void 0),
          (0, i.Cg)([o.XI], w.prototype, "CreateVirtualSplitOnTimestamp", null);
      },
      93914: (e, t, n) => {
        "use strict";
        n.d(t, { Q: () => i });
        class i {
          m_msLastActive;
          OnTabActivate() {
            (this.m_msLastActive = performance.now()),
              this.InternalOnTabActivate();
          }
          GetTimeLastActivate() {
            return this.m_msLastActive || 0;
          }
          IsChatRoom() {
            return !1;
          }
          IsFriendChat() {
            return !1;
          }
          IsBroadcast() {
            return !1;
          }
        }
      },
      99679: (e, t, n) => {
        "use strict";
        n.d(t, { CF: () => _, JB: () => p });
        var i = n(34629),
          o = n(92089),
          r = n(89193),
          a = n(37779),
          s = n(9907),
          l = n(17070),
          c = n(51802),
          m = n(68239),
          d = n(82789),
          u = n(58743),
          h = n(93914);
        class p extends h.Q {
          m_tabset;
          m_chat;
          m_rgOnChatFrameChangedCallbacks = [];
          m_rgOnChatRequestScrollBottomCallbacks = [];
          m_bScrolledToBottom = !0;
          m_scrollTop = -1;
          m_scrollHeight = -1;
          m_clientHeight = 1;
          m_strTextEntry;
          m_textEntryFocusCallbacks = new s.lu();
          m_textEntryChangeCallbacks = new s.lu();
          m_fileUploadManager;
          m_clipToUpload = void 0;
          constructor(e, t) {
            super(),
              (0, r.Gn)(this),
              (this.m_tabset = e),
              (this.m_chat = t),
              this.m_tabset && this.m_chat.AddChatView(this),
              (this.m_strTextEntry = ""),
              (this.m_fileUploadManager = new m.i6(t));
          }
          GetTabName() {
            return this.m_chat.name;
          }
          GetUniqueID() {
            return this.m_chat.unique_id;
          }
          OnTabFocus() {
            this.OnFocus();
          }
          InternalOnTabActivate() {
            this.OnActivate();
          }
          OnTabDeactivate() {
            this.OnDeactivate();
          }
          OnTabClosed() {
            this.OnViewClosed();
          }
          IsChatRoom() {
            return this.m_chat instanceof c.d;
          }
          IsFriendChat() {
            return this.m_chat instanceof d.s;
          }
          IsVoiceActive() {
            return this.m_chat.BVoiceActive();
          }
          GetUnreadMessageCount() {
            return this.m_chat.unread_message_count;
          }
          IsTabForChat(e) {
            return this.m_chat == e;
          }
          GetChatView() {
            return this;
          }
          OnViewClosed() {
            this.m_chat.RemoveChatView(this);
          }
          get chat() {
            return this.m_chat;
          }
          BIsInBrowserContext(e) {
            let t = this.m_tabset.GetBrowserContext();
            return e.m_nBrowserID == t.m_nBrowserID && e.m_unPID == t.m_unPID;
          }
          GetVisibilityState() {
            if (
              !this.m_tabset ||
              (!this.m_tabset.is_popup_active && !l.TS.IN_MOBILE)
            )
              return 0;
            let e;
            return (
              this.m_tabset.activeTab &&
                (e = this.m_tabset.activeTab.GetChatView()),
              e != this || (!this.m_tabset.is_popup_visible && !l.TS.IN_MOBILE)
                ? 1
                : this.m_tabset.is_popup_focused || l.TS.IN_MOBILE
                  ? this.m_bScrolledToBottom &&
                    !u.xm.IdleTracker.BIsUserIdle(60)
                    ? 4
                    : 3
                  : 2
            );
          }
          get lastScrollHeight() {
            return this.m_scrollHeight;
          }
          set lastScrollHeight(e) {
            this.m_scrollHeight = e;
          }
          get lastScrollTop() {
            return this.m_scrollTop;
          }
          set lastScrollTop(e) {
            this.m_scrollTop = e;
          }
          get lastClientHeight() {
            return this.m_clientHeight;
          }
          set lastClientHeight(e) {
            this.m_clientHeight = e;
          }
          get is_scrolled_to_bottom() {
            return this.m_bScrolledToBottom;
          }
          set is_scrolled_to_bottom(e) {
            !this.m_bScrolledToBottom && e && this.m_chat.OnActivate(),
              (this.m_bScrolledToBottom = e);
          }
          get text_entry() {
            return this.m_strTextEntry;
          }
          set text_entry(e) {
            this.m_strTextEntry = e;
          }
          get file_upload_manager() {
            return this.m_fileUploadManager;
          }
          get clip_to_upload() {
            return this.m_clipToUpload;
          }
          CheckActivationAndNotifyChat() {
            this.m_bScrolledToBottom && this.m_chat.OnActivate();
          }
          OnActivate() {
            this.CheckActivationAndNotifyChat(),
              this.FocusTextInput(),
              (this.m_chat.m_msTimeActivated = Date.now());
          }
          OnDeactivate() {
            this.m_chat.OnDeactivate();
          }
          OnFocus() {
            this.CheckActivationAndNotifyChat();
          }
          FocusTextInput() {
            this.m_textEntryFocusCallbacks.Dispatch();
          }
          AddOnChatFrameChangedCallback(e) {
            this.m_rgOnChatFrameChangedCallbacks.push(e);
          }
          RemoveOnChatFrameChangedCallback(e) {
            a.x9(this.m_rgOnChatFrameChangedCallbacks, e);
          }
          AddOnChatRequestScrollBottomCallback(e) {
            this.m_rgOnChatRequestScrollBottomCallbacks.push(e);
          }
          RemoveOnChatRequestScrollBottomCallback(e) {
            a.x9(this.m_rgOnChatRequestScrollBottomCallbacks, e);
          }
          OnChatFrameChanged() {
            for (let e of this.m_rgOnChatFrameChangedCallbacks) e();
          }
          OnScrollBottomRequest() {
            for (let e of this.m_rgOnChatRequestScrollBottomCallbacks) e();
          }
          SetFileToUpload(e, t = {}) {
            this.m_fileUploadManager.SetImageFileToUpload(e, {
              processor: t.processor,
              info: { unAssociatedAppID: t.unAssociatedAppID },
            });
          }
          StartFileExportToUpload(e, t = {}) {
            this.m_fileUploadManager.StartFileExportToUpload(e, {
              displayFilename: t.displayFilename,
              info: { unAssociatedAppID: t.unAssociatedAppID },
              onComplete: t.onComplete,
            });
          }
          async UploadFile(e) {
            await this.m_fileUploadManager.BeginFileUpload({ bSpoiler: e }),
              this.m_fileUploadManager.Reset();
          }
          SetClipToUpload(e) {
            this.m_clipToUpload = e;
          }
          RegisterForTextEntryFocus(e) {
            return this.m_textEntryFocusCallbacks.Register(e);
          }
          RegisterForTextUpdated(e) {
            return this.m_textEntryChangeCallbacks.Register(e);
          }
          BVoiceActive() {
            return this.m_chat.BVoiceActive();
          }
          ConvertMessageToBBCode(e) {
            return (0, o.js)(e);
          }
          async SendChatMessage(e) {
            return this.m_chat.SendChatMessage(this.ConvertMessageToBBCode(e));
          }
          AddPendingText(e) {
            (this.m_strTextEntry += e),
              this.m_textEntryChangeCallbacks.Dispatch(this.m_strTextEntry);
          }
        }
        (0, i.Cg)([r.sH], p.prototype, "m_bScrolledToBottom", void 0),
          (0, i.Cg)([r.sH], p.prototype, "m_clipToUpload", void 0);
        class _ extends p {
          m_parentGroupView;
          constructor(e, t, n) {
            super(e, t), (this.m_parentGroupView = n);
          }
          async SearchMembers(e, t) {
            return this.m_parentGroupView.SearchMembers(e, t);
          }
          async SearchMembersForMention(e, t) {
            const n = await this.SearchMembers(e, t);
            return (
              this.m_parentGroupView.GetGroup().AddMetaMentionsToResults(e, n),
              n
            );
          }
          BIsMemberNameAmbiguous(e) {
            return this.m_parentGroupView.BIsMemberNameAmbiguous(e);
          }
          ConvertMessageToBBCode(e) {
            let t = (0, o.js)(e);
            return this.m_parentGroupView.ProcessMentions(t);
          }
          get virtualizer() {
            return this.m_parentGroupView.GetGroup().BIsMemberListVirtualized()
              ? this.m_parentGroupView.GetVirtualizedMemberListView()
              : null;
          }
          GetParentGroupView() {
            return this.m_parentGroupView;
          }
        }
      },
      99059: (e, t, n) => {
        "use strict";
        n.d(t, { e7: () => h, xE: () => c });
        var i = n(34629),
          o = n(77631),
          r = n(58743),
          a = n(34879),
          s = n(78116),
          l = n(89193);
        function c(e, t, n, i, r) {
          let a,
            l = o.b.InitFromAccountID(e);
          return (
            r
              ? (a =
                  "steam://joinlobby/" +
                  t +
                  "/" +
                  r +
                  "/" +
                  l.ConvertTo64BitString())
              : i
                ? (a = s.TS.IN_MOBILE
                    ? "https://s.team/remoteplay/connect/" +
                      l.ConvertTo64BitString() +
                      "?appid=" +
                      t +
                      "&" +
                      i
                    : "steam://remoteplay/connect/" +
                      l.ConvertTo64BitString() +
                      "?appid=" +
                      t +
                      "&" +
                      i)
                : ((a =
                    "steam://rungame/" + t + "/" + l.ConvertTo64BitString()),
                  void 0 !== n && (a += "/" + encodeURIComponent(n))),
            a
          );
        }
        class m {
          unAccountIDInviter;
          rtTimestamp;
          appID;
          connectString;
          remoteplayString;
          lobbyID;
          bDismissed = void 0;
          bAccepted = void 0;
          constructor(e, t, n, i, o, r, a) {
            (0, l.Gn)(this),
              (this.unAccountIDInviter = e),
              (this.rtTimestamp = t),
              (this.appID = n),
              (this.connectString = i),
              (this.remoteplayString = o),
              (this.lobbyID = a),
              (this.bDismissed = r),
              (this.bAccepted = !1);
          }
          get inviteString() {
            return c(
              this.unAccountIDInviter,
              this.appID,
              this?.connectString,
              this?.remoteplayString,
              this?.lobbyID,
            );
          }
          AcceptGameInvite() {
            r.xm.OpenURLInBrowser(this.inviteString, a.m),
              (this.bAccepted = !0),
              r.xm.ChatStore.GameInviteStore.RecordDismissTime(this),
              this.remoteplayString
                ? SteamClient.Messaging.PostMessage(
                    "FriendsUI",
                    "AcceptedRemotePlayInvite",
                    JSON.stringify({ id: this.appID }),
                  )
                : SteamClient.Messaging.PostMessage(
                    "FriendsUI",
                    "AcceptedGameInvite",
                    JSON.stringify({ id: this.appID }),
                  );
          }
          DismissInvite() {
            (this.bDismissed = !0),
              r.xm.ChatStore.GameInviteStore.RecordDismissTime(this);
          }
          get bOld() {
            return r.xm.GetServerRTime32() - this.rtTimestamp > 21600;
          }
        }
        (0, i.Cg)([l.sH], m.prototype, "bDismissed", void 0),
          (0, i.Cg)([l.sH], m.prototype, "bAccepted", void 0),
          (0, i.Cg)([l.XI], m.prototype, "AcceptGameInvite", null),
          (0, i.Cg)([l.XI], m.prototype, "DismissInvite", null);
        const d = { dismisstimes: {} },
          u = "GameInvites";
        class h {
          m_mapGameInvites = new Map();
          m_mapDismissedInvites = l.sH.map();
          Init() {
            r.xm.SettingsStore.GetObjectFromLocalStorageWhenReady(u, d).then(
              (e) => {
                let t = new Date();
                t.setDate(t.getDate() - 14), this.m_mapDismissedInvites.clear();
                for (let n in e.dismisstimes) {
                  let i = parseInt(n),
                    o = e.dismisstimes[n];
                  new Date(1e3 * o) < t || this.m_mapDismissedInvites.set(i, o);
                }
              },
            );
          }
          RegisterGameInvite(e, t, n, i, o, r) {
            let a = this.m_mapGameInvites.get(e);
            a || ((a = new Map()), this.m_mapGameInvites.set(e, a));
            let s = a.get(t);
            if (!s) {
              let l = !1,
                c = this.m_mapDismissedInvites.get(e);
              c && (l = t <= c),
                (s = new m(e, t, n, i, o, l, r)),
                a.set(t, s),
                a.forEach((e) => {
                  e.rtTimestamp < t && e.DismissInvite();
                });
            }
            return s;
          }
          m_mapInviteByCode = new Map();
          RecordDismissTime(e) {
            let t = this.m_mapDismissedInvites.get(e.unAccountIDInviter);
            (t && t > e.rtTimestamp) ||
              (this.m_mapDismissedInvites.set(
                e.unAccountIDInviter,
                e.rtTimestamp,
              ),
              this.WriteToLocalStorage());
          }
          WriteToLocalStorage() {
            r.xm.SettingsStore.StoreObjectInLocalStorage(u, {
              dismisstimes: this.m_mapDismissedInvites,
            });
          }
        }
      },
      93625: (e, t, n) => {
        "use strict";
        n.d(t, { F2: () => p, oX: () => h });
        var i = n(34629),
          o = n(89193),
          r = n(94325),
          a = n(45518),
          s = n(77631),
          l = n(56132),
          c = n(58743),
          m = n(57943),
          d = n(74002);
        class u extends m.w {
          constructor(e) {
            super(e), (0, o.Gn)(this);
          }
          BIsExpired() {
            return c.xm.GetServerRTime32() >= this.m_rtTimeExpires;
          }
          InitFromInviteLinkInfo(e) {
            (this.m_ulChatRoomGroupID = e.group_summary().chat_group_id()),
              (this.m_ulChatID = e.chat_id());
            let t = new s.b(e.steamid_sender());
            t.BIsIndividualAccount() &&
              (this.m_unAccountIDInviter = t.GetAccountID()),
              (this.m_rtTimeExpires = e.time_expires()),
              (this.m_bIsBanned = e.banned()),
              (this.m_rtKickExpires = e.time_kick_expire()),
              (this.m_bValid = !0),
              (this.m_bReady = !0);
          }
          InitInvalid() {
            (this.m_bValid = !1), (this.m_bReady = !0);
          }
          InitDirectInvite(e, t, n = !1, i = void 0) {
            (this.m_ulChatRoomGroupID = e),
              (this.m_ulChatID = t),
              (this.m_bIsBanned = n),
              (this.m_rtKickExpires = i),
              (this.m_rtTimeExpires = l.TQ),
              (this.m_bValid = !0),
              (this.m_bReady = !0);
          }
        }
        (0, i.Cg)([o.XI], u.prototype, "InitFromInviteLinkInfo", null);
        class h {
          m_ChatStore;
          m_mapInviteByCode = new Map();
          constructor(e) {
            this.m_ChatStore = e;
          }
          JoinChatGroup(e, t, n) {
            let i = new u();
            return i.InitDirectInvite(e, t), this.AcceptInvite(i, n);
          }
          AcceptInvite(e, t) {
            null == t && (t = c.xm.GetDefaultBrowserContext());
            let n = a.w.Init(r.c0);
            return (
              n.Body().set_chat_group_id(e.GetChatRoomGroupID()),
              e.BIsInviteLink() && n.Body().set_invite_code(e.GetInviteCode()),
              e.GetChatID() && n.Body().set_chat_id(e.GetChatID()),
              r.xP
                .JoinChatRoomGroup(
                  this.m_ChatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => {
                  let n = { result: e.GetEResult() };
                  if (1 == n.result) {
                    let n = this.m_ChatStore.AddJoinedChatRoomGroup(
                      e.Body().state(),
                      e.Body().user_chat_state(),
                    );
                    c.xm.UIStore.ShowAndOrActivateChatRoomGroup(t, n, !0);
                    let i = e.Body().join_chat_id();
                    if (n) {
                      let e = n.GetChatRoom(i);
                      e && e.StartVoiceChat();
                    }
                  } else 15 == n.result && (n.time = e.Body().time_expire());
                  return n;
                })
            );
          }
          GetInviteFromCode(e) {
            let t = this.m_mapInviteByCode.get(e);
            if (
              (t || ((t = new u(e)), this.m_mapInviteByCode.set(e, t)),
              !t.BIsReady() ||
                !this.m_ChatStore.GetChatRoomGroup(t.GetChatRoomGroupID()))
            ) {
              let n = a.w.Init(r.NX);
              n.Body().set_invite_code(e),
                r.xP
                  .GetInviteLinkInfo(
                    this.m_ChatStore.CMInterface.GetServiceTransport(),
                    n,
                  )
                  .then((e) => {
                    1 == e.GetEResult()
                      ? (this.m_ChatStore.AddKnownChatRoomGroup(
                          e.Body().group_summary(),
                          e.Body().user_chat_group_state(),
                        ),
                        t.InitFromInviteLinkInfo(e.Body()))
                      : t.InitInvalid();
                  });
            }
            return t;
          }
          GetDirectInviteInfo(e, t, n) {
            let i = new u(),
              o = this.m_ChatStore.GetChatRoomGroup(e);
            if (o && o.GetChatRoom(t)) i.InitDirectInvite(e, t);
            else {
              let o = a.w.Init(r.NF);
              o
                .Body()
                .set_steamid_invitee(
                  s.b.InitFromAccountID(n).ConvertTo64BitString(),
                ),
                o.Body().set_chat_group_id(e),
                o.Body().set_chat_id(t),
                r.xP
                  .GetInviteInfo(
                    this.m_ChatStore.CMInterface.GetServiceTransport(),
                    o,
                  )
                  .then((n) => {
                    if (
                      1 != n.GetEResult() ||
                      !n.Body().group_summary().chat_group_id()
                    )
                      return (
                        console.log(
                          `GetDirectInviteInfo: respose EResult ${n.GetEResult()}`,
                        ),
                        void i.InitInvalid()
                      );
                    this.m_ChatStore.AddKnownChatRoomGroup(
                      n.Body().group_summary(),
                      null,
                    ),
                      i.InitDirectInvite(
                        e,
                        t,
                        n.Body().banned(),
                        n.Body().time_kick_expire(),
                      );
                  });
            }
            return i;
          }
        }
        function p(e) {
          if (15 == e.result) {
            0 == e.time && console.log("no longer valid");
            let t = c.xm
              .RTime32ToDate(e.time)
              .toLocaleString([], {
                weekday: "long",
                year: "numeric",
                month: "numeric",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
              });
            return (0, d.we)("#ChatRoom_InviteMessage_Failed_Kicked", t);
          }
          return 17 == e.result
            ? (0, d.we)("#ChatRoom_InviteMessage_Failed_Banned")
            : 42 == e.result
              ? (0, d.we)("#ChatRoom_InviteMessage_Not_Found")
              : null;
        }
      },
      18775: (e, t, n) => {
        "use strict";
        function i(e) {
          return (
            !(!e || "object" != typeof e || Array.isArray(e)) &&
            Object.keys(e).every((t) =>
              (function (e) {
                return (
                  !(!e || "object" != typeof e || !Array.isArray(e)) &&
                  e.every(o)
                );
              })(e[t]),
            )
          );
        }
        function o(e) {
          if (!e || "object" != typeof e || Array.isArray(e)) return !1;
          const t = e;
          return (
            "number" == typeof t.timestamp &&
            "string" == typeof t.message &&
            (void 0 === t.eError || "number" == typeof t.eError)
          );
        }
        n.d(t, { C: () => r, G: () => a });
        const r = new (class {
          m_storage;
          m_strStorageKey;
          m_queues;
          m_bInitialized = !1;
          async Init(e, t) {
            if (!this.m_bInitialized) {
              (this.m_storage = e),
                (this.m_strStorageKey = `InflightMessageQueue_${t}`);
              try {
                const t = await e.GetObject(this.m_strStorageKey);
                t
                  ? i(t)
                    ? (this.m_queues = t)
                    : (console.warn(
                        `Malformed ${this.m_strStorageKey} found in storage. Resetting.`,
                      ),
                      (this.m_queues = {}),
                      this.WriteToStorage())
                  : (this.m_queues = {});
              } catch (e) {
                console.warn(
                  "Error while parsing stored message queues. Resetting.",
                  e,
                ),
                  (this.m_queues = {}),
                  this.WriteToStorage();
              }
              this.m_bInitialized = !0;
            }
          }
          Update(e, t) {
            0 === t.length ? delete this.m_queues[e] : (this.m_queues[e] = t),
              this.WriteToStorage();
          }
          WriteToStorage() {
            Object.keys(this.m_queues).length > 0
              ? this.m_storage.StoreObject(this.m_strStorageKey, this.m_queues)
              : this.m_storage.RemoveObject(this.m_strStorageKey);
          }
          Get(e) {
            return this.m_queues[e] || [];
          }
        })();
        class a {
          m_id;
          m_queue;
          constructor(e) {
            (this.m_id = e), this.InitFromStorage();
          }
          async InitFromStorage() {
            this.m_queue = await r.Get(this.m_id);
          }
          Add(e) {
            const t = { message: e, timestamp: Date.now() };
            return (
              this.m_queue.push(t), this.UpdateStoredQueue(), this.GetItemID(t)
            );
          }
          get queued_messages() {
            return this.m_queue.map((e) => ({ ...e, id: this.GetItemID(e) }));
          }
          RemoveItem(e) {
            const t = this.GetItemIndex(e);
            -1 !== t
              ? (this.m_queue.splice(t, 1), this.UpdateStoredQueue())
              : console.warn("Could not find item to remove from send queue");
          }
          UpdateStoredQueue() {
            r.Update(this.m_id, this.m_queue);
          }
          GetItemID(e) {
            return `${e.message.slice(0, 10)}_${e.timestamp}`;
          }
          GetItemIndex(e) {
            return this.m_queue.findIndex((t) => this.GetItemID(t) === e);
          }
          SetItemFailed(e, t) {
            const n = this.GetItemIndex(e);
            -1 !== n
              ? ((this.m_queue[n].eError = t), this.UpdateStoredQueue())
              : console.warn("Could not find item to update from send queue");
          }
        }
      },
      57943: (e, t, n) => {
        "use strict";
        n.d(t, { u: () => l, w: () => s });
        var i = n(34629),
          o = n(89193),
          r = n(56132),
          a = n(78116);
        class s {
          m_strInviteCode;
          m_bReady = !1;
          m_bValid = !1;
          m_ulChatRoomGroupID;
          m_ulChatID;
          m_unAccountIDInviter;
          m_rtTimeExpires;
          m_bIsBanned;
          m_rtKickExpires;
          constructor(e) {
            (0, o.Gn)(this), (this.m_strInviteCode = e);
          }
          BIsReady() {
            return this.m_bReady;
          }
          BIsValid() {
            return this.m_bValid;
          }
          BIsInviteLink() {
            return !!this.m_strInviteCode;
          }
          GetInviteCode() {
            return this.m_strInviteCode;
          }
          BNeverExpires() {
            return this.m_rtTimeExpires == r.TQ;
          }
          GetChatRoomGroupID() {
            return this.m_ulChatRoomGroupID;
          }
          BIsVoiceChatInvite() {
            return !!this.m_ulChatID;
          }
          GetChatID() {
            return this.m_ulChatID;
          }
          GetURL() {
            return this.m_strInviteCode ? l(this.m_strInviteCode) : null;
          }
          BIsUserBanned() {
            return this.m_bIsBanned;
          }
          GetTimeKickExpires() {
            return this.m_rtKickExpires;
          }
          get time_expires() {
            return this.m_rtTimeExpires;
          }
          InitInvalid() {
            (this.m_bValid = !1), (this.m_bReady = !0);
          }
          InitDirectInvite(e, t, n = !1, i = void 0) {
            (this.m_ulChatRoomGroupID = e),
              (this.m_ulChatID = t),
              (this.m_bIsBanned = n),
              (this.m_rtKickExpires = i),
              (this.m_rtTimeExpires = r.TQ),
              (this.m_bValid = !0),
              (this.m_bReady = !0);
          }
        }
        function l(e) {
          return "public" == a.TS.WEB_UNIVERSE
            ? `https://s.team/chat/${e}`
            : `${a.TS.COMMUNITY_BASE_URL}chat/invite/${e}`;
        }
        (0, i.Cg)([o.sH], s.prototype, "m_bReady", void 0),
          (0, i.Cg)([o.XI], s.prototype, "InitInvalid", null),
          (0, i.Cg)([o.XI], s.prototype, "InitDirectInvite", null);
      },
      51802: (e, t, n) => {
        "use strict";
        n.d(t, { d: () => I });
        var i = n(34629),
          o = n(78116),
          r = n(45518),
          a = n(94325),
          s = n(92089),
          l = n(89193),
          c = n(74002),
          m = n(8805),
          d = n(31370),
          u = (n(42937), n(1748)),
          h = n(58743),
          p = n(82924),
          _ = n(60853),
          g = n(57943),
          C = n(7105),
          f = n(77765),
          S = n(18775),
          v = n(42674),
          b = n(9907);
        class I extends d.o {
          LOG = new m.wd("ChatRoom", () => this.unique_id).Debug;
          m_group;
          m_ulGroupID;
          m_ulChatID;
          m_bVoiceAllowed;
          m_bIsDefaultForGroup;
          m_strName = void 0;
          m_unSortOrder = 0;
          m_lastChatLink = null;
          m_rtLastMention = void 0;
          m_groupVoiceActiveMembers = new u.uZ(
            (0, c.we)("#Chat_MemberGroup_VoiceChatting"),
          );
          m_eDesktopNotificationLevel = 0;
          m_eMobileNotificationLevel = 0;
          m_bUnreadIndicatorMuted = !1;
          m_mapMessageReactionReactors = l.sH.map();
          m_NewChatMsgAddedCallbacks = new b.lu();
          constructor(e, t, n, i) {
            super(e.FriendStore, e, e.CMInterface),
              (0, l.Gn)(this),
              (this.m_group = t),
              (this.m_ulGroupID = t.GetGroupID()),
              (this.m_ulChatID = n),
              (this.m_bIsDefaultForGroup = i),
              this.m_groupVoiceActiveMembers.SetOnHeaderClick(
                this.StartVoiceChat,
              ),
              (this.m_MessageSendQueue = new S.G(
                `${this.m_ulGroupID}.${this.m_ulChatID}`,
              )),
              this.m_MessageSendQueue
                .InitFromStorage()
                .then(() => this.InitQueuedMessages());
          }
          get VoiceChatStore() {
            return this.ChatStore.VoiceChat;
          }
          get unread_message_count() {
            switch (this.GetPlatformNotificationLevel()) {
              case 4:
                return this.m_cUnreadChatMessages;
              case 3:
              case 2:
                return this.has_unread_mention ? 1 : 0;
              default:
                return 0;
            }
          }
          get time_last_activity() {
            let e = this.GetPlatformNotificationLevel(),
              t = 0,
              n = this.m_rtFirstUnread || this.time_last_ack;
            switch ((n && (t = Math.max(n, t)), e)) {
              case 4:
                t = Math.max(this.time_last_message || 0, t);
                break;
              case 3:
              case 2:
                t = Math.max(this.time_last_mention || 0, t);
                break;
              case 1:
              case 0:
                break;
              default:
                (0, f.w)(!1, `unhandled EChatRoomNotificationLevel: ${e}`);
            }
            return t;
          }
          get has_unread_messages() {
            return this.BIsUnreadIndicatorMuted()
              ? this.unread_message_count > 0
              : this.has_any_unread_messages;
          }
          get has_any_unread_messages() {
            return this.m_cUnreadChatMessages > 0;
          }
          get has_unread_mention() {
            return this.m_rtLastMention > this.m_rtLastAckedChatMsg;
          }
          get time_last_mention() {
            return this.m_rtLastMention;
          }
          BHasAckedChatMsg() {
            return this.m_rtLastAckedChatMsg && 0 != this.m_rtLastAckedChatMsg;
          }
          LoadChatLogs() {
            return super.LoadChatLogs();
          }
          GetMessagesFromTimeRange(e, t, n, i, o) {
            let s = r.w.Init(a.vI);
            return (
              s.Body().set_chat_group_id(this.m_ulGroupID),
              s.Body().set_chat_id(this.m_ulChatID),
              s.Body().set_max_count(o),
              s.Body().set_start_time(e),
              s.Body().set_start_ordinal(t),
              s.Body().set_last_time(n),
              s.Body().set_last_ordinal(i),
              this.LOG(
                `trying to load ${o} messages in range ${e}:${t} - ${n}:${i}`,
              ),
              a.xP
                .GetMessageHistory(
                  this.m_ChatStore.CMInterface.GetServiceTransport(),
                  s,
                )
                .then((e) => {
                  let t = e.GetEResult();
                  if (1 != t) throw t;
                  return {
                    messages: this.GetMessagesFromResponse(e),
                    moreAvailable: e.Body().more_available(),
                  };
                })
            );
          }
          GetMessagesFromResponse(e) {
            let t = e.Body().messages(),
              n = [];
            if (m.fi.Get().IsDebugLogEnabled("ChatRoom")) {
              let e = t[0],
                n = t[t.length - 1];
              this.LOG(
                `received ${t.length} messages in range ${n.server_timestamp()}:${n.ordinal()} to ${e.server_timestamp()}:${e.ordinal()}`,
              );
            }
            for (let e = t.length - 1; e >= 0; e--) {
              let i,
                o,
                r = t[e],
                a = r.server_message().message() || 0;
              if (0 != a) {
                if (
                  ((a = r.server_message().message()),
                  (i = r.server_message().string_param()),
                  (o = r.server_message().accountid_param()),
                  !(0, _.$T)(a))
                ) {
                  this.LOG(`unrenderable message ${a}`);
                  continue;
                }
              } else if (!r.message() || 0 == r.message().trim().length)
                continue;
              let s = new _.D8(
                r.sender(),
                r.server_timestamp(),
                r.ordinal() || 0,
                r.message(),
                r
                  .reactions()
                  .map((e) => ({
                    eReactionType: e.reaction_type(),
                    strReaction: e.reaction(),
                    cReactors: e.num_reactors(),
                    bUserReacted: e.has_user_reacted(),
                  })),
                a,
                i,
                o,
              );
              r.deleted() && (s.eDeleteState = _.$F.Deleted), n.push(s);
            }
            return n;
          }
          GetBBCodeParser() {
            return this.m_ChatStore.ChatRoomBBCodeParser;
          }
          OnNewChatMsgAdded(e, t, n, i) {
            o.TS.IN_CLIENT &&
              (0, v.Dp)("WebChat.OnNewGroupChatMsgAdded") &&
              h.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                "SteamworksChatAPI",
              ) &&
              SteamClient.WebChat.OnNewGroupChatMsgAdded(
                this.m_ulGroupID,
                this.m_ulChatID,
                e,
                t,
                n,
                i,
              ),
              this.m_NewChatMsgAddedCallbacks.Dispatch(
                this.m_ulGroupID,
                this.m_ulChatID,
                e,
                t,
                n,
                i,
              );
          }
          RegisterOnNewChatMsgAdded(e) {
            return this.m_NewChatMsgAddedCallbacks.Register(e);
          }
          AckChatMsgOnServer(e) {
            let t = r.w.Init(a.MH);
            t.Body().set_chat_group_id(this.m_ulGroupID),
              t.Body().set_chat_id(this.m_ulChatID),
              t.Body().set_timestamp(e),
              a.xP.AckChatMessage(this.m_CMInterface.GetServiceTransport(), t);
          }
          GetPlatformNotificationLevel() {
            return o.TS.IN_MOBILE
              ? this.GetMobileNotificationLevel()
              : this.GetDesktopNotificationLevel();
          }
          GetDesktopNotificationLevel() {
            return 0 == this.m_eDesktopNotificationLevel
              ? this.m_group.GetDesktopNotificationLevel()
              : this.m_eDesktopNotificationLevel;
          }
          GetMobileNotificationLevel() {
            return 0 === this.m_eMobileNotificationLevel
              ? this.m_group.GetMobileNotificationLevel()
              : this.m_eMobileNotificationLevel;
          }
          BIsUnreadIndicatorMuted() {
            return this.m_group.BIsUnreadIndicatorMuted();
          }
          GetDesktopNotificationLevelSetting() {
            return this.m_eDesktopNotificationLevel;
          }
          GetMobileNotificationLevelsetting() {
            return this.m_eMobileNotificationLevel;
          }
          UpdateUserState(e) {
            (this.m_rtLastAckedChatMsg = e.time_last_ack()),
              (this.m_rtLastMention = e.time_last_mention()),
              (this.m_eDesktopNotificationLevel =
                e.desktop_notification_level()),
              (this.m_eMobileNotificationLevel = e.mobile_notification_level()),
              (this.m_bUnreadIndicatorMuted = e.unread_indicator_muted()),
              (this.m_rtFirstUnread = e.time_first_unread()),
              (this.m_rtLastAckedChatMsg || 0) < this.m_rtLastMessageReceived &&
                ((this.m_cUnreadChatMessages = 1),
                this.m_rtLastAckedChatMsg &&
                  (this.m_rtFirstUnreadChatMsg = this.m_rtLastAckedChatMsg + 1),
                h.xm.FriendStore.UpdateUnreadMessagesGlobal());
          }
          UpdateChatState(e) {
            (0, f.w)(
              this.m_ulChatID == e.chat_id(),
              "State for different chat room",
            ),
              (this.m_strName = e.chat_name()),
              (this.m_bVoiceAllowed = e.voice_allowed());
            let t = !1,
              n = !1,
              i = this.m_FriendStore.self.accountid,
              r = new Set(this.m_groupVoiceActiveMembers.GetCurrentMemberSet());
            for (let n of e.members_in_voice())
              r.delete(n) ||
                (this.m_groupVoiceActiveMembers.AddMember(n),
                n != i && (t = !0));
            r.forEach((e) => {
              this.m_groupVoiceActiveMembers.RemoveMember(e);
              let t = this.m_groupVoiceActiveMembers.HasMember(e);
              this.VoiceChatStore.OnUserLeftChatRoomVoiceChat(
                this.m_ulGroupID,
                this.m_ulChatID,
                e,
                t,
              ),
                e != i && (n = !0);
            }),
              this.BVoiceActive() &&
                (t
                  ? h.xm.AudioPlaybackManager.PlayAudioURL(
                      o.TS.COMMUNITY_CDN_URL +
                        "public/sounds/webui/steam_voice_channel_enter.m4a?v=1",
                    )
                  : n &&
                    h.xm.AudioPlaybackManager.PlayAudioURL(
                      o.TS.COMMUNITY_CDN_URL +
                        "public/sounds/webui/steam_voice_channel_exit.m4a?v=1",
                    )),
              (this.m_rtLastMessageReceived = e.time_last_message()),
              (this.m_strLastMessage = e.last_message()),
              (this.m_accountIDLastMessage = e.accountid_last_message()),
              (this.m_unSortOrder = e.sort_order());
          }
          get voice_active_member_list() {
            return this.m_groupVoiceActiveMembers;
          }
          get voice_active_contains_friends() {
            for (
              let e = 0;
              e < this.m_groupVoiceActiveMembers.member_list.length;
              e++
            )
              if (
                this.m_groupVoiceActiveMembers.member_list[e].is_friend ||
                this.m_groupVoiceActiveMembers.member_list[e] ==
                  h.xm.FriendStore.self
              )
                return !0;
            return !1;
          }
          get voice_active_contains_self() {
            for (
              let e = 0;
              e < this.m_groupVoiceActiveMembers.member_list.length;
              e++
            )
              if (
                this.m_groupVoiceActiveMembers.member_list[e] ==
                h.xm.FriendStore.self
              )
                return !0;
            return !1;
          }
          get voice_active_contains_only_self() {
            return (
              1 == this.m_groupVoiceActiveMembers.member_list.length &&
              this.m_groupVoiceActiveMembers.member_list[0] ==
                h.xm.FriendStore.self
            );
          }
          get name() {
            return this.IsDefaultRoomForGroup()
              ? "Home"
              : this.IsUnsavedVoiceChannel()
                ? (0, c.we)("#Chat_CreateChatChannel_DefaultName")
                : this.m_strName;
          }
          IsUnsavedVoiceChannel() {
            return !(0 != this.m_strName.length || !this.m_bVoiceAllowed);
          }
          GetParentGroupID() {
            return this.m_ulGroupID;
          }
          GetGroup() {
            return this.m_group;
          }
          IsDefaultRoomForGroup() {
            return this.m_bIsDefaultForGroup;
          }
          GetRoomID() {
            return this.m_ulChatID;
          }
          BIsDefaultRoom() {
            return this.m_bIsDefaultForGroup;
          }
          get unique_id() {
            return "cr" + this.m_ulChatID;
          }
          GetVoiceAllowed() {
            return this.m_bVoiceAllowed;
          }
          IsTempVoiceRoom() {
            return (
              !!this.GetVoiceAllowed() &&
              (!this.m_strName || 0 == this.m_strName.length)
            );
          }
          GetSortOrder() {
            return this.m_unSortOrder;
          }
          StartVoiceChat() {
            this.BVoiceActive() ||
              this.ChatStore.VoiceChat.InitiateRoomChat(
                this.m_ulGroupID,
                this.m_ulChatID,
              );
          }
          ToggleVoiceChat() {
            this.BVoiceActive()
              ? this.ChatStore.VoiceChat.OnUserEndVoiceChat()
              : this.StartVoiceChat();
          }
          BVoiceActive() {
            return this.ChatStore.VoiceChat.IsVoiceActiveForRoom(
              this.m_ulGroupID,
              this.m_ulChatID,
            );
          }
          async UpdateMessageReaction(e, t, n, i) {
            const o = r.w.Init(a.kd);
            o.Body().set_chat_group_id(this.m_ulGroupID),
              o.Body().set_chat_id(this.m_ulChatID),
              o.Body().set_reaction_type(t),
              o.Body().set_reaction(n),
              o.Body().set_is_add(i),
              o.Body().set_server_timestamp(e.rtTimestamp),
              o.Body().set_ordinal(e.unOrdinal);
            const s = e.reactions.find((e) => n === e.strReaction),
              l = i ? 1 : -1,
              c = s ? s.cReactors + l : l;
            e.UpdateReaction(t, n, c, i);
            const m = await a.xP.UpdateMessageReaction(
              this.m_CMInterface.GetServiceTransport(),
              o,
            );
            return (
              1 !== m.GetEResult()
                ? (e.UpdateReaction(t, n, c - l, !i),
                  console.log(
                    `Error updating message reaction. EResult: ${m.GetEResult()}`,
                  ))
                : i &&
                  1 === m.Body().num_reactors() &&
                  (1 === t
                    ? this.m_ChatStore.EmoticonStore.TrackEmoticonUsage(
                        n,
                        Date.now() / 1e3,
                      )
                    : 2 === t &&
                      this.m_ChatStore.EmoticonStore.TrackStickerUsage(
                        n,
                        Date.now() / 1e3,
                      )),
              m.GetEResult()
            );
          }
          GetMessageReactionReactors(e, t, n) {
            const i = [];
            if (
              t.bUserReacted &&
              (i.push(h.xm.FriendStore.self.accountid), 1 === t.cReactors)
            )
              return i;
            const o = this.GetMessageReactionKey(e, t.strReaction),
              r = () =>
                this.LoadMessageReactionReactors(e, t, n).then((e) => {
                  const t = {};
                  e.forEach((e) => (t[e] = !0)),
                    this.m_mapMessageReactionReactors.set(o, {
                      cRequested: n,
                      reactors: t,
                    });
                });
            if (this.m_mapMessageReactionReactors.has(o)) {
              const o = this.m_mapMessageReactionReactors.get(
                this.GetMessageReactionKey(e, t.strReaction),
              );
              o.cRequested < n && o.cRequested < t.cReactors && r();
              const a = Object.keys(o.reactors)
                .map((e) => parseInt(e))
                .filter((e) => e !== h.xm.FriendStore.self.accountid);
              i.push(...a);
            } else r();
            return i.slice(0, n);
          }
          UpdateMessageReactionReactors(e, t, n, i) {
            const o = this.GetMessageReactionKey(e, t);
            if (this.m_mapMessageReactionReactors.has(o)) {
              const e = this.m_mapMessageReactionReactors.get(o);
              e.reactors[n] && !i
                ? (delete e.reactors[n],
                  e.cRequested--,
                  0 == e.cRequested &&
                    this.m_mapMessageReactionReactors.delete(o))
                : !e.reactors[n] && i && ((e.reactors[n] = !0), e.cRequested++);
            } else
              i &&
                this.m_mapMessageReactionReactors.set(o, {
                  cRequested: 1,
                  reactors: { [n]: !0 },
                });
          }
          GetMessageReactionKey(e, t) {
            return `${e.rtTimestamp}_${e.unOrdinal}_${t}`;
          }
          async LoadMessageReactionReactors(e, t, n) {
            const i = r.w.Init(a.HZ);
            i.Body().set_chat_group_id(this.m_ulGroupID),
              i.Body().set_chat_id(this.m_ulChatID),
              i.Body().set_server_timestamp(e.rtTimestamp),
              i.Body().set_ordinal(e.unOrdinal),
              i.Body().set_reaction_type(1),
              i.Body().set_reaction(t.strReaction),
              i.Body().set_limit(n);
            const o = await a.xP.GetMessageReactionReactors(
              this.m_CMInterface.GetServiceTransport(),
              i,
            );
            return 1 != o.GetEResult()
              ? (console.error(
                  `Failed to load message reaction reactors: ${o.GetEResult()}`,
                ),
                [])
              : o.Body().reactors();
          }
          async SendChatMessageInternal(e) {
            if (!this.GetChatRoomGroup().BCanChat()) {
              let e = this.AppendLocalEchoChatMsg("");
              return (
                e.SetErrorSending(_.Bm.NoChatPermissionInGroup), e.eErrorSending
              );
            }
            let t = r.w.Init(a.VU);
            t.Body().set_chat_group_id(this.m_ulGroupID),
              t.Body().set_chat_id(this.m_ulChatID),
              t.Body().set_message(e);
            let n = this.AppendLocalEchoChatMsg(e);
            (this.m_strLastMessage = e),
              (this.m_accountIDLastMessage = this.m_FriendStore.self.accountid);
            const i = await this.SendWithRetries(n, () =>
              a.xP.SendChatMessage(
                this.m_ChatStore.CMInterface.GetServiceTransport(),
                t,
              ),
            );
            return (
              i === _.Bm.None &&
                (this.m_accountIDLastMessage =
                  this.m_FriendStore.self.accountid),
              i
            );
          }
          async DeleteChatMessages(e) {
            let t = e.map((e) => ({
              rtTimestamp: e.rtTimestamp,
              unOrdinal: e.unOrdinal,
            }));
            this.UpdateChatMessageDeletedState(t, _.$F.Deleting);
            let n = r.w.Init(a.lr);
            n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_chat_id(this.m_ulChatID);
            for (let t of e) {
              let e = n.Body().add_messages();
              e.set_server_timestamp(t.rtTimestamp), e.set_ordinal(t.unOrdinal);
            }
            let i = (
              await a.xP.DeleteChatMessages(
                this.m_ChatStore.CMInterface.GetServiceTransport(),
                n,
              )
            ).GetEResult();
            return 1 != i
              ? (this.UpdateChatMessageDeletedState(t, _.$F.None), i)
              : (this.UpdateChatMessageDeletedState(t, _.$F.Deleted), 1);
          }
          PopulateCommitFileUploadFormData(e, t, n) {
            e.append("chat_group_id", this.m_ulGroupID),
              e.append("chat_id", this.m_ulChatID),
              e.append("spoiler", t.bSpoiler ? "1" : "0"),
              n.unAssociatedAppID &&
                e.append("associated_appid", n.unAssociatedAppID.toString());
          }
          BShouldTrackUnreadMessages() {
            return (
              this.m_bIsDefaultForGroup ||
              !this.m_bVoiceAllowed ||
              this.BVoiceActive()
            );
          }
          BShouldSilentlyAddMessage(e) {
            return h.xm.FriendStore.GetPlayer(e.unAccountID).is_blocked;
          }
          PlayChatRoomNotificationSound() {
            h.xm.FriendStore.GetUserDoNotDisturb() ||
              h.xm.AudioPlaybackManager.PlayAudioURL(
                o.TS.COMMUNITY_CDN_URL +
                  "public/sounds/webui/steam_chatroom_notification.m4a?v=1",
              );
          }
          PlayAtMentionSound() {
            h.xm.FriendStore.GetUserDoNotDisturb() ||
              h.xm.AudioPlaybackManager.PlayAudioURL(
                o.TS.COMMUNITY_CDN_URL +
                  "public/sounds/webui/steam_at_mention.m4a?v=1",
              );
          }
          OnReceivedNewMessage(e, t, n, i) {
            if (this.BShouldTrackUnreadMessages()) {
              if (!e.BIsLocalEcho() && e.unAccountID != this.self.accountid) {
                let o;
                switch (
                  ((e.Mentions.mention_all ||
                    e.Mentions.mention_here ||
                    e.Mentions.mention_user) &&
                    (this.m_rtLastMention = e.rtTimestamp),
                  this.GetPlatformNotificationLevel())
                ) {
                  case 1:
                    o = !1;
                    break;
                  case 2:
                    o = e.Mentions.mention_user;
                    break;
                  case 3:
                    o =
                      e.Mentions.mention_user ||
                      e.Mentions.mention_here ||
                      e.Mentions.mention_all;
                    break;
                  default:
                    o = !0;
                }
                if (o && !h.xm.FriendStore.GetUserDoNotDisturb()) {
                  let o =
                    e.Mentions.mention_all ||
                    e.Mentions.mention_here ||
                    e.Mentions.mention_user;
                  if (
                    (h.xm.BPlayChatRoomNotificationSound() && o
                      ? this.PlayAtMentionSound()
                      : h.xm.BPlayChatRoomNotificationSound() &&
                        t < 4 &&
                        this.PlayChatRoomNotificationSound(),
                    h.xm.NotificationManager.BNotificationsPermitted() &&
                      t < 4 &&
                      h.xm.BShowChatRoomNotification())
                  ) {
                    const t = h.xm.FriendStore.GetPlayer(e.unAccountID);
                    t.LoadIfNecessary();
                    const r = () => {
                      let r = {
                        title: this.m_bIsDefaultForGroup
                          ? this.GetGroup().name
                          : this.GetGroup().name + " | " + this.name,
                        body: `${t.display_name}: "${n}"`,
                        icon: t.persona.avatar_url_medium,
                        rawbody: n,
                        tag: "groupmsg_" + (o ? "mention_" : "") + t.accountid,
                        steamid: t.persona.m_steamid.ConvertTo64BitString(),
                        chatroomgroupid: this.GetParentGroupID(),
                        chatroomid: this.GetRoomID(),
                      };
                      (r = this.DecorateNotification(e, r, n, i)),
                        (r.body = this.m_ChatStore.TextFilterStore.FilterText(
                          e.unAccountID,
                          r.body,
                        )),
                        r.body &&
                          (h.xm.NotificationManager.DisplayNotification(
                            r,
                            (e) =>
                              h.xm.UIStore.ShowAndOrActivateChat(e, this, !0),
                          ),
                          this.m_bHasUnreadPriorityChatMessages ||
                            ((this.m_bHasUnreadPriorityChatMessages = !0),
                            h.xm.FriendStore.UpdateUnreadMessagesGlobal()));
                    };
                    (0, l.z7)(() => t.is_ready, r, { timeout: 1e3 });
                  }
                  if (t < 4) {
                    const e = h.xm.SettingsStore.FriendsSettings.nChatFlashMode;
                    let t = Promise.resolve(0 == e);
                    1 == e && (t = h.xm.UIStore.IsChatWindowMinimized(this)),
                      t.then((e) => {
                        e && h.xm.UIStore.FlashChatWindow(this, !0);
                      });
                  }
                }
              }
              (!this.m_rtFirstUnread ||
                (!this.m_group.BIsUnreadIndicatorMuted() &&
                  this.m_rtFirstUnread <= this.m_rtLastAckedChatMsg)) &&
                (this.m_rtFirstUnread = e.rtTimestamp);
            }
          }
          GetChatRoomGroup() {
            return this.m_ChatStore.GetChatRoomGroup(this.m_ulGroupID);
          }
          GetMember(e) {
            return this.GetChatRoomGroup().GetMember(e);
          }
          CreateInviteLink(e) {
            let t = r.w.Init(a.RZ);
            t.Body().set_chat_group_id(this.m_ulGroupID),
              t.Body().set_seconds_valid(e),
              t.Body().set_chat_id(this.m_ulChatID),
              a.xP
                .CreateInviteLink(
                  this.m_ChatStore.CMInterface.GetServiceTransport(),
                  t,
                )
                .then((e) => {
                  let t = e.Body().invite_code(),
                    n = (0, g.u)(t),
                    i = e.Body().seconds_valid();
                  0 != i && (i += Math.floor(Date.now() / 1e3)),
                    (this.m_lastChatLink = { strInviteURL: n, rtExpires: i });
                });
          }
          OnActivate() {
            this.m_ChatStore.OnChatRoomActivated(this), super.OnActivate();
          }
          get lastChatLinkInfo() {
            return this.m_lastChatLink;
          }
          BCanDeleteMemberMessages(e) {
            return this.GetChatRoomGroup().BCanDeleteMemberMessages(e);
          }
          ChangeNameWhileWaitingForRenameRequest(e) {
            this.m_strName = e;
          }
          SetNotificationPreferences(e, t, n) {
            let i = r.w.Init(a.gD);
            i.Body().set_chat_group_id(this.m_ulGroupID);
            let o = i.Body().add_chat_room_preferences();
            return (
              o.set_chat_id(this.m_ulChatID),
              void 0 !== e &&
                ((this.m_eDesktopNotificationLevel = e),
                o.set_desktop_notification_level(e),
                4 == e && this.m_bUnreadIndicatorMuted && (n = !1)),
              void 0 !== t &&
                ((this.m_eMobileNotificationLevel = t),
                o.set_mobile_notification_level(t)),
              void 0 !== n &&
                ((this.m_bUnreadIndicatorMuted = n),
                o.set_unread_indicator_muted(n)),
              a.xP
                .SetUserChatGroupPreferences(
                  h.xm.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => 1 == e.GetEResult())
            );
          }
          async SetupAppCustomServerMsg(e) {
            let t = JSON.parse(e.strMessage) || {},
              n = new Map();
            if (t.params)
              for (let e in t.params)
                n.set(e.toString(), t.params[e].toString());
            e.strServerMsgAppCustomLocalized = "...";
            let i = await h.xm.AppInfoStore.GetRichPresenceLocAsync(
              this.m_group.GetOwnerAppID(),
            );
            t.tok
              ? (e.strServerMsgAppCustomLocalized = i.Localize(t.tok, n))
              : t.msg
                ? (e.strServerMsgAppCustomLocalized = i.SubstituteParams(
                    t.msg,
                    n,
                  ))
                : (e.strServerMsgAppCustomLocalized = e.strMessage);
            let o = (0, s.Hd)(e.strServerMsgAppCustomLocalized),
              r = null,
              a = "",
              l = !1;
            for (let e of o)
              if (1 != e.type) {
                if (2 == e.type)
                  if ("mention" != e.tag)
                    "spoiler" != e.tag &&
                      (console.log("bbcode tag '" + e.tag + "' not allowed!"),
                      (l = !0));
                  else if (e.args) {
                    r || (r = {});
                    let t = e.args[""];
                    "all" == t
                      ? (r.mention_all = !0)
                      : "here" == t
                        ? (r.mention_here = !0)
                        : t == this.m_FriendStore.self.accountid.toString() &&
                          (r.mention_user = !0);
                  }
              } else a += e.text;
            return (
              l && (e.strServerMsgAppCustomLocalized = a),
              r && (e.Mentions = r),
              a
            );
          }
        }
        (0, i.Cg)([l.sH], I.prototype, "m_strName", void 0),
          (0, i.Cg)([l.sH], I.prototype, "m_unSortOrder", void 0),
          (0, i.Cg)([l.sH], I.prototype, "m_lastChatLink", void 0),
          (0, i.Cg)([l.sH], I.prototype, "m_rtLastMention", void 0),
          (0, i.Cg)([l.sH], I.prototype, "m_eDesktopNotificationLevel", void 0),
          (0, i.Cg)([l.sH], I.prototype, "m_eMobileNotificationLevel", void 0),
          (0, i.Cg)([l.sH], I.prototype, "m_bUnreadIndicatorMuted", void 0),
          (0, i.Cg)([l.XI], I.prototype, "UpdateUserState", null),
          (0, i.Cg)([l.XI], I.prototype, "UpdateChatState", null),
          (0, i.Cg)([l.EW], I.prototype, "name", null),
          (0, i.Cg)([p.oI], I.prototype, "StartVoiceChat", null),
          (0, i.Cg)([l.XI], I.prototype, "UpdateMessageReactionReactors", null),
          (0, i.Cg)(
            [p.oI, (0, C.s)(100)],
            I.prototype,
            "PlayChatRoomNotificationSound",
            null,
          ),
          (0, i.Cg)(
            [p.oI, (0, C.s)(100)],
            I.prototype,
            "PlayAtMentionSound",
            null,
          ),
          (0, i.Cg)([l.XI], I.prototype, "CreateInviteLink", null),
          (0, i.Cg)([l.$Z], I.prototype, "OnActivate", null),
          (0, i.Cg)(
            [l.XI],
            I.prototype,
            "ChangeNameWhileWaitingForRenameRequest",
            null,
          );
      },
      73880: (e, t, n) => {
        "use strict";
        n.d(t, { L2: () => D, a$: () => y, A: () => M, $C: () => E });
        var i = n(34629),
          o = n(37779),
          r = n(37976),
          a = n(8805),
          s = n(42937),
          l = n(51802),
          c = n(77631),
          m = n(89193),
          d = n(74002),
          u = n(45518),
          h = n(94325),
          p = n(93715),
          _ = n(58743),
          g = n(67033),
          C = n(78116),
          f = n(77765);
        class S {
          static sm_ulNextViewID = 1;
          m_ulChatRoomGroupID;
          m_ulViewID;
          m_nClientChangenumber;
          m_nLastClientChangenumberFromServer = -1;
          m_bViewChanged = !1;
          m_iStartIndex = void 0;
          m_iEndIndex = void 0;
          m_nLastServerChangenumber = void 0;
          m_iLastServerStartIndex = void 0;
          m_iLastServerEndIndex = void 0;
          m_mapMembers = new Map();
          m_mapRankByAccountID = new Map();
          m_mapPersonaStates = m.sH.map();
          m_cMemberSummaryTotal = void 0;
          m_cMemberSummaryOnline = void 0;
          m_cMemberSummaryInGame = void 0;
          m_mapPersonaSubscriptions = new Map();
          m_setQueuedPersonaSubscriptions = new Set();
          m_setQueuedPersonaUnsubscriptions = new Set();
          m_nPersonaSubscriptionTimer;
          constructor(e) {
            (0, m.Gn)(this),
              (this.m_ulChatRoomGroupID = e),
              (this.m_nClientChangenumber = 0),
              (this.m_ulViewID = "" + S.sm_ulNextViewID++);
          }
          GetViewID() {
            return this.m_ulViewID;
          }
          m_iTimeoutApplyUpdates;
          m_rgUpdateQueue = [];
          ApplyUpdates() {
            for (const e of this.m_rgUpdateQueue) {
              if (e.view(!1)) {
                const t = e.view();
                let n = t.client_changenumber() == this.m_nClientChangenumber,
                  i =
                    t.client_changenumber() ==
                    this.m_nLastClientChangenumberFromServer;
                if (
                  ((this.m_nLastServerChangenumber = t.server_changenumber()),
                  t.start() != this.m_iLastServerStartIndex && i)
                ) {
                  let e = [];
                  for (
                    let t = this.m_iLastServerStartIndex;
                    t <= this.m_iLastServerEndIndex;
                    t++
                  )
                    e.push(this.m_mapMembers.get(t));
                  for (let n = t.start(); n <= t.end(); n++) {
                    let t = e.shift();
                    if (!t) continue;
                    let i = this.m_mapRankByAccountID.get(t);
                    void 0 !== i &&
                      this.m_mapMembers.get(i) == t &&
                      this.m_mapMembers.delete(i),
                      this.m_mapMembers.set(n, t),
                      this.m_mapRankByAccountID.set(t, n);
                  }
                }
                (this.m_nLastClientChangenumberFromServer =
                  t.client_changenumber()),
                  (this.m_iLastServerStartIndex = t.start()),
                  (this.m_iLastServerEndIndex = t.end()),
                  this.m_bViewChanged ||
                    ((this.m_iLastServerStartIndex < this.m_iStartIndex - 10 ||
                      this.m_iLastServerEndIndex > this.m_iEndIndex + 10) &&
                      this.PublishViewExtentsToServer(
                        this.m_iStartIndex,
                        this.m_iEndIndex,
                        11,
                      )),
                  n && (this.m_bViewChanged = !1);
              }
              for (let t of e.members()) {
                let n = t.accountid(),
                  i = this.m_mapRankByAccountID.get(n);
                void 0 !== i &&
                  this.m_mapMembers.get(i) == n &&
                  this.m_mapMembers.delete(i),
                  this.m_mapMembers.set(t.rank(), n),
                  this.m_mapRankByAccountID.set(n, t.rank()),
                  t.persona() &&
                    this.UpdatePersonaState(
                      t.accountid(),
                      e.status_flags(),
                      t.persona(),
                    );
              }
              let t = e.member_summary(!1);
              t &&
                ((this.m_cMemberSummaryTotal =
                  t.offline() + t.online() + t.ingame()),
                (this.m_cMemberSummaryOnline = t.online() + t.ingame()),
                (this.m_cMemberSummaryInGame = t.ingame()));
            }
            (this.m_rgUpdateQueue = []), (this.m_iTimeoutApplyUpdates = void 0);
          }
          OnServerUpdate(e) {
            this.m_rgUpdateQueue.push(e),
              this.m_bViewChanged
                ? (this.m_iTimeoutApplyUpdates &&
                    window.clearInterval(this.m_iTimeoutApplyUpdates),
                  this.ApplyUpdates())
                : this.m_iTimeoutApplyUpdates ||
                  (this.m_iTimeoutApplyUpdates = window.setTimeout(
                    () => this.ApplyUpdates(),
                    1e3,
                  ));
            for (const t of e.subscribed_personas()) {
              const n = new c.b(t.friendid()).GetAccountID();
              this.UpdatePersonaState(n, e.status_flags(), t);
            }
          }
          GetViewChangenumber() {
            return [
              this.m_nLastClientChangenumberFromServer,
              this.m_nLastServerChangenumber,
            ];
          }
          GetAccountIDAt(e) {
            return e >= this.m_iLastServerStartIndex &&
              e <= this.m_iLastServerEndIndex &&
              this.m_mapMembers.has(e)
              ? this.m_mapMembers.get(e)
              : null;
          }
          GetMember(e) {
            return this.m_mapPersonaStates.has(e)
              ? this.m_mapPersonaStates.get(e)
              : _.xm.FriendStore.GetPlayer(e);
          }
          GetMemberCountTotal() {
            return this.m_cMemberSummaryTotal;
          }
          GetMemberCountOnline() {
            return this.m_cMemberSummaryOnline;
          }
          GetMemberCountInGame() {
            return this.m_cMemberSummaryInGame;
          }
          UpdatePersonaState(e, t, n) {
            if (n && n.player_name())
              if (this.m_mapPersonaStates.has(e))
                this.m_mapPersonaStates
                  .get(e)
                  .mutable_persona.UpdateFromMessage(t, n);
              else {
                let i = _.xm.FriendStore.GetPlayer(e);
                i.mutable_persona.UpdateFromMessage(t, n),
                  this.m_mapPersonaStates.set(e, i);
              }
          }
          m_rgQueuedViewExtents = { iStartIndex: -1, iEndIndex: -1 };
          m_hSetViewExtentsInterval;
          m_hResetViewExtentsInterval;
          SetViewExtents(e, t) {
            (this.m_rgQueuedViewExtents = { iStartIndex: e, iEndIndex: t }),
              this.m_hSetViewExtentsInterval ||
                (this.PublishQueuedViewExtentsToServer(),
                (this.m_hSetViewExtentsInterval = window.setTimeout(
                  () => this.PublishQueuedViewExtentsToServer(),
                  400,
                )));
          }
          PublishQueuedViewExtentsToServer() {
            if (
              ((this.m_hSetViewExtentsInterval = void 0),
              !this.m_rgQueuedViewExtents)
            )
              return;
            const { iStartIndex: e, iEndIndex: t } = this.m_rgQueuedViewExtents;
            (this.m_rgQueuedViewExtents = null),
              this.PublishViewExtentsToServer(e, t, 100),
              this.m_hResetViewExtentsInterval &&
                clearInterval(this.m_hResetViewExtentsInterval),
              (this.m_hResetViewExtentsInterval = window.setTimeout(() => {
                this.PublishViewExtentsToServer(e, t, 11),
                  (this.m_hResetViewExtentsInterval = void 0);
              }, 1e4));
          }
          PublishViewExtentsToServer(e, t, n) {
            const i = Math.max(e - n, 0),
              o = t + n;
            if (this.m_iStartIndex == i && this.m_iEndIndex == o) return;
            (this.m_iStartIndex = i),
              (this.m_iEndIndex = o),
              this.m_nClientChangenumber++,
              (this.m_bViewChanged = !0);
            let r = u.w.Init(h.Cw);
            r.Body().set_chat_group_id(this.m_ulChatRoomGroupID),
              r.Body().set_view_id(this.m_ulViewID),
              r.Body().set_client_changenumber(this.m_nClientChangenumber),
              r.Body().set_start(this.m_iStartIndex),
              r.Body().set_end(this.m_iEndIndex),
              h.xP.UpdateMemberListView(
                _.xm.CMInterface.GetServiceTransport(),
                r,
              );
          }
          SubscribeToPersona(e) {
            const t = this.m_mapPersonaSubscriptions.get(e);
            t
              ? this.m_mapPersonaSubscriptions.set(e, t + 1)
              : (this.m_mapPersonaSubscriptions.set(e, 1),
                this.m_setQueuedPersonaSubscriptions.add(e),
                this.ScheduleSubscriptionUpdate());
          }
          UnsubscribeFromPersona(e) {
            const t = this.m_mapPersonaSubscriptions.get(e);
            t
              ? t > 1
                ? this.m_mapPersonaSubscriptions.set(e, t - 1)
                : (this.m_mapPersonaSubscriptions.delete(e),
                  this.m_setQueuedPersonaUnsubscriptions.add(e),
                  this.ScheduleSubscriptionUpdate())
              : console.warn(
                  `Attempting to unsubscribe from a persona that we are not subscribed to. Chat: ${this.m_ulChatRoomGroupID}, Account: ${e}`,
                );
          }
          ScheduleSubscriptionUpdate() {
            this.m_nPersonaSubscriptionTimer ||
              (this.m_nPersonaSubscriptionTimer = window.setTimeout(() => {
                this.m_nClientChangenumber++;
                let e = u.w.Init(h.Cw);
                e.Body().set_chat_group_id(this.m_ulChatRoomGroupID),
                  e.Body().set_view_id(this.m_ulViewID),
                  e.Body().set_client_changenumber(this.m_nClientChangenumber),
                  e.Body().set_start(this.m_iStartIndex),
                  e.Body().set_end(this.m_iEndIndex),
                  this.m_setQueuedPersonaSubscriptions.size &&
                    (e
                      .Body()
                      .set_persona_subscribe_accountids(
                        Array.from(this.m_setQueuedPersonaSubscriptions),
                      ),
                    this.m_setQueuedPersonaSubscriptions.clear()),
                  this.m_setQueuedPersonaUnsubscriptions.size &&
                    (e
                      .Body()
                      .set_persona_unsubscribe_accountids(
                        Array.from(this.m_setQueuedPersonaUnsubscriptions),
                      ),
                    this.m_setQueuedPersonaUnsubscriptions.clear()),
                  h.xP.UpdateMemberListView(
                    _.xm.CMInterface.GetServiceTransport(),
                    e,
                  ),
                  (this.m_nPersonaSubscriptionTimer = void 0);
              }, 50));
          }
          UnregisterFromServer() {
            let e = u.w.Init(h.Cw);
            e.Body().set_chat_group_id(this.m_ulChatRoomGroupID),
              e.Body().set_view_id(this.m_ulViewID),
              e.Body().set_delete_view(!0),
              h.xP.UpdateMemberListView(
                _.xm.CMInterface.GetServiceTransport(),
                e,
              );
          }
          async PerformSearch(e, t, n) {
            let i = n.toLocaleLowerCase(),
              o = u.w.Init(h.NQ);
            return (
              o.Body().set_chat_group_id(this.m_ulChatRoomGroupID),
              o.Body().set_search_id(t),
              o.Body().set_search_text(i),
              h.xP
                .SearchMembers(_.xm.CMInterface.GetServiceTransport(), o)
                .then((e) => {
                  let t = [];
                  for (let n of e.Body().matching_members()) {
                    n.persona() &&
                      this.UpdatePersonaState(
                        n.accountid(),
                        e.Body().status_flags(),
                        n.persona(),
                      );
                    let o = this.m_mapPersonaStates.get(n.accountid());
                    if (((0, f.w)(o, "Missing persona in member matches"), !o))
                      continue;
                    let r = o.MatchSearchString(i);
                    t.push({
                      friend: o,
                      iMatchOffset: r.iOffset,
                      bNicknameMatch: 2 == r.match,
                    });
                  }
                  return t;
                })
            );
          }
          GetAllKnownPersonas() {
            return Array.from(this.m_mapPersonaStates.values());
          }
        }
        (0, i.Cg)([m.sH], S.prototype, "m_iStartIndex", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_iEndIndex", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_nLastServerChangenumber", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_iLastServerStartIndex", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_iLastServerEndIndex", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_cMemberSummaryTotal", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_cMemberSummaryOnline", void 0),
          (0, i.Cg)([m.sH], S.prototype, "m_cMemberSummaryInGame", void 0),
          (0, i.Cg)([m.XI], S.prototype, "ApplyUpdates", null),
          (0, i.Cg)([m.XI], S.prototype, "OnServerUpdate", null);
        var v = n(92089),
          b = n(93914);
        class I {
          m_rank = void 0;
          m_role_ids = void 0;
          constructor(e = 20, t) {
            (0, m.Gn)(this), (this.m_rank = e), (this.m_role_ids = t);
          }
          BHasRole(e) {
            return -1 != this.m_role_ids.findIndex((t) => t == e);
          }
        }
        (0, i.Cg)([m.sH], I.prototype, "m_rank", void 0),
          (0, i.Cg)([m.sH], I.prototype, "m_role_ids", void 0);
        class w {
          m_roleActions = new h.JN();
          constructor(e) {
            this.m_roleActions = e;
          }
          BCanPerformAction(e) {
            switch (e) {
              case 1:
                return this.m_roleActions.can_create_rename_delete_channel();
              case 2:
                return this.m_roleActions.can_kick();
              case 3:
                return this.m_roleActions.can_ban();
              case 4:
                return this.m_roleActions.can_invite();
              case 5:
                return this.m_roleActions.can_change_tagline_avatar_name();
              case 6:
                return this.m_roleActions.can_chat();
              case 8:
                return this.m_roleActions.can_change_group_roles();
              case 9:
                return this.m_roleActions.can_change_user_roles();
              case 10:
                return this.m_roleActions.can_mention_all();
              case 11:
                return this.m_roleActions.can_set_watching_broadcast();
              default:
                return !1;
            }
          }
          SetCanPerformAction(e, t) {
            switch (e) {
              case 1:
                this.m_roleActions.set_can_create_rename_delete_channel(t);
                break;
              case 2:
                this.m_roleActions.set_can_kick(t);
                break;
              case 3:
                this.m_roleActions.set_can_ban(t);
                break;
              case 4:
                this.m_roleActions.set_can_invite(t);
                break;
              case 5:
                this.m_roleActions.set_can_change_tagline_avatar_name(t);
                break;
              case 6:
                this.m_roleActions.set_can_chat(t);
                break;
              case 8:
                this.m_roleActions.set_can_change_group_roles(t);
                break;
              case 9:
                this.m_roleActions.set_can_change_user_roles(t);
                break;
              case 10:
                this.m_roleActions.set_can_mention_all(t);
                break;
              case 11:
                this.m_roleActions.set_can_set_watching_broadcast(t);
            }
          }
          toString() {
            let e = this.role_id;
            return (
              this.m_roleActions.can_create_rename_delete_channel() &&
                (e += " CreateRenameDeleteChannel"),
              this.m_roleActions.can_kick() && (e += " Kick"),
              this.m_roleActions.can_ban() && (e += " Ban"),
              this.m_roleActions.can_invite() && (e += " Invite"),
              this.m_roleActions.can_change_tagline_avatar_name() &&
                (e += " ChangeTaglineAvatarName"),
              this.m_roleActions.can_chat() && (e += " Chat"),
              this.m_roleActions.can_change_group_roles() &&
                (e += " ChangeGroupRoles"),
              this.m_roleActions.can_change_user_roles() &&
                (e += " ChangeUserRoles"),
              e
            );
          }
          get role_id() {
            return this.m_roleActions.role_id();
          }
          get roleActions() {
            return this.m_roleActions;
          }
        }
        class y {
          LOG = new a.wd("ChatRoomGroup", () => this.unique_id).Debug;
          m_chatStore = null;
          m_ulGroupID = "";
          m_ulDefaultChatID = "";
          m_rtTimeJoined = 0;
          m_unClanID;
          m_unAppID;
          m_rtLastAck = 0;
          m_unOwnerAccountID = void 0;
          m_bFullStateLoaded = !1;
          m_strName = "";
          m_strTagLine = "";
          m_strAvatarSHA = "";
          m_strAvatarUGCURL = "";
          m_unWatchingBroadcastAccountID = void 0;
          m_strWatchingBroadcastChannelID = "";
          m_mapRooms = m.sH.map(null, { deep: !1 });
          m_rgPartyBeacons = [];
          m_eUserDesktopNotificationLevel = 4;
          m_eUserMobileNotificationLevel = 4;
          m_bUnreadIndicatorMuted = !1;
          m_defaultRoleID;
          m_roles = [];
          m_roleActions = [];
          m_rgGroupMembersSummary = void 0;
          m_groupMembers = new R();
          m_cMemberSummaryCount = 0;
          m_bMemberListVirtualized = !1;
          constructor(e, t) {
            (0, m.Gn)(this), (this.m_chatStore = e), (this.m_ulGroupID = t);
          }
          get ChatStore() {
            return this.m_chatStore;
          }
          BIsValid() {
            return this.m_mapRooms.size > 0;
          }
          IsNamedGroupChat() {
            return !!this.m_strName || this.BIsClanChatRoom();
          }
          GetOwnerAccountID() {
            return this.m_unOwnerAccountID;
          }
          BIsAccountIDOwner(e) {
            return this.BIsClanChatRoom()
              ? 50 == this.GetMemberRankIfPresent(e)
              : this.GetOwnerAccountID() == e;
          }
          SetOwnerAppID(e) {
            e || (e = 0),
              this.m_unAppID != e &&
                ((this.m_unAppID = e),
                this.m_unAppID &&
                  (_.xm.AppInfoStore.GetAppInfo(this.m_unAppID),
                  _.xm.AppInfoStore.GetRichPresenceLoc(this.m_unAppID)));
          }
          GetOwnerAppID() {
            return this.m_unAppID;
          }
          get name() {
            if (this.m_strName || this.BIsClanChatRoom()) return this.m_strName;
            {
              let e = this.members_to_highlight_name,
                t = e.members;
              if (!t.length)
                return e.remaining_count
                  ? (0, d.we)("#ChatRoom_GenericWithOthers", e.remaining_count)
                  : (0, d.we)("#ChatRoom_GenericEmpty");
              switch (t.length) {
                case 1:
                  return e.remaining_count > 0
                    ? (0, d.we)(
                        "#ChatRoom_OneFriendPlusMore",
                        t[0].display_name,
                        e.remaining_count,
                      )
                    : (0, d.we)("#ChatRoom_OneFriend", t[0].display_name);
                case 2:
                  return e.remaining_count > 0
                    ? (0, d.we)(
                        "#ChatRoom_TwoPlusMore",
                        t[0].display_name,
                        t[1].display_name,
                        e.remaining_count,
                      )
                    : (0, d.we)(
                        "#ChatRoom_TwoFriends",
                        t[0].display_name,
                        t[1].display_name,
                      );
                case 3:
                  return (0, d.we)(
                    "#ChatRoom_ThreeFriends",
                    t[0].display_name,
                    t[1].display_name,
                    t[2].display_name,
                  );
                default:
                  return (
                    (0, f.w)(!1, `unexpected number of friends: ${t.length}`),
                    ""
                  );
              }
            }
          }
          get tagline() {
            return this.m_strTagLine;
          }
          get avatarSHA() {
            return this.m_strAvatarSHA;
          }
          get avatarUGCURL() {
            return this.m_strAvatarUGCURL;
          }
          get watching_broadcast_steamid() {
            return this.m_unWatchingBroadcastAccountID
              ? c.b.InitFromAccountID(this.m_unWatchingBroadcastAccountID)
              : null;
          }
          get watching_broadcast_channel_id() {
            return this.m_strWatchingBroadcastChannelID;
          }
          get hasAvatarSHA() {
            return this.m_strAvatarSHA.length > 0;
          }
          get hasIcon() {
            return this.hasAvatarSHA || 0 != this.m_unAppID;
          }
          GetAvatarOrAppIconURL(e) {
            if (this.m_strAvatarUGCURL) return this.m_strAvatarUGCURL;
            if (!this.m_strAvatarSHA && this.m_unAppID) {
              let e = _.xm.AppInfoStore.GetAppInfo(this.m_unAppID);
              if (e.is_valid && e.icon_url) return e.icon_url;
            }
            return (function (e, t) {
              t = t <= 32 ? 32 : t <= 64 ? 64 : 256;
              let n = C.TS.AVATAR_BASE_URL;
              return (
                n ||
                  (n =
                    C.TS.MEDIA_CDN_COMMUNITY_URL +
                    "images/chaticons/" +
                    e.substr(0, 2) +
                    "/" +
                    e.substr(2, 2) +
                    "/" +
                    e.substr(4, 2) +
                    "/"),
                (n += e + "_" + t + ".jpg"),
                n
              );
            })(this.m_strAvatarSHA, e);
          }
          get avatar_url_small() {
            return this.GetAvatarOrAppIconURL(32);
          }
          get avatar_url_medium() {
            return this.GetAvatarOrAppIconURL(64);
          }
          get avatar_url_full() {
            return this.GetAvatarOrAppIconURL(256);
          }
          get memberCountTotal() {
            return this.m_bFullStateLoaded
              ? this.m_groupMembers.unfiltered_count
              : this.m_cMemberSummaryCount;
          }
          get readyToRender() {
            return this.m_bFullStateLoaded;
          }
          get memberCountOnline() {
            return this.m_bFullStateLoaded
              ? this.m_groupMembers.member_counts.online
              : this.memberCountTotal;
          }
          get memberCountInGame() {
            return this.m_groupMembers.member_counts.ingame;
          }
          get memberList() {
            return this.m_groupMembers;
          }
          get unique_id() {
            return "cg" + this.m_ulGroupID;
          }
          get timeJoined() {
            return this.m_rtTimeJoined;
          }
          GetGroupID() {
            return this.m_ulGroupID;
          }
          GetDefaultChatID() {
            return this.m_ulDefaultChatID;
          }
          BIsClanChatRoom() {
            return !!this.m_unClanID;
          }
          BIsVoiceChannel(e) {
            let t = this.GetChatRoom(e);
            return (
              null != t &&
              t.GetVoiceAllowed() &&
              t.GetRoomID() != this.GetDefaultChatID()
            );
          }
          BIsTempVoiceChannel(e) {
            let t = this.GetChatRoom(e);
            return t && t.IsTempVoiceRoom();
          }
          GetClanID() {
            return this.m_unClanID;
          }
          get chatRoomList() {
            let e = Array.from(this.m_mapRooms.values());
            return (
              e.sort((e, t) => {
                if (e.GetSortOrder() < t.GetSortOrder()) return -1;
                if (e.GetSortOrder() > t.GetSortOrder()) return 1;
                let n = r.A.fromString(e.GetRoomID()),
                  i = r.A.fromString(t.GetRoomID());
                return n.lessThan(i) ? -1 : n.greaterThan(i) ? 1 : 0;
              }),
              e
            );
          }
          get textRoomList() {
            return this.chatRoomList.filter(
              (e) =>
                !e.GetVoiceAllowed() ||
                e.GetRoomID() == this.GetDefaultChatID(),
            );
          }
          get voiceRoomList() {
            return this.chatRoomList.filter((e) => e.GetVoiceAllowed());
          }
          get hasVoiceRoom() {
            let e,
              t = this.m_mapRooms.values();
            for (; (e = t.next()) && !e.done; )
              if (e.value.GetVoiceAllowed()) return !0;
            return !1;
          }
          GetDesktopNotificationLevel(e = !1) {
            return 0 == this.m_eUserDesktopNotificationLevel
              ? this.BIsClanChatRoom()
                ? 3
                : 4
              : this.m_eUserDesktopNotificationLevel;
          }
          GetMobileNotificationLevel() {
            return 0 === this.m_eUserMobileNotificationLevel
              ? 3
              : this.m_eUserMobileNotificationLevel;
          }
          BIsUnreadIndicatorMuted() {
            return this.m_bUnreadIndicatorMuted;
          }
          get hasUnreadChatMessage() {
            let e = Array.from(this.m_mapRooms.values());
            for (let t of e) {
              if (
                (this.m_bUnreadIndicatorMuted
                  ? t.has_unread_messages
                  : t.has_any_unread_messages) &&
                (t.BIsDefaultRoom() ||
                  t.time_last_ack >= this.m_rtLastAck ||
                  t.time_last_mention > this.m_rtLastAck)
              )
                return !0;
            }
            return !1;
          }
          get HasUnreadMention() {
            let e = Array.from(this.m_mapRooms.values());
            for (let t of e) if (t.has_unread_mention) return !0;
            return !1;
          }
          GetChatRoomsWithUnreadPriorityMessages(e) {
            this.m_mapRooms.forEach(function (t) {
              t.has_unread_priority_messages && e.push(t);
            });
          }
          get time_last_activity() {
            let e = 0,
              t = 0;
            this.m_mapRooms.forEach((n) => {
              if (!n.BShouldTrackUnreadMessages()) return;
              let i = n.time_last_activity;
              i > this.m_rtLastAck
                ? (t = 0 == t ? i : Math.min(i, t))
                : (e = Math.max(i, e));
            });
            let n = t;
            return (
              n || (n = e),
              this.m_rtTimeJoined > n && (n = this.m_rtTimeJoined),
              n
            );
          }
          get room_with_last_message() {
            let e,
              t = 0;
            return (
              this.m_mapRooms.forEach((n) => {
                t < n.time_last_message && ((e = n), (t = n.time_last_message));
              }),
              e
            );
          }
          GetRoomWithLastMessageForUser() {
            let e,
              t = 0;
            return (
              this.m_mapRooms.forEach((n) => {
                t < n.time_last_message && ((e = n), (t = n.time_last_message));
              }),
              e
            );
          }
          BHasEverBeenAcked() {
            if (this.m_rtLastAck) return !0;
            let e = Array.from(this.m_mapRooms.values());
            for (let t of e) if (t.time_last_ack) return !0;
            return !1;
          }
          UpdateLastAckTimeFromServer(e) {
            this.m_rtLastAck < e && (this.m_rtLastAck = e);
          }
          IsInRoom(e) {
            return (
              (0, f.w)(this.m_bFullStateLoaded, "Group state not fully loaded"),
              this.m_groupMembers.HasMember(e)
            );
          }
          BRoomContainsJustTheseFriendsAndSelf(e) {
            if (!this.BIsCurrentUserAMember()) return !1;
            if (this.memberCountTotal != e.length + 1) return !1;
            let t = !0;
            for (let n of e)
              if (this.m_rgGroupMembersSummary.indexOf(n) < 0) {
                t = !1;
                break;
              }
            return t;
          }
          GetMyRank() {
            return this.GetMemberRank(
              this.m_chatStore.CMInterface.steamid.GetAccountID(),
            );
          }
          ChangeMemberRank(e, t) {
            (0, f.w)(
              this.m_groupMembers.HasMember(e),
              "ChangeMemberRank: missing member",
            ),
              (this.m_groupMembers.GetExtra(e).m_rank = t);
          }
          GetMemberRank(e) {
            (0, f.w)(
              this.m_groupMembers.HasMember(e),
              "GetMemberRank: missing member",
            );
            let t = this.m_groupMembers.GetExtra(e);
            return t && 0 != t.m_rank
              ? t.m_rank
              : this.BIsClanChatRoom()
                ? 0
                : 20;
          }
          GetMemberRankIfPresent(e) {
            let t = this.m_groupMembers.GetExtra(e);
            return t ? t.m_rank : 0;
          }
          GetMemberPartyBeacon(e) {
            return this.m_rgPartyBeacons.find(function (t) {
              return t.account_id == e;
            });
          }
          ChangeMemberRoles(e, t) {
            (0, f.w)(
              this.m_groupMembers.HasMember(e),
              "GetMemberRank: missing member",
            );
            let n = this.m_groupMembers.GetExtra(e);
            n && (n.m_role_ids = t);
          }
          GetMemberRankString(e) {
            if (!this.IsInRoom(e)) return "";
            switch (this.GetMemberRank(e)) {
              case 50:
                return (0, d.we)("#Chat_rank_owner");
              case 40:
                return (0, d.we)("#Chat_rank_officer");
              case 30:
                return (0, d.we)("#Chat_rank_moderator");
              case 20:
                return (0, d.we)("#Chat_rank_member");
              case 15:
                return (0, d.we)("#Chat_rank_guest");
              case 10:
                return (0, d.we)("#Chat_rank_viewer");
              case 0:
                return "";
              default:
                return (0, d.we)("#Chat_rank_unknown");
            }
          }
          GetMemberRankStringUnlocalized(e) {
            if (!this.IsInRoom(e)) return "";
            switch (this.GetMemberRank(e)) {
              case 50:
                return "Owner";
              case 40:
                return "Officer";
              case 30:
                return "Moderator";
              case 20:
                return "Member";
              case 15:
                return "Guest";
              case 10:
                return "Viewer";
              case 0:
                return "DefaultRank";
              default:
                return (0, d.we)("UnknownRank");
            }
          }
          GetMember(e) {
            if (this.IsInRoom(e))
              return this.m_chatStore.FriendStore.GetPlayer(e);
            this.m_bFullStateLoaded;
          }
          SetInitialGroupState(e) {
            (0, f.w)(
              e.chat_group_id() == this.m_ulGroupID,
              "Chat group id doesn't match header",
            ),
              this.UpdateGroupStateFromSummary(e),
              this.UpdateChatRoomState(e.default_chat_id(), e.chat_rooms());
          }
          UpdateGroupStateFromSummary(e) {
            (this.m_strTagLine = e.chat_group_tagline()),
              null != e.chat_group_avatar_sha() &&
                (this.m_strAvatarSHA = (0, g.Kx)(e.chat_group_avatar_sha())),
              (this.m_strAvatarUGCURL = e.avatar_ugc_url() || ""),
              (this.m_unWatchingBroadcastAccountID =
                e.watching_broadcast_accountid()),
              (this.m_strWatchingBroadcastChannelID =
                e.watching_broadcast_channel_id()),
              (this.m_cMemberSummaryCount = e.active_member_count()),
              (this.m_unClanID = e.clanid()),
              (this.m_unOwnerAccountID = e.accountid_owner()),
              (this.m_rgGroupMembersSummary = e.top_members()),
              (this.m_defaultRoleID = e.default_role_id()),
              (this.m_roleActions = e.role_actions().map((e) => new w(e))),
              this.m_groupMembers.AddMember(
                _.xm.CMInterface.steamid.GetAccountID(),
                new I(e.rank(), e.role_ids()),
              ),
              this.SetOwnerAppID(e.appid()),
              this.SetNameCheckingForAppLocalization(e.chat_group_name()),
              (this.m_rgPartyBeacons = e
                .party_beacons()
                .map((e) => ({
                  account_id: new c.b(e.steamid_owner()).GetAccountID(),
                  app_id: e.app_id(),
                  beacon_id: e.beacon_id(),
                  game_metadata: e.game_metadata(),
                }))),
              _.xm.GroupMemberStore.OnPartyBeaconsUpdated(
                this.m_ulGroupID,
                this.m_rgPartyBeacons,
              );
          }
          SetNameCheckingForAppLocalization(e) {
            let t = null;
            !this.m_unOwnerAccountID &&
              this.GetOwnerAppID() &&
              ("#" == e[0]
                ? (t = { tok: e })
                : "{" == e[0] && (t = JSON.parse(e))),
              t && t.tok
                ? ((this.m_strName = "..."),
                  _.xm.AppInfoStore.GetRichPresenceLocAsync(
                    this.GetOwnerAppID(),
                  ).then((e) => {
                    let n = new Map();
                    if (t.params)
                      for (let e in t.params)
                        n.set(e.toString(), t.params[e].toString());
                    this.m_strName = e.Localize(t.tok, n);
                  }))
                : (this.m_strName = e);
          }
          UpdateGroupState(e) {
            (0, f.w)(
              e.header_state().chat_group_id() == this.m_ulGroupID,
              "Chat group id doesn't match header",
            ),
              this.UpdateChatRoomHeaderState(e.header_state()),
              this.m_groupMembers.Clear();
            let t = [];
            for (let n of e.members()) {
              let e = n.accountid();
              this.m_groupMembers.AddMember(e, new I(n.rank(), n.role_ids())),
                t.length < 10 && t.push(e);
            }
            (!this.m_rgGroupMembersSummary ||
              this.m_rgGroupMembersSummary.length < t.length) &&
              (this.m_rgGroupMembersSummary = t),
              this.UpdateChatRoomState(e.default_chat_id(), e.chat_rooms()),
              (this.m_bFullStateLoaded = !0);
          }
          SetMemberListVirtualized(e) {
            (this.m_bMemberListVirtualized = e),
              this.m_groupMembers.SetMemberDataVirtualized(e);
          }
          BIsMemberListVirtualized() {
            return this.m_bMemberListVirtualized;
          }
          UnloadActiveGroupState() {
            this.UnloadGroupState(),
              this.m_mapRooms.forEach((e) => {
                e.UnloadActiveChatState();
              });
          }
          UnloadGroupState() {
            (this.m_bFullStateLoaded = !1),
              (this.m_bMemberListVirtualized = !1),
              this.m_groupMembers.Clear();
          }
          UnloadAndResetGroupState() {
            this.UnloadGroupState(),
              this.UpdateUserState(new h.Dj()),
              this.m_mapRooms.forEach((e) => {
                e.UnloadChatState();
              });
          }
          OnUserStateChange(e, t) {
            let n = e.accountid();
            1 == t
              ? (this.LOG(`new member ${n} roles [${e.role_ids().toString()}]`),
                this.m_groupMembers.AddMember(n, new I(e.rank(), e.role_ids())),
                _.xm.GroupMemberStore.OnMemberAdded(this.m_ulGroupID, n),
                this.m_rgGroupMembersSummary.length < 10 &&
                  -1 == this.m_rgGroupMembersSummary.indexOf(n) &&
                  (this.m_rgGroupMembersSummary = [
                    ...this.m_rgGroupMembersSummary,
                    n,
                  ]))
              : 2 == t || 3 == t || 10 == t
                ? (this.m_groupMembers.RemoveMember(n),
                  _.xm.GroupMemberStore.OnMemberRemoved(this.m_ulGroupID, n),
                  -1 !== this.m_rgGroupMembersSummary.indexOf(n) &&
                    (this.m_rgGroupMembersSummary = o.il(
                      this.m_rgGroupMembersSummary,
                      n,
                    )))
                : 7 == t
                  ? this.ChangeMemberRank(n, e.rank())
                  : 12 == t && this.ChangeMemberRoles(n, e.role_ids());
          }
          UpdateChatRoomState(e, t) {
            this.m_ulDefaultChatID = e;
            let n = new Set();
            this.m_mapRooms.forEach((e, t) => n.add(t));
            for (let i of t) {
              let t = i.chat_id();
              n.delete(t);
              let o = this.m_mapRooms.get(t);
              o ||
                ((o = new l.d(this.m_chatStore, this, t, t == e)),
                this.m_mapRooms.set(t, o)),
                o.UpdateChatState(i);
            }
            n.forEach((e) => this.m_mapRooms.delete(e));
          }
          UpdateUserState(e) {
            for (let t of e.user_chat_room_state()) {
              let e = t.chat_id(),
                n = this.m_mapRooms.get(e);
              n && n.UpdateUserState(t);
            }
            (this.m_rtTimeJoined = e.time_joined()),
              (this.m_rtLastAck = e.time_last_group_ack()),
              (this.m_eUserDesktopNotificationLevel =
                e.desktop_notification_level()),
              (this.m_eUserMobileNotificationLevel =
                e.mobile_notification_level()),
              (this.m_bUnreadIndicatorMuted = e.unread_indicator_muted());
          }
          UpdateChatRoomHeaderState(e) {
            (0, f.w)(
              e.chat_group_id() == this.m_ulGroupID,
              "Chat group id doesn't match header",
            ),
              (this.m_strTagLine = e.tagline()),
              null != e.avatar_sha() &&
                (this.m_strAvatarSHA = (0, g.Kx)(e.avatar_sha())),
              (this.m_strAvatarUGCURL = e.avatar_ugc_url() || ""),
              (this.m_unWatchingBroadcastAccountID =
                e.watching_broadcast_accountid()),
              (this.m_unClanID = e.clanid()),
              (this.m_unOwnerAccountID = e.accountid_owner()),
              (this.m_defaultRoleID = e.default_role_id()),
              (this.m_roles = e
                .roles()
                .map((e) => ({
                  role_id: e.role_id(),
                  name: e.name(),
                  ordinal: e.ordinal(),
                })));
            for (let e of this.m_roles) this.LOG(`role ${e.role_id} ${e.name}`);
            this.m_roleActions = e.role_actions().map((e) => new w(e));
            for (let e of this.m_roleActions)
              this.LOG(`role/action ${e.toString()}`);
            this.SetOwnerAppID(e.appid()),
              this.SetNameCheckingForAppLocalization(e.chat_name()),
              (this.m_rgPartyBeacons = e
                .party_beacons()
                .map((e) => ({
                  account_id: new c.b(e.steamid_owner()).GetAccountID(),
                  app_id: e.app_id(),
                  beacon_id: e.beacon_id(),
                  game_metadata: e.game_metadata(),
                }))),
              _.xm.GroupMemberStore.OnPartyBeaconsUpdated(
                this.m_ulGroupID,
                this.m_rgPartyBeacons,
              );
          }
          BIsCurrentUserAMember() {
            return !!this.m_rtTimeJoined;
          }
          DefaultRoleID() {
            return this.m_defaultRoleID;
          }
          GetRoleActions(e) {
            for (let t of this.m_roleActions) if (t.role_id == e) return t;
          }
          GetRoles() {
            return this.m_roles;
          }
          GetRoleOrdinal(e) {
            for (let t of this.m_roles) if (t.role_id == e) return t.ordinal;
          }
          BIsUserGroupMember(e) {
            for (let t of this.m_rgGroupMembersSummary)
              if (t == e.accountid) return !0;
            return !1;
          }
          GetMemberRoleIDs(e) {
            return null == this.m_groupMembers.GetExtra(e)
              ? []
              : this.m_groupMembers.GetExtra(e).m_role_ids;
          }
          ToggleMemberRoleState(e, t) {
            let n = this.BMemberHasRole(e, t);
            return this.SetMemberRoleState(e, t, !n);
          }
          SetMemberRoleState(e, t, n) {
            if (n == this.BMemberHasRole(e, t)) return Promise.resolve(!0);
            if (!this.BCanIAssignRole(t)) return Promise.resolve(!1);
            let i = c.b.InitFromAccountID(e);
            if (n) {
              let e = u.w.Init(h.ng);
              return (
                e.Body().set_chat_group_id(this.GetGroupID()),
                e.Body().set_steamid(i.ConvertTo64BitString()),
                e.Body().set_role_id(t),
                h.xP
                  .AddRoleToUser(
                    _.xm.ChatStore.CMInterface.GetServiceTransport(),
                    e,
                  )
                  .then((e) => (e.GetEResult(), 1 == e.GetEResult()))
              );
            }
            {
              let e = u.w.Init(h.Ig);
              return (
                e.Body().set_chat_group_id(this.GetGroupID()),
                e.Body().set_steamid(i.ConvertTo64BitString()),
                e.Body().set_role_id(t),
                h.xP
                  .DeleteRoleFromUser(
                    _.xm.ChatStore.CMInterface.GetServiceTransport(),
                    e,
                  )
                  .then((e) => (e.GetEResult(), 1 == e.GetEResult()))
              );
            }
          }
          BDoesRoleAllowAction(e, t) {
            for (let n of this.m_roleActions)
              if (n.role_id == e && n.BCanPerformAction(t)) return !0;
            return !1;
          }
          BCanIPerformActionOnUser(e, t, n = !1) {
            return (
              !(!n && !this.BHasMember(e)) &&
              !this.BIsAccountIDOwner(e) &&
              this.BCanIPerformAction(t)
            );
          }
          BHasMember(e) {
            return void 0 !== this.m_groupMembers.GetExtra(e);
          }
          BMemberHasRole(e, t) {
            let n = this.m_groupMembers.GetExtra(e);
            return !!n && n.BHasRole(t);
          }
          BCanIPerformAction(e) {
            if (
              this.BIsAccountIDOwner(
                this.m_chatStore.CMInterface.steamid.GetAccountID(),
              )
            )
              return !0;
            let t = this.m_chatStore.CMInterface.steamid.GetAccountID(),
              n = this.m_groupMembers.GetExtra(t);
            if (n)
              for (let t of n.m_role_ids)
                if (this.BDoesRoleAllowAction(t, e)) return !0;
            return !1;
          }
          BCanKickMember(e) {
            return this.BCanIPerformActionOnUser(e, 2);
          }
          BCanBanMember(e) {
            return this.BCanIPerformActionOnUser(e, 3);
          }
          BCanDeleteMemberMessages(e) {
            if (_.xm.FriendStore.self.accountid == e) return !0;
            return (
              this.BCanIPerformActionOnUser(e, 2, true) ||
              this.BCanIPerformActionOnUser(e, 3, true)
            );
          }
          BCanICreateRoles() {
            return this.BCanIPerformAction(8);
          }
          BCanIModifyRole(e) {
            if (
              this.BIsAccountIDOwner(
                this.m_chatStore.CMInterface.steamid.GetAccountID(),
              )
            )
              return !0;
            if (!this.BCanIPerformAction(8)) return !1;
            if (!this.GetRoleActions(e)) return !1;
            let t = this.GetRoleOrdinal(e);
            if (null == t) return !1;
            let n = this.GetHighestRankRoleIDForPermission(
                this.m_chatStore.CMInterface.steamid.GetAccountID(),
                8,
              ),
              i = this.GetRoleOrdinal(n);
            return null != i && i < t;
          }
          BCanIAssignRoles() {
            return this.BCanIPerformAction(9);
          }
          BCanIAssignRole(e) {
            if (this.BIsClanChatRoom()) return !1;
            if (e == this.DefaultRoleID()) return !1;
            if (
              this.BIsAccountIDOwner(
                this.m_chatStore.CMInterface.steamid.GetAccountID(),
              )
            )
              return !0;
            if (!this.BCanIPerformAction(9)) return !1;
            if (!this.GetRoleActions(e)) return !1;
            let t = this.GetRoleOrdinal(e);
            if (null == t) return !1;
            let n = this.GetHighestRankRoleIDForPermission(
                this.m_chatStore.CMInterface.steamid.GetAccountID(),
                9,
              ),
              i = this.GetRoleOrdinal(n);
            return null != i && i < t;
          }
          BCanIMentionAll() {
            return this.BCanIPerformAction(10);
          }
          BCanIAssociateBroadcast() {
            return this.BCanIPerformAction(11);
          }
          GetHighestRankRoleIDForPermission(e, t) {
            let n,
              i = Number.MAX_VALUE,
              o = this.m_groupMembers.GetExtra(e);
            if (o) {
              for (let e of o.m_role_ids)
                if (this.BDoesRoleAllowAction(e, t)) {
                  let t = this.GetRoleOrdinal(e);
                  t < i && ((n = e), (i = t));
                }
              return n;
            }
          }
          GetDefaultChatRoom() {
            return this.m_mapRooms.get(this.m_ulDefaultChatID);
          }
          GetChatRoom(e) {
            return this.m_mapRooms.get(e);
          }
          OnConnectionRestored(e) {
            e && this.UnloadGroupState(),
              this.m_mapRooms.forEach((e) => e.OnConnectionRestored());
          }
          OnRoomStateChange(e) {
            this.UpdateChatRoomState(e.default_chat_id(), e.chat_rooms());
          }
          OnActivate() {
            if (!this.m_rtLastAck || this.hasUnreadChatMessage) {
              let e = 0;
              this.m_mapRooms.forEach((t) => {
                t.time_last_message && (e = Math.max(e, t.time_last_message));
              }),
                (this.m_rtLastAck = e || _.xm.GetServerRTime32());
              let t = u.w.Init(h.MH);
              t.Body().set_chat_group_id(this.m_ulGroupID),
                t.Body().set_timestamp(this.m_rtLastAck),
                h.xP.AckChatMessage(_.xm.CMInterface.GetServiceTransport(), t);
            }
          }
          InviteFriend(e, t) {
            let n = c.b.InitFromAccountID(e),
              i = u.w.Init(h.eb);
            i.Body().set_chat_group_id(this.m_ulGroupID),
              i.Body().set_steamid(n.ConvertTo64BitString()),
              t && i.Body().set_chat_id(t.GetRoomID()),
              h.xP
                .InviteFriendToChatRoomGroup(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => {
                  e.GetEResult();
                });
          }
          SaveChatRoomGroup(e) {
            let t = u.w.Init(h.Nc);
            return (
              t.Body().set_chat_group_id(this.m_ulGroupID),
              t.Body().set_name(e),
              h.xP
                .SaveChatRoomGroup(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  t,
                )
                .then((e) => {
                  let t = e.GetEResult();
                  if (1 != t) throw t;
                })
            );
          }
          RenameChatRoomGroup(e) {
            if (!e) return Promise.resolve(2);
            let t = this.m_strName;
            this.m_strName = e;
            let n = u.w.Init(h.yw);
            return (
              n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_name(e),
              h.xP
                .RenameChatRoomGroup(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then(
                  (e) => (
                    1 != e.GetEResult() && (this.m_strName = t), e.GetEResult()
                  ),
                )
            );
          }
          SetChatRoomGroupTagline(e) {
            let t = this.m_strTagLine;
            if (
              (e.length > 255 && (e = e.substring(0, 255)),
              e == this.m_strTagLine)
            )
              return Promise.resolve();
            this.m_strTagLine = e;
            let n = u.w.Init(h.GQ);
            return (
              n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_tagline(e),
              h.xP
                .SetChatRoomGroupTagline(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => {
                  1 != e.GetEResult() && (this.m_strTagLine = t);
                })
            );
          }
          async SetChatRoomGroupWatchingBroadcast(e, t) {
            if (e == this.m_unWatchingBroadcastAccountID && !t)
              return Promise.resolve();
            let n = u.w.Init(h.O1);
            n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_watching_broadcast_accountid(e),
              t && n.Body().set_watching_broadcast_channel_id(t);
            const i = (
              await h.xP.SetChatRoomGroupWatchingBroadcast(
                this.m_chatStore.CMInterface.GetServiceTransport(),
                n,
              )
            ).GetEResult();
            if (1 !== i) throw i;
            (this.m_unWatchingBroadcastAccountID = e),
              (this.m_strWatchingBroadcastChannelID = t);
          }
          SetChatRoomGroupAvatar(e) {
            if (e == this.m_strAvatarSHA) return Promise.resolve();
            let t = u.w.Init(h.mV);
            return (
              t.Body().set_chat_group_id(this.m_ulGroupID),
              t.Body().set_avatar_sha((0, g.w)(e)),
              h.xP
                .SetChatRoomGroupAvatar(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  t,
                )
                .then((t) => {
                  let n = t.GetEResult();
                  if (1 != n) throw n;
                  this.m_strAvatarSHA = e;
                })
            );
          }
          BCanInvite() {
            return this.BCanIPerformAction(4);
          }
          BCanBan() {
            return this.BCanIPerformAction(3);
          }
          BCanKick() {
            return this.BCanIPerformAction(2);
          }
          BCanAdminChannel() {
            return this.BCanIPerformAction(1);
          }
          BCanAdminGroup() {
            return this.BCanIPerformAction(5);
          }
          BCanChat() {
            return this.BCanIPerformAction(6);
          }
          BCanEditRoles() {
            return !this.BIsClanChatRoom() && this.BCanIPerformAction(9);
          }
          get members_to_highlight_name() {
            return this.InternalGetMembersToHighlight(3, !0);
          }
          get members_to_highlight() {
            return this.InternalGetMembersToHighlight(4, !1);
          }
          InternalGetMembersToHighlight(e, t) {
            const n = !t,
              i = !!this.m_rtTimeJoined;
            let o = this.m_bFullStateLoaded
              ? this.m_groupMembers.unfiltered_count
              : this.m_cMemberSummaryCount;
            const r = o > e ? e - 1 : e;
            let a = _.xm.FriendStore,
              s = a.self,
              l = [],
              c = a.GetPlayer(this.GetOwnerAccountID());
            if (
              (c && c.accountid != s.accountid && l.push(c),
              this.m_rgGroupMembersSummary)
            ) {
              for (let e of this.m_rgGroupMembersSummary) {
                if (e == s.accountid || this.BIsAccountIDOwner(e)) continue;
                let n = a.GetFriendIfCached(e);
                if (
                  n &&
                  (t || n.persona.BHasAvatarSet()) &&
                  (l.push(n), l.length >= r)
                )
                  break;
              }
              if (n && l.length < r)
                for (let e of this.m_rgGroupMembersSummary) {
                  if (e == s.accountid || this.BIsAccountIDOwner(e)) continue;
                  let n = a.GetPlayer(e);
                  if (
                    n &&
                    !n.is_friend &&
                    (t || n.persona.BHasAvatarSet()) &&
                    (l.push(n), l.length >= r)
                  )
                    break;
                }
            }
            return (
              i && l.length < r && l.push(s),
              { members: l, remaining_count: o - l.length }
            );
          }
          SetUserBanState(e, t) {
            let n = c.b.InitFromAccountID(e).ConvertTo64BitString(),
              i = u.w.Init(h.xZ);
            return (
              i.Body().set_chat_group_id(this.m_ulGroupID),
              i.Body().set_steamid(n),
              i.Body().set_ban_state(t),
              h.xP
                .SetUserBanState(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => {
                  let t = e.GetEResult();
                  if (1 != t && 29 != t)
                    throw ((0, f.w)(!1, `Failed to change ban state ${t}`), t);
                })
            );
          }
          MuteUser(e, t) {
            let n = c.b.InitFromAccountID(e).ConvertTo64BitString(),
              i = u.w.Init(h.qw);
            return (
              i.Body().set_chat_group_id(this.m_ulGroupID),
              i.Body().set_steamid(n),
              i.Body().set_expiration(t),
              h.xP
                .MuteUserInGroup(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => {
                  let t = e.GetEResult();
                  if (1 != t)
                    throw (
                      ((0, f.w)(!1, `Failed to change muteexpiration ${t}`), t)
                    );
                })
            );
          }
          KickUser(e, t) {
            let n = c.b.InitFromAccountID(e).ConvertTo64BitString(),
              i = u.w.Init(h.fC);
            return (
              i.Body().set_chat_group_id(this.m_ulGroupID),
              i.Body().set_steamid(n),
              i.Body().set_expiration(t),
              h.xP
                .KickUserFromGroup(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => {
                  let t = e.GetEResult();
                  if (1 != t) throw (this.LOG(`Kick returned ${t}`), t);
                })
            );
          }
          RevokeInvite(e) {
            let t = c.b.InitFromAccountID(e).ConvertTo64BitString(),
              n = u.w.Init(h.HR);
            return (
              n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_steamid(t),
              h.xP
                .RevokeInviteToGroup(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => {
                  let t = e.GetEResult();
                  if (1 != t) throw (this.LOG(`RevokeInvite returned ${t}`), t);
                })
            );
          }
          CreateChatRoom(e, t) {
            let n = u.w.Init(h.N5);
            return (
              n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_name(e),
              n.Body().set_allow_voice(t),
              h.xP
                .CreateChatRoom(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => {
                  let t = e.Body().chat_room().chat_id();
                  if (1 != e.GetEResult() || "" == t || "0" == t)
                    throw (
                      ((0, f.w)(!1, "Failed to create chat room"),
                      new Error("Failed to create chat room"))
                    );
                  return this.AddCreatedRoom(t, e.Body().chat_room());
                })
            );
          }
          CreateAndJoinTempVoiceRoom() {
            this.CreateChatRoom("", !0)
              .then((e) => {
                e.StartVoiceChat();
              })
              .catch(() => {});
          }
          AddCreatedRoom(e, t) {
            let n = this.m_mapRooms.get(e);
            return (
              n ||
                ((n = new l.d(this.m_chatStore, this, e, !1)),
                this.m_mapRooms.set(e, n)),
              n.UpdateChatState(t),
              n
            );
          }
          RenameRoom(e, t) {
            if (e == this.m_ulDefaultChatID) return;
            if (!t) return;
            let n = this.GetChatRoom(e);
            if (!n) return;
            let i = n.name;
            n.ChangeNameWhileWaitingForRenameRequest(t);
            let o = u.w.Init(h.zF);
            o.Body().set_chat_group_id(this.m_ulGroupID),
              o.Body().set_chat_id(e),
              o.Body().set_name(t),
              h.xP
                .RenameChatRoom(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  o,
                )
                .then((e) => {
                  1 == e.GetEResult() ||
                    ((0, f.w)(!1, "Failed to change room name"),
                    n.ChangeNameWhileWaitingForRenameRequest(i));
                });
          }
          ReorderRoom(e, t) {
            let n = u.w.Init(h.wR);
            n.Body().set_chat_group_id(this.m_ulGroupID),
              n.Body().set_chat_id(e),
              n.Body().set_move_after_chat_id(t),
              h.xP
                .ReorderChatRoom(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => {
                  1 == e.GetEResult() || (0, f.w)(!1, "Failed to reorder room");
                });
          }
          DeleteChatRoom(e) {
            let t = u.w.Init(h.WS);
            t.Body().set_chat_group_id(this.m_ulGroupID),
              t.Body().set_chat_id(e),
              h.xP
                .DeleteChatRoom(
                  this.m_chatStore.CMInterface.GetServiceTransport(),
                  t,
                )
                .then((t) => {
                  1 == t.GetEResult()
                    ? this.RemoveRoom(e)
                    : (0, f.w)(!1, "Failed to delete chat room");
                });
          }
          RemoveRoom(e) {
            this.m_mapRooms.delete(e);
          }
          LeaveChatRoomGroup(e) {
            this.m_chatStore
              .LeaveChatRoomGroup(e, this.m_ulGroupID)
              .catch(() => {});
          }
          GetInviteLinksForGroup() {
            let e = u.w.Init(h.IG);
            return (
              e.Body().set_chat_group_id(this.GetGroupID()),
              h.xP
                .GetInviteLinksForGroup(
                  _.xm.ChatStore.CMInterface.GetServiceTransport(),
                  e,
                )
                .then((e) => {
                  let t;
                  return (
                    (t =
                      1 != e.GetEResult()
                        ? { loadingState: "failed", rgInviteLinks: null }
                        : {
                            loadingState: "loaded",
                            rgInviteLinks: e.Body().invite_links(),
                          }),
                    t
                  );
                })
            );
          }
          GetInvitedUsersForGroup() {
            let e = u.w.Init(h.zw);
            return (
              e.Body().set_chat_group_id(this.GetGroupID()),
              h.xP
                .GetInviteList(
                  _.xm.ChatStore.CMInterface.GetServiceTransport(),
                  e,
                )
                .then((e) => {
                  let t;
                  return (
                    (t =
                      1 != e.GetEResult()
                        ? { loadingState: "failed", rgInvitedUsers: null }
                        : {
                            loadingState: "loaded",
                            rgInvitedUsers: e.Body().invites(),
                          }),
                    t
                  );
                })
            );
          }
          GetBanList() {
            let e = u.w.Init(h.ro);
            return (
              e.Body().set_chat_group_id(this.GetGroupID()),
              h.xP
                .GetBanList(_.xm.ChatStore.CMInterface.GetServiceTransport(), e)
                .then((e) => {
                  let t = new D();
                  return (
                    15 == e.GetEResult()
                      ? (t.loadingState = "denied")
                      : 1 == e.GetEResult()
                        ? ((t.rgBans = e.Body().bans()),
                          (t.loadingState = "loaded"))
                        : (t.loadingState = "failed"),
                    t
                  );
                })
            );
          }
          GetRoleName(e) {
            let t = this.m_roles.findIndex((t) => t.role_id == e);
            if (t >= 0) return this.m_roles[t].name;
          }
          CreateRole(e) {
            if (0 == (e = e.trim()).length) return Promise.resolve();
            let t = u.w.Init(h.uD);
            return (
              t.Body().set_chat_group_id(this.GetGroupID()),
              t.Body().set_name(e),
              this.m_roles.push({
                role_id: "-1",
                name: e,
                ordinal: Number.MAX_VALUE,
              }),
              h.xP
                .CreateRole(_.xm.ChatStore.CMInterface.GetServiceTransport(), t)
                .then((t) => {
                  let n = t.GetEResult();
                  if (1 != n) {
                    let e = this.m_roles.findIndex((e) => "-1" == e.role_id);
                    throw (
                      (e >= 0 && this.m_roles.splice(e, 1),
                      new Error(`unable to create role, error ${n}`))
                    );
                  }
                  this.LOG(`created role ${e}`);
                })
            );
          }
          DeleteRole(e) {
            let t = u.w.Init(h.lG);
            return (
              t.Body().set_chat_group_id(this.GetGroupID()),
              t.Body().set_role_id(e),
              h.xP
                .DeleteRole(_.xm.ChatStore.CMInterface.GetServiceTransport(), t)
                .then((t) => {
                  if (1 != t.GetEResult())
                    throw new Error(`unable to delete role ${e}`);
                  let n = this.m_roles.findIndex((t) => t.role_id == e);
                  n >= 0 && this.m_roles.splice(n, 1);
                })
            );
          }
          RenameRole(e, t) {
            if (0 == (t = t.trim()).length) return Promise.resolve();
            let n = u.w.Init(h.Ud);
            return (
              n.Body().set_chat_group_id(this.GetGroupID()),
              n.Body().set_role_id(e),
              n.Body().set_name(t),
              h.xP
                .RenameRole(_.xm.ChatStore.CMInterface.GetServiceTransport(), n)
                .then((n) => {
                  let i = n.GetEResult();
                  if (1 != i)
                    throw new Error(`unable to rename role ${e} ${i}`);
                  let o = this.m_roles.findIndex((t) => t.role_id == e);
                  o >= 0 && (this.m_roles[o].name = t);
                })
            );
          }
          ReorderRole(e, t) {
            let n = u.w.Init(h.Tv);
            return (
              n.Body().set_chat_group_id(this.GetGroupID()),
              n.Body().set_role_id(e),
              n.Body().set_ordinal(t),
              h.xP
                .ReorderRole(
                  _.xm.ChatStore.CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => 1 == e.GetEResult())
            );
          }
          SetRoleAction(e, t, n) {
            let i = this.GetRoleActions(e);
            if (i) {
              if (n == i.BCanPerformAction(t)) return;
              let o = i.BCanPerformAction(t);
              i.SetCanPerformAction(t, n);
              let r = u.w.Init(h.Lp);
              return (
                r.Body().set_chat_group_id(this.GetGroupID()),
                r.Body().set_role_id(e),
                r.Body().set_actions(i.roleActions),
                h.xP
                  .ReplaceRoleActions(
                    _.xm.ChatStore.CMInterface.GetServiceTransport(),
                    r,
                  )
                  .then((e) => {
                    1 != e.GetEResult() &&
                      (i.SetCanPerformAction(t, o),
                      this.LOG(`SetRoleAction error, restoring ${t} to ${o}`));
                  })
              );
            }
          }
          DeleteInviteLink(e, t) {
            let n = u.w.Init(h.mG);
            if (
              (n.Body().set_chat_group_id(this.GetGroupID()),
              n.Body().set_invite_code(e),
              t && "loaded" == t.loadingState)
            ) {
              let n = t.rgInviteLinks.findIndex((t) => t.invite_code() == e);
              n >= 0 &&
                (t.rgInviteLinks.splice(n, 1),
                this.LOG(`removed link ${t.rgInviteLinks}`));
            }
            return h.xP
              .DeleteInviteLink(
                _.xm.ChatStore.CMInterface.GetServiceTransport(),
                n,
              )
              .then((e) => 1 == e.GetEResult());
          }
          SetNotificationPreferences(e, t, n) {
            let i = u.w.Init(h.gD);
            return (
              i.Body().set_chat_group_id(this.m_ulGroupID),
              void 0 !== e &&
                ((this.m_eUserDesktopNotificationLevel = e),
                i
                  .Body()
                  .chat_group_preferences()
                  .set_desktop_notification_level(e),
                4 == e && this.m_bUnreadIndicatorMuted && (n = !1)),
              void 0 !== t &&
                ((this.m_eUserMobileNotificationLevel = t),
                i
                  .Body()
                  .chat_group_preferences()
                  .set_mobile_notification_level(t)),
              void 0 !== n &&
                ((this.m_bUnreadIndicatorMuted = n),
                i
                  .Body()
                  .chat_group_preferences()
                  .set_unread_indicator_muted(n)),
              h.xP
                .SetUserChatGroupPreferences(
                  _.xm.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => 1 == e.GetEResult())
            );
          }
          AddMetaMentionsToResults(e, t) {
            let n = this.BCanIMentionAll()
              ? ""
              : (0, d.we)("#ChatMentionSuggest_NoPermission");
            "online".startsWith(e) &&
              t.unshift({
                friend: null,
                iMatchOffset: 0,
                bNicknameMatch: !1,
                meta_mention: "online",
                strNotSelectable: n,
              }),
              "all".startsWith(e) &&
                t.unshift({
                  friend: null,
                  iMatchOffset: 0,
                  bNicknameMatch: !1,
                  meta_mention: "all",
                  strNotSelectable: n,
                });
          }
          SearchMembers(e, t = 5, n = !1) {
            let i = [],
              o = e.toLocaleLowerCase(),
              r = this.m_chatStore.CMInterface.steamid.GetAccountID(),
              a = [],
              s = [];
            for (let e of this.memberList.member_list)
              if (e.accountid != r) {
                if (o.length) {
                  let t = e.MatchSearchString(o),
                    i = 0 === t.iOffset;
                  if (0 == t.match || (n && !i)) continue;
                  let r = {
                    friend: e,
                    iMatchOffset: t.iOffset,
                    bNicknameMatch: 2 == t.match,
                  };
                  i ? (t.bFullMatch ? a.unshift(r) : a.push(r)) : s.push(r);
                } else
                  i.push({ friend: e, iMatchOffset: 0, bNicknameMatch: !1 });
                if (i.length + a.length >= t) break;
              }
            for (let e = 0; e < a.length && i.length < t; e++) i.push(a[e]);
            for (let e = 0; e < s.length && i.length < t; e++) i.push(s[e]);
            return i;
          }
          BNameMatchesSearch(e) {
            return -1 != this.name.toLocaleLowerCase().indexOf(e);
          }
        }
        (0, i.Cg)([m.sH], y.prototype, "m_rtTimeJoined", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_rtLastAck", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_unOwnerAccountID", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_bFullStateLoaded", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_strName", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_strTagLine", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_strAvatarSHA", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_strAvatarUGCURL", void 0),
          (0, i.Cg)(
            [m.sH],
            y.prototype,
            "m_unWatchingBroadcastAccountID",
            void 0,
          ),
          (0, i.Cg)(
            [m.sH],
            y.prototype,
            "m_strWatchingBroadcastChannelID",
            void 0,
          ),
          (0, i.Cg)([m.sH], y.prototype, "m_rgPartyBeacons", void 0),
          (0, i.Cg)(
            [m.sH],
            y.prototype,
            "m_eUserDesktopNotificationLevel",
            void 0,
          ),
          (0, i.Cg)(
            [m.sH],
            y.prototype,
            "m_eUserMobileNotificationLevel",
            void 0,
          ),
          (0, i.Cg)([m.sH], y.prototype, "m_bUnreadIndicatorMuted", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_roles", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_rgGroupMembersSummary", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_cMemberSummaryCount", void 0),
          (0, i.Cg)([m.sH], y.prototype, "m_bMemberListVirtualized", void 0),
          (0, i.Cg)([m.EW], y.prototype, "name", null),
          (0, i.Cg)([m.EW], y.prototype, "hasAvatarSHA", null),
          (0, i.Cg)([m.EW], y.prototype, "hasIcon", null),
          (0, i.Cg)([m.EW], y.prototype, "avatar_url_small", null),
          (0, i.Cg)([m.EW], y.prototype, "avatar_url_medium", null),
          (0, i.Cg)([m.EW], y.prototype, "avatar_url_full", null),
          (0, i.Cg)([m.EW], y.prototype, "chatRoomList", null),
          (0, i.Cg)([m.EW], y.prototype, "textRoomList", null),
          (0, i.Cg)([m.EW], y.prototype, "voiceRoomList", null),
          (0, i.Cg)([m.EW], y.prototype, "hasVoiceRoom", null),
          (0, i.Cg)([m.EW], y.prototype, "hasUnreadChatMessage", null),
          (0, i.Cg)([m.EW], y.prototype, "HasUnreadMention", null),
          (0, i.Cg)([m.EW], y.prototype, "time_last_activity", null),
          (0, i.Cg)([m.EW], y.prototype, "room_with_last_message", null),
          (0, i.Cg)([m.XI], y.prototype, "ChangeMemberRank", null),
          (0, i.Cg)([m.XI], y.prototype, "ChangeMemberRoles", null),
          (0, i.Cg)([m.XI], y.prototype, "SetInitialGroupState", null),
          (0, i.Cg)([m.XI], y.prototype, "UpdateGroupStateFromSummary", null),
          (0, i.Cg)(
            [m.XI],
            y.prototype,
            "SetNameCheckingForAppLocalization",
            null,
          ),
          (0, i.Cg)([m.XI], y.prototype, "UpdateGroupState", null),
          (0, i.Cg)([m.XI], y.prototype, "UnloadActiveGroupState", null),
          (0, i.Cg)([m.XI], y.prototype, "UnloadGroupState", null),
          (0, i.Cg)([m.XI], y.prototype, "UnloadAndResetGroupState", null),
          (0, i.Cg)([m.XI], y.prototype, "UpdateChatRoomState", null),
          (0, i.Cg)([m.XI], y.prototype, "UpdateUserState", null),
          (0, i.Cg)([m.XI], y.prototype, "UpdateChatRoomHeaderState", null),
          (0, i.Cg)([m.XI], y.prototype, "OnActivate", null),
          (0, i.Cg)([m.EW], y.prototype, "members_to_highlight_name", null),
          (0, i.Cg)([m.EW], y.prototype, "members_to_highlight", null),
          (0, i.Cg)([m.XI], y.prototype, "AddCreatedRoom", null),
          (0, i.Cg)([m.XI], y.prototype, "RemoveRoom", null);
        class E extends b.Q {
          LOG = new a.wd("ChatRoomGroup", () => this.GetUniqueID()).Debug;
          m_group;
          m_tabset;
          m_mapChatViews = new Map();
          m_disposeActiveVoice;
          m_disposeChatRooms;
          m_selectedChatView = void 0;
          m_popoverChatView = void 0;
          m_bShowSettingsDialog = !1;
          m_ulRenameChatRoomID = void 0;
          m_bShowBroadcast = !1;
          m_bShowVerticalBroadcastChat = void 0;
          m_strLocalBroadcastId = void 0;
          m_bChatHidden = !1;
          m_bShowGlobalChat = !1;
          m_bMemberSearchActive = !1;
          m_strMemberSearchString = "";
          m_rgSearchResults = [];
          m_bSearchError = !1;
          m_bMemberListCollapsedOverride = void 0;
          m_bChannelListCollapsedOverride = void 0;
          m_VirtualizedMemberList;
          constructor(e, t) {
            super(),
              (0, m.Gn)(this),
              (this.m_tabset = e),
              (this.m_group = t),
              this.m_group.BIsValid() &&
                this.SelectChat(this.m_group.GetDefaultChatID()),
              (this.m_disposeChatRooms = (0, m.fm)(() => {
                let e = this.m_group.chatRoomList;
                this.m_selectedChatView &&
                  e.length &&
                  e.indexOf(this.m_selectedChatView.chat) < 0 &&
                  this.SelectChat(this.m_group.GetDefaultChatID());
              }));
          }
          get search_results() {
            return this.m_rgSearchResults;
          }
          get has_search_error() {
            return this.m_bSearchError;
          }
          GetGroup() {
            return this.m_group;
          }
          GetSelectedChatView() {
            return this.m_selectedChatView;
          }
          GetActiveChatView() {
            return this.GetPopoverChatView() || this.GetSelectedChatView();
          }
          GetPopoverChatView() {
            return this.m_popoverChatView;
          }
          get isBroadcastShown() {
            return this.m_bShowBroadcast;
          }
          ShowBroadcast() {
            (this.m_bShowBroadcast = !0), this.SetLayoutForBroadcast();
          }
          SetLayoutForBroadcast() {
            this.SetChannelListCollapsed(!0, !1),
              this.SetMemberListCollapsed(!0, !1),
              SetBackgroundTimeout(() => {
                this.GetActiveChatView() &&
                  this.GetActiveChatView().OnChatFrameChanged();
              }, 30);
          }
          HideBroadcast() {
            (this.m_bShowBroadcast = !1), this.SetLayoutForHiddenBroadcast();
          }
          SetLayoutForHiddenBroadcast() {
            _.xm.UIStore.SetTheaterMode(!1),
              SetBackgroundTimeout(() => {
                this.GetActiveChatView() &&
                  this.GetActiveChatView().OnChatFrameChanged();
              }, 30);
          }
          SetVerticalBroadcastChat(e) {
            this.m_bShowVerticalBroadcastChat = e;
          }
          ToggleTheaterModeBroadcastChat() {
            _.xm.UIStore.SetTheaterMode(!_.xm.UIStore.GetTheaterMode());
          }
          SetChatHidden(e) {
            this.m_bChatHidden = e;
          }
          SetGlobalBroadcastChatShown(e) {
            (this.m_bShowGlobalChat = e),
              this.GetActiveChatView() &&
                this.GetActiveChatView().OnChatFrameChanged();
          }
          SetLocalBroadcastId(e) {
            this.m_strLocalBroadcastId = e;
          }
          SetMemberListCollapsed(e, t = !0) {
            if (t) {
              this.m_bMemberListCollapsedOverride = void 0;
              const t = this.GetGroup();
              _.xm.ChatStore.ChatRoomGroupDisplayPrefs.SetChatRoomDisplayPref(
                t.GetGroupID(),
                "bMemberListCollapsed",
                e,
              );
            } else this.m_bMemberListCollapsedOverride = e;
          }
          SetChannelListCollapsed(e, t = !0) {
            if (t) {
              this.m_bChannelListCollapsedOverride = void 0;
              const t = this.GetGroup();
              _.xm.ChatStore.ChatRoomGroupDisplayPrefs.SetChatRoomDisplayPref(
                t.GetGroupID(),
                "bChannelListCollapsed",
                e,
              );
            } else this.m_bChannelListCollapsedOverride = e;
          }
          ClosePopoverChat() {
            this.m_popoverChatView &&
              (this.m_popoverChatView.OnViewClosed(),
              this.m_disposeActiveVoice && this.m_disposeActiveVoice(),
              (this.m_popoverChatView = null));
          }
          SelectChat(e) {
            let t = this.m_group.GetChatRoom(e);
            if (t) {
              if (
                t.GetVoiceAllowed() &&
                t != this.m_group.GetDefaultChatRoom()
              ) {
                if (this.m_popoverChatView && this.m_popoverChatView.chat == t)
                  return;
              } else if (
                (this.ClosePopoverChat(),
                this.m_selectedChatView && this.m_selectedChatView.chat == t)
              )
                return;
              t.GetVoiceAllowed() &&
              this.m_group.GetDefaultChatRoom() != t &&
              !_.xm.IsGamepadUIActive()
                ? (this.ClosePopoverChat(),
                  (this.m_popoverChatView = this.GetChatViewForRoom(t)),
                  this.m_disposeActiveVoice && this.m_disposeActiveVoice(),
                  (this.m_disposeActiveVoice = (0, m.z7)(
                    () => !t.BVoiceActive(),
                    () => {
                      this.m_popoverChatView &&
                        this.m_popoverChatView.chat == t &&
                        this.ClosePopoverChat();
                    },
                  )))
                : (this.m_selectedChatView &&
                    this.m_selectedChatView.OnViewClosed(),
                  (this.m_selectedChatView = this.GetChatViewForRoom(t))),
                this.m_tabset.activeTab == this &&
                  this.m_tabset.is_popup_focused &&
                  this.OnTabActivate();
            }
          }
          SelectNextChannel() {
            const e = this.GetSelectedChannelIndex(),
              t = this.GetGroup().textRoomList,
              n = e >= t.length - 1 ? 0 : e + 1;
            this.SelectChat(t[n].GetRoomID());
          }
          SelectPreviousChannel() {
            const e = this.GetSelectedChannelIndex(),
              t = this.GetGroup().textRoomList,
              n = e <= 0 ? t.length - 1 : e - 1;
            this.SelectChat(t[n].GetRoomID());
          }
          GetSelectedChannelIndex() {
            const e = this.GetSelectedChatView().chat.GetRoomID();
            return this.GetGroup().textRoomList.findIndex(
              (t) => t.GetRoomID() === e,
            );
          }
          GetChatViewForRoom(e) {
            let t = e.GetRoomID(),
              n = this.m_mapChatViews.get(t);
            return (
              n
                ? this.LOG(`reusing chat for ${t}`)
                : (n = new s.CF(this.m_tabset, e, this)),
              n
            );
          }
          StartRoomRename(e) {
            this.m_ulRenameChatRoomID = e;
          }
          EndRoomRename() {
            this.m_ulRenameChatRoomID = "";
          }
          IsRoomRenameActive(e) {
            return (
              "" != this.m_ulRenameChatRoomID && this.m_ulRenameChatRoomID == e
            );
          }
          GetRenameRoomID() {
            return this.m_ulRenameChatRoomID;
          }
          OnTabClosed() {
            this.m_disposeActiveVoice && this.m_disposeActiveVoice(),
              this.m_disposeChatRooms && this.m_disposeChatRooms(),
              this.m_VirtualizedMemberList &&
                _.xm.ChatStore.UnregisterVirtualizedMemberListView(
                  this.m_VirtualizedMemberList,
                ),
              this.ClosePopoverChat(),
              this.GetSelectedChatView().OnViewClosed(),
              _.xm.ChatStore.DecRefActiveChatRoomGroup(
                this.GetGroup().GetGroupID(),
              );
          }
          IsVoiceActive() {
            return (
              _.xm.ChatStore.VoiceChat.GetActiveChatRoomGroupID() ==
              this.m_group.GetGroupID()
            );
          }
          IsTabForChat(e) {
            if (!(e instanceof l.d)) return !1;
            let t = e;
            return !!this.m_group.GetChatRoom(t.GetRoomID());
          }
          GetUnreadMessageCount() {
            return this.m_group.hasUnreadChatMessage ? 1 : 0;
          }
          UpdateMemberSearch(e) {
            (this.m_bMemberSearchActive && this.m_strMemberSearchString == e) ||
              ((this.m_bMemberSearchActive = !0),
              (this.m_strMemberSearchString = e || ""),
              e
                ? this.SearchMembers(e, 200).then(
                    (e) => {
                      (this.m_rgSearchResults = e), (this.m_bSearchError = !1);
                    },
                    (e) => {
                      console.warn(`Failed to filter members: ${e}`),
                        (this.m_bSearchError = !0);
                    },
                  )
                : (this.m_rgSearchResults = void 0));
          }
          ClearMemberSearch() {
            (this.m_bMemberSearchActive = !1),
              (this.m_strMemberSearchString = ""),
              (this.m_rgSearchResults = void 0);
          }
          IsMemberSearchActive() {
            return this.m_bMemberSearchActive;
          }
          GetMemberSearch() {
            return this.m_strMemberSearchString;
          }
          get normalizedMemberSearch() {
            return this.m_strMemberSearchString.trim().toLocaleLowerCase();
          }
          get isMemberListExpanded() {
            if (this.m_bMemberSearchActive) return !0;
            if (void 0 === this.m_bMemberListCollapsedOverride) {
              const e = this.GetGroup();
              return !_.xm.ChatStore.ChatRoomGroupDisplayPrefs.GetChatRoomDisplayPref(
                e.GetGroupID(),
                "bMemberListCollapsed",
              );
            }
            return !this.m_bMemberListCollapsedOverride;
          }
          get isChannelListCollapsed() {
            if (void 0 === this.m_bChannelListCollapsedOverride) {
              const e = this.GetGroup();
              return _.xm.ChatStore.ChatRoomGroupDisplayPrefs.GetChatRoomDisplayPref(
                e.GetGroupID(),
                "bChannelListCollapsed",
              );
            }
            return this.m_bChannelListCollapsedOverride;
          }
          GetTabName() {
            return this.m_group.name;
          }
          GetUniqueID() {
            return this.m_group.unique_id;
          }
          OnTabFocus() {
            let e = this.GetActiveChatView();
            e && e.OnFocus();
          }
          InternalOnTabActivate() {
            let e = this.GetActiveChatView();
            e && e.OnActivate();
          }
          OnTabDeactivate() {
            let e = this.GetActiveChatView();
            e && e.OnDeactivate();
          }
          IsChatRoom() {
            return !0;
          }
          GetChatView() {
            return this.GetActiveChatView();
          }
          GetMemberCountTotal() {
            return this.m_group.BIsMemberListVirtualized()
              ? this.GetVirtualizedMemberListView().GetMemberCountTotal()
              : this.m_group.memberCountTotal;
          }
          GetMemberCountOnline() {
            return this.m_group.BIsMemberListVirtualized()
              ? this.GetVirtualizedMemberListView().GetMemberCountOnline()
              : this.m_group.memberCountOnline;
          }
          GetMemberCountInGame() {
            return this.m_group.BIsMemberListVirtualized()
              ? this.GetVirtualizedMemberListView().GetMemberCountInGame()
              : this.m_group.memberCountInGame;
          }
          GetVirtualizedMemberListView() {
            return (
              this.m_VirtualizedMemberList ||
                ((this.m_VirtualizedMemberList = new S(
                  this.m_group.GetGroupID(),
                )),
                _.xm.ChatStore.RegisterVirtualizedMemberListView(
                  this.m_VirtualizedMemberList,
                )),
              this.m_VirtualizedMemberList
            );
          }
          async SearchMembers(e, t) {
            return this.m_group.BIsMemberListVirtualized()
              ? this.GetVirtualizedMemberListView().PerformSearch(
                  this.m_group,
                  "1",
                  e,
                )
              : this.m_group.SearchMembers(e, t);
          }
          BIsMemberNameAmbiguous(e) {
            if (this.m_group.BIsMemberListVirtualized()) return !0;
            return this.m_group.SearchMembers(e, 2, !0).length >= 2;
          }
          ProcessMentions(e) {
            e.replace(/＠/g, "@");
            let t = e.indexOf("@");
            for (; -1 !== t; ) {
              let n,
                i,
                o,
                r = e.indexOf("@", t + 1),
                a = e.indexOf(" ", t + 1),
                s = Math.min(-1 === r ? e.length : r, -1 === a ? e.length : a),
                l = e.substr(t + 1, s - t - 1).toLocaleLowerCase();
              o = this.m_group.BIsMemberListVirtualized()
                ? this.GetVirtualizedMemberListView().GetAllKnownPersonas()
                : this.m_group.memberList.member_list_unsorted;
              for (let r of o) {
                let o = (0, v.js)(r.player_name_normalized),
                  a = o + "#" + r.accountid.toString(36);
                if (a.startsWith(l)) {
                  let s,
                    c = a.length === l.length,
                    m = c || o.length === l.length;
                  (m || c) && (s = l.length),
                    !c &&
                      e.length - t - 1 >= a.length &&
                      e.substr(t + 1, a.length).toLocaleLowerCase() === a &&
                      ((m = c = !0), (s = a.length)),
                    !m &&
                      e.length - t - 1 >= o.length &&
                      e.substr(t + 1, o.length).toLocaleLowerCase() === o &&
                      (s = o.length),
                    s && (void 0 === i || s >= i) && ((n = r), (i = s));
                }
              }
              let c,
                m,
                d,
                u = !1;
              if (
                (this.m_group.BCanIMentionAll() &&
                  (u =
                    "online" == l ||
                    "online#0" == l ||
                    "all" == l ||
                    "all#0" == l),
                u && (void 0 === i || i <= l.length))
              ) {
                let e = l;
                -1 !== l.indexOf("#") && (e = l.substr(0, l.indexOf("#"))),
                  (c = e),
                  (m = e),
                  (d = l.length),
                  "online" == c && (c = "here");
              } else
                n &&
                  void 0 !== i &&
                  ((c = "" + n.accountid),
                  (m = n.persona.m_strPlayerName),
                  (d = i));
              if (m && void 0 !== d) {
                let n = e.substr(0, t),
                  i = e.substr(t + 1 + d),
                  o = `[mention=${c}]@${(0, v.js)(m)}[/mention]`;
                r = (e = n + o + i).indexOf("@", n.length + o.length);
              }
              t = r;
            }
            return e;
          }
        }
        (0, i.Cg)([m.sH], E.prototype, "m_selectedChatView", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_popoverChatView", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_bShowSettingsDialog", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_ulRenameChatRoomID", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_bShowBroadcast", void 0),
          (0, i.Cg)(
            [m.sH],
            E.prototype,
            "m_bShowVerticalBroadcastChat",
            void 0,
          ),
          (0, i.Cg)([m.sH], E.prototype, "m_strLocalBroadcastId", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_bChatHidden", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_bShowGlobalChat", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_bMemberSearchActive", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_strMemberSearchString", void 0),
          (0, i.Cg)([m.sH.ref], E.prototype, "m_rgSearchResults", void 0),
          (0, i.Cg)([m.sH], E.prototype, "m_bSearchError", void 0),
          (0, i.Cg)(
            [m.sH],
            E.prototype,
            "m_bMemberListCollapsedOverride",
            void 0,
          ),
          (0, i.Cg)(
            [m.sH],
            E.prototype,
            "m_bChannelListCollapsedOverride",
            void 0,
          ),
          (0, i.Cg)([m.XI], E.prototype, "ShowBroadcast", null),
          (0, i.Cg)([m.XI.bound], E.prototype, "HideBroadcast", null),
          (0, i.Cg)(
            [m.XI.bound],
            E.prototype,
            "SetVerticalBroadcastChat",
            null,
          ),
          (0, i.Cg)(
            [m.XI],
            E.prototype,
            "ToggleTheaterModeBroadcastChat",
            null,
          ),
          (0, i.Cg)([m.XI], E.prototype, "SetChatHidden", null),
          (0, i.Cg)([m.XI], E.prototype, "SetGlobalBroadcastChatShown", null),
          (0, i.Cg)([m.XI], E.prototype, "SetLocalBroadcastId", null),
          (0, i.Cg)([m.XI], E.prototype, "SetMemberListCollapsed", null),
          (0, i.Cg)([m.XI], E.prototype, "SetChannelListCollapsed", null),
          (0, i.Cg)([m.XI], E.prototype, "ClosePopoverChat", null),
          (0, i.Cg)([m.XI], E.prototype, "SelectChat", null),
          (0, i.Cg)([m.XI], E.prototype, "SelectNextChannel", null),
          (0, i.Cg)([m.XI], E.prototype, "SelectPreviousChannel", null),
          (0, i.Cg)([m.XI], E.prototype, "StartRoomRename", null),
          (0, i.Cg)([m.XI], E.prototype, "EndRoomRename", null),
          (0, i.Cg)([m.XI], E.prototype, "OnTabClosed", null),
          (0, i.Cg)([m.XI], E.prototype, "UpdateMemberSearch", null),
          (0, i.Cg)([m.XI], E.prototype, "ClearMemberSearch", null),
          (0, i.Cg)([m.EW], E.prototype, "isMemberListExpanded", null),
          (0, i.Cg)([m.EW], E.prototype, "isChannelListCollapsed", null);
        class D {
          constructor() {
            (0, m.Gn)(this);
          }
          loadingState = "pending";
          rgBans = void 0;
        }
        (0, i.Cg)([m.sH], D.prototype, "loadingState", void 0),
          (0, i.Cg)([m.sH], D.prototype, "rgBans", void 0);
        const A = {
            bMemberListCollapsed: void 0,
            bChannelListCollapsed: void 0,
          },
          T = "ChatRoomGroupDisplayPrefs";
        class M {
          constructor() {
            (0, m.Gn)(this);
          }
          m_SettingsStore;
          m_mapDisplayPrefs = m.sH.map();
          Init(e) {
            (this.m_SettingsStore = e),
              this.m_SettingsStore
                .GetObjectFromLocalStorageWhenReady(T)
                .then((e) => {
                  this.m_mapDisplayPrefs.clear();
                  for (let t in e.chatRoomGroups) {
                    const n = e.chatRoomGroups[t];
                    "object" == typeof n &&
                      (("boolean" != typeof n.bMemberListCollapsed &&
                        "boolean" != typeof n.bChannelListCollapsed) ||
                        this.m_mapDisplayPrefs.set(t, e.chatRoomGroups[t]));
                  }
                });
          }
          GetChatRoomDisplayPref(e, t) {
            return (this.m_mapDisplayPrefs.get(e) || A)[t];
          }
          ToggleChatRoomDisplayPref(e, t) {
            let n = this.GetChatRoomDisplayPref(e, t);
            this.SetChatRoomDisplayPref(e, t, !n);
          }
          SetChatRoomDisplayPref(e, t, n) {
            let i = this.m_mapDisplayPrefs.get(e);
            (i && i[t] === n) ||
              (i ||
                (this.m_mapDisplayPrefs.set(e, Object.assign({}, A)),
                (i = this.m_mapDisplayPrefs.get(e))),
              (i[t] = n),
              this.WritePrefs());
          }
          WritePrefs() {
            this.m_SettingsStore.StoreObjectInLocalStorage(T, {
              chatRoomGroups: Object.fromEntries(this.m_mapDisplayPrefs),
            });
          }
          FillInChatUsabilityMetrics(e) {
            let t = Array.from(this.m_mapDisplayPrefs.values());
            e
              .ui_state()
              .set_group_chat_left_col_collapsed(
                o.$D(t, (e) => e.bChannelListCollapsed),
              ),
              e
                .ui_state()
                .set_group_chat_right_col_collapsed(
                  o.$D(t, (e) => e.bMemberListCollapsed),
                );
          }
        }
        (0, i.Cg)([m.XI], M.prototype, "SetChatRoomDisplayPref", null);
        class R {
          m_mapAccountToExtra = m.sH.map();
          m_bMemberDataVirtualized = !1;
          constructor() {
            (0, m.Gn)(this);
          }
          GetCurrentMemberSet() {
            let e = new Set();
            return (
              this.m_mapAccountToExtra.forEach((t, n) => {
                e.add(n);
              }),
              e
            );
          }
          SetMemberDataVirtualized(e) {
            this.m_bMemberDataVirtualized = e;
          }
          get unfiltered_count() {
            return this.m_mapAccountToExtra.size;
          }
          get member_counts() {
            let e = 0,
              t = 0;
            for (let n of this.member_list_unsorted)
              n.persona.is_online && (e++, n.persona.is_ingame && t++);
            return { online: e, ingame: t };
          }
          Clear() {
            this.m_mapAccountToExtra.clear(),
              (this.m_bMemberDataVirtualized = !1);
          }
          AddMember(e, t = void 0) {
            this.HasMember(e) || this.m_mapAccountToExtra.set(e, t);
          }
          RemoveMember(e) {
            this.HasMember(e) && this.m_mapAccountToExtra.delete(e);
          }
          GetExtra(e) {
            return this.m_mapAccountToExtra.get(e);
          }
          HasMember(e) {
            return this.m_mapAccountToExtra.has(e);
          }
          get member_list() {
            let e = this.member_list_unsorted.slice();
            return e.sort(p.$c.DefaultFriendSortComparator), e;
          }
          get member_list_unsorted() {
            (0, f.w)(
              !this.m_bMemberDataVirtualized,
              "Shouldn't be accessing member_list when virtualized",
            );
            let e = [];
            return (
              this.m_bMemberDataVirtualized ||
                this.m_mapAccountToExtra.forEach((t, n) => {
                  e.push(_.xm.FriendStore.GetPlayer(n));
                }),
              e
            );
          }
        }
        (0, i.Cg)([m.EW], R.prototype, "unfiltered_count", null),
          (0, i.Cg)([m.EW], R.prototype, "member_counts", null),
          (0, i.Cg)([m.XI], R.prototype, "Clear", null),
          (0, i.Cg)([m.XI], R.prototype, "AddMember", null),
          (0, i.Cg)([m.XI], R.prototype, "RemoveMember", null),
          (0, i.Cg)([m.EW], R.prototype, "member_list", null),
          (0, i.Cg)([m.EW], R.prototype, "member_list_unsorted", null);
      },
      93715: (e, t, n) => {
        "use strict";
        n.d(t, { VT: () => W, $c: () => V, uQ: () => z, YS: () => N });
        var i = n(34629),
          o = n(78116),
          r = n(45518),
          a = n(52434),
          s = n(67033),
          l = n(45112),
          c = n(77631),
          m = n(48325);
        class d extends a.Z {
          UpdateFromMessage(e, t) {
            if (
              (0 != (1 & e) &&
                ((this.m_bStatusInitialized = !0),
                (this.m_ePersonaState = t.persona_state() || 0),
                0 != this.m_ePersonaState
                  ? ((this.m_unGamePlayedAppID = t.game_played_app_id() || 0),
                    (this.m_gameid = t.gameid() || "0"),
                    (this.m_strGameExtraInfo = t.game_name() || ""),
                    (this.m_unGameServerIP = t.game_server_ip() || 0),
                    (this.m_unGameServerPort = t.game_server_port() || 0),
                    (this.m_game_lobby_id = t.game_lobby_id() || ""))
                  : this.Reset()),
              0 != (2 & e))
            ) {
              this.m_bNameInitialized = !0;
              let e = t.player_name() || "";
              this.m_strPlayerName = e;
            }
            if (
              (0 != (64 & e) &&
                (this.m_rtLastSeenOnline =
                  t.last_seen_online() || t.last_logoff() || 0),
              0 != (16 & e))
            ) {
              let e = t.avatar_hash(),
                n = !0;
              if (e) {
                for (let t = 0; t < e.length && n; t++) n = !e[t];
                this.m_strAvatarHash = n ? m.d : (0, s.Kx)(e);
              }
            }
            if (
              (void 0 !== t.persona_state_flags() &&
                (this.m_unPersonaStateFlags = t.persona_state_flags()),
              void 0 !== t.on_steam_deck() &&
                (this.m_bOnSteamDeck = t.on_steam_deck()),
              0 != (4096 & e))
            ) {
              this.m_mapRichPresence.clear();
              for (let e of t.rich_presence())
                this.m_mapRichPresence.set(e.key().toLowerCase(), e.value());
            }
            if (
              (0 != (8192 & e) && (this.m_broadcastId = t.broadcast_id()),
              0 != (16384 & e))
            ) {
              let e = c.b
                .InitFromAccountID(t.watching_broadcast_accountid())
                .ConvertTo64BitString();
              e && l.td.stream[e]
                ? ((this.m_broadcastAccountId =
                    t.watching_broadcast_accountid()),
                  (this.m_broadcastAppId = t.watching_broadcast_appid()),
                  (this.m_broadcastViewerCount =
                    t.watching_broadcast_viewers()),
                  (this.m_strBroadcastTitle = t.watching_broadcast_title()))
                : ((this.m_broadcastAccountId = 0),
                  (this.m_broadcastAppId = 0),
                  (this.m_broadcastViewerCount = 0),
                  (this.m_strBroadcastTitle = ""));
            }
            (this.m_bCommunityBanned = t.is_community_banned()),
              this.m_bNameInitialized &&
                this.m_bStatusInitialized &&
                (this.m_bInitialized = !0),
              void 0 !== t.player_name_pending_review() &&
                (this.m_bPlayerNamePending = t.player_name_pending_review()),
              void 0 !== t.avatar_pending_review() &&
                (this.m_bAvatarPending = t.avatar_pending_review());
          }
        }
        var u = n(94325),
          h = n(361),
          p = n(50929),
          _ = n(15227),
          g = n(50577),
          C = n(96558),
          f = n(28776),
          S = n(81172),
          v = n(38575),
          b = n(58743),
          I = n(89193),
          w = n(77765);
        class y {
          m_bInitialized = !1;
          m_bGotInitialState = !1;
          m_steamid;
          m_eClanRelationship = void 0;
          m_strClanName = "";
          m_strClanTag = "";
          m_strAvatarHash = a.dV;
          m_eClanAccountFlags = 0;
          m_unOGGAppID;
          m_ulChatRoomGroupID = void 0;
          m_cMemberCount = 0;
          m_cUsersOnline = 0;
          m_cUsersInGame = 0;
          m_cChatRoomMembers = 0;
          m_bChatRoomPrivate = void 0;
          m_bPersonaStateDesired = !1;
          m_bPersonaStateLoadRequested = !1;
          constructor(e, t) {
            (0, I.Gn)(this),
              (this.m_steamid = e),
              (this.m_eClanRelationship = t);
          }
          BNeedsToLoadPersonaStateData() {
            return !this.m_bInitialized && !this.m_bPersonaStateLoadRequested;
          }
          BPersonaStateDesired() {
            return this.m_bPersonaStateDesired;
          }
          SetPersonaStateDesired() {
            this.m_bPersonaStateDesired = !0;
          }
          SetPersonaStateLoadRequested() {
            this.m_bPersonaStateLoadRequested = !0;
          }
          get name() {
            return this.m_bInitialized ? this.m_strClanName : "";
          }
          get steamid() {
            return this.m_steamid;
          }
          get clanid() {
            return this.m_steamid.GetAccountID();
          }
          get member_count() {
            return this.m_cMemberCount;
          }
          get users_online() {
            return this.m_cUsersOnline;
          }
          get users_ingame() {
            return this.m_cUsersInGame;
          }
          get count_chat_room_members() {
            return this.m_cChatRoomMembers;
          }
          get chat_room_private() {
            return this.m_bChatRoomPrivate;
          }
          BIsMember() {
            return 3 == this.m_eClanRelationship;
          }
          BIsInvite() {
            return 2 == this.m_eClanRelationship;
          }
          SetRelationship(e) {
            this.m_eClanRelationship = e;
          }
          BIsOGG() {
            return (
              !!this.m_unOGGAppID ||
              (this.m_bGotInitialState && 0 != (16 & this.m_eClanAccountFlags))
            );
          }
          GetOGGAppID() {
            return this.m_unOGGAppID;
          }
          BMatchesSearchString(e) {
            return -1 !== this.m_strClanName.toLocaleLowerCase().indexOf(e);
          }
          get avatar_url() {
            return (0, a.tp)(this.m_strAvatarHash);
          }
          get avatar_url_medium() {
            return this.BIsOGG()
              ? this.avatar_url
              : (0, a.tp)(this.m_strAvatarHash, "medium");
          }
          get avatar_url_full() {
            return this.BIsOGG()
              ? this.avatar_url
              : (0, a.tp)(this.m_strAvatarHash, "full");
          }
          OpenChatDialog(e, t = !0) {
            return this.GetChatRoomGroupID().then(
              (n) => (b.xm.ChatStore.JoinAndShowChatRoomGroup(e, n, t), n),
            );
          }
          ReadPersonaStateUpdate(e, t) {
            if (
              ((this.m_bInitialized = !0),
              0 != (2 & e) && (this.m_strClanName = t.player_name()),
              0 != (1024 & e) &&
                ((this.m_strClanTag = t.clan_tag()),
                t.clan_data().chat_group_id() &&
                  (this.m_ulChatRoomGroupID = t.clan_data().chat_group_id()),
                t.clan_data().ogg_app_id() &&
                  (this.m_unOGGAppID = t.clan_data().ogg_app_id())),
              0 != (16 & e))
            ) {
              let e = t.avatar_hash(),
                n = !0;
              if (e) {
                for (let t = 0; t < e.length && n; t++) n = !e[t];
                this.m_strAvatarHash = n ? a.dV : (0, s.Kx)(e);
              }
            }
          }
          ReadStateUpdate(e) {
            if (
              ((this.m_bGotInitialState = !0),
              (this.m_eClanAccountFlags = e.clan_account_flags()),
              (this.m_bChatRoomPrivate = e.chat_room_private()),
              void 0 !== e.user_counts() && e.user_counts().members())
            ) {
              let t = e.user_counts();
              (this.m_cMemberCount = t.members()),
                (this.m_cUsersOnline = t.online()),
                (this.m_cUsersInGame = t.in_game()),
                (this.m_cChatRoomMembers = t.chat_room_members());
            }
          }
          GetChatGroupIDIfLoaded() {
            return this.m_ulChatRoomGroupID;
          }
          GetChatRoomGroupID() {
            if (this.m_ulChatRoomGroupID)
              return Promise.resolve(this.m_ulChatRoomGroupID);
            {
              let e = r.w.Init(u.AF);
              return (
                e.Body().set_steamid(this.steamid.ConvertTo64BitString()),
                e.Body().set_autocreate(!0),
                u.WA.GetClanChatRoomInfo(
                  b.xm.CMInterface.GetServiceTransport(),
                  e,
                ).then((e) =>
                  1 == e.GetEResult() &&
                  e.Body().chat_group_summary().chat_group_id()
                    ? ((this.m_ulChatRoomGroupID = e
                        .Body()
                        .chat_group_summary()
                        .chat_group_id()),
                      this.m_ulChatRoomGroupID)
                    : null,
                )
              );
            }
          }
          SetChatGroupID(e) {
            this.m_ulChatRoomGroupID = e;
          }
        }
        (0, i.Cg)([I.sH], y.prototype, "m_bInitialized", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_bGotInitialState", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_eClanRelationship", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_strAvatarHash", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_ulChatRoomGroupID", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_cMemberCount", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_cUsersOnline", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_cUsersInGame", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_cChatRoomMembers", void 0),
          (0, i.Cg)([I.sH], y.prototype, "m_bChatRoomPrivate", void 0),
          (0, i.Cg)([I.EW], y.prototype, "avatar_url", null),
          (0, i.Cg)([I.EW], y.prototype, "avatar_url_medium", null),
          (0, i.Cg)([I.EW], y.prototype, "avatar_url_full", null);
        class E {
          m_CMInterface;
          m_FriendStore;
          m_mapClans = I.sH.map();
          m_iIntervalLoadClanData;
          constructor(e) {
            (0, I.Gn)(this), (this.m_FriendStore = e);
          }
          Init(e) {
            (this.m_CMInterface = e),
              this.m_CMInterface.AddOnLogonCallback(this.OnLogOn.bind(this)),
              this.m_CMInterface.messageHandlers.RegisterEMessageAction(
                822,
                p.Fk,
                (e) => {
                  let t = new c.b(e.Body().steamid_clan());
                  this.GetOrCreateClan(t).ReadStateUpdate(e.Body());
                },
              );
          }
          OnLogOn() {}
          get clan_invite_count() {
            let e = 0;
            return (
              this.m_mapClans.forEach((t) => {
                t.BIsInvite() && e++;
              }),
              e
            );
          }
          get clan_invites() {
            let e = [];
            return (
              this.m_mapClans.forEach((t) => {
                t.m_bInitialized && t.BIsInvite() && e.push(t);
              }),
              e.sort((e, t) => e.name.localeCompare(t.name)),
              e
            );
          }
          GetClan(e) {
            let t;
            e instanceof c.b
              ? ((0, w.w)(
                  e.BIsClanAccount(),
                  "expected clan steamid in GetClan()",
                ),
                (t = e.GetAccountID()))
              : (t = e);
            const n = this.m_mapClans.get(t);
            return n && this.LoadClanPersonaIfNeeded(n), n;
          }
          JoinClanChatRoom(e, t) {
            let n = this.GetOrCreateClan(t);
            n.OpenChatDialog(e, !0), this.LoadClanPersonaIfNeeded(n);
          }
          ClearClanMembershipData() {
            this.m_mapClans.forEach((e) => {
              e.SetRelationship(0);
            });
          }
          SetClanChatGroupID(e, t) {
            this.GetOrCreateClan(e).SetChatGroupID(t);
          }
          LoadClanPersonaIfNeeded(e) {
            e.SetPersonaStateDesired(),
              e.BNeedsToLoadPersonaStateData() &&
                this.ScheduleLoadMissingClanPersonas();
          }
          GetOrCreateClan(e, t) {
            let n;
            n = e instanceof c.b ? e : c.b.InitFromClanID(e);
            let i = this.m_mapClans.get(n.GetAccountID());
            return (
              i
                ? void 0 !== t && i.SetRelationship(t)
                : ((i = new y(n, t || 0)),
                  this.m_mapClans.set(n.GetAccountID(), i)),
              i
            );
          }
          OnClanRelationshipChanged(e, t) {
            this.GetOrCreateClan(e, t);
          }
          RespondToClanInvite(e, t) {
            let n = r.w.Init(v.Ek);
            return (
              n.Body().set_steamid(e.ConvertTo64BitString()),
              n.Body().set_accept(t),
              v.oH
                .RespondToClanInvite(
                  this.m_CMInterface.GetServiceTransport(),
                  n,
                )
                .then((e) => 1 == e.GetEResult())
            );
          }
          EnsureInitialStateForClanInvites() {
            let e = r.w.Init(S.d_, 5554);
            this.clan_invites.forEach((t) => {
              t.m_bGotInitialState ||
                e.Body().add_steamid_clans(t.steamid.ConvertTo64BitString());
            }),
              e.Body().steamid_clans().length <= 0 ||
                this.m_CMInterface.Send(e);
          }
          ScheduleLoadMissingClanPersonas() {
            this.m_iIntervalLoadClanData ||
              (this.m_iIntervalLoadClanData = SetBackgroundTimeout(
                this.LoadMissingClanPersonas.bind(this),
                100,
              ));
          }
          LoadMissingClanPersonas() {
            this.m_iIntervalLoadClanData &&
              (ClearBackgroundTimeout(this.m_iIntervalLoadClanData),
              (this.m_iIntervalLoadClanData = void 0));
            let e = r.w.Init(h.nz, 815);
            e.Body().set_persona_state_requested(1042),
              this.m_mapClans.forEach((t) => {
                t.BPersonaStateDesired() &&
                  t.BNeedsToLoadPersonaStateData() &&
                  (e.Body().add_friends(t.steamid.ConvertTo64BitString()),
                  t.SetPersonaStateLoadRequested());
              }),
              e.Body().friends().length && this.m_CMInterface.Send(e);
          }
          OnClanPersonaStateUpdate(e, t) {
            let n = new c.b(t.friendid());
            this.GetOrCreateClan(n).ReadPersonaStateUpdate(e, t);
          }
        }
        (0, i.Cg)([I.EW], E.prototype, "clan_invite_count", null),
          (0, i.Cg)([I.EW], E.prototype, "clan_invites", null);
        var D = n(1748),
          A = n(2856),
          T = n(56132),
          M = n(9907),
          R = n(7105),
          k = n(74002),
          L = n(82924),
          G = n(83957),
          F = n.n(G),
          P = n(10672);
        class B {
          m_numStartingTokens = 0;
          m_numTokensPerMillisecond = 0;
          m_numIntervalsPerMillisecond = 0;
          m_TimeLastChecked = 0;
          m_flTokens = 0;
          constructor(e, t, n) {
            (this.m_numIntervalsPerMillisecond = 0.001 / Math.max(1, n)),
              (this.m_numStartingTokens = e),
              (this.m_numTokensPerMillisecond =
                Math.max(0, t) * this.m_numIntervalsPerMillisecond),
              this.Reset();
          }
          Reset() {
            (this.m_TimeLastChecked = performance.now()),
              (this.m_flTokens = this.m_numStartingTokens);
          }
          AddTokens() {
            let e = performance.now(),
              t = (e - this.m_TimeLastChecked) * this.m_numTokensPerMillisecond;
            (this.m_flTokens = Math.min(
              this.m_flTokens + t,
              this.m_numStartingTokens,
            )),
              (this.m_TimeLastChecked = e);
          }
          BRemoveToken() {
            return (
              this.AddTokens(),
              !(this.m_flTokens < 1) && ((this.m_flTokens -= 1), !0)
            );
          }
        }
        var x = n(42674),
          O = n(93637);
        class N {
          Notifications_ShowInGame = 0;
          Notifications_ShowOnline = 0;
          Notifications_ShowMessage = 0;
          Notifications_SendMobile = 0;
          Sounds_PlayInGame = 0;
          Sounds_PlayOnline = 0;
          Sounds_PlayMessage = 0;
        }
        class V {
          m_persona = void 0;
          m_unAccountID;
          m_eFriendRelationship = 0;
          m_bPersonaStateLoadRequested = !1;
          m_bPersonaNameHistoryLoaded = void 0;
          m_rgPersonaNameHistory = [];
          m_strPlayerNameNormalized;
          m_strPlayerNicknameNormalized = void 0;
          m_strGameNameNormalized;
          m_strNickname = void 0;
          m_NotificationSettings = void 0;
          m_bLoadedEquippedProfileItems = !1;
          m_bRequestedEquippedProfileItems = !1;
          m_equippedProfileItems = {};
          m_nAppIDLastSeenPlaying = 0;
          m_dtLastSeenPlaying;
          m_miniProfileDataLoader;
          constructor(e, t = null, n = null) {
            (0, I.Gn)(this),
              (this.m_unAccountID = e),
              (this.m_persona = new d(c.b.InitFromAccountID(e))),
              0 == e &&
                ((0, w.w)(!1, "unset accountid"),
                (this.m_persona.m_bInitialized = !0)),
              t && this.m_persona.UpdateFromMessage(n, t);
          }
          LoadIfNecessary() {
            this.m_persona.m_bInitialized ||
              this.m_bPersonaStateLoadRequested ||
              ((this.m_bPersonaStateLoadRequested = !0),
              b.xm.FriendStore.QueueFriendPersonaStateLoad(this));
          }
          ClearStateOnDisconnect() {
            this.m_persona.m_bInitialized &&
              this.m_persona.ClearStateOnDisconnect();
          }
          get is_ready() {
            return (
              !!this.m_persona.m_bNameInitialized &&
              (Object.defineProperty(this, "is_ready", { value: !0 }), !0)
            );
          }
          get persona() {
            return (
              this.LoadIfNecessary(),
              Object.defineProperty(this, "persona", { value: this.m_persona }),
              this.m_persona
            );
          }
          get mutable_persona() {
            return this.m_persona;
          }
          get accountid() {
            return this.m_unAccountID;
          }
          get steamid() {
            return this.m_persona.m_steamid;
          }
          get steamid64() {
            return this.m_persona.m_steamid.ConvertTo64BitString();
          }
          get efriendrelationship() {
            return this.m_eFriendRelationship;
          }
          set efriendrelationship(e) {
            this.m_eFriendRelationship = e;
          }
          get is_friend() {
            return (0, T.S$)(this.m_eFriendRelationship);
          }
          get is_blocked() {
            return (0, T.aP)(this.m_eFriendRelationship);
          }
          GetCommunityProfileURL() {
            return o.TS.COMMUNITY_BASE_URL + "profiles/" + this.steamid64 + "/";
          }
          get has_nickname() {
            return !!this.m_strNickname;
          }
          get nickname() {
            return this.m_strNickname;
          }
          set nickname(e) {
            (this.m_strNickname = e),
              (this.m_strPlayerNicknameNormalized = e
                ? V.NormalizeNameForSearch(e)
                : "");
          }
          get notification_settings() {
            return (
              this.m_NotificationSettings ||
                (this.m_NotificationSettings = new N()),
              this.m_NotificationSettings
            );
          }
          set notification_settings(e) {
            this.m_NotificationSettings = e;
          }
          BShowInGameNotification() {
            return (
              !!b.xm.IsGamepadUIActive() ||
              1 == this.notification_settings.Notifications_ShowInGame ||
              (b.xm.SettingsStore.FriendsSettings.bNotifications_ShowIngame &&
                2 != this.notification_settings.Notifications_ShowInGame)
            );
          }
          BShowMessageNotification() {
            return o.TS.IN_MOBILE
              ? 1 === this.notification_settings.Notifications_SendMobile ||
                  (b.xm.BShowDirectChatNotification() &&
                    2 !== this.notification_settings.Notifications_SendMobile)
              : !!b.xm.IsGamepadUIActive() ||
                  1 === this.notification_settings.Notifications_ShowMessage ||
                  (b.xm.BShowDirectChatNotification() &&
                    2 !== this.notification_settings.Notifications_ShowMessage);
          }
          BShowOnlineNotification() {
            return (
              !!b.xm.IsGamepadUIActive() ||
              1 == this.notification_settings.Notifications_ShowOnline ||
              (b.xm.SettingsStore.FriendsSettings.bNotifications_ShowOnline &&
                2 != this.notification_settings.Notifications_ShowOnline)
            );
          }
          BPlayInGameSound() {
            return (
              !b.xm.IsGamepadUIActive() &&
              (1 == this.notification_settings.Sounds_PlayInGame ||
                (b.xm.SettingsStore.FriendsSettings.bSounds_PlayIngame &&
                  2 != this.notification_settings.Sounds_PlayInGame))
            );
          }
          BPlayMessageSound() {
            return (
              !b.xm.IsGamepadUIActive() &&
              (1 == this.notification_settings.Sounds_PlayMessage ||
                (b.xm.SettingsStore.FriendsSettings.bSounds_PlayMessage &&
                  2 != this.notification_settings.Sounds_PlayMessage))
            );
          }
          BPlayOnlineSound() {
            return (
              !b.xm.IsGamepadUIActive() &&
              (1 == this.notification_settings.Sounds_PlayOnline ||
                (b.xm.SettingsStore.FriendsSettings.bSounds_PlayOnline &&
                  2 != this.notification_settings.Sounds_PlayOnline))
            );
          }
          get display_name() {
            if (this.has_nickname) {
              let e = this.primary_display_name;
              return (
                this.showing_secondary_display_name &&
                  (e += " (" + this.secondary_display_name + ")"),
                e
              );
            }
            return this.persona.m_strPlayerName;
          }
          get primary_display_name() {
            if (this.has_nickname) {
              if (
                !b.xm.SettingsStore.CommunityPreferences.bParenthesizeNicknames
              )
                return this.nickname;
            }
            return this.persona.m_strPlayerName;
          }
          get has_secondary_display_name() {
            return this.has_nickname;
          }
          get showing_secondary_display_name() {
            return (
              !!b.xm.SettingsStore.CommunityPreferences
                .bParenthesizeNicknames && this.has_secondary_display_name
            );
          }
          get secondary_display_name() {
            return b.xm.SettingsStore.CommunityPreferences
              .bParenthesizeNicknames && this.has_nickname
              ? this.nickname
              : this.persona.m_strPlayerName;
          }
          get is_display_name_nickname() {
            return (
              this.has_nickname &&
              !b.xm.SettingsStore.CommunityPreferences.bParenthesizeNicknames
            );
          }
          static NormalizeNameForSearch(e) {
            return e.toLocaleLowerCase();
          }
          get player_name_normalized() {
            if (void 0 === this.m_strPlayerNameNormalized) {
              if (!this.is_ready) return "";
              let e = () => {
                this.m_strPlayerNameNormalized = V.NormalizeNameForSearch(
                  this.m_persona.m_strPlayerName,
                );
              };
              (0, I.fm)(e), void 0 === this.m_strPlayerNameNormalized && e();
            }
            return this.m_strPlayerNameNormalized;
          }
          get current_game_name() {
            return this.m_persona.GetCurrentGameName();
          }
          get current_game_icon_url() {
            return this.m_persona.GetCurrentGameIconURL();
          }
          is_appinfo_ready() {
            return this.m_persona.BIsAppInfoReady();
          }
          get current_game_rich_presence() {
            return this.m_persona.GetCurrentGameRichPresence();
          }
          get game_name_normalized() {
            if (void 0 === this.m_strGameNameNormalized) {
              if (!this.is_ready) return "";
              let e = () => {
                this.m_strGameNameNormalized = V.NormalizeNameForSearch(
                  this.current_game_name,
                );
              };
              (0, I.fm)(e), void 0 === this.m_strGameNameNormalized && e();
            }
            return this.m_strGameNameNormalized;
          }
          MatchSearchString(e) {
            let t = this.player_name_normalized.indexOf(e);
            return -1 !== t
              ? {
                  match: 1,
                  iOffset: t,
                  bFullMatch:
                    0 === t && this.player_name_normalized.length === e.length,
                }
              : this.has_nickname &&
                  ((t = this.m_strPlayerNicknameNormalized.indexOf(e)),
                  -1 !== t)
                ? {
                    match: 2,
                    iOffset: t,
                    bFullMatch:
                      0 === t &&
                      this.m_strPlayerNicknameNormalized.length === e.length,
                  }
                : { match: 0 };
          }
          BMatchesSearchString(e, t) {
            if (-1 !== this.player_name_normalized.indexOf(e)) return !0;
            if (this.has_nickname) {
              if (-1 !== this.m_strPlayerNicknameNormalized.indexOf(e))
                return !0;
            } else if (
              t &&
              this.m_persona.is_ingame &&
              -1 !== this.game_name_normalized.indexOf(e)
            )
              return !0;
            return !1;
          }
          get persona_name_history() {
            if (void 0 === this.m_bPersonaNameHistoryLoaded) {
              let e = r.w.Init(p.rs, 5570);
              e.Body().add_Ids().set_steamid(this.steamid64),
                e.Body().set_id_count(1),
                b.xm.CMInterface.SendMsgAndAwaitResponse(e, p.sZ).then((e) => {
                  if (
                    ((0, w.w)(
                      1 == e.Body().responses().length,
                      "Got an invalid number of responses to CMsgClientAMGetPersonaNameHistory",
                    ),
                    1 != e.Body().responses().length)
                  )
                    return;
                  let t = e.Body().responses()[0];
                  (0, w.w)(
                    t.steamid() == this.steamid64,
                    "Got a response for the wrong user from CMsgClientAMGetPersonaNameHistory",
                  ),
                    t.steamid() == this.steamid64 &&
                      ((0, w.w)(
                        0 == this.m_rgPersonaNameHistory.length,
                        "Got persona name history response for same user twice.",
                      ),
                      (0, I.h5)(() => {
                        for (let e of t.names())
                          this.m_rgPersonaNameHistory.push(e.name());
                        this.m_bPersonaNameHistoryLoaded = !0;
                      }));
                }),
                (this.m_bPersonaNameHistoryLoaded = !1);
            }
            return this.m_rgPersonaNameHistory;
          }
          get persona_name_history_loaded() {
            return !0 === this.m_bPersonaNameHistoryLoaded;
          }
          OpenChatDialog(e) {
            return this.is_blocked
              ? (o.TS.IN_MOBILE
                  ? b.xm.ShowAlert(
                      (0, k.we)("#Friend_Chat_OpenError_Blocked"),
                      (0, k.we)("#Friend_Chat_OpenError_BlockedBody"),
                    )
                  : b.xm.OpenURLInBrowser(this.GetCommunityProfileURL(), e),
                null)
              : b.xm.ShowFriendChatDialog(e, this.m_unAccountID, !0);
          }
          static get FriendSortStatusComparator() {
            let e = b.xm.SettingsStore.BForceAlphabeticFriendSorting();
            return V.FriendSortStatusComparatorInternal.bind(null, e);
          }
          static FriendSortStatusComparatorInternal(e, t, n) {
            let i = t.persona,
              o = n.persona;
            return a.Z.SortStatusComparator(!e, i, o);
          }
          static get DefaultFriendSortComparator() {
            let e = b.xm.SettingsStore.BForceAlphabeticFriendSorting();
            return (t, n) => {
              let i = V.FriendSortStatusComparatorInternal(e, t, n);
              return 0 != i ? i : t.display_name.localeCompare(n.display_name);
            };
          }
          static FriendSortByLastSeenComparator(e, t) {
            let n = e.persona,
              i = t.persona;
            if (!n.is_online && !i.is_online) {
              let e = b.xm.GetServerRTime32() - n.last_seen_online,
                t = b.xm.GetServerRTime32() - i.last_seen_online;
              if (e > t) return 1;
              if (t > e) return -1;
            }
            return e.display_name.localeCompare(t.display_name);
          }
          static FriendSortByFriendOrNotComparator(e, t) {
            return (e.is_friend && !t.is_friend) ||
              (!e.is_friend && t.is_friend)
              ? e.is_friend
                ? -1
                : 1
              : e.display_name.localeCompare(t.display_name);
          }
          get localized_online_status() {
            return this.persona.GetLocalizedOnlineStatus();
          }
          GetBroadcastDescription() {
            if (this.persona.m_strBroadcastTitle)
              return this.persona.m_strBroadcastTitle;
            if (this.persona.m_broadcastAccountId) {
              let e = b.xm.FriendStore.GetPlayer(
                  this.persona.m_broadcastAccountId,
                ),
                t = this.persona.m_broadcastAppId
                  ? b.xm.AppInfoStore.GetAppInfo(this.persona.m_broadcastAppId)
                  : null;
              return t && t.is_valid
                ? (0, k.we)(
                    "#PersonaStateWatchingBroadcast_PlayerGame",
                    e.display_name,
                    t.name,
                  )
                : (0, k.we)(
                    "#PersonaStateWatchingBroadcast_Player",
                    e.display_name,
                  );
            }
            return null;
          }
          async LoadEquippedProfileItems(e = !1) {
            if (
              !b.xm.CMInterface.logged_on ||
              (this.m_bRequestedEquippedProfileItems && !e)
            )
              return;
            this.m_bRequestedEquippedProfileItems = !0;
            let t = r.w.Init(f.aK);
            t.Body().set_steamid(
              this.m_persona.m_steamid.ConvertTo64BitString(),
            );
            let n = await f.xt
              .GetProfileItemsEquipped(
                b.xm.CMInterface.GetServiceTransport(),
                t,
              )
              .catch((e) =>
                console.log("Couldn't get friend equipped items, ", e),
              );
            n && 1 == n.GetEResult()
              ? ((this.m_bLoadedEquippedProfileItems = !0),
                (this.m_equippedProfileItems = n.Body().toObject()),
                this.m_persona.is_golden &&
                  this.m_equippedProfileItems.profile_modifier &&
                  this.m_equippedProfileItems.profile_modifier.appid &&
                  ((this.m_equippedProfileItems.avatar_frame.image_small &&
                    0 !=
                      this.m_equippedProfileItems.avatar_frame.image_small
                        .length) ||
                    this.LoadAndSetGoldenProfileFrame()))
              : ((this.m_bLoadedEquippedProfileItems = !1),
                (this.m_bRequestedEquippedProfileItems = !1));
          }
          async LoadAndSetGoldenProfileFrame() {
            try {
              const e = {
                appid: this.m_equippedProfileItems.profile_modifier.appid,
                origin: self.origin,
              };
              await F()
                .get(`${o.TS.CHAT_BASE_URL}actions/ajaxgetgoldenprofiledata/`, {
                  params: e,
                })
                .then((e) => {
                  const t = e.data;
                  (this.m_equippedProfileItems.avatar_frame.image_small =
                    t.frame),
                    (this.m_equippedProfileItems.avatar_frame.image_large =
                      t.frame);
                });
            } catch (e) {
              let t = (0, P.H)(e);
              console.error(
                `Error when calling ajaxgetgoldenprofiledata: ${t}`,
              );
            }
          }
          BLoadedEquippedItems() {
            return this.m_bLoadedEquippedProfileItems;
          }
          GetEquippedProfileItems() {
            return (
              (0, w.w)(
                this.BLoadedEquippedItems(),
                "Called GetEquippedProfileItems without loading",
              ),
              this.m_equippedProfileItems
            );
          }
          SetLastSeenPlaying(e) {
            (this.m_nAppIDLastSeenPlaying = e),
              (this.m_dtLastSeenPlaying = new Date());
          }
          BWasRecentlyPlayingAppID(e, t = 15) {
            return (
              this.m_nAppIDLastSeenPlaying == e &&
              new Date().getTime() - this.m_dtLastSeenPlaying.getTime() <
                1e3 * t
            );
          }
          get miniProfileData() {
            return (
              this.m_miniProfileDataLoader ||
                (this.m_miniProfileDataLoader = new O.n(this.m_unAccountID)),
              this.m_miniProfileDataLoader
            );
          }
        }
        (0, i.Cg)([I.sH], V.prototype, "m_persona", void 0),
          (0, i.Cg)([I.sH], V.prototype, "m_eFriendRelationship", void 0),
          (0, i.Cg)([I.sH], V.prototype, "m_bPersonaNameHistoryLoaded", void 0),
          (0, i.Cg)([I.sH], V.prototype, "m_rgPersonaNameHistory", void 0),
          (0, i.Cg)(
            [I.sH],
            V.prototype,
            "m_strPlayerNicknameNormalized",
            void 0,
          ),
          (0, i.Cg)([I.sH], V.prototype, "m_strNickname", void 0),
          (0, i.Cg)([I.sH], V.prototype, "m_NotificationSettings", void 0),
          (0, i.Cg)(
            [I.sH],
            V.prototype,
            "m_bLoadedEquippedProfileItems",
            void 0,
          ),
          (0, i.Cg)(
            [I.sH],
            V.prototype,
            "m_bRequestedEquippedProfileItems",
            void 0,
          ),
          (0, i.Cg)([I.sH], V.prototype, "m_equippedProfileItems", void 0),
          (0, i.Cg)([I.EW], V.prototype, "display_name", null),
          (0, i.Cg)([I.EW], V.prototype, "secondary_display_name", null),
          (0, i.Cg)([I.EW], V.prototype, "current_game_name", null),
          (0, i.Cg)([I.EW], V.prototype, "current_game_icon_url", null),
          (0, i.Cg)([I.EW], V.prototype, "current_game_rich_presence", null),
          (0, i.Cg)([I.EW], V.prototype, "persona_name_history", null),
          (0, i.Cg)([I.EW], V.prototype, "persona_name_history_loaded", null),
          (0, i.Cg)([I.EW], V.prototype, "localized_online_status", null);
        const U = "FriendStoreLocalPrefs";
        class H {
          m_CMInterface;
          m_currentMsg = null;
          m_mapLastSeenApp = new Map();
          constructor() {
            (0, I.Gn)(this);
          }
          Init(e) {
            (this.m_CMInterface = e),
              o.TS.IN_MOBILE ||
                SetBackgroundInterval(this.NotifyImpressions, 12e4);
          }
          RecordFriendInGameImpression(e) {
            if (o.TS.IN_MOBILE) return;
            if (e == T.w1 || (e >= T.y4 && e <= T.Iy)) return;
            this.m_currentMsg || (this.m_currentMsg = r.w.Init(g.Oi));
            let t = !0;
            if (this.m_mapLastSeenApp.has(e)) {
              let n = this.m_mapLastSeenApp.get(e);
              t = Date.now() - n > 864e5;
            }
            let n = null;
            if (t)
              this.m_mapLastSeenApp.set(e, Date.now()),
                (n = this.m_currentMsg.Body().add_impressions()),
                n.set_appid(e),
                n.set_type(2),
                n.set_num_impressions(0);
            else {
              for (
                let t = 0;
                t < this.m_currentMsg.Body().impressions().length;
                ++t
              ) {
                let i = this.m_currentMsg.Body().impressions()[t];
                if (i.appid() == e && 1 == i.type()) {
                  n = i;
                  break;
                }
              }
              n ||
                ((n = this.m_currentMsg.Body().add_impressions()),
                n.set_appid(e),
                n.set_type(1),
                n.set_num_impressions(0));
            }
            n.set_num_impressions(n.num_impressions() + 1);
          }
          NotifyImpressions() {
            if (this.m_currentMsg) {
              let e = this.m_currentMsg;
              (this.m_currentMsg = null),
                g.iq.ReportProductImpressionsFromClient(
                  this.m_CMInterface.GetServiceTransport(),
                  e,
                );
            }
          }
        }
        (0, i.Cg)([I.XI.bound], H.prototype, "NotifyImpressions", null);
        class W {
          m_FriendGroupStore = new D.Oz(this);
          m_ClanStore = new E(this);
          m_FavoritesStore = new A.x(this);
          m_self = void 0;
          m_mapPlayerCache = new Map();
          m_mapApprovedNonFriendMessages;
          m_CMInterface;
          m_setFriendsNeedingPersonaStateLoad = new Set();
          m_iIntervalSubscribeToPersonaStateUpdates = 0;
          m_setFriendAccountIDs = new Set();
          m_setIncomingInviteAccountIDs = new Set();
          m_bUserSetPersonaState = !1;
          m_eUserPersonaState = 0;
          m_bIsClientIdle = !1;
          m_FriendStorePrefs = {
            ePersonaState: 1,
            strNonFriendsAllowedToMsg: "",
          };
          m_fnOnReadyToRender;
          m_cFriendPersonaStatesInitialized = 0;
          m_bReadyToRender = !1;
          m_bPerFriendPreferencesLoaded = !1;
          m_bReceivedFriendsList = !1;
          m_bInitialPersonaStatesLoaded = !1;
          m_InitialAppInfoPromises = [];
          m_bInitialAppInfoLoaded = !1;
          m_bParentalLocked = void 0;
          m_eUserPersonaStateParental = 1;
          m_rgPersonaStateChangeCallbacks = new M.lu();
          m_rgPlayerGameChangedCallbacks = new M.lu();
          m_nMissingPersonaStateRetryCount = 0;
          m_nMissingPersonaStateMaxRetries = 5;
          m_FriendInGameNotificationStore = new H();
          m_TokenBucketChangeStatus = new B(200, 1, 10);
          m_vecLastTenChangeStatusReasons = [];
          m_TokenFailureAssertCount = 30;
          constructor() {
            (0, I.Gn)(this);
          }
          Init(e) {
            (this.m_CMInterface = e),
              this.m_FriendGroupStore.Init(e),
              this.m_ClanStore.Init(e),
              this.m_FavoritesStore.Init(e),
              this.m_FriendInGameNotificationStore.Init(e);
            let t = !1;
            return (
              this.m_CMInterface.AddOnLogonCallback(async () => {
                if (t) this.SendPersonaStateToServer(!0, "MoreLogonCallback");
                else {
                  (t = !0),
                    (this.m_self = this.AddPlayerToCache(
                      this.m_CMInterface.steamid.GetAccountID(),
                      1,
                    ));
                  let e = !0;
                  (0, x.Dp)("WebChat.GetSignIntoFriendsOnStart") &&
                    (e = await SteamClient.WebChat.GetSignIntoFriendsOnStart()),
                    b.xm.SettingsStore.GetObjectFromLocalStorage(
                      U,
                      this.m_FriendStorePrefs,
                    ).then((t) => {
                      (this.m_FriendStorePrefs = t),
                        e &&
                          (this.m_bParentalLocked
                            ? (this.m_eUserPersonaStateParental =
                                t.ePersonaState)
                            : ((this.m_eUserPersonaState = t.ePersonaState),
                              (this.m_bUserSetPersonaState = !1),
                              this.SendPersonaStateToServer(
                                !0,
                                "LogonCallback",
                              )));
                    }),
                    this.m_bReadyToRender ||
                      SetBackgroundTimeout(
                        this.ForceReadyToRender.bind(this),
                        1e3,
                      );
                }
                this.GetFriendsList(), this.SetReconnectedSinceLastIdleUpdate();
              }),
              this.m_CMInterface.AddOnDisconnectCallback(() => {
                this.SetPersonasOffline(!0);
              }, 102),
              this.m_CMInterface.AddOnDisconnectCallback(() => {
                this.SetPersonasOffline(!1);
              }, 47),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                f.QA.NotifyPerFriendPreferencesChangedHandler,
                (e) => {
                  let t = this.GetPlayer(e.Body().accountid());
                  if (t) {
                    let n = e.Body().preferences();
                    t.nickname = n.nickname() || void 0;
                    let i = new N();
                    this.FillPerFriendNotificationSettingsFromMessage(i, n),
                      (t.notification_settings = i),
                      this.m_rgPersonaStateChangeCallbacks.Dispatch(t);
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                f.QA.NotifyFriendEquippedProfileItemsChangedHandler,
                (e) => {
                  let t = this.GetPlayer(e.Body().accountid());
                  return (
                    t &&
                      t.BLoadedEquippedItems() &&
                      t.LoadEquippedProfileItems(!0),
                    1
                  );
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterEMessageAction(
                767,
                h.py,
                (e) => {
                  e.Body().bincremental() && this.SetFriendsList(e.Body());
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterEMessageAction(
                766,
                h.XN,
                (e) => {
                  let t = e.Body().status_flags(),
                    n = new Set(),
                    i = new Set();
                  for (let o of e.Body().friends()) {
                    let e = new c.b(o.friendid());
                    if (e.BIsClanAccount()) {
                      this.m_ClanStore.OnClanPersonaStateUpdate(t, o);
                      continue;
                    }
                    if (!e.BIsIndividualAccount()) continue;
                    let r = this.GetPlayerIfCached(e.GetAccountID());
                    r || (r = this.GetPlayer(e.GetAccountID()));
                    let a = r.mutable_persona,
                      s = a.m_ePersonaState,
                      m = a.m_strPlayerName,
                      d = a.m_unGamePlayedAppID,
                      u = a.m_strGameExtraInfo,
                      h = a.is_in_nonsteam_game,
                      p = a.m_broadcastAppId,
                      _ = a.m_bInitialized;
                    a.UpdateFromMessage(t, o),
                      !_ &&
                        a.m_bInitialized &&
                        this.m_setFriendAccountIDs.has(r.accountid) &&
                        this.m_cFriendPersonaStatesInitialized++;
                    let g = 0 != (1 & t);
                    if (e.GetAccountID() == this.self.accountid && g) {
                      let e = !!o.persona_set_by_user(),
                        t = a.m_ePersonaState;
                      this.UpdateUserPersonaStateInternal(
                        t,
                        e,
                        this.m_bIsClientIdle,
                        !0,
                        "RecvFromSrv",
                      ),
                        1 == t &&
                          this.m_bReconnectedSinceLastIdleUpdate &&
                          ((this.m_bReconnectedSinceLastIdleUpdate = !1),
                          (t = this.AdjustPersonaStateForIdleTime(t)),
                          1 != t &&
                            this.UpdateUserPersonaStateInternal(
                              t,
                              !1,
                              this.m_bIsClientIdle,
                              !1,
                              "AdjustForIdle",
                            ));
                    }
                    let C = !1,
                      f = a.m_unGamePlayedAppID,
                      S = a.m_broadcastAppId;
                    l.td.bValid && p && p != l.td.appID && (p = void 0),
                      l.td.bValid && S && S != l.td.appID && (S = void 0);
                    let v = !1;
                    if (f || d || h || a.is_in_nonsteam_game || S || p) {
                      if (
                        ((C = d != f),
                        f && n.add(f),
                        S && n.add(S),
                        a.GetAccountID() != this.m_self.accountid)
                      ) {
                        let t = d,
                          n = f;
                        0 == a.m_ePersonaState && (n = 0),
                          h && (t = D.o_),
                          a.is_in_nonsteam_game && (n = D.o_),
                          !t && p && (t = p),
                          !n && S && (n = S),
                          r.is_friend &&
                            this.m_FriendGroupStore.OnFriendGameChanged(
                              e.GetAccountID(),
                              t,
                              n,
                            ),
                          this.m_rgPlayerGameChangedCallbacks.Dispatch(
                            e.GetAccountID(),
                            t,
                            n,
                          ),
                          (v = !0);
                      }
                    } else
                      a.m_strGameExtraInfo && (C = u != a.m_strGameExtraInfo);
                    (4096 & t || C) &&
                      f &&
                      a.HasCurrentGameRichPresence() &&
                      i.add(f),
                      _ &&
                        r.is_friend &&
                        r.accountid != this.m_self.accountid &&
                        (s != a.m_ePersonaState || C) &&
                        (r.BPlayInGameSound() && C && r.persona.is_ingame
                          ? this.PlayJoinGameSound()
                          : r.BPlayOnlineSound() &&
                            s != a.m_ePersonaState &&
                            1 == a.m_ePersonaState &&
                            this.PlayFriendOnlineSound(),
                        d && !r.persona.is_ingame && r.SetLastSeenPlaying(d),
                        this.OnFriendPersonaStateChanged(
                          r,
                          s,
                          a.m_ePersonaState,
                          C,
                          f && r.BWasRecentlyPlayingAppID(f),
                        )),
                      v ||
                        (a.m_ePersonaState == s &&
                          !C &&
                          a.m_strPlayerName == m) ||
                        this.m_rgPersonaStateChangeCallbacks.Dispatch(r);
                  }
                  const o = b.xm.AppInfoStore.EnsureAppInfoForAppIDs(n);
                  this.m_bInitialPersonaStatesLoaded ||
                    this.m_InitialAppInfoPromises.push(o),
                    !this.m_bInitialPersonaStatesLoaded &&
                      i.size &&
                      (console.log(
                        "Preloading Game Rich Presence for AppIDs:",
                        Array.from(i),
                      ),
                      i.forEach((e) =>
                        b.xm.AppInfoStore.GetRichPresenceLoc(e),
                      ));
                },
              ),
              (0, I.fm)(() => {
                let e =
                  b.xm.ParentalStore.BIsFriendsBlocked() ||
                  b.xm.SettingsStore.IsSteamInTournamentMode();
                this.OnParentalLockChanged(e);
              }),
              this.InitializeIdleTracking(),
              this.m_bReadyToRender
                ? Promise.resolve()
                : new Promise((e, t) => {
                    this.m_fnOnReadyToRender = e;
                  })
            );
          }
          m_cLastUnreadPriorityMessageCountPosted = void 0;
          UpdateUnreadMessagesGlobal() {
            if (
              void 0 !== window.SteamClient &&
              null != window.SteamClient.WebChat &&
              null !=
                window.SteamClient.WebChat.SetNumChatsWithUnreadPriorityMessages
            ) {
              let e =
                b.xm.ChatStore.GetChatsWithUnreadPriorityMessages().length;
              this.m_cLastUnreadPriorityMessageCountPosted !== e &&
                (window.SteamClient.WebChat.SetNumChatsWithUnreadPriorityMessages(
                  e,
                ),
                (this.m_cLastUnreadPriorityMessageCountPosted = e));
            }
          }
          async GetFriendsList() {
            let e = r.w.Init(C.pH),
              t = await C.DF.GetFriendsList(
                this.m_CMInterface.GetServiceTransport(),
                e,
              );
            if (1 == t.GetEResult())
              this.SetFriendsList(t.Body().friendslist());
            else {
              let e = { message: "ShowFriendsErrorRetryDialog" };
              window.parent.postMessage(e, "https://steamloopback.host"),
                (0, w.w)(!1, "GetFriendsList returned", t.GetEResult());
            }
          }
          get not_ready_to_render_reason() {
            if (this.m_bReadyToRender) return "";
            let e = "";
            return (
              this.m_bPerFriendPreferencesLoaded || (e += "P"),
              this.m_bReceivedFriendsList || (e += "F"),
              this.m_bInitialPersonaStatesLoaded || (e += "I"),
              this.m_bInitialAppInfoLoaded || (e += "A"),
              e
            );
          }
          UpdateReadyToRenderState() {
            this.m_bReadyToRender ||
              (this.m_bReceivedFriendsList &&
                this.m_bInitialPersonaStatesLoaded &&
                this.m_bPerFriendPreferencesLoaded &&
                this.m_bInitialAppInfoLoaded &&
                ((this.m_bReadyToRender = !0),
                this.m_fnOnReadyToRender &&
                  (this.m_fnOnReadyToRender(),
                  (this.m_fnOnReadyToRender = void 0))));
          }
          ForceReadyToRender() {
            const e = o.TS.IN_CLIENT ? console.warn : console.error;
            this.m_bReceivedFriendsList
              ? (this.m_bInitialPersonaStatesLoaded ||
                  e(
                    `FriendStore.ForceReadyToRender() - Initial Persona States not ready: ${this.m_cFriendPersonaStatesInitialized} received, friends list: ${this.m_setFriendAccountIDs.size} users`,
                  ),
                this.m_bInitialAppInfoLoaded ||
                  e(
                    "FriendStore.ForceReadyToRender() - Initial app info not ready",
                  ),
                this.m_bPerFriendPreferencesLoaded ||
                  e(
                    "FriendStore.ForceReadyToRender() - Per-friend preferences not ready",
                  ))
              : e(
                  "FriendStore Initialization - Still no friends list from server.  Waiting.",
                ),
              (this.m_bInitialPersonaStatesLoaded = !0),
              (this.m_bPerFriendPreferencesLoaded = !0),
              (this.m_bInitialAppInfoLoaded = !0),
              this.UpdateReadyToRenderState();
          }
          AddPersonaStateChangedCallback(e) {
            return this.m_rgPersonaStateChangeCallbacks.Register(e);
          }
          AddPlayerGameChangedCallback(e) {
            return this.m_rgPlayerGameChangedCallbacks.Register(e);
          }
          BIsInvisibleMode() {
            return 7 == this.m_eUserPersonaState;
          }
          BIsOfflineMode() {
            return 0 == this.m_eUserPersonaState;
          }
          GetUserDoNotDisturb() {
            return b.xm.SettingsStore.FriendsSettings?.bDoNotDisturbMode;
          }
          SetUserDoNotDisturb(e) {
            (b.xm.SettingsStore.FriendsSettings.bDoNotDisturbMode = e),
              b.xm.SettingsStore.BUpdateFriendsSettings(
                b.xm.SettingsStore.FriendsSettings,
              );
          }
          SetUserPersonaState(e, t = !0) {
            this.UpdateUserPersonaStateInternal(
              e,
              t,
              !1,
              !1,
              "SetUserPersonaState",
            );
          }
          EnsureApprovedNonFriendMapReady() {
            if (
              void 0 === this.m_mapApprovedNonFriendMessages &&
              ((this.m_mapApprovedNonFriendMessages = I.sH.map()),
              null != this.m_FriendStorePrefs.strNonFriendsAllowedToMsg &&
                "" != this.m_FriendStorePrefs.strNonFriendsAllowedToMsg)
            ) {
              let e = new Date().getTime(),
                t =
                  this.m_FriendStorePrefs.strNonFriendsAllowedToMsg.split(",");
              for (let n = 0; n < t.length; ++n) {
                let i = t[n].split("=");
                if (2 == i.length) {
                  let t = Number(i[0]),
                    n = Number(i[1]);
                  n > e && this.m_mapApprovedNonFriendMessages.set(t, n);
                }
              }
            }
          }
          BApprovedNonFriendMessages(e) {
            this.EnsureApprovedNonFriendMapReady();
            let t = new Date(),
              n = this.m_mapApprovedNonFriendMessages.get(e);
            return null != n && n > t.getTime();
          }
          SetApprovedNonFriendMessages(e) {
            this.EnsureApprovedNonFriendMapReady();
            let t = new Date().getTime();
            this.m_mapApprovedNonFriendMessages.set(e, t + 864e5);
            let n = "";
            this.m_mapApprovedNonFriendMessages.forEach(function (e, i, o) {
              e > t &&
                (0 != n.length && (n += ","),
                (n += i.toString() + "=" + e.toString()));
            }),
              (this.m_FriendStorePrefs.strNonFriendsAllowedToMsg = n),
              b.xm.SettingsStore.StoreObjectInLocalStorage(
                U,
                this.m_FriendStorePrefs,
              );
          }
          OnParentalLockChanged(e) {
            !this.m_bParentalLocked && e
              ? ((this.m_eUserPersonaStateParental = this.m_eUserPersonaState),
                this.UpdateUserPersonaStateInternal(
                  0,
                  !0,
                  this.m_bIsClientIdle,
                  !1,
                  "ParentalLockChange",
                ),
                (this.m_bParentalLocked = e))
              : this.m_bParentalLocked &&
                !e &&
                ((this.m_bParentalLocked = e),
                this.UpdateUserPersonaStateInternal(
                  this.m_eUserPersonaStateParental,
                  !0,
                  this.m_bIsClientIdle,
                  !1,
                  "ParentalLockChange",
                ));
          }
          UpdateUserPersonaStateInternal(e, t, n, i, o) {
            if (this.m_bParentalLocked) return;
            if (
              (b.xm.UpdatePersonaState(e),
              e == this.m_eUserPersonaState &&
                this.m_bUserSetPersonaState == t &&
                this.m_bIsClientIdle == n)
            )
              return;
            if (
              (this.m_eUserPersonaState != e &&
                0 == e &&
                t &&
                b.xm.SignOutOfFriends(void 0),
              0 == this.m_eUserPersonaState && !t)
            )
              return;
            t || (3 != e && 4 != e) || (n = !0),
              i && this.m_bIsClientIdle != n && (i = !1);
            let r = this.m_eUserPersonaState,
              a = this.m_bUserSetPersonaState,
              s = this.m_bIsClientIdle;
            (this.m_eUserPersonaState = e),
              (this.m_bUserSetPersonaState = t),
              (this.m_bIsClientIdle = n),
              i ||
                (this.SendPersonaStateToServer(!1, o) ||
                  ((this.m_eUserPersonaState = r),
                  (this.m_bUserSetPersonaState = a),
                  (this.m_bIsClientIdle = s)),
                0 === this.m_eUserPersonaState &&
                  (this.m_self.mutable_persona.m_ePersonaState = 0)),
              0 === r && this.m_eUserPersonaState !== r && b.xm.Reconnect(),
              (!t && 1 != this.m_eUserPersonaState) ||
                0 === this.m_eUserPersonaState ||
                ((this.m_FriendStorePrefs.ePersonaState = e),
                b.xm.SettingsStore.StoreObjectInLocalStorage(
                  U,
                  this.m_FriendStorePrefs,
                ));
          }
          SendPersonaStateToServer(e, t) {
            if (
              (this.m_vecLastTenChangeStatusReasons.push(t),
              this.m_vecLastTenChangeStatusReasons.length > 10 &&
                (this.m_vecLastTenChangeStatusReasons =
                  this.m_vecLastTenChangeStatusReasons.slice(1)),
              !this.m_TokenBucketChangeStatus.BRemoveToken())
            )
              return (
                this.m_TokenFailureAssertCount > 0 &&
                  (--this.m_TokenFailureAssertCount,
                  (0, w.w)(
                    !1,
                    "No ClientChangeStatus tokens, last 10 reasons: " +
                      this.m_vecLastTenChangeStatusReasons.join(","),
                  )),
                !1
              );
            let n = r.w.Init(h.el, 716);
            return (
              n.Body().set_persona_state(this.m_eUserPersonaState),
              n.Body().set_persona_set_by_user(this.m_bUserSetPersonaState),
              n.Body().set_need_persona_response(e),
              n.Body().set_is_client_idle(this.m_bIsClientIdle),
              this.m_CMInterface.Send(n),
              !0
            );
          }
          AdjustPersonaStateForIdleTime(e) {
            return (1 == e || 3 == e) &&
              b.xm.IdleTracker.GetUserIdleTime() >= 7200
              ? 4
              : 1 == e && b.xm.IdleTracker.GetUserIdleTime() >= 300
                ? 3
                : e;
          }
          get FriendGroupStore() {
            return this.m_FriendGroupStore;
          }
          get ClanStore() {
            return this.m_ClanStore;
          }
          get FavoritesStore() {
            return this.m_FavoritesStore;
          }
          get all_friends() {
            return Array.from(this.m_setFriendAccountIDs).map((e) =>
              this.GetFriend(e),
            );
          }
          get online_friends() {
            return this.all_friends.filter((e) => e.persona.is_online);
          }
          get all_friends_accountids() {
            return this.m_setFriendAccountIDs;
          }
          get friends_list_ready() {
            return this.m_bReceivedFriendsList;
          }
          GetFriend(e) {
            let t = this.m_mapPlayerCache.get(e);
            if (t) {
              if (!t.is_friend) return null;
            } else (0, w.w)(!1, `Friend missing from cache: ${e}`);
            return t;
          }
          GetPlayer(e) {
            let t = this.m_mapPlayerCache.get(e);
            return t || (t = this.AddPlayerToCache(e, 3)), t;
          }
          AddPlayerToCache(e, t, n = !0) {
            if (this.m_mapPlayerCache.has(e))
              return this.m_mapPlayerCache.get(e);
            let i = new V(e);
            return this.m_mapPlayerCache.set(e, i), i;
          }
          GetPlayerIfCached(e) {
            return this.m_mapPlayerCache.get(e);
          }
          GetFriendIfCached(e) {
            let t = this.m_mapPlayerCache.get(e);
            return t && t.is_friend ? t : null;
          }
          SetPersonasOffline(e) {
            this.m_mapPlayerCache.forEach((t) => {
              (e && (t.is_friend || t.accountid == this.self.accountid)) ||
                t.ClearStateOnDisconnect();
            });
          }
          QueueFriendPersonaStateLoad(e) {
            this.m_setFriendsNeedingPersonaStateLoad.add(e.accountid),
              !this.m_iIntervalSubscribeToPersonaStateUpdates &&
                this.m_bInitialPersonaStatesLoaded &&
                (this.m_iIntervalSubscribeToPersonaStateUpdates =
                  SetBackgroundTimeout(
                    this.SubscribeToMissingPersonaStates.bind(this),
                    50,
                  ));
          }
          get self() {
            return this.m_self;
          }
          static k_nMSToWaitForFriendData = 1e3;
          SubscribeToMissingPersonaStates() {
            this.m_iIntervalSubscribeToPersonaStateUpdates &&
              (ClearBackgroundTimeout(
                this.m_iIntervalSubscribeToPersonaStateUpdates,
              ),
              (this.m_iIntervalSubscribeToPersonaStateUpdates = 0));
            let e = [];
            if (
              (this.m_setFriendsNeedingPersonaStateLoad.forEach((t) => {
                let n = this.m_mapPlayerCache.get(t);
                n && !n.persona.m_bNameInitialized && e.push(n.accountid);
              }),
              this.m_setFriendsNeedingPersonaStateLoad.clear(),
              e.length)
            ) {
              let t = r.w.Init(h.nz, 815);
              t.Body().set_persona_state_requested(1106);
              for (let n of e)
                t.Body().add_friends(
                  c.b.InitFromAccountID(n).ConvertTo64BitString(),
                );
              this.m_CMInterface.Send(t),
                SetBackgroundTimeout(() => {
                  let t = 0;
                  for (let n of e) {
                    let e = this.GetPlayer(n);
                    e &&
                      !e.persona.m_bNameInitialized &&
                      ((0, w.w)(
                        e.m_bPersonaStateLoadRequested,
                        "PersonaStateLoadRequested not set",
                      ),
                      this.m_setFriendsNeedingPersonaStateLoad.add(n),
                      t++);
                  }
                  t > 0
                    ? this.m_nMissingPersonaStateRetryCount <
                      this.m_nMissingPersonaStateMaxRetries
                      ? (this.m_nMissingPersonaStateRetryCount++,
                        this.m_iIntervalSubscribeToPersonaStateUpdates ||
                          (this.m_iIntervalSubscribeToPersonaStateUpdates =
                            SetBackgroundTimeout(
                              this.SubscribeToMissingPersonaStates.bind(this),
                              1e4,
                            )))
                      : console.log(
                          "Giving up persona state retries with",
                          t,
                          "still not filled",
                          this.m_setFriendsNeedingPersonaStateLoad,
                        )
                    : (this.m_nMissingPersonaStateRetryCount = 0);
                }, W.k_nMSToWaitForFriendData);
            }
          }
          m_bSnoozeCallbackFired = !0;
          m_bAwayCallbackFired = !0;
          m_bReconnectedSinceLastIdleUpdate = !0;
          m_bNextActivityCallbackRegistered = !1;
          InitializeIdleTracking() {
            this.m_bAwayCallbackFired &&
              ((this.m_bAwayCallbackFired = !1),
              b.xm.IdleTracker.AddOnIdleCallback(
                this.OnIdle.bind(this, 3),
                300,
              )),
              this.m_bSnoozeCallbackFired &&
                ((this.m_bSnoozeCallbackFired = !1),
                b.xm.IdleTracker.AddOnIdleCallback(
                  this.OnIdle.bind(this, 4),
                  7200,
                ));
          }
          ResetIdleState() {
            this.m_bReconnectedSinceLastIdleUpdate = !1;
            let e = this.m_eUserPersonaState;
            this.m_bUserSetPersonaState ||
              (3 != this.m_eUserPersonaState &&
                4 != this.m_eUserPersonaState) ||
              (e = 1),
              this.UpdateUserPersonaStateInternal(
                e,
                this.m_bUserSetPersonaState,
                !1,
                !1,
                "ResetIdleState",
              ),
              (this.m_bNextActivityCallbackRegistered = !1),
              this.InitializeIdleTracking();
          }
          SetReconnectedSinceLastIdleUpdate() {
            this.m_bReconnectedSinceLastIdleUpdate = !0;
          }
          OnIdle(e) {
            this.m_bReconnectedSinceLastIdleUpdate = !1;
            let t = e;
            3 == e
              ? ((this.m_bAwayCallbackFired = !0),
                4 == this.m_eUserPersonaState && (t = 4))
              : 4 == e && (this.m_bSnoozeCallbackFired = !0),
              this.m_bUserSetPersonaState && (t = this.m_eUserPersonaState),
              this.UpdateUserPersonaStateInternal(
                t,
                this.m_bUserSetPersonaState,
                !0,
                !1,
                "OnIdle",
              ),
              this.m_bNextActivityCallbackRegistered ||
                ((this.m_bNextActivityCallbackRegistered = !0),
                b.xm.IdleTracker.AddOnNextActivityCallback(
                  this.ResetIdleState.bind(this),
                ));
          }
          GetFriendInviteCount() {
            return this.m_FriendGroupStore.incoming_invites_group
              .unfiltered_count;
          }
          GetClanInviteCount() {
            return this.m_ClanStore.clan_invite_count;
          }
          GetPendingInviteCount() {
            return this.GetFriendInviteCount() + this.GetClanInviteCount();
          }
          GetOutgoingFriendRequestCount() {
            return this.m_FriendGroupStore.outgoing_invites_group
              .unfiltered_count;
          }
          GetOnlineFriendCount() {
            return this.online_friends.length;
          }
          async SendFriendInvite(e) {
            return this.SendFriendInviteBySteamID(e.persona.m_steamid);
          }
          async SendFriendInviteBySteamID(e) {
            let t = r.w.Init(f.jP);
            t.Body().set_steamid(e.ConvertTo64BitString());
            let n = await f.xt.AddFriend(
                this.m_CMInterface.GetServiceTransport(),
                t,
              ),
              i = 1;
            return (
              void 0 !== n.Body().result() && (i = n.Body().result()),
              {
                eResult: i,
                eFriendRelationship: n.Body().friend_relationship(),
              }
            );
          }
          RemoveFriend(e) {
            let t = r.w.Init(f.i$);
            return (
              t.Body().set_steamid(e.persona.m_steamid.ConvertTo64BitString()),
              f.xt
                .RemoveFriend(this.m_CMInterface.GetServiceTransport(), t)
                .then((e) => e.Body().friend_relationship())
            );
          }
          BlockPlayer(e, t = !1) {
            let n = r.w.Init(f.qW);
            return (
              n.Body().set_steamid(e.persona.m_steamid.ConvertTo64BitString()),
              t && n.Body().set_unignore(!0),
              f.xt
                .IgnoreFriend(this.m_CMInterface.GetServiceTransport(), n)
                .then((e) => e.Body().friend_relationship())
            );
          }
          AddFriend(e, t, n) {
            let i = new c.b(e).GetAccountID(),
              o = this.m_setIncomingInviteAccountIDs.has(i);
            if (2 == t) {
              if (!o) {
                let e = this.AddPlayerToCache(i, 3, !1);
                (e.efriendrelationship = t),
                  n || e.LoadIfNecessary(),
                  this.m_setIncomingInviteAccountIDs.add(i),
                  this.m_FriendGroupStore.OnIncomingInviteAdded(i);
              }
            } else if (o) {
              (this.AddPlayerToCache(i, 3, !1).efriendrelationship = t),
                this.m_setIncomingInviteAccountIDs.delete(i),
                this.m_FriendGroupStore.OnIncomingInviteRemoved(i);
            }
            if (4 == t) {
              let e = this.AddPlayerToCache(i, 3, !1);
              (e.efriendrelationship = t),
                n || e.LoadIfNecessary(),
                this.m_FriendGroupStore.OnOutgoingInviteAdded(i);
            } else this.m_FriendGroupStore.OnOutgoingInviteRemoved(i);
            if (5 == t || 6 == t) {
              let e = b.xm.ChatStore.GetFriendChat(i, !1);
              e && b.xm.UIStore.CloseTabByID(e.unique_id);
            }
            let r = this.m_setFriendAccountIDs.has(i);
            if ((0, T.S$)(t)) {
              let e;
              r
                ? (e = this.GetFriend(i))
                : (this.m_setFriendAccountIDs.add(i),
                  (e = this.AddPlayerToCache(i, 2, !1)),
                  n || e.LoadIfNecessary(),
                  this.m_FriendGroupStore.OnFriendAdded(i)),
                (e.efriendrelationship = t);
            } else {
              r &&
                (this.m_FriendGroupStore.OnFriendRemoved(i),
                this.m_FavoritesStore.OnFriendRemoved(i),
                this.m_setFriendAccountIDs.delete(i)),
                (this.AddPlayerToCache(i, 3, !1).efriendrelationship = t);
            }
          }
          SetFriendsList(e) {
            let t = e.friends();
            const n = !e.bincremental();
            if (n) {
              for (let e of this.all_friends) e.efriendrelationship = 0;
              this.m_setFriendAccountIDs.clear(),
                this.m_setIncomingInviteAccountIDs.clear(),
                this.m_FriendGroupStore.OnFullFriendsListUpdateStart(),
                this.m_ClanStore.ClearClanMembershipData();
            }
            for (let e of t) {
              let t = new c.b(e.ulfriendid());
              if (t.BIsIndividualAccount()) {
                let i = e.efriendrelationship();
                this.AddFriend(t.ConvertTo64BitString(), i, n);
              } else
                t.BIsClanAccount() &&
                  this.m_ClanStore.OnClanRelationshipChanged(
                    t,
                    e.efriendrelationship(),
                  );
            }
            n &&
              (this.m_FriendGroupStore.OnFullFriendsListUpdateComplete(),
              (this.m_bReceivedFriendsList = !0),
              this.RequestPerFriendPreferences(),
              this.RequestFriendPersonaStates(),
              this.UpdateReadyToRenderState());
          }
          async RequestFriendPersonaStates() {
            if (this.m_setFriendAccountIDs.size > 0) {
              let e = r.w.Init(u.ky);
              await u.mf.RequestFriendPersonaStates(
                this.m_CMInterface.GetServiceTransport(),
                e,
              );
            }
            window.setTimeout(() => {
              (this.m_bInitialPersonaStatesLoaded = !0),
                this.StartWaitForInitialAppInfo(),
                this.SubscribeToMissingPersonaStates(),
                this.UpdateReadyToRenderState();
            }, 1);
          }
          OnFriendPersonaStateChanged(e, t, n, i, o) {
            if (
              !b.xm.NotificationManager.BNotificationsPermitted() ||
              !b.xm.SettingsStore.BReady() ||
              b.xm.FriendStore.GetUserDoNotDisturb()
            )
              return;
            const r = b.xm.IsGamepadUIActive() || e.BShowInGameNotification();
            if (i && e.persona.is_ingame && r) {
              let t = e.current_game_name;
              return (
                e.persona.is_in_nonsteam_game ||
                  o ||
                  this.m_FriendInGameNotificationStore.RecordFriendInGameImpression(
                    e.persona.m_unGamePlayedAppID,
                  ),
                void (
                  t &&
                  b.xm.NotificationManager.DisplayNotificationFromFriend(e, {
                    title: e.display_name,
                    body: (0, k.we)("#Friend_StateChange_InGame", t),
                    rawbody: t,
                    tag: "state_" + e.accountid,
                    state: "ingame",
                    steamid: e.persona.m_steamid.ConvertTo64BitString(),
                  })
                )
              );
            }
            0 == t &&
              0 != n &&
              e.BShowOnlineNotification() &&
              b.xm.NotificationManager.DisplayNotificationFromFriend(e, {
                title: e.display_name,
                body: (0, k.we)("#Friend_StateChange_Online"),
                tag: "state_" + e.accountid,
                state: "online",
                steamid: e.persona.m_steamid.ConvertTo64BitString(),
              });
          }
          PlayJoinGameSound() {
            b.xm.FriendStore.GetUserDoNotDisturb() ||
              b.xm.AudioPlaybackManager.PlayAudioURL(
                o.TS.COMMUNITY_CDN_URL +
                  "public/sounds/webui/ui_steam_smoother_friend_join.m4a",
              );
          }
          PlayFriendOnlineSound() {
            b.xm.FriendStore.GetUserDoNotDisturb() ||
              b.xm.AudioPlaybackManager.PlayAudioURL(
                o.TS.COMMUNITY_CDN_URL +
                  "public/sounds/webui/ui_steam_smoother_friend_online.m4a",
              );
          }
          FillPerFriendNotificationSettingsFromMessage(e, t) {
            (e.Notifications_ShowInGame = t.notifications_showingame()),
              (e.Notifications_ShowMessage = t.notifications_showmessages()),
              (e.Notifications_ShowOnline = t.notifications_showonline()),
              (e.Notifications_SendMobile = t.notifications_sendmobile()),
              (e.Sounds_PlayInGame = t.sounds_showingame()),
              (e.Sounds_PlayMessage = t.sounds_showmessages()),
              (e.Sounds_PlayOnline = t.sounds_showonline());
          }
          RequestPerFriendPreferences() {
            let e = r.w.Init(f.Xt);
            f.xt
              .GetPerFriendPreferences(
                this.m_CMInterface.GetServiceTransport(),
                e,
              )
              .then((e) => {
                (0, I.h5)(() => {
                  for (let t of e.Body().preferences()) {
                    let e = this.GetPlayer(t.accountid());
                    if (e) {
                      e.nickname = t.nickname() || void 0;
                      let n = new N();
                      this.FillPerFriendNotificationSettingsFromMessage(n, t),
                        (e.notification_settings = n),
                        this.m_rgPersonaStateChangeCallbacks.Dispatch(e);
                    } else
                      console.log(
                        "Got per-friend preferences back for a user we don't have a Player for:",
                        t,
                      );
                  }
                  (this.m_bPerFriendPreferencesLoaded = !0),
                    this.UpdateReadyToRenderState();
                });
              });
          }
          async StartWaitForInitialAppInfo() {
            await Promise.all(this.m_InitialAppInfoPromises),
              (this.m_bInitialAppInfoLoaded = !0),
              this.UpdateReadyToRenderState();
          }
          FillMessageFromPerFriendNotificationSettings(e, t) {
            e.set_notifications_showingame(t.Notifications_ShowInGame),
              e.set_notifications_showmessages(t.Notifications_ShowMessage),
              e.set_notifications_showonline(t.Notifications_ShowOnline),
              e.set_notifications_sendmobile(t.Notifications_SendMobile),
              e.set_sounds_showingame(t.Sounds_PlayInGame),
              e.set_sounds_showmessages(t.Sounds_PlayMessage),
              e.set_sounds_showonline(t.Sounds_PlayOnline);
          }
          SetPlayerNickname(e, t) {
            return this.SetPlayerPerFriendPreferences(
              e,
              t,
              e.notification_settings,
            );
          }
          SetPlayerNotificationSettings(e, t) {
            return this.SetPlayerPerFriendPreferences(e, e.nickname, t);
          }
          SetPlayerPerFriendPreferences(e, t, n) {
            let i = r.w.Init(f.$J),
              o = i.Body().preferences();
            return (
              o.set_accountid(e.accountid),
              o.set_nickname(t),
              this.FillMessageFromPerFriendNotificationSettings(o, n),
              f.xt
                .SetPerFriendPreferences(
                  b.xm.CMInterface.GetServiceTransport(),
                  i,
                )
                .then((e) => e.GetEResult())
            );
          }
          InviteToGame(e, t, n) {
            let i = r.w.Init(p.sw, 7005);
            i.Hdr().set_routing_appid(t),
              i
                .Body()
                .set_steam_id_src(
                  this.m_CMInterface.steamid.ConvertTo64BitString(),
                ),
              i
                .Body()
                .set_steam_id_dest(
                  c.b.InitFromAccountID(e.accountid).ConvertTo64BitString(),
                ),
              n && i.Body().set_connect_string(n),
              this.m_CMInterface.Send(i);
          }
          InviteToLobby(e, t, n) {
            let i = r.w.Init(_.$Z, 6621);
            i.Hdr().set_routing_appid(t),
              i.Body().set_steam_id_lobby(n),
              i
                .Body()
                .set_steam_id_user_invited(
                  c.b.InitFromAccountID(e.accountid).ConvertTo64BitString(),
                ),
              this.m_CMInterface.Send(i);
          }
          InviteToWatch(e) {
            b.xm.ShowFriendChatDialog(
              b.xm.GetDefaultBrowserContext(),
              e.accountid,
              !0,
            );
            b.xm.BroadcastStore.InviteToWatch(e.accountid).then((e) => {});
          }
          FillInChatUsabilityMetrics(e) {
            let t = 0,
              n = 0,
              i = 0;
            for (let e of this.all_friends)
              3 == e.efriendrelationship &&
                (t++, e.persona.is_online && n++, e.persona.is_ingame && i++);
            e.metrics().set_friends_count(t),
              e.metrics().set_friends_online_count(n),
              e.metrics().set_friends_in_game_count(i),
              this.m_FriendGroupStore.FillInChatUsabilityMetrics(e),
              this.m_FavoritesStore.FillInChatUsabilityMetrics(e);
          }
          GetPersonaStatePreference() {
            return this.m_FriendStorePrefs?.ePersonaState;
          }
        }
        function z(e) {
          switch (e) {
            case 25:
              return "#Friend_InviteError_LimitExceeded";
            case 15:
              return "#Friend_InviteError_AccessDenied";
            case 40:
              return "#Friend_InviteError_Blocked";
            case 11:
              return "#Friend_InviteError_InvalidState";
            case 84:
              return "#Friend_InviteError_RateLimitExceeded";
            case 24:
              return "#Friend_InviteError_InsufficientPrivilege";
          }
          return "#Friend_InviteError";
        }
        (0, i.Cg)([I.sH], W.prototype, "m_self", void 0),
          (0, i.Cg)([I.sH], W.prototype, "m_setFriendAccountIDs", void 0),
          (0, i.Cg)([I.sH], W.prototype, "m_eUserPersonaState", void 0),
          (0, i.Cg)(
            [I.sH],
            W.prototype,
            "m_bPerFriendPreferencesLoaded",
            void 0,
          ),
          (0, i.Cg)([I.sH], W.prototype, "m_bReceivedFriendsList", void 0),
          (0, i.Cg)(
            [I.sH],
            W.prototype,
            "m_bInitialPersonaStatesLoaded",
            void 0,
          ),
          (0, i.Cg)([I.sH], W.prototype, "m_bInitialAppInfoLoaded", void 0),
          (0, i.Cg)([I.EW], W.prototype, "not_ready_to_render_reason", null),
          (0, i.Cg)([I.XI], W.prototype, "OnParentalLockChanged", null),
          (0, i.Cg)([I.EW], W.prototype, "all_friends", null),
          (0, i.Cg)([I.EW], W.prototype, "online_friends", null),
          (0, i.Cg)([I.XI], W.prototype, "SetPersonasOffline", null),
          (0, i.Cg)([I.XI], W.prototype, "SetFriendsList", null),
          (0, i.Cg)(
            [L.oI, (0, R.s)(100)],
            W.prototype,
            "PlayJoinGameSound",
            null,
          ),
          (0, i.Cg)(
            [L.oI, (0, R.s)(100)],
            W.prototype,
            "PlayFriendOnlineSound",
            null,
          ),
          (0, i.Cg)([I.XI], W.prototype, "SetPlayerNickname", null),
          (0, i.Cg)([I.XI], W.prototype, "SetPlayerNotificationSettings", null),
          (0, i.Cg)([I.XI], W.prototype, "SetPlayerPerFriendPreferences", null),
          (0, i.Cg)([I.XI], W.prototype, "InviteToGame", null),
          (0, i.Cg)([I.XI], W.prototype, "InviteToLobby", null),
          (0, i.Cg)([I.XI], W.prototype, "InviteToWatch", null);
      },
      82789: (e, t, n) => {
        "use strict";
        n.d(t, { b: () => I, s: () => w });
        var i = n(34629),
          o = n(49912),
          r = n(78116),
          a = n(45518),
          s = n(77631),
          l = n(19819),
          c = n(93715),
          m = n(58743),
          d = n(89193),
          u = n(74002),
          h = n(31370),
          p = (n(42937), n(60853)),
          _ = n(82924),
          g = n(7105),
          C = n(28574),
          f = n(8805),
          S = n(18775);
        const v = new f.wd("Chat");
        const b = "FriendRecentChats";
        class I {
          m_ChatStore;
          m_rgFriendChats = [];
          m_bReceivedFriendChats = !1;
          m_rtLastSessionUpdate = 0;
          m_mapLastChatTimeByFriend = d.sH.map();
          m_mapRecentIgnoreTimeBeforeByFriend = d.sH.map();
          m_LastMessageCache = r.TS.IN_MOBILE ? new y() : new E();
          constructor(e) {
            (0, d.Gn)(this), (this.m_ChatStore = e);
          }
          Init() {
            this.m_LastMessageCache.Init(),
              this.m_ChatStore.CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                l.bj.IncomingMessageHandler,
                (e) => {
                  let t = new s.b(e.Body().steamid_friend()),
                    n = m.xm.FriendStore.GetPlayerIfCached(t.GetAccountID());
                  if (!n) {
                    if (e.Body().low_priority()) return 41;
                    n = m.xm.FriendStore.GetPlayer(t.GetAccountID());
                  }
                  if (1 == e.Body().chat_entry_type()) {
                    let i = e.Body().local_echo(),
                      o =
                        n.is_blocked ||
                        (e.Body().low_priority() && !n.is_friend),
                      a = i
                        ? this.m_ChatStore.FriendStore.self.persona.m_steamid
                        : t,
                      s = this.GetFriendChat(t.GetAccountID(), !o);
                    if (
                      (!o &&
                        !i &&
                        !m.xm.FriendStore.BIsInvisibleMode() &&
                        !m.xm.FriendStore.GetUserDoNotDisturb() &&
                        m.xm.BShowIncomingChatMessages() &&
                        !r.TS.IN_MOBILE &&
                        m.xm.UIStore.ShowAndOrActivateChat(
                          m.xm.GetDefaultBrowserContext(),
                          s,
                          !1,
                        ),
                      s)
                    ) {
                      let t = s.GetVisibilityState();
                      if (
                        (n.is_friend || 0 != t || s.SetShowNonFriendWarning(!0),
                        i || !n.is_blocked)
                      ) {
                        s.AddNewChatMsgAndNotify(
                          a.GetAccountID(),
                          e.Body().rtime32_server_timestamp(),
                          e.Body().ordinal(),
                          e.Body().message(),
                          e.Body().message_no_bbcode(),
                        );
                        let t = this.m_ChatStore.TextFilterStore;
                        if (!i && !t.BShownFilterTip() && t.BHasFilter()) {
                          let n = e.Body().message();
                          t.FilterText(a.GetAccountID(), n) !== n &&
                            (s.AddLocalMsg(
                              a.GetAccountID(),
                              e.Body().rtime32_server_timestamp(),
                              (0, u.we)(
                                "#Chat_TextFilter_Active",
                                this.m_ChatStore.GetTextFilterSettingsURL(),
                              ),
                            ),
                            t.SetFilterTipShown(!0));
                        }
                      } else
                        s.AppendChatMsg(
                          a.GetAccountID(),
                          e.Body().rtime32_server_timestamp(),
                          e.Body().ordinal(),
                          e.Body().message(),
                        );
                    }
                    this.m_mapLastChatTimeByFriend.set(
                      t.GetAccountID(),
                      e.Body().rtime32_server_timestamp(),
                    );
                  } else if (
                    2 == e.Body().chat_entry_type() &&
                    !e.Body().local_echo() &&
                    !n.is_blocked
                  ) {
                    let e = this.GetFriendChat(t.GetAccountID(), !1);
                    e && e.OnFriendTypingNotification();
                  }
                  return 1;
                },
              ),
              this.m_ChatStore.CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                l.bj.NotifyAckMessageEchoHandler,
                (e) => {
                  let t = new s.b(e.Body().steamid_partner()),
                    n = this.GetFriendChat(t.GetAccountID());
                  return (
                    n && n.UpdateLastAckTimeFromServer(e.Body().timestamp()), 1
                  );
                },
              ),
              this.m_ChatStore.CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                l.bj.MessageReactionHandler,
                (e) => {
                  const t = new s.b(e.Body().steamid_friend()),
                    n = this.GetFriendChat(t.GetAccountID());
                  if (n) {
                    const t = n.chat_messages.find(
                      (t) =>
                        t.rtTimestamp === e.Body().server_timestamp() &&
                        t.unOrdinal === e.Body().ordinal(),
                    );
                    if (t) {
                      const {
                          is_add: n,
                          reactor: i,
                          reaction: o,
                        } = e.Body().toObject(),
                        r = t.reactions.find((e) => e.strReaction === o),
                        a = n ? 1 : -1;
                      if (-1 === a && !r)
                        return (
                          v.Error(
                            "Got reaction removal notification but no matching reaction was found",
                          ),
                          1
                        );
                      let s = !!r && r.bUserReacted;
                      i === m.xm.FriendStore.self.steamid64 && (s = n),
                        t.UpdateReaction(
                          e.Body().reaction_type(),
                          e.Body().reaction(),
                          r ? r.cReactors + a : a,
                          s,
                        );
                    }
                  }
                  return 1;
                },
              );
          }
          GetFriendChat(e, t = !0) {
            for (let t of this.m_rgFriendChats)
              if (t.accountid_partner == e) return t;
            if (!t) return null;
            let n = new w(e, this.m_ChatStore, this.m_ChatStore.CMInterface);
            return this.m_rgFriendChats.push(n), n;
          }
          OnLogon() {
            this.LoadFriendMessageSessions(),
              m.xm.SettingsStore.GetObjectFromLocalStorageWhenReady(b).then(
                (e) => {
                  this.m_mapRecentIgnoreTimeBeforeByFriend.clear();
                  for (let t in e.ignoretimes) {
                    let n = parseInt(t, 10);
                    this.m_mapRecentIgnoreTimeBeforeByFriend.set(
                      n,
                      e.ignoretimes[t],
                    );
                  }
                },
              );
          }
          RestoreStatePostDisconnect(e) {
            e && this.LoadFriendMessageSessions();
            for (let e of this.m_rgFriendChats) e.OnConnectionRestored();
          }
          GetServiceTransport() {
            return this.m_ChatStore.CMInterface.GetServiceTransport();
          }
          LoadFriendMessageSessions() {
            let e = a.w.Init(l.I4);
            e.Body().set_lastmessage_since(this.m_rtLastSessionUpdate),
              e.Body().set_only_sessions_with_messages(!0),
              l.U5.GetActiveMessageSessions(this.GetServiceTransport(), e).then(
                (e) => {
                  this.m_rtLastSessionUpdate = e.Body().timestamp();
                  for (let t of e.Body().message_sessions()) {
                    this.m_mapLastChatTimeByFriend.set(
                      t.accountid_friend(),
                      t.last_message(),
                    ),
                      this.GetFriendChat(
                        t.accountid_friend(),
                      ).InitMessageSessionFromServer(
                        t.unread_message_count(),
                        t.last_view(),
                        t.last_message(),
                      );
                  }
                  m.xm.FriendStore.UpdateUnreadMessagesGlobal(),
                    (this.m_bReceivedFriendChats = !0);
                },
              );
          }
          GetFriendChatsByLastChatTime() {
            const e = [];
            return (
              this.m_mapLastChatTimeByFriend.forEach((t, n) => {
                e.push([t, this.GetFriendChat(n)]);
              }),
              e.sort(([e], [t]) => t - e).map(([e, t]) => t)
            );
          }
          GetFriendsWithUnreadMessages(e) {
            let t = [];
            for (let n of this.m_rgFriendChats)
              n.unread_message_count > 0 &&
                (!e || n.GetVisibilityState(e) < 2) &&
                !n.is_blocked_friend &&
                t.push(n);
            return (
              t.sort((e, t) => e.time_last_message - t.time_last_message), t
            );
          }
          BIsFriendChatRecent(e) {
            const t = m.xm.GetServerRTime32() - this.RecentChatCutoffDuration,
              n = this.m_mapLastChatTimeByFriend.get(e);
            if (!n) return !1;
            if (n >= t) {
              let t = this.m_mapRecentIgnoreTimeBeforeByFriend.get(e);
              if (!t || t < n) return !0;
            }
            return !1;
          }
          GetFriendChatsWithRecentMessages() {
            return this.m_rgFriendChats.filter((e) =>
              this.BIsFriendChatRecent(e.accountid_partner),
            );
          }
          GetUnfilteredFriendsWithUnreadMessages() {
            let e = [];
            for (let t of this.m_rgFriendChats)
              t.unread_message_count > 0 && !t.is_blocked_friend && e.push(t);
            return (
              e.sort((e, t) => e.time_last_message - t.time_last_message), e
            );
          }
          GetAllChats() {
            return this.m_rgFriendChats.slice();
          }
          get RecentChatCutoffDuration() {
            return 3600;
          }
          get LastMessageCache() {
            return this.m_LastMessageCache;
          }
          ClearRecentChatsForFriend(e) {
            this.m_mapRecentIgnoreTimeBeforeByFriend.set(
              e,
              m.xm.GetServerRTime32(),
            ),
              this.WriteRecentChatsPrefs();
          }
          WriteRecentChatsPrefs() {
            let e = m.xm.GetServerRTime32() - this.RecentChatCutoffDuration;
            this.m_mapRecentIgnoreTimeBeforeByFriend.forEach((t, n) => {
              t < e && this.m_mapRecentIgnoreTimeBeforeByFriend.delete(n);
            }),
              m.xm.SettingsStore.StoreObjectInLocalStorage(b, {
                ignoretimes: new Map(this.m_mapRecentIgnoreTimeBeforeByFriend),
              });
          }
          get GetRecentlyChattingFriends() {
            let e = [];
            return (
              this.m_mapLastChatTimeByFriend.forEach((t, n) => {
                if (this.BIsFriendChatRecent(n)) {
                  let t = m.xm.FriendStore.GetFriend(n);
                  t && e.push(t);
                }
              }),
              e.sort(c.$c.DefaultFriendSortComparator),
              e
            );
          }
          GetUnreadFriendMessageCount(e) {
            let t = 0;
            for (let n of this.m_rgFriendChats)
              n.unread_message_count > 0 &&
                (!e || n.GetVisibilityState(e) < 2) &&
                !n.is_blocked_friend &&
                (t += n.unread_message_count);
            return t;
          }
          GetFriendLastChatTime(e) {
            return this.m_mapLastChatTimeByFriend.get(e) || 0;
          }
          AddFriendPushNotificationData(e, t) {
            let n = new s.b(e.steamid_friend()).GetAccountID();
            if (1 == e.chat_entry_type()) {
              let t = e.local_echo()
                  ? this.m_ChatStore.FriendStore.self.persona.m_steamid.GetAccountID()
                  : n,
                i = this.GetFriendChat(n, !1);
              if (!i) return;
              if (
                e.local_echo() &&
                i.HasClientMessageInFlight(e.client_message_id())
              )
                return;
              if (
                !i.HasChatMessage(
                  e.previous_message_timestamp(),
                  e.previous_message_ordinal(),
                )
              )
                return;
              i.AppendChatMsg(
                t,
                e.current_message_timestamp(),
                e.current_message_ordinal(),
                e.message(),
              ),
                this.m_mapLastChatTimeByFriend.set(
                  n,
                  e.current_message_timestamp(),
                );
            }
          }
        }
        (0, i.Cg)([d.sH], I.prototype, "m_rgFriendChats", void 0),
          (0, i.Cg)([d.sH], I.prototype, "m_bReceivedFriendChats", void 0),
          (0, i.Cg)([d.XI], I.prototype, "ClearRecentChatsForFriend", null),
          (0, i.Cg)([d.EW], I.prototype, "GetRecentlyChattingFriends", null);
        class w extends h.o {
          m_unAccountIDFriend;
          m_iClearFriendIsTypingInterval = void 0;
          m_bFriendIsTyping = !1;
          m_tsLastSentTypingNotification;
          m_bNeedsNonFriendWarning = !1;
          constructor(e, t, n) {
            super(t.FriendStore, t, n),
              (0, d.Gn)(this),
              (this.m_unAccountIDFriend = e),
              (this.m_MessageSendQueue = new S.G(e.toString())),
              this.m_MessageSendQueue
                .InitFromStorage()
                .then(() => this.InitQueuedMessages());
          }
          GetLastMessage() {
            if (!this.m_strLastMessage && !this.m_bChatLogsLoaded) {
              const e =
                this.m_ChatStore.FriendChatStore.LastMessageCache.GetLastMessage(
                  this.m_unAccountIDFriend,
                );
              if (e && this.m_rtLastMessageReceived <= e.rtTime)
                return e.strMessage;
              if (
                (this.LoadChatLogs().then(() => {
                  const e = this.chat_messages[this.chat_messages.length - 1];
                  e &&
                    ((this.m_strLastMessage = e.strMessage),
                    (this.m_accountIDLastMessage = e.unAccountID),
                    (this.m_rtLastMessageReceived = e.rtTimestamp),
                    this.m_ChatStore.FriendChatStore.LastMessageCache.UpdateLastMessage(
                      this.m_unAccountIDFriend,
                      {
                        strMessage: e.strMessage,
                        rtTime: e.rtTimestamp,
                        unAccountIDSender: e.unAccountID,
                      },
                    ));
                }),
                e)
              )
                return e.strMessage;
            }
            return this.m_strLastMessage;
          }
          get time_last_message() {
            if (this.m_rtLastMessageReceived)
              return this.m_rtLastMessageReceived;
            const e =
              this.m_ChatStore.FriendChatStore.LastMessageCache.GetLastMessage(
                this.m_unAccountIDFriend,
              );
            return e ? e.rtTime : void 0;
          }
          get accountid_last_message() {
            if (this.m_accountIDLastMessage) return this.m_accountIDLastMessage;
            const e =
              this.m_ChatStore.FriendChatStore.LastMessageCache.GetLastMessage(
                this.m_unAccountIDFriend,
              );
            return e ? e.unAccountIDSender : void 0;
          }
          get unread_message_count() {
            let e =
              this.m_ChatStore.VoiceChat.BPartnerHasRequestedAndIsInOneOnOneChat(
                this.m_unAccountIDFriend,
              );
            return (
              (e = e && !this.BVoiceActive()),
              this.m_cUnreadChatMessages + (e ? 1 : 0)
            );
          }
          get VoiceChatStore() {
            return this.m_ChatStore.VoiceChat;
          }
          SetShowNonFriendWarning(e) {
            this.m_bNeedsNonFriendWarning = e;
          }
          GetShowNonFriendWarning() {
            let e =
              this.m_bNeedsNonFriendWarning &&
              !m.xm.FriendStore.BApprovedNonFriendMessages(
                this.accountid_partner,
              );
            if (e) {
              let t = m.xm.FriendStore.GetFriend(this.accountid_partner);
              e = !t || !t.is_friend;
            }
            return e;
          }
          GetMessagesFromTimeRange(e, t, n, i, o) {
            let r = a.w.Init(l.Qp);
            return (
              r
                .Body()
                .set_steamid1(
                  this.m_CMInterface.steamid.ConvertTo64BitString(),
                ),
              r
                .Body()
                .set_steamid2(
                  s.b
                    .InitFromAccountID(this.m_unAccountIDFriend)
                    .ConvertTo64BitString(),
                ),
              r.Body().set_count(h.o.k_LoadMoreMessageCount),
              r.Body().set_bbcode_format(!0),
              r.Body().set_rtime32_start_time(e),
              r.Body().set_start_ordinal(t),
              r.Body().set_time_last(n),
              r.Body().set_ordinal_last(i),
              v.Info(
                `${this.unique_id} friend trying to load ${o} messages in range ${e}:${t} - ${n}:${i}`,
              ),
              l.U5.GetRecentMessages(
                this.m_ChatStore.CMInterface.GetServiceTransport(),
                r,
              ).then((e) => {
                let t = e.GetEResult();
                if (1 != t) throw t;
                return {
                  messages: this.GetMessagesFromResponse(e),
                  moreAvailable: e.Body().more_available(),
                };
              })
            );
          }
          GetMessagesFromResponse(e) {
            let t = e.Body().messages(),
              n = [];
            for (let e = t.length - 1; e >= 0; e--) {
              let i = t[e],
                o = i.accountid();
              n.push(
                new p.D8(
                  o,
                  i.timestamp(),
                  i.ordinal(),
                  i.message() || "",
                  i
                    .reactions()
                    .map((e) => ({
                      eReactionType: e.reaction_type(),
                      strReaction: e.reaction(),
                      cReactors: e.reactors().length,
                      bUserReacted:
                        e.reactors().indexOf(m.xm.FriendStore.self.accountid) >
                        -1,
                    })),
                ),
              );
            }
            return n;
          }
          OnNewChatMsgAdded(e, t, n, i) {}
          GetBBCodeParser() {
            return this.m_ChatStore.FriendChatBBCodeParser;
          }
          AckChatMsgOnServer(e) {
            let t = a.w.Init(l.L4);
            t
              .Body()
              .set_steamid_partner(
                s.b
                  .InitFromAccountID(this.accountid_partner)
                  .ConvertTo64BitString(),
              ),
              t.Body().set_timestamp(e),
              l.U5.AckMessage(this.m_CMInterface.GetServiceTransport(), t);
          }
          CheckShouldNotify(e, t, n) {
            super.CheckShouldNotify(e, t, n),
              this.m_ChatStore.FriendChatStore.LastMessageCache.UpdateLastMessage(
                this.m_unAccountIDFriend,
                {
                  rtTime: e.rtTimestamp,
                  strMessage: e.strMessage,
                  unAccountIDSender: e.unAccountID,
                },
              );
          }
          get name() {
            let e = this.chat_partner;
            return e ? e.display_name : void 0;
          }
          get unique_id() {
            return "f" + this.accountid_partner;
          }
          BIsVoiceAllowed() {
            return (
              !!this.chat_partner.is_friend &&
              0 != this.chat_partner.persona.m_ePersonaState
            );
          }
          GetVoiceNotAllowedReason() {
            return this.chat_partner.is_friend
              ? 0 == this.chat_partner.persona.m_ePersonaState
                ? (0, u.we)(
                    "#VoiceChat_Unavailable_NotOnline",
                    this.chat_partner.display_name,
                  )
                : null
              : (0, u.we)(
                  "#VoiceChat_Unavailable_NotFriend",
                  this.chat_partner.display_name,
                );
          }
          ToggleVoiceChat() {
            return (
              this.ChatStore.VoiceChat.IsVoiceActiveForFriend(
                this.accountid_partner,
              )
                ? this.ChatStore.VoiceChat.OnUserEndVoiceChat()
                : this.ChatStore.VoiceChat.InitiateFriendChat(
                    this.accountid_partner,
                  ),
              !0
            );
          }
          BVoiceActive() {
            return this.ChatStore.VoiceChat.IsVoiceActiveForFriend(
              this.accountid_partner,
            );
          }
          get is_blocked_friend() {
            return this.chat_partner.is_blocked;
          }
          async SendChatMessageInternal(e) {
            this.chat_partner.is_friend ||
              m.xm.FriendStore.SetApprovedNonFriendMessages(
                this.chat_partner.accountid,
              );
            let t = this.AppendLocalEchoChatMsg(e);
            this.m_strLastMessage = e;
            let n = a.w.Init(l.kw);
            n.Body().set_chat_entry_type(1),
              n.Body().set_message(e),
              n
                .Body()
                .set_steamid(
                  s.b
                    .InitFromAccountID(this.accountid_partner)
                    .ConvertTo64BitString(),
                ),
              n.Body().set_contains_bbcode(!0);
            let i = (function () {
              let e = "";
              for (let t = 0; t < 16; t++) e += o.Tg(0, 15).toString(16);
              return e;
            })();
            n.Body().set_client_message_id(i),
              this.m_setInflightClientMessageID.add(i),
              (this.m_tsLastSentTypingNotification = void 0);
            const r = await this.SendWithRetries(t, () =>
              l.U5.SendMessage(this.m_CMInterface.GetServiceTransport(), n),
            );
            return (
              this.m_setInflightClientMessageID.delete(i),
              r === p.Bm.None &&
                this.m_ChatStore.FriendChatStore.LastMessageCache.UpdateLastMessage(
                  this.m_unAccountIDFriend,
                  {
                    rtTime: t.rtTimestamp,
                    unAccountIDSender: this.self.accountid,
                    strMessage: t.strMessage,
                  },
                ),
              r
            );
          }
          async UpdateMessageReaction(e, t, n, i) {
            const o = a.w.Init(l.Qn);
            o
              .Body()
              .set_steamid(
                s.b
                  .InitFromAccountID(this.accountid_partner)
                  .ConvertTo64BitString(),
              ),
              o.Body().set_reaction_type(t),
              o.Body().set_reaction(n),
              o.Body().set_is_add(i),
              o.Body().set_server_timestamp(e.rtTimestamp),
              o.Body().set_ordinal(e.unOrdinal);
            const r = e.reactions.find((e) => n === e.strReaction),
              c = i ? 1 : -1,
              m = r ? r.cReactors + c : c;
            e.UpdateReaction(t, n, m, i);
            const d = await l.U5.UpdateMessageReaction(
              this.m_CMInterface.GetServiceTransport(),
              o,
            );
            return (
              1 !== d.GetEResult()
                ? (e.UpdateReaction(t, n, m - c, !i),
                  v.Warning(
                    `Error updating message reaction. EResult: ${d.GetEResult()}`,
                  ))
                : i &&
                  1 === d.Body().reactors().length &&
                  (1 === t
                    ? this.m_ChatStore.EmoticonStore.TrackEmoticonUsage(
                        n,
                        Date.now() / 1e3,
                      )
                    : 2 === t &&
                      this.m_ChatStore.EmoticonStore.TrackStickerUsage(
                        n,
                        Date.now() / 1e3,
                      )),
              d.GetEResult()
            );
          }
          GetMessageReactionReactors(e, t, n) {
            const i = [];
            return (
              t.bUserReacted && i.push(m.xm.FriendStore.self.accountid),
              t.cReactors > i.length && i.push(this.chat_partner.accountid),
              i.slice(0, n)
            );
          }
          OnTyping() {
            if (
              !this.m_tsLastSentTypingNotification ||
              performance.now() - this.m_tsLastSentTypingNotification > 1e4
            ) {
              this.m_tsLastSentTypingNotification = performance.now();
              let e = a.w.Init(l.kw);
              e.Body().set_chat_entry_type(2),
                e
                  .Body()
                  .set_steamid(
                    s.b
                      .InitFromAccountID(this.accountid_partner)
                      .ConvertTo64BitString(),
                  ),
                l.U5.SendMessage(this.m_CMInterface.GetServiceTransport(), e);
            }
          }
          get is_friend_typing() {
            return this.m_bFriendIsTyping;
          }
          OnFriendTypingNotification() {
            this.m_bFriendIsTyping || (this.m_bFriendIsTyping = !0),
              void 0 !== this.m_iClearFriendIsTypingInterval &&
                window.clearInterval(this.m_iClearFriendIsTypingInterval),
              (this.m_iClearFriendIsTypingInterval = window.setTimeout(() => {
                (this.m_iClearFriendIsTypingInterval = void 0),
                  this.ClearFriendIsTypingState();
              }, 11e3));
          }
          PlayFriendMessageSound() {
            m.xm.FriendStore.GetUserDoNotDisturb() ||
              m.xm.AudioPlaybackManager.PlayAudioURL(
                r.TS.COMMUNITY_CDN_URL +
                  "public/sounds/webui/ui_steam_message_old_smooth.m4a",
              );
          }
          OnReceivedNewMessage(e, t, n, i) {
            if (!e.BIsLocalEcho() && e.unAccountID != this.self.accountid) {
              if (
                (this.ClearFriendIsTypingState(),
                t < 2 && this.is_blocked_friend)
              )
                return;
              if (
                m.xm.NotificationManager.BNotificationsPermitted() &&
                this.chat_partner.BShowMessageNotification() &&
                t < 4 &&
                !m.xm.FriendStore.GetUserDoNotDisturb()
              ) {
                let t = {
                  title: this.chat_partner.display_name,
                  body: n,
                  tag: "message_" + this.chat_partner.accountid,
                  steamid:
                    this.chat_partner.persona.m_steamid.ConvertTo64BitString(),
                };
                (t = this.DecorateNotification(e, t, n, i)),
                  (t.body = this.m_ChatStore.TextFilterStore.FilterText(
                    e.unAccountID,
                    t.body,
                  )),
                  t.body &&
                    (this.GetShowNonFriendWarning() &&
                      m.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                        "NonFriendMessageHandling",
                      ) &&
                      (t.body = ""),
                    m.xm.NotificationManager.DisplayNotificationFromFriend(
                      this.chat_partner,
                      t,
                    ),
                    this.m_bHasUnreadPriorityChatMessages ||
                      ((this.m_bHasUnreadPriorityChatMessages = !0),
                      m.xm.FriendStore.UpdateUnreadMessagesGlobal()));
              }
              if (
                (this.chat_partner.BPlayMessageSound() &&
                  t < 4 &&
                  this.PlayFriendMessageSound(),
                t < 4 && !m.xm.FriendStore.GetUserDoNotDisturb())
              ) {
                const e = m.xm.SettingsStore.FriendsSettings.nChatFlashMode;
                let t = Promise.resolve(0 == e);
                1 == e && (t = m.xm.UIStore.IsChatWindowMinimized(this)),
                  t.then((e) => {
                    e && m.xm.UIStore.FlashChatWindow(this, !0);
                  });
              }
            }
          }
          ClearFriendIsTypingState() {
            void 0 !== this.m_iClearFriendIsTypingInterval &&
              (window.clearInterval(this.m_iClearFriendIsTypingInterval),
              (this.m_iClearFriendIsTypingInterval = void 0)),
              (this.m_bFriendIsTyping = !1);
          }
          PopulateCommitFileUploadFormData(e, t, n) {
            e.append(
              "friend_steamid",
              s.b
                .InitFromAccountID(this.accountid_partner)
                .ConvertTo64BitString(),
            ),
              e.append("spoiler", t.bSpoiler ? "1" : "0"),
              n.unAssociatedAppID &&
                e.append("associated_appid", n.unAssociatedAppID.toString());
          }
          GetMember(e) {
            return e == this.m_unAccountIDFriend
              ? this.chat_partner
              : e == this.self.accountid
                ? this.self
                : void 0;
          }
          get accountid_partner() {
            return this.m_unAccountIDFriend;
          }
          get chat_partner() {
            return m.xm.FriendStore.GetPlayer(this.m_unAccountIDFriend);
          }
          ViewerNeedsApproval(e) {
            let t = `[broadcastviewrequest requestid="${e}"][/broadcastviewrequest]`;
            this.InternalAppendChatMsg(
              new p.D8(
                this.chat_partner.accountid,
                m.xm.GetServerRTime32(),
                0,
                t,
              ),
            ),
              m.xm.FriendStore.GetUserDoNotDisturb() ||
                m.xm.NotificationManager.DisplayNotificationFromFriend(
                  this.chat_partner,
                  {
                    title: "",
                    body: (0, u.we)("#Chat_BroadcastViewRequest_Notification"),
                    tag: "message_" + this.chat_partner.accountid,
                    steamid:
                      this.chat_partner.persona.m_steamid.ConvertTo64BitString(),
                  },
                );
          }
        }
        (0, i.Cg)([d.sH], w.prototype, "m_bFriendIsTyping", void 0),
          (0, i.Cg)([d.sH], w.prototype, "m_bNeedsNonFriendWarning", void 0),
          (0, i.Cg)([d.XI], w.prototype, "ToggleVoiceChat", null),
          (0, i.Cg)(
            [_.oI, (0, g.s)(100)],
            w.prototype,
            "PlayFriendMessageSound",
            null,
          ),
          (0, i.Cg)([d.XI], w.prototype, "ClearFriendIsTypingState", null),
          (0, i.Cg)([d.XI], w.prototype, "ViewerNeedsApproval", null);
        class y {
          static StorageKey = "FriendLastMessageCache";
          m_cache = d.sH.map();
          async Init() {
            try {
              const e = await m.xm.Storage.GetObject(y.StorageKey);
              this.Validate(e)
                ? (this.m_cache.replace(e), this.TrimCache())
                : this.ClearCache();
            } catch (e) {
              v.Error(
                `There was a problem loading recent friend messages from storage: ${e}`,
              ),
                this.ClearCache();
            }
          }
          Validate(e) {
            if ("object" != typeof e || !e) return !1;
            for (const t in e) {
              if (isNaN(parseInt(t))) return !1;
              const n = e[t];
              if ("object" != typeof n) return !1;
              if (
                ("string" != typeof n.strMessage && null !== n.strMessage) ||
                "number" != typeof n.rtTime ||
                "number" != typeof n.unAccountIDSender
              )
                return !1;
            }
            return !0;
          }
          ClearCache() {
            this.m_cache.clear(), this.SerializeToStorage();
          }
          SerializeToStorage() {
            return m.xm.Storage.StoreObject(
              y.StorageKey,
              Object.fromEntries(this.m_cache),
            );
          }
          GetLastMessage(e) {
            return this.m_cache.get(e.toString());
          }
          UpdateLastMessage(e, t) {
            return this.m_cache.set(e.toString(), t), this.SerializeToStorage();
          }
          TrimCache() {
            const e = Date.now() / 1e3;
            this.m_cache.forEach(({ rtTime: t }, n) => {
              t < e - C.Kp.PerYear / 2 && this.m_cache.delete(n);
            }),
              this.SerializeToStorage();
          }
        }
        class E {
          async Init() {}
          GetLastMessage() {}
          async UpdateLastMessage() {}
        }
      },
      1748: (e, t, n) => {
        "use strict";
        n.d(t, { Oz: () => M, o_: () => _, oy: () => g, uZ: () => C });
        var i = n(34629),
          o = n(37779),
          r = n(45518),
          a = n(77631),
          s = n(361),
          l = n(28776),
          c = n(58743),
          m = n(89193),
          d = n(74002),
          u = n(93715),
          h = n(96558),
          p = n(45112);
        const _ = -6;
        var g;
        !(function (e) {
          (e[(e.eOnlineOnly = 0)] = "eOnlineOnly"),
            (e[(e.eOnlineOnlyNotInGame = 1)] = "eOnlineOnlyNotInGame"),
            (e[(e.eOfflineOnly = 2)] = "eOfflineOnly"),
            (e[(e.eIncomingInvites = 3)] = "eIncomingInvites"),
            (e[(e.eOutgoingInvites = 4)] = "eOutgoingInvites"),
            (e[(e.eAll = 5)] = "eAll");
        })(g || (g = {}));
        class C {
          m_eDisplayType = g.eAll;
          m_strName = "";
          m_bCollapsed = !1;
          m_OnHeaderClick = void 0;
          m_rgAccountIDMembers = m.sH.array();
          m_setMembers = new Set();
          constructor(e) {
            (0, m.Gn)(this), (this.m_strName = e);
          }
          get name() {
            return this.m_strName;
          }
          set name(e) {
            this.m_strName = e;
          }
          get icon_url() {
            return "";
          }
          get display_type() {
            return this.m_eDisplayType;
          }
          get onheaderclick() {
            return this.m_OnHeaderClick;
          }
          get collapsed() {
            return this.m_bCollapsed;
          }
          set collapsed(e) {
            this.m_bCollapsed = e;
          }
          GetCurrentMemberSet() {
            return this.m_setMembers;
          }
          get member_count() {
            return this.display_type == g.eAll
              ? this.unfiltered_count
              : this.member_list.length;
          }
          get unfiltered_count() {
            return this.member_accountid_list.length;
          }
          get member_counts() {
            let e = 0,
              t = 0;
            for (let n of this.member_list_unsorted)
              n.persona.is_online && (e++, n.persona.is_ingame && t++);
            return { online: e, ingame: t };
          }
          SetOnHeaderClick(e) {
            this.m_OnHeaderClick = e;
          }
          Clear() {
            this.m_rgAccountIDMembers.clear(), this.m_setMembers.clear();
          }
          AddMember(e) {
            this.HasMember(e) ||
              (this.m_setMembers.add(e), this.m_rgAccountIDMembers.push(e));
          }
          RemoveMember(e) {
            this.HasMember(e) &&
              (this.m_setMembers.delete(e), o.x9(this.m_rgAccountIDMembers, e));
          }
          HasMember(e) {
            return this.m_setMembers.has(e);
          }
          get GetRawMemberList() {
            return this.m_rgAccountIDMembers.map((e) =>
              c.xm.FriendStore.GetPlayer(e),
            );
          }
          get member_list() {
            let e = this.member_list_unsorted.slice();
            return e.sort(u.$c.DefaultFriendSortComparator), e;
          }
          get member_list_unsorted() {
            let e = [];
            for (let t of this.GetRawMemberList)
              if (
                (this.display_type != g.eOnlineOnly || t.persona.is_online) &&
                (this.display_type != g.eOfflineOnly || !t.persona.is_online)
              ) {
                if (this.display_type == g.eOnlineOnlyNotInGame) {
                  if (!t.persona.is_online || t.persona.is_ingame) continue;
                  if (
                    t.persona.m_broadcastAppId &&
                    t.persona.m_broadcastAppId == p.td.appID
                  )
                    continue;
                }
                e.push(t);
              }
            return e;
          }
          get member_accountid_list() {
            return this.m_rgAccountIDMembers;
          }
        }
        (0, i.Cg)([m.sH], C.prototype, "m_strName", void 0),
          (0, i.Cg)([m.sH], C.prototype, "m_bCollapsed", void 0),
          (0, i.Cg)([m.EW], C.prototype, "member_count", null),
          (0, i.Cg)([m.EW], C.prototype, "unfiltered_count", null),
          (0, i.Cg)([m.EW], C.prototype, "member_counts", null),
          (0, i.Cg)([m.XI], C.prototype, "SetOnHeaderClick", null),
          (0, i.Cg)([m.XI], C.prototype, "Clear", null),
          (0, i.Cg)([m.XI], C.prototype, "AddMember", null),
          (0, i.Cg)([m.XI], C.prototype, "RemoveMember", null),
          (0, i.Cg)([m.EW], C.prototype, "member_list", null),
          (0, i.Cg)([m.EW], C.prototype, "member_list_unsorted", null);
        class f extends C {
          m_iGroupID;
          m_bModifiable = !1;
          m_bAcceptsGroupRemovals = !1;
          constructor(e, t = -1, n = !1, i = !1) {
            super(e),
              (0, m.Gn)(this),
              (this.m_iGroupID = t),
              (this.m_bModifiable = n),
              (this.m_bAcceptsGroupRemovals = i);
          }
          get id() {
            return this.m_iGroupID;
          }
          get unique_id() {
            return "" + this.m_iGroupID;
          }
          get modifiable() {
            return this.m_bModifiable;
          }
          get accepts_group_removals() {
            return this.m_bAcceptsGroupRemovals;
          }
          get should_filter_categorized_friends() {
            return !1;
          }
          get GetRawMemberList() {
            return this.member_accountid_list.map((e) =>
              c.xm.FriendStore.GetPlayer(e),
            );
          }
          GetMembersMatchingSearch(e) {
            let t = [];
            for (let n of this.GetRawMemberList)
              n.BMatchesSearchString(e, !1) && t.push(n);
            return t.sort(u.$c.DefaultFriendSortComparator), t;
          }
        }
        (0, i.Cg)([m.EW], f.prototype, "GetRawMemberList", null);
        class S extends f {
          get display_type() {
            return c.xm.SettingsStore.FriendsSettings
              .bHideOfflineFriendsInTagGroups
              ? g.eOnlineOnly
              : g.eAll;
          }
        }
        class v extends f {
          constructor(e, t) {
            super(e, t, !1, !0), (this.m_eDisplayType = g.eOnlineOnlyNotInGame);
          }
          get unique_id() {
            return "all";
          }
          get display_type() {
            return c.xm.SettingsStore.FriendsSettings
              .bCategorizeInGameFriendsByGame
              ? g.eOnlineOnlyNotInGame
              : g.eOnlineOnly;
          }
          get should_filter_categorized_friends() {
            return c.xm.SettingsStore.FriendsSettings.bHideCategorizedFriends;
          }
        }
        class b extends f {
          constructor(e, t) {
            super(e, t, !1, !0);
          }
          get unique_id() {
            return "offline";
          }
          get should_filter_categorized_friends() {
            let e = c.xm.SettingsStore.FriendsSettings;
            return (
              e.bHideCategorizedFriends && !e.bHideOfflineFriendsInTagGroups
            );
          }
        }
        class I extends f {
          constructor(e, t) {
            super(e, t, !1, !0), (this.m_eDisplayType = g.eOutgoingInvites);
          }
          get unique_id() {
            return "outgoing";
          }
        }
        class w extends f {
          constructor(e, t) {
            super(e, t, !1, !0);
          }
          get unique_id() {
            return "ingame";
          }
        }
        class y extends f {
          m_mapSteamIDToMutualFriends = m.sH.map();
          m_unMutualFriendsCacheHash = 0;
          constructor(e, t) {
            super(e, t, !1, !0), (this.m_eDisplayType = g.eIncomingInvites);
          }
          get unique_id() {
            return "incominginvites";
          }
          GetMutualFriendsCacheHash() {
            return this.m_unMutualFriendsCacheHash;
          }
          SetMutualFriendsCacheHash(e) {
            this.m_unMutualFriendsCacheHash = e;
          }
          SetMutualFriends(e) {
            this.m_mapSteamIDToMutualFriends.replace(e);
          }
          get map_steamid_to_mutual_friends() {
            return this.m_mapSteamIDToMutualFriends;
          }
        }
        class E extends f {
          constructor(e) {
            super("", e, !1, !1), (0, m.Gn)(this);
          }
          get is_initialized() {
            return (
              0 != this.id &&
              c.xm.AppInfoStore.GetAppInfo(this.id).is_initialized
            );
          }
          get unique_id() {
            return "game_" + this.id;
          }
          get name() {
            return !this.is_initialized || this.id < 0
              ? ""
              : c.xm.AppInfoStore.GetAppInfo(this.id).name;
          }
          set name(e) {}
          get icon_url() {
            return !this.is_initialized || this.id < 0
              ? ""
              : c.xm.AppInfoStore.GetAppInfo(this.id).icon_url;
          }
          PlayerGroupSortComparator(e, t, n, i) {
            let o = e.persona.player_group,
              r = t.persona.player_group,
              a = o ? Math.max(e.persona.player_group_size, n.get(o) || 1) : 1,
              s = r ? Math.max(t.persona.player_group_size, n.get(r) || 1) : 1;
            return a != s
              ? s - a
              : a > 1 && o != r
                ? o.localeCompare(r)
                : i(e, t);
          }
          get member_list() {
            let e = [],
              t = new Map();
            for (let n of this.GetRawMemberList)
              if ((e.push(n), n.persona.player_group)) {
                let e = t.get(n.persona.player_group);
                t.set(n.persona.player_group, e ? e + 1 : 1);
              }
            let n = u.$c.DefaultFriendSortComparator;
            return (
              0 == this.id
                ? e.sort(n)
                : e.sort((e, i) => this.PlayerGroupSortComparator(e, i, t, n)),
              e
            );
          }
        }
        (0, i.Cg)([m.$Z], E.prototype, "member_list", null);
        const D = { groups: { offline: !0, outgoing: !0 } },
          A = "FriendGroupCollapse";
        class T {
          constructor() {
            (0, m.Gn)(this);
          }
          m_mapCollapsePrefs = m.sH.map();
          Init() {
            c.xm.SettingsStore.GetObjectFromLocalStorageWhenReady(A, D).then(
              (e) => {
                this.m_mapCollapsePrefs.clear();
                for (let t in e.groups)
                  "boolean" == typeof e.groups[t] &&
                    this.m_mapCollapsePrefs.set(t, e.groups[t]);
              },
            );
          }
          GetUserGroupCollapsed(e) {
            return !!this.m_mapCollapsePrefs.get(e);
          }
          SetUserGroupCollapsed(e, t) {
            !!this.m_mapCollapsePrefs.get(e) != t &&
              (t || D.groups[e]
                ? this.m_mapCollapsePrefs.set(e, t)
                : this.m_mapCollapsePrefs.delete(e),
              this.WritePrefs());
          }
          ToggleUserGroupCollapsed(e) {
            this.SetUserGroupCollapsed(e, !this.GetUserGroupCollapsed(e));
          }
          WritePrefs() {
            c.xm.SettingsStore.StoreObjectInLocalStorage(A, {
              groups: Object.fromEntries(this.m_mapCollapsePrefs),
            });
          }
        }
        (0, i.Cg)([m.XI], T.prototype, "SetUserGroupCollapsed", null),
          (0, i.Cg)([m.XI], T.prototype, "ToggleUserGroupCollapsed", null);
        class M {
          m_FriendStore;
          m_CMInterface;
          m_FriendGroupDisplayPrefs = new T();
          m_mapGroups = m.sH.map();
          m_mapGameGroups = m.sH.map();
          m_singletonGameGroup = new E(0);
          m_nonSteamGameGroup = new E(_);
          m_groupAllFriends = new v((0, d.we)("#FriendGroup_Online"), -1);
          m_groupOfflineFriends = new b((0, d.we)("#FriendGroup_Offline"), -3);
          m_groupIngameFriends = new w((0, d.we)("#FriendGroup_InGame"), -4);
          m_groupIncomingInvites = new y(
            (0, d.we)("#FriendGroup_IncomingInvites"),
            -5,
          );
          m_groupOutgoingInvites = new I(
            (0, d.we)("#FriendGroup_Outgoing"),
            -6,
          );
          constructor(e) {
            (0, m.Gn)(this),
              (this.m_FriendStore = e),
              (this.m_groupOfflineFriends.m_eDisplayType = g.eOfflineOnly);
          }
          Init(e) {
            (this.m_CMInterface = e),
              this.m_FriendGroupDisplayPrefs.Init(),
              this.m_CMInterface.AddOnLogonCallback(async () => {
                let e = r.w.Init(h.SJ),
                  t = await h.DF.GetCategories(
                    this.m_CMInterface.GetServiceTransport(),
                    e,
                  );
                1 == t.GetEResult() && this.RecvCategoriesList(t.Body());
              }, 47);
          }
          get all_friends() {
            return this.m_groupAllFriends;
          }
          get ingame_group() {
            return this.m_groupIngameFriends;
          }
          get incoming_invites_group() {
            return this.m_groupIncomingInvites;
          }
          get outgoing_invites_group() {
            return this.m_groupOutgoingInvites;
          }
          get friend_groups() {
            return [
              ...this.game_groups,
              ...this.user_groups,
              ...this.default_groups,
            ];
          }
          get groupDisplayPrefs() {
            return this.m_FriendGroupDisplayPrefs;
          }
          get user_groups() {
            let e = [];
            return (
              this.m_mapGroups.forEach((t) => {
                e.push(t);
              }),
              e.sort((e, t) => e.name.localeCompare(t.name)),
              e
            );
          }
          get game_groups() {
            let e = [],
              t = 2;
            return (
              1 == this.m_singletonGameGroup.unfiltered_count && (t = 1),
              this.m_mapGameGroups.forEach((n) => {
                n.name && n.member_count >= t && e.push(n);
              }),
              e.sort((e, t) =>
                e.member_count == t.member_count
                  ? e.name.localeCompare(t.name)
                  : t.member_count - e.member_count,
              ),
              e
            );
          }
          get singleton_game_group() {
            if (1 == this.m_singletonGameGroup.unfiltered_count) {
              let e = this.m_singletonGameGroup.member_accountid_list[0];
              if (!c.xm.FriendStore.GetPlayer(e).persona.is_in_nonsteam_game)
                return;
            }
            return this.m_singletonGameGroup;
          }
          get default_groups() {
            return [this.m_groupAllFriends, this.m_groupOfflineFriends];
          }
          get games_with_friends_playing() {
            return Array.from(this.m_mapGameGroups.keys());
          }
          GetGameGroup(e) {
            return this.m_mapGameGroups.get(e);
          }
          GetCountFriendsInGame(e) {
            return this.m_mapGameGroups.get(e)?.unfiltered_count || 0;
          }
          GetMaxCountFriendsInGame() {
            return Array.from(this.m_mapGameGroups.values()).reduce(
              (e, t) => (t.unfiltered_count > e ? t.unfiltered_count : e),
              0,
            );
          }
          OnFullFriendsListUpdateStart() {
            this.m_groupOfflineFriends.Clear(),
              this.m_groupAllFriends.Clear(),
              this.m_groupIncomingInvites.Clear(),
              this.m_groupOutgoingInvites.Clear();
          }
          OnFullFriendsListUpdateComplete() {
            this.m_mapGameGroups.clear(),
              this.m_singletonGameGroup.Clear(),
              this.m_groupIngameFriends.Clear();
            for (let e of this.m_FriendStore.all_friends)
              if (e.persona.is_ingame) {
                let t = e.persona.is_in_nonsteam_game
                  ? _
                  : e.persona.m_unGamePlayedAppID;
                this.OnFriendGameChanged(e.accountid, 0, t);
              }
          }
          OnPersonaStateCacheReset() {
            this.m_mapGameGroups.clear(),
              this.m_singletonGameGroup.Clear(),
              this.m_groupIngameFriends.Clear();
          }
          OnFriendAdded(e) {
            this.m_groupAllFriends.AddMember(e),
              this.m_groupOfflineFriends.AddMember(e);
          }
          OnFriendRemoved(e) {
            this.m_groupAllFriends.RemoveMember(e),
              this.m_groupOfflineFriends.RemoveMember(e),
              this.m_groupIngameFriends.RemoveMember(e),
              this.m_singletonGameGroup.RemoveMember(e),
              this.m_mapGroups.forEach((t) => {
                t.RemoveMember(e);
              }),
              this.m_mapGameGroups.forEach((t) => {
                t.RemoveMember(e);
              });
          }
          OnFriendGameChanged(e, t, n) {
            let i =
                t == _
                  ? this.m_nonSteamGameGroup
                  : 0 != t
                    ? this.m_mapGameGroups.get(t)
                    : null,
              o =
                n == _
                  ? this.m_nonSteamGameGroup
                  : 0 != n
                    ? this.m_mapGameGroups.get(n)
                    : null;
            (i && o && t == n) ||
              (o && o.HasMember(e)) ||
              (i &&
                i.HasMember(e) &&
                (i.RemoveMember(e),
                0 == i.unfiltered_count || i == this.m_nonSteamGameGroup
                  ? this.m_singletonGameGroup.RemoveMember(e)
                  : 1 == i.unfiltered_count &&
                    this.m_singletonGameGroup.AddMember(
                      i.member_accountid_list[0],
                    )),
              o || 0 == n || ((o = new E(n)), this.m_mapGameGroups.set(n, o)),
              o &&
                (0 == o.unfiltered_count || o == this.m_nonSteamGameGroup
                  ? this.m_singletonGameGroup.AddMember(e)
                  : 1 == o.unfiltered_count &&
                    this.m_singletonGameGroup.RemoveMember(
                      o.member_accountid_list[0],
                    ),
                o.AddMember(e)),
              0 != n
                ? this.m_groupIngameFriends.AddMember(e)
                : this.m_groupIngameFriends.RemoveMember(e));
          }
          OnIncomingInviteAdded(e) {
            this.m_groupIncomingInvites.AddMember(e);
          }
          OnIncomingInviteRemoved(e) {
            this.m_groupIncomingInvites.RemoveMember(e);
          }
          OnOutgoingInviteAdded(e) {
            this.m_groupOutgoingInvites.AddMember(e);
          }
          OnOutgoingInviteRemoved(e) {
            this.m_groupOutgoingInvites.RemoveMember(e);
          }
          EnsureMutualFriendsForIncomingInvites() {
            function e(e) {
              let t = 2166136261;
              for (let n = 0; n < e.length; ++n)
                (t ^= e.charCodeAt(n)),
                  (t += (t << 1) + (t << 4) + (t << 7) + (t << 8) + (t << 24));
              return t >>> 0;
            }
            let t = 0;
            for (let n of this.m_groupIncomingInvites.member_list)
              t ^= e("" + n.accountid);
            if (this.m_groupIncomingInvites.GetMutualFriendsCacheHash() == t)
              return;
            this.m_groupIncomingInvites.SetMutualFriendsCacheHash(t);
            let n = r.w.Init(l.YH);
            l.xt
              .GetMutualFriendsForIncomingInvites(
                this.m_CMInterface.GetServiceTransport(),
                n,
              )
              .then((e) => {
                if (1 != e.GetEResult()) return;
                if (
                  this.m_groupIncomingInvites.GetMutualFriendsCacheHash() != t
                )
                  return;
                let n = m.sH.map();
                for (let t of e.Body().incoming_invite_mutual_friends_lists()) {
                  let e = new Set();
                  for (let n of t.mutual_friend_account_ids()) e.add(n);
                  n.set(t.steamid(), e);
                }
                this.m_groupIncomingInvites.SetMutualFriends(n);
              });
          }
          CreateGroup(e, t) {
            let n = r.w.Init(s.oX, 5560);
            return (
              n.Body().set_groupname(e),
              t && n.Body().set_steamid_friends(t),
              new Promise((i, o) => {
                this.m_CMInterface
                  .SendMsgAndAwaitResponse(n, s.P8)
                  .then((n) => {
                    1 == n.Body().eresult() &&
                      (0, m.h5)(() => {
                        let i = n.Body().groupid(),
                          o = new S(e, n.Body().groupid(), !0);
                        if (t)
                          for (let e of t)
                            o.AddMember(new a.b(e).GetAccountID());
                        this.m_mapGroups.set(i, o);
                      }),
                      i(1 == n.Body().eresult());
                  })
                  .catch(() => {
                    i(!1);
                  });
              })
            );
          }
          ManageGroup(e, t, n, i) {
            if (t == e.name && !n && !i) return Promise.resolve(!0);
            let o = r.w.Init(s.Fh, 5564);
            return (
              o.Body().set_groupid(e.id),
              t && t != e.name && o.Body().set_groupname(t),
              n && o.Body().set_steamid_friends_added(n),
              i && o.Body().set_steamid_friends_removed(i),
              new Promise((r, l) => {
                this.m_CMInterface
                  .SendMsgAndAwaitResponse(o, s.QP)
                  .then((o) => {
                    if (1 == o.Body().eresult()) {
                      e.name = t;
                      for (let t of n) e.AddMember(new a.b(t).GetAccountID());
                      for (let t of i)
                        e.RemoveMember(new a.b(t).GetAccountID());
                    }
                    r(1 == o.Body().eresult());
                  })
                  .catch(() => {
                    r(!1);
                  });
              })
            );
          }
          RemoveGroup(e) {
            let t = r.w.Init(s.zw, 5562);
            t.Body().set_groupid(e.id),
              this.m_CMInterface.SendMsgAndAwaitResponse(t, s.Ce).then((t) => {
                1 == t.Body().eresult() && this.HandleGroupRemoval(e);
              });
          }
          HandleGroupRemoval(e) {
            this.m_mapGroups.delete(e.id);
          }
          get categorized_friend_set() {
            let e = new Set();
            return (
              this.m_mapGroups.forEach((t) => {
                t.member_accountid_list.forEach(e.add.bind(e));
              }),
              e
            );
          }
          RecvCategoriesList(e) {
            this.m_mapGroups.clear();
            for (let t of e.categories()) {
              let e = t.groupid(),
                n = new S(t.name() || "", t.groupid(), !0);
              (n.m_eDisplayType = g.eAll), this.m_mapGroups.set(e, n);
              for (let e of t.accountid_members()) n.AddMember(e);
            }
          }
          TransferFriendFromToGroup(e, t, n) {
            let i = n && n.modifiable,
              o = t && t.modifiable,
              a = [];
            if (i) {
              let t = r.w.Init(s.Pn, 5566);
              t.Body().set_groupid(n.id),
                t
                  .Body()
                  .set_steamiduser(e.persona.m_steamid.ConvertTo64BitString()),
                a.push(
                  this.m_CMInterface
                    .SendMsgAndAwaitResponse(t, s.Yi)
                    .then(
                      (t) =>
                        1 == t.Body().eresult() &&
                        (n.AddMember(e.accountid), !0),
                    ),
                );
            }
            if (o) {
              let n = r.w.Init(s.Np, 5568);
              n.Body().set_groupid(t.id),
                n
                  .Body()
                  .set_steamiduser(e.persona.m_steamid.ConvertTo64BitString()),
                a.push(
                  this.m_CMInterface
                    .SendMsgAndAwaitResponse(n, s.We)
                    .then(
                      (n) =>
                        1 == n.Body().eresult() &&
                        (t.RemoveMember(e.accountid),
                        0 == t.unfiltered_count && this.HandleGroupRemoval(t),
                        !0),
                    ),
                );
            }
            return Promise.all(a);
          }
          FillInChatUsabilityMetrics(e) {
            e.metrics().set_friends_category_count(this.m_mapGroups.size),
              e
                .metrics()
                .set_friends_categorized_count(
                  this.categorized_friend_set.size,
                ),
              this.singleton_game_group &&
                e
                  .metrics()
                  .set_friends_in_game_singleton_count(
                    this.singleton_game_group.unfiltered_count,
                  ),
              e.metrics().set_game_group_count(this.game_groups.length);
            let t = (e) =>
                this.m_FriendGroupDisplayPrefs.GetUserGroupCollapsed(
                  e.unique_id,
                ),
              n = e.ui_state().category_collapse();
            n.set_in_game_collapsed(t(this.m_singletonGameGroup)),
              n.set_online_collapsed(t(this.m_groupAllFriends)),
              n.set_offline_collapsed(t(this.m_groupOfflineFriends)),
              n.set_categories_collapsed(
                o.$D(Array.from(this.m_mapGroups.values()), t),
              ),
              n.set_game_groups_collapsed(
                o.$D(Array.from(this.m_mapGameGroups.values()), t),
              );
          }
        }
        (0, i.Cg)([m.EW], M.prototype, "friend_groups", null),
          (0, i.Cg)([m.EW], M.prototype, "user_groups", null),
          (0, i.Cg)([m.EW], M.prototype, "game_groups", null),
          (0, i.Cg)([m.EW], M.prototype, "singleton_game_group", null),
          (0, i.Cg)([m.EW], M.prototype, "default_groups", null),
          (0, i.Cg)([m.EW], M.prototype, "games_with_friends_playing", null),
          (0, i.Cg)(
            [m.XI],
            M.prototype,
            "OnFullFriendsListUpdateComplete",
            null,
          ),
          (0, i.Cg)([m.XI], M.prototype, "OnPersonaStateCacheReset", null),
          (0, i.Cg)([m.XI], M.prototype, "HandleGroupRemoval", null),
          (0, i.Cg)([m.EW], M.prototype, "categorized_friend_set", null),
          (0, i.Cg)([m.XI], M.prototype, "RecvCategoriesList", null),
          (0, i.Cg)([m.XI], M.prototype, "TransferFriendFromToGroup", null);
      },
      2856: (e, t, n) => {
        "use strict";
        n.d(t, { f: () => m, x: () => d });
        var i = n(34629),
          o = n(45518),
          r = n(96558),
          a = n(58743),
          s = n(89193),
          l = n(37779),
          c = n(77765);
        function m(e, t) {
          return (
            e == t ||
            (e &&
              t &&
              e.friend == t.friend &&
              e.clan == t.clan &&
              e.chat == t.chat)
          );
        }
        class d {
          m_FriendStore;
          m_ClanStore;
          m_ChatStore;
          m_CMInterface;
          m_rgFavorites = s.sH.array();
          constructor(e) {
            (0, s.Gn)(this),
              (this.m_FriendStore = e),
              (this.m_ClanStore = e.ClanStore);
          }
          Init(e) {
            (this.m_CMInterface = e),
              (this.m_ChatStore = a.xm.ChatStore),
              this.m_CMInterface.AddOnLogonCallback(() => {
                let e = o.w.Init(r.J3);
                r.DF.GetFavorites(
                  this.m_CMInterface.GetServiceTransport(),
                  e,
                ).then((e) => {
                  1 == e.GetEResult() &&
                    this.RecvFavoritesList(e.Body().favorites());
                });
              }, 47),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                r.AJ.FavoritesChangedHandler,
                (e) => (this.RecvFavoritesList(e.Body().favorites()), 1),
              );
          }
          BIsFavorited(e) {
            for (let t of this.m_rgFavorites) if (m(t, e)) return !0;
            return !1;
          }
          get favorites() {
            return this.m_rgFavorites;
          }
          AddToFavorites(e, t) {
            let n = this.m_rgFavorites.findIndex((t) => m(t, e));
            return -1 === n || (void 0 !== t && n !== t)
              ? (-1 !== n
                  ? l.yY(this.m_rgFavorites, n, t > n ? t - 1 : t)
                  : void 0 !== t
                    ? this.m_rgFavorites.splice(t, 0, e)
                    : this.m_rgFavorites.push(e),
                this.SaveFavorites())
              : Promise.resolve(!0);
          }
          RemoveFromFavorites(e) {
            return l.Wp(this.m_rgFavorites, (t) => m(t, e))
              ? this.SaveFavorites()
              : Promise.resolve(!0);
          }
          OnFriendRemoved(e) {
            let t = this.m_FriendStore.GetPlayer(e);
            this.RemoveFromFavorites({ friend: t });
          }
          SaveFavorites() {
            let e = o.w.Init(r.n_);
            for (let t of this.m_rgFavorites) {
              let n = e.Body().add_favorites();
              t.friend
                ? n.set_accountid(t.friend.accountid)
                : t.clan
                  ? n.set_clanid(t.clan.clanid)
                  : t.chat
                    ? n.set_chat_group_id(t.chat.GetGroupID())
                    : (0, c.w)(!1, "empty favorite struct");
            }
            return r.DF.SetFavorites(
              this.m_CMInterface.GetServiceTransport(),
              e,
            ).then((e) => 1 == e.GetEResult());
          }
          ReadFavorites(e) {
            this.m_rgFavorites.clear();
            for (let t of e)
              if (t.accountid()) {
                let e = this.m_FriendStore.GetFriend(t.accountid());
                e && this.m_rgFavorites.push({ friend: e });
              } else if (t.clanid()) {
                let e = this.m_ClanStore.GetClan(t.clanid());
                e && this.m_rgFavorites.push({ clan: e });
              } else if (t.chat_group_id()) {
                let e = this.m_ChatStore.GetChatRoomGroup(t.chat_group_id());
                e && this.m_rgFavorites.push({ chat: e });
              }
          }
          RecvFavoritesList(e) {
            (0, s.z7)(
              () =>
                this.m_FriendStore.friends_list_ready &&
                this.m_ChatStore.chat_group_list_ready,
              this.ReadFavorites.bind(this, e),
            );
          }
          FillInChatUsabilityMetrics(e) {
            e
              .metrics()
              .set_friends_favorite_count(
                l.$D(this.m_rgFavorites, (e) => !!e.friend),
              ),
              e
                .metrics()
                .set_group_chat_favorite_count(
                  l.$D(this.m_rgFavorites, (e) => !!e.chat || !!e.clan),
                );
          }
        }
        (0, i.Cg)([s.XI], d.prototype, "AddToFavorites", null),
          (0, i.Cg)([s.XI], d.prototype, "RemoveFromFavorites", null),
          (0, i.Cg)([s.XI], d.prototype, "OnFriendRemoved", null),
          (0, i.Cg)([s.XI], d.prototype, "ReadFavorites", null);
      },
      89523: (e, t, n) => {
        "use strict";
        n.d(t, { CO: () => a, _k: () => l, h8: () => c, wj: () => s });
        var i = n(50622),
          o = n(77765),
          r = n(34879);
        function a(e) {
          let t = (0, i.uX)(e);
          return (
            (0, o.w)(
              t,
              "Couldn't find owning window to determine browser context",
            ),
            l(t)
          );
        }
        function s(e) {
          let t = e.ownerDocument.defaultView;
          return (
            (0, o.w)(
              t,
              "Couldn't find owning window to determine browser context",
            ),
            l(t)
          );
        }
        function l(e) {
          let t = r.m;
          return (
            e &&
              ((0, o.w)(
                e.__FriendsUIBrowserContext,
                "FriendsUI Browser context missing from owner window",
              ),
              e.__FriendsUIBrowserContext && (t = e.__FriendsUIBrowserContext)),
            t
          );
        }
        function c(e) {
          let t = l(e);
          return t &&
            t.m_unPID != r.m.m_unPID &&
            t.m_nBrowserID != r.m.m_nBrowserID
            ? t
            : null;
        }
      },
      78919: (e, t, n) => {
        "use strict";
        n.d(t, {
          DW: () => Gn,
          kP: () => yn,
          Yw: () => Mn,
          g: () => Rn,
          wj: () => wn.wj,
          CO: () => wn.CO,
          _k: () => wn._k,
          h8: () => wn.h8,
          xT: () => kn,
          ZM: () => Fn,
          PJ: () => Ln,
        });
        var i = n(34629),
          o = n(77522),
          r = n(56132),
          a = n(78116),
          s = n(48545);
        class l {
          AddTrackedWindow(e) {}
          BIsUserIdle(e) {
            return this.GetUserIdleTime() > e;
          }
          AddOnIdleCallback(e, t) {
            this.RunOnIdleCallback(e, t);
          }
          AddOnNextActivityCallback(e) {
            this.m_rgActivityCallbacks.push(e);
          }
          Init() {}
          m_rgActivityCallbacks = [];
          FireOnUserActivityCallbacks() {
            if (this.m_rgActivityCallbacks.length) {
              for (let e of this.m_rgActivityCallbacks) e();
              this.m_rgActivityCallbacks = [];
            }
          }
          RunOnIdleCallback(e, t) {
            this.GetUserIdleTime() >= t - 1
              ? e()
              : SetBackgroundTimeout(
                  this.RunOnIdleCallback.bind(this, e, t),
                  1e3 * (t - this.GetUserIdleTime()),
                );
          }
        }
        var c = n(82924),
          m = n(37779);
        class d extends l {
          m_msUserLastAction;
          m_rgWindows = [];
          m_bEventTrackingActive = !1;
          constructor() {
            super(), (this.m_msUserLastAction = performance.now());
          }
          GetUserIdleTime() {
            return Math.floor(
              (performance.now() - this.m_msUserLastAction) / 1e3,
            );
          }
          AddTrackedWindow(e) {
            this.m_rgWindows.push(e),
              e.addEventListener(
                "unload",
                this.RemoveTrackedWindow.bind(this, e),
              ),
              this.m_bEventTrackingActive && this.BindEventsForWindow(e);
          }
          Init() {
            window.setTimeout(this.BindEvents.bind(this), 1e4);
          }
          RemoveTrackedWindow(e) {
            this.m_bEventTrackingActive && this.UnbindEventsForWindow(e),
              m.x9(this.m_rgWindows, e);
          }
          OnUserAction() {
            (this.m_msUserLastAction = performance.now()),
              this.FireOnUserActivityCallbacks(),
              this.UnbindEvents(),
              window.setTimeout(this.BindEvents.bind(this), 1e4);
          }
          BindEvents() {
            if (!this.m_bEventTrackingActive) {
              this.m_bEventTrackingActive = !0;
              for (let e of this.m_rgWindows) this.BindEventsForWindow(e);
            }
          }
          UnbindEvents() {
            if (this.m_bEventTrackingActive) {
              this.m_bEventTrackingActive = !1;
              for (let e of this.m_rgWindows) this.UnbindEventsForWindow(e);
            }
          }
          static sm_rgUserEvents = [
            "mousemove",
            "mousedown",
            "keypress",
            "focus",
          ];
          UnbindEventsForWindow(e) {
            for (let t of d.sm_rgUserEvents)
              e.removeEventListener(t, this.OnUserAction);
          }
          BindEventsForWindow(e) {
            for (let t of d.sm_rgUserEvents)
              e.addEventListener(t, this.OnUserAction);
          }
        }
        (0, i.Cg)([c.oI], d.prototype, "OnUserAction", null);
        class u extends d {
          m_eActiveState = s.GQ.k_EComputerActiveStateActive;
          m_hRegisterForComputerActiveStateChange = null;
          m_hFireUserStillActive = void 0;
          constructor() {
            super();
          }
          Init() {
            this.m_hRegisterForComputerActiveStateChange =
              SteamClient.WebChat.RegisterForComputerActiveStateChange(
                this.OnComputerActiveStateChange,
              );
          }
          OnComputerActiveStateChange(e, t) {
            let n = new Date().getTime() / 1e3 - t;
            (this.m_eActiveState = e),
              (this.m_msUserLastAction = Math.max(
                performance.now() - 1e3 * n,
                this.m_msUserLastAction,
              )),
              this.m_eActiveState == s.GQ.k_EComputerActiveStateActive &&
                (this.m_hFireUserStillActive &&
                  (clearTimeout(this.m_hFireUserStillActive),
                  (this.m_hFireUserStillActive = void 0)),
                this.UpdateStillActive());
          }
          UpdateStillActive() {
            (this.m_hFireUserStillActive = void 0),
              this.m_eActiveState == s.GQ.k_EComputerActiveStateActive &&
                (this.OnUserAction(),
                (this.m_hFireUserStillActive = SetBackgroundTimeout(
                  this.UpdateStillActive,
                  1e4,
                )));
          }
        }
        (0, i.Cg)([c.oI], u.prototype, "OnComputerActiveStateChange", null),
          (0, i.Cg)([c.oI], u.prototype, "UpdateStillActive", null);
        var h,
          p = n(58743);
        class _ {
          m_FriendStore;
          constructor(e) {
            this.m_FriendStore = e;
          }
          DisplayNotificationFromFriend(e, t, n = {}) {
            return this.DisplayNotification(
              { icon: e.persona.avatar_url_medium, ...t },
              (t) => e.OpenChatDialog(t),
              n,
            );
          }
          BNotificationsPermitted() {
            return (
              !p.xm.ParentalStore.BIsFriendsBlocked() &&
              !p.xm.SettingsStore.IsSteamInTournamentMode()
            );
          }
          RequestNotificationPermission() {
            return Promise.resolve(!0);
          }
        }
        !(function (e) {
          (e[(e.k_EClientUINotificationGroupChatMessage = 1)] =
            "k_EClientUINotificationGroupChatMessage"),
            (e[(e.k_EClientUINotificationFriendChatMessage = 2)] =
              "k_EClientUINotificationFriendChatMessage"),
            (e[(e.k_EClientUINotificationFriendPersonaState = 3)] =
              "k_EClientUINotificationFriendPersonaState");
        })(h || (h = {}));
        class g extends _ {
          DisplayNotification(e, t, n = {}) {
            if (e.tag) {
              let n = JSON.stringify(e);
              e.tag.startsWith("groupmsg_")
                ? SteamClient.ClientNotifications.DisplayClientNotification(
                    h.k_EClientUINotificationGroupChatMessage,
                    n,
                    t,
                  )
                : e.tag.startsWith("message_")
                  ? SteamClient.ClientNotifications.DisplayClientNotification(
                      h.k_EClientUINotificationFriendChatMessage,
                      n,
                      t,
                    )
                  : p.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                      "PersonaNotifications",
                    ) &&
                    e.tag.startsWith("state_") &&
                    SteamClient.ClientNotifications.DisplayClientNotification(
                      h.k_EClientUINotificationFriendPersonaState,
                      n,
                      t,
                    );
            }
            return Promise.resolve();
          }
        }
        var C = n(34879);
        class f extends _ {
          GetNotificationPermissionLevel() {
            if ("undefined" == typeof Notification) return "unsupported";
            let e = Notification.permission;
            return "default" == e || "granted" == e || "denied" == e
              ? e
              : "unsupported";
          }
          DisplayNotification(e, t, n = {}) {
            let i = { body: e.body, icon: e.icon, tag: e.tag, silent: !0 },
              o = new Notification(e.title, {
                badge:
                  a.TS.COMMUNITY_CDN_URL +
                  "public/shared/images/responsive/share_steam_logo.png",
                ...i,
              });
            return (
              window.setTimeout(() => {
                o.close();
              }, n.timeoutMS || 5e3),
              o.addEventListener("click", () =>
                this.OnNotificationClicked(o, t),
              ),
              new Promise((e, t) => {
                o.addEventListener("close", () => {
                  e();
                });
              })
            );
          }
          OnNotificationClicked(e, t) {
            t(C.m), e.close();
          }
          BNotificationsPermitted() {
            return "granted" == this.GetNotificationPermissionLevel();
          }
          RequestNotificationPermission() {
            return "unsupported" == this.GetNotificationPermissionLevel()
              ? Promise.resolve(!1)
              : this.BNotificationsPermitted()
                ? super.RequestNotificationPermission()
                : new Promise((e, t) => {
                    Notification.requestPermission((t) => {
                      e("granted" == t);
                    });
                  });
          }
        }
        var S = n(10449),
          v = n(69168),
          b = n(9907),
          I = n(77765);
        class w {
          m_data;
          m_bDropConsumed = !1;
          m_onDropCompleteCallbacks = new b.lu();
          m_vecClasses = [];
          BInDrag() {
            return !!this.m_data;
          }
          StartDrag(e) {
            (0, I.w)(
              !this.m_data,
              "second drag started, existing data discarded",
              this.m_data,
            ),
              (this.m_data = e),
              (this.m_bDropConsumed = !1),
              this.m_vecClasses.push("in_global_drag"),
              this.m_vecClasses.push("drag_type_" + e.type),
              void 0 !== e.source &&
                this.m_vecClasses.push("drag_source_" + e.source);
            for (let e of Array.from(v.Of.GetPopups()))
              e.window &&
                e.window.document.body &&
                e.window.document.body.classList.add(...this.m_vecClasses);
            window.document.body.classList.add(...this.m_vecClasses);
          }
          EndDrag() {
            this.m_onDropCompleteCallbacks.Dispatch(this.m_bDropConsumed),
              this.m_onDropCompleteCallbacks.ClearAllCallbacks(),
              (this.m_data = void 0),
              (this.m_bDropConsumed = void 0);
            for (let e of Array.from(v.Of.GetPopups()))
              e.window &&
                e.window.document.body &&
                e.window.document.body.classList.remove(...this.m_vecClasses);
            window.document.body.classList.remove(...this.m_vecClasses),
              (this.m_vecClasses = []);
          }
          GetDragData() {
            return this.m_data;
          }
          BWasDropConsumed() {
            return this.m_bDropConsumed;
          }
          SetDropConsumed() {
            (0, I.w)(
              this.BInDrag(),
              "Asked to set drop consumed but no active drag",
            ),
              (this.m_bDropConsumed = !0);
          }
          RegisterForDropComplete(e) {
            return this.m_onDropCompleteCallbacks.Register(e);
          }
        }
        var y = n(94325),
          E = n(45518),
          D = n(89193);
        class A {
          m_fnFillAppUsabilityMetrics;
          constructor(e, t) {
            (this.m_fnFillAppUsabilityMetrics = e),
              t.messageHandlers.RegisterServiceNotificationHandler(
                y.pB.NotifyRequestClientUsabilityMetricsHandler,
                async (e) => {
                  let t = E.w.Init(y.L6);
                  return (
                    t.Body().set_metrics_run_id(e.Body().metrics_run_id()),
                    t.Body().set_metrics_version(3),
                    t.Body().set_client_build(a.TS.BUILD_TIMESTAMP),
                    t.Body().set_in_web(!a.TS.IN_CLIENT),
                    p.xm.ready_to_render ||
                      (await (0, D.z7)(() => p.xm.ready_to_render)),
                    await p.xm.SettingsStore.FillInChatUsabilityMetrics(
                      t.Body(),
                    ),
                    await p.xm.FriendStore.FillInChatUsabilityMetrics(t.Body()),
                    await p.xm.ChatStore.FillInChatUsabilityMetrics(t.Body()),
                    await p.xm.UIStore.FillInChatUsabilityMetrics(t.Body()),
                    await p.xm.VoiceStore.FillInChatUsabilityMetrics(t.Body()),
                    this.m_fnFillAppUsabilityMetrics &&
                      (await this.m_fnFillAppUsabilityMetrics(t.Body())),
                    y.Or.NotifyClientUsabilityMetrics(
                      p.xm.CMInterface.GetServiceTransport(),
                      t,
                    ),
                    1
                  );
                },
              );
          }
        }
        var T = n(52049);
        class M {
          m_mapBrowserInfo = new Map();
          m_hOverlayChatBrowserInfoChanged = null;
          m_CMInterface;
          constructor() {}
          Init(e) {
            (this.m_CMInterface = e),
              (this.m_hOverlayChatBrowserInfoChanged =
                SteamClient.WebChat.RegisterOverlayChatBrowserInfoChanged(
                  this.OnOverlayChatBrowserInfoChanged,
                )),
              this.m_CMInterface.RunWhenLoggedOn(() => {
                this.OnOverlayChatBrowserInfoChanged();
              });
          }
          HasOverlayInstance(e) {
            return this.m_mapBrowserInfo.has(e);
          }
          OnOverlayChatBrowserInfoChanged() {
            SteamClient.WebChat.GetOverlayChatBrowserInfo()
              .then((e) => {
                let t = new Map(this.m_mapBrowserInfo);
                for (let n of e) {
                  t.delete(n.unPID);
                  let e = {
                      m_unPID: n.unPID,
                      m_nBrowserID: n.nBrowserID,
                      m_eBrowserType: n.eBrowserType,
                      m_eUIMode: n.eUIMode,
                    },
                    i = this.m_mapBrowserInfo.get(n.unPID);
                  i &&
                    (i.m_nBrowserID != n.nBrowserID
                      ? (this.OverlayBrowserClosed(i),
                        this.m_mapBrowserInfo.delete(n.unPID),
                        (i = void 0))
                      : p.xm.UIStore.OnOverlayBrowserChanged(
                          e,
                          n.nScreenWidth,
                          n.nScreenHeight,
                        )),
                    i ||
                      (this.m_mapBrowserInfo.set(n.unPID, e),
                      this.OverlayBrowserCreated(
                        e,
                        n.nScreenWidth,
                        n.nScreenHeight,
                      ));
                }
                t.forEach((e, t) => {
                  this.m_mapBrowserInfo.delete(t), this.OverlayBrowserClosed(e);
                });
              })
              .catch((e) => {
                console.log("Failed to load overlay browser info:", e);
              });
          }
          OverlayBrowserCreated(e, t, n) {
            const i = {
              ...e,
              m_eUIMode: e.m_eUIMode ?? (p.xm.IsGamepadUIActive() ? 4 : 0),
            };
            p.xm.UIStore.OnOverlayBrowserCreated(i, t, n),
              0 == i.m_eUIMode && Fn.ShowPopupFriendsList(i, !1, !1),
              p.xm.SetDefaultPopupContext(i);
          }
          OverlayBrowserClosed(e) {
            const t = {
              ...e,
              m_eUIMode: e.m_eUIMode ?? (p.xm.IsGamepadUIActive() ? 4 : 0),
            };
            p.xm.UIStore.SetSuppressBrowserContextBroadcasting(!0),
              p.xm.GetDefaultBrowserContext().m_nBrowserID == e.m_nBrowserID &&
                p.xm.GetDefaultBrowserContext().m_unPID == e.m_unPID &&
                p.xm.SetDefaultPopupContext(C.m),
              console.log(
                "Removing overlay browser window:",
                e.m_unPID,
                e.m_nBrowserID,
              ),
              v.Of.ClosePopupsOwnedByBrowser(t),
              p.xm.UIStore.SetSuppressBrowserContextBroadcasting(!1),
              p.xm.UIStore.OnOverlayBrowserClosed(t);
          }
        }
        (0, i.Cg)([c.oI], M.prototype, "OnOverlayChatBrowserInfoChanged", null);
        var R = n(53819),
          k = n(83957),
          L = n.n(k),
          G = n(41230),
          F = n(63696),
          P = n(74002),
          B = n(91466),
          x = n(94786),
          O = n(69074),
          N = n(81734);
        let V = class extends F.Component {
          constructor(e) {
            super(e),
              (this.state = {
                bSubscribed: !1,
                bDismissed: !1,
                bThumbnailLoaded: !1,
              });
          }
          componentDidMount() {
            this.props.broadcaster.accountid !=
              p.xm.FriendStore.self.accountid &&
              this.props.broadcastid &&
              (p.xm.BroadcastStore.SubscribeToBroadcastDetails(
                this.props.broadcastid,
                this.props.broadcaster.steamid64,
              ),
              this.setState({ bSubscribed: !0 }));
          }
          componentWillUnmount() {
            this.state.bSubscribed &&
              p.xm.BroadcastStore.UnsubscribeFromBroadcastDetails(
                this.props.broadcastid,
                this.props.broadcaster.steamid64,
              );
          }
          OnWatch(e) {
            if (
              "undefined" != typeof SteamClient &&
              void 0 !== SteamClient.WebChat
            ) {
              let t =
                  "steam://broadcast/watch/" + this.props.broadcaster.steamid64,
                n = (0, wn.CO)(e);
              SteamClient.WebChat.OpenURLInClient(t, n.m_unPID, !1);
            } else {
              let t = `${a.TS.COMMUNITY_BASE_URL}broadcast/watch/${this.props.broadcaster.steamid64}`;
              (0, B.EP)(e, t), e.stopPropagation();
            }
            this.OnClose();
          }
          OnClose() {
            this.setState({ bDismissed: !0 });
          }
          OnOpen() {
            this.setState({ bDismissed: !1 });
          }
          ShowThumbnail() {
            this.setState({ bThumbnailLoaded: !0 });
          }
          render() {
            let e = p.xm.AppInfoStore.GetAppInfo(this.props.appid),
              t = F.createElement(
                "span",
                null,
                F.createElement("img", {
                  src: e.icon_url,
                  className: "productImage",
                }),
                F.createElement("span", { className: "productName" }, e.name),
              );
            if (
              this.props.broadcaster.accountid ==
              p.xm.FriendStore.self.accountid
            ) {
              let e = this.props.viewer.display_name;
              return F.createElement(
                "div",
                { className: "broadcastInviteSelf" },
                this.props.appid
                  ? (0, P.PP)("#ChatRoom_BroadcastInvite_YouInvited", e, t)
                  : (0, P.PP)(
                      "#ChatRoom_BroadcastInvite_YouInvited_NoAppID",
                      e,
                    ),
              );
            }
            {
              let n = this.props.broadcaster.display_name;
              const i = p.xm.BroadcastStore.GetBroadcastDetails(
                this.props.broadcastid,
                this.props.broadcaster.steamid64,
              ) || { strThumbnail: "", bExpired: !1 };
              if (
                this.state.bDismissed ||
                !this.props.broadcastid ||
                i.bExpired
              )
                return F.createElement(
                  "div",
                  { className: "broadcastInviteDismissed" },
                  this.props.appid
                    ? (0, P.PP)("#ChatRoom_BroadcastInvite_Expired", n, t)
                    : (0, P.PP)("#ChatRoom_BroadcastInvite_Expired_NoAppID", n),
                );
              let o =
                  a.TS.COMMUNITY_CDN_URL +
                  "public/images/broadcast/apphub_default_thumbnail.jpg",
                r = (0, P.PP)("#ChatRoom_BroadcastInvite_Invite", n);
              return F.createElement(
                O.Z,
                {
                  className: "msg ChatMessageInvite broadcastInviteMsg",
                  focusable: !0,
                  onOKButton: this.OnWatch,
                  onOKActionDescription: (0, P.we)(
                    "#ChatRoom_BroadcastInvite_Watch",
                  ),
                  onCancel: this.OnClose,
                  onCancelActionDescription: (0, P.we)(
                    "#ChatRoom_BroadcastInvite_Dismiss",
                  ),
                },
                F.createElement(
                  "div",
                  { className: "leftInviteContainer" },
                  F.createElement("img", {
                    src: i.strThumbnail,
                    onLoad: this.ShowThumbnail,
                    className:
                      "broadcastThumbnail" +
                      (this.state.bThumbnailLoaded ? " loaded" : ""),
                  }),
                  F.createElement("img", {
                    src: o,
                    className:
                      "broadcastThumbnail broadcastThumbnailFallback" +
                      (this.state.bThumbnailLoaded ? "" : " loaded"),
                  }),
                  F.createElement("div", { className: "noisePattern" }),
                ),
                F.createElement(
                  "div",
                  { className: "rightInviteContainer" },
                  F.createElement(
                    x.xh,
                    null,
                    F.createElement(
                      "div",
                      { className: "centerBlock" },
                      F.createElement("div", { className: "inviteLabel" }, r),
                      F.createElement(
                        "div",
                        { className: "productName" },
                        e.name,
                      ),
                    ),
                  ),
                  F.createElement(
                    "button",
                    {
                      className:
                        "DialogButton Primary inviteButtonWatchBroadcast",
                      onClick: this.OnWatch,
                    },
                    (0, P.we)("#ChatRoom_BroadcastInvite_Watch"),
                  ),
                  F.createElement(
                    "div",
                    { className: "closeButton", onClick: this.OnClose },
                    F.createElement(N.sED, null),
                  ),
                ),
              );
            }
          }
        };
        (0, i.Cg)([c.oI], V.prototype, "OnWatch", null),
          (0, i.Cg)([c.oI], V.prototype, "OnClose", null),
          (0, i.Cg)([c.oI], V.prototype, "OnOpen", null),
          (0, i.Cg)([c.oI], V.prototype, "ShowThumbnail", null),
          (V = (0, i.Cg)([G.PA], V));
        var U = n(83749);
        let H = class extends F.Component {
          m_pollTimeout = void 0;
          m_broadcastid = void 0;
          m_bExpired = !1;
          constructor(e) {
            super(e),
              (this.state = {
                strThumbnail: "",
                nUpdateInterval: 10,
                bThumbnailLoaded: !1,
                nThumbnailUpdateCounter: 0,
              });
          }
          OnAccept(e) {
            p.xm.BroadcastStore.ApproveViewerRequest(
              this.props.viewer.accountid,
              this.props.requestid,
            );
          }
          OnClose() {
            p.xm.BroadcastStore.RejectViewerRequest(
              this.props.viewer.accountid,
              this.props.requestid,
            );
          }
          ShowThumbnail() {
            this.setState({ bThumbnailLoaded: !0 });
          }
          render() {
            let e = p.xm.AppInfoStore.GetAppInfo(this.props.appid),
              t = F.createElement(
                "span",
                null,
                F.createElement("img", {
                  src: e.icon_url,
                  className: "productImage",
                }),
                F.createElement("span", { className: "productName" }, e.name),
              ),
              n = this.props.viewer.display_name,
              i = p.xm.BroadcastStore.GetRequestState(
                this.props.viewer.accountid,
                this.props.requestid,
              ),
              o =
                void 0 !== this.m_broadcastid &&
                this.m_broadcastid != p.xm.BroadcastStore.broadcastid;
            if (
              (void 0 === this.m_broadcastid &&
                "0" !== p.xm.BroadcastStore.broadcastid &&
                (this.m_broadcastid = p.xm.BroadcastStore.broadcastid),
              o || i != U.i_.k_EPending)
            ) {
              let e = "#ChatRoom_BroadcastViewRequest_Expired";
              return (
                i == U.i_.k_EAccepted
                  ? (e = "#ChatRoom_BroadcastViewRequest_Accepted")
                  : i == U.i_.k_ERejected &&
                    (e = "#ChatRoom_BroadcastViewRequest_Dismissed"),
                F.createElement(
                  "div",
                  { className: "broadcastViewRequestDismissed" },
                  (0, P.PP)(e, n, t),
                )
              );
            }
            let r =
                a.TS.COMMUNITY_CDN_URL +
                "public/images/broadcast/apphub_default_thumbnail.jpg",
              s =
                (this.state.bThumbnailLoaded,
                this.state.nThumbnailUpdateCounter),
              l = (0, P.PP)("#ChatRoom_BroadcastViewRequest_Invite", n);
            return F.createElement(
              "div",
              {
                className:
                  "msg ChatMessageInvite broadcastInviteMsg broadcastViewRequestMsg",
              },
              F.createElement(
                "div",
                { className: "leftInviteContainer" },
                this.state.strThumbnail &&
                  F.createElement("img", {
                    src: this.state.strThumbnail + "?n=" + s,
                    onLoad: this.ShowThumbnail,
                    className:
                      "broadcastThumbnail" +
                      (this.state.bThumbnailLoaded ? " loaded" : ""),
                  }),
                F.createElement("img", {
                  src: r,
                  className:
                    "broadcastThumbnail broadcastThumbnailFallback" +
                    (this.state.bThumbnailLoaded ? "" : " loaded"),
                }),
                F.createElement("div", { className: "noisePattern" }),
              ),
              F.createElement(
                "div",
                { className: "rightInviteContainer" },
                F.createElement(
                  x.xh,
                  null,
                  F.createElement(
                    "div",
                    { className: "centerBlock" },
                    F.createElement("div", { className: "inviteLabel" }, l),
                    F.createElement(
                      "div",
                      { className: "productName" },
                      e.name,
                    ),
                  ),
                ),
                F.createElement(
                  "button",
                  {
                    className: "inviteButton inviteButtonWatchBroadcast",
                    onClick: this.OnAccept,
                  },
                  (0, P.we)("#ChatRoom_BroadcastViewRequest_Accept"),
                ),
                F.createElement("div", {
                  className: "closeButton",
                  onClick: this.OnClose,
                }),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], H.prototype, "OnAccept", null),
          (0, i.Cg)([c.oI], H.prototype, "OnClose", null),
          (0, i.Cg)([c.oI], H.prototype, "ShowThumbnail", null),
          (H = (0, i.Cg)([G.PA], H));
        class W extends F.Component {
          m_pollTimeout = void 0;
          m_broadcastid = void 0;
          m_bExpired = !1;
          constructor(e) {
            super(e),
              (this.state = {
                strThumbnail: "",
                nUpdateInterval: 10,
                bThumbnailLoaded: !1,
                nThumbnailUpdateCounter: 0,
              });
          }
          OnWatch(e) {
            if (
              "undefined" != typeof SteamClient &&
              void 0 !== SteamClient.WebChat
            ) {
              let t =
                  "steam://broadcast/watch/" + this.props.broadcaster.steamid64,
                n = (0, wn.CO)(e);
              SteamClient.WebChat.OpenURLInClient(t, n.m_unPID, !1);
            } else {
              let t = `${a.TS.COMMUNITY_BASE_URL}broadcast/watch/${this.props.broadcaster.steamid64}`;
              (0, B.EP)(e, t), e.stopPropagation();
            }
          }
          ShowThumbnail() {
            this.setState({ bThumbnailLoaded: !0 });
          }
          render() {
            let e = this.props.broadcaster.current_game_name,
              t = this.props.broadcaster.display_name,
              n =
                a.TS.COMMUNITY_CDN_URL +
                "public/images/broadcast/apphub_default_thumbnail.jpg",
              i =
                (this.state.bThumbnailLoaded,
                this.state.nThumbnailUpdateCounter),
              o = (0, P.PP)("#ChatRoom_BroadcastInvite_WatchGame", t);
            return F.createElement(
              "div",
              {
                className: "msg ChatMessageInvite broadcastInviteMsg",
                style: { padding: 0, display: "flex", overflow: "hidden" },
              },
              F.createElement(
                "div",
                { className: "leftInviteContainer" },
                this.state.strThumbnail &&
                  F.createElement("img", {
                    src: this.state.strThumbnail + "?n=" + i,
                    onLoad: this.ShowThumbnail,
                    className:
                      "broadcastThumbnail" +
                      (this.state.bThumbnailLoaded ? " loaded" : ""),
                  }),
                F.createElement("img", {
                  src: n,
                  className:
                    "broadcastThumbnail broadcastThumbnailFallback" +
                    (this.state.bThumbnailLoaded ? "" : " loaded"),
                }),
                F.createElement("div", { className: "noisePattern" }),
              ),
              F.createElement(
                "div",
                { className: "rightInviteContainer" },
                F.createElement(
                  x.xh,
                  null,
                  F.createElement(
                    "div",
                    { className: "centerBlock" },
                    F.createElement("div", { className: "inviteLabel" }, o),
                    e &&
                      F.createElement("div", { className: "productName" }, e),
                  ),
                ),
                F.createElement(
                  "button",
                  {
                    className:
                      "DialogButton Primary inviteButtonWatchBroadcast",
                    onClick: this.OnWatch,
                  },
                  (0, P.we)("#ChatRoom_BroadcastInvite_Watch"),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([c.oI], W.prototype, "OnWatch", null),
          (0, i.Cg)([c.oI], W.prototype, "ShowThumbnail", null);
        var z = n(99862),
          j = n(70169),
          q = n(50228);
        function K(e) {
          const { appID: t } = e,
            [n] = (0, q.t7)(t, { include_assets_without_overrides: !0 }),
            i = n?.GetAssetsWithoutOverrides()?.GetHeaderURL();
          return i
            ? F.createElement("img", { src: i, className: e.strClassNames })
            : null;
        }
        let Z = class extends F.Component {
          state = { bCanAcceptRemotePlayInvite: !1 };
          async componentDidMount() {
            if (this.props.gameInvite.remoteplayString) {
              let e = this.props.gameInvite.remoteplayString.split("&"),
                t = "restricted_countries=",
                n = "";
              e.forEach((e) => {
                e.startsWith(t) && (n = e.slice(t.length));
              });
              const i = await p.xm.RemotePlayStore.BCanAcceptInviteForGame(
                this.props.gameInvite.appID.toString(),
                n,
              );
              this.setState({ bCanAcceptRemotePlayInvite: i });
            }
          }
          AcceptGameInvite() {
            this.props.gameInvite.AcceptGameInvite();
          }
          BCanAcceptVoiceChat() {
            let e = this.props.inviter,
              t = 2 == e.efriendrelationship,
              n = 4 == e.efriendrelationship,
              i = e.persona.is_online && !t && !n && !e.is_blocked;
            return !p.xm.VoiceStore.IsAnyVoiceActive() && i;
          }
          AcceptGameInviteAndVoiceChat() {
            this.props.gameInvite.AcceptGameInvite(),
              this.BCanAcceptVoiceChat() &&
                p.xm.UIStore.ShowFriendChatDialogAndStartVoice(
                  p.xm.GetDefaultBrowserContext(),
                  this.props.inviter.accountid,
                );
          }
          DismissInvite() {
            this.props.gameInvite.DismissInvite();
          }
          OnShowGameContextMenu(e) {
            (0, z.JG)((0, wn.CO)(e), this.props.gameInvite.appID, e);
          }
          render() {
            let e = p.xm.AppInfoStore.GetAppInfo(this.props.gameInvite.appID);
            if (
              (e ||
                ((e = new j.by(this.props.gameInvite.appID)),
                e.DeserializeFromCacheObject({
                  strName: (0, P.we)("#ChatRoom_GameInvite_UnreleasedGame"),
                  strIconURL: "",
                  strLogoURL: "",
                  eAppType: 1,
                })),
              p.xm.FriendStore.self == this.props.inviter)
            ) {
              let t = this.props.inviteTarget.display_name,
                n = this.props.gameInvite.remoteplayString
                  ? "#ChatRoom_GameInviteRemotePlay_YouInvited"
                  : "#ChatRoom_GameInvite_YouInvited";
              return F.createElement(
                "div",
                { className: "gameInviteSelf" },
                F.createElement(
                  "div",
                  { onClick: this.OnShowGameContextMenu },
                  (0, P.PP)(
                    n,
                    t,
                    F.createElement("img", {
                      src: e.icon_url,
                      className: "productImage",
                    }),
                    e.name,
                  ),
                ),
              );
            }
            if (
              this.props.gameInvite.bOld ||
              this.props.gameInvite.bDismissed ||
              this.props.inviter.persona.m_unGamePlayedAppID !=
                this.props.gameInvite.appID
            ) {
              let t = this.props.inviter.display_name,
                n = this.props.gameInvite.remoteplayString
                  ? "#ChatRoom_GameInviteRemotePlay_Dismissed"
                  : "#ChatRoom_GameInvite_Dismissed";
              return F.createElement(
                "div",
                { className: "gameInviteDismissed" },
                F.createElement(
                  "div",
                  { onClick: this.OnShowGameContextMenu },
                  (0, P.PP)(
                    n,
                    t,
                    F.createElement("img", {
                      src: e.icon_url,
                      className: "productImage",
                    }),
                    e.name,
                  ),
                ),
              );
            }
            if (this.props.gameInvite.bAccepted) {
              let t = this.props.gameInvite.remoteplayString
                ? "#ChatRoom_GameInviteRemotePlay_Accepted"
                : "#ChatRoom_GameInvite_Accepted";
              return F.createElement(
                "div",
                { className: "gameInviteAccepted" },
                F.createElement(
                  "div",
                  { onClick: this.OnShowGameContextMenu },
                  (0, P.PP)(
                    t,
                    F.createElement("img", {
                      src: e.icon_url,
                      className: "productImage",
                    }),
                    e.name,
                  ),
                ),
              );
            }
            if (
              this.props.gameInvite.remoteplayString &&
              !this.state.bCanAcceptRemotePlayInvite
            ) {
              let t = this.props.inviter.display_name,
                n = "#ChatRoom_GameInviteRemotePlay_CantAccept";
              return F.createElement(
                "div",
                { className: "gameInviteDismissed" },
                F.createElement(
                  "div",
                  { onClick: this.OnShowGameContextMenu },
                  (0, P.PP)(
                    n,
                    t,
                    F.createElement("img", {
                      src: e.icon_url,
                      className: "productImage",
                    }),
                    e.name,
                  ),
                ),
              );
            }
            let t = this.props.inviter,
              n = null,
              i = t.persona.player_group_size - 1;
            if (
              t.persona.m_unGamePlayedAppID == this.props.gameInvite.appID &&
              t.persona.player_group_size > 0
            ) {
              let e = t.persona.player_group;
              if (e) {
                n = p.xm.FriendStore.FriendGroupStore.ingame_group.member_list
                  .map((n) =>
                    n != t && n.persona.player_group == e
                      ? (i--,
                        F.createElement(z.gv, {
                          key: n.accountid,
                          friend: n,
                          context: null,
                        }))
                      : null,
                  )
                  .filter(Boolean);
              }
            }
            let o = {
              paddingLeft: 0,
              display: "flex",
              alignItems: "stretch",
              overflow: "hidden",
            };
            this.props.chatGutterWidth &&
              (o.marginLeft = "-" + this.props.chatGutterWidth + "px");
            let r = this.props.gameInvite.remoteplayString
                ? "#ChatRoom_GameInviteRemotePlay_Invite"
                : "#ChatRoom_GameInvite_Invite",
              a = (0, P.PP)(r, this.props.inviter.display_name),
              s =
                this.props.gameInvite.remoteplayString &&
                this.BCanAcceptVoiceChat() &&
                p.xm.VoiceStore.BPartnerHasAcceptedOrInitiatedOneOnOneChat(
                  this.props.inviter.accountid,
                ),
              l = p.xm.ParentalStore.BIsAppBlocked(this.props.gameInvite.appID),
              c = n?.length || i > 0;
            return F.createElement(
              O.Z,
              {
                className: "msg ChatMessageInvite gameInviteMsg",
                style: o,
                onOKButton: l ? null : this.AcceptGameInvite,
                onOKActionDescription: l
                  ? null
                  : (0, P.we)("#ChatRoom_GameInvite_Accept"),
              },
              F.createElement(
                "div",
                {
                  className: "leftInviteContainer",
                  style: { overflow: "visible" },
                },
                F.createElement(K, {
                  appID: this.props.gameInvite.appID,
                  strClassNames: "productImage productImageBlur",
                }),
                F.createElement(K, {
                  appID: this.props.gameInvite.appID,
                  strClassNames: "productImage",
                }),
              ),
              F.createElement(
                "div",
                { className: "rightInviteContainer" },
                F.createElement(
                  "div",
                  { className: "centerBlock" },
                  F.createElement(
                    "div",
                    { className: "invitedTimeLabel" },
                    (0, P.we)("#ChatRoom_GameInvite_InviteTime"),
                    F.createElement(B.EO, {
                      rtime: this.props.gameInvite.rtTimestamp,
                      bTimeOnly: !0,
                    }),
                  ),
                  F.createElement(
                    x.xh,
                    null,
                    F.createElement("div", { className: "inviteLabel" }, a),
                  ),
                  F.createElement(
                    x.xh,
                    null,
                    F.createElement(
                      "div",
                      { className: "productName" },
                      e.name,
                    ),
                  ),
                  c &&
                    F.createElement(
                      x.xh,
                      null,
                      F.createElement(
                        "div",
                        { className: "playingWithBlock" },
                        F.createElement(
                          "div",
                          null,
                          (0, P.we)("#ChatRoom_GameInvite_PlayingWith"),
                        ),
                        F.createElement(
                          "div",
                          { className: "playingWithAvatars" },
                          F.createElement("div", {
                            className: "playingWithLine",
                          }),
                          n,
                          i > 0 &&
                            F.createElement(
                              "div",
                              { className: "playingWithExtraCount" },
                              (0, P.we)("#ChatRoom_GameInvite_PartyMore", i),
                              " ",
                            ),
                        ),
                      ),
                    ),
                ),
                F.createElement(
                  "div",
                  { className: "acceptButtonsGroup" },
                  l
                    ? F.createElement(
                        "div",
                        null,
                        (0, P.we)("#ChatRoom_GameInvite_Family_View"),
                      )
                    : F.createElement(
                        F.Fragment,
                        null,
                        F.createElement(
                          "button",
                          {
                            className: "DialogButton GreenPlay",
                            onClick: this.AcceptGameInvite,
                          },
                          (0, P.we)("#ChatRoom_GameInvite_Accept"),
                        ),
                        s &&
                          F.createElement(
                            "button",
                            {
                              className: "DialogButton GreenPlay",
                              onClick: this.AcceptGameInviteAndVoiceChat,
                            },
                            (0, P.we)(
                              "#ChatRoom_GameInvite_Accept_And_Voice_Chat",
                            ),
                          ),
                      ),
                ),
                F.createElement(
                  "div",
                  { className: "closeButton", onClick: this.DismissInvite },
                  F.createElement(N.sED, null),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], Z.prototype, "AcceptGameInvite", null),
          (0, i.Cg)([c.oI], Z.prototype, "BCanAcceptVoiceChat", null),
          (0, i.Cg)([c.oI], Z.prototype, "AcceptGameInviteAndVoiceChat", null),
          (0, i.Cg)([c.oI], Z.prototype, "DismissInvite", null),
          (0, i.Cg)([c.oI], Z.prototype, "OnShowGameContextMenu", null),
          (Z = (0, i.Cg)([G.PA], Z));
        var Q = n(50622),
          $ = n(93625),
          X = n(98540),
          Y = n(25698),
          J = n(14355),
          ee = n(74977),
          te = n(17070);
        const ne = (0, p.zy)(function (e, t, n) {
          (0, J.HT)(
            F.createElement(re, { ...e, bIsInviteDialog: !0 }),
            n,
            "InviteDialog",
            { strTitle: "Invite", popupWidth: 540, popupHeight: 260 },
            (0, wn.h8)(n),
          );
        });
        let ie = class extends F.Component {
          static contextType = te.QO;
          AcceptInvite(e) {
            let t = Q.uX(e);
            p.xm.ChatStore.InviteStore.AcceptInvite(
              this.props.invite,
              (0, wn.CO)(e),
            ).then((e) => {
              this.HandleJoinResult(t, e);
            });
          }
          HandleJoinResult(e, t) {
            const n = (0, $.F2)(t);
            n &&
              (0, Y.Ic)(
                e,
                (0, P.we)("#ChatRoom_InviteMessage_Header"),
                n,
                (0, P.we)("#Button_OK"),
              ),
              this.props.onAccept && this.props.onAccept();
          }
          render() {
            let e = this.props.invite;
            if (!e || !e.BIsReady())
              return F.createElement(
                "div",
                { className: "ChatMessageInvite RequestingInfo displayRow" },
                F.createElement(ee.t, { size: "small" }),
                F.createElement(
                  "div",
                  { className: "postedExpiredInvite" },
                  (0, P.we)("#bbcode_invite_requesting_info"),
                ),
              );
            if (!e.BIsValid())
              return F.createElement(
                "div",
                { className: "ChatMessageInvite InviteExpired" },
                F.createElement(
                  "div",
                  { className: "postedExpiredInvite" },
                  (0, P.we)("#bbcode_invite_no_longer_valid"),
                ),
              );
            let t =
                this.props.inviter &&
                p.xm.FriendStore.self.accountid == this.props.inviter.accountid,
              n = p.xm.ChatStore.GetChatRoomGroup(e.GetChatRoomGroupID()),
              i = n && n.BIsCurrentUserAMember(),
              o = e.BIsExpired(),
              r = n && n.name,
              a = "",
              s = "ChatMessageInvite NoBGSplitInvite",
              l = "inviteButton inviteButtonJoinChat";
            this.props.strClassName && (s += " " + this.props.strClassName);
            let c,
              m,
              d = e.BIsInviteLink(),
              u = e.BIsVoiceChatInvite();
            if (u) {
              (l += " inviteButtonJoinVoice"), (s += " VoiceChannelInvite");
              let t = n.GetChatRoom(e.GetChatID());
              t && (a = t.name);
            }
            if (
              (this.props.bIsInviteDialog ||
                (i && !t && (s += " GroupAlreadyJoined"),
                t && (s += " Inviter")),
              d && (s += " InviteLink"),
              o)
            )
              s += " InviteExpired";
            else if (e.BNeverExpires())
              c = F.createElement(
                "div",
                { className: "Invite_ExpireTime" },
                (0, P.we)("#bbcode_invite_never_expires"),
              );
            else {
              let t = p.xm.RTime32ToDate(e.time_expires);
              c = F.createElement(
                "div",
                { className: "Invite_ExpireTime" },
                (0, P.we)(
                  "#bbcode_invite_expires",
                  t.toLocaleTimeString(),
                  t.toDateString(),
                ),
              );
            }
            m = t
              ? u
                ? (0, P.we)("#Voice_StartTalking")
                : (0, P.we)("#ChatRoom_Invite_Accept_Inviter")
              : u
                ? (0, P.we)("#Voice_StartTalking")
                : i
                  ? (0, P.we)("#ChatRoom_Invite_Accept_Inviter")
                  : (0, P.we)("#ChatRoom_Invite_Accept");
            let h = null,
              _ = !1;
            if (e.BIsUserBanned())
              (_ = !0),
                (h = F.createElement(
                  "div",
                  null,
                  (0, P.we)("#bbcode_invite_banned_forever"),
                ));
            else if (
              e.GetTimeKickExpires() &&
              e.GetTimeKickExpires() > p.xm.GetServerRTime32()
            ) {
              _ = !0;
              let t = p.xm
                .RTime32ToDate(e.GetTimeKickExpires())
                .toLocaleString([], {
                  weekday: "long",
                  year: "numeric",
                  month: "numeric",
                  day: "numeric",
                  hour: "numeric",
                  minute: "numeric",
                });
              h = F.createElement(
                "div",
                null,
                (0, P.we)("#bbcode_invite_banned_until", t),
              );
            }
            let g = this.props.inviter && i,
              C = !g && !t,
              f = u ? a : r;
            return F.createElement(
              x.xh,
              { text: [m, f, e.GetURL()] },
              F.createElement(
                O.Z,
                {
                  className: s,
                  focusable: !0,
                  onActivate: o || _ ? null : this.AcceptInvite,
                },
                F.createElement(
                  "div",
                  { className: "leftInviteContainer" },
                  F.createElement(X.I, { group: n, small: g, large: C }),
                  u &&
                    F.createElement("div", null, F.createElement(N.mrd, null)),
                ),
                F.createElement(
                  "div",
                  {
                    className:
                      "rightInviteContainer" +
                      (i || t ? " rightInvite_Horizontal" : ""),
                  },
                  F.createElement(
                    "div",
                    { className: "rightInviteContainerContent" },
                    F.createElement(oe, {
                      invite: this.props.invite,
                      inviter: this.props.inviter,
                      invitee: this.props.invitee,
                    }),
                    F.createElement(
                      "div",
                      null,
                      F.createElement("div", { className: "groupName" }, f),
                    ),
                    d &&
                      F.createElement(ae, {
                        url: e.GetURL(),
                        bDisabled: e.BIsExpired(),
                      }),
                    h,
                    !t &&
                      i &&
                      !u &&
                      F.createElement(
                        "div",
                        null,
                        F.createElement(
                          "span",
                          { className: "groupAlreadyJoined" },
                          (0, P.we)("#bbcode_invite_already_group_member"),
                        ),
                      ),
                  ),
                  !o &&
                    !_ &&
                    !this.context?.IN_GAMEPADUI &&
                    F.createElement(
                      "button",
                      {
                        className: l,
                        type: "button",
                        onClick: this.AcceptInvite,
                      },
                      m,
                    ),
                  !o &&
                    !_ &&
                    this.context?.IN_GAMEPADUI &&
                    F.createElement(
                      O.Z,
                      { className: l, onOKButton: this.AcceptInvite },
                      m,
                    ),
                ),
                ((!t && !i) || d) && c,
                F.createElement("div", { style: { clear: "left" } }),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], ie.prototype, "AcceptInvite", null),
          (ie = (0, i.Cg)([G.PA], ie));
        let oe = (0, G.PA)((e) => {
          let t = e.invite,
            n = e.inviter,
            i = e.invitee,
            o = t.BIsVoiceChatInvite(),
            r = t.BIsInviteLink(),
            a =
              e.inviter &&
              p.xm.FriendStore.self.accountid == e.inviter.accountid,
            s = p.xm.ChatStore.GetChatRoomGroup(t.GetChatRoomGroupID()).name,
            l = (0, P.we)("#bbcode_invite_youre_invited");
          return (
            a
              ? (l = o
                  ? r
                    ? (0, P.PP)(
                        "#bbcode_invite_you_shared_voice_link",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          s,
                          " ",
                        ),
                      )
                    : (0, P.PP)(
                        "#bbcode_invite_you_invited_friend_voice",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          i.display_name,
                          " ",
                        ),
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          s,
                          " ",
                        ),
                      )
                  : r
                    ? (0, P.PP)("#bbcode_invite_you_shared_invite_link")
                    : (0, P.PP)(
                        "#bbcode_invite_you_invited_friend",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          i.display_name,
                          " ",
                        ),
                      ))
              : n &&
                (l = o
                  ? r
                    ? (0, P.PP)(
                        "#bbcode_invite_voice_url_description",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          n.display_name,
                          " ",
                        ),
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          s,
                          " ",
                        ),
                      )
                    : (0, P.PP)(
                        "#bbcode_invite_voice_description",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          n.display_name,
                          " ",
                        ),
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          s,
                          " ",
                        ),
                      )
                  : r
                    ? (0, P.PP)(
                        "#bbcode_invite_url_description",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          n.display_name,
                          " ",
                        ),
                      )
                    : (0, P.PP)(
                        "#bbcode_invite_description",
                        F.createElement(
                          "span",
                          { className: "inviteHighlight" },
                          n.display_name,
                          " ",
                        ),
                      )),
            F.createElement("div", { className: "inviteLabel" }, l)
          );
        });
        class re extends F.Component {
          render() {
            let {
              closeModal: e,
              onAccept: t,
              strClassName: n,
              ...i
            } = this.props;
            return (
              (n = "InviteDialog" + (n ? " " + n : "")),
              F.createElement(
                J.x_,
                { onEscKeypress: e },
                F.createElement(ie, {
                  ...i,
                  strClassName: n,
                  onAccept: () => {
                    this.props.closeModal && this.props.closeModal(), t && t();
                  },
                }),
              )
            );
          }
        }
        class ae extends F.Component {
          CopyToClipboard(e) {
            Q.YQ(this.props.url);
          }
          HandleFocus(e) {
            e.currentTarget.select();
          }
          render() {
            let e = this.props.strLabel || (0, P.we)("#bbcode_invite_url_desc");
            return F.createElement(
              "div",
              { className: "inviteURLContainer" },
              F.createElement("span", { className: "inviteURLLinkDesc" }, e),
              F.createElement(
                "div",
                { className: "inviteURLAndCopy" },
                F.createElement("input", {
                  className: "inviteURLLink",
                  value: this.props.bDisabled
                    ? (0, P.we)("#bbcode_invite_link_text_expired")
                    : this.props.url,
                  onFocus: this.HandleFocus,
                  onClick: this.HandleFocus,
                  readOnly: !0,
                }),
                !this.props.bDisabled &&
                  F.createElement(
                    "span",
                    {
                      className: "copyInviteLink",
                      onClick: this.CopyToClipboard,
                      title: (0, P.we)("#Chat_Copy_Clipboard"),
                    },
                    F.createElement(N.$rC, null),
                  ),
              ),
            );
          }
        }
        (0, i.Cg)([c.oI], ae.prototype, "CopyToClipboard", null),
          (0, i.Cg)([c.oI], ae.prototype, "HandleFocus", null);
        var se = n(77171),
          le = n(73744),
          ce = n.n(le);
        class me extends F.Component {
          m_preElem;
          CheckLoadPrettify() {
            if (!this.m_preElem) return;
            let e = this.m_preElem.ownerDocument.defaultView;
            if (!e || "object" == typeof e.PR || !0 === e.PR) return;
            e.PR = !0;
            let t = e.document.createElement("script");
            e.document.head.appendChild(t),
              (t.onload = () => {
                this.TryRunPrettyPrint();
              }),
              (t.src = a.TS.COMMUNITY_CDN_ASSET_URL + "prettify/prettify.js");
          }
          BindRef(e) {
            this.m_preElem = e;
          }
          TryRunPrettyPrint() {
            if ((this.CheckLoadPrettify(), !this.m_preElem)) return;
            let e = this.m_preElem.ownerDocument.defaultView;
            e && "object" == typeof e.PR && e.PR.prettyPrint();
          }
          componentDidMount() {
            this.TryRunPrettyPrint();
          }
          componentDidUpdate() {
            this.TryRunPrettyPrint();
          }
          render() {
            return F.createElement(
              "div",
              null,
              F.createElement(
                "pre",
                {
                  className: (0, se.A)("prettyprint", ce().CodeMessage),
                  ref: this.BindRef,
                },
                this.props.children,
              ),
            );
          }
        }
        (0, i.Cg)([c.oI], me.prototype, "BindRef", null);
        const de = ({ children: e }) =>
            F.createElement(
              "div",
              null,
              F.createElement("pre", { className: ce().PreMessage }, e),
            ),
          ue = ({ children: e }) =>
            F.createElement("div", { className: ce().QuoteMessage }, e),
          he = ({ children: e }) =>
            F.createElement(
              x.xh,
              { text: e },
              F.createElement(
                "div",
                { className: "spoilerMsgText" },
                F.createElement("div", { className: "spoilerMsg" }, e),
              ),
            );
        var pe = n(92089);
        const _e = /^(?:(?:([\d]+)h)?(?:([\d]+)m)?(?:([\d]+)s)?|([\d]+))$/;
        function ge(e) {
          const t = _e.exec(e);
          if (!(t?.[1] || t?.[2] || t?.[3] || t?.[4])) return;
          if (t?.[4]) return parseInt(t?.[4]);
          let n = 0;
          return (
            t?.[1] && (n += 3600 * parseInt(t[1])),
            t?.[2] && (n += 60 * parseInt(t[2])),
            t?.[3] && (n += parseInt(t[3])),
            n
          );
        }
        var Ce = n(77631),
          fe = n(20074),
          Se = n(81172),
          ve = n(16988),
          be = n(31594),
          Ie = n(89021),
          we = n(61632),
          ye = n(6e3),
          Ee = n(39927),
          De = n(7105),
          Ae = n(49912),
          Te = n(63689),
          Me = n(89481),
          Re = n(75699),
          ke = n(8318),
          Le = n(70757),
          Ge = n.n(Le),
          Fe = n(82789),
          Pe = n(99059);
        function Be(e) {
          if (e.context.chat instanceof Fe.s) {
            let t = e.args.appid,
              n = p.xm.AppInfoStore.GetAppInfo(parseInt(t)).name;
            const i =
              e.args?.connectString || e.args?.remoteplay || e.args?.lobbyID
                ? (0, Pe.xE)(
                    e.context.chat.chat_partner.accountid,
                    parseInt(t),
                    e.args?.connectString,
                    e.args?.remoteplay,
                    e.args?.lobbyID,
                  )
                : void 0;
            let o = "";
            return (
              (o =
                e.context.unAccountIDSender === e.context.chat.self.accountid
                  ? e.args.remoteplay
                    ? "#ChatRoom_GameInviteRemotePlay_YouInvited"
                    : "#ChatRoom_GameInvite_YouInvited"
                  : e.args.remoteplay
                    ? "#Friend_Notification_GameInviteRemotePlay"
                    : "#Friend_Notification_GameInvite"),
              {
                title: "",
                body: (0, P.we)(
                  o,
                  e.context.chat.chat_partner.display_name,
                  n,
                  "",
                ),
                state: i,
              }
            );
          }
          return null;
        }
        function xe(e) {
          if (e.context.chat instanceof Fe.s) {
            let t = e.args.appid,
              n = e.args.lobbyid,
              i = p.xm.AppInfoStore.GetAppInfo(parseInt(t)).name;
            return {
              title: "",
              body:
                e.context.unAccountIDSender === e.context.chat.self.accountid
                  ? (0, P.we)(
                      "#Friend_Notification_GameInviteYouInvited",
                      e.context.chat.chat_partner.display_name,
                      i,
                    )
                  : (0, P.we)(
                      "#Friend_Notification_GameInvite",
                      e.context.chat.chat_partner.display_name,
                      i,
                    ),
              state:
                "steam://joinlobby/" +
                t +
                "/" +
                n +
                "/" +
                e.context.chat.chat_partner.steamid64.toString(),
            };
          }
          return null;
        }
        function Oe(e) {
          if (e.context.chat instanceof Fe.s) {
            return null != e.args.chatid
              ? {
                  title: "",
                  body:
                    e.context.unAccountIDSender ===
                    e.context.chat.self.accountid
                      ? (0, P.we)(
                          "#bbcode_invite_you_invited_friend_voice",
                          e.context.chat.chat_partner.display_name,
                          e.args.chatname,
                        )
                      : (0, P.we)(
                          "#Friend_Notification_InviteVoice",
                          e.context.chat.chat_partner.display_name,
                          e.args.chatname,
                        ),
                }
              : {
                  title: "",
                  body:
                    e.context.unAccountIDSender ===
                    e.context.chat.self.accountid
                      ? (0, P.we)(
                          "#bbcode_invite_you_invited_friend",
                          e.context.chat.chat_partner.display_name,
                        )
                      : (0, P.we)(
                          "#Friend_Notification_Invite",
                          e.context.chat.chat_partner.display_name,
                          e.args.chatgroupname,
                        ),
                };
          }
          return null;
        }
        function Ne(e) {
          const t = e.context.chat;
          return t instanceof Fe.s
            ? {
                title: (0, P.we)(
                  "#TradeOffer_FriendSentYou",
                  t.chat_partner.display_name,
                ),
                body: e.text,
              }
            : null;
        }
        function Ve(e) {
          return { body: (0, P.we)("#Notification_Spoiler") };
        }
        function Ue(e) {
          const t = p.xm.FriendStore.GetPlayer(e.context.unAccountIDSender),
            n = e.args.type;
          if (!n) return null;
          const i = e.context.chat.ChatStore.ChatRoomEffectSettings[n];
          return i && i.locToken
            ? { body: (0, P.we)(i.locToken, t.display_name) }
            : null;
        }
        je("#bbcode_random_description"), je("#bbcode_flip_description");
        const He = je("#bbcode_video_description"),
          We =
            (je("#bbcode_inviteurl_description"),
            je("#bbcode_image_description")),
          ze = je("#bbcode_sticker_description");
        function je(e) {
          return (t) => {
            const n = p.xm.FriendStore.GetPlayer(t.context.unAccountIDSender);
            return { body: (0, P.we)(e, n.display_name) };
          };
        }
        var qe = n(24803),
          Ke = n(49106);
        function Ze(e) {
          const { href: t, copyText: n, loadFailed: i, children: o } = e;
          let r = "NonInlinedEmbed";
          return (
            i && (r += " LoadFailed"),
            F.createElement(
              x.xh,
              { text: n || t, style: "merge-adjacent" },
              F.createElement(
                "div",
                { className: r },
                F.createElement(qe.uU, { href: t, title: t }, o),
              ),
            )
          );
        }
        function Qe(e) {
          const {
              preference: t,
              render: n,
              fallbackHref: i,
              fallbackRender: o,
              children: r,
            } = e,
            a = (0, Ke.k)(p.xm.CookiePreferenceStore);
          if (!a) return null;
          return p.xm.CookiePreferenceStore.CheckThirdPartyCookiePreference(
            a,
            t,
          )
            ? n
              ? n()
              : r
            : o
              ? o()
              : F.createElement(Ze, { href: i }, i);
        }
        var $e,
          Xe = n(31418),
          Ye = n(76482),
          Je = n(97229),
          et = n(27281);
        const tt = F.lazy(() =>
          Promise.all([n.e(9489), n.e(5430), n.e(7462)]).then(n.bind(n, 52248)),
        );
        function nt(e) {
          return F.createElement(
            F.Suspense,
            { fallback: null },
            F.createElement(tt, { ...e }),
          );
        }
        function it() {
          return {
            url: rt,
            youtube: mt,
            filteredurl: Wt,
            emoticon: jt,
            img: ht,
            video: Ct,
            og: bt,
            tweet: It,
            inviteurl: Lt,
            publishedfile: Ot,
            tradeofferlink: Nt,
            econitem: Ht,
            steamstore: Kt,
            broadcast: Ut,
            oembed: wt,
            spoiler: Et,
            plusone: Dt,
            flip: At,
            random: Tt,
            quote: Mt,
            pre: Rt,
            code: kt,
            roomeffect: Zt,
            sticker: Qt,
          };
        }
        function ot(e) {
          if ("string" == typeof e) return e;
          let t = "";
          return (
            F.Children.forEach(e, (e) => {
              if ("string" != typeof e) {
                if ("object" == typeof e && e.props) {
                  let n = e.props["bbcode-text"];
                  n && (t += n);
                }
              } else t += e;
            }),
            t
          );
        }
        let rt = class extends pe.mX {
          render() {
            let e = this.GetArgument(),
              t = this.props.children,
              n = null,
              i = Me.IT(e);
            return (
              i != e && (n = i),
              (t && !this.GetArgument("fromclient")) || (n = i),
              p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining &&
              "string" != typeof t
                ? F.createElement(
                    Ze,
                    { href: e },
                    F.createElement(N.Rkk, null),
                    i,
                  )
                : F.createElement(
                    x.xh,
                    { text: e, style: "merge-adjacent" },
                    F.createElement(B.uU, { href: e }, n || t),
                  )
            );
          }
        };
        rt = (0, i.Cg)([G.PA], rt);
        class at extends F.Component {
          m_elContainer;
          m_frameInitialXPos;
          m_frameInitialYPos;
          m_frameInitialWidth;
          m_frameDefaultWidth;
          m_frameDesiredWidth;
          m_animationCollapse;
          ref = F.createRef();
          m_telemetryTrackedActions = {};
          constructor(e) {
            super(e);
            let t = p.xm.ChatStore.EmbedStore.GetCollapsedState(
                this.props.unAccountIDSender,
                this.props.msgUniqueKey,
              ),
              n = p.xm.ChatStore.EmbedStore.GetWidths(
                this.props.unAccountIDSender,
                this.props.msgUniqueKey,
              );
            (this.state = {
              nResizedWidth: t ? 16 : n ? n.nDesiredWidth : 0,
              bResized: void 0 !== n,
              bIsResizing: !1,
              bIsRestoring: !1,
              bMinimized: t,
              bIsMinimizing: !1,
            }),
              (this.m_frameInitialXPos = -1),
              (this.m_frameInitialYPos = -1),
              (this.m_frameInitialWidth = -1),
              (this.m_frameDefaultWidth = n ? n.nDefaultWidth : -1),
              (this.m_frameDesiredWidth = n ? n.nDesiredWidth : -1);
          }
          TrackAction(e) {
            this.m_telemetryTrackedActions[e] ||
              ((this.m_telemetryTrackedActions[e] = !0), (0, et.L)(e));
          }
          BindContainer(e) {
            (this.m_elContainer = e),
              (this.ref.current = e),
              this.m_elContainer &&
                this.props.height > 450 &&
                this.HandleTallImages();
          }
          handleCollapse(e) {
            this.state.bMinimized ||
              (this.m_frameDesiredWidth = this.m_elContainer.clientWidth),
              this.m_animationCollapse && this.m_animationCollapse.Cancel();
            let t = !this.state.bMinimized,
              n = t ? this.m_frameDesiredWidth : 16,
              i = t ? 16 : this.m_frameDesiredWidth;
            this.TrackAction(
              "/Chat/BBCodeResizableComponent/" +
                (t ? "Collapse" : "Uncollapse"),
            ),
              this.setState(
                { nResizedWidth: n, bMinimized: !1, bIsMinimizing: !0 },
                () => {
                  (this.m_animationCollapse = new Ee.w(
                    this,
                    { nResizedWidth: i },
                    {
                      msDuration: 300,
                      timing: "sine",
                      setStateOnComplete: { bMinimized: t, bIsMinimizing: !1 },
                      onComplete: this.OnSizeChanged,
                    },
                  )),
                    this.m_animationCollapse.Start();
                },
              ),
              p.xm.ChatStore.EmbedStore.SetCollapsedState(
                this.props.unAccountIDSender,
                this.props.msgUniqueKey,
                t,
              );
          }
          OnSizeChanged() {
            this.props.onSizeChanged(
              "BBCodeResizableComponent " +
                this.props.msgUniqueKey +
                this.state.bResized +
                this.state.bMinimized,
            );
          }
          handleRestore(e) {
            this.state.bResized &&
              (this.m_animationCollapse && this.m_animationCollapse.Cancel(),
              this.setState({ bIsRestoring: !0 }, () => {
                (this.m_animationCollapse = new Ee.w(
                  this,
                  { nResizedWidth: this.m_frameDefaultWidth },
                  {
                    msDuration: 300,
                    timing: "sine",
                    setStateOnComplete: {
                      bMinimized: !1,
                      bIsRestoring: !1,
                      bResized: !1,
                    },
                    onComplete: this.OnSizeChanged,
                  },
                )),
                  this.m_animationCollapse.Start();
              }),
              p.xm.ChatStore.EmbedStore.SetWidths(
                this.props.unAccountIDSender,
                this.props.msgUniqueKey,
                this.m_frameDefaultWidth,
                this.m_frameDefaultWidth,
              ));
          }
          OnResize(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            t.addEventListener("mousemove", this.HandleMouseMove),
              t.addEventListener("mouseup", this.HandleMouseUp);
          }
          HandleMouseMove(e) {
            this.m_frameInitialXPos < 0 &&
              (this.m_frameInitialXPos = e.clientX),
              this.m_frameInitialWidth < 0 &&
                (this.m_frameInitialWidth = this.m_elContainer.clientWidth),
              this.m_frameDefaultWidth < 0 &&
                !this.state.bResized &&
                (this.m_frameDefaultWidth = this.m_elContainer.clientWidth),
              this.m_frameInitialYPos < 0 &&
                (this.m_frameInitialYPos = e.clientY);
            let t = e.clientX - this.m_frameInitialXPos,
              n = e.clientY - this.m_frameInitialYPos,
              i = this.m_frameInitialWidth + t + n,
              o = "image" == this.props.strMediaType ? 64 : 320;
            i < o && (i = o),
              i > 1280 && (i = 1280),
              this.props.maxWidth && (i = Math.min(i, this.props.maxWidth)),
              this.setState({
                nResizedWidth: i,
                bResized: !0,
                bIsResizing: !0,
              }),
              this.TrackAction("/Chat/BBCodeResizableComponent/Resize"),
              this.OnSizeChanged();
          }
          HandleTallImages() {
            let e = 450 * (this.props.width / this.props.height),
              t = this.props.width;
            t > Math.min(1280, e) && (t = Math.min(1280, e)),
              this.props.maxWidth && (t = Math.min(t, this.props.maxWidth)),
              t <
                parseInt(
                  this.m_elContainer.ownerDocument.defaultView.getComputedStyle(
                    this.m_elContainer,
                  ).maxWidth,
                ) && this.setState({ nMaxWidth: t }),
              this.OnSizeChanged();
          }
          HandleMouseUp(e) {
            e.view.removeEventListener("mousemove", this.HandleMouseMove),
              e.view.removeEventListener("mouseup", this.HandleMouseUp),
              (this.m_frameInitialXPos = -1),
              (this.m_frameInitialYPos = -1),
              (this.m_frameInitialWidth = -1),
              this.state.bIsResizing && this.setState({ bIsResizing: !1 }),
              !this.state.bMinimized &&
                this.m_elContainer &&
                (this.m_frameDesiredWidth = this.m_elContainer.clientWidth),
              p.xm.ChatStore.EmbedStore.SetWidths(
                this.props.unAccountIDSender,
                this.props.msgUniqueKey,
                this.m_frameDesiredWidth,
                this.m_frameDefaultWidth,
              );
          }
          render() {
            let e = p.xm.IsGamepadUIActive(),
              t = {};
            this.state.nResizedWidth > 0
              ? (t.width = this.state.nResizedWidth + "px")
              : this.state.nMaxWidth &&
                (t.maxWidth = this.state.nMaxWidth + "px");
            let n = "BBCodeResizableComponent";
            this.props.className && (n += " " + this.props.className),
              !e && this.state.bResized && (n += " Resized"),
              !e && this.state.bIsResizing && (n += " ActivelyResizing"),
              !e && this.state.bMinimized && (n += " Minimized"),
              !e && this.state.bIsMinimizing && (n += " Minimizing");
            let i = this.props.titleInfo ? this.props.titleInfo : "";
            return e
              ? F.createElement(
                  x.xh,
                  {
                    style: this.props["data-copystyle"],
                    text: this.props["data-copytext"],
                  },
                  F.createElement(
                    "div",
                    { className: n, style: t, ref: this.BindContainer },
                    this.props.children,
                  ),
                )
              : F.createElement(
                  et.p,
                  { name: "/Chat/BBCodeResizableComponent/Component" },
                  F.createElement(
                    x.xh,
                    {
                      style: this.props["data-copystyle"],
                      text: this.props["data-copytext"],
                    },
                    F.createElement(
                      "div",
                      { className: n, style: t, ref: this.BindContainer },
                      F.createElement(
                        "div",
                        {
                          className: "BBCodeCollapsed",
                          onClick: this.handleCollapse,
                          title: i,
                        },
                        (0, P.we)(
                          `#bbcode_${this.props.strMediaType}_minimized`,
                        ),
                      ),
                      !this.state.bMinimized &&
                        !this.state.bIsMinimizing &&
                        this.props.children,
                      F.createElement(
                        "div",
                        {
                          className: "BBCodeRestoreControl",
                          onClick: this.handleRestore,
                          title: (0, P.we)(
                            `#bbcode_${this.props.strMediaType}_tooltip_restore`,
                          ),
                        },
                        F.createElement("div", { className: "restoreSize" }),
                      ),
                      F.createElement(
                        "div",
                        {
                          className: "BBCodeResizeControl",
                          onMouseDown: this.OnResize,
                          title: (0, P.we)(
                            `#bbcode_${this.props.strMediaType}_tooltip_resize`,
                          ),
                        },
                        F.createElement(N.KOs, null),
                      ),
                      F.createElement(
                        "div",
                        {
                          className: "BBCodeCollapseControl",
                          onClick: this.handleCollapse,
                          title: this.state.bMinimized
                            ? (0, P.we)(
                                `#bbcode_${this.props.strMediaType}_tooltip_uncollapse`,
                              )
                            : (0, P.we)(
                                `#bbcode_${this.props.strMediaType}_tooltip_collapse`,
                              ),
                        },
                        F.createElement(N.X, null),
                      ),
                    ),
                  ),
                );
          }
        }
        (0, i.Cg)([c.oI], at.prototype, "BindContainer", null),
          (0, i.Cg)([c.oI], at.prototype, "handleCollapse", null),
          (0, i.Cg)([c.oI], at.prototype, "OnSizeChanged", null),
          (0, i.Cg)([c.oI], at.prototype, "handleRestore", null),
          (0, i.Cg)([c.oI], at.prototype, "OnResize", null),
          (0, i.Cg)([c.oI], at.prototype, "HandleMouseMove", null),
          (0, i.Cg)([c.oI], at.prototype, "HandleTallImages", null),
          (0, i.Cg)([c.oI], at.prototype, "HandleMouseUp", null);
        class st extends F.Component {
          constructor(e) {
            super(e);
            let t = p.xm.ChatStore.EmbedStore.GetCollapsedState(
              this.props.unAccountIDSender,
              this.props.msgUniqueKey,
            );
            this.state = { bCollapsed: t };
          }
          OnToggleCollapse(e) {
            let t = !this.state.bCollapsed;
            this.setState({ bCollapsed: t }),
              p.xm.ChatStore.EmbedStore.SetCollapsedState(
                this.props.unAccountIDSender,
                this.props.msgUniqueKey,
                t,
              );
          }
          render() {
            let e = this.state.bCollapsed,
              t = "BBCodeResizableComponent";
            this.props.className && (t += " " + this.props.className),
              e && (t += " Minimized");
            let n = this.props.titleInfo ? this.props.titleInfo : "",
              i = e
                ? (0, P.we)(
                    `#bbcode_${this.props.strMediaType}_tooltip_uncollapse`,
                  )
                : (0, P.we)(
                    `#bbcode_${this.props.strMediaType}_tooltip_collapse`,
                  );
            return F.createElement(
              x.xh,
              {
                style: this.props["data-copystyle"],
                text: this.props["data-copytext"],
              },
              F.createElement(
                "div",
                { className: t },
                F.createElement(
                  "div",
                  {
                    className: "BBCodeCollapsed",
                    onClick: this.OnToggleCollapse,
                    title: n,
                  },
                  (0, P.we)(`#bbcode_${this.props.strMediaType}_minimized`),
                ),
                !this.state.bCollapsed && this.props.children,
                F.createElement(lt, {
                  onClick: this.OnToggleCollapse,
                  title: i,
                }),
              ),
            );
          }
        }
        function lt(e) {
          return F.createElement(
            "div",
            {
              className: "BBCodeCollapseControl",
              onClick: e.onClick,
              title: e.title,
            },
            F.createElement(N.X, null),
          );
        }
        function ct(e) {
          let t = e.titleInfo ? e.titleInfo : "",
            n = (0, P.we)(`#bbcode_${e.mediaType}_minimized`);
          (0, P.we)(`#bbcode_${e.mediaType}_tooltip_restore`);
          return F.createElement(
            "div",
            { className: "BBCodeAlreadyCollapsed Minimized" },
            F.createElement(
              "div",
              {
                className: "BBCodeAlreadyCollapsedText",
                onClick: e.onClick,
                title: t,
              },
              n,
            ),
            F.createElement(
              "div",
              {
                className: "BBCodeCollapseControl",
                onClick: e.onClick,
                title: e.titleInfo,
              },
              F.createElement(N.X, null),
            ),
          );
        }
        (0, i.Cg)([c.oI], st.prototype, "OnToggleCollapse", null);
        let mt = class extends pe.mX {
          GetVideoID() {
            return this.GetArgument("v").replace(
              /^[^a-z0-9\-_]*([a-z0-9\-_]+).*$/gi,
              "$1",
            );
          }
          render() {
            return p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining
              ? this.renderNoEmbed()
              : F.createElement(
                  Qe,
                  {
                    preference: "youtube",
                    fallbackRender: () => this.renderNoEmbed(),
                  },
                  F.createElement(dt, {
                    videoId: this.GetVideoID(),
                    t: this.GetArgument("t"),
                    context: this.props.context,
                  }),
                );
          }
          renderNoEmbed() {
            let e = this.GetArgument("t"),
              t =
                "https://www.youtube.com/watch?v=" +
                encodeURIComponent(this.GetVideoID());
            return (
              e && (t += "&t=" + encodeURIComponent(e)),
              F.createElement(Ze, { href: t }, F.createElement(N.YuU, null), t)
            );
          }
        };
        mt = (0, i.Cg)([G.PA], mt);
        class dt extends F.Component {
          containerRef = F.createRef();
          constructor(e) {
            super(e),
              (this.state = { strTitle: "", strAuthor: "", strVideoID: "" });
          }
          OnVideoInfoChanged(e) {
            let { strTitle: t, strAuthor: n, strVideoID: i } = e;
            this.setState({ strTitle: t, strAuthor: n, strVideoID: i });
          }
          OnPlayerReady() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "BBCodeYouTubeComponent " + this.state.strVideoID,
              );
          }
          OnPlaceholderImageLoad() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "BBCodeYouTubeComponent " + this.state.strVideoID,
              );
          }
          componentDidMount() {
            this.containerRef.current.ownerDocument.defaultView.setTimeout(
              () => {
                this.props.context.onLoad &&
                  this.props.context.onLoad(
                    "BBCodeYouTubeComponent " + this.state.strVideoID,
                  );
              },
              250,
            );
          }
          render() {
            let e = this.state.strAuthor,
              t = this.state.strTitle,
              n = "https://www.youtube.com/watch?v=" + this.state.strVideoID;
            const { videoId: i, t: o } = this.props;
            o && (n += "&t=" + encodeURIComponent(o));
            const r = ge(o);
            return F.createElement(
              x.xh,
              { style: "block", text: [t, n] },
              F.createElement(
                at,
                {
                  className: "BBCodeYouTubeComponent",
                  unAccountIDSender: this.props.context.unAccountIDSender,
                  msgUniqueKey: this.props.context.key,
                  strMediaType: "video",
                  titleInfo: t,
                  onSizeChanged: this.props.context.onLoad,
                },
                F.createElement(
                  "div",
                  {
                    className:
                      "BBCodeYouTubeComponent_Sizer BBCodeResizableElement",
                    ref: this.containerRef,
                  },
                  F.createElement(ye.N, {
                    video: i,
                    startSeconds: r,
                    width: 640,
                    height: 385,
                    autoplay: !1,
                    controls: !0,
                    showFullscreenBtn: !0,
                    onVideoInfoChanged: this.OnVideoInfoChanged,
                    onPlayerReady: this.OnPlayerReady,
                  }),
                  F.createElement(
                    x.xh,
                    { style: "block", text: [t, n] },
                    F.createElement("img", {
                      src:
                        a.TS.PUBLIC_SHARED_URL +
                        "images/responsive/youtube_16x9_placeholder.gif",
                      width: "100%",
                      onLoad: this.OnPlaceholderImageLoad,
                    }),
                  ),
                ),
                t.length > 0 &&
                  F.createElement(
                    B.uU,
                    { className: "test HideWhenMinimized", href: n },
                    F.createElement("div", { className: "BBCodeTitle" }, t),
                  ),
                e.length > 0 &&
                  F.createElement(
                    "div",
                    { className: "BBCodeDetails HideWhenMinimized" },
                    (0, P.we)("#bbcode_youtube_author", e),
                  ),
              ),
            );
          }
        }
        var ut;
        (0, i.Cg)([c.oI], dt.prototype, "OnVideoInfoChanged", null),
          (0, i.Cg)([c.oI], dt.prototype, "OnPlayerReady", null),
          (0, i.Cg)([c.oI], dt.prototype, "OnPlaceholderImageLoad", null),
          (function (e) {
            (e[(e.Loading = 1)] = "Loading"),
              (e[(e.Loaded = 2)] = "Loaded"),
              (e[(e.Error = 3)] = "Error");
          })(ut || (ut = {}));
        let ht = class extends pe.mX {
          k_nUnknownImageWidth = 300;
          k_nUnknownImageHeight = 300;
          k_nMaxImageWidth = 315;
          constructor(e) {
            super(e);
            let t = p.xm.ChatStore.EmbedStore.GetCollapsedState(
                this.props.context.unAccountIDSender,
                this.props.context.key,
              ),
              n = parseInt(this.GetArgument("width")),
              i = parseInt(this.GetArgument("height"));
            this.state = {
              eLoadingState: ut.Loading,
              bCollapsed: t,
              nMediaWidth: n,
              nMediaHeight: i,
            };
          }
          OnToggleCollapse(e) {
            let t = !this.state.bCollapsed;
            this.setState({ bCollapsed: t }),
              p.xm.ChatStore.EmbedStore.SetCollapsedState(
                this.props.context.unAccountIDSender,
                this.props.context.key,
                t,
              );
          }
          IsEmbeddedInOtherTag() {
            for (let e of this.props.parentTags) if ("tweet" == e) return !0;
            return !1;
          }
          IsGiphy() {
            return void 0 !== this.GetArgument("giphy_search");
          }
          IsImgur() {
            return this.GetArgument("src").startsWith("https://imgur.com");
          }
          OnImageLoad(e) {
            let t = e.currentTarget;
            this.setState({
              eLoadingState: ut.Loaded,
              nMediaWidth: t.naturalWidth,
              nMediaHeight: t.naturalHeight,
            }),
              this.props.context.onLoad &&
                this.props.context.onLoad("BBCodeImage " + this.props.args.src);
          }
          OnImageError() {
            this.setState({ eLoadingState: ut.Error });
          }
          ShowModal(e, t) {
            let n = parseInt(this.GetArgument("width")),
              i = parseInt(this.GetArgument("height")),
              o = n / i;
            const r = e.currentTarget.ownerDocument.defaultView;
            let a = 0.85 * r.screen.height,
              s = Ae.OQ(n || 600, 0.5 * r.screen.width, 0.85 * r.screen.width),
              l = Ae.OQ(i || 800, 0.5 * r.screen.height, a);
            o >= 1
              ? ((l = (s - 50) / o + 50),
                l > a && ((l = a), (s = (l - 50) * o + 50)))
              : (s = (l - 50) * o + 50),
              (0, J.HT)(
                F.createElement(gt, {
                  imageUrl: t,
                  ownerWin: r,
                  fullImageUrl: this.GetArgument("src"),
                }),
                r,
                "ImageModal",
                {
                  strTitle: (0, P.we)("#bbcode_image_popout"),
                  popupHeight: l,
                  popupWidth: s,
                },
                (0, wn.h8)(r),
              );
          }
          OnContextMenu(e) {
            (0, B.DH)(e, this.GetArgument("src"));
          }
          OnClick(e) {
            let t = this.GetArgument("src"),
              n = this.GetArgument("thumbnail_src");
            this.IsGiphy()
              ? (t = n)
              : this.IsImgur() && (t = n.replace("?fb", "")),
              this.ShowModal(e, t);
          }
          render() {
            let e,
              t = this.GetArgument("thumbnail_src"),
              n = this.GetArgument("srcset", !0),
              i = this.GetArgument("src"),
              o = this.GetArgument("title"),
              r = this.state.eLoadingState,
              a = this.IsGiphy(),
              s = r == ut.Error;
            if (
              (a && (e = `/giphy ${this.GetArgument("giphy_search")}`),
              s || p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining)
            ) {
              if (a)
                return F.createElement(
                  Ze,
                  { href: i, copyText: [e, i], loadFailed: s },
                  F.createElement("div", {
                    className: "NonInlinedEmbedLogo NonInlinedEmbedLogo_Giphy",
                  }),
                  F.createElement(
                    "span",
                    { style: { fontWeight: "bold" } },
                    " ",
                    (0, P.PP)(
                      "#bbcode_image_link_giphy",
                      F.createElement(
                        "span",
                        { className: "giphySearch" },
                        this.GetArgument("giphy_search"),
                      ),
                    ),
                  ),
                );
              let t = i;
              return (
                o &&
                  (t = (0, P.we)(
                    "#bbcode_disable_embed_inlining_parenthetical",
                    o,
                    Me.Qz(i),
                  )),
                F.createElement(
                  Ze,
                  { href: i, copyText: [o, i], loadFailed: s },
                  F.createElement(N._V3, null),
                  t,
                )
              );
            }
            if (this.IsEmbeddedInOtherTag())
              return F.createElement(St, {
                className: "embeddedImg",
                context: this.props.context,
                src: t,
                onContextMenu: B.xE,
                onError: this.OnImageError,
              });
            if (this.state.bCollapsed)
              return F.createElement(ct, {
                onClick: this.OnToggleCollapse,
                mediaType: "image",
              });
            let l = this.state.nMediaWidth,
              c = this.state.nMediaHeight;
            (l && c) ||
              ((l = this.k_nUnknownImageWidth),
              (c = this.k_nUnknownImageHeight)),
              "true" == this.GetArgument("proxied") && (t += "?s=652x652");
            const m = this.props.parentTags.some((e) => "spoiler" === e)
              ? { minWidth: `${Math.min(l, this.k_nMaxImageWidth)}px` }
              : void 0;
            let d = a
              ? (0, P.we)(
                  "#bbcode_image_link_giphy",
                  this.GetArgument("giphy_search"),
                )
              : i;
            return F.createElement(
              F.Fragment,
              null,
              a && F.createElement(x.xh, null, F.createElement("div", null, e)),
              F.createElement(
                x.xh,
                { style: "block", text: [o, i] },
                F.createElement(
                  "div",
                  {
                    className: (0, se.A)("chatImageContainer", a && "giphyImg"),
                    style: m,
                  },
                  F.createElement(
                    pt,
                    {
                      className: "BBCodeImageWrapper",
                      width: l,
                      height: c,
                      maxHeight: Math.min(c, this.k_nMaxImageWidth),
                    },
                    F.createElement("img", {
                      className: "chatImageFull BBCodeResizableElement",
                      src: t,
                      srcSet: n,
                      onLoad: this.OnImageLoad,
                      onError: this.OnImageError,
                      onContextMenu: this.OnContextMenu,
                      onClick: this.OnClick,
                    }),
                    a &&
                      F.createElement(_t, {
                        strLink: i,
                        searchText: this.GetArgument("giphy_search"),
                      }),
                    F.createElement(lt, {
                      onClick: this.OnToggleCollapse,
                      title: d,
                    }),
                  ),
                ),
              ),
            );
          }
        };
        function pt(e) {
          let t = e.height / e.width,
            n = {
              height: 0,
              overflow: "hidden",
              paddingTop: `calc( ${t} * 100% )`,
              position: "relative",
            },
            i = {};
          return (
            e.maxHeight && (i.maxWidth = e.maxHeight / t),
            F.createElement(
              "div",
              { style: i, className: e.className },
              F.createElement(
                "div",
                { style: n, className: "PreserveAspect" },
                e.children,
              ),
            )
          );
        }
        function _t(e) {
          let t = (0, P.we)("#bbcode_image_tooltip_link_giphy", e.searchText);
          return F.createElement(
            F.Fragment,
            null,
            F.createElement(
              B.uU,
              { className: "chatImageURL", href: e.strLink, title: t },
              F.createElement(
                "div",
                { className: "giphyTag" },
                (0, P.PP)(
                  "#bbcode_image_link_giphy",
                  F.createElement(
                    "span",
                    { className: "giphySearch" },
                    e.searchText,
                  ),
                ),
              ),
            ),
          );
        }
        function gt(e) {
          const {
              closeModal: t,
              ownerWin: n,
              imageUrl: i,
              fullImageUrl: o,
            } = e,
            r = F.useCallback(
              (e) => {
                (0, B.DH)(e, o);
              },
              [o],
            );
          return F.createElement(
            J.x_,
            { onEscKeypress: t, hideTopBar: !0 },
            F.createElement(
              "div",
              { className: Ge().ImageModalBackground },
              F.createElement("img", {
                className: Ge().ImageModalContent,
                src: i,
                onContextMenu: r,
              }),
            ),
          );
        }
        (0, i.Cg)([c.oI], ht.prototype, "OnToggleCollapse", null),
          (0, i.Cg)([c.oI], ht.prototype, "OnImageLoad", null),
          (0, i.Cg)([c.oI], ht.prototype, "OnImageError", null),
          (0, i.Cg)([c.oI], ht.prototype, "ShowModal", null),
          (0, i.Cg)([c.oI], ht.prototype, "OnContextMenu", null),
          (0, i.Cg)([c.oI], ht.prototype, "OnClick", null),
          (ht = (0, i.Cg)([G.PA], ht));
        let Ct = class extends pe.mX {
          m_elVideo;
          m_listeners = new b.Ji();
          m_resizeObserver;
          m_refVideo = F.createRef();
          constructor(e) {
            super(e),
              (this.state = {
                bSeeking: !1,
                bPlay: !1,
                bError: !1,
                bPaused: !0,
                scrollArea: void 0,
                videoDimensions: void 0,
              });
          }
          componentWillUnmount() {
            this.m_listeners.Unregister(), this.DisconnectResizeObserver();
          }
          StartVideo() {
            this.m_elVideo && this.m_elVideo.play();
          }
          DisconnectResizeObserver() {
            this.m_resizeObserver &&
              (this.m_resizeObserver.disconnect(),
              (this.m_resizeObserver = void 0));
          }
          BindVideo(e) {
            if (
              (this.m_listeners.Unregister(),
              this.DisconnectResizeObserver(),
              (this.m_elVideo = e),
              !this.m_elVideo)
            )
              return;
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "loadedmetadata",
              this.OnLoadMetadata,
            );
            let t = Q._f(this.m_elVideo, "y");
            t &&
              (this.m_resizeObserver = (0, c.Fd)(
                t,
                this.OnResizeScrollAncestor,
              ));
            let n = t
              ? { m_nWidth: t.clientWidth, m_nHeight: t.clientHeight }
              : void 0;
            this.setState({ scrollArea: n, videoDimensions: void 0 });
          }
          OnLoadMetadata() {
            let e = this.m_elVideo,
              t = { m_nWidth: e.videoWidth, m_nHeight: e.videoHeight };
            this.setState({ videoDimensions: t });
          }
          OnResizeScrollAncestor(e, t) {
            if (1 != e.length) return;
            let n = e[0].target,
              i = { m_nWidth: n.clientWidth, m_nHeight: n.clientHeight };
            this.setState({ scrollArea: i });
          }
          OnVideoPlay() {
            this.setState({ bPlay: !0, bPaused: !1 });
          }
          OnVideoPause() {
            this.state.bPlay
              ? this.setState({ bPaused: !0 })
              : this.state.bSeeking || this.setState({ bPlay: !1 });
          }
          OnVideoError(e) {
            this.setState({ bError: !0 });
          }
          OnVideoLoaded() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "CBBCodeVideo " + this.props.context.key,
              );
          }
          OnPanelActivate(e) {
            this.m_elVideo &&
              (this.m_elVideo.paused
                ? this.m_elVideo.play()
                : this.m_elVideo.pause());
          }
          render() {
            return p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining
              ? this.renderNoEmbed()
              : this.GetArgument("steamvideo")
                ? this.renderEmbedded()
                : F.createElement(Qe, {
                    preference: "generic",
                    render: () => this.renderEmbedded(),
                    fallbackRender: () => this.renderNoEmbed(),
                  });
          }
          renderNoEmbed() {
            const e = this.GetArgument("src"),
              t = this.GetArgument("title");
            let n = e;
            return (
              t &&
                (n = (0, P.we)(
                  "#bbcode_disable_embed_inlining_parenthetical",
                  t,
                  Me.Qz(e),
                )),
              F.createElement(Ze, { href: e }, F.createElement(N.CeX, null), n)
            );
          }
          renderEmbedded() {
            const e = this.GetArgument("src"),
              t = this.GetArgument("title"),
              n = this.GetArgument("associated_app");
            let i = this.state.bError,
              o = p.xm.IsGamepadUIActive(),
              r = {
                controls: this.state.bPlay,
                autoPlay: !1,
                loop: !1,
                muted: !1,
              };
            if (i) {
              let t = F.createElement(
                B.uU,
                {
                  className: "failedVideoURL",
                  href: e,
                  title: (0, P.we)("#bbcode_video_tooltip_link"),
                },
                F.createElement("span", { className: "failedVideoSpan" }, e),
              );
              return F.createElement(
                "div",
                { className: "ChatMessageErrorSendingAlert VideoFailed" },
                (0, P.PP)("#Chat_VideoLoadError", t),
              );
            }
            let a = {},
              s = {};
            if (
              this.state.scrollArea &&
              this.state.scrollArea.m_nHeight > 0 &&
              this.state.videoDimensions &&
              this.state.videoDimensions.m_nHeight > 0
            ) {
              let e = this.state.videoDimensions,
                t = e.m_nWidth / e.m_nHeight,
                n = 0.7 * this.state.scrollArea.m_nHeight,
                i = Math.floor(n * t);
              (s = { width: e.m_nWidth, height: e.m_nHeight, maxWidth: i }),
                (a.maxWidth = i);
            }
            let l = o ? this.OnPanelActivate : void 0;
            return F.createElement(
              Ye.q,
              null,
              F.createElement(
                x.xh,
                { style: "block", text: [t, e] },
                F.createElement(
                  at,
                  {
                    className: "chatVideoContainer",
                    strMediaType: "video",
                    unAccountIDSender: this.props.context.unAccountIDSender,
                    msgUniqueKey: this.props.context.key,
                    titleInfo: e,
                    onSizeChanged: this.props.context.onLoad,
                    ...s,
                  },
                  n && F.createElement(ft, { appid: parseInt(n) }),
                  F.createElement(
                    O.Z,
                    {
                      onActivate: l,
                      onOKActionDescription: (0, P.we)(
                        this.state.bPaused
                          ? "#bbcode_video_play"
                          : "#bbcode_video_pause",
                      ),
                    },
                    F.createElement(
                      "video",
                      {
                        style: a,
                        className: "BBCodeResizableElement",
                        ...r,
                        ref: this.BindVideo,
                        onPause: this.OnVideoPause,
                        onPlay: this.OnVideoPlay,
                        controlsList: "nodownload",
                        onError: this.OnVideoError,
                        onLoadedData: this.OnVideoLoaded,
                        controls: !o,
                      },
                      F.createElement("source", {
                        src: e,
                        type: this.GetArgument("type", !0),
                        onError: this.OnVideoError,
                        onLoad: this.OnVideoLoaded,
                      }),
                    ),
                    !this.state.bPlay &&
                      F.createElement(
                        "div",
                        {
                          className: "chatVideoPlayControl HideWhenMinimized",
                          onClick: this.StartVideo,
                        },
                        F.createElement(
                          "div",
                          { className: "playButtonContainer" },
                          F.createElement(N.jGG, null),
                        ),
                      ),
                    !o &&
                      F.createElement(
                        B.uU,
                        {
                          className: "chatImageURL",
                          href: e,
                          title: (0, P.we)("#bbcode_video_tooltip_link"),
                        },
                        F.createElement(N.YNO, null),
                      ),
                  ),
                ),
              ),
            );
          }
        };
        function ft(e) {
          const { appid: t } = e,
            n = p.xm.AppInfoStore.GetAppInfo(t);
          if (!n || !n.is_valid) return null;
          return F.createElement(
            Je.he,
            {
              toolTipContent: (0, P.we)("#AssociatedApp_ViewOnStore"),
              className: Ge().AssociatedAppContainer,
            },
            F.createElement(
              O.Z,
              {
                className: Ge().AssociatedApp,
                onActivate: (e) => {
                  let n = Q.uX(e);
                  (0, B.EP)(n, `${a.TS.STORE_BASE_URL}app/${t}`);
                },
                onOKActionDescription: (0, P.we)("#AssociatedApp_ViewOnStore"),
              },
              F.createElement("img", {
                src: n.icon_url,
                className: Ge().Image,
              }),
              F.createElement("div", { className: Ge().Name }, n.name),
            ),
          );
        }
        (0, i.Cg)([c.oI], Ct.prototype, "StartVideo", null),
          (0, i.Cg)([c.oI], Ct.prototype, "BindVideo", null),
          (0, i.Cg)([c.oI], Ct.prototype, "OnLoadMetadata", null),
          (0, i.Cg)(
            [c.oI, (0, De.s)(100)],
            Ct.prototype,
            "OnResizeScrollAncestor",
            null,
          ),
          (0, i.Cg)([c.oI], Ct.prototype, "OnVideoPlay", null),
          (0, i.Cg)([c.oI], Ct.prototype, "OnVideoPause", null),
          (0, i.Cg)([c.oI], Ct.prototype, "OnVideoError", null),
          (0, i.Cg)([c.oI], Ct.prototype, "OnVideoLoaded", null),
          (0, i.Cg)([c.oI], Ct.prototype, "OnPanelActivate", null),
          (Ct = (0, i.Cg)([G.PA], Ct));
        class St extends F.Component {
          OnLoad() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "ImgNotifyChatOnLoad " + this.props.src,
              );
          }
          render() {
            let { context: e, ...t } = this.props;
            return F.createElement("img", { ...t, onLoad: this.OnLoad });
          }
        }
        function vt(e) {
          const { context: t, width: n, height: i, src: o, ...r } = e,
            a = `${o}?s=${n}x${i}`,
            s = a + "dpx2x";
          return F.createElement(St, {
            context: t,
            ...r,
            src: a,
            srcSet: `${a} 1x, ${s} 2x`,
          });
        }
        (0, i.Cg)([c.oI], St.prototype, "OnLoad", null);
        let bt = class extends pe.mX {
          CopyToClipboard() {
            let e = this.GetArgument("url");
            e && 0 != e.length && Q.YQ(e);
          }
          HandleFocus(e) {
            e.target.select();
          }
          OnLoad() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                `CBBCodeOpenGraph.OnLoad ${this.GetArgument("url")}`,
              );
          }
          render() {
            let e = this.GetArgument("img"),
              t = this.GetArgument("title"),
              n = this.GetArgument("desc"),
              i = this.GetArgument("url"),
              o = Me.Qz(i);
            if (p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining) {
              let e = i;
              return (
                t &&
                  (e = (0, P.we)(
                    "#bbcode_disable_embed_inlining_parenthetical",
                    t,
                    o,
                  )),
                F.createElement(
                  Ze,
                  { href: i, copyText: [e, i] },
                  F.createElement(N.Rkk, null),
                  e,
                )
              );
            }
            return F.createElement(
              x.xh,
              { style: "block", text: [t, n, i] },
              F.createElement(
                O.Z,
                {
                  className: "ChatMessageOpenGraph",
                  focusable: p.xm.IsGamepadUIActive(),
                  onActivate: () => {
                    if (!p.xm.IsGamepadUIActive()) return;
                    let e = (0, Xe.p)(i) ? (0, Xe.E)(i) : i;
                    p.xm.OpenURLInBrowser(e, C.m);
                  },
                  onOKActionDescription: (0, P.we)("#Chat_Visit_Link"),
                },
                F.createElement(
                  "div",
                  { className: "OpenGraphContent" },
                  e &&
                    e.length > 0 &&
                    F.createElement(
                      "div",
                      { className: "OpenGraphImgBackground" },
                      F.createElement("img", {
                        className: "ChatMessageOpenGraph_Image",
                        src: e,
                        onLoad: this.OnLoad,
                      }),
                    ),
                  e &&
                    e.length > 0 &&
                    F.createElement(
                      B.uU,
                      { className: "OpenGraphImgContainer", href: i },
                      F.createElement(vt, {
                        width: 256,
                        height: 140,
                        context: this.props.context,
                        className: "ChatMessageOpenGraph_Image",
                        src: e,
                        onContextMenu: (e) => {
                          (0, B.xE)(e, i);
                        },
                      }),
                    ),
                  F.createElement(
                    "div",
                    { className: "ChatMessageOpenGraph_Body" },
                    t &&
                      t.length > 0 &&
                      F.createElement(
                        B.uU,
                        { className: "ChatMessageOpenGraph_Title", href: i },
                        t,
                      ),
                    n &&
                      n.length > 0 &&
                      F.createElement(
                        "div",
                        { className: "ChatMessageOpenGraph_Description" },
                        n,
                      ),
                  ),
                  F.createElement("div", { style: { clear: "left" } }),
                ),
                F.createElement(
                  "div",
                  { className: "OpenGraphFooter" },
                  F.createElement(
                    "div",
                    { className: "OpenGraphMessageURL" },
                    F.createElement(
                      "span",
                      {
                        className: "OpenGraphMessageURLPosition",
                        onFocus: this.HandleFocus,
                        onClick: this.HandleFocus,
                      },
                      F.createElement(
                        "span",
                        { className: "OpenGraphMessageURL_short" },
                        o,
                      ),
                      F.createElement("input", {
                        className: "OpenGraphMessageURL_full",
                        value: i,
                        onFocus: this.HandleFocus,
                        onClick: this.HandleFocus,
                        readOnly: !0,
                      }),
                    ),
                  ),
                  F.createElement(
                    "div",
                    {
                      className: "OpenGraphURLButton CopyToClipboard",
                      onClick: this.CopyToClipboard,
                      title: (0, P.we)("#Chat_Copy_Link_Clipboard"),
                    },
                    F.createElement(N.$rC, null),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], bt.prototype, "CopyToClipboard", null),
          (0, i.Cg)([c.oI], bt.prototype, "HandleFocus", null),
          (0, i.Cg)([c.oI], bt.prototype, "OnLoad", null),
          (bt = (0, i.Cg)([G.PA], bt));
        let It = class extends pe.mX {
          FormatCreatedDate(e) {
            let t = new Date(e),
              n = [
                "Jan",
                "Feb",
                "Mar",
                "Apr",
                "May",
                "Jun",
                "Jul",
                "Aug",
                "Sep",
                "Oct",
                "Nov",
                "Dec",
              ][t.getMonth()];
            return `${t.getDate()} ${n} ${t.getFullYear()}`;
          }
          OpenTweet(e) {
            let t = !1,
              n = e.target,
              i = e.currentTarget;
            for (; n && n != i; ) {
              if (
                "A" == n.nodeName ||
                n.classList.contains("chatVideoContainer")
              ) {
                t = !0;
                break;
              }
              n = n.parentElement;
            }
            t || Q.WC(i) || (0, B.EP)(e, this.GetArgument("url"));
          }
          OnImageLoaded() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "CBBCodeTweet " + this.GetArgument("url"),
              );
          }
          render() {
            let e = this.GetArgument("created"),
              t = this.GetArgument("profile_name"),
              n = this.GetArgument("profile_screen_name"),
              i = this.GetArgument("profile_image"),
              o = this.GetArgument("profile_verified"),
              r = this.GetArgument("url"),
              a = `http://twitter.com/${n}`,
              s = "true" == o;
            if (
              ((e = this.FormatCreatedDate(e)),
              p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining)
            ) {
              let n,
                i = { year: "numeric", month: "long", day: "numeric" },
                o = new Date(e).toLocaleDateString(
                  P.pf.GetPreferredLocales(),
                  i,
                );
              if ("string" == typeof this.props.children)
                n = this.props.children;
              else if (this.props.children instanceof Array)
                for (let e of this.props.children)
                  if ("string" == typeof e) {
                    n = e;
                    break;
                  }
              return F.createElement(
                Ze,
                { href: r, copyText: [n, r] },
                F.createElement("div", {
                  className: "NonInlinedEmbedLogo NonInlinedEmbedLogo_Twitter",
                }),
                (0, P.we)("#bbcode_disable_embed_inlining_tweet", t, o),
                F.createElement("br", null),
                F.createElement(
                  "div",
                  { className: "NonInlinedEmbedSingleLine" },
                  n,
                ),
              );
            }
            return F.createElement(
              "div",
              { className: Ge().ChatMessageTweet, onClick: this.OpenTweet },
              F.createElement(
                x.xh,
                { style: "block", text: `${t} (@${n})` },
                F.createElement(
                  "div",
                  { className: Ge().ChatMessageTweet_Header },
                  F.createElement(
                    B.uU,
                    { className: Ge().ChatMessageTweet_ProfileImage, href: a },
                    F.createElement("img", {
                      src: i,
                      onLoad: this.OnImageLoaded,
                    }),
                  ),
                  F.createElement(
                    "div",
                    { className: Ge().ChatMessageTweet_NameSection },
                    F.createElement(
                      "div",
                      { className: Ge().ChatMessageTweet_NameGroup },
                      F.createElement(
                        B.uU,
                        { className: Ge().ChatMessageTweet_Name, href: a },
                        t,
                      ),
                      s &&
                        F.createElement("div", {
                          className: Ge().ChatMessageTweet_Verified,
                        }),
                    ),
                    F.createElement(
                      B.uU,
                      { className: Ge().ChatMessageTweet_ScreenName, href: a },
                      "@",
                      n,
                    ),
                  ),
                  F.createElement(B.uU, {
                    className: Ge().ChatMessageTweet_Logo,
                    href: r,
                  }),
                ),
              ),
              F.createElement(
                x.xh,
                {
                  style: "block-continue prepend-innertext-with-newline",
                  text: r,
                },
                F.createElement(
                  "div",
                  { className: Ge().ChatMessageTweet_Body },
                  this.props.children,
                ),
              ),
              F.createElement(
                "div",
                { className: Ge().ChatMessageTweet_Footer },
                F.createElement(
                  "div",
                  { className: Ge().ChatMessageTweet_Created },
                  e,
                ),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], It.prototype, "OpenTweet", null),
          (0, i.Cg)([c.oI], It.prototype, "OnImageLoaded", null),
          (It = (0, i.Cg)([G.PA], It));
        let wt = class extends pe.mX {
          constructor(e) {
            super(e), (this.state = { bActivated: !1 });
          }
          Activate() {
            this.setState({ bActivated: !0 });
          }
          OnImageLoaded() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "CBBCodeOEmbed " + this.props.context.key,
              );
          }
          render() {
            let e = this.GetArgument("url"),
              t = this.GetArgument("title"),
              n = this.GetArgument("author"),
              i = this.GetArgument("provider_name"),
              o = this.GetArgument("preview_image");
            if (p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining) {
              let n = e;
              return (
                t &&
                  (n = (0, P.we)(
                    "#bbcode_disable_embed_inlining_parenthetical",
                    t,
                    e,
                  )),
                F.createElement(
                  Ze,
                  { href: e, copyText: [t, e] },
                  F.createElement(N.Rkk, null),
                  n,
                )
              );
            }
            let r,
              a = !this.state.bActivated;
            if ((("SoundCloud" != i && "Spotify" != i) || (a = !1), a))
              r = F.createElement(
                "div",
                { className: "OEmbedPreview", onClick: this.Activate },
                F.createElement(
                  "div",
                  { className: "oembedImgContainer" },
                  F.createElement(
                    x.xh,
                    { style: "block", text: [t, e] },
                    F.createElement("img", {
                      src: o,
                      onLoad: this.OnImageLoaded,
                    }),
                  ),
                  F.createElement(
                    "div",
                    { className: "oembedHint" },
                    (0, P.we)("#bbcode_oembed_preview_hint"),
                  ),
                ),
                F.createElement("div", { className: "oembedProvider" }, i),
                F.createElement("div", { className: "oembedTitle" }, t),
              );
            else {
              const {
                src: o,
                width: a,
                height: s,
              } = JSON.parse(this.GetArgument("iframe_attrs"));
              r = F.createElement(
                B.uU,
                {
                  className: "OpenGraphImgContainer",
                  href: e,
                  style: { display: "flex", flexDirection: "column" },
                },
                F.createElement(yt, {
                  width: a,
                  height: s,
                  src: o,
                  strProviderName: i,
                }),
                i &&
                  i.length &&
                  F.createElement("div", { className: "oembedProvider" }, i),
                t &&
                  t.length > 0 &&
                  F.createElement("div", { className: "oembedTitle" }, t),
                n &&
                  n.length > 0 &&
                  F.createElement(
                    "div",
                    { className: "oembedAuthor" },
                    (0, P.we)("#bbcode_oembed_author", n),
                  ),
              );
            }
            let s = "generic";
            return (
              "Vimeo" == i
                ? (s = "vimeo")
                : "Sketchfab" == i && (s = "sketchfab"),
              F.createElement(
                Qe,
                { fallbackHref: e, preference: s },
                F.createElement(
                  x.xh,
                  { style: "block", text: [t, e] },
                  F.createElement(
                    "div",
                    { className: "BBCodeOEmbedComponent " + i },
                    r,
                  ),
                ),
              )
            );
          }
        };
        function yt(e) {
          const t = e.strProviderName;
          let { src: n, width: i, height: o } = e;
          if (!n || !n.startsWith("http")) return null;
          "SoundCloud" == t && (n = n.replace("visual=true", "visual=false"));
          const r = 640;
          let a = "number" == typeof i ? i : parseInt(i),
            s = "number" == typeof o ? o : parseInt(o);
          !isNaN(a) && !isNaN(s) && a > r && ((s *= r / a), (a = r));
          const l = { flex: isNaN(s) ? void 0 : `1 1 ${s}px`, maxWidth: r };
          return F.createElement("iframe", {
            height: isNaN(s) ? void 0 : `${s}px`,
            style: l,
            src: n,
            scrolling: "no",
            frameBorder: 0,
            sandbox: "allow-scripts allow-same-origin",
            allowFullScreen: "Vimeo" === t || void 0,
          });
        }
        (0, i.Cg)([c.oI], wt.prototype, "Activate", null),
          (0, i.Cg)([c.oI], wt.prototype, "OnImageLoaded", null),
          (wt = (0, i.Cg)([G.PA], wt));
        class Et extends pe.mX {
          render() {
            return F.createElement(he, null, this.props.children);
          }
        }
        class Dt extends pe.mX {
          render() {
            const {
              context: { bAnimate: e, onAnimationStart: t, onAnimationEnd: n },
            } = this.props;
            return F.createElement(
              "div",
              {
                className: (0, se.A)(Ge().plusOne, e && Ge().MsgAnimating),
                onAnimationStart: t,
                onAnimationEnd: n,
              },
              "+1",
            );
          }
        }
        class At extends pe.mX {
          render() {
            const {
                context: {
                  bAnimate: e,
                  onAnimationStart: t,
                  onAnimationEnd: n,
                },
              } = this.props,
              i = this.props.children,
              o = this.GetArgument("result"),
              r = (0, se.A)(Ge().flipCoinAndResult, e && Ge().MsgAnimating),
              a = (0, se.A)(Ge().flipCoinContainer, o);
            return F.createElement(
              x.xh,
              { text: i },
              F.createElement(
                "div",
                { className: r, onAnimationStart: t, onAnimationEnd: n },
                F.createElement("div", null, "/flip:"),
                F.createElement(
                  "div",
                  { className: a },
                  F.createElement(
                    "div",
                    { className: Ge().coin },
                    F.createElement("div", { className: Ge().front }),
                    F.createElement("div", { className: Ge().front_b }),
                    F.createElement("div", { className: Ge().mid }),
                    F.createElement("div", { className: Ge().back }),
                    F.createElement("div", { className: Ge().back_b }),
                  ),
                ),
                F.createElement(
                  "div",
                  { className: Ge().resultLabel },
                  (0, P.we)("#SlashCommandCoinFlip_Result_" + o),
                ),
              ),
            );
          }
        }
        class Tt extends pe.mX {
          Pad(e, t) {
            let n = e + "";
            for (; n.length < t; ) n = "0" + n;
            return n;
          }
          GetLastNumber(e) {
            if (e < 10) return e;
            let t = Math.pow(10, Math.floor(Math.log(e) / Math.log(10)) - 1),
              n = Math.floor(e / t);
            return n - 10 * Math.floor(n / 10);
          }
          render() {
            let e = this.props.children,
              t = this.GetArgument("min"),
              n = this.GetArgument("max"),
              i = this.Pad(this.GetArgument("result"), n.length),
              o = [],
              r = !0;
            for (let e = 0; e < n.length; e++) {
              "0" != i[e] && (r = !1);
              let t = ((n.length - e) * Math.max(0.5 * n.length, 2)) / n.length,
                a = 10 - e;
              o.push(
                F.createElement(
                  "div",
                  { key: "random" + e, className: Ge().numberCounterContainer },
                  F.createElement(
                    "div",
                    {
                      className:
                        Ge().numberColumn + (r ? " " + Ge().startingZero : ""),
                      style: {
                        animationDuration: t + "s",
                        animationName: Ge()["randomNumbers" + a],
                      },
                    },
                    F.createElement(
                      "div",
                      {
                        className: `${Ge().randomNumberLabel} ${Ge().randomActual}`,
                      },
                      i[e],
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 1),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 2),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 3),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 4),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 5),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 6),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 7),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 8),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      this.GetLastNumber(parseInt(i[e]) + 9),
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().randomNumberLabel },
                      i[e],
                    ),
                  ),
                  F.createElement("div", {
                    className: Ge().randomNumberShadow,
                  }),
                ),
              );
            }
            const {
              context: { bAnimate: a, onAnimationStart: s, onAnimationEnd: l },
            } = this.props;
            return F.createElement(
              x.xh,
              { text: e },
              F.createElement(
                "div",
                {
                  className: (0, se.A)(Ge().randomMsg, a && Ge().MsgAnimating),
                  onAnimationStart: s,
                  onAnimationEnd: l,
                },
                F.createElement("span", null, "/random "),
                F.createElement(
                  "span",
                  { className: Ge().randomValues },
                  t,
                  "-",
                  n,
                ),
                " : ",
                o,
              ),
            );
          }
        }
        class Mt extends pe.mX {
          render() {
            return F.createElement(ue, null, this.props.children);
          }
        }
        class Rt extends pe.mX {
          render() {
            return F.createElement(de, null, this.props.children);
          }
        }
        class kt extends pe.mX {
          render() {
            return F.createElement(me, null, this.props.children);
          }
        }
        class Lt extends pe.mX {
          constructor(e) {
            super(e), (this.state = { invite: void 0 });
          }
          static getDerivedStateFromProps(e, t) {
            let n = e.args.invitecode;
            return {
              invite: e.context.chat.ChatStore.InviteStore.GetInviteFromCode(n),
            };
          }
          render() {
            let e = this.props.context.chat.GetMember(
              this.props.context.unAccountIDSender,
            );
            return F.createElement(ie, {
              invite: this.state.invite,
              inviter: e,
            });
          }
        }
        class Gt extends pe.mX {
          constructor(e) {
            super(e),
              (this.state = {
                invite: void 0,
                inviter: void 0,
                invitee: void 0,
              });
          }
          static getDerivedStateFromProps(e, t) {
            let n,
              i,
              o,
              r = e.args.chatgroupid,
              a = e.args.chatid,
              s = e.context.chat;
            return (
              s.self.accountid == e.context.unAccountIDSender
                ? ((i = s.self),
                  (o = s.chat_partner),
                  (n = s.accountid_partner))
                : ((i = s.chat_partner), (o = s.self), (n = s.self.accountid)),
              {
                invite:
                  e.context.chat.ChatStore.InviteStore.GetDirectInviteInfo(
                    r,
                    a,
                    n,
                  ),
                inviter: i,
                invitee: o,
              }
            );
          }
          render() {
            return F.createElement(ie, {
              invite: this.state.invite,
              inviter: this.state.inviter,
              invitee: this.state.invitee,
            });
          }
        }
        class Ft extends pe.mX {
          constructor(e) {
            super(e),
              (this.state = {
                inviter: void 0,
                inviteTarget: void 0,
                gameInvite: void 0,
              });
          }
          static getDerivedStateFromProps(e, t) {
            let n,
              i,
              o = e.args.appid,
              r = e.args.connect,
              a = e.args.remoteplay,
              s = e.context.chat;
            return (
              s.self.accountid == e.context.unAccountIDSender
                ? ((n = s.self), (i = s.chat_partner))
                : ((n = s.chat_partner), (i = s.self)),
              {
                inviter: n,
                inviteTarget: i,
                gameInvite:
                  e.context.chat.ChatStore.GameInviteStore.RegisterGameInvite(
                    e.context.unAccountIDSender,
                    e.context.rtTimestamp,
                    parseInt(o),
                    r,
                    a,
                    void 0,
                  ),
              }
            );
          }
          render() {
            return F.createElement(Z, {
              inviter: this.state.inviter,
              inviteTarget: this.state.inviteTarget,
              gameInvite: this.state.gameInvite,
            });
          }
        }
        class Pt extends pe.mX {
          constructor(e) {
            super(e),
              (this.state = {
                inviter: void 0,
                inviteTarget: void 0,
                gameInvite: void 0,
              });
          }
          static getDerivedStateFromProps(e, t) {
            let n,
              i,
              o = e.args.appid,
              r = e.args.lobbyid,
              a = e.context.chat;
            return (
              a.self.accountid == e.context.unAccountIDSender
                ? ((n = a.self), (i = a.chat_partner))
                : ((n = a.chat_partner), (i = a.self)),
              {
                inviter: n,
                inviteTarget: i,
                gameInvite:
                  e.context.chat.ChatStore.GameInviteStore.RegisterGameInvite(
                    e.context.unAccountIDSender,
                    e.context.rtTimestamp,
                    parseInt(o),
                    "",
                    "",
                    r,
                  ),
              }
            );
          }
          render() {
            return F.createElement(Z, {
              inviter: this.state.inviter,
              inviteTarget: this.state.inviteTarget,
              gameInvite: this.state.gameInvite,
            });
          }
        }
        class Bt extends pe.mX {
          constructor(e) {
            super(e),
              (this.state = {
                broadcastid: "",
                broadcaster: void 0,
                viewer: void 0,
                appid: 0,
              });
          }
          static getDerivedStateFromProps(e, t) {
            let n,
              i,
              o = e.args.broadcastid,
              r = Number(e.args.appid),
              a = e.context.chat;
            return (
              a.self.accountid == e.context.unAccountIDSender
                ? ((n = a.self), (i = a.chat_partner))
                : ((n = a.chat_partner), (i = a.self)),
              { broadcastid: o, broadcaster: n, viewer: i, appid: r }
            );
          }
          render() {
            return F.createElement(V, {
              broadcastid: this.state.broadcastid,
              appid: this.state.appid,
              broadcaster: this.state.broadcaster,
              viewer: this.state.viewer,
            });
          }
        }
        class xt extends pe.mX {
          constructor(e) {
            super(e),
              (this.state = {
                broadcaster: void 0,
                viewer: void 0,
                requestid: 0,
                appid: 0,
              });
          }
          static getDerivedStateFromProps(e, t) {
            let n,
              i,
              o = Number(e.args.requestid),
              r = e.context.chat,
              a = p.xm.FriendStore.self.persona.m_unGamePlayedAppID;
            return (
              r.self.accountid != e.context.unAccountIDSender
                ? ((n = r.self), (i = r.chat_partner))
                : ((n = r.chat_partner), (i = r.self)),
              { requestid: o, appid: a, broadcaster: n, viewer: i }
            );
          }
          render() {
            return F.createElement(H, {
              requestid: this.state.requestid,
              appid: this.state.appid,
              broadcaster: this.state.broadcaster,
              viewer: this.state.viewer,
            });
          }
        }
        let Ot = class extends pe.mX {
          m_bMounted;
          constructor(e) {
            super(e),
              (this.m_bMounted = !1),
              (this.state = {
                bHaveVoteData: !1,
                bLocalVoteDown: !1,
                bLocalVoteUp: !1,
                nCommentCount: parseInt(
                  this.GetArgument("num_comments_public"),
                ),
              });
          }
          componentWillUnmount() {
            this.m_bMounted = !1;
          }
          componentDidMount() {
            this.m_bMounted = !0;
            let e = p.xm.CMInterface;
            if (e) {
              let t = this.GetArgument("fileid"),
                n = E.w.Init(Se.LZ, 8509);
              n.Body().add_published_file_ids().set_published_file_id(t),
                e.SendMsgAndAwaitResponse(n, Se.ke).then((e) => {
                  if (
                    1 == e.Body().eresult() &&
                    1 == e.Body().user_item_vote_details().length
                  ) {
                    let t = e.Body().user_item_vote_details()[0].vote();
                    this.m_bMounted &&
                      this.setState({
                        bHaveVoteData: !0,
                        bLocalVoteUp: 1 == t,
                        bLocalVoteDown: 2 == t,
                      });
                  }
                });
            }
          }
          VoteItem(e, t) {
            let n = p.xm.CMInterface;
            if (n) {
              let i = E.w.Init(Se.A7, 8507);
              i.Body().set_published_file_id(t),
                i.Body().set_vote_up(e),
                n.SendMsgAndAwaitResponse(i, Se.DA).then((t) => {
                  1 == t.Body().eresult() &&
                    this.m_bMounted &&
                    this.setState({ bLocalVoteUp: e, bLocalVoteDown: !e });
                });
            }
          }
          render() {
            let e,
              t = this.GetArgument("fileid"),
              n = this.GetArgument("url"),
              i = this.GetArgument("title"),
              o = this.GetArgument("description"),
              r = this.GetArgument("preview_url"),
              a = parseInt(this.GetArgument("file_type")),
              s = ["SteamPublishedFile"];
            switch (a) {
              case 16:
                s.push("clip"),
                  (e = F.createElement(nt, {
                    previewURL: r,
                    clipID: this.GetArgument("external_asset_id"),
                  })),
                  (r = void 0);
                break;
              case 4:
                s.push("video");
                break;
              case 3:
              case 5:
                s.push("image");
            }
            if (p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining) {
              let e = n;
              i &&
                (e = (0, P.we)(
                  "#bbcode_disable_embed_inlining_steam_workshop",
                  i,
                ));
              let t = F.createElement(N.Rkk, null);
              switch (a) {
                case 4:
                  t = F.createElement(N.CeX, null);
                  break;
                case 3:
                case 5:
                  t = F.createElement(N._V3, null);
              }
              return F.createElement(Ze, { href: n, copyText: [e, n] }, t, e);
            }
            let l,
              c = parseInt(this.GetArgument("num_comments_public")),
              m = parseInt(this.GetArgument("votes_up"));
            return (
              this.state.bLocalVoteUp && m++,
              (i || o) &&
                (l = F.createElement(
                  x.xh,
                  { text: [i, o, n] },
                  F.createElement(
                    "div",
                    { className: "ChatLargeImageContainer_Description" },
                    i &&
                      F.createElement(
                        B.uU,
                        { className: "ChatMessageOpenGraph_Title", href: n },
                        i,
                      ),
                    o &&
                      F.createElement(
                        "div",
                        { className: "ChatMessageOpenGraph_Description" },
                        o,
                      ),
                  ),
                )),
              F.createElement(
                "div",
                { className: s.join(" ") },
                r &&
                  r.length > 0 &&
                  F.createElement(
                    B.uU,
                    { className: "ChatLargeImageContainer", href: n },
                    F.createElement(St, {
                      context: this.props.context,
                      className: "ChatLargeImageContainer_Image",
                      src: r,
                      onContextMenu: (e) => {
                        (0, B.DH)(e, n);
                      },
                    }),
                  ),
                e,
                l,
                F.createElement(B.uU, {
                  className: "SteamPublishedFile_Logo",
                  href: n,
                }),
                this.state.bHaveVoteData &&
                  F.createElement(
                    "div",
                    null,
                    F.createElement(
                      "div",
                      { className: "workshopItemControls" },
                      F.createElement(
                        "div",
                        { className: "workshopItemControlCtn" },
                        m >= 0 &&
                          F.createElement(
                            "span",
                            { className: "upvoteCount" },
                            m,
                          ),
                        c >= 0 &&
                          F.createElement(
                            "span",
                            { className: "commentCount" },
                            c,
                          ),
                        F.createElement(
                          "span",
                          {
                            className: this.state.bLocalVoteUp
                              ? "general_btn voteUp toggled"
                              : "general_btn voteUp",
                            onClick: () => {
                              this.VoteItem(!0, t);
                            },
                          },
                          (0, P.we)("#bbcode_community_publishedfile_vote_up"),
                        ),
                        F.createElement("span", {
                          className: this.state.bLocalVoteDown
                            ? "general_btn voteDown toggled"
                            : "general_btn voteDown",
                          onClick: () => {
                            this.VoteItem(!1, t);
                          },
                        }),
                      ),
                    ),
                  ),
              )
            );
          }
        };
        Ot = (0, i.Cg)([G.PA], Ot);
        class Nt extends pe.mX {
          OnCreateOfferClick(e) {
            let t = "NewTradeOffer" + parseInt(this.GetArgument("partner"));
            Q.uX(e)
              .open(
                this.GetArgument("url"),
                t,
                "height=1120,width=1028,resize=yes,scrollbars=yes",
              )
              .focus();
          }
          render() {
            let e = this.GetArgument("url"),
              t = parseInt(this.GetArgument("partner"));
            if (t && t == this.props.context.unAccountIDSender) {
              let n = this.props.context.chat.GetMember(t);
              if (n) {
                let t = (0, P.we)("#TradeOfferLink_Label");
                return F.createElement(
                  x.xh,
                  { style: "block", text: [t, e] },
                  F.createElement(
                    "div",
                    {
                      className:
                        "ChatMessageInvite NoBGSplitInvite TradeOfferInvite",
                    },
                    F.createElement(
                      "div",
                      { className: "leftInviteContainer" },
                      F.createElement(z.gv, {
                        friend: n,
                        context: { chat: this.props.context.chat },
                        bLarge: !0,
                      }),
                    ),
                    F.createElement(
                      "div",
                      {
                        className:
                          "rightInviteContainer rightInvite_Horizontal",
                      },
                      F.createElement(
                        "div",
                        { className: "rightInviteContainerContent" },
                        F.createElement(
                          "div",
                          { className: "inviteLabel TradeOfferInvite_Title" },
                          (0, P.PP)(
                            "#TradeOfferLink_SharedTradeLink",
                            n.display_name,
                          ),
                        ),
                        F.createElement(ae, { url: e, strLabel: t }),
                      ),
                      F.createElement(
                        "button",
                        {
                          className: "inviteButton inviteButtonJoinChat",
                          type: "button",
                          onClick: this.OnCreateOfferClick,
                        },
                        (0, P.PP)("#TradeOfferLink_SendUserOffer"),
                      ),
                    ),
                    F.createElement("div", { style: { clear: "left" } }),
                  ),
                );
              }
            }
            return F.createElement(B.uU, { href: e }, e);
          }
        }
        (0, i.Cg)([c.oI], Nt.prototype, "OnCreateOfferClick", null);
        class Vt extends pe.mX {
          ViewOfferClick(e) {
            let t = this.GetArgument("id"),
              n = a.TS.COMMUNITY_BASE_URL + "tradeoffer/" + t + "/",
              i = "ViewTradeOffer" + t,
              o = Q.uX(e).open(
                n,
                i,
                "height=1120,width=1028,resize=yes,scrollbars=yes",
              );
            o?.focus();
          }
          ViewMyOffersClick(e) {
            let t = this.props.context.chat.self.steamid64,
              n = this.GetArgument("id"),
              i = `${a.TS.COMMUNITY_BASE_URL}profiles/${t}/tradeoffers/sent/#tradeofferid_${n}`;
            (0, B.EP)(e, i);
          }
          render() {
            let e = this.GetArgument("id"),
              t = parseInt(this.GetArgument("sender"));
            if (!e && this.GetArgument("url"))
              return F.createElement(Nt, { ...this.props });
            let n = this.props.context.chat,
              i = n.self.accountid == t,
              o = F.createElement(
                "span",
                { className: "inviteeNameLabel" },
                n.chat_partner.display_name,
              );
            return F.createElement(
              "div",
              { className: "ChatMessageInvite TradeOfferInvite" },
              F.createElement(
                "div",
                { className: "leftInviteContainer" },
                F.createElement(z.gv, {
                  friend: i ? n.self : n.chat_partner,
                  context: { chat: n },
                  bLarge: !0,
                }),
                F.createElement(N.h20, null),
              ),
              F.createElement(
                "div",
                {
                  className:
                    "rightInviteContainer" +
                    (i ? " rightInvite_Horizontal" : ""),
                },
                F.createElement(
                  "div",
                  { className: "rightInviteContainerContent" },
                  F.createElement(
                    x.xh,
                    null,
                    F.createElement(
                      "div",
                      { className: "inviteLabel TradeOfferInvite_Title" },
                      (0, P.PP)(
                        i
                          ? "#TradeOffer_YouSentFriend"
                          : "#TradeOffer_FriendSentYou",
                        o,
                      ),
                    ),
                    F.Children.count(this.props.children) > 0 &&
                      F.createElement(
                        "div",
                        { className: "TradeOffer_NoteFromFriendCtn" },
                        F.createElement("div", {
                          className: "TradeOffer_NoteFromFriend_QuoteArrow",
                        }),
                        F.createElement(
                          "div",
                          {
                            className: "inviteLabel TradeOffer_NoteFromFriend",
                          },
                          this.props.children,
                        ),
                      ),
                  ),
                ),
                F.createElement(
                  "button",
                  {
                    className: "DialogButton Primary",
                    type: "button",
                    onClick: i ? this.ViewMyOffersClick : this.ViewOfferClick,
                  },
                  (0, P.PP)("#TradeOffer_ViewTradeOffer"),
                ),
              ),
              F.createElement("div", { style: { clear: "left" } }),
            );
          }
        }
        (0, i.Cg)([c.oI], Vt.prototype, "ViewOfferClick", null),
          (0, i.Cg)([c.oI], Vt.prototype, "ViewMyOffersClick", null);
        class Ut extends pe.mX {
          constructor(e) {
            super(e), (this.state = { broadcaster: void 0 });
          }
          static getDerivedStateFromProps(e, t) {
            let n = new Ce.b(e.args.broadcaster);
            return {
              broadcaster: p.xm.FriendStore.GetPlayer(n.GetAccountID()),
            };
          }
          render() {
            return F.createElement(W, { broadcaster: this.state.broadcaster });
          }
        }
        let Ht = class extends pe.mX {
          m_bMounted;
          containerRef = F.createRef();
          CopyToClipboard() {
            let e = this.GetArgument("url");
            e && 0 != e.length && Q.YQ(e);
          }
          constructor(e) {
            super(e),
              (this.m_bMounted = !1),
              (this.state = {
                bLoading: !0,
                bStillLoading: !1,
                bLoadFail: !1,
                bLoadSuccess: !1,
                description: null,
              });
          }
          componentWillUnmount() {
            this.m_bMounted = !1;
          }
          componentDidMount() {
            this.m_bMounted = !0;
            let e = p.xm.CMInterface;
            if (e) {
              let t = parseInt(this.GetArgument("appid")),
                n = this.GetArgument("classid"),
                i = this.GetArgument("instanceid"),
                o = E.w.Init(ve.qp);
              o.Body().set_language(a.TS.LANGUAGE), o.Body().set_appid(t);
              let r = o.Body().add_classes();
              r.set_classid(n),
                r.set_instanceid(i),
                ve.tB
                  .GetAssetClassInfo(e.GetServiceTransport(), o)
                  .then((e) => {
                    this.m_bMounted &&
                      (1 == e.GetEResult()
                        ? this.setState({
                            bLoading: !1,
                            bLoadFail: !1,
                            bLoadSuccess: !0,
                            description: e.Body().descriptions()[0],
                          })
                        : this.setState({
                            bLoading: !1,
                            bLoadFail: !0,
                            bLoadSuccess: !1,
                          }));
                  });
            }
            this.containerRef.current.ownerDocument.defaultView.setTimeout(
              () => {
                this.m_bMounted &&
                  this.setState((e) =>
                    e.bLoading ? { bStillLoading: !0 } : null,
                  );
              },
              500,
            );
          }
          OnImageLoaded() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "CBBCodeEconItem " + this.GetArgument("url"),
              );
          }
          render() {
            let e = this.GetArgument("image"),
              t = this.GetArgument("url"),
              n = parseInt(this.GetArgument("appid")),
              i = this.GetArgument("contextid"),
              o = this.GetArgument("assetid"),
              r = this.GetArgument("market_hash_name"),
              s = parseInt(this.GetArgument("owner")),
              l = p.xm.AppInfoStore.GetAppInfo(n);
            if (s && t) {
              let c = this.props.context.chat.GetMember(s),
                m = c ? c.display_name : this.GetArgument("persona"),
                d = Me.Qz(t),
                u = `${a.TS.COMMUNITY_BASE_URL}economy/image/${e}/512x512`,
                h = { color: "" },
                _ = `${a.TS.COMMUNITY_BASE_URL}market/listings/${n}/${r}`,
                g = `${a.TS.COMMUNITY_BASE_URL}tradeoffer/new/?partner=${s}&for_items[]=${n}_${i}_${o}`;
              return (
                this.state.bLoadSuccess &&
                  (this.state.description.name_color() &&
                    (h.color = "#" + this.state.description.name_color()),
                  this.state.description.icon_url_large()
                    ? (u = `${a.TS.COMMUNITY_BASE_URL}economy/image/${this.state.description.icon_url_large()}/512x512`)
                    : this.state.description.icon_url() &&
                      (u = `${a.TS.COMMUNITY_BASE_URL}economy/image/${this.state.description.icon_url()}/512x512`)),
                F.createElement(
                  x.xh,
                  { text: t },
                  F.createElement(
                    "div",
                    {
                      className: "ChatMessageOpenGraph",
                      ref: this.containerRef,
                    },
                    F.createElement(
                      "div",
                      { className: "OpenGraphContent ClientFetchesData" },
                      F.createElement(
                        "div",
                        { className: "OpenGraphImgBackground" },
                        F.createElement("img", {
                          className: "ChatMessageOpenGraph_Image",
                          src: u,
                          onLoad: this.OnImageLoaded,
                        }),
                      ),
                      F.createElement(
                        B.uU,
                        { className: "OpenGraphImgContainer", href: t },
                        F.createElement(St, {
                          context: this.props.context,
                          className: "ChatMessageOpenGraph_Image",
                          src: u,
                          onContextMenu: (e) => {
                            (0, B.xE)(e, t);
                          },
                        }),
                      ),
                      F.createElement(
                        "div",
                        { className: "ChatMessageOpenGraph_Body" },
                        this.state.bStillLoading &&
                          F.createElement(ee.t, {
                            size: "medium",
                            position: "center",
                          }),
                        this.state.bLoadSuccess &&
                          F.createElement(
                            x.xh,
                            {
                              text: [
                                (0, P.we)(
                                  "#bbcode_econ_ItemTitle",
                                  m,
                                  this.state.description.name(),
                                ),
                                t,
                              ],
                            },
                            F.createElement(
                              "div",
                              null,
                              F.createElement(
                                B.uU,
                                {
                                  className: "ChatMessageOpenGraph_Title",
                                  href: t,
                                  style: h,
                                },
                                (0, P.we)(
                                  "#bbcode_econ_ItemTitle",
                                  m,
                                  this.state.description.name(),
                                ),
                              ),
                              F.createElement(
                                "div",
                                {
                                  className: "ChatMessageOpenGraph_Description",
                                },
                                F.createElement(
                                  "div",
                                  { className: "EconItemOpenGraph_GameInfo" },
                                  F.createElement("img", {
                                    src: l.icon_url,
                                    onLoad: this.OnImageLoaded,
                                  }),
                                  F.createElement(
                                    "div",
                                    null,
                                    F.createElement("div", null, l.name),
                                    F.createElement(
                                      "div",
                                      null,
                                      this.state.description.type(),
                                    ),
                                  ),
                                ),
                              ),
                              F.createElement(
                                "div",
                                { style: { marginTop: "1em" } },
                                this.state.description.tradable() &&
                                  p.xm.CMInterface &&
                                  s !=
                                    p.xm.CMInterface.steamid.GetAccountID() &&
                                  F.createElement(
                                    B.uU,
                                    {
                                      className: "general_btn inline",
                                      href: g,
                                    },
                                    (0, P.we)("#bbcode_econ_TradeWithOwner", m),
                                  ),
                                this.state.description.marketable() &&
                                  F.createElement(
                                    B.uU,
                                    {
                                      className: "general_btn inline",
                                      href: _,
                                    },
                                    (0, P.we)("#bbcode_econ_ViewInMarket"),
                                  ),
                              ),
                            ),
                          ),
                        this.state.bLoadFail &&
                          F.createElement(
                            "div",
                            null,
                            F.createElement(
                              B.uU,
                              {
                                className: "ChatMessageOpenGraph_Title",
                                href: t,
                              },
                              (0, P.we)("#bbcode_econ_UnknownItem"),
                            ),
                            F.createElement(
                              "div",
                              { className: "ChatMessageOpenGraph_Description" },
                              (0, P.we)("#bbcode_econ_LoadFail"),
                            ),
                          ),
                      ),
                    ),
                    F.createElement(
                      "div",
                      { className: "OpenGraphFooter" },
                      F.createElement(
                        B.uU,
                        { className: "OpenGraphMessageURL", href: t },
                        F.createElement(
                          "span",
                          { className: "OpenGraphMessageURLPosition" },
                          F.createElement(
                            "span",
                            { className: "OpenGraphMessageURL_short" },
                            d,
                          ),
                          F.createElement(
                            "span",
                            { className: "OpenGraphMessageURL_full" },
                            t,
                          ),
                        ),
                      ),
                      F.createElement(
                        "div",
                        {
                          className: "OpenGraphURLButton CopyToClipboard",
                          onClick: this.CopyToClipboard,
                        },
                        F.createElement(N.$rC, null),
                      ),
                    ),
                  ),
                )
              );
            }
            return F.createElement(B.uU, { href: t }, t);
          }
        };
        (0, i.Cg)([c.oI], Ht.prototype, "CopyToClipboard", null),
          (0, i.Cg)([c.oI], Ht.prototype, "OnImageLoaded", null),
          (Ht = (0, i.Cg)([G.PA], Ht));
        class Wt extends pe.mX {
          render() {
            let e = this.props.children ? this.props.args[""] : "";
            return F.createElement(
              x.xh,
              { text: (0, P.we)("#bbcode_linkremoved") },
              F.createElement(
                "span",
                {
                  className: "filteredURL bb_removedlink",
                  title: (0, P.we)("#Community_RemoveLink_Tooltip"),
                },
                F.createElement(N.eTF, null),
                F.createElement(
                  "span",
                  { className: "threatURLDesc" },
                  (0, P.we)("#bbcode_linkremoved_desc"),
                ),
                F.createElement("span", { className: "threatURL" }, e),
              ),
            );
          }
        }
        let zt = class extends pe.mX {
          render() {
            let e = this.GetArgument();
            if (e) {
              if (("here" == e && (e = "online"), "all" == e || "online" == e))
                return F.createElement(
                  "span",
                  { className: "mention me" },
                  F.createElement(
                    "span",
                    { className: "MentionAtSymbol" },
                    "@",
                  ),
                  e,
                );
              {
                let t = parseInt(e),
                  n = t && this.props.context.chat.GetMember(t);
                if ((n || (n = t && p.xm.FriendStore.GetPlayer(t)), n)) {
                  let e = n.accountid == this.props.context.chat.self.accountid;
                  return F.createElement(
                    z.Rg,
                    { friend: n, context: { chat: this.props.context.chat } },
                    F.createElement(
                      "span",
                      { className: "mention" + (e ? " me" : "") },
                      F.createElement(
                        "span",
                        { className: "MentionAtSymbol" },
                        "@",
                      ),
                      n.display_name,
                    ),
                  );
                }
              }
            }
            return F.createElement("span", null, "@" + e);
          }
        };
        zt = (0, i.Cg)([G.PA], zt);
        class jt extends pe.mX {
          render() {
            let e = "";
            return (
              "string" == typeof this.props.children
                ? (e = this.props.children)
                : F.Children.forEach(this.props.children, (t) => {
                    if (
                      ("string" == typeof t && (e += t),
                      "object" == typeof t && t.props)
                    ) {
                      let n = t.props["bbcode-text"];
                      n && (e += n);
                    }
                  }),
              e
                ? F.createElement(we.nl, {
                    emoticon: e,
                    emoticonHoverStore: be.s,
                    large: this.props.context.bUseLargeEmoticons,
                  })
                : null
            );
          }
        }
        var qt;
        !(function (e) {
          (e[(e.Large = 3)] = "Large"),
            (e[(e.Medium = 2)] = "Medium"),
            (e[(e.Small = 1)] = "Small"),
            (e[(e.Tiny = 0)] = "Tiny");
        })(qt || (qt = {}));
        let Kt = class extends pe.mX {
          state = {
            SteamStoreItem: null,
            bStoreRequestFailed: !1,
            bPlayVideo: !1,
            nThumbnailHovered: -1,
            nContentSize: qt.Large,
          };
          m_contentRef = F.createRef();
          m_storePreferences = p.xm.SettingsStore.StorePreferences;
          m_resizeObserver = null;
          async componentDidMount() {
            const e = this.GetArgument("app"),
              t = await (async function (e) {
                const t = a.TS.COUNTRY || "US",
                  n = await L().get(
                    `${a.TS.STORE_BASE_URL}api/appdetails?appids=${e}&cc=${t}&language=${a.TS.LANGUAGE}&filters=basic,price_overview,developers,screenshots,movies,release_date,content_descriptors&client=${a.TS.IN_CLIENT}&origin=${(0, a.xv)()}`,
                  );
                let i = null;
                if ((n && n.data && (i = n.data[e]), !i || !i.success))
                  return null;
                const {
                  name: o,
                  is_free: r,
                  short_description: s,
                  header_image: l,
                  developers: c,
                  screenshots: m,
                  movies: d,
                  release_date: u,
                  price_overview: h,
                  content_descriptors: p,
                  steam_appid: _,
                } = i.data;
                return {
                  name: o,
                  is_free: r,
                  description: (0, Te.EK)(s),
                  header_image: l,
                  developer: c && c[0],
                  screenshot: m && m[0] && m[0].path_thumbnail,
                  screenshots: m && m,
                  movie:
                    d &&
                    d[0] &&
                    d[0].webm &&
                    d[0].webm[480] &&
                    d[0].webm[480].replace("http://", "https://"),
                  thumbnail: d && d[0] && d[0].thumbnail,
                  release_date: u && u.date,
                  url: (0, fe.Dn)(_, "chatlink"),
                  price: h && h.final_formatted,
                  initial_price: h && h.initial_formatted,
                  discount: h && h.discount_percent && h.discount_percent,
                  content_descriptor_ids: p && p.ids,
                };
              })(e);
            t
              ? this.setState(
                  { SteamStoreItem: t, bStoreRequestFailed: !1 },
                  this.OnFrameLoaded,
                )
              : this.setState({ bStoreRequestFailed: !0 });
            let n = this.m_contentRef.current;
            n && (this.m_resizeObserver = (0, c.Fd)(n, this.OnResize));
          }
          componentWillUnmount() {
            this.m_resizeObserver && this.m_resizeObserver.disconnect();
          }
          OnResize() {
            let e = this.m_contentRef.current?.getClientRects()[0]?.width;
            e &&
              (e < 288
                ? this.setState({ nContentSize: qt.Tiny })
                : e < 348
                  ? this.setState({ nContentSize: qt.Small })
                  : e < 484
                    ? this.setState({ nContentSize: qt.Medium })
                    : this.setState({ nContentSize: qt.Large }));
          }
          OnFrameLoaded() {
            this.props.context.onLoad &&
              this.props.context.onLoad(
                "CBBCodeSteamStore " + this.GetArgument("app"),
              );
          }
          OpenStoreLink(e) {
            let t = Q.uX(e);
            (0, B.EP)(t, this.state.SteamStoreItem.url), e.stopPropagation();
          }
          PlayVideoClicked() {
            this.setState({ bPlayVideo: !this.state.bPlayVideo });
          }
          OnThumbnailOver(e) {
            this.setState({ nThumbnailHovered: e });
          }
          OnThumbnailLeave() {
            this.setState({ nThumbnailHovered: -1 });
          }
          CopyToClipboard() {
            let e = this.props.children;
            e && 0 != e.length && Q.YQ(e);
          }
          render() {
            if (p.xm.SettingsStore.FriendsSettings.bDisableEmbedInlining) {
              let e = ot(this.props.children);
              return F.createElement(
                Ze,
                { href: e },
                F.createElement(N.Rkk, null),
                e,
              );
            }
            const e = () => {};
            if (this.state.bStoreRequestFailed) {
              let t = p.xm.FriendStore.GetPlayer(
                  this.props.context.unAccountIDSender,
                ).display_name,
                n = ot(this.props.children),
                i = F.createElement("span", { className: Ge().senderName }, t),
                o = F.createElement("span", { className: Ge().URLSent }, n),
                r = F.createElement(
                  B.uU,
                  {
                    className: Ge().SteamURL,
                    href: "https://store.steampowered.com/",
                  },
                  (0, P.we)("#bbcode_steam_store_embed_Failed_Steam_Store"),
                );
              return F.createElement(
                O.Z,
                {
                  className: Ge().ChatMessageSteamStore_Failed,
                  onActivate: e,
                  onOKActionDescription: (0, P.we)(
                    "#bbcode_steam_store_embed_ViewStorePage_Filtered",
                  ),
                },
                F.createElement(
                  "span",
                  null,
                  (0, P.PP)("#bbcode_steam_store_embed_Failed", i, r, o),
                ),
              );
            }
            let t = this.state.SteamStoreItem;
            if (!t)
              return F.createElement(
                "div",
                {
                  className: Ge().ChatMessageSteamStore,
                  style: { width: 640, height: 208 },
                },
                F.createElement(
                  "div",
                  {
                    className: Ge().ChatMessageSteamStore_Header,
                    style: { height: 70 },
                  },
                  F.createElement("div", {
                    className: Ge().ChatMessageSteamStore_HeaderImage,
                  }),
                ),
                F.createElement(ee.t, null),
              );
            const {
              name: n,
              price: i,
              description: o,
              header_image: r,
              developer: a,
              movie: s,
              thumbnail: l,
              release_date: c,
              screenshots: m,
              is_free: d,
              initial_price: u,
              discount: h,
              content_descriptor_ids: _,
            } = t;
            let g = !1;
            const C =
              this.m_storePreferences &&
              this.m_storePreferences.content_descriptor_preferences() &&
              this.m_storePreferences
                .content_descriptor_preferences()
                .content_descriptors_to_exclude() &&
              this.m_storePreferences
                .content_descriptor_preferences()
                .content_descriptors_to_exclude()
                .map((e) => e.content_descriptorid());
            _ && C && _.some((e) => -1 !== C.indexOf(e)) && (g = !0);
            let f = [],
              S = !0;
            if (g) S = !1;
            else
              for (let e = 0; e < m.length; e++) {
                let t = e;
                if ((s || (t = e + 1), (s && t > 2) || (!s && t > 3))) break;
                let n = "";
                m && m[t] && "undefined" !== m[t].path_thumbnail
                  ? (n = `${m[t].path_thumbnail}`)
                  : (S = !1),
                  f.push(
                    F.createElement(
                      "div",
                      {
                        key: "screenshot" + t,
                        className: Ge().ChatMessageSteamStore_Screenshot,
                      },
                      F.createElement("img", {
                        className:
                          Ge().ChatMessageSteamStore_ScreenshotThumbnail,
                        src: n,
                        onMouseEnter: () => this.OnThumbnailOver(t),
                      }),
                    ),
                  );
              }
            let v = Ge().Large,
              b = !("0" == h || null == h),
              I = this.state.nThumbnailHovered,
              w = this.state.bPlayVideo,
              y = F.createElement(
                "div",
                { className: Ge().ChatMessageSteamStore_FilteredDescription },
                (0, P.we)("#bbcode_steam_store_embed_Filtered"),
                " ",
              );
            switch (this.state.nContentSize) {
              case qt.Tiny:
                v = Ge().TinyContent;
                break;
              case qt.Small:
                v = Ge().SmallContent;
                break;
              case qt.Medium:
                v = Ge().MediumContent;
                break;
              case qt.Large:
                v = Ge().LargeContent;
            }
            return F.createElement(
              O.Z,
              {
                ref: this.m_contentRef,
                className: (0, se.A)(
                  Ge().ChatMessageSteamStore,
                  g ? Ge().ChatMessagesSteamStore_FilteredContent : null,
                  v,
                ),
                onOKButton: this.OpenStoreLink,
                onOKActionDescription: (0, P.we)(
                  g
                    ? "#bbcode_steam_store_embed_ViewStorePage_Filtered"
                    : "#bbcode_steam_store_embed_ViewStorePage",
                ),
              },
              F.createElement(
                "div",
                { className: Ge().ChatMessageSteamStore_Header },
                r &&
                  F.createElement(
                    F.Fragment,
                    null,
                    F.createElement("img", {
                      className: Ge().ChatMessageSteamStore_HeaderImage,
                      src: r,
                      onClick: g ? null : this.OpenStoreLink,
                    }),
                    g &&
                      F.createElement(
                        "div",
                        {
                          className:
                            Ge().ChatMessageSteamStore_HeaderImageFiltered,
                        },
                        (0, P.we)("#bbcode_steam_store_embed_Image_Filtered"),
                      ),
                    F.createElement("img", {
                      className: (0, se.A)(
                        Ge().ChatMessageSteamStore_HeaderImage,
                        Ge().Blurred,
                      ),
                      src: r,
                    }),
                  ),
                F.createElement(
                  "div",
                  { className: Ge().ChatMessageSteamStore_GameDetails },
                  F.createElement(
                    "div",
                    {
                      className: Ge().ChatMessageSteamStore_GameNameAndIcon,
                      onClick: g ? null : this.OpenStoreLink,
                    },
                    F.createElement(
                      "div",
                      { className: Ge().ChatMessageSteamStore_Name },
                      n,
                    ),
                  ),
                  F.createElement(
                    "div",
                    null,
                    (0, P.we)("#bbcode_steam_store_embed_From"),
                    F.createElement(
                      "span",
                      { style: { color: "#fffc" } },
                      `${a}`,
                    ),
                  ),
                  F.createElement(
                    "div",
                    { style: { fontSize: 12 } },
                    (0, P.we)("#bbcode_steam_store_embed_ReleaseDate"),
                    F.createElement(
                      "span",
                      { style: { color: "#fffc" } },
                      `${c}`,
                    ),
                  ),
                ),
              ),
              F.createElement(
                "div",
                { className: Ge().ChatMessageSteamStore_Body },
                F.createElement(
                  "div",
                  { className: Ge().ChatMessageSteamStore_DetailsContainer },
                  F.createElement(
                    "div",
                    { className: Ge().ChatMessageTweet_NameSection },
                    F.createElement(
                      "div",
                      { className: Ge().ChatMessageSteamStore_Description },
                      g ? y : o,
                      " ",
                    ),
                    F.createElement(
                      "div",
                      { className: Ge().ChatMessageSteamStore_Footer },
                      F.createElement(
                        "div",
                        {
                          className:
                            Ge().ChatMessageSteamStore_PricingContainer,
                        },
                        F.createElement(
                          "div",
                          { className: Ge().ChatMessageSteamStore_Pricing },
                          b &&
                            F.createElement(
                              "div",
                              {
                                className:
                                  Ge().ChatMessageSteamStore_Pricing_Discount,
                              },
                              "-" + h + "%",
                            ),
                          F.createElement(
                            "div",
                            {
                              className:
                                Ge()
                                  .ChatMessageSteamStore_Pricing_FinalContainer,
                            },
                            b &&
                              u &&
                              F.createElement(
                                "div",
                                {
                                  className:
                                    Ge().ChatMessageSteamStore_Pricing_Initial,
                                },
                                `${u}`,
                              ),
                            i &&
                              F.createElement(
                                "div",
                                {
                                  className: (0, se.A)(
                                    Ge().ChatMessageSteamStore_Pricing_Final,
                                    b ? Ge().hasDiscount : null,
                                  ),
                                },
                                `${i}`,
                              ),
                          ),
                          d &&
                            !i &&
                            F.createElement(
                              "span",
                              { className: Ge().ChatMessageSteamStore_Free },
                              (0, P.we)("#bbcode_steam_store_embed_FreeToPlay"),
                            ),
                        ),
                        F.createElement(
                          "div",
                          {
                            className: Ge().ChatMessageSteamStore_ViewStore,
                            onClick: this.OpenStoreLink,
                          },
                          (0, P.we)(
                            g
                              ? "#bbcode_steam_store_embed_ViewStorePage_Filtered"
                              : "#bbcode_steam_store_embed_ViewStorePage",
                          ),
                        ),
                      ),
                      F.createElement(
                        "div",
                        {
                          className: Ge().ChatMessageSteamStore_CopyURL,
                          onClick: this.CopyToClipboard,
                          title: (0, P.we)("#Chat_Copy_Link_Clipboard"),
                        },
                        F.createElement(N.$rC, null),
                      ),
                    ),
                  ),
                ),
                !g &&
                  F.createElement(
                    "div",
                    { className: Ge().ChatMessageSteamStore_MediaContainer },
                    F.createElement(
                      "div",
                      { className: Ge().ChatMessageSteamStore_MainMedia },
                      s &&
                        F.createElement(
                          "div",
                          {
                            className: (0, se.A)(
                              Ge().ChatMessageSteamStore_VideoThumbnail,
                              w ? Ge().videoPlaying : null,
                            ),
                            onClick: this.PlayVideoClicked,
                          },
                          I < 0 || null == I
                            ? F.createElement(
                                F.Fragment,
                                null,
                                F.createElement("img", { src: l }),
                                F.createElement(
                                  "div",
                                  {
                                    className:
                                      Ge()
                                        .ChatMessageSteamStore_VideoPlayButton,
                                  },
                                  F.createElement(N.jGG, null),
                                ),
                              )
                            : F.createElement("img", {
                                src: `${m[I].path_thumbnail}`,
                                style: { width: "100%" },
                              }),
                        ),
                      !s &&
                        m &&
                        F.createElement("img", {
                          src: `${m[Math.max(I, 0)].path_thumbnail}`,
                          style: { width: "100%" },
                        }),
                    ),
                    S &&
                      m &&
                      F.createElement(
                        "div",
                        {
                          className:
                            Ge().ChatMessageSteamStore_ThumbnailsContainer,
                          onMouseLeave: this.OnThumbnailLeave,
                        },
                        f,
                      ),
                  ),
                F.createElement(
                  "div",
                  {
                    className: (0, se.A)(
                      Ge().ChatMessageSteamStore_VideoLargeContainer,
                      w ? Ge().videoPlaying : null,
                    ),
                    onClick: this.PlayVideoClicked,
                  },
                  w &&
                    F.createElement("video", {
                      className: Ge().ChatMessageSteamStore_VideoLarge,
                      src: s,
                      controls: !0,
                      autoPlay: !0,
                    }),
                  F.createElement(
                    "div",
                    { onClick: this.PlayVideoClicked },
                    F.createElement(N.sED, null),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI, (0, De.s)(100)], Kt.prototype, "OnResize", null),
          (0, i.Cg)([c.oI], Kt.prototype, "OnFrameLoaded", null),
          (0, i.Cg)([c.oI], Kt.prototype, "OpenStoreLink", null),
          (0, i.Cg)([c.oI], Kt.prototype, "PlayVideoClicked", null),
          (0, i.Cg)([c.oI], Kt.prototype, "OnThumbnailOver", null),
          (0, i.Cg)([c.oI], Kt.prototype, "OnThumbnailLeave", null),
          (0, i.Cg)([c.oI], Kt.prototype, "CopyToClipboard", null),
          (Kt = (0, i.Cg)([G.PA], Kt));
        let Zt = class extends pe.mX {
          static {
            $e = this;
          }
          static k_iCooldownMs = 5e3;
          state = { bDisabled: !1 };
          OnReplayAnimation() {
            const e = this.props.args.type;
            this.props.context.chat.RoomEffectManager().ActivateRoomEffect(e);
            const t = window.setTimeout(() => {
              this.setState({ bDisabled: !1, iTimerID: void 0 });
            }, $e.k_iCooldownMs);
            this.setState({ bDisabled: !0, iTimerID: t });
          }
          componentWillUnmount() {
            this.state.iTimerID && window.clearTimeout(this.state.iTimerID);
          }
          render() {
            const e = p.xm.FriendStore.GetPlayer(
                this.props.context.unAccountIDSender,
              ),
              t = this.props.args.type,
              n = ke.B[t];
            if (!n)
              return (
                console.log("Attempt to render unknown room effect " + t), null
              );
            const i = n.locToken;
            return F.createElement(
              "div",
              { className: Ge().RoomEffectContainer },
              F.createElement(
                "span",
                { className: Ge().RoomEffectIcon },
                n.renderEffectIcon(),
              ),
              (0, P.PP)(i, e.display_name),
              F.createElement(
                "div",
                { style: { marginLeft: "auto", marginRight: "16px" } },
                F.createElement(
                  Ie.jn,
                  {
                    disabled: this.state.bDisabled,
                    style: { padding: "0px 8px" },
                    onClick: this.state.bDisabled
                      ? void 0
                      : this.OnReplayAnimation,
                  },
                  (0, P.we)("#ChatRoom_ReplayRoomEffect"),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], Zt.prototype, "OnReplayAnimation", null),
          (Zt = $e = (0, i.Cg)([G.PA], Zt));
        class Qt extends pe.mX {
          m_imageRef = F.createRef();
          state = { bIsHovered: !1 };
          OnMouseOver() {
            this.setState({ bIsHovered: !0 });
          }
          OnMouseOut() {
            this.setState({ bIsHovered: !1 });
          }
          render() {
            const e = this.GetArgument("type"),
              t = (0, Re.G)(a.TS.COMMUNITY_CDN_URL, e);
            return F.createElement(
              "div",
              {
                style: {
                  cursor: "pointer",
                  position: "relative",
                  width: "150px",
                  height: "150px",
                },
                onMouseOver: this.OnMouseOver,
                onMouseOut: this.OnMouseOut,
                onFocus: this.OnMouseOver,
                onBlur: this.OnMouseOut,
              },
              F.createElement("img", {
                ref: this.m_imageRef,
                style: { display: "block", zIndex: 1 },
                src: t,
              }),
              this.state.bIsHovered &&
                F.createElement($t, {
                  target: this.m_imageRef.current,
                  sticker: e,
                }),
            );
          }
        }
        function $t(e) {
          const { target: t, sticker: n } = e,
            i = (function (e) {
              const [t, n] = F.useState(null);
              return (
                F.useEffect(() => {
                  let t = !0;
                  return (
                    L()
                      .get(
                        `${a.TS.COMMUNITY_CDN_URL}economy/stickerjson/${encodeURIComponent(e)}?l=${encodeURIComponent(a.TS.LANGUAGE)}&origin=${(0, a.xv)()}`,
                      )
                      .then((e) => t && n(e.data))
                      .catch((e) =>
                        console.error(`Failed to load stickerJSON: ${e}`),
                      ),
                    () => {
                      t = !1;
                    }
                  );
                }, [e]),
                t
              );
            })(n);
          if (!i) return null;
          const { appid: o } = i;
          return F.createElement(we.kW, {
            target: t,
            sticker: { appid: o, name: n },
          });
        }
        (0, i.Cg)([c.oI], Qt.prototype, "OnMouseOver", null),
          (0, i.Cg)([c.oI], Qt.prototype, "OnMouseOut", null);
        var Xt = n(76343),
          Yt = n(59805),
          Jt = n(59889),
          en = n(8805);
        const tn =
            n.p +
            "javascript/webui/noisegate-audio-worklet.js?contenthash=ef007c9e0249549f997c",
          nn = (n.p, new en.wd("AudioPlaybackManager"));
        class on {
          m_Context;
          m_mapPlaybackObjs = new Map();
          m_bVoiceActive = !1;
          m_hCloseContextTimeout = void 0;
          m_voiceStore = void 0;
          m_nLastObservedSampleRate = 0;
          m_bSupportsAudioWorkletProcessors = !1;
          m_MediaStreamDestination = void 0;
          m_MediaStreamAudioElem = void 0;
          static sm_instance = null;
          constructor() {
            (0, D.Gn)(this), (on.sm_instance = this);
          }
          static Get() {
            return on.sm_instance;
          }
          get context() {
            return this.m_Context;
          }
          get supports_audio_worklets() {
            return this.m_bSupportsAudioWorkletProcessors;
          }
          SetVoiceStore(e) {
            this.m_voiceStore = e;
          }
          GetActiveDestination() {
            if (
              (this.CreateContextIfNeeded(),
              this.m_voiceStore &&
                this.m_voiceStore.IsAnyVoiceActive() &&
                "default" != this.m_voiceStore.GetSelectedOutputDevice())
            ) {
              if (null == this.m_MediaStreamDestination) {
                let e = this.m_Context;
                (this.m_MediaStreamDestination =
                  e.createMediaStreamDestination()),
                  (this.m_MediaStreamAudioElem =
                    document.createElement("audio")),
                  (this.m_MediaStreamAudioElem.srcObject =
                    this.m_MediaStreamDestination.stream),
                  this.m_MediaStreamAudioElem.play();
                try {
                  this.m_MediaStreamAudioElem.setSinkId(
                    this.m_voiceStore.GetSelectedOutputDevice(),
                  );
                } catch (e) {
                  nn.Error(
                    "Failed setting audio output device to " +
                      this.m_voiceStore.GetSelectedOutputDevice() +
                      ": " +
                      e,
                  );
                }
              }
              return this.m_MediaStreamDestination;
            }
            return this.m_Context.destination;
          }
          PlayAudioURL(e, t = 1) {
            return this.PlayAudioURLWithRepeats(e);
          }
          PlayAudioURLWithRepeats(e, t = 0) {
            nn.Debug("web audio playback requested: " + e),
              this.CreateContextIfNeeded();
            let n = new rn(this, e, t);
            return this.m_mapPlaybackObjs.set(n, !0), n;
          }
          PlaybackFinished(e) {
            this.m_mapPlaybackObjs.delete(e), this.CleanupContextIfUneeded(!1);
          }
          SetVoiceActive(e) {
            (this.m_bVoiceActive = !0), this.CreateContextIfNeeded(e);
          }
          SetVoiceNotActive() {
            (this.m_bVoiceActive = !1), this.CleanupContextIfUneeded(!0);
          }
          GetLastObservedSampleRate() {
            return this.m_nLastObservedSampleRate;
          }
          CreateContextIfNeeded(e = void 0) {
            if (null == this.m_Context) {
              nn.Debug("new context");
              let t = window,
                n = t.AudioContext || t.webkitAudioContext || !1;
              (this.m_Context = new n()),
                (this.m_Context.onstatechange = this.OnAudioContextStateChange),
                nn.Debug("sample rate " + this.m_Context.sampleRate),
                (this.m_nLastObservedSampleRate = this.m_Context.sampleRate);
              let i = this.m_Context;
              null != i.audioWorklet
                ? ((this.m_bSupportsAudioWorkletProcessors = !0),
                  i.audioWorklet
                    .addModule(tn)
                    .then(() => {
                      nn.Debug(
                        "noisegate-audio-worklet.js worklet processor loaded",
                      ),
                        e && e();
                    })
                    .catch((t) => {
                      nn.Error(
                        "Failed to load noisegate-audio-worklet.js worklet processor",
                      ),
                        e && e();
                    }))
                : e && e();
            } else e && e();
          }
          DelayedCleanupContextIfInactive() {
            (this.m_hCloseContextTimeout = void 0),
              0 == this.m_mapPlaybackObjs.size &&
                0 == this.m_bVoiceActive &&
                (nn.Debug("close context"),
                null != this.m_MediaStreamAudioElem &&
                  (this.m_MediaStreamAudioElem.pause(),
                  (this.m_MediaStreamAudioElem.src = void 0),
                  (this.m_MediaStreamAudioElem.srcObject = void 0)),
                (this.m_MediaStreamAudioElem = void 0),
                (this.m_MediaStreamDestination = void 0),
                this.m_Context.close(),
                (this.m_Context = void 0));
          }
          CleanupContextIfUneeded(e) {
            if (0 == this.m_mapPlaybackObjs.size && 0 == this.m_bVoiceActive) {
              if (
                (null != this.m_hCloseContextTimeout &&
                  (clearTimeout(this.m_hCloseContextTimeout),
                  (this.m_hCloseContextTimeout = void 0)),
                e)
              )
                return void this.DelayedCleanupContextIfInactive();
              this.m_hCloseContextTimeout = SetBackgroundTimeout(
                this.DelayedCleanupContextIfInactive,
                1e4,
              );
            }
          }
          OnAudioContextStateChange() {
            null != this.m_Context &&
              nn.Debug(
                "web audio context state changed: " + this.m_Context.state,
              );
          }
        }
        (0, i.Cg)([D.sH], on.prototype, "m_nLastObservedSampleRate", void 0),
          (0, i.Cg)(
            [D.sH],
            on.prototype,
            "m_bSupportsAudioWorkletProcessors",
            void 0,
          ),
          (0, i.Cg)(
            [c.oI],
            on.prototype,
            "DelayedCleanupContextIfInactive",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            on.prototype,
            "OnAudioContextStateChange",
            null,
          );
        class rn {
          m_Manager;
          m_URL;
          m_Source = void 0;
          m_RepeatCount = 0;
          m_TimesPlayed = 0;
          m_Cancelled = !1;
          m_cbPlaybackFinished = null;
          constructor(e, t, n) {
            (0, D.Gn)(this),
              (this.m_Manager = e),
              (this.m_URL = t),
              (this.m_RepeatCount = n),
              L()
                .get(t, { responseType: "arraybuffer" })
                .then((t) => {
                  e.context
                    .decodeAudioData(t.data)
                    .then((t) => {
                      if (this.m_Cancelled) this.NotifyPlaybackFinished();
                      else {
                        let n = e.context.createBufferSource();
                        (n.buffer = t),
                          n.connect(e.GetActiveDestination()),
                          n.start(0),
                          (n.onended = this.OnPlaybackEnded),
                          (this.m_Source = n);
                      }
                    })
                    .catch((e) => {
                      this.OnFailure();
                    });
                })
                .catch((e) => {
                  this.OnFailure();
                });
          }
          StopPlayback() {
            (this.m_Cancelled = !0),
              this.m_Source &&
                (this.m_Source.stop(0),
                this.m_Source.disconnect(),
                (this.m_Source = void 0),
                this.NotifyPlaybackFinished());
          }
          get url() {
            return this.m_URL;
          }
          OnFailure() {
            SetBackgroundTimeout(
              () => this.m_Manager.PlaybackFinished(this),
              1,
            );
          }
          OnPlaybackEnded() {
            if (
              ((this.m_TimesPlayed += 1),
              !this.m_Cancelled && this.m_TimesPlayed <= this.m_RepeatCount)
            ) {
              let e = this.m_Manager.context.createBufferSource();
              return (
                (e.buffer = this.m_Source.buffer),
                e.connect(this.m_Manager.GetActiveDestination()),
                e.start(0),
                (e.onended = this.OnPlaybackEnded),
                this.m_Source.disconnect(),
                (this.m_Source = void 0),
                void (this.m_Source = e)
              );
            }
            this.m_Source &&
              (this.m_Source.disconnect(), (this.m_Source = void 0)),
              this.NotifyPlaybackFinished();
          }
          NotifyPlaybackFinished() {
            this.m_cbPlaybackFinished && this.m_cbPlaybackFinished(),
              this.m_Manager.PlaybackFinished(this);
          }
          RegisterOnPlaybackFinished(e) {
            this.m_cbPlaybackFinished = e;
          }
        }
        (0, i.Cg)([D.XI.bound], rn.prototype, "OnFailure", null),
          (0, i.Cg)([D.XI.bound], rn.prototype, "OnPlaybackEnded", null);
        var an = n(78278);
        class sn extends an.P {
          async GetString(e) {
            try {
              return await SteamClient.Storage.GetString(e).then((t) => {
                if (t) return t;
                let n = localStorage.getItem(e);
                return n && SteamClient.Storage.SetString(e, n), n;
              });
            } catch (e) {
              return null;
            }
          }
          StoreString(e, t) {
            return SteamClient.Storage.SetString(e, t), Promise.resolve();
          }
          RemoveObject(e) {
            return SteamClient.Storage.DeleteKey(e), Promise.resolve();
          }
        }
        var ln = n(55244),
          cn = n(42674),
          mn = n(90095),
          dn = n(7470),
          un = n(20045),
          hn = n(22433),
          pn = n(78325),
          _n = n(32621),
          gn = n.n(_n),
          Cn = n(58881);
        class fn {
          m_VoiceChatStore;
          m_CMInterface;
          m_RootElement;
          constructor(e) {
            this.m_VoiceChatStore = e;
          }
          Init(e) {
            (this.m_CMInterface = e),
              a.TS.IN_CLIENT &&
                ((this.m_RootElement = document.createElement("div")),
                document.body.appendChild(this.m_RootElement),
                dn
                  .H(this.m_RootElement)
                  .render(
                    F.createElement(Sn, {
                      voiceChat: this.m_VoiceChatStore,
                      cm: this.m_CMInterface,
                    }),
                  ));
          }
        }
        let Sn = (0, G.PA)((e) => {
          const t = (0, mn.q3)(() => e.cm.steamid.ConvertTo64BitString()),
            n = F.useMemo(() => ({ useActiveAccount: () => t }), [t]),
            i = e.voiceChat.video_streams;
          return F.createElement(
            Cn.Rh,
            { value: n },
            i
              .filter((e) => e.stream)
              .map((e) => F.createElement(vn, { key: e.unique_id, video: e })),
            i
              .filter(
                (t) =>
                  t.stream &&
                  t.showOnDesktop &&
                  e.voiceChat.GetUserSendsVideo(t.accountid),
              )
              .map((e) => F.createElement(bn, { key: e.unique_id, video: e })),
          );
        });
        function vn(e) {
          const t = (0, hn.OJ)("RemoteVideo-" + e.video.unique_id, {
              browserType: un.W.EBrowserType_OpenVROverlay,
              eCreationFlags: v.Wf.DisableDPIScale,
              strVROverlayKey:
                "valve.steam.friendsui.remotevideo_" + e.video.unique_id,
              title: "FriendsUI - Remote Video - " + e.video.unique_id,
              dimensions: { width: 1920, height: 1080, left: 0, top: 0 },
              body_class: gn().BodyNoOverflow,
              replace_existing_popup: !0,
            }),
            { element: n } = t;
          return n
            ? (0, pn.createPortal)(F.createElement(In, { ...e }), n)
            : null;
        }
        function bn(e) {
          const t = (0, hn.h3)("RemoteVideoDesktop-" + e.video.accountid),
            n = (0, hn.OJ)(
              "RemoteVideoDesktop-" + e.video.unique_id,
              {
                browserType: un.W.EBrowserType_DirectHWND,
                eCreationFlags: v.Wf.None,
                title: "Remote Video - " + e.video.accountid,
                dimensions: { width: 1920, height: 1080, left: 0, top: 32 },
                body_class: gn().BodyNoOverflow,
              },
              {
                ...t,
                onClose: () => {
                  (e.video.showOnDesktop = !1),
                    p.xm.ChatStore.VoiceChat.SetReceivingVideo(
                      e.video.accountid,
                      !1,
                    );
                },
              },
            ),
            { element: i, popupObj: o } = n;
          if (!i) return null;
          if (o) {
            const t = p.xm.FriendStore.GetPlayer(e.video.accountid);
            t.LoadIfNecessary(),
              (0, D.z7)(() => t.is_ready, { timeout: 5e3 }).then(
                () => (o.title = t.display_name),
              );
          }
          return (0, pn.createPortal)(F.createElement(In, { ...e }), i);
        }
        function In(e) {
          const { video: t } = e,
            n = F.useRef();
          return (
            F.useLayoutEffect(() => {
              n.current && (n.current.srcObject = t.stream);
            }),
            F.createElement(
              "div",
              null,
              F.createElement("video", {
                className: gn().RemoteVideo,
                ref: n,
                autoPlay: !0,
                playsInline: !0,
                muted: !0,
              }),
            )
          );
        }
        var wn = n(89523);
        class yn extends p.iw {
          m_window;
          constructor(e) {
            super(), (this.m_window = e);
          }
          BringToFront() {
            null != this.m_window.SteamClient &&
            null != this.m_window.SteamClient.Window &&
            null != this.m_window.SteamClient.Window.BringToFront
              ? this.m_window.SteamClient.Window.BringToFront()
              : this.m_window.focus();
          }
          FlashWindow(e) {
            null != this.m_window.SteamClient &&
              null != this.m_window.SteamClient.Window &&
              (e && null != this.m_window.SteamClient.Window.FlashWindow
                ? this.m_window.SteamClient.Window.FlashWindow()
                : null != this.m_window.SteamClient.Window.StopFlashWindow &&
                  this.m_window.SteamClient.Window.StopFlashWindow());
          }
          Close() {
            this.m_window && this.m_window.close();
          }
          get title() {
            return this.m_window.document.title;
          }
          set title(e) {
            this.m_window.document.title = e;
          }
          BIsClosed() {
            return this.m_window.closed;
          }
          BIsVisible() {
            return "visible" == this.m_window.document.visibilityState;
          }
          BIsFocused() {
            return this.m_window.document.hasFocus();
          }
          IsMinimized() {
            return (0, cn.Fj)(this.m_window, "Window.IsWindowMinimized")
              ? this.m_window.SteamClient.Window.IsWindowMinimized()
              : Promise.resolve(!1);
          }
          OnFocus(e) {
            let t = () => {
              e();
            };
            return (
              this.m_window.addEventListener("focus", t),
              {
                unregister: () => {
                  this.m_window.removeEventListener("focus", t);
                },
              }
            );
          }
          GetWindow() {
            return this.m_window;
          }
        }
        class En extends p.RV {
          m_popup;
          m_container;
          constructor(e) {
            super(), (this.m_popup = e);
          }
          get container() {
            return (
              !this.m_container &&
                this.m_popup.window &&
                (this.m_container = new yn(this.m_popup.window)),
              this.m_container
            );
          }
          Show(e) {
            p.xm.ParentalStore.BIsFriendsBlocked() ||
            p.xm.SettingsStore.IsSteamInTournamentMode()
              ? console.log(
                  "Blocked popup due to parental controls or tournament mode",
                )
              : this.m_popup.Show(e);
          }
          Close() {
            this.m_popup.Close();
          }
          GetWindowRestoreDetails() {
            return this.m_popup.GetWindowRestoreDetails();
          }
          IsMinimized() {
            return this.m_popup.IsMinimized();
          }
          GetBrowserContext() {
            return this.m_popup.browser_info;
          }
          GetWindow() {
            return this.m_popup.window;
          }
        }
        const Dn = {
            nChatRoomListHeightPx: 224,
            bChatRoomListCollapsed: !1,
            bDontShowVoiceAlert: !1,
            nFriendsListSingleWindowWidthPx: 300,
            bFavoritesHintDismissed: !1,
            bRemotePlayLinkHintDismissed: !1,
            nChangeLogDismissed: 0,
          },
          An = "UIDisplayPrefs";
        class Tn {
          m_FriendsUIApp;
          m_bEmbeddedApp;
          m_WebLogonManager;
          m_FriendHoverStore = new T.DH();
          m_DragDropManager = new w();
          m_OverlayStore = new M();
          m_VRPopupManager;
          m_UsabilityMetricsStore;
          m_mapFriendsListPopups = new D.Es();
          m_UIDisplayPrefs = Dn;
          m_iTimeoutSaveUIDisplayPrefs;
          m_bUpdatedBuildAvailable = !1;
          m_nSecondsOutOfDate = 0;
          m_strLoaderWindowRestoreDetails = void 0;
          m_bShowFriendsListOnLoadFromLoader = void 0;
          m_eUIMode = -1;
          constructor(e, t) {
            (0, D.Gn)(this),
              (this.m_FriendsUIApp = e),
              (this.m_bEmbeddedApp = t),
              this.IsEmbeddedApp() ||
                (this.RegisterListeners(),
                (this.m_VRPopupManager = new fn(
                  this.m_FriendsUIApp.VoiceStore,
                )),
                Gn(window, C.m),
                this.InstrumentWindow(window),
                v.Of.AddPopupCreatedCallback((e) => {
                  this.InstrumentWindow(e.window);
                }));
          }
          m_setSteamClientListeners = new Set();
          RegisterListeners() {
            "undefined" != typeof SteamClient &&
            SteamClient.WebChat &&
            SteamClient.WebChat.RegisterForFriendPostMessage
              ? (this.m_setSteamClientListeners.add(
                  SteamClient.WebChat.RegisterForFriendPostMessage(
                    this.HandlePostMessage,
                  ),
                ),
                window.addEventListener(
                  "message",
                  this.HandleWebLoaderPostMessage,
                ))
              : ((0, I.w)(
                  !a.TS.IN_CLIENT,
                  "Config.IN_CLIENT set but SteamClient globals not available",
                ),
                window.addEventListener("message", this.HandlePostMessage)),
              (0, cn.Dp)("Messaging.RegisterForMessages") &&
                (this.m_setSteamClientListeners.add(
                  SteamClient.Messaging.RegisterForMessages(
                    "LibraryCommands",
                    this.HandleLibraryCommandMessage,
                  ),
                ),
                this.m_setSteamClientListeners.add(
                  SteamClient.Messaging.RegisterForMessages(
                    "PersonaState",
                    this.HandlePersonaStateMessage,
                  ),
                )),
              (0, cn.Dp)("WebChat.RegisterForUIModeChange") &&
                this.m_setSteamClientListeners.add(
                  SteamClient.WebChat.RegisterForUIModeChange(
                    this.HandleUIModeChange,
                  ),
                );
          }
          RemoveListeners() {
            this.m_setSteamClientListeners.forEach((e) => e.unregister()),
              this.m_setSteamClientListeners.clear();
          }
          IsGamepadUIActive() {
            return 4 == this.m_eUIMode;
          }
          IsDesktopUIActive() {
            return 7 == this.m_eUIMode;
          }
          IsEmbeddedApp() {
            return this.m_bEmbeddedApp;
          }
          OverlayStore() {
            return this.m_OverlayStore;
          }
          FriendGroupStore() {
            return this.m_FriendsUIApp.FriendStore.FriendGroupStore;
          }
          ChatStore() {
            return this.m_FriendsUIApp.ChatStore;
          }
          UIStore() {
            return this.m_FriendsUIApp.UIStore;
          }
          VRPopupManager() {
            return this.m_VRPopupManager;
          }
          BNeedsUpdate() {
            return this.m_bUpdatedBuildAvailable;
          }
          GetSecondsOutOfDate() {
            return this.m_nSecondsOutOfDate;
          }
          GetFriendsListPopup(e) {
            return this.m_mapFriendsListPopups.get(e.m_unPID) ?? null;
          }
          SetVisibilityForDesktopUIOverlay(e, t) {
            const n = this.GetFriendsListPopup(e);
            t
              ? n
                ? n.window.SteamClient.Window.ShowWindow()
                : this.ShowPopupFriendsList(e)
              : n && n.window.SteamClient.Window.HideWindow();
          }
          SetChatWindowsVisibilityForDesktopUIOverlay(e, t) {
            let n = this.m_FriendsUIApp.UIStore.GetPerContextChatData(e);
            for (let e of Array.from(n.popup_list)) {
              let n = e.popup.GetWindow();
              t
                ? n.SteamClient.Window.ShowWindow()
                : n.SteamClient.Window.HideWindow();
            }
          }
          InstrumentWindow(e) {
            this.m_FriendsUIApp.IdleTracker.AddTrackedWindow(e);
          }
          HandlePostMessage(e) {
            let t = e.data;
            if (!t || !t.command) return;
            let n = this.m_FriendsUIApp.GetDefaultBrowserContext();
            void 0 !== e.data.pid &&
              (n = {
                m_unPID: e.data.pid,
                m_nBrowserID: e.data.browserid,
                m_eUIMode: this.m_eUIMode,
              }),
              this.ExecuteCommand(n, e.data);
          }
          HandleUIModeChange(e) {
            this.m_eUIMode = e;
          }
          HandleLibraryCommandMessage(e, t, n) {
            let i = this.m_FriendsUIApp.GetDefaultBrowserContext(),
              o = JSON.parse(n);
            (o.command = t), this.ExecuteCommand(i, o);
          }
          RegisterForSteamURLs(e) {
            e("friends/message", (e, t) =>
              this.ExecuteCommand(
                this.m_FriendsUIApp.GetDefaultBrowserContext(),
                { command: "ShowFriendChatDialog", steamid: t, btakefocus: !0 },
              ),
            ),
              e("friends/joinchat", (e, t) =>
                this.ExecuteCommand(
                  this.m_FriendsUIApp.GetDefaultBrowserContext(),
                  {
                    command: "ShowFriendChatDialog",
                    steamid: t,
                    btakefocus: !0,
                  },
                ),
              );
          }
          SendPersonaUpdateToLibrary(e) {
            (0, cn.Dp)("Messaging.PostMessage") &&
              SteamClient.Messaging.PostMessage(
                "PersonaState",
                "PersonaUpdate",
                JSON.stringify(e),
              );
          }
          HandlePersonaStateMessage(e, t, n) {
            "RequestPersonaState" == t &&
              p.xm?.FriendStore?.self &&
              this.SendPersonaUpdateToLibrary(
                p.xm.FriendStore.self.persona.m_ePersonaState,
              );
          }
          PerformFriendsUIUpdate() {
            let e = this.m_FriendsUIApp.UIStore.SerializePopupStateToObject(!0);
            window.parent.postMessage(
              { message: "ChatReloadRequest", state: e },
              "https://steamloopback.host",
            );
          }
          HandleWebLoaderPostMessage(e) {
            null != e.data.message &&
              ("UpdatedBuildAvailable" == e.data.message
                ? (console.log(
                    "There is an updated friendsui build available, we are " +
                      (e.data.bVeryOutOfDate ? "" : "NOT ") +
                      "very out of date. We are " +
                      (e.data.bForce ? "" : "NOT ") +
                      "forcing an update.",
                  ),
                  (this.m_bUpdatedBuildAvailable = !0),
                  void 0 !== e.data.nSecondsOutOfDate &&
                    (this.m_nSecondsOutOfDate = e.data.nSecondsOutOfDate),
                  (this.m_FriendsUIApp.IdleTracker.GetUserIdleTime() > 7200 ||
                    (void 0 !== e.data.bForce && 1 == e.data.bForce)) &&
                    this.PerformFriendsUIUpdate())
                : "ReloadSerializedChatState" == e.data.message &&
                    void 0 !== e.data.state
                  ? (console.log(
                      "Asked by loader to reload serialized chat state",
                    ),
                    this.m_FriendsUIApp.UIStore.SetStateToRestoreFrom(
                      e.data.state,
                    ))
                  : "LoaderWindowRestoreDetails" == e.data.message
                    ? ((this.m_bShowFriendsListOnLoadFromLoader =
                        e.data.bVisible),
                      (this.m_strLoaderWindowRestoreDetails = e.data.data))
                    : "SetPersonaState" == e.data.message &&
                      this.SetUserPersonaStateWhenReady(e.data.persona_state));
          }
          SetUserPersonaStateWhenReady(e) {
            this.m_FriendsUIApp.FriendStore.SetUserPersonaState(e);
          }
          ExecuteCommand(e, t) {
            const n = t.command;
            switch (n) {
              case "ShowPopupFriendsList":
                this.ShowPopupFriendsList(e, !1, !0);
                break;
              case "ShowFriendChatDialog":
                {
                  let n = new Ce.b(t.steamid),
                    i = 0 != t.btakefocus;
                  n.BIsValid()
                    ? n.BIsIndividualAccount()
                      ? this.m_FriendsUIApp.UIStore.ShowFriendChatDialogWhenReady(
                          e,
                          n.GetAccountID(),
                          !0,
                          i,
                        )
                      : n.BIsClanAccount() &&
                        this.m_FriendsUIApp.FriendStore.ClanStore.JoinClanChatRoom(
                          e,
                          n,
                        )
                    : this.ShowChatUnreadMessages(e);
                }
                break;
              case "CloseChatDialog":
                {
                  let e = new Ce.b(t.steamid);
                  if (e.BIsIndividualAccount()) {
                    let t = this.m_FriendsUIApp.ChatStore.GetFriendChat(
                      e.GetAccountID(),
                      !1,
                    );
                    t && this.m_FriendsUIApp.UIStore.CloseTabByID(t.unique_id);
                  } else if (e.BIsClanAccount()) {
                    let t =
                      this.m_FriendsUIApp.FriendStore.ClanStore.GetClan(e);
                    if (t && t.GetChatGroupIDIfLoaded()) {
                      let e = this.m_FriendsUIApp.ChatStore.GetChatRoomGroup(
                        t.GetChatGroupIDIfLoaded(),
                      );
                      e &&
                        this.m_FriendsUIApp.UIStore.CloseTabByID(e.unique_id);
                    }
                  }
                }
                break;
              case "ShowChatRoomGroupDialog":
                this.ShowChatRoomGroupDialog(
                  e,
                  t.chat_group_id,
                  t.chat_room_id,
                );
                break;
              case "ShowChatRoomGroupInvite":
                if (this.m_FriendsUIApp.ready_to_render) {
                  let n =
                    this.m_FriendsUIApp.ChatStore.InviteStore.GetInviteFromCode(
                      t.invite_code,
                    );
                  ne({ invite: n, inviter: null }, e, window);
                }
                break;
              case "SetPersonaState":
                this.m_FriendsUIApp.FriendStore.SetUserPersonaState(
                  t.persona_state,
                );
                break;
              case "ShowWatchBroadcast":
                let i = new Ce.b(t.steamid);
                this.m_FriendsUIApp.UIStore.ShowOrActivateBroadcast(
                  e,
                  i.GetAccountID(),
                  !0,
                ).ShowWatchPromptDialog();
                break;
              case "ToggleDockedMode":
                this.ToggleSingleWindowMode(t.checked);
                break;
              default:
                (0, I.z)(n, `Unhandled command type: ${n}`);
            }
          }
          Init(e, t, n) {
            let i = [];
            return (
              i.push([
                "Load Preferences",
                () =>
                  this.m_FriendsUIApp.SettingsStore.GetObjectFromLocalStorageWhenReady(
                    An,
                    Dn,
                  ).then((e) => {
                    (0, D.h5)(() => {
                      this.m_UIDisplayPrefs = e;
                    });
                  }),
              ]),
              e.RunWhenLoggedOn(() => {
                v.Of.SetCurrentLoggedInAccountID(e.steamid.GetAccountID());
              }),
              (this.m_WebLogonManager = n),
              (this.m_UsabilityMetricsStore = new A(
                this.FillInChatUsabilityMetrics.bind(this),
                e,
              )),
              t && this.m_OverlayStore.Init(e),
              a.TS.IN_CLIENT &&
                !this.m_FriendsUIApp.IsLoadedInClientSharedJSContext() &&
                void 0 !== SteamClient.FriendSettings.GetEnabledFeatures &&
                i.push([
                  "SteamClient.FriendSettings.GetEnabledFeatures",
                  () =>
                    SteamClient.FriendSettings.GetEnabledFeatures().then(
                      (e) => {
                        let t = !1;
                        for (let n of e)
                          if ("LoaderWindowSynchronization" == n.feature) {
                            t = n.bEnabled;
                            break;
                          }
                        return t
                          ? (0, D.z7)(
                              () =>
                                void 0 !== this.m_strLoaderWindowRestoreDetails,
                            )
                          : Promise.resolve();
                      },
                    ),
                ]),
              i.push(["VRPopupManager", () => this.m_VRPopupManager.Init(e)]),
              t ||
                i.push([
                  "GRS",
                  () => (0, Jt.Z9)(e.GetServiceTransport(), void 0),
                ]),
              i
            );
          }
          get FriendHoverStore() {
            return this.m_FriendHoverStore;
          }
          get WebLogonManager() {
            return this.m_WebLogonManager;
          }
          get DragDropManager() {
            return this.m_DragDropManager;
          }
          get UIDisplayPrefs() {
            return this.m_UIDisplayPrefs;
          }
          SetUIDisplayPref(e, t) {
            this.m_UIDisplayPrefs[e] != t &&
              ((this.m_UIDisplayPrefs[e] = t),
              this.m_iTimeoutSaveUIDisplayPrefs &&
                window.clearTimeout(this.m_iTimeoutSaveUIDisplayPrefs),
              (this.m_iTimeoutSaveUIDisplayPrefs = window.setTimeout(() => {
                this.m_FriendsUIApp &&
                  this.m_FriendsUIApp.SettingsStore &&
                  this.m_FriendsUIApp.SettingsStore.StoreObjectInLocalStorage(
                    An,
                    this.m_UIDisplayPrefs,
                  ),
                  (this.m_iTimeoutSaveUIDisplayPrefs = void 0);
              }, 1e3)));
          }
          ShowPopupFriendsList(e, t, n, i) {
            if (
              this.m_FriendsUIApp.ParentalStore.BIsFriendsBlocked() ||
              this.m_FriendsUIApp.SettingsStore.IsSteamInTournamentMode()
            )
              return void console.log(
                "Blocked friends list popup due to parental controls or tournament mode",
              );
            const o =
              !t && n
                ? r.iE.k_EWindowBringToFrontAndForceOS
                : r.iE.k_EWindowBringToFrontInvalid;
            let a = this.m_mapFriendsListPopups.get(e.m_unPID);
            if (a) return void a.Focus(o);
            if (this.m_FriendsUIApp.UIStore.BIsFriendsListEmbedded(e)) return;
            (a = new Yt.ve(
              this.m_FriendsUIApp.FriendStore,
              this.m_FriendsUIApp.ChatStore,
              e,
              t,
              i,
            )),
              this.m_mapFriendsListPopups.set(e.m_unPID, a),
              a.Show(o);
            let s = new En(a);
            this.m_FriendsUIApp.UIStore.GetPerContextChatData(
              e,
            ).SetFriendsListWindow(s.container),
              this.m_FriendsUIApp.UIStore.SerializePopupState();
          }
          ShowChatRoomGroupDialog(e, t, n) {
            let i = this.m_FriendsUIApp.ChatStore.GetChatRoomGroup(t),
              o = i && n ? i.GetChatRoom(n) : null;
            if (!i || !i.BIsCurrentUserAMember() || (o && o.BVoiceActive())) {
              let i =
                this.m_FriendsUIApp.ChatStore.InviteStore.GetDirectInviteInfo(
                  t,
                  n,
                  this.m_FriendsUIApp.FriendStore.self.accountid,
                );
              ne({ invite: i, inviter: null }, e, window);
            } else
              o
                ? this.m_FriendsUIApp.UIStore.ShowAndOrActivateChat(e, o, !0)
                : this.m_FriendsUIApp.UIStore.ShowAndOrActivateChatRoomGroupWhenReady(
                    e,
                    i,
                    !0,
                  );
          }
          OnFriendsListClosed(e) {
            this.m_mapFriendsListPopups.delete(e.m_unPID),
              this.m_FriendsUIApp.UIStore.GetPerContextChatData(
                e,
              ).SetFriendsListWindow(void 0),
              this.m_FriendsUIApp.UIStore.SerializePopupState();
          }
          ToggleSingleWindowMode(e) {
            if (p.xm.SettingsStore.BSingleWindowModeEnabled() != e) {
              p.xm.SettingsStore.SetSingleWindowMode(e);
              for (let t of this.m_FriendsUIApp.UIStore.GetAllBrowserContexts())
                this.ToggleSingleWindowModeForContext(e, t);
            }
          }
          ToggleSingleWindowModeForContext(e, t) {
            const n = this.m_FriendsUIApp.UIStore.GetPerContextChatData(t);
            if (
              n.IsFriendsListSingleWindow() != e &&
              (n.SetFriendsListSingleWindowMode(e),
              n.IsFriendsListSingleWindow() == e)
            )
              if (e) {
                this.m_FriendsUIApp.UIStore.ConvertDefaultTabSetToEmbedded(t),
                  this.m_FriendsUIApp.UIStore.MergeTabSets(t);
                const e = n.friends_list_window;
                if (e) {
                  if (e instanceof yn) {
                    const t = e.GetWindow();
                    t.SteamClient.Window.SetMinSize &&
                      t.SteamClient.Window.SetMinSize(Yt.KO, Yt.rS),
                      t.SteamClient.Window.ResizeTo(1280, t.innerHeight, !1);
                  }
                } else this.ShowPopupFriendsList(t, !1, !0, { width: 1280 });
              } else {
                this.m_FriendsUIApp.UIStore.ConvertDefaultTabSetToPopup(t);
                const e = n.friends_list_window;
                if (e) {
                  if (e instanceof yn) {
                    const t = e.GetWindow();
                    t.SteamClient.Window.SetMinSize &&
                      t.SteamClient.Window.SetMinSize(Yt.Y$, Yt.rS),
                      t.SteamClient.Window.ResizeTo(
                        Fn.UIDisplayPrefs.nFriendsListSingleWindowWidthPx,
                        t.innerHeight,
                        !1,
                      );
                  }
                } else {
                  const e = Fn.UIDisplayPrefs.nFriendsListSingleWindowWidthPx;
                  this.ShowPopupFriendsList(t, !1, !0, { width: e });
                }
              }
          }
          FillInChatUsabilityMetrics(e) {
            e.ui_state().set_friends_list_group_chats_height(
              this.UIDisplayPrefs.nChatRoomListHeightPx,
            );
            let t,
              n = this.m_FriendsUIApp.UIStore.GetPerContextChatData(C.m),
              i = n.friends_list_window;
            i &&
              i instanceof yn &&
              (e.ui_state().set_friends_list_width(i.GetWindow().outerWidth),
              e.ui_state().set_friends_list_height(i.GetWindow().outerHeight));
            for (let e of Array.from(n.popup_list))
              if (
                ((t = e),
                e.tab_set === n.default_tabset &&
                  !n.IsFriendsListSingleWindow())
              )
                break;
            t &&
              t.popup.GetWindow() &&
              (e
                .ui_state()
                .set_friends_list_width(t.popup.GetWindow().outerWidth),
              e
                .ui_state()
                .set_friends_list_height(t.popup.GetWindow().outerHeight));
          }
          ShowChatUnreadMessages(e) {
            if (
              this.m_FriendsUIApp.ParentalStore.BIsFriendsBlocked() ||
              this.m_FriendsUIApp.SettingsStore.IsSteamInTournamentMode
            )
              return void console.log(
                "Blocked friends list popup due to parental controls or tournament mode",
              );
            let t =
              this.m_FriendsUIApp.ChatStore.GetChatToActivateForOldestUnread(e);
            return t
              ? (console.log(
                  "ShowChatUnreadMessages - showing chat " + t.unique_id,
                ),
                void this.m_FriendsUIApp.UIStore.ShowAndOrActivateChat(
                  e,
                  t,
                  !0,
                ))
              : this.ShowPopupFriendsList(e, !1, !0);
          }
        }
        (0, i.Cg)([D.sH], Tn.prototype, "m_UIDisplayPrefs", void 0),
          (0, i.Cg)([D.sH], Tn.prototype, "m_bUpdatedBuildAvailable", void 0),
          (0, i.Cg)([D.sH], Tn.prototype, "m_nSecondsOutOfDate", void 0),
          (0, i.Cg)(
            [D.sH],
            Tn.prototype,
            "m_strLoaderWindowRestoreDetails",
            void 0,
          ),
          (0, i.Cg)(
            [D.sH],
            Tn.prototype,
            "m_bShowFriendsListOnLoadFromLoader",
            void 0,
          ),
          (0, i.Cg)([D.sH], Tn.prototype, "m_eUIMode", void 0),
          (0, i.Cg)([c.oI], Tn.prototype, "HandlePostMessage", null),
          (0, i.Cg)([c.oI], Tn.prototype, "HandleUIModeChange", null),
          (0, i.Cg)([c.oI], Tn.prototype, "HandleLibraryCommandMessage", null),
          (0, i.Cg)([c.oI], Tn.prototype, "HandlePersonaStateMessage", null),
          (0, i.Cg)([c.oI], Tn.prototype, "HandleWebLoaderPostMessage", null),
          (0, i.Cg)([p.Nw], Tn.prototype, "SetUserPersonaStateWhenReady", null),
          (0, i.Cg)([D.EW], Tn.prototype, "UIDisplayPrefs", null),
          (0, i.Cg)([D.XI], Tn.prototype, "SetUIDisplayPref", null),
          (0, i.Cg)([p.Nw], Tn.prototype, "ShowPopupFriendsList", null),
          (0, i.Cg)([p.Nw], Tn.prototype, "ShowChatUnreadMessages", null);
        class Mn extends p.m {
          m_IdleTracker;
          m_AudioPlaybackManager = new on();
          m_bLoadedInClientSharedJSContext;
          m_DesktopApp;
          constructor(e) {
            super(
              a.TS.IN_CLIENT && void 0 !== SteamClient.Storage
                ? new sn()
                : new ln.A(),
            ),
              (this.m_bLoadedInClientSharedJSContext = e),
              e &&
                this.VoiceStore.RegisterForVoiceChatActiveStateChange(
                  this.OnVoiceChatActiveStateChange,
                ),
              (this.m_IdleTracker = a.TS.IN_CLIENT ? new u() : new d()),
              (this.m_DesktopApp = ((Fn = new Tn(this, !1)), Fn)),
              (this.m_ChatRoomBBCodeParser = new pe.o0(
                Object.assign(it(), { mention: zt }),
                pe.OJ,
              )),
              (this.m_FriendChatBBCodeParser = new pe.o0(
                Object.assign(it(), {
                  invite: Gt,
                  gameinvite: Ft,
                  lobbyinvite: Pt,
                  tradeoffer: Vt,
                  broadcastinvite: Bt,
                  broadcastviewrequest: xt,
                }),
                pe.OJ,
              )),
              (this.m_NotificationBBCodeParser = new pe.T4({
                gameinvite: Be,
                lobbyinvite: xe,
                img: We,
                invite: Oe,
                tradeoffer: Ne,
                spoiler: Ve,
                roomeffect: Ue,
                sticker: ze,
                video: He,
              })),
              (this.m_ChatRoomEffectSettings = ke.B),
              (Fn = this.m_DesktopApp),
              this.m_AudioPlaybackManager.SetVoiceStore(this.m_VoiceChatStore),
              (0, I.w)(
                !a.TS.IN_MOBILE,
                "DesktopApp initialized in mobile context",
              );
          }
          Init(e, t, n) {
            let i = t ? new g(this.m_FriendStore) : new f(this.m_FriendStore),
              o = this.m_DesktopApp.Init(e, t, n);
            super.InitInternal(e, i, o);
          }
          static k_pchStartupParamKey = "oFriendsUIStartupParam";
          async OnReadyToRender() {
            a.TS.IN_CLIENT &&
              (SteamClient.RemotePlay.RegisterForRemoteClientStarted(
                this.RemoteClientStarted,
              ),
              SteamClient.RemotePlay.RegisterForInviteResult(
                this.RemoteClientInviteResult,
              ),
              SteamClient.RemotePlay.RegisterForRemoteClientLaunchFailed(
                this.RemoteClientLaunchFailed,
              ),
              SteamClient.RemotePlay.RegisterForGroupCreated(
                this.RemotePlayGroupCreated,
              )),
              await this.UIStore.RestorePopupState();
            let e = v.Of.GetRestoreDetails("PopupFriendsListDimensions");
            e &&
              window.parent.postMessage(
                { message: "FriendsListRestoreDetailsChanged", data: e },
                "https://steamloopback.host",
              );
            try {
              let e = window.sessionStorage.getItem(Mn.k_pchStartupParamKey);
              if (e) {
                let t = JSON.parse(e);
                t &&
                  t.command &&
                  this.m_DesktopApp.ExecuteCommand(C.m, t.command);
              }
              window.sessionStorage.removeItem(Mn.k_pchStartupParamKey);
            } catch (e) {}
            if ((this.m_IdleTracker.Init(), window.opener)) {
              let e = [
                a.TS.COMMUNITY_BASE_URL,
                a.TS.STORE_BASE_URL,
                a.TS.CHAT_BASE_URL,
              ];
              for (let t of e)
                window.opener.postMessage(
                  "FriendsUIReady",
                  t.replace(/\/$/, ""),
                );
            }
          }
          IsGamepadUIActive() {
            return this.m_DesktopApp.IsGamepadUIActive();
          }
          IsDesktopUIActive() {
            return this.m_DesktopApp.IsDesktopUIActive();
          }
          IsLoadedInClientSharedJSContext() {
            return this.m_bLoadedInClientSharedJSContext;
          }
          get AudioPlaybackManager() {
            return this.m_AudioPlaybackManager;
          }
          get IdleTracker() {
            return this.m_IdleTracker;
          }
          AddPopupManagerShutdownCallback(e) {
            v.Of.AddShutdownCallback(e);
          }
          CreateChatPopup(e, t, n, i, o, r) {
            let a = new Yt.IO(e, t, n, this.m_ChatStore, i, o, r),
              s = new En(a);
            return new R.TP(s, a);
          }
          ShowPopupFriendsListAtStartup(e) {
            let t = e;
            if (
              (void 0 !== Fn.m_bShowFriendsListOnLoadFromLoader &&
                (t = Fn.m_bShowFriendsListOnLoadFromLoader),
              this.ChatStore.FriendChatStore.GetUnreadFriendMessageCount() >
                0 &&
                this.SettingsStore.FriendsSettings.bSignIntoFriends &&
                (t = !0),
              t)
            ) {
              let e = !0 === Fn.m_bShowFriendsListOnLoadFromLoader;
              (0, C.u)(p.xm.GetDefaultBrowserContext(), C.m) ||
                (console.log(
                  "Blocked taking focus in root context during ShowPopupFriendsList, because other context is primary",
                ),
                (e = !1)),
                p.xm.ShowPopupFriendsList(C.m, !1, e);
            }
          }
          ShowPopupFriendsList(e, t, n) {
            this.m_DesktopApp.ShowPopupFriendsList(e, t, n);
          }
          OnFriendsListClosed(e) {
            this.m_DesktopApp.OnFriendsListClosed(e);
          }
          RemotePlayGroupCreated(e, t) {
            let n = new Ce.b(e).GetAccountID();
            if (0 == n) return;
            let i = p.xm.FriendStore.GetPlayer(n);
            const o = e === p.xm.FriendStore.self.steamid64;
            p.xm.RemotePlayStore.OnGroupCreated(i, o, t);
          }
          RemoteClientStarted(e, t) {
            let n = new Ce.b(e).GetAccountID();
            if (0 == n) return;
            if (n == p.xm.FriendStore.self.accountid) return;
            let i = p.xm.FriendStore.GetPlayer(n);
            p.xm.RemotePlayStore.RemoteClientStarted(i, !1, t);
          }
          RemoteClientInviteResult(e, t, n, i, o) {
            this.RemoteClientLaunchResult(e, t, n, i, o);
          }
          RemoteClientLaunchResult(e, t, n, i, r) {
            let a = new Ce.b(e).GetAccountID(),
              s = p.xm.FriendStore.GetPlayer(a);
            if (n === o.l.k_ERemoteClientLaunchOK) {
              if (0 !== a) {
                let e = 2 == s.efriendrelationship,
                  t = 4 == s.efriendrelationship,
                  n = s.persona.is_online && !e && !t && !s.is_blocked;
                (n = !1),
                  !p.xm.VoiceStore.IsAnyVoiceActive() && n && i
                    ? p.xm.UIStore.ShowFriendChatDialogAndStartVoice(
                        p.xm.GetDefaultBrowserContext(),
                        s.accountid,
                      )
                    : p.xm.UIStore.ShowFriendChatDialog(
                        p.xm.GetDefaultBrowserContext(),
                        s.accountid,
                        !0,
                        !1,
                      );
              }
            } else {
              let e = "";
              switch (n) {
                case o.l.k_ERemoteClientLaunchParentalUnlockFailed:
                  e = "#RemotePlay_ErrorInviteFailed_ParentalUnlockFailed";
                  break;
                case o.l.k_ERemoteClientLaunchScreenLocked:
                  e = "#RemotePlay_ErrorInviteFailed_ScreenLocked";
                  break;
                case o.l.k_ERemoteClientLaunchDriversNotInstalled:
                  e = "#RemotePlay_ErrorInviteFailed_DriversNotInstalled";
                  break;
                case o.l.k_ERemoteClientLaunchDisabledRemote:
                  e = "#RemotePlay_ErrorInviteFailed_Disabled";
                  break;
                case o.l.k_ERemoteClientLaunchBroadcasting:
                  e = "#RemotePlay_ErrorInviteFailed_BroadcastingActive";
                  break;
                case o.l.k_ERemoteClientLaunchTransportUnavailable:
                  e = "#RemotePlay_ErrorInviteFailed_TransportUnavailable";
                  break;
                case o.l.k_ERemoteClientLaunchInvisible:
                  e = "#RemotePlay_ErrorInviteFailed_Invisible";
                  break;
                case o.l.k_ERemoteClientLaunchRestrictedCountry:
                  e = "#RemotePlay_ErrorInviteFailed_RestrictedCountry";
                  break;
                default:
                  e = "#RemotePlay_ErrorInviteFailed_Failed";
              }
              this.ShowAlert((0, P.we)("#RemotePlay_Error"), (0, P.we)(e));
            }
          }
          RemoteClientLaunchFailed(e) {
            if (e === o.l.k_ERemoteClientLaunchOK);
            else {
              let t = "";
              switch (e) {
                case o.l.k_ERemoteClientLaunchParentalUnlockFailed:
                  t = "#RemotePlay_ErrorInviteFailed_ParentalUnlockFailed";
                  break;
                case o.l.k_ERemoteClientLaunchScreenLocked:
                  t = "#RemotePlay_ErrorInviteFailed_ScreenLocked";
                  break;
                case o.l.k_ERemoteClientLaunchDriversNotInstalled:
                  t = "#RemotePlay_ErrorInviteFailed_DriversNotInstalled";
                  break;
                case o.l.k_ERemoteClientLaunchDisabledRemote:
                  t = "#RemotePlay_ErrorInviteFailed_Disabled";
                  break;
                case o.l.k_ERemoteClientLaunchBroadcasting:
                  t = "#RemotePlay_ErrorInviteFailed_BroadcastingActive";
                  break;
                case o.l.k_ERemoteClientLaunchTransportUnavailable:
                  t = "#RemotePlay_ErrorInviteFailed_TransportUnavailable";
                  break;
                case o.l.k_ERemoteClientLaunchInvisible:
                  t = "#RemotePlay_ErrorInviteFailed_Invisible";
                  break;
                case o.l.k_ERemoteClientLaunchRestrictedCountry:
                  t = "#RemotePlay_ErrorInviteFailed_RestrictedCountry";
                  break;
                default:
                  t = "#RemotePlay_ErrorInviteFailed_Failed";
              }
              this.ShowAlert((0, P.we)("#RemotePlay_Error"), (0, P.we)(t));
            }
          }
          ShowAlert(e, t, n) {
            return (0, Y.Nw)(e, t, n);
          }
          OpenURLInBrowser(e, t) {
            a.TS.IN_CLIENT
              ? SteamClient.WebChat.OpenURLInClient(e, t.m_unPID, !1)
              : (0, B.EP)(window, e);
          }
          BIsValidBrowserContext(e) {
            return (
              super.BIsValidBrowserContext(e) ||
              this.m_DesktopApp.OverlayStore().HasOverlayInstance(e.m_unPID)
            );
          }
          ShowCloseActiveVoiceConfirmation(e, t) {
            if (!this.m_DesktopApp.UIDisplayPrefs.bDontShowVoiceAlert) {
              let e = t.popup;
              (0, Xt.XX)(e.GetWindow());
            }
          }
          OnVoiceChatActiveStateChange(e) {
            (0, cn.Dp)("Browser.SetBackgroundThrottlingDisabled") &&
              SteamClient.Browser.SetBackgroundThrottlingDisabled(e);
          }
          SignOutOfFriends(e) {
            this.m_DesktopApp.SendPersonaUpdateToLibrary(0);
            let t =
              p.xm.UIStore.GetRootChatPerContextData().friends_list_window &&
              p.xm.UIStore.GetRootChatPerContextData().friends_list_window.BIsVisible();
            window.parent.postMessage(
              {
                message: "SignOutRequest",
                bShowLoaderWindow: t,
                browserContext: e,
              },
              "https://steamloopback.host",
            ),
              this.UIStore.SerializePopupState(),
              this.UIStore.ResetHasRestoredPopupState();
            for (const e of v.Of.GetPopups())
              e.GetName().startsWith("chat_") && e.Close();
            this.CMInterface.ForceDisconnect();
          }
          UpdatePersonaState(e) {
            this.m_DesktopApp.SendPersonaUpdateToLibrary(e);
          }
          CreateNewTabFromUniqueID(e, t, n, i) {
            let o = t.match(/^br(\d+)$/);
            if (o && o[1]) {
              let t = parseInt(o[1]);
              return new S.w(e, t);
            }
            return super.CreateNewTabFromUniqueID(e, t, n, i);
          }
          BShowIncomingChatMessages() {
            return (
              !!this.IsLoadedInClientSharedJSContext() ||
              0 == this.m_DesktopApp.m_eUIMode
            );
          }
          async Reconnect() {
            this.m_DesktopApp.RemoveListeners(),
              this.m_DesktopApp.RegisterListeners(),
              await Promise.all([
                this.CMInterface.Connect(),
                this.UIStore.RestorePopupState(),
              ]);
          }
          GetDefaultBrowserContext() {
            const e = this.m_BrowserContextDefaultTarget;
            return void 0 === e.m_eUIMode || -1 === e.m_eUIMode
              ? { ...e, m_eUIMode: this.m_DesktopApp.m_eUIMode }
              : e;
          }
          get VRPopupManager() {
            return this.m_DesktopApp.VRPopupManager();
          }
        }
        (0, i.Cg)([c.oI], Mn.prototype, "RemotePlayGroupCreated", null),
          (0, i.Cg)([c.oI], Mn.prototype, "RemoteClientStarted", null),
          (0, i.Cg)([c.oI], Mn.prototype, "RemoteClientInviteResult", null),
          (0, i.Cg)([c.oI], Mn.prototype, "RemoteClientLaunchResult", null),
          (0, i.Cg)([c.oI], Mn.prototype, "RemoteClientLaunchFailed", null),
          (0, i.Cg)([c.oI], Mn.prototype, "OnVoiceChatActiveStateChange", null);
        function Rn() {
          return (Fn = new Tn(new Mn(!1), !1)), Fn;
        }
        function kn(e) {
          const t = Mn.k_pchStartupParamKey;
          window.sessionStorage.setItem(
            t,
            JSON.stringify({
              command: { command: "ShowWatchBroadcast", steamid: e },
            }),
          );
        }
        function Ln(e) {
          const t = (0, F.useState)(0)[1];
          return [
            Fn.UIDisplayPrefs[e],
            (n) => {
              Fn.SetUIDisplayPref(e, n), t((e) => e + 1);
            },
          ];
        }
        function Gn(e, t) {
          let n = t;
          void 0 === n.m_eUIMode &&
            void 0 !== Fn?.m_eUIMode &&
            (n = { ...n, m_eUIMode: Fn.m_eUIMode }),
            (e.__FriendsUIBrowserContext = n);
        }
        let Fn;
        v.Of.AddPopupCreatedCallback((e) => {
          Gn(e.window, e.browser_info ?? C.m);
        });
      },
      58743: (e, t, n) => {
        "use strict";
        n.d(t, {
          iw: () => Y,
          m: () => ee,
          RV: () => J,
          xm: () => te,
          Nw: () => $,
          zy: () => X,
          TN: () => ne,
        });
        var i = n(34629),
          o = n(78116),
          r = n(89193),
          a = n(83749),
          s = n(45518),
          l = n(77631),
          c = n(14024);
        class m {
          constructor() {
            (0, r.Gn)(this);
          }
          m_CMInterface;
          m_status = a.vV;
          m_mapPendingRequests = new r.Es();
          m_nRequestID = 1;
          m_BroadcastDetails = {};
          Init(e) {
            (this.m_CMInterface = e),
              this.m_CMInterface.RunWhenLoggedOn(() => {
                o.TS.IN_CLIENT &&
                  (SteamClient &&
                    SteamClient.Broadcast &&
                    SteamClient.Broadcast.RegisterForBroadcastStatus &&
                    SteamClient.Broadcast.RegisterForBroadcastStatus(
                      this.OnBroadcastStatus,
                    ),
                  SteamClient &&
                    SteamClient.Broadcast &&
                    SteamClient.Broadcast.RegisterForViewerRequests &&
                    SteamClient.Broadcast.RegisterForViewerRequests(
                      this.OnViewerRequest,
                    ));
              });
          }
          MakeKey(e, t) {
            return e + "_" + t;
          }
          get status() {
            return this.m_status;
          }
          get is_broadcasting() {
            return this.m_status.bIsBroadcasting;
          }
          get broadcastid() {
            return this.m_status.broadcastid;
          }
          get is_broadcast_capable() {
            return this.m_status.bBroadcastCapable;
          }
          OnBroadcastStatus(e) {
            ((this.m_status.bIsBroadcasting && !e.bIsBroadcasting) ||
              ("0" != this.m_status.broadcastid && "0" == e.broadcastid)) &&
              this.m_mapPendingRequests.forEach((e, t, n) => {
                e == a.i_.k_EPending && n.delete(t);
              }),
              (this.m_status = e);
          }
          OnViewerRequest(e, t, n) {
            if (n == a.i_.k_EPending) {
              let t = this.m_nRequestID++;
              this.m_mapPendingRequests.set(this.MakeKey(e, t), n);
              let i = te.GetDefaultBrowserContext(),
                o = te.ShowFriendChatDialog(i, e);
              o && o.ViewerNeedsApproval(t);
            } else this.m_mapPendingRequests.set(this.MakeKey(e, t), n);
          }
          ApproveViewerRequest(e, t) {
            let n = l.b.InitFromAccountID(e);
            SteamClient.Broadcast.ApproveViewerRequest(
              n.ConvertTo64BitString(),
              Number(t),
            );
          }
          RejectViewerRequest(e, t) {
            let n = l.b.InitFromAccountID(e);
            SteamClient.Broadcast.RejectViewerRequest(
              n.ConvertTo64BitString(),
              Number(t),
            );
          }
          GetRequestState(e, t) {
            return this.m_mapPendingRequests.get(this.MakeKey(e, t));
          }
          InviteToWatch(e) {
            let t = l.b.InitFromAccountID(e);
            return SteamClient.Broadcast.InviteToWatch(
              t.ConvertTo64BitString(),
            );
          }
          SubscribeToBroadcastDetails(e, t) {
            if (this.m_BroadcastDetails[e])
              0 === this.m_BroadcastDetails[e].refCount &&
                this.m_BroadcastDetails[e].details.Subscribe(),
                this.m_BroadcastDetails[e].refCount++;
            else {
              const n = new d(e, t, this.m_CMInterface.GetServiceTransport());
              n.Subscribe(),
                (this.m_BroadcastDetails[e] = { details: n, refCount: 1 });
            }
          }
          UnsubscribeFromBroadcastDetails(e, t) {
            const n = this.m_BroadcastDetails[e];
            n &&
              (n.refCount > 1
                ? n.refCount--
                : (n.details.Unsubscribe(), delete this.m_BroadcastDetails[e]));
          }
          GetBroadcastDetails(e, t) {
            let n = this.m_BroadcastDetails[e];
            return (
              n ||
                ((n = {
                  details: new d(
                    e,
                    t,
                    this.m_CMInterface.GetServiceTransport(),
                  ),
                  refCount: 0,
                }),
                (this.m_BroadcastDetails[e] = n)),
              n.details
            );
          }
        }
        (0, i.Cg)([r.sH], m.prototype, "m_status", void 0),
          (0, i.Cg)([r.sH], m.prototype, "m_mapPendingRequests", void 0),
          (0, i.Cg)([r.EW], m.prototype, "status", null),
          (0, i.Cg)([r.EW], m.prototype, "is_broadcasting", null),
          (0, i.Cg)([r.EW], m.prototype, "broadcastid", null),
          (0, i.Cg)([r.EW], m.prototype, "is_broadcast_capable", null),
          (0, i.Cg)([r.XI.bound], m.prototype, "OnBroadcastStatus", null),
          (0, i.Cg)([r.XI.bound], m.prototype, "OnViewerRequest", null),
          (0, i.Cg)([r.XI], m.prototype, "ApproveViewerRequest", null),
          (0, i.Cg)([r.XI], m.prototype, "RejectViewerRequest", null),
          (0, i.Cg)([r.XI], m.prototype, "InviteToWatch", null);
        class d {
          m_bExpired = !1;
          m_strThumbnail = "";
          m_nThumbnailCount = 0;
          m_strBroadcastID;
          m_strBroadcasterID;
          m_nTimer;
          m_nTimeout = 10;
          m_bSubscribed = !1;
          m_ServiceTransport;
          get strThumbnail() {
            return this.m_strThumbnail
              ? `${this.m_strThumbnail}?n=${this.m_nThumbnailCount}`
              : null;
          }
          get bExpired() {
            return this.m_bExpired;
          }
          constructor(e, t, n) {
            (0, r.Gn)(this),
              (this.m_strBroadcastID = e),
              (this.m_strBroadcasterID = t),
              (this.m_ServiceTransport = n);
          }
          Subscribe() {
            this.m_bSubscribed ||
              ((this.m_bSubscribed = !0), this.PollForDetails());
          }
          SchedulePollForDetails() {
            const e = this.m_strThumbnail ? this.m_nTimeout : 10;
            this.m_nTimer = window.setTimeout(() => {
              (this.m_nTimer = void 0),
                this.m_bSubscribed && this.PollForDetails();
            }, 1e3 * e);
          }
          async PollForDetails() {
            if (!this.m_nTimer && !this.m_bExpired) {
              if (1 != (await this.FetchBroadcastStatus()).GetEResult())
                this.m_bExpired = !0;
              else {
                if (this.m_strThumbnail) this.m_nThumbnailCount++;
                else {
                  const e = await this.FetchBroadcastThumbnail();
                  1 === e.GetEResult() &&
                    ((this.m_strThumbnail = e.Body().thumbnail_url()),
                    (this.m_nTimeout = e.Body().update_interval()));
                }
                this.SchedulePollForDetails();
              }
            }
          }
          FetchBroadcastStatus() {
            let e = s.w.Init(c.jl);
            return (
              e.Body().set_steamid(this.m_strBroadcasterID),
              e.Body().set_broadcast_id(this.m_strBroadcastID),
              c.DK.GetBroadcastStatus(this.m_ServiceTransport, e)
            );
          }
          FetchBroadcastThumbnail() {
            let e = s.w.Init(c.XZ);
            return (
              e.Body().set_steamid(this.m_strBroadcasterID),
              e.Body().set_broadcast_id(this.m_strBroadcastID),
              c.DK.GetBroadcastThumbnail(this.m_ServiceTransport, e)
            );
          }
          Unsubscribe() {
            (this.m_bSubscribed = !1),
              this.m_nTimer &&
                (clearTimeout(this.m_nTimer), (this.m_nTimer = void 0));
          }
        }
        (0, i.Cg)([r.sH], d.prototype, "m_bExpired", void 0),
          (0, i.Cg)([r.sH], d.prototype, "m_strThumbnail", void 0),
          (0, i.Cg)([r.sH], d.prototype, "m_nThumbnailCount", void 0);
        var u = n(42937),
          h = n(99679),
          p = n(16988);
        class _ {
          m_CMInterface;
          m_strTradeOfferToken;
          Init(e) {
            this.m_CMInterface = e;
          }
          GetTradeOfferURL() {
            if (this.m_strTradeOfferToken)
              return Promise.resolve(this.GetConstructedTradeOfferURL());
            {
              let e = s.w.Init(p.Bi);
              return p.tB
                .GetTradeOfferAccessToken(
                  this.m_CMInterface.GetServiceTransport(),
                  e,
                )
                .then((e) => {
                  if (1 == e.GetEResult())
                    return (
                      (this.m_strTradeOfferToken = e
                        .Body()
                        .trade_offer_access_token()),
                      this.GetConstructedTradeOfferURL()
                    );
                  throw new Error("Error getting Trade Offer token");
                });
            }
          }
          GetDefaultTradeOfferURLForFriend(e) {
            return `${o.TS.COMMUNITY_BASE_URL}tradeoffer/new/?partner=${e}`;
          }
          GetConstructedTradeOfferURL() {
            let e = this.m_CMInterface.steamid.GetAccountID();
            return `${o.TS.COMMUNITY_BASE_URL}tradeoffer/new/?partner=${e}&token=${encodeURIComponent(this.m_strTradeOfferToken)}`;
          }
        }
        var g = n(93715),
          C = n(2473),
          f = n(40508),
          S = n(56132);
        const v = { locked: !1 };
        var b = n(17785);
        class I {
          m_ParentalSettings = { is_enabled: !1 };
          m_ParentalState = v;
          m_CMInterface;
          constructor() {
            (0, r.Gn)(this);
          }
          SetLockState(e) {
            this.m_ParentalState.locked = e;
          }
          Init(e) {
            (this.m_CMInterface = e),
              this.m_CMInterface.RunWhenLoggedOn(() => {
                let e = s.w.Init(f.QG);
                e
                  .Body()
                  .set_steamid(
                    this.m_CMInterface.steamid.ConvertTo64BitString(),
                  ),
                  o.TS.IN_CLIENT
                    ? SteamClient.Parental.RegisterForParentalSettingsChanges(
                        (e) => this.UpdateParentalState(e),
                      )
                    : f.JL.GetParentalSettings(
                        this.m_CMInterface.GetServiceTransport(),
                        e,
                      ).then((e) => {
                        (this.m_ParentalSettings = e
                          .Body()
                          .settings()
                          .toObject()),
                          this.m_ParentalSettings.is_enabled
                            ? this.ValidateWebToken().then((e) => {
                                this.m_ParentalState = { locked: e };
                              })
                            : (this.m_ParentalState = { locked: !1 });
                      });
              }),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                f.w0.NotifyLockHandler,
                (e) => (
                  o.TS.SESSIONID == e.Body().sessionid() &&
                    this.SetLockState(!0),
                  1
                ),
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                f.w0.NotifyUnlockHandler,
                (e) => (
                  o.TS.SESSIONID == e.Body().sessionid() &&
                    this.SetLockState(!1),
                  1
                ),
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                f.w0.NotifySettingsChangeHandler,
                (e) => 1,
              );
          }
          UpdateParentalState(e) {
            (this.m_ParentalSettings = b.Zc.deserializeBinary(
              e.settings,
            ).toObject()),
              (this.m_ParentalState = e);
          }
          BIsFeatureBlocked(e) {
            return (
              this.m_ParentalState.locked &&
              0 != e &&
              0 == (this.m_ParentalSettings.enabled_features & (1 << e))
            );
          }
          BIsAppBlocked(e) {
            if (!this.isLocked) return !1;
            if (0 == this.m_ParentalSettings.applist_base_id) return !1;
            if (0 == e) return !1;
            if (e >= S.y4 && e <= S.Iy) return !1;
            return (
              -1 === [S.w1, S.g5, S.lm, S.JP, S.wK].indexOf(e) &&
              (this.m_ParentalSettings.applist_custom.find((t) => t.appid == e)
                ? !this.m_ParentalSettings.applist_custom.find((e) => e.appid)
                    .is_allowed
                : !this.m_ParentalSettings.applist_base.find(
                    (t) => t.appid == e,
                  ) ||
                  !this.m_ParentalSettings.applist_base.find(
                    (t) => t.appid == e,
                  ).is_allowed)
            );
          }
          get isEnabled() {
            return !!this.m_ParentalSettings.is_enabled;
          }
          get isLocked() {
            return this.m_ParentalState.locked;
          }
          ValidateWebToken() {
            let e = o.TS.SESSIONID,
              t = document.cookie.match("(^|; )steamparental=([^;]*)");
            if (!t || !t[2]) return Promise.resolve(!1);
            let n = t[2],
              i = n.split("||");
            n = 2 == i.length ? i[1] : i[0];
            let r = s.w.Init(f.R2);
            return (
              r.Body().set_unlock_token(e + "||" + n),
              new Promise((e, t) => {
                f.JL.ValidateToken(
                  this.m_CMInterface.GetServiceTransport(),
                  r,
                ).then((t) => {
                  1 == t.GetEResult() ? e(!0) : e(!1);
                });
              })
            );
          }
          get locked() {
            return (
              console.log("ParentalState.locked", this.m_ParentalState.locked),
              this.m_ParentalState.locked
            );
          }
          BIsFriendsBlocked() {
            return this.BIsFeatureBlocked(4);
          }
          Unlock(e) {
            if (o.TS.IN_CLIENT)
              return new Promise((t, n) => {
                SteamClient.Parental.UnlockParentalLock(e, !1).then((e) => {
                  t(e);
                });
              });
            {
              let t = s.w.Init(f.Rk);
              return (
                t.Body().set_password(e),
                t.Body().set_session(o.TS.SESSIONID),
                t.Body().set_send_unlock_on_success(!0),
                new Promise((e, n) => {
                  f.JL.ValidatePassword(
                    this.m_CMInterface.GetServiceTransport(),
                    t,
                  ).then((t) => {
                    if (1 == t.GetEResult()) {
                      let e = Date.now().toString() + "||" + t.Body().token();
                      document.cookie =
                        "steamparental=" + encodeURIComponent(e) + "; path=/";
                    }
                    e(t.GetEResult());
                  });
                })
              );
            }
          }
        }
        (0, i.Cg)([r.sH], I.prototype, "m_ParentalSettings", void 0),
          (0, i.Cg)([r.sH], I.prototype, "m_ParentalState", void 0),
          (0, i.Cg)([r.XI], I.prototype, "UpdateParentalState", null),
          (0, i.Cg)([r.EW], I.prototype, "isEnabled", null),
          (0, i.Cg)([r.EW], I.prototype, "isLocked", null),
          (0, i.Cg)([r.EW], I.prototype, "locked", null);
        var w = n(48545),
          y = n(77522),
          E = n(42674),
          D = n(82924),
          A = n(50622),
          T = n(8805),
          M = n(34879);
        const R = new T.wd("FriendsUI/RemotePlay");
        class k {
          constructor() {
            (0, r.Gn)(this);
          }
          m_canCreateInviteForGame = r.sH.map();
          m_nonGuestSessions = r.sH.map();
          m_guestSessions = r.sH.map();
          m_controllerSlotPlayers = [];
          m_bIsShowingPlaceholder = !1;
          m_unGuestLinkCopied = 0;
          m_nGameVolume = -1;
          m_bAllowDesktopStream = !1;
          m_nHostStreamingQualityOverride = -1;
          m_nClientStreamingQuality = 2;
          m_nClientStreamingBitrate = -1;
          m_bIsHost = !1;
          m_sessionHost = null;
          m_strGameID = "";
          m_rgDialogCloseHandles = [];
          m_dialogContext = null;
          m_unNextGuestID = 1;
          Init(e) {
            R.Debug("RemotePlayStore Init"),
              (this.m_controllerSlotPlayers = new Array(20)),
              this.ClearControllerSlotPlayers(),
              o.TS.IN_CLIENT &&
                (SteamClient.RemotePlay.RegisterForSessionStarted((e, t, n) =>
                  this.SessionStarted({ steamid: e, guestid: n }, t),
                ),
                SteamClient.RemotePlay.RegisterForSessionStopped((e, t) =>
                  this.SessionStopped({ steamid: e, guestid: t }),
                ),
                SteamClient.RemotePlay.RegisterForSessionJoined((e, t, n) =>
                  this.SessionJoined({ steamid: e, guestid: t }, n),
                ),
                SteamClient.RemotePlay.RegisterForInputUsed((e, t, n) => {
                  this.PlayerUsedInput({ steamid: e, guestid: n }, t);
                }),
                SteamClient.RemotePlay.RegisterForPlayerInputSettingsChanged(
                  (e, t, n) => {
                    this.PlayerInputSettingsChanged(
                      { steamid: e, guestid: n },
                      t,
                    );
                  },
                ),
                SteamClient.RemotePlay.RegisterForPlaceholderStateChanged(
                  (e) => {
                    this.m_bIsShowingPlaceholder = e;
                  },
                ),
                SteamClient.RemotePlay.RegisterForClearControllers(() => {
                  this.ClearControllerSlotPlayers();
                }),
                SteamClient.RemotePlay.RegisterForControllerIndexSet(
                  (e, t, n) => {
                    this.ControllerIndexSet({ steamid: e, guestid: n }, t);
                  },
                ),
                SteamClient.RemotePlay.RegisterForQualityOverride(
                  (e) => (this.m_nHostStreamingQualityOverride = e),
                ),
                SteamClient.RemotePlay.RegisterForNetworkUtilizationUpdate(
                  this.OnNetworkUtilizationUpdate,
                ),
                SteamClient.RemotePlay.RegisterForInviteResult(
                  this.HandleLaunchResult,
                ),
                SteamClient.RemotePlay.RegisterForGroupDisbanded(
                  this.HandleGroupDisbanded,
                ),
                SteamClient.RemotePlay.RegisterForRemoteClientStopped(
                  this.HandleRemoteClientStopped,
                )),
              (0, r.fm)(() => {
                const e = te.FriendStore.self?.persona?.m_gameid;
                null != e &&
                  (this.m_canCreateInviteForGame.has(e) ||
                    this.BCanCreateInviteForGame(e, !1).then((t) => {
                      this.m_canCreateInviteForGame.set(e, t);
                    }));
              });
          }
          async BCanCreateInviteForGame(e, t) {
            return (
              !!(0, E.Dp)("RemotePlay.BCanCreateInviteForGame") &&
              SteamClient.RemotePlay.BCanCreateInviteForGame(e, t)
            );
          }
          async BCanAcceptInviteForGame(e, t) {
            return (0, E.Dp)("RemotePlay.BCanAcceptInviteForGame")
              ? SteamClient.RemotePlay.BCanAcceptInviteForGame(e, t)
              : !o.TS.COUNTRY || -1 === t.indexOf(o.TS.COUNTRY);
          }
          BCanCreateInviteForCurrentGame() {
            const e = te.FriendStore.self?.persona?.m_gameid;
            return this.m_canCreateInviteForGame.get(e);
          }
          BShowQuickAccessControls() {
            return this.BCanCreateInviteForCurrentGame() || this.in_session;
          }
          HasInviteAndSession(e) {
            let t = l.b.InitFromAccountID(e).ConvertTo64BitString();
            if (
              this.m_nonGuestSessions.has(t) &&
              this.m_nonGuestSessions.get(t).bSession
            )
              return !0;
            let n = !1;
            return (
              this.m_guestSessions.forEach(
                ({ playerID: { steamid: e } }) => (n = n || t === e),
              ),
              n
            );
          }
          HasInviteAndSessionForGameIDOtherThan(e) {
            let t = !1;
            return (
              this.GetAllSessions().forEach((n) => {
                n.bSession && n.gameID !== e && void 0 !== n.gameID && (t = !0);
              }),
              t
            );
          }
          GetPlayerPropsIndexOf(e) {
            return this.GetAllSessions().findIndex((t) => L(e, t.playerID));
          }
          GetPlayerPropsByIndex(e) {
            return this.GetAllSessions()[e];
          }
          get player_props_count() {
            return this.m_nonGuestSessions.size + this.m_guestSessions.size;
          }
          ClearControllerSlotPlayers() {
            for (let e = 0; e < this.m_controllerSlotPlayers.length; ++e)
              this.m_controllerSlotPlayers[e] = null;
          }
          ClearControllerSlotsWithPlayer(e) {
            for (let t = 0; t < this.m_controllerSlotPlayers.length; ++t)
              L(e, this.m_controllerSlotPlayers[t]) &&
                (this.m_controllerSlotPlayers[t] = null);
          }
          SetPlayerInControllerSlot(e, t) {
            e < 0 ||
              e >= this.m_controllerSlotPlayers.length ||
              (this.m_controllerSlotPlayers[e] = t);
          }
          GetPlayerInControllerSlot(e) {
            return e < 0 || e >= this.m_controllerSlotPlayers.length
              ? null
              : this.m_controllerSlotPlayers[e];
          }
          GetControllerSlotsForPlayer(e) {
            return this.m_controllerSlotPlayers
              .map((t, n) => (L(t, e) ? n : null))
              .filter((e) => null !== e);
          }
          async GetControllerType(e) {
            return SteamClient.RemotePlay.GetControllerType(e);
          }
          RemoveControllerFromPrioritySlot(e) {
            const t =
              this.m_controllerSlotPlayers
                .slice(this.priority_controller_slot_count)
                .findIndex((e) => null === e) +
              this.priority_controller_slot_count;
            -1 === t
              ? (R.Error(
                  "[RPT] No empty controller slots found in RemoveControllerFromPrioritySlot. Swapping with another non-priority controller.",
                ),
                this.SwapControllerSlots(
                  e,
                  this.priority_controller_slot_count,
                ))
              : this.SwapControllerSlots(e, t);
          }
          SwapControllerSlots(e, t, n = !0) {
            return (
              !(
                e == t ||
                t < 0 ||
                t > this.m_controllerSlotPlayers.length - 1
              ) &&
              (SteamClient.RemotePlay.MoveControllerToSlot(e, t),
              n &&
                (this.TriggerControllerRumble(e),
                this.TriggerControllerRumble(t)),
              !0)
            );
          }
          TriggerControllerRumble(e) {
            SteamClient.RemotePlay.IdentifyController(e);
          }
          get priority_controller_slot_count() {
            return 4;
          }
          get bIsShowingPlaceholder() {
            return this.m_bIsShowingPlaceholder;
          }
          CreateInviteAndSession(e, t, n) {
            if (
              (R.Debug(`CreateInviteAndSession for accountid ${e}`),
              (this.m_dialogContext = n),
              !e)
            )
              return (
                R.Error(
                  "RemotePlayStore.CreateInviteAndSession called with invalid accountid. Did you mean to call CreateGuestInviteAndSession?",
                ),
                this.CreateGuestInviteAndSession(t, n)
              );
            const i = l.b.InitFromAccountID(e);
            return SteamClient.RemotePlay.CreateInviteAndSession(
              i.ConvertTo64BitString(),
              t,
            );
          }
          GetNextGuestID() {
            return this.m_unNextGuestID++;
          }
          CreateGuestInviteAndSession(e, t) {
            R.Debug("CreateGuestInviteAndSession"), (this.m_dialogContext = t);
            const n = l.b.InitFromAccountID(0);
            return SteamClient.RemotePlay.CreateInviteAndSessionWithGuestID(
              n.ConvertTo64BitString(),
              this.GetNextGuestID(),
              e,
            );
          }
          async CreateGuestInviteAndCopyLink(e, t) {
            R.Debug("CreateGuestInviteAndCopyLink"), (this.m_dialogContext = t);
            const n = l.b.InitFromAccountID(0),
              i = this.GetNextGuestID(),
              o =
                await SteamClient.RemotePlay.CreateInviteAndSessionWithGuestID(
                  n.ConvertTo64BitString(),
                  i,
                  e,
                );
            return 0 != o
              ? (R.Error(`Failed to create guest invite: ${o}`), o)
              : (await (0, r.z7)(() => {
                  const e = this.m_guestSessions.get(i);
                  return e && !!e.strConnectUrl;
                }),
                this.CopyLink(i),
                o);
          }
          CancelInviteAndSession(e) {
            R.Debug(`CancelInviteAndSession for accountid ${e}`),
              e ||
                R.Error(
                  "RemotePlayStore.CancelInviteAndSession called with invalid accountid. Did you mean to call CancelGuestInviteAndSession()?",
                );
            const t = l.b.InitFromAccountID(e);
            return SteamClient.RemotePlay.CancelInviteAndSessionWithGuestID(
              t.ConvertTo64BitString(),
              0,
            );
          }
          CancelGuestInviteAndSession(e, t) {
            return (
              R.Debug(`CancelGuestInviteAndSession for guestid ${t}`),
              SteamClient.RemotePlay.CancelInviteAndSessionWithGuestID(e, t)
            );
          }
          CancelAllInvitesAndSessions() {
            R.Debug("CancelAllInvitesAndSessions"),
              this.GetAllSessions().forEach((e) =>
                SteamClient.RemotePlay.CancelInviteAndSessionWithGuestID(
                  e.playerID.steamid,
                  e.playerID.guestid,
                ),
              );
          }
          StopStreamingClient() {
            SteamClient.RemotePlay.StopStreamingClient();
          }
          SetStreamingDesktopToRemotePlayTogetherEnabled(e) {
            return (
              (this.m_bAllowDesktopStream = e),
              SteamClient.RemotePlay.SetStreamingDesktopToRemotePlayTogetherEnabled(
                e,
              )
            );
          }
          SetPerUserKeyboardInputEnabled(e, t) {
            return SteamClient.RemotePlay.SetPerUserKeyboardInputEnabledWithGuestID(
              e.steamid,
              e.guestid,
              t,
            );
          }
          SetPerUserMouseInputEnabled(e, t) {
            return SteamClient.RemotePlay.SetPerUserMouseInputEnabledWithGuestID(
              e.steamid,
              e.guestid,
              t,
            );
          }
          SetPerUserControllerInputEnabled(e, t) {
            return SteamClient.RemotePlay.SetPerUserControllerInputEnabledWithGuestID(
              e.steamid,
              e.guestid,
              t,
            );
          }
          async GetPerUserInputSettings(e) {
            return SteamClient.RemotePlay.GetPerUserInputSettingsWithGuestID(
              e.steamid,
              e.guestid,
            );
          }
          BHasGuestPlayer() {
            if (0 === this.m_guestSessions.size) return !1;
            let e = !1;
            return (
              this.m_guestSessions.forEach(({ bSession: t }) => (e = e || t)), e
            );
          }
          BHasPlayer() {
            if (
              0 === this.m_nonGuestSessions.size &&
              0 === this.m_guestSessions.size
            )
              return !1;
            let e = !1;
            return (
              this.m_nonGuestSessions.forEach(
                ({ bSession: t }) => (e = e || t),
              ),
              this.m_guestSessions.forEach(({ bSession: t }) => (e = e || t)),
              e
            );
          }
          BHasJoinedPlayer() {
            if (
              0 === this.m_nonGuestSessions.size &&
              0 === this.m_guestSessions.size
            )
              return !1;
            let e = !1;
            return (
              this.m_nonGuestSessions.forEach((t) => (e = e || t?.bJoined)),
              this.m_guestSessions.forEach((t) => (e = e || t?.bJoined)),
              e
            );
          }
          OnGroupCreated(e, t, n) {
            R.Debug(`OnGroupCreated - ${e.steamid64} - ${n}`),
              (this.m_sessionHost = e),
              (this.m_bIsHost = t),
              (this.m_strGameID = n);
          }
          SessionStarted(e, t) {
            R.Debug(`SessionStarted: ${JSON.stringify(e)}`),
              "number" == typeof e.guestid &&
                (this.m_unNextGuestID = Math.max(
                  this.m_unNextGuestID,
                  e.guestid + 1,
                ));
            let n = this.GetSessionForPlayer(e);
            if (void 0 === n) {
              let i = new l.b(e.steamid).GetAccountID();
              const o = !!e.guestid;
              (n = {
                playerID: e,
                friend: te.FriendStore.GetPlayer(i),
                gameID: t,
                bSession: !0,
                bJoined: !1,
                bMobile: !1,
                bKeyboardEnabled: !0,
                bMouseEnabled: !0,
                bControllerEnabled: !0,
                nKeyboardUsedTime: 0,
                nMouseUsedTime: 0,
                nControllerUsedTime: 0,
                bGuest: o,
                strConnectUrl: o ? "" : void 0,
              }),
                this.GetPerUserInputSettings(e)
                  .then((t) => {
                    this.PlayerInputSettingsChanged(e, t);
                  })
                  .catch(),
                n.friend.LoadIfNecessary(),
                e.guestid
                  ? this.m_guestSessions.set(e.guestid, n)
                  : this.m_nonGuestSessions.set(e.steamid, n);
            } else n.bSession = !0;
          }
          GetSessionForPlayer(e) {
            return e.guestid
              ? this.m_guestSessions.get(e.guestid)
              : this.m_nonGuestSessions.get(e.steamid);
          }
          ClearSessionForPlayer(e) {
            e.guestid
              ? this.m_guestSessions.delete(e.guestid)
              : this.m_nonGuestSessions.delete(e.steamid);
          }
          GetAllSessions() {
            return [
              ...Array.from(this.m_nonGuestSessions.values()),
              ...Array.from(this.m_guestSessions.values()),
            ];
          }
          SessionStopped(e) {
            R.Debug(`SessionStopped: ${JSON.stringify(e)}`),
              this.GetSessionForPlayer(e) &&
                (this.ClearSessionForPlayer(e),
                te.AudioPlaybackManager.PlayAudioURL(
                  o.TS.COMMUNITY_CDN_URL +
                    "public/sounds/webui/steam_rpt_leave.m4a",
                )),
              this.ClearControllerSlotsWithPlayer(e);
          }
          SessionJoined(e, t) {
            R.Debug(`SessionJoined: ${JSON.stringify(e)} - ${t}`);
            let n = this.GetSessionForPlayer(e);
            if (void 0 === n) return;
            if (!0 === n.bJoined) return;
            (n.bJoined = !0),
              (n.rtJoined = Date.now() / 1e3),
              (n.strAvatarHash = t),
              SteamClient.RemotePlay.BRemotePlayTogetherGuestOnPhoneOrTablet(
                e.steamid,
                e.guestid,
              ).then((e) => (n.bMobile = e));
            let i = new l.b(e.steamid).GetAccountID();
            0 != i &&
              (e.guestid &&
                n.playerID.steamid !== e.steamid &&
                ((n.playerID = e), (n.friend = te.FriendStore.GetPlayer(i))),
              i !== te.FriendStore.self.accountid &&
                te.AudioPlaybackManager.PlayAudioURL(
                  o.TS.COMMUNITY_CDN_URL +
                    "public/sounds/webui/steam_rpt_join.m4a",
                ));
          }
          PlayerUsedInput(e, t) {
            let n = this.GetSessionForPlayer(e);
            if (void 0 !== n)
              switch (t) {
                case w.YI.k_EClientUsedInputTypeKeyboard:
                  n.nKeyboardUsedTime = Date.now();
                  break;
                case w.YI.k_EClientUsedInputTypeMouse:
                  n.nMouseUsedTime = Date.now();
                  break;
                case w.YI.k_EClientUsedInputTypeController:
                  n.nControllerUsedTime = Date.now();
              }
          }
          PlayerInputSettingsChanged(e, t) {
            let n = this.GetSessionForPlayer(e);
            void 0 !== n &&
              ((n.bKeyboardEnabled = t.bKeyboardEnabled),
              (n.bMouseEnabled = t.bMouseEnabled),
              (n.bControllerEnabled = t.bControllerEnabled));
          }
          ControllerIndexSet(e, t) {
            R.Debug(`ControllerIndexSet: ${t} - ${JSON.stringify(e)}`),
              this.SetPlayerInControllerSlot(t, e);
          }
          HandleLaunchResult(e, t, n, i, o, r) {
            this.m_strGameID = t;
            const a = { steamid: e, guestid: r };
            if (
              (R.Debug(`HandleLaunchResult: ${JSON.stringify(a)}`),
              n === y.l.k_ERemoteClientLaunchOK)
            ) {
              if ((this.GetSessionSettings(), a.guestid)) {
                const e = this.GetSessionForPlayer(a);
                e && e.bGuest
                  ? (e.strConnectUrl = o)
                  : R.Error(
                      "Got remote play launch result for unknown guest session!",
                    );
              }
            } else this.m_unGuestLinkCopied = 0;
          }
          OnNetworkUtilizationUpdate(e, t, n, i) {
            const o = this.GetSessionForPlayer({ steamid: e, guestid: t });
            o && ((o.flNetworkUtilization = n), (o.flNetworkDuration = i));
          }
          HandleGroupDisbanded() {
            R.Debug("HandleGroupDisbanded"), this.Reset();
          }
          Reset() {
            R.Debug("Resetting."),
              this.CloseRemotePlayTogetherDialogs(),
              this.m_guestSessions.clear(),
              this.m_nonGuestSessions.clear(),
              (this.m_unGuestLinkCopied = 0),
              (this.m_strGameID = ""),
              (this.m_sessionHost = null),
              (this.m_bIsHost = !1),
              (this.m_unNextGuestID = 1),
              (this.m_dialogContext = null),
              (this.m_rgDialogCloseHandles = []);
          }
          HandleRemoteClientStopped(e, t) {
            this.Reset();
          }
          CloseRemotePlayTogetherDialogs() {
            if (
              (R.Debug(
                "CloseRemotePlayTogetherDialogs. Have any dialog close handles? " +
                  (this.m_rgDialogCloseHandles.length > 0 ? "Yes" : "No"),
              ),
              this.m_rgDialogCloseHandles.length > 0)
            ) {
              const e = this.m_rgDialogCloseHandles;
              (this.m_rgDialogCloseHandles = []), e.forEach(([e, t]) => t());
            }
          }
          async StopRemotePlay() {
            R.Debug("StopRemotePlay"),
              await SteamClient.RemotePlay.CloseGroup(),
              this.Reset();
          }
          CopyLink(e) {
            const t = this.m_guestSessions.get(e);
            t && t.bGuest
              ? (A.YQ(t.strConnectUrl), (this.m_unGuestLinkCopied = e))
              : R.Error("Cannot find guest session for copying link");
          }
          get link_copied_for_guest() {
            return this.m_unGuestLinkCopied;
          }
          get game_volume() {
            return this.m_nGameVolume;
          }
          SetGameVolume(e) {
            SteamClient.RemotePlay.SetGameSystemVolume(e),
              (this.m_nGameVolume = e);
          }
          get client_streaming_quality() {
            return this.m_nClientStreamingQuality;
          }
          get host_streaming_quality_override() {
            return this.m_nHostStreamingQualityOverride;
          }
          SetClientStreamingQuality(e) {
            SteamClient.RemotePlay.SetClientStreamingQuality(e),
              (this.m_nClientStreamingQuality = e);
          }
          get client_streaming_bitrate() {
            return this.m_nClientStreamingBitrate;
          }
          SetClientStreamingBitrate(e) {
            SteamClient.RemotePlay.SetClientStreamingBitrate(e),
              (this.m_nClientStreamingBitrate = e);
          }
          get allow_desktop_stream() {
            return this.m_bAllowDesktopStream;
          }
          get is_host() {
            return this.m_bIsHost;
          }
          get host() {
            return this.m_sessionHost;
          }
          get in_session() {
            return null != this.m_sessionHost;
          }
          DialogOpened(e, t, n) {
            this.m_rgDialogCloseHandles.push([e, t, n]);
          }
          DialogClosed(e, t) {
            this.m_rgDialogCloseHandles = this.m_rgDialogCloseHandles.filter(
              ([n, i, o]) => !(0, M.u)(n, e) || o != t,
            );
          }
          BDialogOpenInContext(e, t) {
            return this.m_rgDialogCloseHandles.some(
              ([n, i, o]) => (0, M.u)(n, e) && (null == t || o == t),
            );
          }
          get dialog_context() {
            return this.m_dialogContext;
          }
          get game_id() {
            return this.m_strGameID;
          }
          RemoteClientStarted(e, t, n) {
            (this.m_sessionHost = e),
              (this.m_bIsHost = t),
              (this.m_strGameID = n),
              this.GetSessionSettings();
          }
          GetSessionSettings() {
            SteamClient.RemotePlay.GetGameSystemVolume().then(
              (e) => (this.m_nGameVolume = e),
            ),
              SteamClient.RemotePlay.GetClientStreamingQuality().then(
                (e) => (this.m_nClientStreamingQuality = e),
              ),
              SteamClient.RemotePlay.GetClientStreamingBitrate().then(
                (e) => (this.m_nClientStreamingBitrate = e),
              );
          }
        }
        function L(e, t) {
          return e?.steamid === t?.steamid && e?.guestid === t?.guestid;
        }
        (0, i.Cg)([r.sH], k.prototype, "m_controllerSlotPlayers", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_bIsShowingPlaceholder", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_unGuestLinkCopied", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_nGameVolume", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_bAllowDesktopStream", void 0),
          (0, i.Cg)(
            [r.sH],
            k.prototype,
            "m_nHostStreamingQualityOverride",
            void 0,
          ),
          (0, i.Cg)([r.sH], k.prototype, "m_nClientStreamingQuality", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_nClientStreamingBitrate", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_bIsHost", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_sessionHost", void 0),
          (0, i.Cg)([r.sH], k.prototype, "m_strGameID", void 0),
          (0, i.Cg)([r.XI], k.prototype, "Init", null),
          (0, i.Cg)([r.EW], k.prototype, "player_props_count", null),
          (0, i.Cg)([r.EW], k.prototype, "bIsShowingPlaceholder", null),
          (0, i.Cg)([r.XI], k.prototype, "SessionStopped", null),
          (0, i.Cg)([r.XI], k.prototype, "SessionJoined", null),
          (0, i.Cg)([r.XI], k.prototype, "PlayerInputSettingsChanged", null),
          (0, i.Cg)([D.oI], k.prototype, "HandleLaunchResult", null),
          (0, i.Cg)([D.oI], k.prototype, "OnNetworkUtilizationUpdate", null),
          (0, i.Cg)([D.oI], k.prototype, "HandleGroupDisbanded", null),
          (0, i.Cg)([r.XI], k.prototype, "Reset", null),
          (0, i.Cg)([D.oI], k.prototype, "HandleRemoteClientStopped", null),
          (0, i.Cg)([D.oI], k.prototype, "SetClientStreamingQuality", null);
        var G = n(32965),
          F = n(28776),
          P = n(84046),
          B = n(77765);
        class x {
          m_bReady = !1;
          m_FriendsSettings = void 0;
          m_CommunityPreferences = void 0;
          m_StorePreferences = void 0;
          m_bSteamIsInTournamentMode = !1;
          m_ServerCommunityPreferences;
          m_unTimerUploadCommunityPreferences = void 0;
          m_CM;
          m_rgOnReadyCallbacks = [];
          m_iFriendSettingsStore;
          m_bFriendSettingsReady = !1;
          m_Storage;
          constructor(e) {
            (0, r.Gn)(this),
              (this.m_Storage = e),
              o.TS.IN_CLIENT
                ? (this.m_iFriendSettingsStore = new N(
                    this,
                    this.OnFriendSettingsChanged.bind(this),
                  ))
                : (this.m_iFriendSettingsStore = new V(
                    this,
                    this.OnFriendSettingsChanged.bind(this),
                  )),
              (this.m_bSteamIsInTournamentMode = !1),
              o.TS.IN_CLIENT &&
                SteamClient.System.IsSteamInTournamentMode().then(
                  (e) => (this.m_bSteamIsInTournamentMode = e),
                );
            {
              let e = new F.B4();
              this.m_CommunityPreferences = {
                bParenthesizeNicknames: e.parenthesize_nicknames(),
                eTextFilterSetting: e.text_filter_setting(),
                bTextFilterIgnoreFriends: e.text_filter_ignore_friends(),
                content_descriptor_preferences: {
                  content_descriptors_to_exclude: [],
                },
              };
            }
            this.m_ServerCommunityPreferences = void 0;
          }
          Init(e) {
            (this.m_CM = e),
              this.m_CM.AddOnLogonCallback(() => {
                this.m_bReady ||
                  (this.m_iFriendSettingsStore.InternalInit(), this.SetReady());
                let e = s.w.Init(P.xf);
                P.nd
                  .GetStorePreferences(this.m_CM.GetServiceTransport(), e)
                  .then((e) => {
                    this.m_StorePreferences = e.Body();
                  });
                let t = s.w.Init(F.tz);
                return F.xt
                  .GetCommunityPreferences(this.m_CM.GetServiceTransport(), t)
                  .then((e) =>
                    this.UpdateCommunityPreferences(e.Body().preferences()),
                  );
              }),
              this.m_CM.messageHandlers.RegisterServiceNotificationHandlerAction(
                F.QA.NotifyCommunityPreferencesChangedHandler,
                (e) => (
                  this.UpdateCommunityPreferences(e.Body().preferences()), 1
                ),
              );
          }
          BReady() {
            return this.m_bReady;
          }
          get FriendsSettings() {
            return this.m_FriendsSettings;
          }
          BUpdateFriendsSettings(e) {
            return (
              !!this.m_iFriendSettingsStore.BUpdateSettings(e) &&
              ((this.m_FriendsSettings = e), !0)
            );
          }
          BClientHasFeatureOrOnWeb(e) {
            return (
              !o.TS.IN_CLIENT ||
              (!!this.BReady() &&
                "object" == typeof this.m_FriendsSettings.featuresEnabled &&
                  !!this.m_FriendsSettings.featuresEnabled.hasOwnProperty(e) &&
                this.m_FriendsSettings.featuresEnabled[e])
            );
          }
          IsSteamInTournamentMode() {
            return this.m_bSteamIsInTournamentMode;
          }
          BAlwaysShowChatsInNewWindow() {
            return this.m_FriendsSettings.bAlwaysNewChatWindow;
          }
          BSingleWindowModeEnabled() {
            return !!this.m_FriendsSettings.bSingleWindowMode;
          }
          BackfillSingleWindowMode(e) {
            void 0 === this.m_FriendsSettings.bSingleWindowMode &&
              (console.log("Performing single window mode backfill", e),
              this.SetSingleWindowMode(e));
          }
          SetSingleWindowMode(e) {
            (this.m_FriendsSettings.bSingleWindowMode = e),
              this.BUpdateFriendsSettings(this.m_FriendsSettings);
          }
          BForceAlphabeticFriendSorting() {
            return this.m_FriendsSettings.bForceAlphabeticFriendSorting;
          }
          RunOnReady(e) {
            this.m_bReady ? e() : this.m_rgOnReadyCallbacks.push(e);
          }
          GetAccountSpecificLocalStorageKey(e) {
            return this.m_CM &&
              this.m_CM.steamid &&
              this.m_CM.steamid.BIsValid()
              ? e + "_" + this.m_CM.steamid.GetAccountID()
              : null;
          }
          async GetObjectFromLocalStorageWhenReady(e, t) {
            return await this.WhenReady(), this.GetObjectFromLocalStorage(e, t);
          }
          GetObjectFromLocalStorage(e, t) {
            let n = this.GetAccountSpecificLocalStorageKey(e);
            return n
              ? this.m_Storage.GetObject(n).then((e) => {
                  let n = Object.assign({}, t, e);
                  if (t && "object" == typeof t)
                    for (let i in t)
                      "object" == typeof t[i] &&
                        e &&
                        (n[i] = Object.assign({}, t[i], e[i]));
                  return n;
                })
              : Promise.reject("Storage not ready");
          }
          StoreObjectInLocalStorage(e, t) {
            let n = this.GetAccountSpecificLocalStorageKey(e);
            return !!n && (this.m_Storage.StoreObject(n, t), !0);
          }
          async GetFlagFromLocalStorageWhenReady(e) {
            return await this.WhenReady(), this.GetFlagFromLocalStorage(e);
          }
          GetFlagFromLocalStorage(e) {
            let t = this.GetAccountSpecificLocalStorageKey(e);
            return t
              ? this.m_Storage.GetString(t).then((e) => "true" === e)
              : Promise.reject("Storage not ready");
          }
          SetFlagInLocalStorage(e, t) {
            let n = this.GetAccountSpecificLocalStorageKey(e);
            return (
              !!n &&
              (t
                ? this.m_Storage.StoreString(n, "true")
                : this.m_Storage.RemoveObject(n),
              !0)
            );
          }
          BFlagExistsInLocalStorage(e) {
            const t = this.GetAccountSpecificLocalStorageKey(e);
            return t
              ? this.m_Storage.GetString(t).then((e) => null !== e)
              : Promise.reject("Storage not ready");
          }
          WhenReady() {
            return this.m_bReady
              ? Promise.resolve()
              : new Promise((e) => this.RunOnReady(e));
          }
          SetReady() {
            if (
              this.m_bFriendSettingsReady &&
              this.m_CM &&
              this.m_CM.steamid.BIsValid()
            ) {
              this.m_bReady = !0;
              for (let e of this.m_rgOnReadyCallbacks) e();
              this.m_rgOnReadyCallbacks = [];
            }
          }
          OnFriendSettingsChanged(e) {
            (this.m_FriendsSettings = e),
              (this.m_bFriendSettingsReady = !0),
              this.SetReady();
          }
          get CommunityPreferences() {
            return this.m_CommunityPreferences;
          }
          UpdateCommunityPreferences(e) {
            let t = { ...this.m_CommunityPreferences };
            void 0 !== e.parenthesize_nicknames() &&
              (t.bParenthesizeNicknames = e.parenthesize_nicknames()),
              (this.m_ServerCommunityPreferences = { ...t }),
              (this.m_CommunityPreferences = t);
          }
          CommunityPreferencesToMessage(e) {
            let t = new F.B4();
            return t.set_parenthesize_nicknames(e.bParenthesizeNicknames), t;
          }
          SetCommunityPreferences(e) {
            (this.m_CommunityPreferences = e),
              (0, E.Dp)("Messaging.PostMessage") &&
                SteamClient.Messaging.PostMessage(
                  "Settings",
                  "CommunityPreferences",
                  JSON.stringify(e),
                ),
              this.m_unTimerUploadCommunityPreferences &&
                clearTimeout(this.m_unTimerUploadCommunityPreferences),
              (this.m_unTimerUploadCommunityPreferences = SetBackgroundTimeout(
                () => {
                  (this.m_unTimerUploadCommunityPreferences = void 0),
                    this.UploadCommunityPreferences();
                },
                5e3,
              ));
          }
          UploadCommunityPreferences() {
            let e = !1;
            if (void 0 === this.m_ServerCommunityPreferences) e = !0;
            else
              for (let t of Object.keys(this.m_ServerCommunityPreferences))
                if (
                  this.m_ServerCommunityPreferences[t] !==
                  this.CommunityPreferences[t]
                ) {
                  e = !0;
                  break;
                }
            if (!e) return;
            let t = s.w.Init(F.pr);
            t
              .Body()
              .set_preferences(
                this.CommunityPreferencesToMessage(this.CommunityPreferences),
              ),
              F.xt
                .SetCommunityPreferences(this.m_CM.GetServiceTransport(), t)
                .then((e) => {});
          }
          get StorePreferences() {
            return this.m_StorePreferences;
          }
          FillInChatUsabilityMetrics(e) {
            let t = e.settings(),
              n = this.FriendsSettings;
            t.set_notifications_show_ingame(n.bNotifications_ShowIngame),
              t.set_notifications_show_online(n.bNotifications_ShowOnline),
              t.set_notifications_show_message(n.bNotifications_ShowMessage),
              t.set_notifications_events_and_announcements(
                n.bNotifications_EventsAndAnnouncements,
              ),
              t.set_sounds_play_ingame(n.bSounds_PlayIngame),
              t.set_sounds_play_online(n.bSounds_PlayOnline),
              t.set_sounds_play_message(n.bSounds_PlayMessage),
              t.set_sounds_events_and_announcements(
                n.bSounds_EventsAndAnnouncements,
              ),
              t.set_always_new_chat_window(n.bAlwaysNewChatWindow),
              t.set_force_alphabetic_friend_sorting(
                n.bForceAlphabeticFriendSorting,
              ),
              t.set_chat_flash_mode(n.nChatFlashMode),
              t.set_remember_open_chats(n.bRememberOpenChats),
              t.set_compact_quick_access(n.bCompactQuickAccess),
              t.set_compact_friends_list(n.bCompactFriendsList),
              t.set_notifications_show_chat_room_notification(
                n.bNotifications_ShowChatRoomNotification,
              ),
              t.set_sounds_play_chat_room_notification(
                n.bSounds_PlayChatRoomNotification,
              ),
              t.set_hide_offline_friends_in_tag_groups(
                n.bHideOfflineFriendsInTagGroups,
              ),
              t.set_hide_categorized_friends(n.bHideCategorizedFriends),
              t.set_categorize_in_game_friends_by_game(
                n.bCategorizeInGameFriendsByGame,
              ),
              t.set_chat_font_size(n.nChatFontSize),
              t.set_use24hour_clock(n.b24HourClock),
              t.set_do_not_disturb_mode(n.bDoNotDisturbMode),
              t.set_disable_embed_inlining(n.bDisableEmbedInlining),
              t.set_sign_into_friends(n.bSignIntoFriends),
              t.set_animated_avatars(n.bAnimatedAvatars);
          }
        }
        (0, i.Cg)([r.sH], x.prototype, "m_bReady", void 0),
          (0, i.Cg)([r.sH], x.prototype, "m_FriendsSettings", void 0),
          (0, i.Cg)([r.sH], x.prototype, "m_CommunityPreferences", void 0),
          (0, i.Cg)([r.sH], x.prototype, "m_StorePreferences", void 0),
          (0, i.Cg)([r.sH], x.prototype, "m_bSteamIsInTournamentMode", void 0),
          (0, i.Cg)([r.XI], x.prototype, "BUpdateFriendsSettings", null),
          (0, i.Cg)([r.XI], x.prototype, "UpdateCommunityPreferences", null),
          (0, i.Cg)([r.XI], x.prototype, "SetCommunityPreferences", null);
        class O {
          m_SettingsStore;
          m_fnFriendSettingsChanged;
          constructor(e, t) {
            (this.m_SettingsStore = e), (this.m_fnFriendSettingsChanged = t);
          }
        }
        class N extends O {
          m_bClientInitComplete = !1;
          constructor(e, t) {
            super(e, t), this.InternalInit();
          }
          InternalInit() {
            this.m_bClientInitComplete ||
              (SteamClient &&
              SteamClient.FriendSettings &&
              SteamClient.FriendSettings.RegisterForSettingsChanges
                ? (SteamClient.FriendSettings.RegisterForSettingsChanges(
                    this.OnClientSettingsChange.bind(this),
                  ),
                  (this.m_bClientInitComplete = !0))
                : (0, B.w)(!1, "Can't initialize settings from client"));
          }
          OnClientSettingsChange(e) {
            let t,
              n = G.u();
            if ("string" != typeof e) {
              if (
                ((t = e.FriendsSettings),
                SteamClient.FriendSettings &&
                  SteamClient.FriendSettings.SetFriendSettings)
              )
                return void this.BUpdateSettings(t);
            } else
              t = JSON.parse(e, (e, t) =>
                "b" == e.substring(0, 1) && "number" == typeof t ? 0 != t : t,
              );
            Object.assign(n, t), this.m_fnFriendSettingsChanged(n);
          }
          BUpdateSettings(e) {
            let t = JSON.stringify(e);
            return SteamClient.FriendSettings.SetFriendSettings(t), !0;
          }
        }
        class V extends O {
          static k_strLocalStorageKeyPrefix = "LocalStorageFriendsSettings";
          InternalInit() {
            this.m_SettingsStore
              .GetObjectFromLocalStorage(
                V.k_strLocalStorageKeyPrefix,
                this.GetDefaultSettings(),
              )
              .then((e) => {
                this.m_fnFriendSettingsChanged(e.friendsSettings);
              });
          }
          GetDefaultSettings() {
            return { friendsSettings: G.u() };
          }
          BUpdateSettings(e) {
            let t = { friendsSettings: e };
            return this.m_SettingsStore.StoreObjectInLocalStorage(
              V.k_strLocalStorageKeyPrefix,
              t,
            );
          }
        }
        var U = n(53819);
        class H {
          constructor() {
            (0, r.Gn)(this);
          }
          m_CMInterface;
          m_PrivacySettings = {
            privacy_state: 0,
            privacy_state_inventory: 0,
            privacy_state_gifts: 0,
            privacy_state_ownedgames: 0,
            privacy_state_playtime: 0,
            privacy_state_friendslist: 0,
          };
          Init(e) {
            (this.m_CMInterface = e),
              this.m_CMInterface.RunWhenLoggedOn(async () => {
                let e = s.w.Init(F.be),
                  t = await F.xt.GetPrivacySettings(
                    this.m_CMInterface.GetServiceTransport(),
                    e,
                  );
                1 == t.GetEResult() &&
                  this.ReadPrivacySettings(t.Body().privacy_settings());
              }),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandlerAction(
                F.QA.NotifyPrivacyPrivacySettingsChangedHandler,
                (e) => (
                  this.ReadPrivacySettings(e.Body().privacy_settings()), 1
                ),
              );
          }
          get PrivacySettings() {
            return this.m_PrivacySettings;
          }
          ReadPrivacySettings(e) {
            Object.assign(this.m_PrivacySettings, e.toObject());
          }
        }
        (0, i.Cg)([r.sH], H.prototype, "m_PrivacySettings", void 0);
        var W = n(27828),
          z = n(2836),
          j = n(73880),
          q = n(49106);
        function K(e, t) {
          return `${e} - ${(performance.now() - t).toLocaleString()}ms`;
        }
        var Z = n(90095);
        function Q(e, t) {
          return function (...t) {
            te.ready_to_render
              ? e.apply(this, t)
              : (0, r.z7)(
                  () => te.ready_to_render,
                  () => {
                    e.apply(this, t);
                  },
                );
          };
        }
        function $(e, t, n) {
          return { value: Q(n.value) };
        }
        function X(e) {
          return Q(e, e.name);
        }
        class Y {}
        class J {}
        class ee {
          m_CMInterface;
          m_BrowserContextDefaultTarget = M.m;
          m_ChatRoomBBCodeParser;
          m_FriendChatBBCodeParser;
          m_NotificationBBCodeParser;
          m_ChatRoomEffectSettings;
          m_FriendStore;
          m_ChatStore;
          m_UIStore;
          m_Storage;
          m_SettingsStore;
          m_AppInfoStore = z.Vw;
          m_NotificationManager;
          m_EconomyStore = new _();
          m_UserStore = new H();
          m_VoiceChatStore;
          m_ParentalStore = new I();
          m_BroadcastStore = new m();
          m_GroupMemberStore = new C.me();
          m_RemotePlayStore = new k();
          m_CookiePreferenceStore;
          m_bReadyToRender = !1;
          static sm_msStartup = performance.now();
          m_bShuttingDown = !1;
          m_exportsCurrentUserStatus;
          m_exportsVoiceInterface = null;
          constructor(e, t = {}) {
            (0, r.Gn)(this),
              (0, B.w)(!te, "FriendsUIApp already initialized"),
              (te = this),
              (window.g_FriendsUIApp = this),
              (this.m_Storage = e),
              (this.m_SettingsStore = t.SettingsStore || new x(e)),
              (this.m_FriendStore = t.FriendStore || new g.VT()),
              (this.m_ChatStore = t.ChatStore || new u.fl(this.m_FriendStore)),
              (this.m_UIStore = t.UIStore || new U.Vi(this.m_ChatStore)),
              (this.m_VoiceChatStore = new W.F$(this.m_SettingsStore)),
              (this.m_exportsCurrentUserStatus = {
                GetPersonaState: () =>
                  this.FriendStore.self
                    ? this.FriendStore.self.persona.m_ePersonaState
                    : 0,
                SetUserOnline: () => this.FriendStore.SetUserPersonaState(1),
                SetUserInvisible: () => this.FriendStore.SetUserPersonaState(7),
                SetUserAway: () => this.FriendStore.SetUserPersonaState(3),
                SetUserOffline: () => {
                  this.SignOutOfFriends(M.m),
                    this.FriendStore.SetUserPersonaState(0);
                },
                GetUserDoNotDisturb: () =>
                  this.FriendStore.GetUserDoNotDisturb(),
                SetUserDoNotDisturb: (e) =>
                  this.FriendStore.SetUserDoNotDisturb(e),
              }),
              (this.m_exportsVoiceInterface = {
                IsAnyVoiceActive: () => this.VoiceStore.IsAnyVoiceActive(),
                IsMicMuted: () => this.VoiceStore.IsMicMuted(),
                IsOutputMuted: () => this.VoiceStore.IsOutputMuted(),
                ToggleMicMuting: () => this.VoiceStore.ToggleMicMuting(),
                ToggleOutputMuting: () => this.VoiceStore.ToggleOutputMuting(),
                EndVoiceChat: () => this.VoiceStore.OnUserEndVoiceChat(),
                RegisterForPendingOneOnOneVoiceChatRequests: (e) =>
                  this.VoiceStore.RegisterForPendingOneOnOneVoiceChatRequests(
                    e,
                  ),
                RegisterForCurrentUserVoiceLevel: (e) =>
                  this.VoiceStore.RegisterForCurrentUserVoiceLevel(e),
                IsLocalMicTestActive: () =>
                  this.VoiceStore.IsLocalMicTestActive(),
                InitiateLocalMicTest: () =>
                  this.VoiceStore.InitiateLocalMicTest(),
                EndLocalMicTest: () => this.VoiceStore.EndLocalMicTest(),
                GetSelectedMic: () => this.VoiceStore.GetSelectedMic(),
                GetSelectedOutputDevice: () =>
                  this.VoiceStore.GetSelectedOutputDevice(),
                SetSelectedMic: (e) => this.VoiceStore.SetSelectedMic(e),
                SetSelectedOutput: (e) => this.VoiceStore.SetSelectedOutput(e),
                ConvertGainValueToSliderValue: (e, t) =>
                  this.VoiceStore.ConvertGainValueToSliderValue(e, t),
                ConvertSliderToGainValue: (e, t) =>
                  this.VoiceStore.ConvertSliderToGainValue(e, t),
                GetVoiceInputGain: () => this.VoiceStore.GetVoiceInputGain(),
                GetVoiceOutputGain: () => this.VoiceStore.GetVoiceOutputGain(),
                GetMaxInputOutputGain: () => W.F$.k_MaxInputOutputGainValue,
                SetVoiceInputGain: (e) => this.VoiceStore.SetVoiceInputGain(e),
                SetVoiceOutputGain: (e) =>
                  this.VoiceStore.SetVoiceOutputGain(e),
                GetPushToTalkEnabled: () =>
                  this.VoiceStore.GetPushToTalkEnabled(),
                GetPushToMuteEnabled: () =>
                  this.VoiceStore.GetPushToMuteEnabled(),
                SetPushToTalkEnabled: (e) =>
                  this.VoiceStore.SetPushToTalkEnabled(e),
                SetPushToMuteEnabled: (e) =>
                  this.VoiceStore.SetPushToMuteEnabled(e),
                GetPushToTalkHotKeyDisplayString: () =>
                  this.VoiceStore.GetPushToTalkHotKeyDisplayString(),
                GetPushToTalkOrMuteSoundsEnabled: () =>
                  this.VoiceStore.GetPushToTalkOrMuteSoundsEnabled(),
                SetPushToTalkOrMuteSoundsEnabled: (e) =>
                  this.VoiceStore.SetPushToTalkOrMuteSoundsEnabled(e),
                RefreshPushToTalkKeySettings: () =>
                  this.VoiceStore.RefreshPushToTalkKeySettings(),
                GetUseNoiseGateLevel: () =>
                  this.VoiceStore.GetUseNoiseGateLevel(),
                SetUseNoiseGateLevel: (e) =>
                  this.VoiceStore.SetUseNoiseGateLevel(e),
                GetUseEchoCancellation: () =>
                  this.VoiceStore.GetUseEchoCancellation(),
                SetUseEchoCancellation: (e) =>
                  this.VoiceStore.SetUseEchoCancellation(e),
                GetUseNoiseCancellation: () =>
                  this.VoiceStore.GetUseNoiseCancellation(),
                SetUseNoiseCancellation: (e) =>
                  this.VoiceStore.SetUseNoiseCancellation(e),
                GetUseAutoGainControl: () =>
                  this.VoiceStore.GetUseAutoGainControl(),
                SetUseAutoGainControl: (e) =>
                  this.VoiceStore.SetUseAutoGainControl(e),
                GetVoiceLogs: () => this.VoiceStore.GetVoiceLogs(),
                GetUseSteamAudioSpatialization: () =>
                  this.VoiceStore.GetUseSteamAudioSpatialization(),
                SetUseSteamAudioSpatialization: (e) =>
                  this.VoiceStore.SetUseSteamAudioSpatialization(e),
              });
          }
          InitInternal(e, t, n = []) {
            (this.m_CMInterface = e), (this.m_NotificationManager = t);
            (async function (e, t, n = !0, i) {
              const o = performance.now(),
                r = [],
                a = (t, n) => {
                  console.error(`${e} - ${n} - ERROR`, t), i && i(t, e, n);
                };
              await Promise.all(
                t.map(([e, t]) => {
                  const i = performance.now();
                  try {
                    const l = t();
                    if (
                      (s = l) &&
                      "object" == typeof s &&
                      "then" in s &&
                      "function" == typeof s.then
                    )
                      return l.then(
                        () => n && r.push(K(`async ${e}`, o)),
                        (t) => a(t, e),
                      );
                    n && r.push(K(e, i));
                  } catch (t) {
                    a(t, e);
                  }
                  var s;
                  return null;
                }),
              ),
                n &&
                  (console.groupCollapsed(K(e, o)),
                  r.forEach((e) => console.log(e)),
                  console.groupEnd());
            })("FriendsUI ReadyToRender", [
              ["FriendStore", () => this.m_FriendStore.Init(e)],
              [
                "ChatStore",
                () => this.m_ChatStore.Init(e, this.m_VoiceChatStore),
              ],
              ["Clock Drift", () => this.InitAdjustClockDriftFromServer()],
              ["VoiceChatStore", () => this.m_VoiceChatStore.Init(e)],
              ["SettingsStore", () => this.m_SettingsStore.Init(e)],
              ["AppInfoStore", () => this.m_AppInfoStore.Init(e)],
              ["UIStore", () => this.m_UIStore.Init()],
              ["EconomyStore", () => this.m_EconomyStore.Init(e)],
              ["ParentalStore", () => this.m_ParentalStore.Init(e)],
              ["BroadcastStore", () => this.m_BroadcastStore.Init(e)],
              ["RemotePlayStore", () => this.m_RemotePlayStore.Init(e)],
              ["GroupMemberStore", () => this.m_GroupMemberStore.Init()],
              ["UserStore", () => this.m_UserStore.Init(e)],
              [
                "CookiePreferenceStore",
                () => (this.m_CookiePreferenceStore = new q._(e)),
              ],
              ...n,
            ]).then(
              () => {
                console.log("Ready To Render promises succeeded"),
                  this.SetReadyToRender();
              },
              (e) => {
                console.error("Ready To Render promise failed: ", e),
                  this.SetReadyToRender();
              },
            );
          }
          GetChatRoomBBCodeParser() {
            return this.m_ChatRoomBBCodeParser;
          }
          GetFriendChatBBCodeParser() {
            return this.m_FriendChatBBCodeParser;
          }
          GetNotificationBBCodeParser() {
            return this.m_NotificationBBCodeParser;
          }
          GetChatRoomEffectSettings() {
            return this.m_ChatRoomEffectSettings;
          }
          get CMInterface() {
            return this.m_CMInterface;
          }
          get FriendStore() {
            return this.m_FriendStore;
          }
          get ChatStore() {
            return this.m_ChatStore;
          }
          get VoiceStore() {
            return this.m_VoiceChatStore;
          }
          get UIStore() {
            return this.m_UIStore;
          }
          get SettingsStore() {
            return this.m_SettingsStore;
          }
          get AppInfoStore() {
            return this.m_AppInfoStore;
          }
          get Storage() {
            return this.m_Storage;
          }
          get NotificationManager() {
            return this.m_NotificationManager;
          }
          get EconomyStore() {
            return this.m_EconomyStore;
          }
          get UserStore() {
            return this.m_UserStore;
          }
          get ParentalStore() {
            return this.m_ParentalStore;
          }
          get BroadcastStore() {
            return this.m_BroadcastStore;
          }
          get RemotePlayStore() {
            return this.m_RemotePlayStore;
          }
          get GroupMemberStore() {
            return this.m_GroupMemberStore;
          }
          get CookiePreferenceStore() {
            return this.m_CookiePreferenceStore;
          }
          async SetReadyToRender() {
            if (
              !this.m_bReadyToRender &&
              (console.log(
                `FriendsUI ready to render after ${performance.now() - ee.sm_msStartup}ms`,
              ),
              (this.m_bReadyToRender = !0),
              await this.OnReadyToRender(),
              this.IsLoadedInClientSharedJSContext())
            ) {
              let e = { message: "FriendsUIReady", data: o.TS.BUILD_TIMESTAMP };
              window.parent.postMessage(e, "https://steamloopback.host");
            }
          }
          get ready_to_render() {
            return this.m_bReadyToRender;
          }
          GetStartupTime() {
            return ee.sm_msStartup;
          }
          ShowFriendChatDialog(e, t, n = !0) {
            return this.UIStore.ShowFriendChatDialog(e, t, n, n);
          }
          GetDefaultBrowserContext() {
            return this.m_BrowserContextDefaultTarget;
          }
          SetDefaultPopupContext(e) {
            console.log("Set default popup context: " + e.m_unPID),
              (this.m_BrowserContextDefaultTarget = e);
          }
          CreateNewTabFromUniqueID(e, t, n, i) {
            let o = t.match(/^f(\d+)$/);
            if (o && o[1]) {
              let t = parseInt(o[1]),
                n = te.FriendStore.GetPlayer(t);
              if (n && !n.is_blocked) {
                let o = this.m_ChatStore.GetFriendChat(t);
                if (o) {
                  const r = new h.JB(e, o);
                  return (
                    !i ||
                      n.is_friend ||
                      te.FriendStore.BApprovedNonFriendMessages(t) ||
                      o.SetShowNonFriendWarning(!0),
                    r
                  );
                }
              }
            }
            let r = t.match(/^cg(\d+)$/);
            if (r && r[1]) {
              let t = this.m_ChatStore.GetChatRoomGroup(r[1]);
              if (t)
                return (
                  this.m_ChatStore.IncRefActiveChatRoomGroup(
                    t.GetGroupID(),
                    !n,
                  ),
                  new j.$C(e, t)
                );
            }
            return null;
          }
          async InitAdjustClockDriftFromServer() {
            return new Promise((e, t) => {
              this.m_CMInterface.RunWhenLoggedOn(async () => {
                try {
                  await (0, r.z7)(
                    () => this.m_CMInterface.BPerformedInitialClockAdjustment(),
                    { timeout: 1e3 },
                  ),
                    e();
                } catch (e) {
                  console.warn(
                    "Timed out waiting for initial server clock drift adjustment",
                  ),
                    t();
                }
              });
            });
          }
          GetServerTimeMS() {
            return this.m_CMInterface.GetServerTimeMS();
          }
          GetServerRTime32() {
            return this.m_CMInterface.GetServerRTime32();
          }
          RTime32ToDate(e) {
            return this.m_CMInterface.RTime32ToDate(e);
          }
          static sm_tzOffset;
          GetLocalMidnightInRTime32(e) {
            void 0 === ee.sm_tzOffset &&
              ((ee.sm_tzOffset = 60 * new Date().getTimezoneOffset()),
              (0, B.w)(
                ee.sm_tzOffset || 0 === ee.sm_tzOffset,
                `Computed invalid timezone offset ${ee.sm_tzOffset}`,
              ));
            let t = ee.sm_tzOffset || 0,
              n = (e || this.m_CMInterface.GetServerRTime32()) - t;
            return 86400 * Math.floor(n / 86400) + t;
          }
          IsInBeta() {
            return o.TS.FRIENDSUI_BETA;
          }
          BIsValidBrowserContext(e) {
            return (0, M.u)(e, M.m);
          }
          ShowCloseActiveVoiceConfirmation(e, t) {}
          UpdatePersonaState(e) {}
          BShowChatRoomNotification() {
            return (
              !!this.IsGamepadUIActive() ||
              this.SettingsStore.FriendsSettings
                .bNotifications_ShowChatRoomNotification
            );
          }
          BPlayChatRoomNotificationSound() {
            return (
              !this.IsGamepadUIActive() &&
              this.SettingsStore.FriendsSettings
                .bSounds_PlayChatRoomNotification
            );
          }
          BShowDirectChatNotification() {
            return this.SettingsStore.FriendsSettings
              .bNotifications_ShowMessage;
          }
          GetCurrentUserStatusInterface() {
            return this.m_exportsCurrentUserStatus;
          }
          GetVoiceInterface() {
            return this.m_exportsVoiceInterface;
          }
          SetEmoticonTrackerCallback(e) {
            this.m_ChatStore.EmoticonStore.SetEmoticonTrackerCallback(e);
          }
          SetStickerTrackerCallback(e) {
            this.m_ChatStore.EmoticonStore.SetStickerTrackerCallback(e);
          }
          async Reconnect() {
            await Promise.all([
              this.CMInterface.Connect(),
              this.UIStore.RestorePopupState(),
            ]);
          }
        }
        let te;
        function ne() {
          return (
            "0" !=
            (0, Z.q3)(() => te.FriendStore.self?.persona?.m_gameid ?? "0")
          );
        }
        (0, i.Cg)([r.sH], ee.prototype, "m_bReadyToRender", void 0),
          (0, i.Cg)([r.EW], ee.prototype, "ready_to_render", null);
      },
      2473: (e, t, n) => {
        "use strict";
        n.d(t, { fW: () => h, me: () => C, rV: () => _ });
        var i = n(34629),
          o = n(37779),
          r = n(82924),
          a = n(93715),
          s = n(58743),
          l = n(74002),
          c = n(8805),
          m = n(1748),
          d = n(89193),
          u = n(77765);
        const h = -1,
          p = -2;
        class _ {
          m_id;
          m_strName;
          m_rgMembers;
          m_fnSort;
          m_fnOnUpdate;
          constructor(e, t, n) {
            (this.m_id = e),
              (this.m_rgMembers = []),
              (this.m_fnSort = t),
              (this.m_fnOnUpdate = n);
          }
          get id() {
            return this.m_id;
          }
          get name() {
            return this.m_id == p
              ? 1 == this.m_rgMembers.length
                ? (0, l.we)("#FriendGroup_InGame")
                : (0, l.we)("#FriendGroup_InGame_Others")
              : 0 == this.m_id
                ? (0, l.we)("#Chat_MemberGroup_Online")
                : this.m_id == h
                  ? (0, l.we)("#Chat_MemberGroup_PartyBeacon")
                  : this.m_strName
                    ? this.m_strName
                    : s.xm.AppInfoStore.GetAppInfo(this.m_id).is_initialized
                      ? ((this.m_strName = s.xm.AppInfoStore.GetAppInfo(
                          this.m_id,
                        ).name),
                        this.m_strName)
                      : (s.xm.AppInfoStore.RegisterCallbackOnLoad(
                          this.OnAppInfoLoaded,
                        ),
                        "");
          }
          OnAppInfoLoaded() {
            (this.m_strName = s.xm.AppInfoStore.GetAppInfo(this.m_id).name),
              this.m_fnOnUpdate();
          }
          get member_list() {
            return this.m_rgMembers;
          }
          BReadyToDisplay() {
            return !this.BIsGameGroup() || !!this.name;
          }
          BIsGameGroup() {
            return this.m_id > 0;
          }
          ClearMemberList() {
            this.m_rgMembers = [];
          }
          BHasMember(e) {
            return this.m_rgMembers.findIndex((t) => t.accountid === e) >= 0;
          }
          SetMembers(e) {
            (this.m_rgMembers = e), this.Sort();
          }
          SortedInsert(e) {
            (0, u.w)(
              !this.BHasMember(e.accountid),
              "Double insert into bucket for accountid",
              e.accountid,
            ),
              o.Xr(this.m_rgMembers, e, this.m_fnSort);
          }
          Remove(e) {
            return o.Wp(this.m_rgMembers, (t) => t.accountid === e);
          }
          Sort() {
            this.m_rgMembers.sort(this.m_fnSort);
          }
        }
        (0, i.Cg)([r.oI], _.prototype, "OnAppInfoLoaded", null);
        class g {
          rgRegistered = [];
          bFlatList = void 0;
          mapBuckets = new Map();
          groupSingletons;
          nLastUpdate = 0;
          hDelayUpdate;
          bReSortPending;
          msSpentSorting = 0;
          constructor(e, t) {
            this.groupSingletons = new _(p, e, t);
          }
        }
        class C {
          m_mapGroupBuckets = new Map();
          m_mapGroupBeacons = new Map();
          m_disposePersonaStateChanged;
          m_disposePlayerGameChanged;
          m_bShowMembersInGameGroups = void 0;
          LOG = new c.wd("GroupMemberStore").Debug;
          constructor() {}
          Init() {
            (this.m_disposePersonaStateChanged =
              s.xm.FriendStore.AddPersonaStateChangedCallback(
                this.OnPersonaStateChanged,
              )),
              (this.m_disposePlayerGameChanged =
                s.xm.FriendStore.AddPlayerGameChangedCallback(
                  this.OnPlayerGameChanged,
                )),
              s.xm.SettingsStore.RunOnReady(this.ListenForSettingsChanges),
              s.xm.CMInterface.AddOnDisconnectCallback(() => {
                this.Reset();
              }, 102);
          }
          ListenForSettingsChanges() {
            (this.m_bShowMembersInGameGroups =
              s.xm.SettingsStore.FriendsSettings.bCategorizeInGameFriendsByGame),
              (0, d.z7)(
                () =>
                  s.xm.SettingsStore.FriendsSettings
                    .bCategorizeInGameFriendsByGame !==
                  this.m_bShowMembersInGameGroups,
                () => {
                  this.Reset(), this.ListenForSettingsChanges();
                },
              );
          }
          Reset() {
            this.m_mapGroupBuckets.forEach((e, t) => {
              (e.bFlatList = void 0),
                this.PerformInitialPopulate(t),
                this.FireMemberListChanged(e);
            });
          }
          RegisterForGroupMemberList(e, t) {
            return (
              this.m_mapGroupBuckets.has(t) ||
                (this.m_mapGroupBuckets.set(
                  t,
                  new g(this.FriendSortFunc, () => {
                    this.OnGroupUpdate(t);
                  }),
                ),
                this.PerformInitialPopulate(t)),
              this.m_mapGroupBuckets.get(t).rgRegistered.push(e),
              { unregister: () => this.UnregisterForGroupMemberList(e, t) }
            );
          }
          OnGroupUpdate(e) {
            let t = this.m_mapGroupBuckets.get(e);
            t && this.FireMemberListChanged(t);
          }
          UnregisterForGroupMemberList(e, t) {
            let n = this.m_mapGroupBuckets.get(t);
            n &&
              (o.x9(n.rgRegistered, e),
              0 == n.rgRegistered.length && this.m_mapGroupBuckets.delete(t));
          }
          GroupSortFunc(e, t) {
            return t.id == h && e.id != h
              ? 1
              : e.id == h && t.id != h
                ? -1
                : e.id <= 0 && t.id <= 0
                  ? e.id - t.id
                  : e.id <= 0 && t.id > 0
                    ? 1
                    : t.id <= 0 && e.id > 0
                      ? -1
                      : t.member_list.length == e.member_list.length &&
                          t.name &&
                          e.name
                        ? t.name.localeCompare(e.name)
                        : t.member_list.length - e.member_list.length;
          }
          GetGroupMemberList(e) {
            let t = this.m_mapGroupBuckets.get(e);
            if (t.bFlatList)
              return (
                (0, u.w)(
                  1 == t.mapBuckets.size,
                  "Flat list has too many buckets",
                ),
                [t.mapBuckets.get(0)]
              );
            {
              let e = [];
              return (
                t.mapBuckets.forEach((t) => {
                  t.BReadyToDisplay() &&
                    (t.member_list.length > 1 ||
                      !this.BucketCanBeSingleton(t)) &&
                    e.push(t);
                }),
                t.groupSingletons.member_list.length > 0 &&
                  (t.groupSingletons.Sort(), e.push(t.groupSingletons)),
                e.sort(this.GroupSortFunc)
              );
            }
          }
          SetGroupListFlat(e, t) {
            let n = this.m_mapGroupBuckets.get(e);
            n &&
              n.bFlatList != t &&
              ((n.bFlatList = t),
              this.PerformInitialPopulate(e),
              this.FireMemberListChanged(n));
          }
          ScheduledFireMemberListChanged(e) {
            (e.hDelayUpdate = void 0), this.FireMemberListChanged(e);
          }
          FireMemberListChanged(e) {
            if (e.hDelayUpdate) return;
            let t = performance.now();
            if (t - e.nLastUpdate < 1e3)
              return (
                (e.hDelayUpdate = SetBackgroundTimeout(
                  () => this.ScheduledFireMemberListChanged(e),
                  1e3,
                )),
                void this.LOG("DELAY UPDATE")
              );
            e.nLastUpdate = t;
            for (let t of e.rgRegistered) t();
          }
          OnPlayerGameChanged(e, t, n) {
            this.m_mapGroupBuckets.forEach((i, o) => {
              let r = s.xm.ChatStore.GetChatRoomGroup(o);
              if (!r.GetMemberPartyBeacon(e) && r.BHasMember(e)) {
                let r = s.xm.FriendStore.GetPlayer(e);
                if (
                  (r.is_appinfo_ready(),
                  this.LOG("OnPlayerGameChanged", r.display_name, t, n),
                  i.bFlatList)
                )
                  return (
                    i.mapBuckets.get(0).Remove(e),
                    i.mapBuckets
                      .get(0)
                      .SortedInsert(s.xm.FriendStore.GetPlayer(e)),
                    void this.FireMemberListChanged(i)
                  );
                if (t == n) {
                  let t = n == m.o_ ? i.groupSingletons : i.mapBuckets.get(n);
                  if (t && t.BHasMember(e))
                    return void this.UpdatePersonaForGroup(o, r);
                }
                this.RemoveMemberFromBucket(i, t, e),
                  this.AddMemberToBucketID(i, n, s.xm.FriendStore.GetPlayer(e)),
                  this.FireMemberListChanged(i);
              }
            });
          }
          OnPersonaStateChanged(e) {
            this.m_mapGroupBuckets.forEach((t, n) => {
              let i = s.xm.ChatStore.GetChatRoomGroup(n);
              if (i.BHasMember(e.accountid)) {
                if (
                  (this.LOG(
                    "CGroupMemberStore - persona state",
                    n,
                    e.display_name,
                  ),
                  t.bReSortPending)
                )
                  return (
                    this.LOG(e.display_name, "not ready"),
                    void e.is_appinfo_ready()
                  );
                e.is_appinfo_ready()
                  ? this.UpdatePersonaForGroup(i.GetGroupID(), e)
                  : (this.LOG(`Delay sorting player ${e.accountid}`),
                    s.xm.AppInfoStore.RegisterCallbackOnLoad(
                      this.UpdatePersonaForGroup.bind(this, n, e),
                    ));
              }
            });
          }
          UpdatePersonaForGroup(e, t) {
            let n = this.m_mapGroupBuckets.get(e);
            if (!n) return;
            let i = performance.now(),
              o = !1;
            if (n.bFlatList)
              (0, u.w)(1 == n.mapBuckets.size, "Flat map is too large"),
                n.mapBuckets.get(0).Remove(t.accountid),
                n.mapBuckets.get(0).SortedInsert(t),
                (o = !0);
            else {
              let e = this.FindCurrentBucketForMember(n, t.accountid);
              if (void 0 !== e) {
                let i;
                e == p
                  ? (i = n.groupSingletons)
                  : ((i = n.mapBuckets.get(e)),
                    1 == i.member_list.length &&
                      this.BucketCanBeSingleton(i) &&
                      (i = n.groupSingletons)),
                  (i.member_list.length > 1 || !this.BucketCanBeSingleton(i)) &&
                    (this.LOG("Resorting user", t.display_name, "in bucket", e),
                    i.Remove(t.accountid),
                    i.SortedInsert(t),
                    (o = !0));
              }
            }
            let r = performance.now();
            (n.msSpentSorting += r - i),
              this.LOG(
                `${e}: Resort user ${t.display_name} took ${r - i}ms (total ${n.msSpentSorting}ms)`,
              ),
              o && this.FireMemberListChanged(n);
          }
          OnPartyBeaconsUpdated(e, t) {
            this.m_mapGroupBeacons.set(e, t);
            let n = this.m_mapGroupBuckets.get(e),
              i = [],
              o = !1;
            if (!n) return;
            for (let e of t) {
              i.push(e.account_id);
              let t = this.FindCurrentBucketForMember(n, e.account_id);
              if (t == h) continue;
              let r = s.xm.FriendStore.GetPlayer(e.account_id);
              r.is_appinfo_ready(),
                (o = !0),
                this.RemoveMemberFromBucket(n, t, e.account_id),
                this.AddMemberToBucketID(n, h, r);
            }
            let r = n.mapBuckets.get(h);
            if (r)
              for (let t of r.member_list)
                if (-1 == i.indexOf(t.accountid)) {
                  o = !0;
                  let i = this.GetBucketIdForPlayer(n, t, e);
                  this.RemoveMemberFromBucket(n, h, t.accountid),
                    this.AddMemberToBucketID(n, i, t);
                }
            o && this.ReSortGroup(e);
          }
          ReSortGroup(e) {
            let t = this.m_mapGroupBuckets.get(e);
            if (t) {
              if (t.bFlatList) {
                (0, u.w)(
                  1 == t.mapBuckets.size,
                  "Flat list has too many buckets",
                );
                let n = performance.now(),
                  i = t.mapBuckets.get(0);
                i.Sort();
                let o = performance.now();
                (t.msSpentSorting += o - n),
                  this.LOG(
                    `${e}: List ReSort took ${o - n}ms (total ${t.msSpentSorting}ms) for ${i.member_list.length} members`,
                  );
              } else t.mapBuckets.get(0).Sort(), t.groupSingletons.Sort();
              (t.bReSortPending = !1), this.FireMemberListChanged(t);
            }
          }
          FriendSortFunc(e, t) {
            let n = a.$c.FriendSortStatusComparator(e, t);
            if (0 != n) return n;
            if (e.persona.is_ingame && t.persona.is_ingame) {
              if (e.persona.is_in_nonsteam_game) {
                if (!t.persona.is_in_nonsteam_game) return 1;
              } else if (t.persona.is_in_nonsteam_game) return -1;
              const n = e.current_game_name,
                i = t.current_game_name;
              if (n) {
                if (!i) return -1;
                if (n != i) return n < i ? -1 : 1;
              } else if (i) return 1;
            }
            return e.display_name.localeCompare(t.display_name);
          }
          PerformInitialPopulate(e) {
            let t = this.m_mapGroupBuckets.get(e);
            t.mapBuckets.clear(),
              t.groupSingletons.ClearMemberList(),
              (0, u.w)(t, "PerformInitialPopulate didn't find group");
            let n = performance.now(),
              i =
                s.xm.ChatStore.GetChatRoomGroup(
                  e,
                ).memberList.member_list_unsorted.slice();
            if (
              (void 0 === t.bFlatList &&
                (t.bFlatList =
                  i.length > 100 ||
                  !s.xm.SettingsStore.FriendsSettings
                    .bCategorizeInGameFriendsByGame),
              t.bFlatList)
            ) {
              i.forEach((e) => {
                e.is_appinfo_ready();
              });
              let e = new _(0, this.FriendSortFunc, () => {
                this.FireMemberListChanged(t);
              });
              e.SetMembers(i), t.mapBuckets.set(0, e);
            } else
              for (let n of i) {
                let i = this.GetBucketIdForPlayer(t, n, e);
                this.AddMemberToBucketID(t, i, n);
              }
            s.xm.AppInfoStore.BHavePendingAppInfoRequests() &&
              ((t.bReSortPending = !0),
              s.xm.AppInfoStore.RegisterCallbackOnLoad(
                this.ReSortGroup.bind(this, e),
              ));
            let o = performance.now();
            (t.msSpentSorting += o - n),
              this.LOG(
                `List sort took ${o - n} ms for ${i.length} members of group ${e}`,
              );
          }
          FindCurrentBucketForMember(e, t) {
            let n;
            return (
              e.mapBuckets.forEach((e) => {
                e.BHasMember(t) && (n = e.id);
              }),
              void 0 !== n ? n : e.groupSingletons.BHasMember(t) ? p : void 0
            );
          }
          BIsMemberInAnyBucket(e, t) {
            return void 0 !== this.FindCurrentBucketForMember(e, t);
          }
          AddMemberToBucketID(e, t, n) {
            if (
              ((0, u.w)(
                !this.BIsMemberInAnyBucket(e, n.accountid),
                "Trying to double add accountid",
                n.accountid,
                "which is already in bucket",
                this.FindCurrentBucketForMember(e, n.accountid),
              ),
              (0, u.w)(
                !e.bFlatList || 0 == t,
                "Trying to add to non-default bucket in flat list",
              ),
              t != p)
            )
              if (e.mapBuckets.has(t)) {
                if (!e.bFlatList) {
                  let n = e.mapBuckets.get(t);
                  1 == n.member_list.length &&
                    this.BucketCanBeSingleton(n) &&
                    this.RemoveFromSingletons(e, n.member_list[0].accountid);
                }
                e.mapBuckets.get(t).SortedInsert(n);
              } else {
                let i = new _(t, this.FriendSortFunc, () => {
                  this.FireMemberListChanged(e);
                });
                i.SortedInsert(n),
                  e.mapBuckets.set(t, i),
                  !e.bFlatList &&
                    this.BucketCanBeSingleton(i) &&
                    this.AddToSingletons(e, n);
              }
            else this.AddToSingletons(e, n);
          }
          BucketCanBeSingleton(e) {
            return e.id != h && 0 != e.id;
          }
          AddToSingletons(e, t) {
            (0, u.w)(!e.bFlatList, "Adding to singletons in flat list"),
              e.groupSingletons.SortedInsert(t);
          }
          RemoveFromSingletons(e, t) {
            return (
              (0, u.w)(!e.bFlatList, "Removing from singletons in flat list"),
              e.groupSingletons.Remove(t)
            );
          }
          GetBucketIdForPlayer(e, t, n) {
            if (e.bFlatList) return 0;
            let i = this.m_mapGroupBeacons.get(n);
            if (i) {
              if (
                i.find(function (e) {
                  return e.account_id == t.accountid;
                })
              )
                return h;
            }
            if (t.persona.is_ingame) {
              if (t.persona.is_in_nonsteam_game) return p;
              return t.persona.m_unGamePlayedAppID;
            }
            return t.persona.m_broadcastAppId ? t.persona.m_broadcastAppId : 0;
          }
          RemoveMemberFromBucket(e, t, n) {
            if (t == p) return this.RemoveFromSingletons(e, n), !0;
            let i = e.mapBuckets.get(t);
            return (
              !(!i || !i.Remove(n)) &&
              (0 == i.member_list.length
                ? (this.RemoveFromSingletons(e, n),
                  this.LOG("Deleting bucket", t),
                  e.mapBuckets.delete(t))
                : 1 == i.member_list.length &&
                  !e.bFlatList &&
                  this.BucketCanBeSingleton(i) &&
                  (this.LOG(
                    "Removing member, adding",
                    i.member_list[0].accountid,
                    "to singletons",
                  ),
                  this.AddToSingletons(e, i.member_list[0])),
              !0)
            );
          }
          AddUserAndFireCallback(e, t, n) {
            let i = s.xm.FriendStore.GetPlayer(t),
              o = this.GetBucketIdForPlayer(e, i, n);
            this.AddMemberToBucketID(e, o, i), this.FireMemberListChanged(e);
          }
          OnMemberAdded(e, t) {
            let n = this.m_mapGroupBuckets.get(e);
            n && this.AddUserAndFireCallback(n, t, e);
          }
          OnMemberRemoved(e, t) {
            let n = this.m_mapGroupBuckets.get(e);
            if (n) {
              for (let e of Array.from(n.mapBuckets.keys()))
                if (this.RemoveMemberFromBucket(n, e, t))
                  return void this.FireMemberListChanged(n);
              this.RemoveMemberFromBucket(n, p, t) &&
                this.FireMemberListChanged(n);
            }
          }
        }
        (0, i.Cg)([r.oI], C.prototype, "ListenForSettingsChanges", null),
          (0, i.Cg)([r.oI], C.prototype, "OnPlayerGameChanged", null),
          (0, i.Cg)([r.oI], C.prototype, "OnPersonaStateChanged", null),
          (0, i.Cg)([r.oI], C.prototype, "OnPartyBeaconsUpdated", null);
      },
      52049: (e, t, n) => {
        "use strict";
        n.d(t, { DH: () => p, JD: () => _, ol: () => g });
        var i = n(34629),
          o = n(22226),
          r = n(63696),
          a = n(89193),
          s = n(78116),
          l = n(16280),
          c = n(82924),
          m = n(91364),
          d = n(37779),
          u = n(78919),
          h = n(58743);
        class p {
          m_mapHovers = new WeakMap();
          GetHover(e) {
            let t = this.m_mapHovers.get(e);
            return t || ((t = new g(e)), this.m_mapHovers.set(e, t)), t;
          }
        }
        class _ {
          constructor() {
            (0, a.Gn)(this);
          }
          m_OwningElement;
          visible = void 0;
          hover;
          popupWindow;
          context;
          m_BlurHandler;
          m_VisibilityHandler;
        }
        (0, i.Cg)([a.sH], _.prototype, "visible", void 0);
        class g {
          m_friend;
          static m_embeddedElements = new l.MX("CFriendHoverContainer");
          m_rgInstances;
          constructor(e) {
            this.m_friend = e;
          }
          get friend() {
            return this.m_friend;
          }
          get persona() {
            return this.m_friend.persona;
          }
          GetInstance(e, t = !1) {
            if (this.m_rgInstances)
              for (let t of this.m_rgInstances)
                if (t.m_OwningElement == e) return t;
            if (t) {
              let t = new _();
              return (
                (t.m_OwningElement = e),
                (t.visible = !1),
                (t.hover = this),
                this.m_rgInstances
                  ? this.m_rgInstances.push(t)
                  : (this.m_rgInstances = [t]),
                t
              );
            }
            return null;
          }
          ShowPopup(e, t, n) {
            (t.visible = !0),
              t.m_OwningElement.ownerDocument.defaultView.setTimeout(() => {
                t.visible &&
                  (t.popupWindow || (t.popupWindow = new o.Io(e, t, n)),
                  t.popupWindow.Show());
              }, 250),
              (t.m_BlurHandler = () => {
                this.HideByElement(t.m_OwningElement);
              }),
              t.m_OwningElement.ownerDocument.defaultView.addEventListener(
                "blur",
                t.m_BlurHandler,
              ),
              (t.m_VisibilityHandler = (e) => {
                "hidden" === e.target.visibilityState &&
                  this.HideByElement(t.m_OwningElement);
              }),
              t.m_OwningElement.ownerDocument.addEventListener(
                "visibilitychange",
                t.m_VisibilityHandler,
              );
          }
          Show(e, t, n) {
            let i = e.currentTarget.ownerDocument.defaultView.innerWidth < 500;
            if (i && !s.TS.IN_CLIENT) return;
            if (u.ZM.DragDropManager.BInDrag()) return;
            this.friend.miniProfileData.EnsureCommunityDataLoaded();
            let a = e.currentTarget,
              l = (0, u.CO)(e),
              c = this.GetInstance(a, !0);
            c.context = t;
            let m = !1;
            if (s.TS.IN_CLIENT) {
              let e = h.xm.UIStore.GetPerContextChatData(l);
              m = e.BUsePopups();
            }
            if (i && m) this.ShowPopup(a, c, l);
            else {
              let e = r.createElement(o.Rg, {
                hoverInstance: c,
                target: a,
                direction: n,
                onNoSpace: () => {
                  m && this.ShowPopup(a, c, l);
                },
              });
              g.m_embeddedElements
                .ShowElementDelayed(a.ownerDocument, 250, e, c)
                .then(() => {
                  c.visible = !0;
                });
            }
          }
          Hide(e) {
            this.HideByElement(e.currentTarget);
          }
          HideByElement(e) {
            let t = this.GetInstance(e);
            if (t) {
              if (
                ((t.visible = !1),
                t.m_BlurHandler &&
                  (e.ownerDocument.defaultView.removeEventListener(
                    "blur",
                    t.m_BlurHandler,
                  ),
                  (t.m_BlurHandler = null)),
                t.m_VisibilityHandler &&
                  (e.ownerDocument.removeEventListener(
                    "visibilitychange",
                    t.m_VisibilityHandler,
                  ),
                  (t.m_VisibilityHandler = null)),
                t.popupWindow && !t.popupWindow.BIsClosed())
              ) {
                let n = t.popupWindow,
                  i = () => {
                    n.BIsClosed() || n.Close();
                  };
                e.ownerDocument.defaultView.addEventListener("unload", i),
                  e.ownerDocument.defaultView.setTimeout(() => {
                    e.ownerDocument.defaultView.removeEventListener(
                      "unload",
                      i,
                    ),
                      i();
                  }, 100);
              } else
                g.m_embeddedElements.HideElement(
                  t.m_OwningElement.ownerDocument,
                  t,
                  500,
                );
              d.x9(this.m_rgInstances, t);
            }
          }
          OnContextMenu(e, t) {
            let n = (0, m.tj)((0, u.CO)(t), e, this.m_friend, t);
            return this.Hide(t), n;
          }
          HideAllInstances() {
            if (this.m_rgInstances)
              for (let e of this.m_rgInstances.slice())
                this.HideByElement(e.m_OwningElement);
          }
          get data_loader() {
            return this.m_friend.miniProfileData;
          }
        }
        (0, i.Cg)([c.oI], g.prototype, "Show", null),
          (0, i.Cg)([c.oI], g.prototype, "Hide", null),
          (0, i.Cg)([c.oI], g.prototype, "OnContextMenu", null);
      },
      53819: (e, t, n) => {
        "use strict";
        n.d(t, { TP: () => w, Vi: () => I, Jw: () => v, OC: () => b });
        var i = n(34629),
          o = n(78116),
          r = n(58743),
          a = n(89193),
          s = n(42674),
          l = n(37779),
          c = n(74002);
        let m = 0;
        class d {
          m_id = void 0;
          m_vecTabs = a.sH.array(null, { deep: !1 });
          m_activeTab = void 0;
          m_browserContext;
          constructor(e) {
            (0, a.Gn)(this),
              (this.m_id = m++),
              (this.m_browserContext = e),
              (this.m_activeTab = void 0);
          }
          GetBrowserContext() {
            return this.m_browserContext;
          }
          GetTitle() {
            return this.m_activeTab
              ? 2 == this.tabCount
                ? (0, c.we)(
                    "#WindowTitle_ChatTabTitle",
                    this.m_activeTab.GetTabName(),
                  )
                : this.tabCount > 2
                  ? (0, c.we)(
                      "#WindowTitle_ChatTabTitlePlural",
                      this.m_activeTab.GetTabName(),
                      this.tabCount - 1,
                    )
                  : this.m_activeTab.GetTabName()
              : "";
          }
          OnWindowFocus() {
            this.m_activeTab && this.m_activeTab.OnTabFocus();
          }
          FocusActiveTab() {
            this.m_activeTab && this.m_activeTab.OnTabFocus();
          }
          get tabs() {
            return this.m_vecTabs;
          }
          get tabCount() {
            return this.m_vecTabs.length;
          }
          get activeTab() {
            return this.m_activeTab;
          }
          GetTabSetIdentifier() {
            return this.m_vecTabs.map((e) => e.GetUniqueID()).join("_");
          }
          GetTabForChat(e) {
            for (let t of this.m_vecTabs) if (t.IsTabForChat(e)) return t;
            return null;
          }
          GetTabByUniqueID(e) {
            for (let t of this.m_vecTabs) if (t.GetUniqueID() == e) return t;
            return null;
          }
          BHasTab(e) {
            return -1 !== this.m_vecTabs.indexOf(e);
          }
          AddTab(e) {
            -1 == this.m_vecTabs.indexOf(e) &&
              (this.m_vecTabs.push(e),
              !this.m_activeTab &&
                this.m_vecTabs.length > 0 &&
                (this.m_activeTab = this.m_vecTabs[0]));
          }
          ActivateTab(e) {
            -1 != this.m_vecTabs.indexOf(e)
              ? (this.activeTab &&
                  this.activeTab != e &&
                  this.activeTab.OnTabDeactivate(),
                (this.m_activeTab = e),
                e.OnTabActivate(),
                this.Focus(),
                (0, s.Dp)("Messaging.RegisterForMessages") &&
                  SteamClient.Messaging.PostMessage(
                    "FriendsUI",
                    "ChatTabActivated",
                    JSON.stringify({ id: e.GetUniqueID() }),
                  ))
              : console.log("Tab not found");
          }
          ActivateNextTab() {
            let e = this.m_vecTabs.indexOf(this.m_activeTab);
            (e = (e + 1) % this.m_vecTabs.length),
              this.ActivateTab(this.m_vecTabs[e]);
          }
          ActivatePreviousTab() {
            let e = this.m_vecTabs.indexOf(this.m_activeTab);
            (e = (e + this.m_vecTabs.length - 1) % this.m_vecTabs.length),
              this.ActivateTab(this.m_vecTabs[e]);
          }
          DeactivateTab(e) {
            -1 !== this.m_vecTabs.indexOf(e)
              ? this.activeTab &&
                this.activeTab === e &&
                (e.OnTabDeactivate(), (this.m_activeTab = void 0))
              : console.log("Tab not found");
          }
          RemoveTab(e) {
            let t = this.m_vecTabs.indexOf(e);
            if (-1 == t) return !1;
            let n = e && e == this.m_activeTab;
            if ((this.m_vecTabs.splice(t, 1), n))
              if (this.m_vecTabs.length) {
                let e;
                for (let t of this.m_vecTabs)
                  (!e || t.GetTimeLastActivate() > e.GetTimeLastActivate()) &&
                    (e = t);
                this.m_activeTab = e || this.m_vecTabs[Math.max(t - 1, 0)];
              } else this.m_activeTab = void 0;
            return (
              0 == this.m_vecTabs.length && r.xm.UIStore.CloseTabSet(this), !0
            );
          }
          MoveTabAfter(e, t) {
            let n = this.m_vecTabs.indexOf(t);
            -1 != n && this.MoveTabToIndex(e, n + 1);
          }
          MoveTabToIndex(e, t) {
            let n = this.m_vecTabs.indexOf(e);
            -1 != n &&
              l.yY(this.m_vecTabs, n, Math.min(t, this.m_vecTabs.length - 1));
          }
          Focus() {
            r.xm.UIStore.FocusTabSet(this);
          }
          OnPopupClosed(e) {
            e && r.xm.UIStore.SetSuppressBrowserContextBroadcasting(!0),
              this.CloseAllTabs(),
              r.xm.UIStore.OnTabSetClosed(this),
              e && r.xm.UIStore.SetSuppressBrowserContextBroadcasting(!1);
          }
          CloseAllTabs() {
            this.m_activeTab = void 0;
            for (let e of this.m_vecTabs)
              r.xm.UIStore.CloseTab(this.m_browserContext, e, !0);
            this.m_vecTabs.clear();
          }
          get is_popup_active() {
            return r.xm.UIStore.BIsTabSetActive(this);
          }
          get is_popup_visible() {
            return r.xm.UIStore.BIsTabSetVisible(this);
          }
          get is_popup_focused() {
            return r.xm.UIStore.BIsTabSetFocused(this);
          }
          Serialize() {
            let e = [];
            for (let t of this.m_vecTabs) {
              t.GetUniqueID().startsWith("br") || e.push(t.GetUniqueID());
            }
            return {
              tabs: e,
              active_tab: this.activeTab && this.activeTab.GetUniqueID(),
            };
          }
        }
        (0, i.Cg)([a.sH], d.prototype, "m_id", void 0),
          (0, i.Cg)([a.sH], d.prototype, "m_activeTab", void 0),
          (0, i.Cg)([a.XI], d.prototype, "AddTab", null),
          (0, i.Cg)([a.XI], d.prototype, "ActivateTab", null),
          (0, i.Cg)([a.XI], d.prototype, "ActivateNextTab", null),
          (0, i.Cg)([a.XI], d.prototype, "ActivatePreviousTab", null),
          (0, i.Cg)([a.XI], d.prototype, "DeactivateTab", null),
          (0, i.Cg)([a.XI], d.prototype, "RemoveTab", null),
          (0, i.Cg)([a.XI], d.prototype, "OnPopupClosed", null),
          (0, i.Cg)([a.XI], d.prototype, "CloseAllTabs", null);
        var u = n(51802),
          h = n(34879),
          p = n(20045),
          _ = n(77765),
          g = n(9907),
          C = n(82924),
          f = n(17070);
        const S = "ChatStorePopupState";
        var v, b;
        !(function (e) {
          (e[(e.Favorites = 0)] = "Favorites"),
            (e[(e.FriendsList = 1)] = "FriendsList"),
            (e[(e.GroupChats = 2)] = "GroupChats"),
            (e[(e.RecentMessages = 3)] = "RecentMessages"),
            (e[(e.FirstTab = 0)] = "FirstTab"),
            (e[(e.MaxTab = 3)] = "MaxTab");
        })(v || (v = {}));
        class I {
          m_chatStore;
          m_bRestoredPopupState = !1;
          m_vecShowGroupsAfterRestorePopup = [];
          m_iLastChatPopupID = 0;
          m_mapChatBrowserContexts = new Map();
          m_bSuppressBrowserContextBroadcasting = !1;
          m_bParentalLocked = void 0;
          m_stateToRestoreFrom = void 0;
          m_bRestoringPopups = !1;
          m_bShuttingDown = !1;
          m_bTheaterMode = !1;
          m_mapFriendChatBroadcastVisible = new Map();
          m_nTabActivationCount = 0;
          m_bShowWinterSaleUI = !1;
          m_eFriendsListSteamDeckActiveTab = v.FriendsList;
          m_FriendsListSteamDeckActiveTabCallbackList = new g.lu();
          m_overlayCreatedCallbackList = new g.lu();
          GetRootChatPerContextData() {
            return this.GetPerContextChatData(h.m);
          }
          constructor(e) {
            (0, a.Gn)(this), (this.m_chatStore = e);
          }
          Init() {
            r.xm.AddPopupManagerShutdownCallback(() => {
              this.SerializePopupState(), (this.m_bShuttingDown = !0);
            }),
              (0, a.fm)(() => {
                let e =
                  r.xm.ParentalStore.BIsFriendsBlocked() ||
                  r.xm.SettingsStore.IsSteamInTournamentMode();
                this.OnFriendsParentalLockChanged(e);
              }),
              this.StartWinterSaleCountdown();
          }
          OnFriendsParentalLockChanged(e) {
            !1 === this.m_bParentalLocked && e
              ? (this.SerializePopupState(!0),
                this.m_mapChatBrowserContexts.forEach((e) => {
                  e.CloseAllPopups();
                }),
                (this.m_bRestoredPopupState = !1))
              : !0 !== this.m_bParentalLocked || e || this.RestorePopupState(),
              (this.m_bParentalLocked = e);
          }
          ShowFriendChatDialog(e, t, n = !0, i = !0) {
            let o = this.m_chatStore.GetFriendChat(t);
            return n && o && this.ShowAndOrActivateChat(e, o, i), o;
          }
          ShowFriendChatDialogWhenReady(e, t, n = !0, i = !0) {
            this.ShowFriendChatDialog(e, t, n, i);
          }
          ShowFriendChatDialogAndStartVoice(e, t) {
            let n = this.ShowFriendChatDialog(e, t, !0, !0);
            return n.BVoiceActive() || n.ToggleVoiceChat(), n;
          }
          ShowAndOrActivateChat(e, t, n) {
            if (t instanceof u.d) {
              let i = this.m_chatStore.GetChatRoomGroup(t.GetParentGroupID());
              if (!i)
                return (0, _.w)(!1, "Can't find group for chat room "), null;
              let o = this.ShowAndOrActivateChatRoomGroup(e, i, n);
              return o && o.SelectChat(t.GetRoomID()), o;
            }
            let i = this.ShowAndOrActivateTabByID(e, t.unique_id, n);
            return i?.GetChatView();
          }
          ShowAndOrActivateChatForTabset(e, t, n) {
            let i = e.GetTabForChat(t);
            i || this.CreateNewTabFromUniqueID(e, t.unique_id, !1),
              n && e.ActivateTab(i);
          }
          IsChatRoomGroupActive(e, t) {
            let n = this.GetPerContextChatData(e),
              i = this.GetTabSetByUniqueID(n, t.unique_id);
            return !!i && i.tabSet.activeTab == i.tab;
          }
          SetTheaterMode(e) {
            this.m_bTheaterMode = e;
          }
          GetTheaterMode() {
            return this.m_bTheaterMode;
          }
          SetFriendBroadcastVisible(e, t) {
            this.m_mapFriendChatBroadcastVisible.set(e, t);
          }
          IsFriendBroadcastVisible(e) {
            return this.m_mapFriendChatBroadcastVisible.get(e);
          }
          ShowAndOrActivateChatRoomGroup(e, t, n) {
            return t.BIsCurrentUserAMember()
              ? this.ShowAndOrActivateTabByID(e, t.unique_id, n)
              : (console.log(
                  "Failed to activate",
                  t,
                  "- user is not a member.",
                ),
                null);
          }
          ShowAndOrActivateChatRoomGroupWhenReady(e, t, n) {
            this.ShowAndOrActivateChatRoomGroup(e, t, n);
          }
          ShowUnackedGroup(e) {
            this.m_bRestoredPopupState
              ? this.ShowAndOrActivateChatRoomGroup(
                  r.xm?.GetDefaultBrowserContext() ?? h.m,
                  e,
                  !1,
                )
              : this.m_vecShowGroupsAfterRestorePopup.push(e);
          }
          ShowOrActivateBroadcast(e, t, n) {
            let i = "br" + t;
            return this.ShowAndOrActivateTabByID(e, i, n);
          }
          CloseTabByID(e, t) {
            t
              ? this.CloseTabByIDInContext(t, e)
              : this.m_mapChatBrowserContexts.forEach((t) => {
                  this.CloseTabByIDInContext(t.browser_context, e);
                });
          }
          ReplaceFriendChatWithGroup(e, t, n) {
            let i = this.GetPerContextChatData(e),
              o = this.GetTabSetByUniqueID(i, n.unique_id);
            o ||
              (this.ShowAndOrActivateChatRoomGroup(e, n, !0),
              (o = this.GetTabSetByUniqueID(i, n.unique_id))),
              (0, _.w)(o, "Failed to find group tab");
            let r = this.GetTabSetByUniqueID(i, t.chat.unique_id);
            if (!r) return;
            let a = o.tab,
              s = r.tabSet;
            o.tabSet != s && (o.tabSet.RemoveTab(a), s.AddTab(a)),
              s.MoveTabAfter(a, t),
              this.CloseTab(e, t),
              this.ShowAndOrActivateChatRoomGroup(e, n, !0);
          }
          ForEachTabSet(e, t) {
            e.IsFriendsListSingleWindow() &&
              e.default_tabset.tabCount > 0 &&
              t(e.default_tabset);
            for (let n of Array.from(e.popup_list)) t(n.tab_set);
          }
          CloseTab(e, t, n = !1) {
            let i = this.GetPerContextChatData(e);
            this.ForEachTabSet(i, (o) => {
              o.BHasTab(t) &&
                (n || o.RemoveTab(t),
                t.IsVoiceActive() &&
                  r.xm.ShowCloseActiveVoiceConfirmation(
                    e,
                    i.GetPopupForTabSet(o),
                  ));
            }),
              this.BroadcastCloseTabToAllBrowserContexts(e, t.GetUniqueID()),
              t.OnTabClosed(),
              i.IsFriendsListSingleWindow() &&
                0 == i.default_tabset.tabCount &&
                (i.responsive_window_state.SetActiveView(b.FriendsList),
                this.SetTheaterMode(!1),
                i.SetFriendsListCollapsed(!1)),
              r.xm.UIStore.SerializePopupState();
          }
          GetResponsiveWindowState(e) {
            return this.GetPerContextChatData(e).responsive_window_state;
          }
          CloseTabByIDInContext(e, t) {
            let n = this.GetPerContextChatData(e),
              i = this.GetTabSetByUniqueID(n, t);
            i &&
              (i.tabSet.RemoveTab(i.tab),
              i.tab.OnTabClosed(),
              this.BroadcastCloseTabToAllBrowserContexts(e, t));
          }
          ShowAndOrActivateTabByID(e, t, n = !0) {
            let i,
              o = this.GetPerContextChatData(e),
              a = this.GetTabSetByUniqueID(o, t);
            if (a) n && a.tabSet.ActivateTab(a.tab), (i = a.tab);
            else {
              let a = r.xm.SettingsStore.BAlwaysShowChatsInNewWindow();
              if (!o.BUsePopups() || (!a && o.default_tabset.is_popup_active))
                i = this.CreateNewTabFromUniqueID(o.default_tabset, t, n);
              else {
                let s;
                if (
                  ((s =
                    a && 0 != o.default_tabset.tabCount
                      ? new d(e)
                      : o.default_tabset),
                  (i = this.CreateNewTabFromUniqueID(s, t, n)),
                  !i)
                )
                  return null;
                let l = s == o.default_tabset;
                if (l && o.IsFriendsListSingleWindow())
                  r.xm.ShowPopupFriendsList(e, !n, n);
                else if (
                  !l ||
                  (!o.IsFriendsListSingleWindow() && !s.is_popup_active)
                ) {
                  const t = !(0, f.Pr)() && !n;
                  let i = r.xm.CreateChatPopup(
                    e,
                    this.GetNextChatPopupID(),
                    s,
                    void 0,
                    void 0,
                    t,
                  );
                  i.Show(n), o.AddPopup(s, i), this.SerializePopupState();
                }
              }
            }
            return (
              i && n && o.responsive_window_state.SetActiveView(b.Chat),
              r.xm.UIStore.SerializePopupState(),
              n && this.m_nTabActivationCount++,
              i
            );
          }
          GetTabSetByUniqueID(e, t) {
            if (!e) return null;
            let n = e.GetTabSetForId(t);
            return n ? { tabSet: n, tab: n.GetTabByUniqueID(t) } : null;
          }
          BIsTabSetActive(e) {
            let t = this.GetPerContextChatData(e.GetBrowserContext());
            if (t) return t.BIsTabSetActive(e);
          }
          BIsTabSetVisible(e) {
            let t = this.GetPerContextChatData(e.GetBrowserContext());
            if (t) return t.BIsTabSetVisible(e);
          }
          BIsTabSetFocused(e) {
            let t = this.GetPerContextChatData(e.GetBrowserContext());
            if (t) return t.BIsTabSetFocused(e);
          }
          GetAppContainerForChat(e) {
            let t = this.GetRootChatPerContextData(),
              n = null;
            if (e instanceof u.d) {
              let i = this.m_chatStore.GetChatRoomGroup(e.GetParentGroupID());
              i && (n = this.GetTabSetByUniqueID(t, i.unique_id));
            } else n = this.GetTabSetByUniqueID(t, e.unique_id);
            if (!n || !n.tabSet) return null;
            let i = t.GetPopupForTabSet(n.tabSet);
            return i
              ? i.popup
                ? i.popup.container
                : null
              : t.IsTabSetInFriendListWindow(n.tabSet)
                ? t.friends_list_window
                : null;
          }
          FlashChatWindow(e, t) {
            let n = this.GetAppContainerForChat(e);
            n && !n.BIsClosed() && n.FlashWindow(t);
          }
          IsChatWindowMinimized(e) {
            let t = this.GetAppContainerForChat(e);
            return !t || t.BIsClosed() ? Promise.resolve(!1) : t.IsMinimized();
          }
          GetContextKey(e) {
            return (0, h.u)(e, h.m) && 4 !== e.m_eUIMode
              ? "ROOT"
              : `${e.m_unPID}/${e.m_eUIMode}`;
          }
          GetPerContextChatData(e) {
            (0, _.w)(
              r.xm.ready_to_render || this.m_bRestoringPopups,
              "GetPerContextChatData called before ready",
              e,
            );
            const t = this.GetContextKey(e);
            let n = this.m_mapChatBrowserContexts.get(t);
            if (!n) {
              let i = r.xm.BIsValidBrowserContext(e);
              (n = new E(e)),
                i &&
                  ((0, _.w)(
                    0 == e.m_unPID || void 0 !== e.m_eUIMode,
                    "GetPerContextChatData - creating context for browser where uimode is undefined! This can cause problems in other places!",
                  ),
                  this.m_mapChatBrowserContexts.set(t, n));
            }
            return n;
          }
          BHasPerContextChatData(e) {
            const t = this.GetContextKey(e);
            return this.m_mapChatBrowserContexts.has(t);
          }
          GetAllBrowserContexts() {
            let e = [];
            return (
              this.m_mapChatBrowserContexts.forEach((t) =>
                e.push(t.browser_context),
              ),
              e
            );
          }
          GetDefaultTabSetForContext(e) {
            return this.GetPerContextChatData(e).default_tabset;
          }
          OnOverlayBrowserCreated(e, t, n) {
            this.m_overlayCreatedCallbackList.Dispatch(e);
            let i = this.GetPerContextChatData(e);
            if (!i) return;
            i.SetScreenInfo(t, n),
              i.SetFriendsListSingleWindowMode(
                r.xm.SettingsStore.BSingleWindowModeEnabled(),
              );
            let o = this.GetRootChatPerContextData();
            o &&
              (i.IsFriendsListSingleWindow() ||
                this.ForEachTabSet(o, (e) => {
                  let t = new d(i.browser_context);
                  e.tabs.forEach((n) => {
                    let i = e.activeTab == n;
                    this.CreateNewTabFromUniqueID(t, n.GetUniqueID(), i);
                  });
                  let n = r.xm.CreateChatPopup(
                    i.browser_context,
                    this.GetNextChatPopupID(),
                    t,
                    void 0,
                    void 0,
                    !1,
                  );
                  n.Show(!1), i.AddPopup(t, n);
                }));
          }
          RegisterForOverlayCreated(e) {
            const { Unregister: t } =
              this.m_overlayCreatedCallbackList.Register(e);
            return t;
          }
          OnOverlayBrowserChanged(e, t, n) {
            const i = {
              ...e,
              m_eUIMode: e.m_eUIMode ?? (r.xm.IsGamepadUIActive() ? 4 : 0),
            };
            let o = this.GetPerContextChatData(i);
            o && o.SetScreenInfo(t, n);
          }
          OnOverlayBrowserClosed(e) {
            let t = this.GetPerContextChatData(e);
            if (!t) return;
            (0, _.w)(
              e.m_nBrowserID == t.browser_context.m_nBrowserID,
              "Mismatch found in OnOverlayBrowserClosed",
            );
            const n = this.GetContextKey(e);
            if ((this.m_mapChatBrowserContexts.delete(n), e.m_unPID))
              for (const t of this.m_mapChatBrowserContexts.keys())
                t.startsWith(e.m_unPID.toString()) &&
                  this.m_mapChatBrowserContexts.delete(t);
          }
          BShouldSuppressBrowserContextBroadcasting(e) {
            return (
              !!o.TS.IN_CHROMEOS ||
              !!this.m_bSuppressBrowserContextBroadcasting ||
              !this.BHasPerContextChatData(e)
            );
          }
          SetSuppressBrowserContextBroadcasting(e) {
            this.m_bSuppressBrowserContextBroadcasting = e;
          }
          BroadcastNewTabToAllBrowserContexts(e, t) {
            this.BShouldSuppressBrowserContextBroadcasting(e) ||
              (this.SetSuppressBrowserContextBroadcasting(!0),
              this.m_mapChatBrowserContexts.forEach((n) => {
                if ((0, h.u)(n.browser_context, e)) return;
                if (
                  4 == e.m_eUIMode &&
                  n.browser_context.m_eUIMode !== e.m_eUIMode
                )
                  return;
                let i = !(0, h.u)(n.browser_context, h.m);
                this.ShowAndOrActivateTabByID(n.browser_context, t, i);
              }),
              this.SetSuppressBrowserContextBroadcasting(!1));
          }
          BroadcastCloseTabToAllBrowserContexts(e, t) {
            if (this.BShouldSuppressBrowserContextBroadcasting(e)) return;
            if ((0, h.u)(e, h.m))
              return void this.BroadcastCloseTabToAllBrowserContexts_Internal(
                e,
                t,
              );
            let n = this.GetPerContextChatData(e);
            n &&
              (0, h.u)(e, n.browser_context) &&
              this.BroadcastCloseTabToAllBrowserContexts_Internal(e, t);
          }
          BroadcastCloseTabToAllBrowserContexts_Internal(e, t) {
            this.BShouldSuppressBrowserContextBroadcasting(e) ||
              (this.SetSuppressBrowserContextBroadcasting(!0),
              this.m_mapChatBrowserContexts.forEach((n) => {
                (0, h.u)(n.browser_context, e) ||
                  this.CloseTabByIDInContext(n.browser_context, t);
              }),
              this.SetSuppressBrowserContextBroadcasting(!1));
          }
          CreateNewTabFromUniqueID(e, t, n, i = !1) {
            let o = r.xm.CreateNewTabFromUniqueID(
              e,
              t,
              this.m_bRestoringPopups,
              i,
            );
            return o
              ? (e.AddTab(o),
                this.BroadcastNewTabToAllBrowserContexts(
                  e.GetBrowserContext(),
                  t,
                ),
                n && e.ActivateTab(o),
                o)
              : null;
          }
          GetNextChatPopupID() {
            return "ChatWindow_" + this.m_iLastChatPopupID++;
          }
          BIsFriendsListSingleWindow(e) {
            let t = this.GetPerContextChatData(e);
            return !t.BUsePopups() || t.IsFriendsListSingleWindow();
          }
          BIsFriendsListEmbedded(e) {
            return this.GetPerContextChatData(e).BIsFriendsListEmbedded();
          }
          BIsFriendsListCollapsed(e) {
            let t = this.GetPerContextChatData(e);
            return t.IsFriendsListSingleWindow() && t.IsFriendsListCollapsed();
          }
          SetFriendsListCollapsed(e, t) {
            this.GetPerContextChatData(e).SetFriendsListCollapsed(t);
          }
          ConvertDefaultTabSetToPopup(e) {
            let t = this.GetPerContextChatData(e);
            if (t.default_tabset.tabCount) {
              let n = t.GetPopupForTabSet(t.default_tabset);
              return (
                n ||
                ((n = r.xm.CreateChatPopup(
                  e,
                  this.GetNextChatPopupID(),
                  t.default_tabset,
                  t.cached_popup_window_restore_details,
                  void 0,
                  !1,
                )),
                n.Show(!(0, h.u)(e, h.m)),
                t.AddPopup(t.default_tabset, n),
                this.SerializePopupState(),
                t.friends_list_window &&
                  (t.friends_list_window.BringToFront(),
                  (t.friends_list_window.title = (0, c.we)(
                    "#WindowTitle_FriendsList",
                  ))),
                n)
              );
            }
            return null;
          }
          ConvertDefaultTabSetToEmbedded(e) {
            let t = this.GetPerContextChatData(e),
              n = t.GetPopupForTabSet(t.default_tabset);
            n &&
              (n.popup.GetWindowRestoreDetails().then((e) => {
                t.SetCachedDefaultPopupDimensions(e);
              }),
              t.RemovePopupForTabSet(t.default_tabset),
              this.SerializePopupState(),
              n.ClearTabSet(),
              n.popup.Close());
          }
          MergeTabSets(e) {
            const t = this.GetPerContextChatData(e);
            this.ForEachTabSet(t, (e) => {
              e !== t.default_tabset &&
                e.tabs.forEach((n) => {
                  e.RemoveTab(n), t.default_tabset.AddTab(n);
                });
            });
          }
          OnTabSetResized(e) {
            let t = this.GetPerContextChatData(e.GetBrowserContext());
            if (e == t.default_tabset && !t.IsFriendsListSingleWindow()) {
              let n = t.GetPopupForTabSet(e);
              n &&
                n.popup.GetWindowRestoreDetails().then((e) => {
                  t.SetCachedDefaultPopupDimensions(e);
                });
            }
          }
          CloseTabSet(e) {
            let t = this.GetPerContextChatData(e.GetBrowserContext()),
              n = t.GetPopupForTabSet(e);
            n && n.popup.Close(),
              t.RemovePopupForTabSet(e),
              this.SerializePopupState();
          }
          OnTabSetClosed(e) {
            this.GetPerContextChatData(
              e.GetBrowserContext(),
            ).RemovePopupForTabSet(e),
              this.SerializePopupState();
          }
          FocusTabSet(e) {
            let t = this.GetPerContextChatData(e.GetBrowserContext()),
              n = t.GetPopupForTabSet(e);
            n && n.popup && !n.popup.container.BIsClosed()
              ? n.popup.container.BringToFront()
              : t.IsTabSetInFriendListWindow(e) &&
                t.IsFriendsListSingleWindow() &&
                (t.BUsePopups()
                  ? r.xm.ShowPopupFriendsList(t.browser_context, !1, !0)
                  : t.friends_list_window &&
                    t.friends_list_window.BringToFront());
          }
          MoveTabToNewPopup(e, t, n, i) {
            (0, _.w)(e, "browserContext");
            let o = this.GetPerContextChatData(e);
            this.ForEachTabSet(o, (e) => e.RemoveTab(t));
            let a = new d(e);
            a.AddTab(t);
            let s = r.xm.CreateChatPopup(
              e,
              this.GetNextChatPopupID(),
              a,
              i,
              n,
              !1,
            );
            if ((s.Show(!0), i)) {
              let e = s.popup.GetWindow();
              try {
                e.SteamClient.Window.PositionWindowRelative(
                  i,
                  n.left,
                  n.top,
                  n.width,
                  n.height,
                );
              } catch (e) {
                console.error(e);
              }
            }
            o.AddPopup(a, s), this.SerializePopupState();
          }
          SerializePopupState(e = !1) {
            if (!this.m_bRestoredPopupState || !r.xm.SettingsStore.BReady())
              return;
            if (this.m_bShuttingDown) return;
            let t = this.SerializePopupStateToObject(e);
            r.xm.SettingsStore.StoreObjectInLocalStorage(S, t);
          }
          SerializePopupStateToObject(e) {
            let t = this.GetPerContextChatData(h.m),
              n = {
                window_restore_details: t.cached_popup_window_restore_details,
                defaultTabs: void 0,
                popupTabs: void 0,
                bFriendsListVisible: !1,
                always_restore: e,
                bFriendsListCollapsed: t.IsFriendsListCollapsed(),
              };
            t.default_tabset &&
              t.default_tabset.tabCount > 0 &&
              (n.defaultTabs = t.default_tabset.Serialize());
            let i = [];
            for (let e of Array.from(t.popup_list))
              e.tab_set != t.default_tabset && i.push(e.tab_set.Serialize());
            return (
              i.length > 0 && (n.popupTabs = i),
              (n.bFriendsListVisible = !!t.friends_list_window),
              n
            );
          }
          BRestorePopups() {
            return r.xm.SettingsStore.BAlwaysShowChatsInNewWindow();
          }
          BRestoreOpenChats() {
            return r.xm.SettingsStore.FriendsSettings.bRememberOpenChats;
          }
          DeserializeIntoTabSet(e, t) {
            if (t.tabs && Array.isArray(t.tabs))
              for (let n of t.tabs)
                n.startsWith("br") ||
                  this.CreateNewTabFromUniqueID(e, n, n == t.active_tab, !0);
          }
          SetStateToRestoreFrom(e) {
            this.m_stateToRestoreFrom = e;
          }
          async RestorePopupState() {
            if (r.xm.IsGamepadUIActive()) return;
            if (
              ((0, _.w)(
                !this.m_bRestoredPopupState,
                "Second restore popup state",
              ),
              (0, _.w)(
                !this.m_bRestoringPopups,
                "RestorePopupState called while already restoring",
              ),
              r.xm.ParentalStore.BIsFriendsBlocked() ||
                r.xm.SettingsStore.IsSteamInTournamentMode())
            )
              return;
            if (((this.m_bRestoringPopups = !0), this.m_stateToRestoreFrom))
              return (
                this.RestoreFromStateObject(this.m_stateToRestoreFrom, !1),
                (this.m_stateToRestoreFrom = void 0),
                void (this.m_bRestoringPopups = !1)
              );
            let e =
                await r.xm.SettingsStore.GetObjectFromLocalStorageWhenReady(S),
              t = !1;
            "undefined" != typeof SteamClient &&
              SteamClient.WebChat &&
              SteamClient.WebChat.BSuppressPopupsInRestore &&
              (t = await SteamClient.WebChat.BSuppressPopupsInRestore()),
              this.RestoreFromStateObject(e, t),
              (this.m_bRestoringPopups = !1);
          }
          RestoreFromStateObject(e, t) {
            let n = this.GetPerContextChatData(h.m);
            if (
              ((0, _.w)(n.BIsEmpty(), "Restoring to non-empty context", n),
              n.BIsEmpty())
            ) {
              if (
                (e.window_restore_details &&
                  n.SetCachedDefaultPopupDimensions(e.window_restore_details),
                void 0 !== e.bFriendsListSingleWindow &&
                  r.xm.SettingsStore.BackfillSingleWindowMode(
                    e.bFriendsListSingleWindow,
                  ),
                n.SetFriendsListSingleWindowMode(
                  r.xm.SettingsStore.BSingleWindowModeEnabled(),
                ),
                n.SetFriendsListCollapsed(!!e.bFriendsListCollapsed),
                !t && (e.always_restore || this.BRestoreOpenChats()))
              ) {
                if (e.defaultTabs) {
                  let t = n.default_tabset;
                  if (
                    (this.DeserializeIntoTabSet(t, e.defaultTabs),
                    t.tabCount > 0 && !n.IsFriendsListSingleWindow())
                  ) {
                    let e = r.xm.CreateChatPopup(
                      r.xm.GetDefaultBrowserContext(),
                      this.GetNextChatPopupID(),
                      t,
                      void 0,
                      void 0,
                      !1,
                    );
                    n.AddPopup(t, e), e.Show(!1);
                  }
                }
                if (e.popupTabs)
                  for (let t of e.popupTabs) {
                    let e = new d(h.m);
                    if ((this.DeserializeIntoTabSet(e, t), e.tabCount > 0)) {
                      let t = r.xm.CreateChatPopup(
                        r.xm.GetDefaultBrowserContext(),
                        this.GetNextChatPopupID(),
                        e,
                        void 0,
                        void 0,
                        !1,
                      );
                      n.AddPopup(e, t), t.Show(!1);
                    }
                  }
              }
              if (!t) {
                let t =
                  !e ||
                  void 0 === e.bFriendsListVisible ||
                  e.bFriendsListVisible;
                n.BUsePopups() && r.xm.ShowPopupFriendsListAtStartup(t);
                for (let e of this.m_vecShowGroupsAfterRestorePopup)
                  this.ShowAndOrActivateChatRoomGroup(h.m, e, !1);
              }
              (this.m_vecShowGroupsAfterRestorePopup = []),
                (this.m_bRestoredPopupState = !0),
                this.m_chatStore.OnRestorePopupsComplete();
            }
          }
          async ResetHasRestoredPopupState() {
            this.m_bRestoredPopupState = !1;
          }
          RestorePopupStateForMobile() {
            this.m_bRestoringPopups = !0;
            this.GetPerContextChatData(h.m).SetFriendsListSingleWindowMode(!0),
              (this.m_bRestoringPopups = !1);
          }
          FillInChatUsabilityMetrics(e) {
            let t = this.GetPerContextChatData(h.m);
            e.ui_state().set_friends_list_docked(t.IsFriendsListSingleWindow()),
              e
                .ui_state()
                .set_friends_list_visible(
                  t.friends_list_window && !t.friends_list_window.BIsClosed(),
                ),
              e
                .ui_state()
                .set_chat_popups_opened(Array.from(t.popup_list).length),
              e
                .ui_state()
                .set_friends_list_collapsed(t.IsFriendsListCollapsed());
            let n = 0,
              i = 0;
            (n += l.$D(t.default_tabset.tabs, (e) => e.IsChatRoom())),
              (i += l.$D(t.default_tabset.tabs, (e) => e.IsFriendChat()));
            for (let e of Array.from(t.popup_list))
              e.tab_set != t.default_tabset &&
                ((n += l.$D(e.tab_set.tabs, (e) => e.IsChatRoom())),
                (i += l.$D(e.tab_set.tabs, (e) => e.IsFriendChat())));
            e.ui_state().set_group_chat_tabs_opened(n),
              e.ui_state().set_friend_chat_tabs_opened(i);
          }
          get show_winter_sale_ui() {
            return this.m_bShowWinterSaleUI;
          }
          StartWinterSaleCountdown() {
            const e = 15767784e5;
            Date.now() >= e
              ? (this.m_bShowWinterSaleUI = !0)
              : setTimeout(
                  () => this.StartWinterSaleCountdown(),
                  e - Date.now(),
                );
          }
          get FriendsListSteamDeckActiveTab() {
            return this.m_eFriendsListSteamDeckActiveTab;
          }
          set FriendsListSteamDeckActiveTab(e) {
            if (e == this.m_eFriendsListSteamDeckActiveTab) return;
            let t = this.m_eFriendsListSteamDeckActiveTab;
            (this.m_eFriendsListSteamDeckActiveTab = e),
              this.m_FriendsListSteamDeckActiveTabCallbackList.Dispatch(t, e);
          }
          SelectFriendsListSteamDeckSiblingTab(e) {
            let t = this.m_eFriendsListSteamDeckActiveTab + e;
            t >= 0 && t <= v.MaxTab && (this.FriendsListSteamDeckActiveTab = t);
          }
          FriendsListSteamDeckActiveTabCallbackList() {
            return this.m_FriendsListSteamDeckActiveTabCallbackList;
          }
        }
        (0, i.Cg)([a.sH], I.prototype, "m_bTheaterMode", void 0),
          (0, i.Cg)(
            [a.sH],
            I.prototype,
            "m_mapFriendChatBroadcastVisible",
            void 0,
          ),
          (0, i.Cg)([a.sH], I.prototype, "m_nTabActivationCount", void 0),
          (0, i.Cg)([a.sH], I.prototype, "m_bShowWinterSaleUI", void 0),
          (0, i.Cg)([a.XI], I.prototype, "OnFriendsParentalLockChanged", null),
          (0, i.Cg)([r.Nw], I.prototype, "ShowFriendChatDialogWhenReady", null),
          (0, i.Cg)(
            [r.Nw],
            I.prototype,
            "ShowAndOrActivateChatRoomGroupWhenReady",
            null,
          ),
          (0, i.Cg)([C.oI], I.prototype, "SerializePopupState", null);
        class w {
          m_popup;
          m_chatPopup;
          m_bShown = !1;
          constructor(e, t) {
            (this.m_popup = e), (this.m_chatPopup = t);
          }
          Show(e) {
            this.m_popup.Show(e), this.m_bShown || (this.m_bShown = !0);
          }
          get popup() {
            return this.m_popup;
          }
          get tab_set() {
            return this.m_chatPopup.tab_set;
          }
          ClearTabSet() {
            this.m_chatPopup.ClearTabSet();
          }
          IsSameBrowserContext(e) {
            let t = this.m_popup.GetBrowserContext() || h.m;
            return e.m_nBrowserID == t.m_nBrowserID && e.m_unPID == t.m_unPID;
          }
        }
        !(function (e) {
          (e[(e.FriendsList = 0)] = "FriendsList"), (e[(e.Chat = 1)] = "Chat");
        })(b || (b = {}));
        class y {
          constructor() {
            (0, a.Gn)(this);
          }
          m_eActiveView = b.FriendsList;
          GetActiveView() {
            return this.m_eActiveView;
          }
          SetActiveView(e) {
            this.m_eActiveView = e;
          }
        }
        (0, i.Cg)([a.sH], y.prototype, "m_eActiveView", void 0);
        class E {
          m_browserContext;
          m_DefaultTabSet = void 0;
          m_ResponsiveWindowState;
          m_FriendsListWindow;
          m_bFriendsListSingleWindow = void 0;
          m_bFriendsListCollapsed = void 0;
          m_PopupWindowRestoreDetails;
          m_mapTabSetToPopup;
          m_ScreenInfo;
          constructor(e) {
            (0, a.Gn)(this),
              (this.m_browserContext = e),
              (this.m_DefaultTabSet = new d(e)),
              (this.m_FriendsListWindow = void 0),
              (this.m_PopupWindowRestoreDetails = void 0),
              (this.m_mapTabSetToPopup = new Map()),
              (this.m_ResponsiveWindowState = new y()),
              this.SetFriendsListSingleWindowMode(!1),
              (this.m_bFriendsListCollapsed = o.TS.STEAM_TV);
          }
          BIsEmpty() {
            return (
              0 == this.m_DefaultTabSet.tabCount &&
              (!o.TS.IN_CLIENT ||
                null == this.m_FriendsListWindow ||
                r.xm.IsLoadedInClientSharedJSContext()) &&
              0 == this.m_mapTabSetToPopup.size
            );
          }
          BUsePopups() {
            return (
              o.TS.USE_POPUPS &&
              4 !== this.m_browserContext.m_eUIMode &&
              !(0, p.BK)(this.m_browserContext.m_eBrowserType)
            );
          }
          BIsFriendsListEmbedded() {
            return (0, h.u)(h.m, this.m_browserContext)
              ? !this.BUsePopups()
              : 4 === this.m_browserContext.m_eUIMode;
          }
          IsFriendsListSingleWindow() {
            return this.m_bFriendsListSingleWindow;
          }
          SetFriendsListSingleWindowMode(e) {
            this.BUsePopups()
              ? (this.m_bFriendsListSingleWindow = e)
              : (this.m_bFriendsListSingleWindow = !0);
          }
          IsFriendsListCollapsed() {
            return this.m_bFriendsListCollapsed;
          }
          SetFriendsListCollapsed(e) {
            this.m_bFriendsListCollapsed = e;
          }
          get browser_context() {
            return this.m_browserContext;
          }
          get default_tabset() {
            return (
              (0, _.w)(
                this.m_DefaultTabSet,
                "Context has no default chat target",
              ),
              this.m_DefaultTabSet
            );
          }
          get friends_list_window() {
            return this.m_FriendsListWindow;
          }
          SetFriendsListWindow(e) {
            (this.m_FriendsListWindow = e || void 0),
              !e &&
                this.IsFriendsListSingleWindow() &&
                this.m_DefaultTabSet.CloseAllTabs();
          }
          get popup_list() {
            return this.m_mapTabSetToPopup.values();
          }
          get responsive_window_state() {
            return this.m_ResponsiveWindowState;
          }
          get cached_popup_window_restore_details() {
            return this.m_PopupWindowRestoreDetails;
          }
          get screen_info() {
            return this.m_ScreenInfo;
          }
          SetScreenInfo(e, t) {
            this.m_ScreenInfo = { width: e, height: t };
          }
          SetCachedDefaultPopupDimensions(e) {
            this.m_PopupWindowRestoreDetails = e;
          }
          GetTabSetForId(e) {
            if (this.m_DefaultTabSet.GetTabByUniqueID(e))
              return this.m_DefaultTabSet;
            for (let t of Array.from(this.m_mapTabSetToPopup.keys()))
              if (t.GetTabByUniqueID(e)) return t;
            return null;
          }
          RemovePopupForTabSet(e) {
            this.m_mapTabSetToPopup.delete(e);
          }
          AddPopup(e, t) {
            (0, _.w)(
              !this.m_mapTabSetToPopup.has(e),
              "Added popup for tabset twice",
            ),
              this.m_mapTabSetToPopup.set(e, t);
          }
          GetPopupForTabSet(e) {
            return this.m_mapTabSetToPopup.get(e);
          }
          IsTabSetInFriendListWindow(e) {
            return e == this.default_tabset && this.IsFriendsListSingleWindow();
          }
          BIsTabSetActive(e) {
            let t = this.GetPopupForTabSet(e);
            return t?.popup?.container
              ? !t.popup.container.BIsClosed()
              : this.IsTabSetInFriendListWindow(e) &&
                  this.friends_list_window &&
                  !this.friends_list_window.BIsClosed();
          }
          BIsTabSetVisible(e) {
            let t = this.GetPopupForTabSet(e);
            return t
              ? t.popup.container.BIsVisible()
              : this.IsTabSetInFriendListWindow(e) &&
                  this.friends_list_window &&
                  this.friends_list_window.BIsVisible();
          }
          BIsTabSetFocused(e) {
            let t = this.GetPopupForTabSet(e);
            return t
              ? t.popup.container.BIsFocused()
              : this.IsTabSetInFriendListWindow(e) &&
                  this.friends_list_window &&
                  this.friends_list_window.BIsFocused();
          }
          CloseAllPopups() {
            for (let e of Array.from(this.popup_list)) e.popup.Close();
            this.m_mapTabSetToPopup.clear(),
              this.friends_list_window && this.m_FriendsListWindow.Close(),
              (this.m_DefaultTabSet = new d(this.m_browserContext));
          }
        }
        (0, i.Cg)([a.sH], E.prototype, "m_DefaultTabSet", void 0),
          (0, i.Cg)([a.sH], E.prototype, "m_bFriendsListSingleWindow", void 0),
          (0, i.Cg)([a.sH], E.prototype, "m_bFriendsListCollapsed", void 0);
      },
      27828: (e, t, n) => {
        "use strict";
        n.d(t, { F$: () => ne, HT: () => W.H });
        var i = n(34629),
          o = n(78116),
          r = n(45518),
          a = n(46014),
          s = n(58663),
          l = n(12054),
          c = n(67033),
          m = n(9907);
        let d = new (class {
          m_socket;
          m_promiseConnect;
          m_bClientConnectionFailed = !1;
          m_bSecurityException = !1;
          m_bReady = !1;
          m_mapCallbacks = new Map();
          m_RegisterForVRModeChangeHandle;
          m_ConnectCallbacks = new m.lu();
          m_DisconnectCallbacks = new m.lu();
          constructor() {}
          IsConnected() {
            return this.m_bReady && this.m_socket?.readyState == WebSocket.OPEN;
          }
          WaitUntilConnected() {
            return this.IsConnected()
              ? Promise.resolve()
              : new Promise((e) => {
                  let t = this.m_ConnectCallbacks.Register(() => {
                    e(), t.Unregister();
                  });
                });
          }
          RegisterOnDisconnect(e) {
            return this.m_DisconnectCallbacks.Register(e);
          }
          BSendMsg(e, t, n) {
            if (!this.IsConnected()) return !1;
            try {
              let i = new l.S1();
              i.set_type(e), null != n && i.set_id(n);
              let o = i.serializeBinary();
              if (o.length > 255) return !1;
              let r = t.serializeBinary(),
                a = new Uint8Array(1 + o.length + r.length),
                s = new c.pV(a);
              return (
                s.PutUint8(o.length),
                s.PutBytes(o),
                s.PutBytes(r),
                this.m_socket.send(a),
                !0
              );
            } catch (e) {
              return !1;
            }
          }
          RegisterOnMsg(e, t, n) {
            if (!("SteamClient" in window) || null == SteamClient) return;
            let i = this.m_mapCallbacks.get(e);
            i ||
              ((i = { msgClass: t, list: new m.lu() }),
              this.m_mapCallbacks.set(e, i));
            let o = i.list.Register(n);
            return (
              !this.m_RegisterForVRModeChangeHandle &&
                SteamClient.OpenVR?.RegisterForVRModeChange &&
                (this.m_RegisterForVRModeChangeHandle =
                  SteamClient.OpenVR.RegisterForVRModeChange((e) => {
                    e ? this.Connect() : this.Disconnect();
                  })),
              {
                Unregister: () => {
                  o.Unregister(),
                    this.BHasCallbacks() ||
                      (this.Disconnect(),
                      this.m_RegisterForVRModeChangeHandle &&
                        (this.m_RegisterForVRModeChangeHandle.unregister(),
                        (this.m_RegisterForVRModeChangeHandle = void 0)));
                },
              }
            );
          }
          BHasCallbacks() {
            return [...this.m_mapCallbacks.values()].some(
              (e) => e.list.CountRegistered() > 0,
            );
          }
          OnSocketMessage(e) {
            try {
              let t = new c.pV(e.data),
                n = t.GetUint8(),
                i = new l.S1();
              l.S1.deserializeBinaryFromReader(
                i,
                new s.BinaryReader(t.GetPacket(), t.TellGet(), n),
              ),
                t.SeekGetCurrent(n);
              let o = this.m_mapCallbacks.get(i.type());
              if (o) {
                let e = new o.msgClass();
                o.msgClass.deserializeBinaryFromReader(
                  e,
                  new s.BinaryReader(
                    t.GetPacket(),
                    t.TellGet(),
                    t.GetCountBytesRemaining(),
                  ),
                ),
                  o.list.Dispatch(e, i.id());
              }
            } catch (e) {
              console.error("Exception deserializing protobuf", e);
            }
          }
          Connect() {
            if ("SteamClient" in window && null != SteamClient)
              return this.IsConnected()
                ? Promise.resolve()
                : (this.m_promiseConnect ||
                    ((this.m_promiseConnect = new Promise(async (e, t) => {
                      try {
                        this.m_socket = new WebSocket(
                          `ws://localhost:27062?secret=${await SteamClient.OpenVR.GetWebSecret()}`,
                        );
                      } catch (e) {
                        return (
                          console.error(
                            "Exception creating websocket connection",
                            e,
                          ),
                          (this.m_bSecurityException = !0),
                          void t(e)
                        );
                      }
                      (this.m_socket.onerror = (e) => {
                        console.error("Socket error", e), t();
                      }),
                        (this.m_socket.binaryType = "arraybuffer"),
                        (this.m_socket.onmessage =
                          this.OnSocketMessage.bind(this)),
                        (this.m_socket.onopen = () => {
                          this.m_socket.send("steam_connect"), e();
                        }),
                        (this.m_socket.onclose = () => {
                          (this.m_bReady = !1),
                            (this.m_socket = void 0),
                            this.m_DisconnectCallbacks.Dispatch();
                        });
                    })),
                    this.m_promiseConnect
                      .then(() => {
                        (this.m_bReady = !0),
                          this.m_ConnectCallbacks.Dispatch();
                      })
                      .catch(() => {
                        this.m_bClientConnectionFailed = !0;
                      })
                      .finally(() => {
                        this.m_promiseConnect = void 0;
                      })),
                  this.m_promiseConnect);
          }
          Disconnect() {
            this.m_socket && this.m_socket.close();
          }
        })();
        var u = n(88964);
        function h(e) {
          try {
            return { result: e() };
          } catch (e) {
            return { error: e };
          }
        }
        var p;
        !(function (e) {
          (e[(e.Success = 0)] = "Success"),
            (e[(e.HeaderSerializationFailure = 1)] =
              "HeaderSerializationFailure"),
            (e[(e.PayloadSerializationFailure = 2)] =
              "PayloadSerializationFailure"),
            (e[(e.SendFailure = 3)] = "SendFailure");
        })(p || (p = {}));
        class _ extends Error {
          error;
          constructor(e) {
            let t = "";
            switch (e?.origin) {
              case 1:
                t += "Local ";
                break;
              case 2:
                t += "Remote ";
            }
            (t += (0, u.Ut)(e?.error ?? 0)),
              e?.description && (t += ": " + e.description),
              super(t),
              (this.error = e);
          }
        }
        class g {
          m_mapRequestHandlers;
          m_Endpoint;
          m_mapMethods = new Map();
          SetImplementation(e, t) {
            this.m_mapMethods.has(e) &&
              console.error(
                "CVRGamepadUI Message Service already has an existing implementation for method:",
                e,
              ),
              this.m_mapMethods.set(e, t);
          }
          ClearImplementation(e) {
            this.m_mapMethods.delete(e);
          }
          constructor(e, t) {
            (this.m_Endpoint = e), (this.m_mapRequestHandlers = t);
          }
          SendErrorResponse(e, t, n) {
            if (null == e?.message_id) return;
            const i = new u.iM();
            i.set_error(t),
              i.set_origin(2),
              n instanceof Error
                ? i.set_description(n.message)
                : n && "string" == typeof n && i.set_description(n),
              console.error(
                "Sending VRGamepadUI Message Error Response",
                (0, u.Ut)(t),
                ":",
                i.description(),
              );
            const o = {
                message_id: this.m_Endpoint.CreateVRGamepadUIMessageId(),
                response_to_message_id: e.message_id,
                is_error_response: !0,
              },
              r = this.m_Endpoint.SendVRGamepadUIMessage(o, i);
            r == p.Success ||
              console.error(
                "Failed to send VRGamepadUI Message Error Response:",
                p[r],
                { requestHeader: e, responseHeader: o },
              );
          }
          HandleVRGamepadUIMessageRequest(e, t) {
            console.assert(null == e.response_to_message_id);
            const n = this.m_mapRequestHandlers[e.name];
            if (!n)
              return void this.SendErrorResponse(
                e,
                1,
                `Unknown VRGamepadUI request name: ${e.name}`,
              );
            const i = this.m_mapMethods.get(n.strMethod);
            if (!i)
              return void this.SendErrorResponse(
                e,
                1,
                `Unimplemented VRGamepadUI method: ${n.strMethod}`,
              );
            const o = h(() =>
              n.msgClassRequest_t.deserializeBinary(t).toObject(),
            );
            if ("error" in o) return void this.SendErrorResponse(e, 7, o.error);
            const r = o.result,
              a = h(() => i(r));
            if ("error" in a) return void this.SendErrorResponse(e, 2, a.error);
            let s = a.result;
            null == s && (s = {});
            (s instanceof Promise ? s : Promise.resolve(s)).then(
              (t) => {
                const i = h(() => n.msgClassResponse_t.fromObject(t ?? {}));
                if ("error" in i)
                  return void this.SendErrorResponse(e, 6, i.error);
                const o = {
                    message_id: this.m_Endpoint.CreateVRGamepadUIMessageId(),
                    response_to_message_id: e.message_id,
                  },
                  r = this.m_Endpoint.SendVRGamepadUIMessage(o, i.result);
                if (r == p.Success);
                else
                  switch (r) {
                    case p.HeaderSerializationFailure:
                    case p.PayloadSerializationFailure:
                      this.SendErrorResponse(e, 6, "Response " + p[r]);
                      break;
                    default:
                      console.error(
                        "Failed to send VRGamepadUI Message Response:",
                        p[r],
                        { requestHeader: e, responseHeader: o },
                      );
                  }
              },
              (t) => {
                this.SendErrorResponse(e, 3, t);
              },
            );
          }
        }
        class C {
          m_Endpoint;
          m_mapPendingResponses = new Map();
          constructor(e) {
            this.m_Endpoint = e;
          }
          HandleVRGamepadUIMessageResponse(e, t) {
            if (!this.m_mapPendingResponses.has(e.response_to_message_id))
              return void console.error(
                "Received a VRGamepadUI Message Response to a message we weren't awaiting a response for (or we already received one):",
                e,
              );
            const n = this.m_mapPendingResponses.get(e.response_to_message_id);
            if (
              (this.DeletePendingRequest(e.response_to_message_id),
              e.is_error_response)
            ) {
              const i = h(() => u.iM.deserializeBinary(t).toObject());
              if ("error" in i)
                return void console.error(
                  "Received a VRGamepadUI Message error response, but couldn't deserialize it.",
                  e,
                );
              const o = new _(i.result);
              return (
                console.warn(
                  "Received a VRGamepadUI Message error response",
                  o.message,
                ),
                void n.fnReject(o)
              );
            }
            const i = h(() =>
              n.msgExpectedResponseClass_t.deserializeBinary(t).toObject(),
            );
            "error" in i
              ? console.error(
                  "Received a VRGamepadUI Message response, but couldn't deserialize it.",
                  e,
                )
              : n.fnResolve(i.result);
          }
          SendVRGamepadUIRequest(e, t, n) {
            return new Promise((i, o) => {
              const r = (e) => {
                try {
                  o(e);
                } catch (e) {
                  console.error(
                    "Error rejecting VRGamepadUI Message request call:",
                    e,
                  );
                }
              };
              if (!this.m_Endpoint.IsConnected())
                return void r(new _({ error: 4 }));
              const a = this.m_Endpoint.CreateVRGamepadUIMessageId(),
                s = window.setTimeout(() => this.HandleTimeout(a), 5e3);
              this.m_mapPendingResponses.set(a, {
                msgExpectedResponseClass_t: n,
                nTimeoutHandle: s,
                fnResolve: (e) => {
                  try {
                    i(e);
                  } catch (e) {
                    console.error(
                      "Error resolving VRGamepadUI Message request call:",
                      e,
                    );
                  }
                },
                fnReject: r,
              });
              const l = { name: e, message_id: a },
                c = this.m_Endpoint.SendVRGamepadUIMessage(l, t);
              c == p.Success ||
                r(
                  new _({
                    error: 0,
                    origin: 1,
                    description: "Request " + p[c],
                  }),
                );
            });
          }
          HandleTimeout(e) {
            const t = this.m_mapPendingResponses.get(e);
            this.DeletePendingRequest(e), t?.fnReject(new _({ error: 5 }));
          }
          DeletePendingRequest(e) {
            const t = this.m_mapPendingResponses.get(e);
            this.m_mapPendingResponses.delete(e),
              t?.nTimeoutHandle && window.clearTimeout(t.nTimeoutHandle);
          }
        }
        var f = n(8805);
        const S = new f.wd("VRGamepadUIMessages");
        const v = new (class {
          m_Steam_Provider = new g(this, u.nV);
          m_SteamVR_Client = new C(this);
          m_SteamVR_ClientMethods = new u._i(this.m_SteamVR_Client);
          m_unNextVRGamepadUIMessageId = 1;
          get Steam() {
            return this.m_Steam_Provider;
          }
          get SteamVR() {
            return this.m_SteamVR_ClientMethods;
          }
          async Init() {
            d.RegisterOnMsg(33, l.sR, (e) => {
              const t = (function (e) {
                try {
                  return u.DX.deserializeBinary(e).toObject();
                } catch (e) {
                  return void console.error(
                    "Received a VRGamepadUI Message but couldn't deserialize the header!",
                    e?.message,
                  );
                }
              })(e.header());
              t &&
                (S.IsDebugEnabled() &&
                  (null == t.response_to_message_id
                    ? S.Debug(
                        `Received ${t.name ?? "(unknown)"} request from SteamVR:`,
                        { header: t },
                      )
                    : S.Debug("Received response from SteamVR:", {
                        header: t,
                      })),
                null == t.response_to_message_id
                  ? this.m_Steam_Provider.HandleVRGamepadUIMessageRequest(
                      t,
                      e.payload(),
                    )
                  : this.m_SteamVR_Client.HandleVRGamepadUIMessageResponse(
                      t,
                      e.payload(),
                    ));
            });
          }
          CreateVRGamepadUIMessageId() {
            return this.m_unNextVRGamepadUIMessageId++;
          }
          SendVRGamepadUIMessage(e, t) {
            let n, i;
            try {
              n = u.DX.fromObject(e).serializeBinary();
            } catch (e) {
              return p.HeaderSerializationFailure;
            }
            try {
              i = t.serializeBinary();
            } catch (e) {
              return p.PayloadSerializationFailure;
            }
            S.IsDebugEnabled() &&
              (null == e.response_to_message_id
                ? S.Debug(
                    `Sending ${e.name ?? "(unknown)"} request to SteamVR:`,
                    { header: e, payload: t.toObject() },
                  )
                : S.Debug("Sending response to SteamVR:", {
                    header: e,
                    payload: t.toObject(),
                  }));
            const o = new l.sR();
            return (
              o.set_header(n),
              o.set_payload(i),
              d.BSendMsg(33, o) ? p.Success : p.SendFailure
            );
          }
          IsConnected() {
            return d.IsConnected();
          }
        })();
        const b = v;
        var I = n(58743),
          w = n(77631),
          y = n(83310),
          E = n(82924),
          D = n(89193);
        n(17070);
        class A {
          m_Supplier;
          m_Disposers = [];
          m_Session;
          m_GroupNameDisposer;
          m_SteamVRMsgHandlers = [];
          m_VoiceChatActiveStateChangedHandle;
          m_ChatGroupAddedHandle;
          m_NewChatMsgAddedHandles;
          Log = new f.wd("VR");
          constructor() {
            (0, D.Gn)(this);
          }
          SetSession(e) {
            this.m_Session &&
              I.xm.ChatStore.DecRefActiveChatRoomGroup(this.m_Session.groupID),
              (this.m_Session = e),
              this.m_Session &&
                (I.xm.ChatStore.IncRefActiveChatRoomGroup(
                  this.m_Session.groupID,
                  !0,
                ),
                this.m_VoiceChatActiveStateChangedHandle ||
                  (this.m_VoiceChatActiveStateChangedHandle =
                    this.m_Supplier?.RegisterForVoiceChatActiveStateChange(
                      this.OnVoiceChatActiveStateChanged,
                    )));
          }
          SendGroupName(e) {
            this.Log.Debug("Group: ", e);
            let t = new y.sT();
            t.set_name(e), d.BSendMsg(32, t);
          }
          RegisterForNewChatMessages() {
            if (!this.m_Session)
              return void this.Log.Debug(
                "RegisterForNewChatMessages: session not set",
              );
            let e = I.xm.ChatStore.GetChatRoomGroup(this.m_Session.groupID);
            this.Log.Debug("RegisterForNewChatMessages: ", e),
              (this.m_NewChatMsgAddedHandles = e?.textRoomList.map((e) =>
                e.RegisterOnNewChatMsgAdded(this.OnNewChatMsgAdded),
              )),
              e &&
                (this.SendGroupName(e.name),
                (this.m_GroupNameDisposer = (0, D.lB)(e, "name", (e) =>
                  this.SendGroupName(e.newValue),
                )));
          }
          UnregisterForNewChatMessages() {
            this.Log.Debug("UnregisterForNewChatMessages: ", this),
              this.m_NewChatMsgAddedHandles?.map((e) => e.Unregister()),
              (this.m_NewChatMsgAddedHandles = void 0),
              this.m_GroupNameDisposer &&
                (this.m_GroupNameDisposer(),
                (this.m_GroupNameDisposer = void 0));
          }
          ClearCurrentSession() {
            this.Log.Debug("ClearCurrentSession: ", this),
              this.m_Session &&
                (this.SetSession(void 0),
                this.m_Supplier?.OnUserEndVoiceChat());
          }
          OnDisconnect() {
            this.Log.Debug("OnDisconnect: ", this),
              this.ClearCurrentSession(),
              this.m_VoiceChatActiveStateChangedHandle?.Unregister(),
              (this.m_VoiceChatActiveStateChangedHandle = void 0),
              this.m_ChatGroupAddedHandle?.Unregister(),
              (this.m_ChatGroupAddedHandle = void 0),
              this.UnregisterForNewChatMessages();
          }
          OnInitiateRoomChat(e, t) {
            this.m_Supplier?.SetVoiceLogDetails(!0), this.ClearCurrentSession();
            const n = e.chat_group_id(),
              i = e.chat_room_id();
            this.SetSession({ groupID: n, roomID: i }),
              this.Log.Debug("OnInitiateRoomChat: ", this.m_Session),
              this.m_Supplier?.InitiateRoomChat(n, i);
            let o = new y.IQ();
            d.BSendMsg(11, o, t);
          }
          OnExitRoomChat(e, t) {
            this.Log.Debug("OnExitRoomChat: ", this),
              this.m_Session &&
                (this.SetSession(void 0),
                this.m_Supplier?.OnUserEndVoiceChat());
            let n = new y.X0();
            d.BSendMsg(13, n, t);
          }
          OnChatGroupAdded(e) {
            this.Log.Debug("OnChatGroupAdded: ", e),
              this.m_Session.groupID == e.GetGroupID() &&
                (this.UnregisterForNewChatMessages(),
                this.RegisterForNewChatMessages());
          }
          OnVoiceChatActiveStateChanged(e) {
            if (
              (this.Log.Debug("OnVoiceChatActiveStateChanged: ", e),
              this.UnregisterForNewChatMessages(),
              this.m_ChatGroupAddedHandle?.Unregister(),
              (this.m_ChatGroupAddedHandle = void 0),
              e)
            ) {
              this.RegisterForNewChatMessages(),
                (this.m_ChatGroupAddedHandle =
                  I.xm.ChatStore.RegisterForGroupAdded(this.OnChatGroupAdded));
              let e = new y.CX();
              d.BSendMsg(21, e);
            } else {
              let e = new y.xF();
              d.BSendMsg(22, e);
            }
          }
          OnNewChatMsgAdded(e, t, n, i, o, r) {
            this.Log.Debug("OnNewChatMsgAdded: ", e, t, n, i, o, r);
            let a = new y.ax();
            a.set_chat_group_id(e),
              a.set_chat_room_id(t),
              a.set_sender_accountid(n),
              a.set_timestamp(i),
              a.set_ordinal(o),
              a.set_message(r),
              d.BSendMsg(18, a);
          }
          async OnGetAvatarUrl(e, t) {
            let n = e.profile_steamid(),
              i = await this.m_Supplier.GetPersonaState(n),
              o = "";
            switch (e.avatar_type()) {
              case 0:
                o = i?.avatar_url;
                break;
              case 1:
                o = i?.avatar_url_medium;
                break;
              case 2:
                o = i?.avatar_url_full;
            }
            let r = new y.Gr();
            r.set_profile_avatar_url(o), d.BSendMsg(17, r, t);
          }
          async OnSendGroupChatMessage(e, t) {
            if (this.m_Session) {
              const t = I.xm.ChatStore.GetChatRoomGroup(this.m_Session.groupID);
              if (t) {
                const n = t.textRoomList;
                if (n.length > 0) {
                  const t = n[0],
                    i = e.message_with_bbcode();
                  await t.SendChatMessage(i);
                }
              }
            }
            let n = new y.km();
            d.BSendMsg(20, n, t);
          }
          async OnConfigureVideo(e, t) {
            this.m_Supplier?.ConfigureVideo(e.send(), e.receive());
            let n = new y.zl();
            d.BSendMsg(24, n, t);
          }
          OnSetPerUserMuting(e, t) {
            this.m_Supplier?.SetPerUserMuting(e.accountid(), e.muted());
            let n = new y.Wn();
            d.BSendMsg(31, n, t);
          }
          OnSetPerUserVideo(e, t) {
            this.m_Supplier?.SetReceivingVideo(e.accountid(), e.receive());
            let n = new y.DB();
            d.BSendMsg(39, n, t);
          }
          OnSetSpatialAudioListener(e) {
            0;
          }
          OnSetSpatialAudioSource(e) {
            0;
          }
          OnAddPerUserGainLevel(e, t) {
            let n = new y.wJ();
            n.set_accountid(e),
              n.set_muted(t.muted),
              n.set_gain(t.gain),
              d.BSendMsg(28, n),
              this.m_Disposers.push(
                (0, D.mJ)(
                  () => t.muted,
                  (e) => {
                    n.set_muted(e), d.BSendMsg(28, n);
                  },
                ),
              ),
              this.m_Disposers.push(
                (0, D.mJ)(
                  () => t.gain,
                  (e) => {
                    n.set_gain(e), d.BSendMsg(28, n);
                  },
                ),
              );
          }
          OnAddPerUserVoiceStatus(e, t) {
            let n = new y.Wc();
            n.set_accountid(e),
              n.set_mic_muted_locally(t.mic_muted_locally),
              n.set_output_muted_locally(t.output_muted_locally),
              d.BSendMsg(29, n),
              this.m_Disposers.push(
                (0, D.mJ)(
                  () => t.mic_muted_locally,
                  (e) => {
                    n.set_mic_muted_locally(e), d.BSendMsg(29, n);
                  },
                ),
              ),
              this.m_Disposers.push(
                (0, D.mJ)(
                  () => t.output_muted_locally,
                  (e) => {
                    n.set_output_muted_locally(e), d.BSendMsg(29, n);
                  },
                ),
              );
          }
          OnAddRemoteVideoStream(e, t) {
            d.IsConnected() &&
              b.SteamVR.RemoteVideoStream({
                source_accountid: e,
                video_uniqueid: t,
              });
          }
          set Supplier(e) {
            if (
              (this.Log.Debug("Supplier: ", e, this),
              this.m_Supplier != e &&
                ((this.m_Supplier = e),
                this.m_Disposers.forEach((e) => e()),
                (this.m_Disposers.length = 0),
                this.m_SteamVRMsgHandlers.forEach((e) => e.Unregister()),
                (this.m_SteamVRMsgHandlers.length = 0),
                e))
            ) {
              this.m_Disposers.push(
                (0, D.lB)(e.GetPerUserGainLevels(), (e) => {
                  "add" === e.type &&
                    this.OnAddPerUserGainLevel(e.name, e.newValue);
                }),
              ),
                this.m_Disposers.push(
                  (0, D.lB)(e.GetPerUserVoiceStatus(), (e) => {
                    "add" === e.type &&
                      this.OnAddPerUserVoiceStatus(e.name, e.newValue);
                  }),
                ),
                e
                  .GetPerUserGainLevels()
                  .forEach((e, t) => this.OnAddPerUserGainLevel(t, e)),
                e
                  .GetPerUserVoiceStatus()
                  .forEach((e, t) => this.OnAddPerUserVoiceStatus(t, e)),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnDisconnect(this.OnDisconnect),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(10, y.wY, this.OnInitiateRoomChat),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(12, y.xq, this.OnExitRoomChat),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(16, y.Cv, this.OnGetAvatarUrl),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(19, y.Uy, this.OnSendGroupChatMessage),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(23, y.vA, this.OnConfigureVideo),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(30, y.iF, this.OnSetPerUserMuting),
                ),
                this.m_SteamVRMsgHandlers.push(
                  d.RegisterOnMsg(38, y.v8, this.OnSetPerUserVideo),
                );
              let t = new y.RI();
              d.BSendMsg(37, t);
            }
          }
          get session() {
            return this.m_Session;
          }
          set session(e) {
            if (
              (this.Log.Debug("session: ", e, this),
              e || (e = { groupID: "0", roomID: "0" }),
              this.m_Session &&
                this.m_Session.groupID == e.groupID &&
                this.m_Session.roomID == e.roomID)
            )
              return;
            this.SetSession(e);
            let t = new y.Rg();
            t.set_chat_group_id(e.groupID),
              t.set_chat_room_id(e.roomID),
              d.BSendMsg(25, t);
          }
        }
        (0, i.Cg)([E.oI], A.prototype, "OnDisconnect", null),
          (0, i.Cg)([E.oI], A.prototype, "OnInitiateRoomChat", null),
          (0, i.Cg)([E.oI], A.prototype, "OnExitRoomChat", null),
          (0, i.Cg)([E.oI], A.prototype, "OnChatGroupAdded", null),
          (0, i.Cg)([E.oI], A.prototype, "OnVoiceChatActiveStateChanged", null),
          (0, i.Cg)([E.oI], A.prototype, "OnNewChatMsgAdded", null),
          (0, i.Cg)([E.oI], A.prototype, "OnGetAvatarUrl", null),
          (0, i.Cg)([E.oI], A.prototype, "OnSendGroupChatMessage", null),
          (0, i.Cg)([E.oI], A.prototype, "OnConfigureVideo", null),
          (0, i.Cg)([E.oI], A.prototype, "OnSetPerUserMuting", null),
          (0, i.Cg)([E.oI], A.prototype, "OnSetPerUserVideo", null),
          (0, i.Cg)(
            [D.XI.bound],
            A.prototype,
            "OnSetSpatialAudioListener",
            null,
          ),
          (0, i.Cg)([D.XI.bound], A.prototype, "OnSetSpatialAudioSource", null);
        let T = new A();
        var M = n(65305);
        class R {
          m_Supplier;
          m_Disposer;
          m_PeerConnection;
          m_DataChannels = new Array();
          m_OpenChannels = new Map();
          m_NextChannelId = 0;
          m_DisconnectHandle;
          m_CloseDataChannelHandle;
          m_CreateDataChannelHandle;
          m_DataChannelMessageHandle;
          m_DataChannelCloseHandle;
          m_StatsTimeout = 0;
          m_mapChannelStats = new Map();
          Log = new f.wd("VRWebRTC");
          constructor() {
            (0, D.Gn)(this);
          }
          PadOutput(e, t, n = void 0) {
            if (Math.abs(t) <= e.length) return e;
            let i = Math.max(Math.abs(t) - e.length || 0, 0),
              o = Array(i + 1).join(String(n || " ").charAt(0));
            return t < 0 ? o + e : e + o;
          }
          ProcessStatsReport() {
            (this.m_StatsTimeout = SetBackgroundTimeout(
              this.ProcessStatsReport,
              1e4,
            )),
              0 != this.m_mapChannelStats.size &&
                (this.Log.Debug("Channel | Bytes Sent | Bytes Received"),
                this.m_mapChannelStats.forEach((e, t) => {
                  this.Log.Debug(
                    this.PadOutput(t.toString(), 7) +
                      " | " +
                      this.PadOutput(e.bytesSent.toString(), 10) +
                      " | " +
                      this.PadOutput(e.bytesReceived.toString(), 14),
                  );
                }),
                this.m_mapChannelStats.clear());
          }
          BSendData(e, t) {
            let n = new M.EX();
            return n.set_channel_id(e), n.set_data(t), d.BSendMsg(9, n);
          }
          SetupChannel(e, t, n) {
            this.Log.Debug(`OnDataChannel[${t}]:${e?.label}: ${n}`),
              (e.onopen = () => this.OnDataChannelOpen(e, t)),
              (e.onclose = () => this.OnDataChannelClose(e, t)),
              (e.onerror = (n) => this.OnDataChannelError(n.error, e, t)),
              (e.binaryType = "arraybuffer"),
              (e.onmessage = (e) => {
                if ("string" == typeof e.data) {
                  let n = new M.Bl();
                  return (
                    n.set_channel_id(t),
                    n.set_reason(e.data),
                    void d.BSendMsg(8, n)
                  );
                }
                this.BSendData(t, e.data);
                let n = this.m_mapChannelStats.get(t);
                n
                  ? (n.bytesReceived += e.data.byteLength)
                  : this.m_mapChannelStats.set(t, {
                      bytesSent: 0,
                      bytesReceived: e.data.byteLength,
                    });
              });
          }
          OnDataChannel(e) {
            let t = this.m_NextChannelId++;
            const n = e.channel;
            let i, o;
            this.SetupChannel(n, t, "remote");
            let r = n.label.lastIndexOf("[");
            -1 != r
              ? ((o = n.label.slice(0, r)), (i = n.label.slice(r)))
              : (o = n.label);
            let a = new M.de();
            a.set_channel_id(t),
              a.set_label(o),
              a.set_source_steamid(
                w.b.InitFromString(i).ConvertTo64BitString(),
              ),
              d.BSendMsg(5, a);
          }
          OnDataChannelMessage(e) {
            let t = e.channel_id(),
              n = this.m_OpenChannels.get(t);
            if (!n)
              return void this.Log.Debug(
                `OnDataChannelMessage[${t}]: Not open`,
              );
            if ("open" != n.readyState)
              return void this.Log.Debug(
                `OnDataChannelMessage[${t}]:${n.label}: readyState=${n.readyState}`,
              );
            let i = e.data();
            n.send(i);
            let o = this.m_mapChannelStats.get(t);
            o
              ? (o.bytesSent += i.length)
              : this.m_mapChannelStats.set(t, {
                  bytesSent: i.length,
                  bytesReceived: 0,
                });
          }
          OnCloseDataChannel(e, t) {
            let n = e.channel_id();
            this.m_DataChannels = this.m_DataChannels.filter(
              (e) => e.id !== n || (e.channel?.close(), !1),
            );
            let i = new M.E6();
            d.BSendMsg(4, i, t);
          }
          OnCreateDataChannel(e, t) {
            let n = {
              id: this.m_NextChannelId++,
              label: e.label(),
              options: {
                ordered: e.ordered(),
                maxRetransmits: e.max_retransmits(),
                maxPacketLifeTime: e.max_packet_life_time(),
              },
            };
            this.m_DataChannels.push(n),
              this.m_PeerConnection &&
                (this.m_Supplier.BSupportsDataChannels()
                  ? this.CreateDataChannel(n)
                  : this.m_Supplier.RenegotiateSDP());
            let i = new M.aM();
            i.set_channel_id(n.id), d.BSendMsg(2, i, t);
          }
          OnDataChannelOpen(e, t) {
            this.Log.Debug(`OnDataChannelOpen[${t}]${e?.label}`),
              this.m_OpenChannels.set(t, e),
              this.m_DataChannelCloseHandle ||
                (this.m_DataChannelCloseHandle = d.RegisterOnMsg(
                  7,
                  M.X9,
                  () => {},
                ));
            let n = new M.bG();
            n.set_channel_id(t), d.BSendMsg(6, n);
          }
          OnDataChannelClose(e, t) {
            this.Log.Debug(`OnDataChannelClose[${t}]${e?.label}`),
              this.m_OpenChannels.delete(t);
            let n = new M.X9();
            n.set_channel_id(t),
              d.BSendMsg(7, n),
              0 == this.m_OpenChannels.size &&
                this.m_DataChannelCloseHandle &&
                (this.m_DataChannelCloseHandle.Unregister(),
                (this.m_DataChannelCloseHandle = void 0));
          }
          OnDataChannelError(e, t, n) {
            this.Log.Debug(`OnDataChannelError[${n}]${t?.label}: ${e}`);
            const i =
              `{ message: ${e.message}` +
              (e.errorDetail ? `, errorDetail: ${e.errorDetail}` : "") +
              (e.sctpCauseCode ? `, sctpCauseCode: ${e.sctpCauseCode}` : "") +
              (e.sdpLineNumber ? `, sdpLineNumber: ${e.sdpLineNumber}` : "") +
              (e.receivedAlert ? `, receivedAlert: ${e.receivedAlert}` : "") +
              (e.sentAlert ? `, sentAlert: ${e.sentAlert}` : "") +
              " }";
            let o = new M.Bl();
            o.set_channel_id(n), o.set_reason(i), d.BSendMsg(8, o);
          }
          OnDisconnect() {
            this.m_DataChannels.forEach((e) => e.channel?.close()),
              (this.m_DataChannels.length = 0),
              this.m_Supplier?.BSupportsDataChannels() &&
                this.m_Supplier.RenegotiateSDP();
          }
          CreateDataChannel(e) {
            try {
              e.channel = this.m_PeerConnection.createDataChannel(
                e.label,
                e.options,
              );
            } catch (t) {
              this.Log.Debug("CreateDataChannel:", t, e);
            }
            this.SetupChannel(e.channel, e.id, "local");
          }
          SetPeerConnection(e) {
            this.m_PeerConnection != e &&
              (this.Log.Debug("SetPeerConnection:", this, e),
              e ||
                ((this.m_PeerConnection.ondatachannel = void 0),
                this.m_DataChannels.forEach((e) => e.channel?.close()),
                ClearBackgroundTimeout(this.m_StatsTimeout),
                (this.m_StatsTimeout = 0)),
              (this.m_PeerConnection = e),
              this.m_PeerConnection &&
                (this.m_DataChannels.forEach((e) => this.CreateDataChannel(e)),
                (this.m_PeerConnection.ondatachannel = this.OnDataChannel),
                (this.m_StatsTimeout = SetBackgroundTimeout(
                  this.ProcessStatsReport,
                  1e4,
                ))));
          }
          set ActiveDataChannelSupplier(e) {
            if (this.m_Supplier != e && (!e || d.IsConnected()))
              if (
                ((this.m_Supplier = e),
                this.m_Disposer &&
                  (this.m_Disposer(), (this.m_Disposer = void 0)),
                this.m_DisconnectHandle?.Unregister(),
                this.m_CloseDataChannelHandle?.Unregister(),
                this.m_CreateDataChannelHandle?.Unregister(),
                this.m_DataChannelMessageHandle?.Unregister(),
                e)
              ) {
                (this.m_Disposer = (0, D.lB)(e, "m_PeerConnection", (e) =>
                  this.SetPeerConnection(e.newValue),
                )),
                  (this.m_DisconnectHandle = d.RegisterOnDisconnect(
                    this.OnDisconnect,
                  )),
                  (this.m_CloseDataChannelHandle = d.RegisterOnMsg(
                    3,
                    M.GH,
                    this.OnCloseDataChannel,
                  )),
                  (this.m_CreateDataChannelHandle = d.RegisterOnMsg(
                    1,
                    M.EZ,
                    this.OnCreateDataChannel,
                  )),
                  (this.m_DataChannelMessageHandle = d.RegisterOnMsg(
                    9,
                    M.EX,
                    this.OnDataChannelMessage,
                  ));
                let t = new M.DR();
                d.BSendMsg(14, t);
              } else {
                let e = new M.am();
                d.BSendMsg(15, e),
                  this.SetPeerConnection(void 0),
                  (this.m_DataChannels.length = 0),
                  (this.m_CloseDataChannelHandle = void 0),
                  (this.m_CreateDataChannelHandle = void 0),
                  (this.m_DataChannelMessageHandle = void 0);
              }
          }
          BHasDataChannels() {
            return this.m_DataChannels.length > 0;
          }
        }
        (0, i.Cg)([D.XI.bound], R.prototype, "ProcessStatsReport", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnDataChannel", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnDataChannelMessage", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnCloseDataChannel", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnCreateDataChannel", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnDataChannelOpen", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnDataChannelClose", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnDataChannelError", null),
          (0, i.Cg)([D.XI.bound], R.prototype, "OnDisconnect", null);
        let k = new R();
        var L = n(94325),
          G = n(66401),
          F = n(67128);
        class P {
          constructor(e, t) {
            if (!(e instanceof BaseAudioContext))
              throw "Not a valid audio context.";
            t || (t = {});
            const n = t.numberOfChannels || 1;
            if (n > 2) throw "The maximum supported number of channels is two.";
            this.context_ = e;
            const i = t.bufferSize || 0;
            (this.attack = t.attack || 0), (this.release = t.release || 0);
            let o = void 0 === t.timeConstant ? 0.0025 : t.timeConstant;
            (this.threshold = void 0 === t.threshold ? -100 : t.threshold),
              (this.alpha_ = this.getAlphaFromTimeConstant_(
                o,
                this.context_.sampleRate,
              )),
              (this.noiseGateKernel_ = this.context_.createScriptProcessor(
                i,
                n,
                n,
              )),
              (this.noiseGateKernel_.onaudioprocess =
                this.onaudioprocess_.bind(this)),
              (this.input = new GainNode(this.context_)),
              (this.output = new GainNode(this.context_)),
              this.input.connect(this.noiseGateKernel_).connect(this.output),
              (this.previousLevel_ = 0),
              (this.previousWeight_ = 1),
              (this.channel_ = new Float32Array(
                this.noiseGateKernel_.bufferSize,
              )),
              (this.envelope_ = new Float32Array(
                this.noiseGateKernel_.bufferSize,
              )),
              (this.weights_ = new Float32Array(
                this.noiseGateKernel_.bufferSize,
              ));
          }
          onaudioprocess_(e) {
            let t = e.inputBuffer,
              n = t.getChannelData(0);
            if (2 === t.numberOfChannels) {
              let e = t.getChannelData(1);
              for (let t = 0; t < e.length; t++)
                this.channel_[t] = (n[t] + e[t]) / 2;
            } else this.channel_ = n;
            let i = this.detectLevel_(this.channel_),
              o = this.computeWeights_(i);
            for (let n = 0; n < t.numberOfChannels; n++) {
              let i = t.getChannelData(n),
                r = e.outputBuffer.getChannelData(n);
              for (let e = 0; e < i.length; e++) r[e] = o[e] * i[e];
            }
          }
          detectLevel_(e) {
            this.envelope_[0] =
              this.alpha_ * this.previousLevel_ +
              (1 - this.alpha_) * Math.pow(e[0], 2);
            for (let t = 1; t < e.length; t++)
              this.envelope_[t] =
                this.alpha_ * this.envelope_[t - 1] +
                (1 - this.alpha_) * Math.pow(e[t], 2);
            return (
              (this.previousLevel_ = this.envelope_[this.envelope_.length - 1]),
              this.envelope_
            );
          }
          computeWeights_(e) {
            let t = 1,
              n = 1,
              i = 1,
              o = 1;
            this.attack > 0 &&
              ((t = Math.ceil(this.context_.sampleRate * this.attack)),
              (i = 1 / t)),
              this.release > 0 &&
                ((n = Math.ceil(this.context_.sampleRate * this.release)),
                (o = 1 / n));
            for (let t = 0; t < e.length; t++) {
              if (P.toDecibel(2 * e[t]) < this.threshold) {
                const e = this.previousWeight_ - i;
                this.weights_[t] = Math.max(e, 0);
              } else {
                const e = this.previousWeight_ + o;
                this.weights_[t] = Math.min(e, 1);
              }
              this.previousWeight_ = this.weights_[t];
            }
            return this.weights_;
          }
          getAlphaFromTimeConstant_(e, t) {
            return Math.exp(-1 / (t * e));
          }
          static toDecibel(e) {
            return 10 * Math.log10(e);
          }
        }
        class B {
          m_Analyser = void 0;
          m_rgInputNode = [];
          m_hUpdateInterval = 0;
          m_buffer = void 0;
          m_lastTimeNonZero = 0;
          m_flVolume = 0;
          m_flRoundedVolume = 0;
          m_flAveraging = 0.6;
          constructor(e, t) {
            (0, D.Gn)(this),
              (this.m_Analyser = t.createAnalyser()),
              (this.m_Analyser.fftSize = 128),
              (this.m_buffer = new Float32Array(this.m_Analyser.fftSize)),
              this.m_rgInputNode.push(e),
              e.connect(this.m_Analyser),
              this.StartUpdating();
          }
          GetLastTimeNonZero() {
            return this.m_lastTimeNonZero;
          }
          StartUpdating() {
            this.StopUpdating(),
              (this.m_hUpdateInterval = SetBackgroundInterval(
                this.UpdateVolume,
                60,
              ));
          }
          StopUpdating() {
            0 != this.m_hUpdateInterval &&
              ClearBackgroundInterval(this.m_hUpdateInterval),
              (this.m_hUpdateInterval = 0);
          }
          UpdateVolume() {
            this.m_Analyser.getFloatTimeDomainData(this.m_buffer);
            let e = 0;
            for (let t = 0; t < this.m_buffer.length; ++t) {
              let n = this.m_buffer[t];
              e += n * n;
            }
            let t = Math.sqrt(e / this.m_buffer.length);
            this.m_flVolume =
              1.2 * Math.max(t, this.m_flVolume * this.m_flAveraging);
            let n = Math.round(100 * this.m_flVolume) / 100;
            n != this.m_flRoundedVolume && (this.m_flRoundedVolume = n),
              this.m_flRoundedVolume > 0 &&
                (this.m_lastTimeNonZero = performance.now());
          }
          stop() {
            this.StopUpdating(), this.DisconnectAll();
          }
          Connect(e) {
            this.m_rgInputNode.push(e),
              null != this.m_Analyser && e.connect(this.m_Analyser);
          }
          DisconnectAll() {
            for (let e = 0; e < this.m_rgInputNode.length; ++e) {
              if (this.m_Analyser)
                try {
                  this.m_rgInputNode[e].disconnect(this.m_Analyser);
                } catch (e) {}
              this.m_rgInputNode[e] = void 0;
            }
            this.m_rgInputNode = [];
          }
          get rounded_volume() {
            return this.m_flRoundedVolume;
          }
        }
        (0, i.Cg)([D.sH], B.prototype, "m_lastTimeNonZero", void 0),
          (0, i.Cg)([D.sH], B.prototype, "m_flVolume", void 0),
          (0, i.Cg)([D.sH], B.prototype, "m_flRoundedVolume", void 0),
          (0, i.Cg)([D.XI.bound], B.prototype, "UpdateVolume", null),
          (0, i.Cg)([D.XI.bound], B.prototype, "stop", null);
        var x,
          O,
          N = n(7105),
          V = n(74002),
          U = n(6660),
          H = n(77765),
          W = n(20366);
        !(function (e) {
          (e[(e.k_EAudioStreamType_Microphone = 1)] =
            "k_EAudioStreamType_Microphone"),
            (e[(e.k_EAudioStreamType_IncomingStream = 2)] =
              "k_EAudioStreamType_IncomingStream");
        })(x || (x = {}));
        class z {
          constructor() {
            (0, D.Gn)(this);
          }
          unique_id;
          stream;
          destination_node = void 0;
          source_node = void 0;
          type;
          elem = void 0;
          accountid = void 0;
          output_gain_node = void 0;
          spatializer_node;
          steamaudio_node;
          position_index;
          muted = !1;
          volume_meter = void 0;
        }
        (0, i.Cg)([D.sH], z.prototype, "accountid", void 0),
          (0, i.Cg)([D.sH], z.prototype, "muted", void 0),
          (0, i.Cg)([D.sH], z.prototype, "volume_meter", void 0);
        class j {
          constructor() {
            (0, D.Gn)(this);
          }
          unique_id;
          receive = !1;
          stream = null;
          accountid = void 0;
          showOnDesktop = !1;
        }
        function q(e) {
          switch (e) {
            case O.k_EVoiceCallState_None:
              return "None";
            case O.k_EVoiceCallState_ScheduledInitiate:
              return "ScheduledInitiate";
            case O.k_EVoiceCallState_RequestedMicAccess:
              return "RequestedMicAccess";
            case O.k_EVoiceCallState_LocalMicOnly:
              return "LocalMicOnly";
            case O.k_EVoiceCallState_CreatePeerConnection:
              return "CreatePeerConnection";
            case O.k_EVoiceCallState_InitatedWebRTCSession:
              return "InitiatedWebRTCSession";
            case O.k_EVoiceCallState_UpdatingWebRTCSession:
              return "UpdatingWebRTCSession";
            case O.k_EVoiceCallState_WebRTCConnectedWaitingOnIceConnected:
              return "WaitingOnICEConnected";
            case O.k_EVoiceCallState_RequestedPermission:
              return "RequestedPermission";
            case O.k_EVoiceCallState_NotifyingVoiceChatOfWebRTCSession:
              return "NotifyingVoiceChatOfWebRTCSession";
            case O.k_EVoiceCallState_Connected:
              return "Connected";
          }
        }
        (0, i.Cg)([D.sH], j.prototype, "stream", void 0),
          (0, i.Cg)([D.sH], j.prototype, "accountid", void 0),
          (0, i.Cg)([D.sH], j.prototype, "showOnDesktop", void 0),
          (function (e) {
            (e[(e.k_EVoiceCallState_None = 0)] = "k_EVoiceCallState_None"),
              (e[(e.k_EVoiceCallState_ScheduledInitiate = 1)] =
                "k_EVoiceCallState_ScheduledInitiate"),
              (e[(e.k_EVoiceCallState_RequestedMicAccess = 2)] =
                "k_EVoiceCallState_RequestedMicAccess"),
              (e[(e.k_EVoiceCallState_LocalMicOnly = 3)] =
                "k_EVoiceCallState_LocalMicOnly"),
              (e[(e.k_EVoiceCallState_CreatePeerConnection = 4)] =
                "k_EVoiceCallState_CreatePeerConnection"),
              (e[(e.k_EVoiceCallState_InitatedWebRTCSession = 5)] =
                "k_EVoiceCallState_InitatedWebRTCSession"),
              (e[(e.k_EVoiceCallState_UpdatingWebRTCSession = 6)] =
                "k_EVoiceCallState_UpdatingWebRTCSession"),
              (e[
                (e.k_EVoiceCallState_WebRTCConnectedWaitingOnIceConnected = 7)
              ] = "k_EVoiceCallState_WebRTCConnectedWaitingOnIceConnected"),
              (e[(e.k_EVoiceCallState_RequestedPermission = 8)] =
                "k_EVoiceCallState_RequestedPermission"),
              (e[(e.k_EVoiceCallState_NotifyingVoiceChatOfWebRTCSession = 9)] =
                "k_EVoiceCallState_NotifyingVoiceChatOfWebRTCSession"),
              (e[(e.k_EVoiceCallState_Connected = 10)] =
                "k_EVoiceCallState_Connected");
          })(O || (O = {}));
        class K {
          constructor() {
            (0, D.Gn)(this);
          }
          m_eState = O.k_EVoiceCallState_None;
          m_targetAccountID = 0;
          m_bInitiatedOneOnOneCall = !1;
          m_bWaitingOnOneOnOneRejoin = !1;
          m_bPostedOneOnOneEndedMsg = !1;
          m_chatRoom = void 0;
          m_voiceChatID = "";
          m_webRTCConnectedNotification = void 0;
          m_webRTCServerIP = 0;
          m_webRTCServerPort = 0;
          m_webRTCClientIP = 0;
          m_webRTCClientPort = 0;
          m_nFailuresThisInitiate = 0;
          m_timeStartedConnecting;
          m_timeFinishedConnecting;
          m_timeEndedVoiceChat;
          m_bOfferUpdateInProgress = !1;
          m_msgPendingRemoteDescriptionUpdate = void 0;
          m_bIsConnectionAttemptOverTwoSeconds = !1;
          m_nMostRecentRemoteDescriptionVersion = "0";
          BMatchingCall(e, t) {
            return (
              (0 != e && this.m_targetAccountID == e) ||
              !(
                !this.m_chatRoom ||
                !t ||
                this.m_chatRoom.chatID != t.chatID ||
                this.m_chatRoom.groupID != t.groupID
              )
            );
          }
          BCallActiveForGroup(e) {
            return this.m_chatRoom && this.m_chatRoom.groupID == e;
          }
        }
        (0, i.Cg)([D.sH], K.prototype, "m_eState", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_targetAccountID", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_bInitiatedOneOnOneCall", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_bWaitingOnOneOnOneRejoin", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_bPostedOneOnOneEndedMsg", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_chatRoom", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_voiceChatID", void 0),
          (0, i.Cg)([D.sH], K.prototype, "m_nFailuresThisInitiate", void 0),
          (0, i.Cg)(
            [D.sH],
            K.prototype,
            "m_bIsConnectionAttemptOverTwoSeconds",
            void 0,
          );
        class Z {
          m_SSRC = 0;
          m_BytesReceived = 0;
          m_HeaderBytesReceived = 0;
          m_PacketsReceived = 0;
          m_PacketsLost = 0;
          m_FecPacketsDiscarded = 0;
          m_FecPacketsReceived = 0;
          m_Jitter = 0;
          m_JitterBufferDelay = 0;
          m_JitterBufferEmittedCount = 0;
          m_JitterBufferMinimumDelay = 0;
          m_JitterBufferTargetDelay = 0;
        }
        class Q extends Z {
          m_PacketsDiscarded = 0;
          m_ConcealmentEvents = 0;
          m_ConcealedSamples = 0;
          m_SilentConcealedSamples = 0;
          m_RemovedSamplesForAcceleration = 0;
          m_TotalAudioEnergy = 0;
          m_TotalSamplesDuration = 0;
          m_TotalSamplesReceived = 0;
        }
        class $ extends Z {
          m_FirCount = 0;
          m_PliCount = 0;
          m_NackCount = 0;
          m_PauseCount = 0;
          m_FreezeCount = 0;
          m_KeyFramesDecoded = 0;
          m_FramesDecoded = 0;
          m_FramesDropped = 0;
          m_FramesReceived = 0;
          m_FramesAssembledFromMultiplePackets = 0;
        }
        const X = "SteamVoiceSettings";
        class Y {
          m_VoiceInputGain = 1;
          m_VoiceOutputGain = 1;
          m_NoiseGateLevel = W.H.k_ENoiseGateLevel_Medium;
          m_VoiceUseEchoCancellation = !0;
          m_VoiceUseNoiseCancellation = !0;
          m_VoiceUseAutoGainControl = !0;
          m_SelectedMicID = "default";
          m_SelectedOutputID = "default";
          m_bPlayPTTSounds = !0;
          m_bSettingsLoaded = !1;
          m_bHasResetOpenMicHotkey = !1;
          m_bUseSteamAudioSpatialization = !1;
          m_SettingsStore;
          constructor(e) {
            (0, D.Gn)(this), (this.m_SettingsStore = e);
          }
          SaveToLocalStorage() {
            this.m_SettingsStore.StoreObjectInLocalStorage(X, {
              inputGain: this.m_VoiceInputGain,
              outputGain: this.m_VoiceOutputGain,
              noiseGateLevel: this.m_NoiseGateLevel,
              noiseCancellation: this.m_VoiceUseNoiseCancellation,
              echoCancellation: this.m_VoiceUseEchoCancellation,
              autoGainControl: this.m_VoiceUseAutoGainControl,
              selectedMic: this.m_SelectedMicID,
              selectedOutput: this.m_SelectedOutputID,
              pttSoundsEnabled: this.m_bPlayPTTSounds,
              hasResetOpenMicHotKey: this.m_bHasResetOpenMicHotkey,
              useSteamAudioSpatialization: this.m_bUseSteamAudioSpatialization,
            });
          }
          LoadFromLocalStorage(e) {
            this.m_SettingsStore
              .GetObjectFromLocalStorageWhenReady(X, void 0)
              .then((t) => {
                null != t &&
                  (null != t.inputGain && (this.m_VoiceInputGain = t.inputGain),
                  null != t.outputGain &&
                    (this.m_VoiceOutputGain = t.outputGain),
                  null != t.noiseGateLevel &&
                    (this.m_NoiseGateLevel = t.noiseGateLevel),
                  null != t.noiseCancellation &&
                    (this.m_VoiceUseNoiseCancellation = t.noiseCancellation),
                  null != t.autoGainControl &&
                    (this.m_VoiceUseAutoGainControl = t.autoGainControl),
                  null != t.echoCancellation &&
                    (this.m_VoiceUseEchoCancellation = t.echoCancellation),
                  null != t.selectedMic &&
                    (this.m_SelectedMicID = t.selectedMic),
                  null != t.selectedOutput &&
                    (this.m_SelectedOutputID = t.selectedOutput),
                  null != t.pttSoundsEnabled &&
                    (this.m_bPlayPTTSounds = t.pttSoundsEnabled),
                  null != t.hasResetOpenMicHotKey &&
                    (this.m_bHasResetOpenMicHotkey = t.hasResetOpenMicHotKey),
                  null != t.useSteamAudioSpatialization &&
                    (this.m_bUseSteamAudioSpatialization =
                      t.useSteamAudioSpatialization)),
                  (this.m_bSettingsLoaded = !0),
                  e.LogMsg("(VoiceChat) Settings loaded from local storage"),
                  e.RefreshPushToTalkKeySettings();
              });
          }
        }
        (0, i.Cg)([D.sH], Y.prototype, "m_VoiceInputGain", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_VoiceOutputGain", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_NoiseGateLevel", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_VoiceUseEchoCancellation", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_VoiceUseNoiseCancellation", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_VoiceUseAutoGainControl", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_SelectedMicID", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_SelectedOutputID", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_bPlayPTTSounds", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_bSettingsLoaded", void 0),
          (0, i.Cg)([D.sH], Y.prototype, "m_bHasResetOpenMicHotkey", void 0),
          (0, i.Cg)(
            [D.sH],
            Y.prototype,
            "m_bUseSteamAudioSpatialization",
            void 0,
          );
        class J {
          constructor() {
            (0, D.Gn)(this);
          }
          muted = !1;
          gain = 1;
        }
        (0, i.Cg)([D.sH], J.prototype, "muted", void 0),
          (0, i.Cg)([D.sH], J.prototype, "gain", void 0);
        class ee {
          constructor() {
            (0, D.Gn)(this);
          }
          mic_muted_locally = !1;
          output_muted_locally = !1;
          has_no_mic_for_session = !1;
          sends_video = !1;
        }
        (0, i.Cg)([D.sH], ee.prototype, "mic_muted_locally", void 0),
          (0, i.Cg)([D.sH], ee.prototype, "output_muted_locally", void 0),
          (0, i.Cg)([D.sH], ee.prototype, "has_no_mic_for_session", void 0),
          (0, i.Cg)([D.sH], ee.prototype, "sends_video", void 0);
        class te {
          constructor() {
            (0, D.Gn)(this);
          }
          partner_accountid = 0;
          voice_chatid = "";
          previously_joined = !1;
          audio_repeat = 0;
          audio_buffer = void 0;
          ClearAudioRepeats() {
            0 != this.audio_repeat &&
              (ClearBackgroundTimeout(this.audio_repeat),
              (this.audio_repeat = 0)),
              null != this.audio_buffer &&
                (this.audio_buffer.StopPlayback(),
                (this.audio_buffer = void 0));
          }
        }
        (0, i.Cg)([D.sH], te.prototype, "partner_accountid", void 0),
          (0, i.Cg)([D.sH], te.prototype, "voice_chatid", void 0),
          (0, i.Cg)([D.sH], te.prototype, "previously_joined", void 0);
        class ne {
          m_CMInterface;
          m_VoiceCallState = new K();
          m_mapOneOnOneCallsWaitingJoinOrAccept = D.sH.map();
          m_hRegisterForPushToTalkStateChange = null;
          m_VoiceChatActiveStateChangeCallbacks = new m.lu();
          m_bPushToTalkEnabled = !1;
          m_bPushToMuteEnabled = !1;
          m_bVoicePTTStateEnabled = !1;
          m_VKPushToTalkHotKey = 0;
          m_strPushToTalkDisplayString = "";
          m_hPushToTalkReleaseTimeout = 0;
          m_ConnectionCheck = 0;
          m_ScheduledInitiate = 0;
          m_ScheduledVoiceLogsUpload = 0;
          m_bClientSideLogsUploadInProgress = !1;
          m_nLastLogLineUploaded = 0;
          m_StatsTimeout = 0;
          m_bUserHasDeniedMicPermissions = !1;
          m_bOutputMuted = !1;
          static k_MaxPerUserGainMultiplier = 2;
          static k_MaxInputOutputGainValue = 4;
          m_AudioContext = void 0;
          m_rgAudioStreams = (0, D.sH)([]);
          m_MicVolumeMeter = void 0;
          m_MicNoiseGate = void 0;
          m_MicInputGainNode = void 0;
          m_rgVideoStreams = (0, D.sH)([]);
          m_bSendVideo = !1;
          m_bReceiveVideo = !1;
          m_bAutoShowVideoStream = !1;
          m_rgLogLines = [];
          m_mapSSRCToAccountID = new Map();
          m_mapAccountIDToAudioStats = new Map();
          m_mapAccountIDToVideoStats = new Map();
          m_mapPerUserOutputGain = D.sH.map();
          m_mapUserVoiceStatus = D.sH.map();
          m_PeerConnection = void 0;
          m_Settings = void 0;
          m_LogVoiceChatDetails = !1;
          m_VoiceEchoLocalMic = !1;
          m_bLocalMicEchoStateBeforeMicTest = !1;
          m_bLocalMicTestActive = !1;
          m_bForceConnectingStatus = !1;
          m_bForceReconnectingStatus = !1;
          static k_nMaxPositions = 32;
          m_rgPositions = [];
          m_rgFreePositionIndices = [];
          m_localPose = void 0;
          m_mapRemotePoseForAccountID = new Map();
          constructor(e) {
            (0, D.Gn)(this),
              (this.m_Settings = new Y(e)),
              this.m_Settings.LoadFromLocalStorage(this),
              this.DispatchSetVoiceChatActive(!1),
              (T.Supplier = this),
              this.GenerateVoicePositions();
          }
          DispatchSetVoiceChatActive(e) {
            if (
              (this.m_VoiceChatActiveStateChangeCallbacks.Dispatch(e),
              "undefined" != typeof SteamClient &&
                null != SteamClient &&
                null != SteamClient.WebChat &&
                null != SteamClient.WebChat.SetVoiceChatActive)
            )
              try {
                SteamClient.WebChat.SetVoiceChatActive(e);
              } catch (e) {}
          }
          Init(e) {
            (this.m_CMInterface = e),
              (window.SetVoiceEchoLocalMic = this.SetVoiceEchoLocalMic),
              (window.SetVoiceLogDetails = this.SetVoiceLogDetails),
              (window.SetVoiceForceReconnectingStatus =
                this.ForceReconnectingStatus),
              (window.SetVoiceForceConnectingStatus =
                this.ForceConnectingStatus),
              (window.SetVoiceAutoShowVideoStream =
                this.SetAutoShowVideoStream),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyOneOnOneChatRequestedHandler,
                (e) => {
                  let t = new w.b(e.Body().steamid_partner()),
                    n = e.Body().voice_chatid(),
                    i = I.xm.FriendStore.GetFriend(t.GetAccountID());
                  if (
                    null == i ||
                    i.is_blocked ||
                    I.xm.FriendStore.BIsInvisibleMode() ||
                    I.xm.FriendStore.GetUserDoNotDisturb()
                  )
                    return (
                      this.LogMsg(
                        "(VoiceChat) Rejecting one-on-one voice chat request because partner is not a friend, is blocked, we are invisible, or we are DND",
                      ),
                      this.OnRejectOneOnOneVoiceChat(
                        t,
                        e.Body().voice_chatid(),
                      ),
                      1
                    );
                  let o = new te();
                  (o.partner_accountid =
                    this.m_CMInterface.steamid.GetAccountID()),
                    (o.voice_chatid = n),
                    (o.previously_joined = !1);
                  let r = this;
                  if (
                    ((o.audio_repeat = SetBackgroundTimeout(function () {
                      (o.audio_repeat = 0), r.PlayRingSound(t.GetAccountID());
                    }, 2e4)),
                    this.m_mapOneOnOneCallsWaitingJoinOrAccept.set(
                      t.GetAccountID(),
                      o,
                    ),
                    this.LogMsg(
                      "(VoiceChat) voice chat request from " + t.GetAccountID(),
                    ),
                    this.LogMsg(
                      "(VoiceChat) current state " +
                        this.m_VoiceCallState.m_eState,
                    ),
                    this.m_VoiceCallState.m_targetAccountID == t.GetAccountID())
                  )
                    return (
                      this.LogMsg(
                        "(VoiceChat) We are already trying to one on one chat this user, just auto-acceptting to re-sync.",
                      ),
                      this.OnAcceptOneOnOneVoiceChat(t, n),
                      1
                    );
                  I.xm.NotificationManager.DisplayNotificationFromFriend(i, {
                    title: i.display_name,
                    body: (0, V.we)(
                      "#Friend_RequestingOneOnOneChat",
                      i.display_name,
                    ),
                    tag: "state_" + i.accountid,
                    steamid: i.persona.m_steamid.ConvertTo64BitString(),
                  });
                  let a = I.xm.ChatStore.GetFriendChat(t.GetAccountID(), !0);
                  return (
                    null != a &&
                      (a.AddVoiceChannelInviteMsg(
                        t.GetAccountID(),
                        I.xm.GetServerRTime32(),
                        (0, V.we)(
                          "#FriendMsg_VoiceChannelInvite",
                          i.display_name,
                          a.self.display_name,
                        ),
                      ),
                      I.xm.UIStore.ShowAndOrActivateChat(
                        I.xm.GetDefaultBrowserContext(),
                        a,
                        !1,
                      )),
                    this.PlayRingSound(i.accountid),
                    1
                  );
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyVoiceChatEndedHandler,
                (e) => {
                  let t = e.Body().voice_chatid();
                  for (let e of Array.from(
                    this.m_mapOneOnOneCallsWaitingJoinOrAccept.keys(),
                  )) {
                    let n = this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e);
                    if (null != n && n.voice_chatid == t) {
                      this.LogMsg(
                        "(VoiceChat) OneOnOne VoiceChat we were invited too with " +
                          e +
                          " has ended and is no longer joinable.",
                      ),
                        I.xm.AudioPlaybackManager.PlayAudioURL(
                          o.TS.COMMUNITY_CDN_URL +
                            "public/sounds/webui/steam_voice_channel_exit.m4a?v=1",
                        );
                      let t = Number(e);
                      this.DeleteOneOnOneCallWaitingJoinOrAccept(t);
                      let n = I.xm.ChatStore.GetFriendChat(t, !1),
                        i = I.xm.FriendStore.GetFriend(t);
                      null != n &&
                        (i
                          ? n.AddVoiceChannelInviteMsg(
                              i.accountid,
                              I.xm.GetServerRTime32(),
                              (0, V.we)(
                                "#FriendMsg_VoiceChannelEndedExplicit",
                                i.display_name,
                              ),
                            )
                          : n.AddVoiceChannelInviteMsg(
                              this.m_CMInterface.steamid.GetAccountID(),
                              I.xm.GetServerRTime32(),
                              (0, V.we)("#FriendMsg_VoiceChannelEnded"),
                            ),
                        this.m_VoiceCallState.m_targetAccountID == Number(e) &&
                          (this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg =
                            !0));
                    }
                  }
                  if (t == this.m_VoiceCallState.m_voiceChatID) {
                    if (0 != this.m_VoiceCallState.m_targetAccountID) {
                      let e = I.xm.ChatStore.GetFriendChat(
                        this.m_VoiceCallState.m_targetAccountID,
                        !1,
                      );
                      null == e ||
                        this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg ||
                        ((this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg = !0),
                        e.AddVoiceChannelInviteMsg(
                          this.m_CMInterface.steamid.GetAccountID(),
                          I.xm.GetServerRTime32(),
                          (0, V.we)("#FriendMsg_VoiceChannelEnded"),
                        ));
                    }
                    0 != this.m_VoiceCallState.m_targetAccountID &&
                      this.m_VoiceCallState.m_eState >
                        O.k_EVoiceCallState_RequestedPermission &&
                      I.xm.AudioPlaybackManager.PlayAudioURL(
                        o.TS.COMMUNITY_CDN_URL +
                          "public/sounds/webui/steam_voice_channel_exit.m4a?v=1",
                      ),
                      this.LogMsg(
                        "(VoiceChat) Got voice chat end notification from server for active chatid",
                      ),
                      this.EndVoiceChatInternal(!1);
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyUserJoinedVoiceChatHandler,
                (e) => {
                  if (
                    e.Body().voice_chatid() ==
                    this.m_VoiceCallState.m_voiceChatID
                  ) {
                    let t = new w.b(e.Body().user_steamid());
                    this.LogMsg(
                      "(VoiceChat) User " +
                        t.Render() +
                        " has just JOINED our active voice chat",
                    ),
                      0 != this.m_VoiceCallState.m_targetAccountID &&
                        this.m_VoiceCallState.m_targetAccountID ==
                          t.GetAccountID() &&
                        (this.m_VoiceCallState.m_bWaitingOnOneOnOneRejoin = !1);
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyUserLeftVoiceChatHandler,
                (e) => {
                  if (
                    e.Body().voice_chatid() ==
                    this.m_VoiceCallState.m_voiceChatID
                  ) {
                    let t = new w.b(e.Body().user_steamid());
                    this.LogMsg(
                      "(VoiceChat) User " +
                        t.Render() +
                        " has just LEFT our active voice chat",
                    ),
                      0 != this.m_VoiceCallState.m_targetAccountID &&
                        this.m_VoiceCallState.m_targetAccountID ==
                          t.GetAccountID() &&
                        (this.m_VoiceCallState.m_bWaitingOnOneOnOneRejoin = !0);
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                L.I0.NotifyShouldRejoinChatRoomVoiceChatHandler,
                (e) => {
                  let t = {
                    groupID: e.Body().chat_group_id(),
                    chatID: e.Body().chat_id(),
                  };
                  return (
                    this.m_VoiceCallState.m_eState >
                      O.k_EVoiceCallState_ScheduledInitiate &&
                      this.m_VoiceCallState.BMatchingCall(0, t) &&
                      (this.LogMsg(
                        "(ChatRoom) Notified that we need to rejoin new voicechat session for chat room... doing so now...",
                      ),
                      this.EndVoiceChatInternal(!0),
                      this.InitiateVoiceChat(0, t)),
                    1
                  );
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                F.aI.NotifyWebRTCUpdateRemoteDescriptionHandler,
                (e) =>
                  this.m_VoiceCallState.m_eState <
                  O.k_EVoiceCallState_InitatedWebRTCSession
                    ? (this.LogMsg(
                        "(WebRTC) Hit NotifyWebRTCUpdateRemoteDescriptionHandler in wrong state " +
                          this.m_VoiceCallState.m_eState,
                      ),
                      2)
                    : (this.m_VoiceCallState.m_bOfferUpdateInProgress
                        ? (this.LogMsg(
                            "(WebRTC) Hit NotifyWebRTCUpdateRemoteDescriptionHandler while already updating, queing work",
                          ),
                          (this.m_VoiceCallState.m_msgPendingRemoteDescriptionUpdate =
                            e.Body()))
                        : this.ProcessUpdatedRemoteDescription(e.Body()),
                      1),
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                F.aI.NotifyWebRTCSessionConnectedHandler,
                (e) =>
                  this.m_VoiceCallState.m_eState <
                  O.k_EVoiceCallState_InitatedWebRTCSession
                    ? (this.LogMsg(
                        "(WebRTC) Hit NotifyWebRTCSessionConnectedHandler in wrong state " +
                          this.m_VoiceCallState.m_eState,
                      ),
                      2)
                    : ((this.m_VoiceCallState.m_webRTCConnectedNotification =
                        e.Body()),
                      (this.m_VoiceCallState.m_webRTCServerIP =
                        this.m_VoiceCallState.m_webRTCConnectedNotification.server_ip()),
                      (this.m_VoiceCallState.m_webRTCServerPort =
                        this.m_VoiceCallState.m_webRTCConnectedNotification.server_port()),
                      (this.m_VoiceCallState.m_webRTCClientIP =
                        this.m_VoiceCallState.m_webRTCConnectedNotification.client_ip()),
                      (this.m_VoiceCallState.m_webRTCClientPort =
                        this.m_VoiceCallState.m_webRTCConnectedNotification.client_port()),
                      "completed" == this.m_PeerConnection.iceConnectionState ||
                      "connected" == this.m_PeerConnection.iceConnectionState
                        ? (this.LogMsg(
                            "(VoiceChat) ICE state is already connected after successful SetRemoteDescription, joining voice chat immediately",
                          ),
                          this.JoinVoiceChatOrAskForOneOnOneChatNow())
                        : (this.LogMsg(
                            "(VoiceChat) ICE state is not connected after successful SetRemoteDescription, waiting for UDP connetivity",
                          ),
                          (this.m_VoiceCallState.m_eState =
                            O.k_EVoiceCallState_WebRTCConnectedWaitingOnIceConnected)),
                      1),
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyAllUsersVoiceStatusHandler,
                (e) => {
                  if (
                    this.m_VoiceCallState.m_voiceChatID !=
                    e.Body().voice_chatid()
                  )
                    return 1;
                  for (let t = 0; t < e.Body().users().length; ++t) {
                    let n = e.Body().users()[t];
                    this.UpdateUserVoiceStatus(n);
                  }
                  return 1;
                },
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyUserVoiceStatusHandler,
                (e) => (this.UpdateUserVoiceStatus(e.Body()), 1),
              ),
              this.m_CMInterface.messageHandlers.RegisterServiceNotificationHandler(
                G.pt.NotifyOneOnOneChatResponseHandler,
                (e) => {
                  if (
                    this.m_VoiceCallState.m_eState >=
                    O.k_EVoiceCallState_RequestedPermission
                  ) {
                    let t = new w.b(e.Body().steamid_partner());
                    if (
                      e.Body().voicechat_id() !=
                      this.m_VoiceCallState.m_voiceChatID
                    )
                      this.LogMsg(
                        "(VoiceChat) Got response from " +
                          t.GetAccountID() +
                          " but for different voice chat than we are in, ignoring. ",
                      );
                    else if (
                      t.GetAccountID() ==
                        this.m_VoiceCallState.m_targetAccountID &&
                      1 == e.Body().accepted_request()
                    )
                      this.LogMsg(
                        "(VoiceChat) Got acceptance from " +
                          t.GetAccountID() +
                          " " +
                          e.Hdr().steamid(),
                      ),
                        I.xm.AudioPlaybackManager.PlayAudioURL(
                          o.TS.COMMUNITY_CDN_URL +
                            "public/sounds/webui/steam_voice_channel_enter.m4a?v=1",
                        ),
                        this.OnVoiceChatAccepted(!0);
                    else {
                      this.LogMsg(
                        "(VoiceChat) Rejected by " + t.GetAccountID(),
                      );
                      let e = I.xm.ChatStore.GetFriendChat(
                          t.GetAccountID(),
                          !1,
                        ),
                        n = I.xm.FriendStore.GetFriend(t.GetAccountID());
                      null != e &&
                        null != n &&
                        ((this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg = !0),
                        e.AddVoiceChannelInviteMsg(
                          t.GetAccountID(),
                          I.xm.GetServerRTime32(),
                          (0, V.we)(
                            "#FriendMsg_VoiceChannelEndedExplicit",
                            n.display_name,
                          ),
                        )),
                        this.DeleteOneOnOneCallWaitingJoinOrAccept(
                          t.GetAccountID(),
                        ),
                        I.xm.AudioPlaybackManager.PlayAudioURL(
                          o.TS.COMMUNITY_CDN_URL +
                            "public/sounds/webui/steam_voice_channel_exit.m4a?v=1",
                        ),
                        this.OnVoiceChatAccepted(!1);
                    }
                  }
                  return 1;
                },
              );
          }
          GetLocalAccountID() {
            return this.m_CMInterface.steamid.GetAccountID();
          }
          RefreshPushToTalkKeySettings() {
            "undefined" != typeof SteamClient &&
              null != SteamClient.WebChat &&
              null != SteamClient.WebChat.GetPushToTalkEnabled &&
              SteamClient.WebChat.GetPushToTalkEnabled().then((e) => {
                (this.m_bPushToTalkEnabled = e.bEnabled),
                  (this.m_VKPushToTalkHotKey = e.vkHotKey),
                  e.bPushToMute &&
                    ((this.m_bPushToMuteEnabled = e.bEnabled),
                    (this.m_bPushToTalkEnabled = !1)),
                  (this.m_strPushToTalkDisplayString = e.strKeyName || "None"),
                  this.m_bPushToTalkEnabled ||
                    this.m_bPushToMuteEnabled ||
                    (null != SteamClient.WebChat &&
                      null != SteamClient.WebChat.SetPushToTalkHotKey &&
                      ((0, H.w)(
                        this.m_Settings.m_bSettingsLoaded,
                        "Settings not loaded but RefreshPushToTalkKeySettings hit",
                      ),
                      this.m_Settings.m_bHasResetOpenMicHotkey ||
                        ((this.m_Settings.m_bHasResetOpenMicHotkey = !0),
                        this.m_Settings.SaveToLocalStorage(),
                        console.log(
                          "Reset Open Mic hotkey to None on first run of new client in open mic mode",
                        ),
                        SteamClient.WebChat.SetPushToTalkHotKey(0),
                        this.RefreshPushToTalkKeySettings())));
              }),
              "undefined" != typeof SteamClient &&
                null === this.m_hRegisterForPushToTalkStateChange &&
                null != SteamClient &&
                null != SteamClient.WebChat &&
                null != SteamClient.WebChat.RegisterForPushToTalkStateChange &&
                (this.m_hRegisterForPushToTalkStateChange =
                  SteamClient.WebChat.RegisterForPushToTalkStateChange(
                    this.OnPushToTalkStateChange,
                  ));
          }
          InitiateFriendChat(e) {
            this.BPartnerHasRequestedAndIsInOneOnOneChat(e)
              ? this.AcceptPartnersOneOnOneChatRequest(e)
              : (this.InitiateVoiceChat(e, null),
                I.xm.AudioPlaybackManager.PlayAudioURL(
                  o.TS.COMMUNITY_CDN_URL +
                    "public/sounds/webui/steam_phonecall.m4a?v=1",
                ));
          }
          InitiateRoomChat(e, t) {
            this.InitiateVoiceChat(0, { groupID: e, chatID: t });
          }
          RegisterForVoiceChatActiveStateChange(e) {
            return this.m_VoiceChatActiveStateChangeCallbacks.Register(e);
          }
          EndLocalMicTest() {
            (this.m_bLocalMicTestActive = !1),
              this.m_VoiceCallState.m_eState ==
                O.k_EVoiceCallState_LocalMicOnly &&
                this.EndVoiceChatInternal(!1),
              this.SetVoiceEchoLocalMic(this.m_bLocalMicEchoStateBeforeMicTest);
          }
          IsLocalMicTestActive() {
            return this.m_bLocalMicTestActive;
          }
          InitiateLocalMicTest() {
            (this.m_bLocalMicTestActive = !0),
              (this.m_bLocalMicEchoStateBeforeMicTest =
                this.m_VoiceEchoLocalMic),
              this.SetVoiceEchoLocalMic(!0),
              this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_None &&
                this.InitiateVoiceChat(0, null);
          }
          GetOneOnOneCallsWaitingForJoinOrAccept() {
            return this.m_mapOneOnOneCallsWaitingJoinOrAccept;
          }
          AcceptPartnersOneOnOneChatRequest(e) {
            let t = this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e);
            if (null == t) return !1;
            (this.m_VoiceCallState.m_timeStartedConnecting = void 0),
              t.ClearAudioRepeats();
            let n = w.b.InitFromAccountID(e);
            return this.OnAcceptOneOnOneVoiceChat(n, t.voice_chatid), !0;
          }
          OnRejectOneOnOneVoiceChatForPartner(e) {
            let t = this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e);
            if (null == t) return !1;
            t.ClearAudioRepeats();
            let n = w.b.InitFromAccountID(e);
            this.OnRejectOneOnOneVoiceChat(n, t.voice_chatid),
              this.m_mapOneOnOneCallsWaitingJoinOrAccept.delete(e);
            let i = I.xm.ChatStore.GetFriendChat(e, !1),
              o = I.xm.FriendStore.self;
            return (
              null != i &&
                null != o &&
                ((this.m_VoiceCallState.m_targetAccountID == e &&
                  this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg) ||
                  i.AddVoiceChannelInviteMsg(
                    o.accountid,
                    I.xm.GetServerRTime32(),
                    (0, V.we)(
                      "#FriendMsg_VoiceChannelEndedExplicit",
                      o.display_name,
                    ),
                  ),
                this.m_VoiceCallState.m_targetAccountID == e &&
                  (this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg = !0)),
              !0
            );
          }
          OnUserLeaveOneOnOneVoiceChat() {
            0 != this.m_VoiceCallState.m_targetAccountID ||
            this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_None
              ? (this.LogMsg(
                  "(VoiceChat) User asking to leave but not end one-on-one chat with: " +
                    this.m_VoiceCallState.m_targetAccountID,
                ),
                this.EndVoiceChatInternal(!1))
              : this.LogMsg(
                  "(VoiceChat) OnUserLeaveOneOnOneVoiceChat called when in a group not one-on-one chat!",
                );
          }
          OnUserEndVoiceChat() {
            if (
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None &&
              0 != this.m_VoiceCallState.m_targetAccountID
            ) {
              if (!this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg) {
                let e = I.xm.ChatStore.GetFriendChat(
                    this.m_VoiceCallState.m_targetAccountID,
                    !1,
                  ),
                  t = I.xm.FriendStore.self;
                null != e &&
                  null != t &&
                  ((this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg = !0),
                  e.AddVoiceChannelInviteMsg(
                    I.xm.CMInterface.steamid.GetAccountID(),
                    I.xm.GetServerRTime32(),
                    (0, V.we)(
                      "#FriendMsg_VoiceChannelEndedExplicit",
                      t.display_name,
                    ),
                  ));
              }
              let e = this.m_VoiceCallState.m_targetAccountID;
              this.m_VoiceCallState.m_targetAccountID = 0;
              let t = r.w.Init(G.BL);
              t
                .Body()
                .set_steamid_partner(
                  w.b.InitFromAccountID(e).ConvertTo64BitString(),
                ),
                this.DeleteOneOnOneCallWaitingJoinOrAccept(e),
                G.cc
                  .EndOneOnOneChat(this.m_CMInterface.GetServiceTransport(), t)
                  .then((t) => {
                    1 == t.GetEResult()
                      ? this.LogMsg("(VoiceChat) Ended voice chat with " + e)
                      : this.LogMsg(
                          "(VoiceChat) Failed ending voice chat with " + e,
                        );
                  });
            }
            0 != this.m_VoiceCallState.m_targetAccountID &&
              this.DeleteOneOnOneCallWaitingJoinOrAccept(
                this.m_VoiceCallState.m_targetAccountID,
              ),
              this.EndVoiceChatInternal(!1);
          }
          m_fnPendingOneOnOneVoiceChatRequestsCallback = null;
          m_pendingOneOnOneVoiceChatRequestsAutorunDisposer = null;
          RegisterForPendingOneOnOneVoiceChatRequests(e) {
            (this.m_fnPendingOneOnOneVoiceChatRequestsCallback = e),
              this.m_pendingOneOnOneVoiceChatRequestsAutorunDisposer &&
                this.m_pendingOneOnOneVoiceChatRequestsAutorunDisposer(),
              (this.m_pendingOneOnOneVoiceChatRequestsAutorunDisposer = null),
              this.m_fnPendingOneOnOneVoiceChatRequestsCallback &&
                (this.m_pendingOneOnOneVoiceChatRequestsAutorunDisposer = (0,
                D.fm)(() => {
                  if (!this.m_fnPendingOneOnOneVoiceChatRequestsCallback)
                    return;
                  let e = Array.from(
                    this.m_mapOneOnOneCallsWaitingJoinOrAccept.keys(),
                  ).filter(
                    (e) =>
                      !this.BSelfHadPreviouslyJoinedOneOnOneChat(e) &&
                      this.GetActiveOneOnOneVoiceChatAccountID() != e &&
                      this.BPartnerHasRequestedAndIsInOneOnOneChat(e),
                  );
                  this.m_fnPendingOneOnOneVoiceChatRequestsCallback(e);
                }));
          }
          m_fnCurrentUserVoiceLevelCallback = null;
          m_currentUserVoiceLevelAutorunDisposer = null;
          RegisterForCurrentUserVoiceLevel(e) {
            (this.m_fnCurrentUserVoiceLevelCallback = e),
              this.m_currentUserVoiceLevelAutorunDisposer &&
                this.m_currentUserVoiceLevelAutorunDisposer(),
              (this.m_currentUserVoiceLevelAutorunDisposer = null),
              this.m_fnCurrentUserVoiceLevelCallback &&
                (this.m_currentUserVoiceLevelAutorunDisposer = (0, D.fm)(() => {
                  if (!this.m_fnCurrentUserVoiceLevelCallback) return;
                  let e = this.get_volume(this.GetLocalAccountID());
                  this.m_fnCurrentUserVoiceLevelCallback(e);
                }));
          }
          SetSelectedMic(e) {
            e != this.m_Settings.m_SelectedMicID &&
              (this.LogMsg("(VoiceChat) Set selected mic " + e),
              (this.m_Settings.m_SelectedMicID = e),
              this.m_Settings.SaveToLocalStorage(),
              this.RestartVoiceChatIfConnected());
          }
          SetSelectedOutput(e) {
            e != this.m_Settings.m_SelectedOutputID &&
              (this.LogMsg("(VoiceChat) Set selected output " + e),
              (this.m_Settings.m_SelectedOutputID = e),
              this.m_Settings.SaveToLocalStorage(),
              this.RestartVoiceChatIfConnected());
          }
          GetAudioWorkletSupport() {
            return I.xm.AudioPlaybackManager.supports_audio_worklets;
          }
          GetUserDeniedMicAccess() {
            return this.m_bUserHasDeniedMicPermissions;
          }
          GetSelectedMic() {
            return this.m_Settings.m_SelectedMicID;
          }
          GetSelectedOutputDevice() {
            return this.m_Settings.m_SelectedOutputID;
          }
          SetUseEchoCancellation(e) {
            e != this.m_Settings.m_VoiceUseEchoCancellation &&
              ((this.m_Settings.m_VoiceUseEchoCancellation = e),
              this.m_Settings.SaveToLocalStorage(),
              this.RestartVoiceChatIfConnected());
          }
          GetUseEchoCancellation() {
            return this.m_Settings.m_VoiceUseEchoCancellation;
          }
          SetUseNoiseCancellation(e) {
            e != this.m_Settings.m_VoiceUseNoiseCancellation &&
              ((this.m_Settings.m_VoiceUseNoiseCancellation = e),
              this.m_Settings.SaveToLocalStorage(),
              this.RestartVoiceChatIfConnected());
          }
          GetUseNoiseCancellation() {
            return this.m_Settings.m_VoiceUseNoiseCancellation;
          }
          SetUseAutoGainControl(e) {
            e != this.m_Settings.m_VoiceUseAutoGainControl &&
              ((this.m_Settings.m_VoiceUseAutoGainControl = e),
              this.m_Settings.SaveToLocalStorage(),
              this.RestartVoiceChatIfConnected());
          }
          GetUseAutoGainControl() {
            return this.m_Settings.m_VoiceUseAutoGainControl;
          }
          SetVoiceEchoLocalMic(e) {
            (this.m_VoiceEchoLocalMic = e), this.UpdateNoiseGateOnActiveMic();
          }
          GetVoiceEchoLocalMic() {
            return this.m_VoiceEchoLocalMic;
          }
          GetPushToTalkOrMuteSoundsEnabled() {
            return this.m_Settings.m_bPlayPTTSounds;
          }
          SetPushToTalkOrMuteSoundsEnabled(e) {
            this.m_Settings.m_bPlayPTTSounds != e &&
              ((this.m_Settings.m_bPlayPTTSounds = e),
              this.m_Settings.SaveToLocalStorage());
          }
          SetPushToTalkEnabled(e) {
            (this.m_bPushToTalkEnabled = e), (this.m_bPushToMuteEnabled = !1);
          }
          GetPushToTalkEnabled() {
            return this.m_bPushToTalkEnabled;
          }
          SetPushToMuteEnabled(e) {
            (this.m_bPushToMuteEnabled = e), (this.m_bPushToTalkEnabled = !1);
          }
          GetPushToMuteEnabled() {
            return this.m_bPushToMuteEnabled;
          }
          GetPushToTalkVoiceStateEnabled() {
            return this.m_bVoicePTTStateEnabled;
          }
          GetPushToTalkHotKeyVK() {
            return this.m_VKPushToTalkHotKey;
          }
          GetPushToTalkHotKeyDisplayString() {
            return this.m_strPushToTalkDisplayString;
          }
          GetUseSteamAudioSpatialization() {
            return this.m_Settings.m_bUseSteamAudioSpatialization;
          }
          SetUseSteamAudioSpatialization(e) {
            this.m_Settings.m_bUseSteamAudioSpatialization != e &&
              ((this.m_Settings.m_bUseSteamAudioSpatialization = e),
              this.m_Settings.SaveToLocalStorage());
          }
          ConfigureVideo(e, t) {
            const n = e != this.m_bSendVideo;
            (this.m_bSendVideo = e),
              (this.m_bReceiveVideo = t),
              n &&
                (this.m_rgAudioStreams.forEach((t) => {
                  t.type == x.k_EAudioStreamType_Microphone &&
                    t.stream?.getVideoTracks().forEach((t) => (t.enabled = e));
                }),
                this.SendVoiceStatusUpdate());
          }
          SetReceivingVideo(e, t) {
            t &&
              !this.m_bReceiveVideo &&
              (this.ConfigureVideo(this.m_bSendVideo, !0),
              this.RestartVoiceChatIfConnected()),
              this.UpdateUserVideoStatus(e, t);
          }
          UpdateUserVideoStatus(e, t) {
            let n = this.m_rgVideoStreams.find((t) => t.accountid == e);
            if (
              (n && (n.receive = t),
              this.m_VoiceCallState.m_eState < O.k_EVoiceCallState_Connected)
            )
              return void (
                t &&
                !n &&
                (this.AddPlaceholderVideoStream(e).receive = !0)
              );
            let i = r.w.Init(G.OS);
            i.Body().set_voice_chatid(this.m_VoiceCallState.m_voiceChatID),
              i
                .Body()
                .set_user_steamid(
                  w.b.InitFromAccountID(e).ConvertTo64BitString(),
                ),
              i.Body().set_accept_webrtc_video(t),
              G.cc
                .UpdateUserVideoStatus(
                  this.m_CMInterface.GetServiceTransport(),
                  i,
                )
                .then((n) => {
                  1 != n.GetEResult() &&
                    (this.LogMsg(
                      "(WebRTC) Error updating video status for " + e,
                    ),
                    this.UpdateUserVideoStatus(e, t));
                })
                .catch((n) => {
                  this.LogMsg("(WebRTC) Error updating video status for " + e),
                    this.UpdateUserVideoStatus(e, t);
                });
          }
          GetPerUserGainLevels() {
            return this.m_mapPerUserOutputGain;
          }
          GetPerUserVoiceStatus() {
            return this.m_mapUserVoiceStatus;
          }
          SetVoiceLogDetails(e) {
            this.m_LogVoiceChatDetails = e;
          }
          GetVoiceLogDetails() {
            return this.m_LogVoiceChatDetails;
          }
          SetUseNoiseGateLevel(e) {
            e != this.m_Settings.m_NoiseGateLevel &&
              (this.LogMsg("(VoiceChat) Nose Gate Level: " + e),
              (this.m_Settings.m_NoiseGateLevel = e),
              this.m_Settings.SaveToLocalStorage(),
              this.UpdateNoiseGateOnActiveMic());
          }
          GetUseNoiseGateLevel() {
            return this.m_Settings.m_NoiseGateLevel;
          }
          SetVoiceInputGain(e) {
            if (this.m_Settings.m_VoiceInputGain != e) {
              (this.m_Settings.m_VoiceInputGain = Math.max(
                0,
                Math.min(e, ne.k_MaxInputOutputGainValue),
              )),
                this.LogMsg(
                  "(VoiceChat) New mic Input Gain value is " +
                    this.m_Settings.m_VoiceInputGain,
                ),
                null != this.m_MicInputGainNode &&
                  this.m_MicInputGainNode.gain.setValueAtTime(
                    this.GetCurrentVoiceInputGainTarget(),
                    this.m_AudioContext.currentTime,
                  );
              const t =
                  0 == this.m_Settings.m_VoiceInputGain && !this.IsMicMuted(),
                n = 0 != this.m_Settings.m_VoiceInputGain && this.IsMicMuted();
              (t || n) && this.ToggleMicMuting(),
                this.m_Settings.SaveToLocalStorage();
            }
          }
          GetVoiceInputGain() {
            return this.m_Settings.m_VoiceInputGain;
          }
          SetVoiceOutputGain(e) {
            if (this.m_Settings.m_VoiceOutputGain != e) {
              (this.m_Settings.m_VoiceOutputGain = Math.max(
                0,
                Math.min(e, ne.k_MaxInputOutputGainValue),
              )),
                this.LogMsg(
                  "(VoiceChat) New global OutputGain value is " +
                    this.m_Settings.m_VoiceOutputGain,
                );
              const t =
                  0 == this.m_Settings.m_VoiceOutputGain &&
                  !this.IsOutputMuted(),
                n =
                  0 != this.m_Settings.m_VoiceOutputGain &&
                  this.IsOutputMuted();
              (t || n) && this.ToggleOutputMuting(),
                this.m_Settings.SaveToLocalStorage();
              for (let e = 0; e < this.m_rgAudioStreams.length; ++e) {
                let t = this.m_rgAudioStreams[e];
                t.output_gain_node &&
                  (t.type == x.k_EAudioStreamType_Microphone
                    ? t.output_gain_node.gain.setValueAtTime(
                        this.m_Settings.m_VoiceOutputGain,
                        this.m_AudioContext.currentTime,
                      )
                    : t.output_gain_node.gain.setValueAtTime(
                        this.m_Settings.m_VoiceOutputGain *
                          this.GetPerUserGainLevel(t.accountid),
                        this.m_AudioContext.currentTime,
                      ));
              }
            }
          }
          BIsAccountFullyConnectedToActiveVoiceChat(e) {
            if (e == this.m_CMInterface.steamid.GetAccountID())
              return (
                this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_Connected
              );
            if (this.m_VoiceCallState.m_eState < O.k_EVoiceCallState_Connected)
              return !1;
            for (let t = 0; t < this.m_rgAudioStreams.length; ++t) {
              let n = this.m_rgAudioStreams[t];
              if (
                n.output_gain_node &&
                n.type == x.k_EAudioStreamType_IncomingStream &&
                n.accountid == e
              )
                return !0;
            }
            return !1;
          }
          GetVoiceOutputGain() {
            return this.m_Settings.m_VoiceOutputGain;
          }
          GetUserMutedRemotely(e) {
            let t = this.m_mapUserVoiceStatus.get(e);
            return (
              null == t &&
                ((t = new ee()), this.m_mapUserVoiceStatus.set(e, t)),
              t.mic_muted_locally
            );
          }
          GetOutputMutedRemotely(e) {
            let t = this.m_mapUserVoiceStatus.get(e);
            return (
              null == t &&
                ((t = new ee()), this.m_mapUserVoiceStatus.set(e, t)),
              t.output_muted_locally
            );
          }
          GetUserHasNoMicForSession(e) {
            let t = this.m_mapUserVoiceStatus.get(e);
            return (
              null == t &&
                ((t = new ee()), this.m_mapUserVoiceStatus.set(e, t)),
              t.has_no_mic_for_session
            );
          }
          GetUserSendsVideo(e) {
            let t = this.m_mapUserVoiceStatus.get(e);
            return (
              null == t &&
                ((t = new ee()), this.m_mapUserVoiceStatus.set(e, t)),
              t.sends_video
            );
          }
          ConvertSliderToGainValue(e, t) {
            return (e = e <= 50 ? (e / 50) * 1 : 1 + ((e - 50) / 50) * (t - 1));
          }
          ConvertGainValueToSliderValue(e, t) {
            let n = e;
            return (n = e <= 1 ? 50 * e : 50 + ((e - 1) / (t - 1)) * 50), n;
          }
          ForceReconnectingStatus(e) {
            this.m_bForceReconnectingStatus = !0;
          }
          ForceConnectingStatus(e) {
            this.m_bForceConnectingStatus = !0;
          }
          SetAutoShowVideoStream(e) {
            (this.m_bAutoShowVideoStream = e), e && (this.m_bReceiveVideo = !0);
          }
          GetActiveChatRoomGroupID() {
            return this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_None
              ? ""
              : this.m_VoiceCallState.m_chatRoom
                ? this.m_VoiceCallState.m_chatRoom.groupID
                : "";
          }
          GetActiveVoiceChatID() {
            return this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_None
              ? ""
              : this.m_VoiceCallState.m_chatRoom
                ? this.m_VoiceCallState.m_chatRoom.chatID
                : "";
          }
          BInitiatedOneOnOneChat(e) {
            return (
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None &&
              this.m_VoiceCallState.m_targetAccountID == e &&
              this.m_VoiceCallState.m_bInitiatedOneOnOneCall
            );
          }
          ToggleMicMuting() {
            for (let e = 0; e < this.m_rgAudioStreams.length; ++e) {
              let t = this.m_rgAudioStreams[e];
              if (t.type == x.k_EAudioStreamType_Microphone) {
                t.muted = !t.muted;
                let e = t.stream.getTracks();
                for (let n = 0; n < e.length; n++) e[n].enabled = !t.muted;
                t.muted
                  ? this.m_MicInputGainNode.gain.setValueAtTime(
                      0,
                      this.m_AudioContext.currentTime + 0.2,
                    )
                  : this.m_MicInputGainNode.gain.setValueAtTime(
                      this.GetCurrentVoiceInputGainTarget(),
                      this.m_AudioContext.currentTime,
                    );
              }
            }
            this.SendVoiceStatusUpdate();
          }
          BHasSampleRateTooHighInBrowser() {
            return (
              !o.TS.IN_CLIENT &&
              I.xm.AudioPlaybackManager.GetLastObservedSampleRate() > 48e3
            );
          }
          BNoMicAvailableForSession() {
            if (
              this.m_VoiceCallState.m_eState <=
              O.k_EVoiceCallState_RequestedMicAccess
            )
              return !1;
            if (this.BHasSampleRateTooHighInBrowser()) return !0;
            for (let e = 0; e < this.m_rgAudioStreams.length; ++e)
              if (
                this.m_rgAudioStreams[e].type == x.k_EAudioStreamType_Microphone
              )
                return !1;
            return !0;
          }
          IsMicMuted() {
            for (let e = 0; e < this.m_rgAudioStreams.length; ++e)
              if (
                this.m_rgAudioStreams[e].type == x.k_EAudioStreamType_Microphone
              )
                return this.m_rgAudioStreams[e].muted;
            return !1;
          }
          ToggleOutputMuting() {
            this.m_bOutputMuted = !this.m_bOutputMuted;
            for (let e = 0; e < this.m_rgAudioStreams.length; ++e) {
              let t = this.m_rgAudioStreams[e];
              if (t.type == x.k_EAudioStreamType_IncomingStream) {
                t.muted =
                  this.m_bOutputMuted || this.GetPerUserMuting(t.accountid);
                let e = t.stream.getTracks();
                for (let t = 0; t < e.length; t++)
                  e[t].enabled = !this.m_bOutputMuted;
              }
            }
            this.SendVoiceStatusUpdate();
          }
          IsOutputMuted() {
            return this.m_bOutputMuted;
          }
          GetActiveOneOnOneVoiceChatAccountID() {
            return this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_None
              ? 0
              : this.m_VoiceCallState.m_targetAccountID;
          }
          get audio_streams() {
            return this.m_rgAudioStreams;
          }
          get video_streams() {
            return this.m_rgVideoStreams;
          }
          AddPlaceholderVideoStream(e) {
            let t = new j();
            return (
              (t.accountid = e),
              this.m_rgVideoStreams.push(t),
              this.m_bAutoShowVideoStream &&
                ((t.showOnDesktop = !0), this.SetReceivingVideo(e, !0)),
              t
            );
          }
          get mic_volume() {
            return this.m_MicVolumeMeter;
          }
          get_volume(e) {
            if (e == this.m_CMInterface.steamid.GetAccountID()) {
              if (
                this.IsMicMuted() ||
                (this.m_VoiceCallState.m_eState !=
                  O.k_EVoiceCallState_Connected &&
                  this.m_VoiceCallState.m_eState !=
                    O.k_EVoiceCallState_LocalMicOnly)
              )
                return 0;
            } else if (
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_Connected
            )
              return 0;
            let t = 0;
            for (let n = 0; n < this.m_rgAudioStreams.length; ++n) {
              let i = this.m_rgAudioStreams[n];
              i.accountid == e &&
                null != i.volume_meter &&
                (t = Math.max(t, i.volume_meter.rounded_volume));
            }
            return t;
          }
          GetPerUserGainLevel(e) {
            let t = this.m_mapPerUserOutputGain.get(e);
            return null == t ? 1 : t.gain;
          }
          GetPerUserMuting(e) {
            let t = this.m_mapPerUserOutputGain.get(e);
            return null != t && t.muted;
          }
          SetPerUserMuting(e, t) {
            let n = this.m_mapPerUserOutputGain.get(e);
            null == n && (n = new J()),
              (n.muted = t || this.m_bOutputMuted),
              this.m_mapPerUserOutputGain.set(e, n),
              this.UpdateStreamsForPerUseGainChange(e);
          }
          SetPerUserGainLevel(e, t) {
            let n = Math.max(0, Math.min(4, t)),
              i = this.m_mapPerUserOutputGain.get(e);
            null == i && (i = new J()),
              (i.gain = n),
              i.gain < 0.001 ? (i.muted = !0) : (i.muted = !1),
              this.m_mapPerUserOutputGain.set(e, i),
              this.UpdateStreamsForPerUseGainChange(e);
          }
          UpdateStreamsForPerUseGainChange(e) {
            let t = this.m_mapPerUserOutputGain.get(e);
            null == t && (t = new J());
            for (let n = 0; n < this.m_rgAudioStreams.length; ++n) {
              let i = this.m_rgAudioStreams[n];
              if (i.accountid == e && null != i.output_gain_node) {
                (i.muted = t.muted),
                  i.output_gain_node.gain.setValueAtTime(
                    this.m_Settings.m_VoiceOutputGain * t.gain,
                    this.m_AudioContext.currentTime,
                  );
                let e = i.stream.getTracks();
                for (let t = 0; t < e.length; t++) e[t].enabled = !i.muted;
              }
            }
          }
          OnUserLeftChatRoomVoiceChat(e, t, n, i) {
            this.m_rgVideoStreams
              .filter((e) => e.accountid == n)
              .map((e) => (e.stream = null));
            let o = { groupID: e, chatID: t };
            this.m_VoiceCallState.m_eState >
              O.k_EVoiceCallState_RequestedPermission &&
              this.m_VoiceCallState.BMatchingCall(0, o) &&
              (n != this.m_CMInterface.steamid.GetAccountID() ||
                i ||
                (this.LogMsg(
                  "(ChatRoom) We were told that we left chat " +
                    t +
                    " but we hadn't initiated that, trying to reconnect...",
                ),
                this.RestartVoiceChatIfConnected()));
          }
          IsMicTestActive() {
            return (
              this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_LocalMicOnly
            );
          }
          IsAnyVoiceActive() {
            return (
              !(
                this.m_VoiceCallState.m_eState <=
                  O.k_EVoiceCallState_LocalMicOnly &&
                0 == this.m_VoiceCallState.m_targetAccountID &&
                null == this.m_VoiceCallState.m_chatRoom
              ) &&
              (this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None ||
                0 != this.m_ScheduledInitiate)
            );
          }
          BSelfHasAcceptedOrInitiatedOneOnOneChat(e) {
            return (
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None &&
              this.m_VoiceCallState.m_targetAccountID == e &&
              (!!this.m_VoiceCallState.m_bInitiatedOneOnOneCall ||
                this.m_VoiceCallState.m_eState >=
                  O.k_EVoiceCallState_NotifyingVoiceChatOfWebRTCSession)
            );
          }
          BSelfHadPreviouslyJoinedOneOnOneChat(e) {
            let t = this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e);
            if (null == t) return !1;
            if (
              t.partner_accountid != this.m_CMInterface.steamid.GetAccountID()
            )
              return !1;
            let n = t.voice_chatid;
            return t.previously_joined && "" != n;
          }
          BPartnerHasAcceptedOrInitiatedOneOnOneChat(e) {
            return (
              !(
                this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None ||
                this.m_VoiceCallState.m_bInitiatedOneOnOneCall ||
                !this.BPartnerHasRequestedAndIsInOneOnOneChat(e)
              ) ||
              (this.m_VoiceCallState.m_eState >
                O.k_EVoiceCallState_RequestedPermission &&
                !this.m_VoiceCallState.m_bWaitingOnOneOnOneRejoin)
            );
          }
          BPartnerHasRequestedAndIsInOneOnOneChat(e) {
            let t = this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e);
            return (
              null != t &&
              t.partner_accountid ==
                this.m_CMInterface.steamid.GetAccountID() &&
              "" != t.voice_chatid
            );
          }
          IsAttemptingInitialConnection() {
            return (
              (0 == this.m_VoiceCallState.m_targetAccountID ||
                this.m_VoiceCallState.m_eState !=
                  O.k_EVoiceCallState_RequestedPermission) &&
              this.m_VoiceCallState.m_eState !=
                O.k_EVoiceCallState_LocalMicOnly &&
                this.IsAnyVoiceActive() &&
                  0 == this.m_VoiceCallState.m_nFailuresThisInitiate &&
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_Connected
            );
          }
          HasBeenAttemptingOverTwoSeconds() {
            let e = this.m_VoiceCallState.m_bIsConnectionAttemptOverTwoSeconds,
              t = this.IsAttemptingInitialConnection();
            return !!this.m_bForceConnectingStatus || (e && t);
          }
          IsAttemptingReconnect() {
            let e = this.IsAnyVoiceActive(),
              t = this.m_VoiceCallState.m_nFailuresThisInitiate,
              n = this.m_VoiceCallState.m_eState;
            return (
              !!this.m_bForceReconnectingStatus ||
              (e && t > 0 && n != O.k_EVoiceCallState_Connected)
            );
          }
          IsVoiceActiveForFriend(e) {
            return this.IsVoiceActive(e, null);
          }
          IsVoiceActiveForRoom(e, t) {
            return this.IsVoiceActive(0, { groupID: e, chatID: t });
          }
          IsVoiceActiveForGroup(e) {
            return (
              !!this.m_VoiceCallState.BCallActiveForGroup(e) &&
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None
            );
          }
          IsVoiceChatActive() {
            return this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None;
          }
          LogMsg(e) {
            this.m_rgLogLines.push(e),
              this.m_LogVoiceChatDetails && console.log(e);
          }
          GetVoiceLogs() {
            return this.m_rgLogLines.join("\r\n");
          }
          OnPushToTalkReleased() {
            ((this.m_bPushToTalkEnabled &&
              null != this.m_MicInputGainNode &&
              !this.m_bVoicePTTStateEnabled) ||
              (this.m_bPushToMuteEnabled &&
                null != this.m_MicInputGainNode &&
                this.m_bVoicePTTStateEnabled)) &&
              this.m_MicInputGainNode.gain.setValueAtTime(
                this.GetCurrentVoiceInputGainTarget(),
                this.m_AudioContext.currentTime + 0.2,
              );
          }
          DebouncedToggleMicMuting() {
            this.ToggleMicMuting(),
              this.GetPushToTalkOrMuteSoundsEnabled() &&
                (this.IsMicMuted()
                  ? I.xm.AudioPlaybackManager.PlayAudioURL(
                      o.TS.COMMUNITY_CDN_URL +
                        "public/sounds/webui/steam_ui_ptt_short_02_quiet.m4a",
                    )
                  : I.xm.AudioPlaybackManager.PlayAudioURL(
                      o.TS.COMMUNITY_CDN_URL +
                        "public/sounds/webui/steam_ui_ptt_short_01_quiet.m4a",
                    ));
          }
          OnPushToTalkStateChange(e) {
            let t = e,
              n = !1;
            I.xm.SettingsStore.BClientHasFeatureOrOnWeb(
              "NewVoiceHotKeyState",
            ) && ((n = !0), this.m_bPushToMuteEnabled && (t = !e)),
              !n || this.m_bPushToTalkEnabled || this.m_bPushToMuteEnabled
                ? t != this.m_bVoicePTTStateEnabled &&
                  ((this.m_bVoicePTTStateEnabled = t),
                  (this.m_bPushToTalkEnabled || this.m_bPushToMuteEnabled) &&
                    null != this.m_MicInputGainNode &&
                    (this.m_bVoicePTTStateEnabled
                      ? (this.GetPushToTalkOrMuteSoundsEnabled() &&
                          I.xm.AudioPlaybackManager.PlayAudioURL(
                            o.TS.COMMUNITY_CDN_URL +
                              "public/sounds/webui/steam_ui_ptt_short_01_quiet.m4a",
                          ),
                        this.m_bPushToMuteEnabled
                          ? (this.m_hPushToTalkReleaseTimeout =
                              SetBackgroundTimeout(
                                this.OnPushToTalkReleased,
                                100,
                              ))
                          : (this.m_MicInputGainNode.gain.setValueAtTime(
                              this.GetCurrentVoiceInputGainTarget(),
                              this.m_AudioContext.currentTime,
                            ),
                            0 != this.m_hPushToTalkReleaseTimeout &&
                              ClearBackgroundTimeout(
                                this.m_hPushToTalkReleaseTimeout,
                              )))
                      : (this.GetPushToTalkOrMuteSoundsEnabled() &&
                          I.xm.AudioPlaybackManager.PlayAudioURL(
                            o.TS.COMMUNITY_CDN_URL +
                              "public/sounds/webui/steam_ui_ptt_short_02_quiet.m4a",
                          ),
                        this.m_bPushToMuteEnabled
                          ? (this.m_MicInputGainNode.gain.setValueAtTime(
                              this.GetCurrentVoiceInputGainTarget(),
                              this.m_AudioContext.currentTime,
                            ),
                            0 != this.m_hPushToTalkReleaseTimeout &&
                              ClearBackgroundTimeout(
                                this.m_hPushToTalkReleaseTimeout,
                              ))
                          : (this.m_hPushToTalkReleaseTimeout =
                              SetBackgroundTimeout(
                                this.OnPushToTalkReleased,
                                100,
                              )))))
                : e &&
                  null != this.m_MicInputGainNode &&
                  this.DebouncedToggleMicMuting();
          }
          GetCurrentVoiceInputGainTarget() {
            return (this.m_bPushToTalkEnabled &&
              !this.m_bVoicePTTStateEnabled) ||
              (this.m_bPushToMuteEnabled && !this.m_bVoicePTTStateEnabled)
              ? 0
              : this.m_Settings.m_VoiceInputGain;
          }
          RestartVoiceChatIfConnected() {
            if (
              this.m_VoiceCallState.m_eState >
              O.k_EVoiceCallState_ScheduledInitiate
            ) {
              let e = this.m_VoiceCallState.m_targetAccountID,
                t = this.m_VoiceCallState.m_chatRoom;
              this.LogMsg(
                "(WebRTC) Ending then auto-re-initiating voice chat - without leave of chatroom if joined as attempt is quick rejoin",
              ),
                this.EndVoiceChatInternal(!0),
                this.InitiateVoiceChat(e, t);
            }
          }
          GetNoiseGateOptions() {
            let e = {
              attack: 2,
              release: 0.01,
              threshold: -80,
              bufferSize: 1024,
            };
            switch (this.m_Settings.m_NoiseGateLevel) {
              case W.H.k_ENoiseGateLevel_Off:
                break;
              case W.H.k_ENoiseGateLevel_Low:
                e = {
                  attack: 0.8,
                  release: 0.06,
                  threshold: -48,
                  bufferSize: 1024,
                };
                break;
              case W.H.k_ENoiseGateLevel_Medium:
                e = {
                  attack: 0.8,
                  release: 0.06,
                  threshold: -36,
                  bufferSize: 1024,
                };
                break;
              case W.H.k_ENoiseGateLevel_High:
                e = {
                  attack: 0.8,
                  release: 0.09,
                  threshold: -22,
                  bufferSize: 1024,
                };
            }
            return e;
          }
          DeleteOneOnOneCallWaitingJoinOrAccept(e) {
            let t = this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e);
            null != t &&
              (t.ClearAudioRepeats(),
              this.m_mapOneOnOneCallsWaitingJoinOrAccept.delete(e));
          }
          UpdateNoiseGateOnActiveMic() {
            if (null != this.m_MicInputGainNode) {
              let e;
              for (let t = 0; t < this.m_rgAudioStreams.length; ++t) {
                let n = this.m_rgAudioStreams[t];
                if (n.type == x.k_EAudioStreamType_Microphone) {
                  e = n;
                  break;
                }
              }
              if (null != e) {
                if (null != this.m_MicNoiseGate)
                  this.m_MicInputGainNode.disconnect(this.m_MicNoiseGate.input),
                    this.m_MicNoiseGate.input
                      ? (this.m_MicNoiseGate.input.disconnect(),
                        this.m_MicNoiseGate.output.disconnect(),
                        this.m_MicNoiseGate.noiseGateKernel_.disconnect())
                      : this.m_MicNoiseGate.disconnect(),
                    (this.m_MicNoiseGate = void 0);
                else {
                  this.m_MicInputGainNode.disconnect(e.destination_node);
                  try {
                    this.m_MicInputGainNode.disconnect(e.output_gain_node);
                  } catch (e) {}
                }
                this.m_MicVolumeMeter.stop(),
                  (this.m_MicVolumeMeter = void 0),
                  null != e.volume_meter &&
                    (e.volume_meter.stop(), (e.volume_meter = void 0)),
                  this.m_Settings.m_NoiseGateLevel != W.H.k_ENoiseGateLevel_Off
                    ? this.SetupNoiseGateOnMic(e.destination_node)
                    : this.m_MicInputGainNode.connect(e.destination_node);
                let t = e.source_node;
                this.m_MicNoiseGate &&
                  (t = this.m_MicNoiseGate.output
                    ? this.m_MicNoiseGate.output
                    : this.m_MicNoiseGate),
                  (this.m_MicVolumeMeter = new B(t, this.m_AudioContext)),
                  (e.volume_meter = this.m_MicVolumeMeter),
                  this.m_VoiceEchoLocalMic && null == this.m_MicNoiseGate
                    ? this.m_MicInputGainNode.connect(e.output_gain_node)
                    : this.m_VoiceEchoLocalMic &&
                      (this.m_MicNoiseGate.output
                        ? this.m_MicNoiseGate.output.connect(e.output_gain_node)
                        : this.m_MicNoiseGate.connect(e.output_gain_node));
              }
            }
          }
          OnAudioContextStateChange() {
            null != this.m_AudioContext &&
              this.LogMsg(
                "(WebAudio) Audio context state changed: " +
                  this.m_AudioContext.state,
              );
          }
          OnIceCandidate(e) {
            this.LogMsg(
              "(ICE) Local candidate: " + JSON.stringify(e.candidate),
            );
          }
          AddRemoteIceCandidate(e, t) {
            let n = this.LogMsg;
            n("(ICE) Candidate from remote peer: " + JSON.stringify(t)),
              e
                .addIceCandidate(t)
                .then(function () {})
                .catch(function (e) {
                  n("addIceCandidate error: " + e + " " + e.name);
                });
          }
          OnSignalingStateChange(e, t) {
            this.LogMsg("(WebRTC) OnSignalingStateChange: " + e.signalingState);
          }
          OnIceConnectionStateChange(e, t) {
            this.LogMsg(
              "(ICE) OnIceConnectionStateChange: " + e.iceConnectionState,
            ),
              "failed" == e.iceConnectionState &&
              this.m_VoiceCallState.m_eState >
                O.k_EVoiceCallState_CreatePeerConnection
                ? this.BackOffAndRetryInitiateVoiceChat()
                : ("completed" != e.iceConnectionState &&
                    "connected" != e.iceConnectionState) ||
                  this.m_VoiceCallState.m_eState !=
                    O.k_EVoiceCallState_WebRTCConnectedWaitingOnIceConnected ||
                  (this.LogMsg(
                    "(VoiceChat) ICE connection state now 'completed' or 'connected', proceeding to join voice chat",
                  ),
                  this.JoinVoiceChatOrAskForOneOnOneChatNow());
          }
          OnIceGatheringStateChange(e, t) {
            this.LogMsg(
              "(ICE) OnIceGatheringStateChange: " + e.iceGatheringState,
            );
          }
          RemoveStreamToOutput(e) {
            this.LogMsg(
              "(WebRTC) RemoveStreamToOutput - " +
                e.id +
                " - " +
                e.getTracks().length,
            );
            for (let t = 0; t < this.m_rgAudioStreams.length; ++t) {
              let n = this.m_rgAudioStreams[t];
              if (n.unique_id == e.id) {
                if (
                  (n.elem.pause(),
                  (n.elem.srcObject = void 0),
                  (n.elem.src = void 0),
                  (n.elem = void 0),
                  null != n.volume_meter &&
                    (n.volume_meter.stop(), (n.volume_meter = void 0)),
                  null != n.output_gain_node &&
                    (n.output_gain_node.disconnect(),
                    (n.output_gain_node = void 0)),
                  null != n.source_node)
                ) {
                  try {
                    n.source_node.disconnect();
                  } catch (e) {}
                  n.source_node = void 0;
                }
                return void this.m_rgAudioStreams.splice(t, 1);
              }
            }
            for (let t = 0; t < this.m_rgVideoStreams.length; ++t) {
              if (this.m_rgVideoStreams[t].unique_id == e.id)
                return void this.m_rgVideoStreams.splice(t, 1);
            }
          }
          OnRemoveRemoteStream(e) {
            this.RemoveStreamToOutput(e.stream);
          }
          SetupAudioStreamElementAndCreateSourceNode(e, t) {
            let n =
              -1 !=
              this.m_PeerConnection.localDescription.sdp.indexOf("mozilla...");
            null != e.source_node &&
              (e.source_node.disconnect(), (e.source_node = void 0)),
              null == e.elem
                ? (e.elem = document.createElement("audio"))
                : (e.elem.srcObject = void 0),
              (e.elem.srcObject = t),
              n
                ? (e.elem.play(),
                  (e.source_node = this.m_AudioContext.createMediaElementSource(
                    e.elem,
                  )))
                : (e.source_node =
                    this.m_AudioContext.createMediaStreamSource(t));
          }
          static DistanceBetween(e, t) {
            const n = e.x - t.x,
              i = e.y - t.y,
              o = e.z - t.z;
            return Math.sqrt(n * n + i * i + o * o);
          }
          GenerateVoicePositions() {
            const e = [];
            for (let t = 0; t < ne.k_nMaxPositions; ++t) {
              const n = (2 * Math.PI * t) / ne.k_nMaxPositions;
              e.push({ x: Math.cos(n), y: 0, z: Math.sin(n) });
            }
            const t = [],
              n = new Set();
            for (t.push(0), n.add(0); t.length < e.length; ) {
              let i = -1,
                o = -1;
              for (let r = 0; r < e.length; ++r) {
                if (n.has(r)) continue;
                let a = 1e4;
                for (let n = 0; n < t.length; ++n)
                  a = Math.min(a, ne.DistanceBetween(e[t[n]], e[r]));
                a > o && ((o = a), (i = r));
              }
              t.push(i), n.add(i);
            }
            this.m_rgPositions = [];
            for (let n = 0; n < t.length; ++n) this.m_rgPositions.push(e[t[n]]);
            for (let e = t.length - 1; e >= 0; --e)
              this.m_rgFreePositionIndices.push(e);
          }
          GetNextVoiceChatPositionIndex() {
            return this.m_rgFreePositionIndices.pop();
          }
          GetVoiceChatPosition(e) {
            if (null == e) return { x: 0, y: 0, z: 0 };
            const t = Math.min(e, this.m_rgPositions.length - 1);
            return this.m_rgPositions[t];
          }
          SetLocalHMDPose(e) {
            (this.m_localPose = e),
              this.m_AudioContext &&
                (this.m_AudioContext.listener.positionX.setValueAtTime(
                  e.position[0],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.positionY.setValueAtTime(
                  e.position[1],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.positionZ.setValueAtTime(
                  e.position[2],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.forwardX.setValueAtTime(
                  e.ahead[0],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.forwardY.setValueAtTime(
                  e.ahead[1],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.forwardZ.setValueAtTime(
                  e.ahead[2],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.upX.setValueAtTime(
                  e.up[0],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.upY.setValueAtTime(
                  e.up[1],
                  this.m_AudioContext.currentTime,
                ),
                this.m_AudioContext.listener.upZ.setValueAtTime(
                  e.up[2],
                  this.m_AudioContext.currentTime,
                ));
          }
          SetRemoteHMDPose(e, t) {
            this.m_mapRemotePoseForAccountID.set(e, t);
            for (const n of this.m_rgAudioStreams)
              if (n.accountid === e) {
                this.m_Settings.m_bUseSteamAudioSpatialization
                  ? (n.steamaudio_node?.parameters
                      .get("posX")
                      .setValueAtTime(
                        t.position[0],
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("posY")
                      .setValueAtTime(
                        t.position[1],
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("posZ")
                      .setValueAtTime(
                        t.position[2],
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("originX")
                      .setValueAtTime(
                        this.m_AudioContext.listener.positionX.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("originY")
                      .setValueAtTime(
                        this.m_AudioContext.listener.positionY.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("originZ")
                      .setValueAtTime(
                        this.m_AudioContext.listener.positionZ.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("aheadX")
                      .setValueAtTime(
                        this.m_AudioContext.listener.forwardX.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("aheadY")
                      .setValueAtTime(
                        this.m_AudioContext.listener.forwardY.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("aheadZ")
                      .setValueAtTime(
                        this.m_AudioContext.listener.forwardZ.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("upX")
                      .setValueAtTime(
                        this.m_AudioContext.listener.upX.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("upY")
                      .setValueAtTime(
                        this.m_AudioContext.listener.upY.value,
                        this.m_AudioContext.currentTime,
                      ),
                    n.steamaudio_node?.parameters
                      .get("upZ")
                      .setValueAtTime(
                        this.m_AudioContext.listener.upZ.value,
                        this.m_AudioContext.currentTime,
                      ))
                  : (n.spatializer_node?.positionX.setValueAtTime(
                      t.position[0],
                      this.m_AudioContext.currentTime,
                    ),
                    n.spatializer_node?.positionY.setValueAtTime(
                      t.position[1],
                      this.m_AudioContext.currentTime,
                    ),
                    n.spatializer_node?.positionZ.setValueAtTime(
                      t.position[2],
                      this.m_AudioContext.currentTime,
                    ));
                break;
              }
          }
          GetLocalHMDPose() {
            return this.m_localPose;
          }
          GetRemoteHMDPose(e) {
            return this.m_mapRemotePoseForAccountID.get(e);
          }
          GetRemoteHMDPoseMap() {
            return this.m_mapRemotePoseForAccountID;
          }
          AddStreamToOutput(e) {
            let t = e.id.match(/Peer-(\d+)-(\d+)-/),
              n = t && 3 == t.length ? Number(t[2]) : 0;
            if (e.getAudioTracks().length > 0) {
              let t = new z();
              if (
                (this.SetupAudioStreamElementAndCreateSourceNode(t, e),
                (t.unique_id = e.id),
                (t.stream = e),
                (t.type = x.k_EAudioStreamType_IncomingStream),
                (t.accountid = n),
                this.LogMsg(
                  "(VoiceChat) AddStreamToOutput (audio) " +
                    t.accountid +
                    " " +
                    t.unique_id,
                ),
                (t.muted =
                  this.m_bOutputMuted || this.GetPerUserMuting(t.accountid)),
                t.muted)
              ) {
                let e = t.stream.getTracks();
                for (let n = 0; n < e.length; n++) e[n].enabled = !t.muted;
              }
              this.m_rgAudioStreams.push(t),
                (t.output_gain_node = this.m_AudioContext.createGain()),
                t.output_gain_node.gain.setValueAtTime(
                  this.m_Settings.m_VoiceOutputGain *
                    this.GetPerUserGainLevel(t.accountid),
                  this.m_AudioContext.currentTime,
                ),
                t.source_node.connect(t.output_gain_node),
                t.output_gain_node.connect(
                  I.xm.AudioPlaybackManager.GetActiveDestination(),
                ),
                (t.volume_meter = new B(t.source_node, this.m_AudioContext)),
                t.volume_meter.Connect(t.source_node);
            }
            if (0 != n && e.getVideoTracks().length > 0) {
              let t =
                this.m_rgVideoStreams.find((e) => e.accountid == n) ??
                this.AddPlaceholderVideoStream(n);
              (t.unique_id = e.id),
                (t.stream = e),
                this.LogMsg(
                  "(VoiceChat) AddStreamToOutput (video) " +
                    t.accountid +
                    " " +
                    t.unique_id,
                ),
                T.OnAddRemoteVideoStream(t.accountid, t.unique_id);
            }
          }
          OnAddTrack(e, t) {
            for (let t = 0; t < this.m_rgAudioStreams.length; ++t) {
              let n = this.m_rgAudioStreams[t];
              if (
                n.unique_id == e.id &&
                (this.LogMsg(
                  "(VoiceChat) OnAddTrack to existing stream " +
                    n.accountid +
                    " " +
                    n.unique_id,
                ),
                n.volume_meter.DisconnectAll(),
                this.SetupAudioStreamElementAndCreateSourceNode(n, e),
                n.volume_meter.Connect(n.source_node),
                n.source_node.connect(n.output_gain_node),
                n.muted)
              ) {
                let e = n.stream.getTracks();
                for (let t = 0; t < e.length; t++) e[t].enabled = !n.muted;
              }
            }
          }
          OnAddRemoteStream(e) {
            if (
              (this.LogMsg(
                "(WebRTC) OnAddRemoteStream - " +
                  e.stream.id +
                  " - " +
                  e.stream.getTracks().length,
              ),
              null != this.m_AudioContext)
            ) {
              if (null != e.stream && null != this.m_AudioContext) {
                this.AddStreamToOutput(e.stream);
                let t = this;
                e.stream.onaddtrack = function (e) {
                  t.OnAddTrack(this, e);
                };
              }
            } else
              this.LogMsg(
                "(WebRTC)Got OnAddRemoteStream when we don't have audio context... stopped chat?",
              );
          }
          ModifyLocalSDPBeforeSetting(e) {
            let t = /a=rtpmap:(\d+)\sopus(.*)/,
              n = /a=fmtp:(\d+)\s(.*)/,
              i = e.sdp.split("\r\n"),
              o = -1 != e.sdp.indexOf("mozilla..."),
              r = !1;
            for (let e = 0; e < i.length; ++e) {
              let a = i[e];
              if ("m=" == a.substr(0, 2) && e + 1 < i.length) {
                let s = "0";
                for (let n = e + 1; n < i.length; ++n) {
                  if (((a = i[n]), "m=" == a.substr(0, 2))) {
                    e = n - 1;
                    break;
                  }
                  let o = a.match(t);
                  if (o) {
                    s = o[1];
                    break;
                  }
                }
                if ("0" != s)
                  for (let t = e + 1; t < i.length; ++t) {
                    if (((a = i[t]), "m=" == a.substr(0, 2))) {
                      e = t - 1;
                      break;
                    }
                    let l = a.match(n);
                    if (l && l[1] == s) {
                      o ||
                        (i[t] =
                          "a=fmtp:" +
                          l[1] +
                          " minptime=10;useinbandfec=1;usedtx=1"),
                        (r = !0);
                      break;
                    }
                  }
              }
            }
            return r && (e.sdp = i.join("\r\n")), e;
          }
          OnCreateOfferSuccess(e, t) {
            if (
              this.m_VoiceCallState.m_eState !=
              O.k_EVoiceCallState_CreatePeerConnection
            )
              return void this.LogMsg(
                "(WebRTC) Hit OnCreateOfferSuccess in wrong state " +
                  this.m_VoiceCallState.m_eState,
              );
            this.LogMsg("(WebRTC) OnCreateOfferSuccess");
            let n = this;
            (t = this.ModifyLocalSDPBeforeSetting(t)),
              e
                .setLocalDescription(t)
                .then(function () {
                  let e = r.w.Init(F.LH);
                  e.Body().set_sdp(JSON.stringify(t));
                  let i = new U.UAParser(navigator.userAgent).getResult();
                  e.Body().set_browser_name(i.browser.name),
                    e.Body().set_browser_version(i.browser.version),
                    n.LogMsg(
                      "(WebRTC) Offer (Local Description): " + e.Body().sdp(),
                    ),
                    (n.m_VoiceCallState.m_eState =
                      O.k_EVoiceCallState_InitatedWebRTCSession),
                    F.q3
                      .InitiateWebRTCConnection(
                        n.m_CMInterface.GetServiceTransport(),
                        e,
                      )
                      .then((e) => {
                        if (null == n.m_PeerConnection)
                          n.LogMsg(
                            "(WebRTC) Got response to InitiateWebRTCConnection with no local peer connection",
                          ),
                            n.EndVoiceChatInternal(!1);
                        else if (1 == e.GetEResult()) {
                          let t = JSON.parse(e.Body().remote_description());
                          n.m_PeerConnection
                            .setRemoteDescription(new RTCSessionDescription(t))
                            .then(function () {
                              n.LogMsg("(WebRTC) Remote Description: " + t.sdp),
                                "offer" == t.type
                                  ? (n.LogMsg(
                                      "(WebRTC) !! received 'offer' rather than 'answer' from InitiateWebRTCConnection, unexpected.",
                                    ),
                                    n.EndVoiceChatInternal(!1))
                                  : "answer" == t.type &&
                                    n.LogMsg(
                                      "(WebRTC) setRemoteDescription success",
                                    );
                            })
                            .catch(function (e) {
                              n.LogMsg("(WebRTC) Remote Description: " + t.sdp),
                                n.LogMsg(
                                  "(WebRTC) setRemoteDescription error: " + e,
                                ),
                                n.LogMsg(
                                  "(VoiceChat) Fatal error, ending chat",
                                ),
                                n.EndVoiceChatInternal(!1);
                            });
                        } else
                          n.LogMsg(
                            "(WebRTC) Got failure (" +
                              e.GetEResult() +
                              ") response from InitiateWebRTCConnection",
                          ),
                            n.BackOffAndRetryInitiateVoiceChat();
                      })
                      .catch((e) => {
                        n.LogMsg(
                          "(WebRTC) Failure in WebRTCClientService.InitiateWebRTCConnection",
                        ),
                          n.BackOffAndRetryInitiateVoiceChat();
                      });
                })
                .catch(function (e) {
                  n.LogMsg("(WebRTC) setLocalDescription error: " + e),
                    n.LogMsg("(VoiceChat) Fatal error, ending voice chat"),
                    n.EndVoiceChatInternal(!1);
                });
          }
          OnCreateOfferError(e) {
            this.LogMsg("(WebRTC) OnCreateOfferError: " + e),
              this.LogMsg("(VoiceChat) Fatal Error, ending chat attempt"),
              this.EndVoiceChatInternal(!1);
          }
          OnUpdatedCreateOfferSuccess(e, t) {
            if (this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_Connected)
              return void this.LogMsg(
                "(WebRTC) Hit OnUpdatedCreateOfferSuccess in wrong state " +
                  this.m_VoiceCallState.m_eState,
              );
            this.LogMsg("(WebRTC) OnUpdatedCreateOfferSuccess");
            let n = this;
            (t = this.ModifyLocalSDPBeforeSetting(t)),
              e
                .setLocalDescription(t)
                .then(function () {
                  let e = r.w.Init(F.NF);
                  e
                    .Body()
                    .set_ip_webrtc_server(n.m_VoiceCallState.m_webRTCServerIP),
                    e
                      .Body()
                      .set_port_webrtc_server(
                        n.m_VoiceCallState.m_webRTCServerPort,
                      ),
                    e
                      .Body()
                      .set_ip_webrtc_session_client(
                        n.m_VoiceCallState.m_webRTCClientIP,
                      ),
                    e
                      .Body()
                      .set_port_webrtc_session_client(
                        n.m_VoiceCallState.m_webRTCClientPort,
                      ),
                    e.Body().set_sdp(JSON.stringify(t)),
                    n.LogMsg(
                      "(WebRTC) Updated Offer (Local Description): " +
                        e.Body().sdp(),
                    ),
                    (n.m_VoiceCallState.m_eState =
                      O.k_EVoiceCallState_UpdatingWebRTCSession),
                    F.q3
                      .UpdateWebRTCConnection(
                        n.m_CMInterface.GetServiceTransport(),
                        e,
                      )
                      .then((e) => {
                        if (null == n.m_PeerConnection)
                          n.LogMsg(
                            "(WebRTC) Got response to UpdateWebRTCConnection with no local peer connection",
                          ),
                            n.EndVoiceChatInternal(!1);
                        else if (1 == e.GetEResult()) {
                          let t = JSON.parse(e.Body().remote_description());
                          n.m_PeerConnection
                            .setRemoteDescription(new RTCSessionDescription(t))
                            .then(function () {
                              n.LogMsg(
                                "(WebRTC) Updated Remote Description: " + t.sdp,
                              ),
                                "offer" == t.type
                                  ? (n.LogMsg(
                                      "(WebRTC) !! received 'offer' rather than 'answer' from UpdateWebRTCConnection, unexpected.",
                                    ),
                                    n.EndVoiceChatInternal(!1))
                                  : "answer" == t.type &&
                                    (n.LogMsg(
                                      "(WebRTC) setRemoteDescription success",
                                    ),
                                    n.OnWebRTCConnectedAndVoiceChatConnected());
                            })
                            .catch(function (e) {
                              n.LogMsg(
                                "(WebRTC) Updated Remote Description: " + t.sdp,
                              ),
                                n.LogMsg(
                                  "(WebRTC) setRemoteDescription error: " + e,
                                ),
                                n.LogMsg(
                                  "(VoiceChat) Fatal error, ending chat",
                                ),
                                n.EndVoiceChatInternal(!1);
                            });
                        } else
                          n.LogMsg(
                            "(WebRTC) Got failure (" +
                              e.GetEResult() +
                              ") response from UpdateWebRTCConnection",
                          ),
                            n.BackOffAndRetryInitiateVoiceChat();
                      })
                      .catch((e) => {
                        n.LogMsg(
                          "(WebRTC) Failure in WebRTCClientService.UpdateWebRTCConnection",
                        ),
                          n.BackOffAndRetryInitiateVoiceChat();
                      });
                })
                .catch(function (e) {
                  n.LogMsg("(WebRTC) setLocalDescription error: " + e),
                    n.LogMsg("(VoiceChat) Fatal error, ending voice chat"),
                    n.EndVoiceChatInternal(!1);
                });
          }
          CreatePeerConnection(e) {
            let t = new RTCPeerConnection({ sdpSemantics: "plan-b" });
            return (
              (t.onicecandidate = (e) => {
                this.OnIceCandidate(e);
              }),
              (t.onaddstream = this.OnAddRemoteStream),
              (t.onremovestream = this.OnRemoveRemoteStream),
              (t.oniceconnectionstatechange = (e) => {
                this.OnIceConnectionStateChange(t, e);
              }),
              (t.onicegatheringstatechange = (e) => {
                this.OnIceGatheringStateChange(t, e);
              }),
              (t.onsignalingstatechange = (e) => {
                this.OnSignalingStateChange(t, e);
              }),
              e?.getTracks().forEach((n) => t.addTrack(n, e)),
              (this.m_PeerConnection = t),
              this.m_PeerConnection
            );
          }
          OnMicStreamInactive(e, t) {
            this.LogMsg("(WebRTC) Mic Stream went inactive: " + t.type),
              this.m_VoiceCallState.m_eState >
                O.k_EVoiceCallState_RequestedMicAccess &&
                (this.LogMsg(
                  "(WebRTC) Ending then auto-re-initiating voice chat without mic",
                ),
                this.RestartVoiceChatIfConnected());
          }
          OnNoiseGateMessage(e) {
            this.LogMsg("(VoiceChat) " + e.data);
          }
          SetupNoiseGateOnMic(e) {
            let t = this.GetNoiseGateOptions(),
              n = I.xm.AudioPlaybackManager.supports_audio_worklets;
            if (n) {
              this.LogMsg(
                "(VoiceChat) Audio Worklets supported - high performance mic noisegate in use!",
              );
              try {
                let n = window;
                (this.m_MicNoiseGate = new n.AudioWorkletNode(
                  this.m_AudioContext,
                  "noisegate-processor",
                )),
                  (this.m_MicNoiseGate.port.onmessage =
                    this.OnNoiseGateMessage),
                  this.m_MicInputGainNode
                    .connect(this.m_MicNoiseGate)
                    .connect(e),
                  this.m_MicNoiseGate.parameters
                    .get("threshold")
                    .setValueAtTime(
                      t.threshold,
                      this.m_AudioContext.currentTime,
                    ),
                  this.m_MicNoiseGate.parameters
                    .get("attack")
                    .setValueAtTime(t.attack, this.m_AudioContext.currentTime),
                  this.m_MicNoiseGate.parameters
                    .get("release")
                    .setValueAtTime(t.release, this.m_AudioContext.currentTime),
                  this.m_MicNoiseGate.parameters
                    .get("sampleRate")
                    .setValueAtTime(
                      this.m_AudioContext.sampleRate,
                      this.m_AudioContext.currentTime,
                    );
              } catch (e) {
                this.LogMsg(
                  "(VoiceChat) creating AudioWorkletNode failed: " + e,
                ),
                  (n = !1);
              }
            }
            n ||
              (this.LogMsg(
                "(VoiceChat) Browser doesn't support audio worklets, mic perf will suffer and may stutter/echo during repaint/high CPU usage",
              ),
              (this.m_MicNoiseGate = new P(this.m_AudioContext, t)),
              this.m_MicInputGainNode.connect(this.m_MicNoiseGate.input),
              this.m_MicNoiseGate.output.connect(e));
          }
          OnGetUserMediaSuccess(e) {
            if (
              this.m_VoiceCallState.m_eState ==
              O.k_EVoiceCallState_RequestedMicAccess
            ) {
              if (
                ((this.m_VoiceCallState.m_eState =
                  O.k_EVoiceCallState_CreatePeerConnection),
                e?.getAudioTracks().length > 0)
              ) {
                e.id;
                let t = this.m_AudioContext.createMediaStreamSource(e),
                  n = this;
                (e.oninactive = function (e) {
                  n.OnMicStreamInactive(this, e);
                }),
                  (this.m_MicInputGainNode = this.m_AudioContext.createGain()),
                  this.m_MicInputGainNode.gain.setValueAtTime(
                    this.GetCurrentVoiceInputGainTarget(),
                    this.m_AudioContext.currentTime,
                  ),
                  t.connect(this.m_MicInputGainNode);
                let i = this.m_AudioContext.createMediaStreamDestination();
                this.m_Settings.m_NoiseGateLevel != W.H.k_ENoiseGateLevel_Off
                  ? this.SetupNoiseGateOnMic(i)
                  : this.m_MicInputGainNode.connect(i),
                  e.getVideoTracks().forEach((e) => {
                    this.LogMsg(
                      "(VoiceChat) Adding video track: " + e.id + "-" + e.label,
                    ),
                      i.stream.addTrack(e),
                      (e.enabled = this.m_bSendVideo);
                  }),
                  (e = i.stream);
                let o = new z();
                (o.unique_id = e.id),
                  (o.destination_node = i),
                  (o.stream = e),
                  (o.source_node = t),
                  (o.type = x.k_EAudioStreamType_Microphone),
                  (o.accountid = this.m_CMInterface.steamid.GetAccountID()),
                  (o.muted = !1),
                  (o.elem = void 0),
                  (o.output_gain_node = this.m_AudioContext.createGain()),
                  o.output_gain_node.gain.setValueAtTime(
                    this.m_Settings.m_VoiceOutputGain,
                    this.m_AudioContext.currentTime,
                  ),
                  o.output_gain_node.connect(
                    I.xm.AudioPlaybackManager.GetActiveDestination(),
                  ),
                  this.m_rgAudioStreams.push(o);
                let r = t;
                this.m_MicNoiseGate &&
                  (r =
                    null != this.m_MicNoiseGate.output
                      ? this.m_MicNoiseGate.output
                      : this.m_MicNoiseGate),
                  (this.m_MicVolumeMeter = void 0),
                  (this.m_MicVolumeMeter = new B(r, this.m_AudioContext)),
                  (o.volume_meter = this.m_MicVolumeMeter),
                  this.m_VoiceEchoLocalMic && null == this.m_MicNoiseGate
                    ? this.m_MicInputGainNode.connect(o.output_gain_node)
                    : this.m_VoiceEchoLocalMic &&
                      (this.m_MicNoiseGate.output
                        ? this.m_MicNoiseGate.output.connect(o.output_gain_node)
                        : this.m_MicNoiseGate.connect(o.output_gain_node));
              }
              if (
                0 != this.m_VoiceCallState.m_targetAccountID ||
                null != this.m_VoiceCallState.m_chatRoom
              ) {
                let t = {
                    offerToReceiveAudio: 1,
                    offerToReceiveVideo: this.m_bReceiveVideo ? 1 : 0,
                    voiceActivityDetection: !0,
                  },
                  n = this.CreatePeerConnection(e),
                  i = this;
                n.createOffer(t)
                  .then(function (e) {
                    i.OnCreateOfferSuccess(n, e);
                  })
                  .catch(function (e) {
                    i.OnCreateOfferError(e);
                  });
              } else
                (this.m_VoiceCallState.m_eState =
                  O.k_EVoiceCallState_LocalMicOnly),
                  (this.m_VoiceCallState.m_timeFinishedConnecting =
                    performance.now());
            } else {
              for (let t of e.getTracks()) t.stop();
              this.LogMsg(
                "(VoiceChat) Hit OnGetUserMediaSuccess in wrong state " +
                  this.m_VoiceCallState.m_eState,
              );
            }
          }
          OnGetUserMediaFailure(e) {
            if (
              this.m_VoiceCallState.m_eState <=
              O.k_EVoiceCallState_ScheduledInitiate
            )
              return;
            if (this.m_bSendVideo)
              return (
                this.LogMsg(
                  "(VoiceChat) The following error occured getting media stream: " +
                    e.name,
                ),
                this.LogMsg("(VoiceChat) Retrying without video"),
                (this.m_bSendVideo = !1),
                (this.m_VoiceCallState.m_eState =
                  O.k_EVoiceCallState_ScheduledInitiate),
                void this.OnRequestMicrophoneAccess()
              );
            let t = this,
              n = navigator;
            n.permissions &&
              n.permissions.query({ name: "microphone" }).then(function (e) {
                "granted" == e.state ||
                  ("denied" == e.state
                    ? (t.m_bUserHasDeniedMicPermissions = !0)
                    : e.state);
              }),
              this.LogMsg(
                "(WebAudio) The following error occured getting audio stream: " +
                  e.name,
              ),
              this.OnGetUserMediaSuccess(void 0);
          }
          InitiateChatRoomVoice() {
            this.m_VoiceCallState.m_eState >
            O.k_EVoiceCallState_ScheduledInitiate
              ? this.LogMsg(
                  "(VoiceChat) Hit InitiateChatRoomVoice in wrong state " +
                    this.m_VoiceCallState.m_eState,
                )
              : I.xm.AudioPlaybackManager.SetVoiceActive(
                  this.OnRequestMicrophoneAccess,
                );
          }
          JoinVoiceChatOrAskForOneOnOneChatNow() {
            if (0 == this.m_VoiceCallState.m_targetAccountID) {
              this.m_VoiceCallState.m_eState =
                O.k_EVoiceCallState_RequestedPermission;
              let e = r.w.Init(L.s8);
              e
                .Body()
                .set_chat_group_id(this.m_VoiceCallState.m_chatRoom.groupID),
                e.Body().set_chat_id(this.m_VoiceCallState.m_chatRoom.chatID),
                this.LogMsg(
                  "(VoiceChat) InitiateChatRoomVoice request to group: " +
                    this.m_VoiceCallState.m_chatRoom.groupID +
                    ", room: " +
                    this.m_VoiceCallState.m_chatRoom.chatID,
                ),
                L.xP
                  .JoinVoiceChat(this.m_CMInterface.GetServiceTransport(), e)
                  .then((e) => {
                    1 == e.GetEResult()
                      ? ((this.m_VoiceCallState.m_voiceChatID = e
                          .Body()
                          .voice_chatid()),
                        this.OnVoiceChatAccepted(!0))
                      : 2 == e.GetEResult()
                        ? this.BackOffAndRetryInitiateVoiceChat()
                        : this.OnVoiceChatAccepted(!1);
                  })
                  .catch((e) => {
                    this.BackOffAndRetryInitiateVoiceChat();
                  });
            } else if (
              ((this.m_VoiceCallState.m_eState =
                O.k_EVoiceCallState_RequestedPermission),
              "" == this.m_VoiceCallState.m_voiceChatID)
            ) {
              let e = r.w.Init(G.NT);
              e
                .Body()
                .set_steamid_partner(
                  w.b
                    .InitFromAccountID(this.m_VoiceCallState.m_targetAccountID)
                    .ConvertTo64BitString(),
                ),
                this.LogMsg(
                  "(VoiceChat) InitiateOneOnOneVoiceChat request to " +
                    this.m_VoiceCallState.m_targetAccountID,
                ),
                G.cc
                  .RequestOneOnOneChat(
                    this.m_CMInterface.GetServiceTransport(),
                    e,
                  )
                  .then((e) => {
                    if (1 == e.GetEResult()) {
                      this.LogMsg(
                        "(VoiceChat) Waiting on acceptance from " +
                          this.m_VoiceCallState.m_targetAccountID,
                      ),
                        (this.m_VoiceCallState.m_voiceChatID = e
                          .Body()
                          .voice_chatid());
                      let t = I.xm.FriendStore.self,
                        n = I.xm.ChatStore.GetFriendChat(
                          this.m_VoiceCallState.m_targetAccountID,
                          !1,
                        );
                      null != t &&
                        null != n &&
                        n.AddVoiceChannelInviteMsg(
                          this.m_CMInterface.steamid.GetAccountID(),
                          I.xm.GetServerRTime32(),
                          (0, V.we)(
                            "#FriendMsg_VoiceChannelInvite",
                            t.display_name,
                            n.chat_partner.display_name,
                          ),
                        );
                    } else
                      this.LogMsg(
                        "(VoiceChat) Initiating voice chat to " +
                          this.m_VoiceCallState.m_targetAccountID +
                          " has failed.",
                      ),
                        this.EndVoiceChatInternal(!1);
                  });
            } else this.OnVoiceChatAccepted(!0);
          }
          OnVoiceChatAccepted(e) {
            this.m_VoiceCallState.m_eState <
            O.k_EVoiceCallState_RequestedPermission
              ? this.LogMsg(
                  "(VoiceChat) Hit OnVoiceChatAccepted in wrong state " +
                    this.m_VoiceCallState.m_eState,
                )
              : null != this.m_VoiceCallState.m_webRTCConnectedNotification
                ? e
                  ? (this.m_VoiceCallState.m_targetAccountID
                      ? ((this.m_VoiceCallState.m_bIsConnectionAttemptOverTwoSeconds =
                          !1),
                        (this.m_VoiceCallState.m_timeStartedConnecting =
                          performance.now()),
                        this.LogMsg(
                          "(VoiceChat) Call accepted to individual " +
                            this.m_VoiceCallState.m_targetAccountID,
                        ))
                      : this.m_VoiceCallState.m_chatRoom &&
                        this.LogMsg(
                          "(VoiceChat) Call accepted to room " +
                            this.m_VoiceCallState.m_chatRoom.chatID,
                        ),
                    this.OnWebRTCConnectedAndVoiceChatConnected())
                  : this.m_VoiceCallState.m_targetAccountID
                    ? (this.LogMsg(
                        "(VoiceChat) Call rejected to individual " +
                          this.m_VoiceCallState.m_targetAccountID,
                      ),
                      this.OnUserEndVoiceChat())
                    : this.m_VoiceCallState.m_chatRoom &&
                      (this.LogMsg(
                        "(VoiceChat) Call rejected to room " +
                          this.m_VoiceCallState.m_chatRoom.chatID,
                      ),
                      this.EndVoiceChatInternal(!1))
                : this.LogMsg(
                    "(VoiceChat) Hit OnVoiceChatAccepted without WebRTC connected",
                  );
          }
          InitiateOneOnOneVoiceChat(e) {
            this.m_VoiceCallState.m_eState >
            O.k_EVoiceCallState_ScheduledInitiate
              ? this.LogMsg(
                  "(VoiceChat) Hit InitiateOneOnOneVoiceChat in wrong state " +
                    this.m_VoiceCallState.m_eState,
                )
              : (null == this.m_VoiceCallState.m_timeStartedConnecting &&
                  (this.m_VoiceCallState.m_timeStartedConnecting =
                    performance.now()),
                0 == this.m_ConnectionCheck &&
                  (this.m_ConnectionCheck = SetBackgroundInterval(
                    this.CheckConnection,
                    2e3,
                  )),
                I.xm.AudioPlaybackManager.SetVoiceActive(
                  this.OnRequestMicrophoneAccess,
                ));
          }
          IPIntToString(e) {
            return (
              (e >>> 24) +
              "." +
              ((e >> 16) & 255) +
              "." +
              ((e >> 8) & 255) +
              "." +
              (255 & e)
            );
          }
          OnSetUpdatedLocalDescriptionSuccess() {
            this.LogMsg("(WebRTC) OnSetUpdatedLocalDescriptionSuccess");
            let e = r.w.Init(F.W_);
            e
              .Body()
              .set_ip_webrtc_server(this.m_VoiceCallState.m_webRTCServerIP),
              e
                .Body()
                .set_port_webrtc_server(
                  this.m_VoiceCallState.m_webRTCServerPort,
                ),
              e
                .Body()
                .set_ip_webrtc_session_client(
                  this.m_VoiceCallState.m_webRTCClientIP,
                ),
              e
                .Body()
                .set_port_webrtc_session_client(
                  this.m_VoiceCallState.m_webRTCClientPort,
                ),
              e
                .Body()
                .set_remote_description_version(
                  this.m_VoiceCallState.m_nMostRecentRemoteDescriptionVersion,
                ),
              F.q3
                .AcknowledgeUpdatedRemoteDescription(
                  this.m_CMInterface.GetServiceTransport(),
                  e,
                )
                .then((e) => {});
          }
          OnSetUpdatedLocalDescriptionFailure(e) {
            this.LogMsg("(WebRTC) OnSetUpdatedLocalDescriptionFailure: " + e),
              this.EndVoiceChatInternal(!1);
          }
          OnCreateAnswerSuccess(e) {
            this.LogMsg("(WebRTC) OnCreateAnswerSuccess: " + JSON.stringify(e));
            let t = this;
            if (
              (this.m_PeerConnection
                .setLocalDescription(e)
                .then(function () {
                  t.OnSetUpdatedLocalDescriptionSuccess();
                })
                .catch(function (e) {
                  t.OnSetUpdatedLocalDescriptionFailure(e);
                }),
              (this.m_VoiceCallState.m_bOfferUpdateInProgress = !1),
              null != this.m_VoiceCallState.m_msgPendingRemoteDescriptionUpdate)
            ) {
              let e = this.m_VoiceCallState.m_msgPendingRemoteDescriptionUpdate;
              (this.m_VoiceCallState.m_msgPendingRemoteDescriptionUpdate =
                void 0),
                this.ProcessUpdatedRemoteDescription(e);
            }
          }
          OnCreateAnswerError(e) {
            this.LogMsg("(WebRTC) OnCreateAnswerError: " + e),
              this.EndVoiceChatInternal(!1);
          }
          ProcessUpdatedRemoteDescription(e) {
            (this.m_VoiceCallState.m_bOfferUpdateInProgress = !0),
              this.m_mapSSRCToAccountID.clear();
            let t = e.ssrcs_to_accountids();
            for (let e = 0; e < t.length; ++e) {
              let n = t[e];
              this.m_mapSSRCToAccountID.set(n.ssrc(), n.accountid());
            }
            let n = this,
              i = JSON.parse(e.remote_description());
            return (
              this.m_PeerConnection
                .setRemoteDescription(new RTCSessionDescription(i))
                .then(function () {
                  n.LogMsg("(WebRTC) Updated Remote Description: " + i.sdp),
                    "offer" == i.type
                      ? (n.LogMsg(
                          "(WebRTC) setRemoteDescription success with new offer",
                        ),
                        n.m_PeerConnection
                          .createAnswer()
                          .then(function (e) {
                            n.OnCreateAnswerSuccess(e);
                          })
                          .catch(function (e) {
                            n.OnCreateAnswerError(e);
                          }),
                        (n.m_VoiceCallState.m_nMostRecentRemoteDescriptionVersion =
                          e.remote_description_version()))
                      : "answer" == i.type &&
                        (n.LogMsg("(WebRTC) setRemoteDescription success"),
                        (n.m_VoiceCallState.m_bOfferUpdateInProgress = !1));
                })
                .catch(function (e) {
                  n.LogMsg("(WebRTC) Remote Description: " + i.sdp),
                    n.LogMsg("(WebRTC) setRemoteDescription error: " + e),
                    n.LogMsg("(VoiceChat) Fatal error, ending chat"),
                    n.EndVoiceChatInternal(!1);
                }),
              1
            );
          }
          SendVoiceStatusUpdate() {
            let e = this.IsMicMuted(),
              t = this.IsOutputMuted(),
              n = r.w.Init(G.i7);
            n
              .Body()
              .set_user_steamid(
                this.m_CMInterface.steamid.ConvertTo64BitString(),
              ),
              n.Body().set_voice_chatid(this.m_VoiceCallState.m_voiceChatID),
              n.Body().set_user_muted_mic_locally(e),
              n.Body().set_user_muted_output_locally(t),
              n
                .Body()
                .set_user_has_no_mic_for_session(
                  this.BNoMicAvailableForSession(),
                ),
              n
                .Body()
                .set_user_webaudio_sample_rate(
                  I.xm.AudioPlaybackManager.GetLastObservedSampleRate(),
                ),
              n.Body().set_user_sends_video(this.m_bSendVideo),
              G.cc.NotifyUserVoiceStatus(
                this.m_CMInterface.GetServiceTransport(),
                n,
              ),
              "undefined" != typeof SteamClient &&
                null != SteamClient.WebChat &&
                null != SteamClient.WebChat.SetVoiceChatStatus &&
                SteamClient.WebChat.SetVoiceChatStatus(e, t);
          }
          UpdateUserVoiceStatus(e) {
            if (this.m_VoiceCallState.m_voiceChatID != e.voice_chatid()) return;
            let t = new w.b(e.user_steamid()).GetAccountID(),
              n = this.m_mapUserVoiceStatus.get(t);
            null == n && (n = new ee()),
              (n.mic_muted_locally = e.user_muted_mic_locally()),
              (n.output_muted_locally = e.user_muted_output_locally()),
              (n.has_no_mic_for_session = e.user_has_no_mic_for_session()),
              (n.sends_video = e.user_sends_video()),
              n.sends_video &&
                (this.m_rgVideoStreams.some((e) => e.accountid == t) ||
                  this.AddPlaceholderVideoStream(t));
            let i = I.xm.FriendStore.GetPlayerIfCached(t),
              o = "[U:1:" + t + "]",
              r = "";
            null != i && (r = i.display_name + " ");
            let a = "";
            (a = n.has_no_mic_for_session
              ? "nomic"
              : n.mic_muted_locally
                ? "muted"
                : "on"),
              this.LogMsg(
                "(VoiceChat) User " +
                  r +
                  o +
                  " status now: mic(" +
                  a +
                  ") output(" +
                  (n.output_muted_locally ? "muted" : "on") +
                  ")",
              ),
              this.m_mapUserVoiceStatus.set(t, n);
          }
          OnWebRTCConnectedAndVoiceChatConnected() {
            let e = this.m_VoiceCallState.m_webRTCConnectedNotification;
            (this.m_VoiceCallState.m_eState =
              O.k_EVoiceCallState_NotifyingVoiceChatOfWebRTCSession),
              this.LogMsg(
                "(WebRTC) WebRTC session connected " +
                  this.IPIntToString(e.client_ip()) +
                  ":" +
                  e.client_port() +
                  " => " +
                  this.IPIntToString(e.server_ip()) +
                  ":" +
                  e.server_port(),
              ),
              "" == this.m_VoiceCallState.m_voiceChatID &&
                (this.LogMsg(
                  "(VoiceChat) Reached OnWebRTCConnectedAndVoiceChatConnected without voice chat id? Failing.",
                ),
                this.EndVoiceChatInternal(!1));
            let t = r.w.Init(G.v9);
            t.Body().set_voice_chatid(this.m_VoiceCallState.m_voiceChatID),
              t.Body().set_ssrc_my_sending_stream(e.ssrc()),
              t.Body().set_ip_webrtc_client(e.client_ip()),
              t.Body().set_port_webrtc_client(e.client_port()),
              t.Body().set_ip_webrtc_server(e.server_ip()),
              t.Body().set_port_webrtc_server(e.server_port()),
              t.Body().set_sends_webrtc_video(this.m_bSendVideo),
              t.Body().set_accepts_webrtc_video(this.m_bReceiveVideo),
              t
                .Body()
                .set_has_webrtc_data_channel(this.BSupportsDataChannels()),
              t
                .Body()
                .set_has_audio_worklets_support(
                  I.xm.AudioPlaybackManager.supports_audio_worklets,
                ),
              t.Body().set_user_agent(navigator.userAgent),
              G.cc
                .UpdateVoiceChatWebRTCData(
                  this.m_CMInterface.GetServiceTransport(),
                  t,
                )
                .then((e) => {
                  1 == e.GetEResult()
                    ? ((this.m_VoiceCallState.m_eState =
                        O.k_EVoiceCallState_Connected),
                      (this.m_VoiceCallState.m_timeFinishedConnecting =
                        performance.now()),
                      this.SendVoiceStatusUpdate(),
                      this.m_rgVideoStreams
                        .filter((e) => e.receive)
                        .map((e) =>
                          this.UpdateUserVideoStatus(e.accountid, !0),
                        ),
                      this.LogMsg(
                        "(WebRTC) Updated voice session with WebRTC session data " +
                          this.m_VoiceCallState.m_voiceChatID,
                      ),
                      e.Body().send_client_voice_logs() &&
                        this.ScheduleClientVoiceLogsUpload(2),
                      this.CheckConnection(),
                      this.BSupportsDataChannels() != k.BHasDataChannels() &&
                        this.RenegotiateSDP())
                    : (this.LogMsg(
                        "(WebRTC) Error updating voice session with WebRTC session data " +
                          this.m_VoiceCallState.m_voiceChatID,
                      ),
                      this.BackOffAndRetryInitiateVoiceChat());
                })
                .catch((e) => {
                  this.LogMsg(
                    "(WebRTC) Error updating voice session with WebRTC session data " +
                      this.m_VoiceCallState.m_voiceChatID,
                  ),
                    this.BackOffAndRetryInitiateVoiceChat();
                });
          }
          OnAcceptOneOnOneVoiceChat(e, t) {
            this.m_VoiceCallState.m_targetAccountID != e.GetAccountID() &&
              this.EndVoiceChatInternal(!1),
              (this.m_VoiceCallState.m_eState = O.k_EVoiceCallState_None),
              (this.m_VoiceCallState.m_targetAccountID = e.GetAccountID()),
              (this.m_VoiceCallState.m_bInitiatedOneOnOneCall = !1),
              (this.m_VoiceCallState.m_bWaitingOnOneOnOneRejoin = !1),
              (this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg = !1),
              (this.m_VoiceCallState.m_chatRoom = null),
              (this.m_VoiceCallState.m_voiceChatID = t);
            let n = r.w.Init(G._$);
            n.Body().set_steamid_partner(e.ConvertTo64BitString()),
              n.Body().set_accepted_request(!0),
              n.Body().set_voice_chatid(t),
              G.cc
                .AnswerOneOnOneChat(this.m_CMInterface.GetServiceTransport(), n)
                .then((t) => {
                  1 == t.GetEResult()
                    ? (e.GetAccountID() && this.DispatchSetVoiceChatActive(!0),
                      this.InitiateOneOnOneVoiceChat(e.GetAccountID()))
                    : (this.LogMsg(
                        "(VoiceChat) Failed responding to voice chat from " +
                          e.GetAccountID(),
                      ),
                      this.EndVoiceChatInternal(!1));
                });
          }
          OnRejectOneOnOneVoiceChat(e, t) {
            let n = r.w.Init(G._$);
            n.Body().set_steamid_partner(e.ConvertTo64BitString()),
              n.Body().set_accepted_request(!1),
              n.Body().set_voice_chatid(t),
              G.cc
                .AnswerOneOnOneChat(this.m_CMInterface.GetServiceTransport(), n)
                .then((t) => {
                  1 == t.GetEResult() ||
                    this.LogMsg(
                      "(VoiceChat) Failed responding to voice chat from " +
                        e.GetAccountID(),
                    );
                });
          }
          PlayRingSound(e) {
            this.m_mapOneOnOneCallsWaitingJoinOrAccept.get(e).audio_buffer =
              I.xm.AudioPlaybackManager.PlayAudioURLWithRepeats(
                o.TS.COMMUNITY_CDN_URL +
                  "public/sounds/webui/steam_phonecall.m4a?v=1",
                1,
              );
          }
          IsVoiceActive(e, t) {
            return (
              !!this.m_VoiceCallState.BMatchingCall(e, t) &&
              this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None
            );
          }
          CheckVoiceSnoozeTimeout() {
            if (this.m_bAutoShowVideoStream) return;
            if (I.xm.IdleTracker.GetUserIdleTime() > 3600) {
              let e = this.m_MicVolumeMeter.GetLastTimeNonZero();
              performance.now() - e > 36e5 &&
                (this.OnUserEndVoiceChat(),
                I.xm
                  .ShowAlert(
                    (0, V.we)("#Voice_LeftIdleVoiceChat_Title"),
                    (0, V.we)("#Voice_LeftIdleVoiceChat_Body"),
                    (0, V.we)("#Voice_LeftIdleVoiceChat_OK"),
                  )
                  .then(() => {})
                  .catch(() => !0));
            }
          }
          ProcessStatsReport() {
            if ((this.CheckVoiceSnoozeTimeout(), null == this.m_PeerConnection))
              return;
            if (
              ((this.m_StatsTimeout = SetBackgroundTimeout(
                this.ProcessStatsReport,
                1e4,
              )),
              o.TS.IN_CLIENT && a.W.BClientConnected().then(() => {}),
              -1 !=
                this.m_PeerConnection.localDescription.sdp.indexOf(
                  "mozilla...",
                ))
            )
              return;
            let e = new Date(),
              t = this,
              n = this.m_PeerConnection;
            t.LogMsg(
              "-----------------------------------------------------------",
            ),
              t.LogMsg(" Voice Report: " + e.toUTCString()),
              t.LogMsg(
                "-----------------------------------------------------------",
              );
            let i = n.getSenders();
            if (i.length > 0) {
              this.LogMsg(
                "(WebRTC) " +
                  this.PadOutput("(Sender SSRC)", 40) +
                  " " +
                  this.PadOutput("Packets Sent", 20) +
                  " " +
                  this.PadOutput("Connection State", 20) +
                  " " +
                  this.PadOutput("Writable", 20) +
                  " " +
                  this.PadOutput("Track State", 20) +
                  " " +
                  this.PadOutput("Round Trip MS", 20) +
                  " " +
                  this.PadOutput("Transport Bytes Sent", 24) +
                  " " +
                  this.PadOutput("Transport Bytes Received", 24) +
                  " ",
              );
              try {
                i.forEach((e) => {
                  e.getStats().then(function (n) {
                    n.forEach((i) => {
                      if ("outbound-rtp" == i.type) {
                        let o = i.ssrc,
                          r = i.packetsSent,
                          a = "",
                          s = "",
                          l = 0,
                          c = 0,
                          m = 0,
                          d = "",
                          u = e.track;
                        null != u &&
                          (d =
                            u.ended && u.detached
                              ? "ended+detached"
                              : u.ended
                                ? "ended"
                                : u.detached
                                  ? "detached"
                                  : "active");
                        let h = n.get(i.transportId);
                        if (null != h && "transport" == h.type) {
                          let e = n.get(h.selectedCandidatePairId);
                          null != e &&
                            "candidate-pair" == e.type &&
                            ((a = e.state),
                            (s = e.writable ? "writable" : "not-writable"),
                            (l = 1e3 * e.currentRoundTripTime)),
                            (c = h.bytesSent),
                            (m = h.bytesReceived);
                        }
                        t.LogMsg(
                          "(WebRTC) " +
                            t.PadOutput(i.kind + " " + String(o), 40) +
                            " " +
                            t.PadOutput(String(r), 20) +
                            " " +
                            t.PadOutput(a, 20) +
                            " " +
                            t.PadOutput(s, 20) +
                            " " +
                            t.PadOutput(d, 20) +
                            " " +
                            t.PadOutput(String(l), 20) +
                            " " +
                            t.PadOutput(String(c), 24) +
                            " " +
                            t.PadOutput(String(m), 24),
                        );
                      }
                    });
                  });
                });
              } catch (e) {
                t.LogMsg("(WebRTC) Can't log sender stats on this browser");
              }
            }
            SetBackgroundTimeout(this.ProcessReceiverStatsReport, 100);
          }
          ProcessReceiverStatsReport() {
            if (
              -1 !=
              this.m_PeerConnection.localDescription.sdp.indexOf("mozilla...")
            )
              return;
            let e = this,
              t = this.m_PeerConnection;
            try {
              t.getStats().then(function (t) {
                t.forEach(function (t) {
                  if ("inbound-rtp" == t.type)
                    if ("audio" == t.mediaType) {
                      let n = new Q();
                      (n.m_SSRC = t.ssrc),
                        (n.m_BytesReceived = t.bytesReceived),
                        (n.m_HeaderBytesReceived = t.headerBytesReceived),
                        (n.m_PacketsReceived = t.packetsReceived),
                        (n.m_PacketsLost = t.packetsLost),
                        (n.m_PacketsDiscarded = t.packetsDiscarded),
                        (n.m_FecPacketsDiscarded = t.fecPacketsDiscarded),
                        (n.m_FecPacketsReceived = t.fecPacketsReceived),
                        (n.m_Jitter = t.jitter),
                        (n.m_JitterBufferDelay = t.jitterBufferDelay),
                        (n.m_JitterBufferEmittedCount =
                          t.jitterBufferEmittedCount),
                        (n.m_JitterBufferMinimumDelay =
                          t.jitterBufferMinimumDelay),
                        (n.m_JitterBufferTargetDelay =
                          t.jitterBufferTargetDelay),
                        (n.m_ConcealmentEvents = t.concealmentEvents),
                        (n.m_ConcealedSamples = t.concealedSamples),
                        (n.m_SilentConcealedSamples = t.silentConcealedSamples),
                        (n.m_RemovedSamplesForAcceleration =
                          t.removedSamplesForAcceleration),
                        (n.m_TotalAudioEnergy = t.totalAudioEnergy),
                        (n.m_TotalSamplesDuration = t.totalSamplesDuration),
                        (n.m_TotalSamplesReceived = t.totalSamplesReceived);
                      let i = e.m_mapSSRCToAccountID.get(n.m_SSRC);
                      null != i && e.m_mapAccountIDToAudioStats.set(i, n);
                    } else if ("video" == t.mediaType) {
                      let n = new $();
                      (n.m_SSRC = t.ssrc),
                        (n.m_BytesReceived = t.bytesReceived),
                        (n.m_HeaderBytesReceived = t.headerBytesReceived),
                        (n.m_PacketsReceived = t.packetsReceived),
                        (n.m_PacketsLost = t.packetsLost),
                        (n.m_FirCount = t.firCount),
                        (n.m_PliCount = t.pliCount),
                        (n.m_NackCount = t.nackCount),
                        (n.m_PauseCount = t.pauseCount),
                        (n.m_FreezeCount = t.freezeCount),
                        (n.m_KeyFramesDecoded = t.keyFramesDecoded),
                        (n.m_FramesDecoded = t.framesDecoded),
                        (n.m_FramesDropped = t.framesDropped),
                        (n.m_FramesReceived = t.framesReceived),
                        (n.m_FramesAssembledFromMultiplePackets =
                          t.framesAssembledFromMultiplePackets);
                      let i = e.m_mapSSRCToAccountID.get(n.m_SSRC);
                      null != i && e.m_mapAccountIDToVideoStats.set(i, n);
                    }
                });
              }),
                e.LogMsg(
                  "-----------------------------------------------------------",
                ),
                e.LogMsg(
                  "(WebRTC) " +
                    e.PadOutput("(Receiving SSRC)", 40) +
                    " " +
                    e.PadOutput("Packets Received", 20) +
                    " " +
                    e.PadOutput("Packets Lost", 20) +
                    " " +
                    e.PadOutput("Est. Delay MS", 20) +
                    " " +
                    e.PadOutput("Samples Received", 20),
                ),
                e.m_mapAccountIDToAudioStats.forEach((t, n) => {
                  let i = I.xm.FriendStore.GetPlayerIfCached(n),
                    o = "[unknown]";
                  null != i && (o = i.display_name);
                  let r = String(t.m_SSRC);
                  (o = o.substring(0, 39 - r.length) + " " + r),
                    e.LogMsg(
                      "(WebRTC) " +
                        e.PadOutput(o, 40) +
                        " " +
                        e.PadOutput(String(t.m_PacketsReceived), 20) +
                        " " +
                        e.PadOutput(String(t.m_PacketsLost), 20) +
                        " " +
                        e.PadOutput(
                          String(
                            (
                              (1e3 * t.m_JitterBufferDelay) /
                              Math.max(1, t.m_JitterBufferEmittedCount)
                            ).toFixed(2),
                          ),
                          20,
                        ) +
                        " " +
                        e.PadOutput(String(t.m_TotalSamplesReceived), 20),
                    );
                }),
                e.m_mapAccountIDToVideoStats.size > 0 &&
                  (e.LogMsg(
                    "-----------------------------------------------------------",
                  ),
                  e.LogMsg(
                    "(WebRTC) " +
                      e.PadOutput("(Receiving SSRC)", 40) +
                      " " +
                      e.PadOutput("Packets Received", 20) +
                      " " +
                      e.PadOutput("Packets Lost", 20) +
                      " " +
                      e.PadOutput("Est. Delay MS", 20) +
                      " " +
                      e.PadOutput("Frames Received", 20) +
                      " " +
                      e.PadOutput("Frames Decoded", 20) +
                      " " +
                      e.PadOutput("Keyframes Decoded", 20) +
                      " " +
                      e.PadOutput("FIR/PLI/NACK Sent", 20),
                  ),
                  e.m_mapAccountIDToVideoStats.forEach((t, n) => {
                    let i = I.xm.FriendStore.GetPlayerIfCached(n),
                      o = "[unknown]";
                    null != i && (o = i.display_name);
                    let r = String(t.m_SSRC);
                    (o = o.substring(0, 39 - r.length) + " " + r),
                      e.LogMsg(
                        "(WebRTC) " +
                          e.PadOutput(o, 40) +
                          " " +
                          e.PadOutput(String(t.m_PacketsReceived), 20) +
                          " " +
                          e.PadOutput(String(t.m_PacketsLost), 20) +
                          " " +
                          e.PadOutput(
                            String(
                              (
                                (1e3 * t.m_JitterBufferDelay) /
                                Math.max(1, t.m_JitterBufferEmittedCount)
                              ).toFixed(2),
                            ),
                            20,
                          ) +
                          " " +
                          e.PadOutput(String(t.m_FramesReceived), 20) +
                          " " +
                          e.PadOutput(String(t.m_FramesDecoded), 20) +
                          " " +
                          e.PadOutput(String(t.m_KeyFramesDecoded), 20) +
                          " " +
                          e.PadOutput(
                            `${t.m_FirCount}/${t.m_PliCount}/${t.m_NackCount}`,
                            20,
                          ),
                      );
                  })),
                e.LogMsg(
                  "-----------------------------------------------------------",
                );
            } catch (e) {}
          }
          PadOutput(e, t, n = void 0) {
            if (Math.abs(t) <= e.length) return e;
            let i = Math.max(Math.abs(t) - e.length || 0, 0),
              o = Array(i + 1).join(String(n || " ").charAt(0));
            return t < 0 ? o + e : e + o;
          }
          CheckConnection() {
            if (
              this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_Connected ||
              this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_LocalMicOnly
            )
              this.LogMsg(
                "(VoiceChat) Succcess! Voice is fully connected took " +
                  (
                    this.m_VoiceCallState.m_timeFinishedConnecting -
                    this.m_VoiceCallState.m_timeStartedConnecting
                  ).toFixed(0) +
                  "ms to complete, " +
                  (this.m_VoiceCallState.m_nFailuresThisInitiate + 1) +
                  " attempts made before success.",
              ),
                ClearBackgroundInterval(this.m_ConnectionCheck),
                (this.m_ConnectionCheck = 0),
                (this.m_VoiceCallState.m_nFailuresThisInitiate = 0),
                (this.m_VoiceCallState.m_bIsConnectionAttemptOverTwoSeconds =
                  !1),
                this.m_StatsTimeout ||
                  (this.m_StatsTimeout = SetBackgroundTimeout(
                    this.ProcessStatsReport,
                    1e4,
                  ));
            else {
              let e =
                performance.now() -
                this.m_VoiceCallState.m_timeStartedConnecting;
              this.m_VoiceCallState.m_bIsConnectionAttemptOverTwoSeconds =
                e > 2e3;
              let t = 6e4;
              0 != this.m_VoiceCallState.m_targetAccountID &&
                this.m_VoiceCallState.m_eState ==
                  O.k_EVoiceCallState_RequestedPermission &&
                (t = 3e5),
                e > t &&
                  (this.LogMsg(
                    "(VoiceChat) Failure! Gave up after more than one minute trying to connect, last state was " +
                      q(this.m_VoiceCallState.m_eState) +
                      "(" +
                      this.m_VoiceCallState.m_eState +
                      ")",
                  ),
                  this.EndVoiceChatInternal(!1)),
                this.LogMsg(
                  "(VoiceChat) Still trying to connect to voice chat/webrtc " +
                    q(this.m_VoiceCallState.m_eState) +
                    "(" +
                    this.m_VoiceCallState.m_eState +
                    ") " +
                    (
                      performance.now() -
                      this.m_VoiceCallState.m_timeStartedConnecting
                    ).toFixed(0) +
                    "ms elapsed...",
                );
            }
          }
          BSupportsDataChannels() {
            return (
              -1 !=
              this.m_PeerConnection?.localDescription.sdp.indexOf(
                "webrtc-datachannel",
              )
            );
          }
          RenegotiateSDP() {
            this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_Connected &&
              this.BackOffAndRetryInitiateVoiceChat();
          }
          BackOffAndRetryInitiateVoiceChat() {
            if (this.m_VoiceCallState.m_eState != O.k_EVoiceCallState_None) {
              let e = this.m_VoiceCallState.m_nFailuresThisInitiate,
                t = this.m_VoiceCallState.m_targetAccountID,
                n = this.m_VoiceCallState.m_chatRoom;
              this.EndVoiceChatInternal(!0),
                (this.m_VoiceCallState.m_eState =
                  O.k_EVoiceCallState_ScheduledInitiate),
                (this.m_VoiceCallState.m_targetAccountID = t),
                (this.m_VoiceCallState.m_chatRoom = n),
                (this.m_VoiceCallState.m_nFailuresThisInitiate = e + 1);
              let i = 250;
              (i =
                e < 1
                  ? 250
                  : e < 3
                    ? 1e3
                    : e < 5
                      ? 5e3
                      : e < 10
                        ? 1e4
                        : e < 15
                          ? 3e4
                          : 6e4),
                this.LogMsg(
                  "(VoiceChat) Retrying InitiateVoiceChat in " +
                    i.toFixed(0) +
                    " milliseconds...",
                ),
                this.m_VoiceCallState.m_bInitiatedOneOnOneCall ||
                0 == this.m_VoiceCallState.m_targetAccountID
                  ? (this.m_ScheduledInitiate = SetBackgroundTimeout(() => {
                      this.ScheduledInitiate(t, n);
                    }, i))
                  : (this.m_ScheduledInitiate = SetBackgroundTimeout(() => {
                      this.ScheduledAcceptOneOnOne(t);
                    }, i));
            }
          }
          ScheduledAcceptOneOnOne(e) {
            (this.m_ScheduledInitiate = 0),
              this.AcceptPartnersOneOnOneChatRequest(e);
          }
          ScheduledInitiate(e, t) {
            (this.m_ScheduledInitiate = 0), this.InitiateVoiceChat(e, t);
          }
          InitiateVoiceChat(e, t) {
            a.W.BClientConnected().then(() => {}),
              t &&
                ((k.ActiveDataChannelSupplier = this),
                (T.session = { groupID: t.groupID, roomID: t.chatID }));
            let n = new U.UAParser(navigator.userAgent).getResult(),
              i = "Chrome" == n.browser.name,
              r = "Edge" == n.browser.name && "Blink" == n.engine.name;
            if (!i && !r) {
              this.LogMsg(
                "(VoiceChat) Voice chat not supported in browser: " +
                  n.browser.name,
              );
              const e = (0, V.we)(
                  o.TS.IN_MOBILE
                    ? "#VoiceChat_Unavailable_NotSupported"
                    : "#Voice_VoiceUnavailableInBrowser_Title",
                ),
                t = o.TS.IN_MOBILE
                  ? (0, V.we)("#VoiceChat_Unavailable_MobileChat")
                  : (0, V.we)(
                      "#Voice_VoiceUnavailableInBrowser_Body",
                      n.browser.name,
                    );
              return void I.xm
                .ShowAlert(
                  e,
                  t,
                  (0, V.we)("#Voice_VoiceUnavailableInBrowser_OK"),
                )
                .then(() => {})
                .catch(() => !0);
            }
            if (0 != e && t)
              return void this.LogMsg(
                "Cant initiate voice chat for both friend & group",
              );
            let s = this.m_VoiceCallState.BMatchingCall(e, t);
            !this.m_VoiceCallState.BMatchingCall(e, t) &&
              this.m_VoiceCallState.m_eState >
                O.k_EVoiceCallState_ScheduledInitiate &&
              (this.LogMsg(
                "(VoiceChat) InitiateVoiceChat called for new target account/room while already connected, ending prior session first",
              ),
              this.EndVoiceChatInternal(!1)),
              this.m_ScheduledInitiate &&
                (ClearBackgroundTimeout(this.m_ScheduledInitiate),
                (this.m_ScheduledInitiate = 0));
            let l = performance.now();
            if (
              this.m_VoiceCallState.m_eState <=
                O.k_EVoiceCallState_ScheduledInitiate &&
              0 != this.m_VoiceCallState.m_timeEndedVoiceChat &&
              l - this.m_VoiceCallState.m_timeEndedVoiceChat < 100
            ) {
              (this.m_VoiceCallState.m_eState =
                O.k_EVoiceCallState_ScheduledInitiate),
                (this.m_VoiceCallState.m_targetAccountID = e),
                (this.m_VoiceCallState.m_bInitiatedOneOnOneCall = !0),
                (this.m_VoiceCallState.m_chatRoom = t);
              let n = 100 - (l - this.m_VoiceCallState.m_timeEndedVoiceChat);
              return (
                this.LogMsg(
                  "(VoiceChat) Delaying requested InitiateChat for " +
                    n.toFixed(0) +
                    " milliseconds to let prior EndVoiceChat finish...",
                ),
                void (this.m_ScheduledInitiate = SetBackgroundTimeout(() => {
                  this.ScheduledInitiate(e, t);
                }, n))
              );
            }
            (!s ||
              this.m_VoiceCallState.m_eState <=
                O.k_EVoiceCallState_ScheduledInitiate) &&
              (e
                ? this.LogMsg(
                    "Resetting voice chat state and initiating to individual " +
                      e,
                  )
                : t
                  ? this.LogMsg(
                      "Resetting voice chat state and initiating to room " +
                        t.chatID,
                    )
                  : ((0, H.w)(
                      this.m_VoiceEchoLocalMic,
                      "Shouldn't hit local mic access only without echo local mic on",
                    ),
                    this.LogMsg(
                      "Resetting voice chat state and initiating local mic access only",
                    )),
              this.m_VoiceCallState.m_eState <=
                O.k_EVoiceCallState_ScheduledInitiate &&
                ((0 == e && null == t) || this.DispatchSetVoiceChatActive(!0),
                (this.m_VoiceCallState.m_targetAccountID = e),
                (this.m_VoiceCallState.m_bInitiatedOneOnOneCall = !0),
                (this.m_VoiceCallState.m_chatRoom = t),
                (this.m_VoiceCallState.m_timeStartedConnecting =
                  performance.now()),
                (this.m_VoiceCallState.m_nMostRecentRemoteDescriptionVersion =
                  "0"),
                (this.m_VoiceCallState.m_bIsConnectionAttemptOverTwoSeconds =
                  !1),
                (this.m_ConnectionCheck = SetBackgroundInterval(
                  this.CheckConnection,
                  2e3,
                )),
                0 != e
                  ? this.InitiateOneOnOneVoiceChat(e)
                  : this.InitiateChatRoomVoice()));
          }
          OnRequestMicrophoneAccess() {
            if (
              this.m_VoiceCallState.m_eState >
              O.k_EVoiceCallState_ScheduledInitiate
            )
              return (
                this.LogMsg(
                  "(VoiceChat) Hit OnRequestMicrophoneAccess in wrong state " +
                    this.m_VoiceCallState.m_eState,
                ),
                void this.EndVoiceChatInternal(!1)
              );
            null == this.m_AudioContext &&
              (this.m_AudioContext = I.xm.AudioPlaybackManager.context);
            let e = {
              optional: [
                {
                  echoCancellation: this.m_Settings.m_VoiceUseEchoCancellation,
                },
                {
                  googEchoCancellation:
                    this.m_Settings.m_VoiceUseEchoCancellation,
                },
                {
                  googEchoCancellation2:
                    this.m_Settings.m_VoiceUseEchoCancellation,
                },
                {
                  googNoiseSupression:
                    this.m_Settings.m_VoiceUseNoiseCancellation,
                },
                {
                  googNoiseSupression2:
                    this.m_Settings.m_VoiceUseNoiseCancellation,
                },
                {
                  mozNoiseSuppression:
                    this.m_Settings.m_VoiceUseNoiseCancellation,
                },
                {
                  googAutoGainControl:
                    this.m_Settings.m_VoiceUseAutoGainControl,
                },
                {
                  googAutoGainControl2:
                    this.m_Settings.m_VoiceUseAutoGainControl,
                },
                {
                  mozAutoGainControl: this.m_Settings.m_VoiceUseAutoGainControl,
                },
                { googHighpassFilter: !0 },
                { googAudioMirroring: !1 },
              ],
            };
            "default" != this.m_Settings.m_SelectedMicID &&
              e.optional.push({ sourceId: this.m_Settings.m_SelectedMicID }),
              this.m_VoiceCallState.m_targetAccountID
                ? this.LogMsg(
                    "(VoiceChat) Call to individual " +
                      this.m_VoiceCallState.m_targetAccountID +
                      " now initating getUserMedia/WebRTC",
                  )
                : this.m_VoiceCallState.m_chatRoom &&
                  this.LogMsg(
                    "(VoiceChat) Call to room " +
                      this.m_VoiceCallState.m_chatRoom.chatID +
                      " now initating getUserMedia/WebRTC",
                  ),
              (this.m_VoiceCallState.m_eState =
                O.k_EVoiceCallState_RequestedMicAccess);
            let t = navigator;
            (this.m_bUserHasDeniedMicPermissions = !1),
              (t.getUserMedia =
                t.getUserMedia ||
                t.webkitGetUserMedia ||
                t.mozGetUserMedia ||
                t.msGetUserMedia),
              t.getUserMedia(
                { audio: e, video: this.m_bSendVideo || this.m_bReceiveVideo },
                (e) => {
                  this.OnGetUserMediaSuccess(e);
                },
                this.OnGetUserMediaFailure,
              );
          }
          ScheduleClientVoiceLogsUpload(e) {
            if ("" == this.m_VoiceCallState.m_voiceChatID) return;
            this.m_ScheduledVoiceLogsUpload &&
              (ClearBackgroundTimeout(this.m_ScheduledVoiceLogsUpload),
              (this.m_ScheduledVoiceLogsUpload = 0));
            this.m_ScheduledVoiceLogsUpload = SetBackgroundTimeout(
              this.UploadClientSideVoiceLogs,
              1e3 * e,
            );
          }
          UploadClientSideVoiceLogs() {
            if ("" == this.m_VoiceCallState.m_voiceChatID) return;
            if (this.m_bClientSideLogsUploadInProgress)
              return void this.ScheduleClientVoiceLogsUpload(2);
            this.m_bClientSideLogsUploadInProgress = !0;
            let e = r.w.Init(G.c6);
            e.Body().set_voice_chatid(this.m_VoiceCallState.m_voiceChatID);
            let t = this.m_rgLogLines.slice(this.m_nLastLogLineUploaded);
            e.Body().set_client_voice_logs_new_lines(t.join("\r\n"));
            let n = t.length;
            G.cc
              .UploadClientVoiceChatLogs(
                this.m_CMInterface.GetServiceTransport(),
                e,
              )
              .then((e) => {
                1 == e.GetEResult()
                  ? ((this.m_nLastLogLineUploaded += n),
                    this.LogMsg(
                      "(VoiceChat) Uploaded " +
                        n +
                        " new lines of voice chat log info to server",
                    ),
                    this.ScheduleClientVoiceLogsUpload(20))
                  : (this.LogMsg(
                      "(VoiceChat) Error uploading client side logs to voice chat session, will retry soon",
                    ),
                    this.ScheduleClientVoiceLogsUpload(
                      10 + 10 * Math.random(),
                    )),
                  (this.m_bClientSideLogsUploadInProgress = !1);
              })
              .catch((e) => {
                this.LogMsg(
                  "(VoiceChat) Error uploading client side logs to voice chat session, will retry soon",
                ),
                  this.ScheduleClientVoiceLogsUpload(10 + 10 * Math.random()),
                  (this.m_bClientSideLogsUploadInProgress = !1);
              });
          }
          EndVoiceChatInternal(e) {
            if (
              (this.m_ScheduledVoiceLogsUpload &&
                this.UploadClientSideVoiceLogs(),
              this.m_ScheduledInitiate &&
                (ClearBackgroundTimeout(this.m_ScheduledInitiate),
                (this.m_ScheduledInitiate = 0)),
              this.m_StatsTimeout &&
                (ClearBackgroundTimeout(this.m_StatsTimeout),
                (this.m_StatsTimeout = 0)),
              this.DispatchSetVoiceChatActive(!1),
              this.m_VoiceCallState.m_eState == O.k_EVoiceCallState_None)
            )
              return;
            if (!e) {
              if (this.m_VoiceCallState.m_targetAccountID) {
                let e = this.m_VoiceCallState.m_targetAccountID;
                this.m_VoiceCallState.m_targetAccountID = 0;
                let t = this.m_VoiceCallState.m_voiceChatID,
                  n = r.w.Init(G.lu);
                n
                  .Body()
                  .set_steamid_partner(
                    w.b.InitFromAccountID(e).ConvertTo64BitString(),
                  ),
                  n
                    .Body()
                    .set_voice_chatid(this.m_VoiceCallState.m_voiceChatID);
                let i = this.m_VoiceCallState.m_eState;
                G.cc
                  .LeaveOneOnOneChat(
                    this.m_CMInterface.GetServiceTransport(),
                    n,
                  )
                  .then((n) => {
                    if (1 == n.GetEResult())
                      if (
                        (this.LogMsg("(VoiceChat) Left voice chat with " + e),
                        i == O.k_EVoiceCallState_Connected)
                      ) {
                        let n = new te();
                        (n.partner_accountid =
                          this.m_CMInterface.steamid.GetAccountID()),
                          (n.voice_chatid = t),
                          (n.previously_joined = !0),
                          this.m_mapOneOnOneCallsWaitingJoinOrAccept.set(e, n);
                      } else {
                        let t = I.xm.FriendStore.self,
                          n = I.xm.ChatStore.GetFriendChat(e, !1);
                        n &&
                          t &&
                          n.AddVoiceChannelInviteMsg(
                            I.xm.CMInterface.steamid.GetAccountID(),
                            I.xm.GetServerRTime32(),
                            (0, V.we)(
                              "#FriendMsg_VoiceChannelEndedExplicit",
                              t.display_name,
                            ),
                          );
                      }
                    else
                      this.LogMsg(
                        "(VoiceChat) Failed leaving voice chat with " + e,
                      );
                  });
              } else if (this.m_VoiceCallState.m_chatRoom) {
                let e = r.w.Init(L.z);
                e
                  .Body()
                  .set_chat_group_id(this.m_VoiceCallState.m_chatRoom.groupID),
                  e.Body().set_chat_id(this.m_VoiceCallState.m_chatRoom.chatID);
                let t = this.m_VoiceCallState.m_chatRoom.chatID;
                L.xP
                  .LeaveVoiceChat(this.m_CMInterface.GetServiceTransport(), e)
                  .then((e) => {
                    1 == e.GetEResult()
                      ? this.LogMsg(
                          "(VoiceChat) Left chat room (" + t + ") voice chat",
                        )
                      : this.LogMsg(
                          "(VoiceChat) Failed leaving chat room (" +
                            t +
                            ") voice chat",
                        );
                  });
              }
              (k.ActiveDataChannelSupplier = void 0),
                this.m_mapUserVoiceStatus.clear();
            }
            this.m_mapSSRCToAccountID.clear(),
              this.m_mapAccountIDToAudioStats.clear(),
              this.m_mapAccountIDToVideoStats.clear();
            let t =
              this.m_VoiceCallState.m_eState >
              O.k_EVoiceCallState_RequestedPermission;
            if (
              ((this.m_VoiceCallState.m_eState = O.k_EVoiceCallState_None),
              (this.m_VoiceCallState.m_targetAccountID = 0),
              (this.m_VoiceCallState.m_bInitiatedOneOnOneCall = !1),
              (this.m_VoiceCallState.m_bPostedOneOnOneEndedMsg = !1),
              (this.m_VoiceCallState.m_bWaitingOnOneOnOneRejoin = !1),
              (this.m_VoiceCallState.m_chatRoom = null),
              (e && t) || (this.m_VoiceCallState.m_voiceChatID = ""),
              (this.m_VoiceCallState.m_nMostRecentRemoteDescriptionVersion =
                "0"),
              (this.m_VoiceCallState.m_nFailuresThisInitiate = 0),
              (this.m_VoiceCallState.m_timeEndedVoiceChat = performance.now()),
              (this.m_VoiceCallState.m_webRTCConnectedNotification = void 0),
              (this.m_VoiceCallState.m_bOfferUpdateInProgress = !1),
              (this.m_VoiceCallState.m_msgPendingRemoteDescriptionUpdate =
                void 0),
              this.m_ConnectionCheck &&
                (ClearBackgroundInterval(this.m_ConnectionCheck),
                (this.m_ConnectionCheck = 0)),
              e)
            )
              this.m_rgVideoStreams.map((e) => (e.stream = null));
            else {
              let e = this.m_rgVideoStreams.pop();
              for (; null != e; ) e = this.m_rgVideoStreams.pop();
            }
            let n = this.m_rgAudioStreams.pop();
            for (; null != n; ) {
              null != n.elem &&
                (n.elem.pause(),
                (n.elem.src = void 0),
                (n.elem.srcObject = void 0),
                (n.elem = void 0)),
                null != n.volume_meter &&
                  (n.volume_meter.stop(), (n.volume_meter = void 0)),
                (n.stream.oninactive = void 0);
              for (let e of n.stream.getTracks()) e.stop();
              if (null != this.m_AudioContext && n.source_node)
                try {
                  if (
                    (n.source_node.disconnect(),
                    n.type == x.k_EAudioStreamType_Microphone &&
                      n.source_node instanceof MediaStreamAudioSourceNode)
                  )
                    for (let e of n.source_node.mediaStream.getTracks())
                      e.stop();
                } catch (e) {}
              n.output_gain_node &&
                (n.output_gain_node.disconnect(),
                (n.output_gain_node = void 0)),
                (n = this.m_rgAudioStreams.pop());
            }
            null != this.m_MicVolumeMeter &&
              (this.m_MicVolumeMeter.stop(), (this.m_MicVolumeMeter = void 0)),
              null != this.m_MicNoiseGate &&
                (this.m_MicNoiseGate.input
                  ? (this.m_MicNoiseGate.input.disconnect(),
                    this.m_MicNoiseGate.output.disconnect(),
                    this.m_MicNoiseGate.noiseGateKernel_.disconnect())
                  : this.m_MicNoiseGate.disconnect(),
                (this.m_MicNoiseGate = void 0)),
              null != this.m_MicInputGainNode &&
                (this.m_MicInputGainNode.disconnect(),
                (this.m_MicInputGainNode = void 0)),
              null != this.m_AudioContext &&
                (I.xm.AudioPlaybackManager.SetVoiceNotActive(),
                (this.m_AudioContext = void 0)),
              this.m_PeerConnection &&
                ((this.m_PeerConnection.oniceconnectionstatechange = void 0),
                (this.m_PeerConnection.onicegatheringstatechange = void 0),
                (this.m_PeerConnection.onsignalingstatechange = void 0),
                this.m_PeerConnection.close(),
                (this.m_PeerConnection = void 0));
          }
          GetPersonaState(e) {
            const t = new w.b(e),
              n = I.xm.FriendStore.GetPlayer(t.GetAccountID());
            return (
              n.LoadIfNecessary(),
              (0, D.z7)(() => n.is_ready, { timeout: 5e3 }).then(
                () => n.persona,
              )
            );
          }
          FillInChatUsabilityMetrics(e) {
            let t = e.voice_settings();
            t.set_voice_input_gain(this.m_Settings.m_VoiceInputGain),
              t.set_voice_output_gain(this.m_Settings.m_VoiceOutputGain),
              t.set_noise_gate_level(
                Math.round(this.m_Settings.m_NoiseGateLevel),
              ),
              t.set_voice_use_echo_cancellation(
                this.m_Settings.m_VoiceUseEchoCancellation,
              ),
              t.set_voice_use_noise_cancellation(
                this.m_Settings.m_VoiceUseNoiseCancellation,
              ),
              t.set_voice_use_auto_gain_control(
                this.m_Settings.m_VoiceUseAutoGainControl,
              ),
              t.set_selected_non_default_mic(
                "default" !== this.m_Settings.m_SelectedMicID,
              ),
              t.set_selected_non_default_output(
                "default" !== this.m_Settings.m_SelectedOutputID,
              ),
              t.set_push_to_talk_enabled(this.GetPushToTalkEnabled()),
              t.set_push_to_mute_enabled(this.GetPushToMuteEnabled()),
              t.set_play_ptt_sounds(this.m_Settings.m_bPlayPTTSounds),
              this.IsAnyVoiceActive() &&
                (this.m_VoiceCallState.m_targetAccountID
                  ? e.ui_state().set_in_one_on_one_voice_chat(!0)
                  : this.m_VoiceCallState.m_chatRoom &&
                    e.ui_state().set_in_group_voice_chat(!0));
          }
        }
        (0, i.Cg)([D.sH], ne.prototype, "m_VoiceCallState", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bPushToTalkEnabled", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bPushToMuteEnabled", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bVoicePTTStateEnabled", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_VKPushToTalkHotKey", void 0),
          (0, i.Cg)(
            [D.sH],
            ne.prototype,
            "m_strPushToTalkDisplayString",
            void 0,
          ),
          (0, i.Cg)(
            [D.sH],
            ne.prototype,
            "m_bUserHasDeniedMicPermissions",
            void 0,
          ),
          (0, i.Cg)([D.sH], ne.prototype, "m_bOutputMuted", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_AudioContext", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_rgAudioStreams", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_MicVolumeMeter", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_MicNoiseGate", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_MicInputGainNode", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_rgVideoStreams", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bSendVideo", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bReceiveVideo", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_PeerConnection", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_Settings", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bLocalMicTestActive", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bForceConnectingStatus", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_bForceReconnectingStatus", void 0),
          (0, i.Cg)([D.sH], ne.prototype, "m_localPose", void 0),
          (0, i.Cg)(
            [D.sH],
            ne.prototype,
            "m_mapRemotePoseForAccountID",
            void 0,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetSelectedMic", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetSelectedOutput", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetUseEchoCancellation", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "SetUseNoiseCancellation",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetUseAutoGainControl", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetVoiceEchoLocalMic", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "SetUseSteamAudioSpatialization",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetVoiceLogDetails", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "GetVoiceLogDetails", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetUseNoiseGateLevel", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetVoiceInputGain", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetVoiceOutputGain", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "ForceReconnectingStatus",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "ForceConnectingStatus", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetAutoShowVideoStream", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "LogMsg", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "GetVoiceLogs", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnPushToTalkReleased", null),
          (0, i.Cg)(
            [D.XI.bound, (0, N.s)(150)],
            ne.prototype,
            "DebouncedToggleMicMuting",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnPushToTalkStateChange",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "UpdateNoiseGateOnActiveMic",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnAudioContextStateChange",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnIceCandidate", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "AddRemoteIceCandidate", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnSignalingStateChange", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnIceConnectionStateChange",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnIceGatheringStateChange",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnRemoveRemoteStream", null),
          (0, i.Cg)([D.XI], ne.prototype, "SetLocalHMDPose", null),
          (0, i.Cg)([D.XI], ne.prototype, "SetRemoteHMDPose", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnAddRemoteStream", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "ModifyLocalSDPBeforeSetting",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnCreateOfferSuccess", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnCreateOfferError", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnUpdatedCreateOfferSuccess",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnNoiseGateMessage", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "SetupNoiseGateOnMic", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnGetUserMediaSuccess", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnGetUserMediaFailure", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnSetUpdatedLocalDescriptionSuccess",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnSetUpdatedLocalDescriptionFailure",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnCreateAnswerSuccess", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "OnCreateAnswerError", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnAcceptOneOnOneVoiceChat",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnRejectOneOnOneVoiceChat",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "PlayRingSound", null),
          (0, i.Cg)([D.XI.bound], ne.prototype, "ProcessStatsReport", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "ProcessReceiverStatsReport",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "CheckConnection", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "ScheduledAcceptOneOnOne",
            null,
          ),
          (0, i.Cg)([D.XI.bound], ne.prototype, "ScheduledInitiate", null),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "OnRequestMicrophoneAccess",
            null,
          ),
          (0, i.Cg)(
            [D.XI.bound],
            ne.prototype,
            "UploadClientSideVoiceLogs",
            null,
          );
      },
      68593: (e, t, n) => {
        "use strict";
        n.d(t, { D: () => l, T: () => s });
        var i = n(78919),
          o = n(63696),
          r = n(69074),
          a = n(50622);
        const s = o.forwardRef(function (e, t) {
            const {
                rgAcceptedTypes: n,
                bAcceptsFiles: i,
                fnDragEnter: r,
                fnDragLeave: a,
                fnDragOver: s,
                fnDrop: l,
                ...m
              } = e,
              d = c({
                rgAcceptedTypes: n,
                bAcceptsFiles: i,
                fnDragEnter: r,
                fnDragLeave: a,
                fnDragOver: s,
                fnDrop: l,
              });
            return o.createElement("div", {
              ...m,
              ...d,
              className: "DropTarget " + m.className,
              ref: t,
            });
          }),
          l = o.forwardRef(function (e, t) {
            const {
                rgAcceptedTypes: n,
                bAcceptsFiles: i,
                fnDragEnter: a,
                fnDragLeave: s,
                fnDragOver: l,
                fnDrop: m,
                ...d
              } = e,
              u = c({
                rgAcceptedTypes: n,
                bAcceptsFiles: i,
                fnDragEnter: a,
                fnDragLeave: s,
                fnDragOver: l,
                fnDrop: m,
              });
            return o.createElement(r.Z, {
              ...d,
              ...u,
              className: "DropTarget " + d.className,
              ref: t,
            });
          });
        function c(e) {
          const {
              rgAcceptedTypes: t,
              bAcceptsFiles: n,
              fnDragEnter: r,
              fnDragLeave: s,
              fnDragOver: l,
              fnDrop: c,
            } = e,
            m = o.useRef(null),
            d = o.useRef(!1),
            u = o.useRef([]),
            h = o.useCallback(() => {
              let e = i.ZM.DragDropManager.GetDragData();
              if (!e && u.current) {
                const t = new Map();
                for (const e of u.current) t.set(e, "");
                e = { type: "html", mapData: t };
              }
              return r(e, m.current.bFiles);
            }, [r]);
          return {
            onDragEnter: o.useCallback(
              (e) => {
                if (!d.current) {
                  u.current = [];
                  let o = i.ZM.DragDropManager.GetDragData(),
                    a = n && -1 != e.dataTransfer.types.indexOf("Files");
                  (o && -1 != t.indexOf(o.type)) || a
                    ? (d.current = !0)
                    : t.filter((t) => e.dataTransfer.types.includes(t)).length >
                        0
                      ? ((u.current = t.filter((t) =>
                          e.dataTransfer.types.includes(t),
                        )),
                        (d.current = !0))
                      : (d.current = !1),
                    d.current && r && (m.current = { bFiles: a }),
                    d.current && (e.preventDefault(), e.stopPropagation());
                }
              },
              [n, t, r],
            ),
            onDragLeave: o.useCallback(
              (e) => {
                if (d.current) {
                  if (!(0, a.NO)(e)) return;
                  (d.current = !1),
                    e.preventDefault(),
                    e.stopPropagation(),
                    s && s();
                }
              },
              [s],
            ),
            onDragOver: o.useCallback(
              (e) => {
                if (d.current) {
                  if (m.current) {
                    let e = h();
                    if (((m.current = null), !e)) return void (d.current = !1);
                  }
                  e.preventDefault(), e.stopPropagation(), l && l(e);
                }
              },
              [l, h],
            ),
            onDrop: o.useCallback(
              (e) => {
                if (d.current) {
                  (d.current = !1), e.preventDefault(), e.stopPropagation();
                  let o = i.ZM.DragDropManager.GetDragData();
                  if (o && -1 != t.indexOf(o.type)) c && c(o, e);
                  else if (n && 0 != e.dataTransfer.files.length)
                    c && c(null, e);
                  else if (!o && u.current.length > 0 && c) {
                    const t = new Map();
                    for (const n of u.current)
                      t.set(n, e.dataTransfer.getData(n));
                    c({ type: "html", mapData: t }, e);
                  }
                }
              },
              [t, n, c],
            ),
          };
        }
      },
      32245: (e, t, n) => {
        "use strict";
        n.d(t, {
          Ko: () => de,
          C1: () => _e,
          J3: () => pe,
          ln: () => ge,
          nK: () => me,
          yA: () => re,
          ft: () => ae,
          SU: () => he,
          QH: () => se,
          n$: () => ue,
          nn: () => le,
        });
        var i = n(34629),
          o = n(78116),
          r = n(51802),
          a = n(73880),
          s = n(93715),
          l = n(82789),
          c = n(58743),
          m = n(78919),
          d = n(68593),
          u = n(63696),
          h = n(36755),
          p = n(30543),
          _ = n.n(p);
        const g = ({ message: e, name: t, renderImage: n, ...i }) =>
          u.createElement(
            h.M,
            { key: "inviteDrop", classNames: { ..._() }, timeout: 300, ...i },
            (i) =>
              u.createElement(
                "div",
                { ref: i, className: _().ChatModalCover },
                u.createElement(
                  "div",
                  { className: _().InviteDropContainer },
                  u.createElement(
                    "span",
                    { className: _().InviteDropImage },
                    n(),
                  ),
                  u.createElement("span", { className: _().InviteDropName }, t),
                  u.createElement(
                    "span",
                    { className: _().InviteDropMessage },
                    e,
                  ),
                  u.createElement("span", {
                    className: _().InviteDropBackground,
                  }),
                ),
              ),
          );
        var C = n(98540),
          f = n(13346),
          S = n(85691),
          v = n(25698),
          b = n(91466),
          I = n(41230),
          w = n(23812),
          y = n(63887),
          E = n(94786),
          D = n(89021),
          A = n(1808),
          T = n(14355),
          M = n(81734),
          R = n(77765),
          k = n(77171),
          L = n(50622),
          G = n(74002),
          F = n(82924),
          P = n(69074),
          B = n(41943),
          x = n(76343),
          O = n(70552),
          N = n(91364),
          V = n(11315),
          U = n(23038),
          H = n(77631),
          W = n(49912),
          z = n(77842),
          j = n(58825),
          q = n(8318),
          K = n(20074),
          Z = n(7153),
          Q = n(69168);
        const $ = u.lazy(() =>
          Promise.all([n.e(9489), n.e(7653)]).then(n.bind(n, 98393)),
        );
        let X = class extends u.Component {
          static contextType = o.QO;
          m_fnUnregisterDropComplete = void 0;
          m_friendSteamId;
          m_bChatHidden = !1;
          m_bShowVerticalBroadcastChat;
          m_strLocalBroadcastId;
          m_refBroadcastContainer = u.createRef();
          m_elMainContent;
          constructor(e) {
            super(e),
              (this.state = {
                dropToInviteFriend: void 0,
                dropGroupToInviteFriend: void 0,
                dropClanToInvite: void 0,
                speakerLabelWidth: 0,
              }),
              (this.m_friendSteamId = H.b
                .InitFromAccountID(e.chatView.chat.accountid_partner)
                .ConvertTo64BitString());
          }
          OnDragEnter(e, t) {
            if (
              (e
                ? (0, R.w)(
                    "friend" == e.type ||
                      "chatroomgroup" == e.type ||
                      "clan" == e.type ||
                      "html" == e.type,
                    "Invalid data type passed to FriendChatDialog.OnDrop",
                  )
                : (0, R.w)(
                    t,
                    "Invalid data type passed to FriendChatDialog.OnDrop",
                  ),
              !e)
            )
              return !0;
            let n = "friend" == e.type ? e.friend : void 0;
            if (n && n.accountid !== this.props.chatView.chat.accountid_partner)
              return (
                this.m_fnUnregisterDropComplete ||
                  (this.m_fnUnregisterDropComplete =
                    m.ZM.DragDropManager.RegisterForDropComplete(
                      this.OnDropComplete,
                    )),
                this.setState({ dropToInviteFriend: n }),
                !0
              );
            let i = "chatroomgroup" == e.type ? e.group : void 0;
            if (i)
              return (
                this.m_fnUnregisterDropComplete ||
                  (this.m_fnUnregisterDropComplete =
                    m.ZM.DragDropManager.RegisterForDropComplete(
                      this.OnDropComplete,
                    )),
                this.setState({ dropGroupToInviteFriend: i }),
                !0
              );
            let o = "clan" == e.type ? e.clan : void 0;
            return (
              !o ||
              (this.m_fnUnregisterDropComplete ||
                (this.m_fnUnregisterDropComplete =
                  m.ZM.DragDropManager.RegisterForDropComplete(
                    this.OnDropComplete,
                  )),
              this.setState({ dropClanToInvite: o }),
              !0)
            );
          }
          OnDragLeave() {
            (this.state.dropToInviteFriend ||
              this.state.dropGroupToInviteFriend ||
              this.state.dropClanToInvite) &&
              (this.m_fnUnregisterDropComplete.Unregister(),
              (this.m_fnUnregisterDropComplete = void 0),
              this.setState({
                dropToInviteFriend: void 0,
                dropGroupToInviteFriend: void 0,
                dropClanToInvite: void 0,
              }));
          }
          OnDragOver(e) {
            e.dataTransfer.dropEffect = "move";
          }
          OnDrop(e, t) {
            e
              ? (0, R.w)(
                  "friend" == e.type ||
                    "chatroomgroup" == e.type ||
                    "clan" == e.type ||
                    "html" == e.type,
                  "Invalid data type passed to FriendChatDialog.OnDrop",
                )
              : (0, R.w)(
                  0 != t.dataTransfer.files.length,
                  "Invalid data type passed to FriendChatDialog.OnDrop",
                );
            let n = this.props.chatView;
            if (e) {
              let i = t.currentTarget.ownerDocument.defaultView,
                o = n.chat.chat_partner,
                r = "friend" == e.type ? e.friend : void 0,
                a = "chatroomgroup" == e.type ? e.group : void 0,
                s = "clan" == e.type ? e.clan : void 0,
                l = "html" == e.type ? e.mapData : void 0;
              if (r) {
                if (o == r) return;
                this.state.dropToInviteFriend &&
                  (this.m_fnUnregisterDropComplete.Unregister(),
                  (this.m_fnUnregisterDropComplete = void 0),
                  this.setState({ dropToInviteFriend: void 0 })),
                  m.ZM.DragDropManager.SetDropConsumed(),
                  le(
                    { invitee: r, chatview: n, invitedto: o },
                    (0, m.CO)(t),
                    i,
                  );
              } else
                a || s
                  ? ((this.state.dropGroupToInviteFriend ||
                      this.state.dropClanToInvite) &&
                      (this.m_fnUnregisterDropComplete.Unregister(),
                      (this.m_fnUnregisterDropComplete = void 0),
                      this.setState({
                        dropGroupToInviteFriend: void 0,
                        dropClanToInvite: void 0,
                      })),
                    m.ZM.DragDropManager.SetDropConsumed(),
                    s &&
                      (a = c.xm.ChatStore.GetChatRoomGroup(
                        s.GetChatGroupIDIfLoaded(),
                      )),
                    le({ invitee: o, invitedto: a }, (0, m.CO)(t), i))
                  : l &&
                    l.has("text/plain") &&
                    n.AddPendingText(l.get("text/plain"));
            } else if (0 != t.dataTransfer.files.length) {
              let e = t.dataTransfer.files[0];
              n.SetFileToUpload(e);
            }
          }
          OnDropComplete(e) {
            !e &&
              this.state.dropToInviteFriend &&
              ((this.m_fnUnregisterDropComplete = void 0),
              this.setState({ dropToInviteFriend: void 0 }));
          }
          OnNameWidthChanged(e) {
            this.setState({ speakerLabelWidth: e });
          }
          componentDidMount() {
            window.addEventListener("resize", this.OnLayoutChange);
          }
          componentWillUnmount() {
            window.removeEventListener("resize", this.OnLayoutChange);
          }
          CalculateBroadcastSectionStyles(e) {
            if (this.m_bChatHidden) return { width: "100%", height: "100%" };
            const {
                nWatchPartyBroadcastHeightPercentage: t,
                nWatchPartyBroadcastWidthPercentage: n,
              } = m.ZM.UIDisplayPrefs,
              i = {};
            if (e) {
              const e = t || 66;
              if (((i.height = `${e}%`), this.m_elMainContent)) {
                const { clientWidth: t, clientHeight: n } =
                    this.m_elMainContent,
                  o = (9 / 16) * t + 50,
                  r = (0, W.OQ)(e, 1, (o / n) * 100);
                i.height = `${r}%`;
              }
            } else (i.width = n ? `${n}%` : "66%"), (i.overflowY = "auto");
            return i;
          }
          ShouldShowVerticalBroadcastChat() {
            return void 0 !== this.m_bShowVerticalBroadcastChat
              ? this.m_bShowVerticalBroadcastChat
              : !!this.m_elMainContent &&
                  this.m_elMainContent.clientHeight /
                    this.m_elMainContent.clientWidth >
                    5 / 7;
          }
          OnLayoutChange() {
            this.forceUpdate();
          }
          OnGrabberMouseDown(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            t.addEventListener("mousemove", this.HandleMouseMove),
              t.addEventListener("mouseup", this.UnregisterDragEvents);
          }
          HandleMouseMove(e) {
            e.preventDefault(), e.stopPropagation();
            let t =
                this.m_refBroadcastContainer.current.getBoundingClientRect(),
              n =
                this.m_refBroadcastContainer.current.parentElement.getBoundingClientRect();
            const i = this.ShouldShowVerticalBroadcastChat(),
              o = i ? t.top : t.left,
              r = i ? e.clientY : e.clientX,
              a = i ? n.height : n.width,
              s = (0, W.OQ)(((r - o) / a) * 100, 1, 100),
              l = i
                ? "nWatchPartyBroadcastHeightPercentage"
                : "nWatchPartyBroadcastWidthPercentage";
            m.ZM.SetUIDisplayPref(l, s);
          }
          UnregisterDragEvents(e) {
            e.view.removeEventListener("mousemove", this.HandleMouseMove),
              e.view.removeEventListener("mouseup", this.UnregisterDragEvents);
          }
          HideChat() {
            this.SetChatHidden(!0);
          }
          ShowChat() {
            this.SetChatHidden(!1);
          }
          SetChatHidden(e) {
            (this.m_bChatHidden = e), this.forceUpdate();
          }
          ShowBroadcast() {
            c.xm.UIStore.SetFriendBroadcastVisible(this.m_friendSteamId, !0),
              SetBackgroundTimeout(() => {
                this.props.chatView.OnChatFrameChanged();
              }, 30);
          }
          HideBroadcast() {
            c.xm.UIStore.SetFriendBroadcastVisible(this.m_friendSteamId, !1),
              c.xm.UIStore.SetTheaterMode(!1),
              SetBackgroundTimeout(() => {
                this.props.chatView.OnChatFrameChanged();
              }, 30);
          }
          ToggleVerticalBroadcastChat() {
            this.SetVerticalBroadcastChat(
              !this.ShouldShowVerticalBroadcastChat(),
            ),
              this.SetChatHidden(!1);
          }
          ToggleTheaterModeBroadcastChat() {
            c.xm.UIStore.SetTheaterMode(!c.xm.UIStore.GetTheaterMode());
          }
          SetVerticalBroadcastChat(e) {
            this.m_bShowVerticalBroadcastChat = e;
          }
          SetLocalBroadcastId(e) {
            this.m_strLocalBroadcastId = e;
          }
          SetMainContentRef(e) {
            (this.m_elMainContent = e), this.OnLayoutChange();
          }
          GetTitleBarDragDropProps() {
            let e = { rgAcceptedTypes: [], bAcceptsFiles: !0 };
            return (e.fnDrop = this.OnDrop), e;
          }
          GetChatBodyDragDropProps() {
            let e = {
              rgAcceptedTypes: [
                "friend",
                "chatroomgroup",
                "clan",
                "text/plain",
              ],
              bAcceptsFiles: !0,
            };
            return (
              (e.fnDragEnter = this.OnDragEnter),
              (e.fnDragLeave = this.OnDragLeave),
              (e.fnDragOver = this.OnDragOver),
              (e.fnDrop = this.OnDrop),
              e
            );
          }
          RenderInnerChatTabs() {
            return u.createElement(
              "div",
              { className: "ChatBodyControls" },
              u.createElement(
                "div",
                {
                  className: "Close",
                  onClick: this.HideChat,
                  title: (0, G.we)("#Broadcast_View_HideChat"),
                },
                u.createElement(M.K7s, { showChat: !1 }),
              ),
              u.createElement(me, {
                chatView: this.props.chatView,
                additionalClasses: "broadcastVisible",
              }),
            );
          }
          render() {
            if (!this.props.chatView) return null;
            let e = this.props.chatView.chat,
              t = c.xm.VoiceStore.BPartnerHasRequestedAndIsInOneOnOneChat(
                e.accountid_partner,
              ),
              n = this.props.chatView.BVoiceActive(),
              i = c.xm.UIStore.IsFriendBroadcastVisible(this.m_friendSteamId),
              o = e.GetShowNonFriendWarning();
            const {
              dropToInviteFriend: r,
              dropGroupToInviteFriend: a,
              dropClanToInvite: s,
            } = this.state;
            let l;
            r
              ? (l = u.createElement(pe, {
                  chatView: this.props.chatView,
                  friend: this.state.dropToInviteFriend,
                }))
              : (a || s) &&
                (l = u.createElement(_e, {
                  chatView: this.props.chatView,
                  group: this.state.dropGroupToInviteFriend,
                  clan: this.state.dropClanToInvite,
                }));
            let m = !1,
              p = null,
              _ = this.ShouldShowVerticalBroadcastChat(),
              g = this.m_bChatHidden;
            if (i) {
              const t = this.CalculateBroadcastSectionStyles(_);
              (p = u.createElement(
                u.Suspense,
                { fallback: null },
                u.createElement(ee, {
                  ref: this.m_refBroadcastContainer,
                  steamID: H.b
                    .InitFromAccountID(e.accountid_partner)
                    .ConvertTo64BitString(),
                  localSteamID: this.m_strLocalBroadcastId,
                  watchLocation: 12,
                  bWebRTC: !0,
                  onRequestClose: this.HideBroadcast,
                  actions: [
                    u.createElement("div", {
                      key: "ChatPosToggle",
                      onClick: this.ToggleVerticalBroadcastChat,
                      title: `${_ ? ((0, G.we))("#Broadcast_View_Stack_H") : ((0, G.we))("#Broadcast_View_Stack_V")}`,
                      className:
                        "BroadcastChatPositionToggle " +
                        (_ ? "right" : "bottom"),
                    }),
                  ],
                  style: t,
                  onTheaterMode: this.ToggleTheaterModeBroadcastChat,
                }),
                !g &&
                  u.createElement("div", {
                    className:
                      "BroadcastChatDivider " + (_ ? "vertical" : "horizontal"),
                    onMouseDown: this.OnGrabberMouseDown,
                  }),
                g &&
                  u.createElement(de, {
                    onClick: this.ShowChat,
                    edge: _ ? "bottom" : "right",
                  }),
              )),
                (m = !0);
            } else m = !1;
            let C = {};
            this.props.isActive || (C.display = "none");
            const f = (0, k.A)(
                "chatWindow",
                "MultiUserChat",
                n && "VoiceActive",
                n && c.xm.ChatStore.VoiceChat.IsMicMuted() && "MicMuted",
                t && "VoiceRequested",
                o && "NotAFriendOrApproved",
                c.xm.SettingsStore.FriendsSettings.bCompactFriendsList &&
                  "compactView",
                m && "broadcastVisible",
              ),
              S = (0, k.A)("chatBody", (r || a || s) && "chatRoomActiveDrop"),
              v =
                this.m_bChatHidden && i
                  ? null
                  : u.createElement(Q.gs.Consumer, null, (t) =>
                      u.createElement(O.o, {
                        key: e.unique_id,
                        chatView: this.props.chatView,
                        isActive: this.props.isActive,
                        disabled: !1,
                        ownerWindow: t.ownerWindow,
                      }),
                    );
            let b = u.createElement(
                d.T,
                {
                  style: C,
                  className: "chatHistoryAndMembers",
                  ...this.GetChatBodyDragDropProps(),
                },
                u.createElement(U.A, null, l),
                u.createElement(
                  "div",
                  { className: "displayColumn fullWidth" },
                  u.createElement(
                    P.Z,
                    {
                      className: "displayRow minHeightZero",
                      "flow-children": "row",
                      navEntryPreferPosition: Z.iU.PREFERRED_CHILD,
                    },
                    o &&
                      u.createElement(he, {
                        chatView: this.props.chatView,
                        friend: e.chat_partner,
                      }),
                    u.createElement(
                      "div",
                      { className: "ChatRoomGroupDialog_history" },
                      c.xm.UIStore.show_winter_sale_ui &&
                        !c.xm.SettingsStore.FriendsSettings
                          .bDisableRoomEffects &&
                        u.createElement(q.Y, {
                          effectManager: e.RoomEffectManager(),
                        }),
                      u.createElement(z.D, {
                        chatView: this.props.chatView,
                        isActive: this.props.isActive,
                        speakerLabelWidth: this.state.speakerLabelWidth,
                        blockInteraction: o,
                      }),
                    ),
                    !i &&
                      !this.context?.IN_GAMEPADUI &&
                      u.createElement(me, {
                        chatView: this.props.chatView,
                        additionalClasses: void 0,
                      }),
                    this.context?.IN_GAMEPADUI &&
                      u.createElement(
                        P.Z,
                        {
                          className: "RightSideButtonContainer",
                          "flow-children": "column",
                        },
                        u.createElement(se, {
                          chatView: this.props.chatView,
                          bSteamDeck: !0,
                        }),
                        !e.chat_partner.is_friend &&
                          u.createElement(Y, { friend: e.chat_partner }),
                        u.createElement(me, {
                          chatView: this.props.chatView,
                          additionalClasses: void 0,
                        }),
                      ),
                    u.createElement("div", { className: "dropTargetBox" }),
                  ),
                  v,
                ),
              ),
              I =
                "chatStack " +
                (_ ? "displayRow" : "displayColumn") +
                " GroupChatVisible",
              w = {};
            return (
              n &&
                ((w.onSecondaryButton = () => e.ToggleVoiceChat()),
                (w.onSecondaryActionDescription = (0, G.we)(
                  "#Friend_Menu_StopVoiceChat",
                ))),
              u.createElement(
                d.D,
                {
                  fnCanTakeFocus: () => this.props.isActive,
                  "data-activechat": this.props.isActive,
                  style: C,
                  className: f,
                  ...this.GetTitleBarDragDropProps(),
                  ...w,
                },
                u.createElement("div", { className: "chatHeader" }),
                this.props.isActive &&
                  u.createElement(J, {
                    chatView: this.props.chatView,
                    onNameWidthChanged: this.OnNameWidthChanged,
                  }),
                u.createElement(
                  U.A,
                  null,
                  (n || t) &&
                    !this.context?.IN_GAMEPADUI &&
                    u.createElement(
                      h.M,
                      {
                        key: "OneOnOneVoiceHeader",
                        classNames: "OneOnOneVoice-anim",
                        timeout: 300,
                      },
                      (e) =>
                        u.createElement(
                          "div",
                          { ref: e },
                          u.createElement(se, {
                            chatView: this.props.chatView,
                          }),
                        ),
                    ),
                ),
                u.createElement(
                  "div",
                  { className: "ChatRoomGroupDialog_contents" },
                  u.createElement(
                    "div",
                    {
                      className: "ChatRoomGroup_MainAndChatEntry displayColumn",
                      ref: this.SetMainContentRef,
                    },
                    u.createElement(
                      "div",
                      {
                        className:
                          "ChatRoomGroup_Main_ContentAndMembers displayRow",
                      },
                      u.createElement(
                        "div",
                        {
                          className: `ChatRoomGroup_Main_Content ${_ ? "Vertical" : "Horizontal"} ${g ? "chatHidden" : ""}`,
                        },
                        p,
                        (!this.m_bChatHidden || !i) &&
                          u.createElement(
                            "div",
                            { className: S },
                            this.context?.IN_GAMEPADUI &&
                              u.createElement(V.H, null),
                            i && this.RenderInnerChatTabs(),
                            u.createElement("div", { className: I }, b),
                          ),
                      ),
                    ),
                  ),
                ),
              )
            );
          }
        };
        function Y(e) {
          let { friend: t } = e;
          const n = u.useCallback(
            (e) => {
              let n = (0, L.uX)(e);
              c.xm.FriendStore.SendFriendInvite(t).then((e) => {
                let { eResult: i, eFriendRelationship: o } = e;
                4 == o
                  ? (0, v.Ic)(
                      n,
                      (0, G.we)("#Friend_Menu_AddToFriendsList"),
                      (0, G.we)("#Friend_InviteSent"),
                    )
                  : 3 == o
                    ? (0, v.Ic)(
                        n,
                        (0, G.we)("#Friend_Menu_AddToFriendsList"),
                        (0, G.we)("#Friend_MutualInviteSent", t.display_name),
                      )
                    : (0, N.Jw)(n, i, o, t.display_name);
              });
            },
            [t],
          );
          return u.createElement(
            P.Z,
            {
              focusable: !0,
              className: "AddFriendButton",
              onActivate: n,
              onOKActionDescription: (0, G.we)("#Friend_Menu_AddToFriendsList"),
            },
            u.createElement(M.sdo, null),
          );
        }
        (0, i.Cg)([F.oI], X.prototype, "OnDragEnter", null),
          (0, i.Cg)([F.oI], X.prototype, "OnDragLeave", null),
          (0, i.Cg)([F.oI], X.prototype, "OnDragOver", null),
          (0, i.Cg)([F.oI], X.prototype, "OnDrop", null),
          (0, i.Cg)([F.oI], X.prototype, "OnDropComplete", null),
          (0, i.Cg)([F.oI], X.prototype, "OnNameWidthChanged", null),
          (0, i.Cg)(
            [F.oI],
            X.prototype,
            "ShouldShowVerticalBroadcastChat",
            null,
          ),
          (0, i.Cg)([F.oI], X.prototype, "OnLayoutChange", null),
          (0, i.Cg)([F.oI], X.prototype, "OnGrabberMouseDown", null),
          (0, i.Cg)([F.oI], X.prototype, "HandleMouseMove", null),
          (0, i.Cg)([F.oI], X.prototype, "UnregisterDragEvents", null),
          (0, i.Cg)([F.oI], X.prototype, "HideChat", null),
          (0, i.Cg)([F.oI], X.prototype, "ShowChat", null),
          (0, i.Cg)([F.oI], X.prototype, "SetChatHidden", null),
          (0, i.Cg)([F.oI], X.prototype, "ShowBroadcast", null),
          (0, i.Cg)([F.oI], X.prototype, "HideBroadcast", null),
          (0, i.Cg)([F.oI], X.prototype, "ToggleVerticalBroadcastChat", null),
          (0, i.Cg)(
            [F.oI],
            X.prototype,
            "ToggleTheaterModeBroadcastChat",
            null,
          ),
          (0, i.Cg)([F.oI], X.prototype, "SetVerticalBroadcastChat", null),
          (0, i.Cg)([F.oI], X.prototype, "SetLocalBroadcastId", null),
          (0, i.Cg)([F.oI], X.prototype, "SetMainContentRef", null),
          (X = (0, i.Cg)([I.PA], X));
        let J = class extends u.Component {
          SpeakerLabel(e) {
            e && this.props.onNameWidthChanged(e.clientWidth);
          }
          render() {
            let e = this.props.chatView.chat,
              t = c.xm.SettingsStore.FriendsSettings.nChatFontSize,
              n = "speakerLabelWidthContainer";
            return (
              t == j.ki.k_EChatFontSizeSmall
                ? (n += " smallChatFont")
                : t == j.ki.k_EChatFontSizeLarge && (n += " largeChatFont"),
              e.chat_partner.is_ready && e.self.is_ready
                ? u.createElement(
                    "div",
                    { className: n, ref: this.SpeakerLabel },
                    u.createElement(
                      "div",
                      { className: "nameWidthLabel" },
                      e.self.display_name + ":",
                    ),
                    u.createElement(
                      "div",
                      { className: "nameWidthLabel" },
                      e.chat_partner.display_name + ":",
                    ),
                  )
                : null
            );
          }
        };
        (0, i.Cg)([F.oI], J.prototype, "SpeakerLabel", null),
          (J = (0, i.Cg)([I.PA], J));
        const ee = u.forwardRef(function (
          {
            steamID: e,
            localSteamID: t,
            watchLocation: n,
            bWebRTC: i,
            style: o,
            onRequestClose: r,
            actions: a,
            onTheaterMode: s,
          },
          l,
        ) {
          const c = t || e;
          return u.createElement(
            "div",
            {
              ref: l,
              style: { display: "flex", flexDirection: "column", ...o },
            },
            u.createElement(
              "div",
              { className: "BroadcastSection" },
              u.createElement($, {
                key: c,
                steamIDBroadcast: c,
                watchLocation: n,
                bWebRTC: i,
                onRequestClose: r,
                actions: a,
                onTheaterMode: s,
                onOpenLinkInNewWindow: b.EP,
              }),
              u.createElement("div", { className: "videoContainerSizer" }),
            ),
            u.createElement(te, { steamID: e }),
          );
        });
        let te = class extends u.Component {
          OnClick(e, t) {
            let n = (0, K.Dn)(t, "friendbroadcast");
            (0, b.EP)(e, n), e.stopPropagation();
          }
          render() {
            let e = new H.b(this.props.steamID),
              t = c.xm.FriendStore.GetPlayer(e.GetAccountID()),
              n = t.persona.GetCurrentGameIconURL(),
              i = t.persona.GetCurrentGameName(),
              o = t.persona.m_unGamePlayedAppID;
            return i || n
              ? u.createElement(
                  "div",
                  { className: "FriendChatBroadcastDetails" },
                  u.createElement(
                    "div",
                    { className: "FriendChatBroadcastDetails_PlayingText" },
                    (0, G.we)("#broadcastDetails_Playing"),
                  ),
                  n &&
                    u.createElement("img", {
                      className: "FriendChatBroadcastDetails_Icon",
                      src: n,
                    }),
                  u.createElement(
                    "div",
                    {
                      className: "FriendChatBroadcastDetails_GameName",
                      onClick: (e) => this.OnClick(e, o),
                    },
                    i,
                  ),
                )
              : null;
          }
        };
        (0, i.Cg)([F.oI], te.prototype, "OnClick", null),
          (te = (0, i.Cg)([I.PA], te));
        var ne = n(99862),
          ie = n(33769);
        const oe = u.lazy(() =>
          Promise.all([n.e(9489), n.e(7653)]).then(n.bind(n, 281)),
        );
        let re = class extends u.Component {
          m_refChatTabs;
          m_keyEventListener = "keydown";
          macUserAgentStrings = /(MacIntel|Macintosh|Mac OS X)/;
          linuxUserAgentStrings = /(Linux|X11)/;
          constructor(e) {
            super(e),
              (-1 == navigator.userAgent.search(this.macUserAgentStrings) &&
                -1 == navigator.userAgent.search(this.linuxUserAgentStrings)) ||
                (this.m_keyEventListener = "keyup"),
              this.props.popup &&
                this.props.popup.addEventListener(
                  this.m_keyEventListener,
                  this.OnHTMLKeyEvent,
                );
          }
          componentWillUnmount() {
            this.props.popup &&
              this.props.popup.removeEventListener(
                this.m_keyEventListener,
                this.OnHTMLKeyEvent,
              );
          }
          OnCopy(e) {
            let t = this.props.popup || window;
            if (!t) return;
            let n = t.getSelection();
            if (0 == n.rangeCount) return;
            let i = (0, E.JO)(n.getRangeAt(0));
            void 0 !== i &&
              ("Win32" == t.navigator.platform &&
                (i = i.replace(/\n/g, "\r\n")),
              e.clipboardData.setData("text", i),
              e.preventDefault());
          }
          OnChatTabRef(e) {
            this.m_refChatTabs = e;
          }
          OnDragEnter(e) {
            if (
              ((0, R.w)(
                e &&
                  ("chattab" == e.type ||
                    "friend" == e.type ||
                    "chatroomgroup" == e.type ||
                    "html" == e.type),
                "Invalid data type passed to MultiChatDialog.OnDragEnter",
                e.type,
              ),
              "chattab" == e.type)
            ) {
              let t = this.props.tabs,
                n = e;
              (n.tabSet != t || t.tabCount > 1) &&
                (t.Focus(),
                this.m_refChatTabs &&
                  this.m_refChatTabs.GetDragTab() != n.tab &&
                  this.m_refChatTabs.SetDragTab(n.tab));
            }
            return !0;
          }
          OnDragLeave() {
            this.m_refChatTabs && this.m_refChatTabs.SetDragTab(void 0);
          }
          OnDragOver(e) {
            this.m_refChatTabs && this.m_refChatTabs.UpdateDragOffset(e);
          }
          OnDrop(e, t) {
            if (
              ((0, R.w)(
                e &&
                  ("chattab" == e.type ||
                    "friend" == e.type ||
                    "chatroomgroup" == e.type ||
                    "html" == e.type),
                "Invalid data type passed to MultiChatDialog.OnDrop",
                e.type,
              ),
              "chattab" == e.type)
            ) {
              let t = e,
                n = -1;
              this.m_refChatTabs && (n = this.m_refChatTabs.state.iDragIndex),
                m.ZM.DragDropManager.SetDropConsumed(),
                t.tabSet != this.props.tabs &&
                  (t.tabSet.RemoveTab(t.tab),
                  this.props.tabs.AddTab(t.tab),
                  m.ZM.DragDropManager.EndDrag()),
                -1 != n && this.props.tabs.MoveTabToIndex(t.tab, n),
                this.props.tabs.ActivateTab(t.tab),
                this.setState({ tabDrag: void 0 });
            } else if ("friend" == e.type) {
              m.ZM.DragDropManager.SetDropConsumed(),
                e.friend.OpenChatDialog((0, m.CO)(t));
            } else if ("chatroomgroup" == e.type) {
              m.ZM.DragDropManager.SetDropConsumed();
              let n = e;
              c.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                (0, m.CO)(t),
                n.group,
                !0,
              );
            } else
              "html" == e.type &&
                e.mapData.has("text/plain") &&
                this.props.tabs.activeTab
                  .GetChatView()
                  .AddPendingText(e.mapData.get("text/plain"));
          }
          OnHTMLKeyEvent(e) {
            if (o.TS.IN_CLIENT && e.ctrlKey && !e.altKey) {
              if ((!e.shiftKey && 9 == e.keyCode) || 34 == e.keyCode)
                this.props.tabs.ActivateNextTab();
              else if (9 == e.keyCode || 33 == e.keyCode)
                this.props.tabs.ActivatePreviousTab();
              else {
                if ("W" != e.key && "w" != e.key) return;
                this.props.tabs.RemoveTab(this.props.tabs.activeTab);
              }
              return e.preventDefault(), void e.stopPropagation();
            }
          }
          OnKeyDown(e) {
            let t = this.props.tabs.activeTab;
            if (!t) return;
            if (e.ctrlKey || e.altKey || e.metaKey || e.key.length > 1) return;
            let n = e.target,
              i = n && n.tagName ? n.tagName.toLowerCase() : "";
            "input" != i &&
              "select" != i &&
              "textarea" != i &&
              t.GetChatView().FocusTextInput();
          }
          render() {
            let e = this.props.tabs.activeTab;
            const t = this.m_refChatTabs?.GetDragTab();
            t && (e = t);
            let n = this.props.tabs.tabs.slice();
            t && -1 == n.indexOf(t) && n.push(t),
              n.sort((e, t) => (e.GetUniqueID() < t.GetUniqueID() ? 1 : -1));
            let i = n.map((t) => {
              let n = null,
                i = t instanceof a.$C && t,
                o = t.IsBroadcast();
              return (
                (n = i
                  ? u.createElement(B.vY, {
                      groupView: i,
                      isActive: t == e,
                      popup: this.props.popup,
                    })
                  : o
                    ? u.createElement(oe, {
                        broadcastView: t,
                        isActive: t == e,
                        popup: this.props.popup,
                      })
                    : u.createElement(X, {
                        chatView: t.GetChatView(),
                        isActive: t == e,
                      })),
                u.createElement(
                  A.tH,
                  { key: t.GetUniqueID() },
                  u.createElement(u.Suspense, { fallback: null }, n),
                )
              );
            });
            return u.createElement(
              d.D,
              {
                className: "multiChatDialog",
                rgAcceptedTypes: [
                  "chattab",
                  "friend",
                  "chatroomgroup",
                  "text/plain",
                ],
                fnDragEnter: this.OnDragEnter,
                fnDragOver: this.OnDragOver,
                fnDragLeave: this.OnDragLeave,
                fnDrop: this.OnDrop,
                onKeyDown: this.OnKeyDown,
                onCopy: this.OnCopy,
              },
              u.createElement(x.dH, {
                tabSet: this.props.tabs,
                popup: this.props.popup,
                activeTab: e,
                ref: this.OnChatTabRef,
                ResponsiveWindowState: this.props.ResponsiveWindowState,
                showOpenFriendsList: this.props.showOpenFriendsList,
              }),
              u.createElement(
                P.Z,
                {
                  className: "chatDialogs",
                  onMoveUp: () => this.m_refChatTabs.FocusActiveTab(),
                },
                0 == i.length &&
                  u.createElement(
                    "div",
                    { className: "emptyChatDialogs" },
                    (0, G.we)("#Chat_EmptyDialogsWindowMsg"),
                  ),
                i,
              ),
            );
          }
        };
        (0, i.Cg)([F.oI], re.prototype, "OnCopy", null),
          (0, i.Cg)([F.oI], re.prototype, "OnChatTabRef", null),
          (0, i.Cg)([F.oI], re.prototype, "OnDragEnter", null),
          (0, i.Cg)([F.oI], re.prototype, "OnDragLeave", null),
          (0, i.Cg)([F.oI], re.prototype, "OnDragOver", null),
          (0, i.Cg)([F.oI], re.prototype, "OnDrop", null),
          (0, i.Cg)([F.oI], re.prototype, "OnHTMLKeyEvent", null),
          (0, i.Cg)([F.oI], re.prototype, "OnKeyDown", null),
          (re = (0, i.Cg)([I.PA], re));
        let ae = class extends u.Component {
          m_refChatTabs;
          constructor(e) {
            super(e);
          }
          OnChatTabRef(e) {
            this.m_refChatTabs = e;
          }
          render() {
            let e = this.props.tabs.activeTab;
            const t = this.m_refChatTabs?.GetDragTab();
            t && (e = t);
            let n = this.props.tabs.tabs.slice();
            t && -1 == n.indexOf(t) && n.push(t),
              n.sort((e, t) => (e.GetUniqueID() < t.GetUniqueID() ? 1 : -1));
            let i = n.map((t) => {
              let n = null,
                i = t instanceof a.$C && t,
                o = t.IsBroadcast();
              return (
                (n = i
                  ? u.createElement(B.vY, {
                      groupView: i,
                      isActive: t == e,
                      popup: this.props.popup,
                      bSteamDeck: !0,
                    })
                  : o
                    ? u.createElement(oe, {
                        broadcastView: t,
                        isActive: t == e,
                        popup: this.props.popup,
                      })
                    : u.createElement(X, {
                        chatView: t.GetChatView(),
                        isActive: t == e,
                      })),
                u.createElement(
                  A.tH,
                  { key: t.GetUniqueID() },
                  u.createElement(u.Suspense, { fallback: null }, n),
                )
              );
            });
            return u.createElement(
              P.Z,
              { className: "multiChatDialog GamepadMode" },
              e &&
                e.IsFriendChat() &&
                u.createElement(x.sU, {
                  tab: e,
                  active: !0,
                  selectTab: () => {},
                }),
              u.createElement(
                P.Z,
                { className: "chatDialogs" },
                0 == i.length &&
                  u.createElement(
                    "div",
                    { className: "emptyChatDialogs" },
                    (0, G.we)("#Chat_EmptyDialogsWindowGamePadUIMsg"),
                  ),
                i,
              ),
            );
          }
        };
        (0, i.Cg)([F.oI], ae.prototype, "OnChatTabRef", null),
          (ae = (0, i.Cg)([I.PA], ae));
        let se = class extends u.Component {
          constructor(e) {
            super(e);
          }
          InitiateVoiceChat() {
            let e = this.props.chatView.chat.accountid_partner;
            c.xm.VoiceStore.InitiateFriendChat(e);
          }
          VoidOnClick() {}
          EndVoiceChat() {
            c.xm.VoiceStore.GetActiveOneOnOneVoiceChatAccountID() ==
              this.props.chatView.chat.accountid_partner &&
              c.xm.VoiceStore.OnUserEndVoiceChat();
          }
          OnCloseClick() {
            c.xm.VoiceStore.GetActiveOneOnOneVoiceChatAccountID() ==
            this.props.chatView.chat.accountid_partner
              ? c.xm.VoiceStore.OnUserEndVoiceChat()
              : c.xm.VoiceStore.OnRejectOneOnOneVoiceChatForPartner(
                  this.props.chatView.chat.accountid_partner,
                );
          }
          RejectVoiceChatRequest() {
            c.xm.VoiceStore.OnRejectOneOnOneVoiceChatForPartner(
              this.props.chatView.chat.accountid_partner,
            );
          }
          OnSettingsClick(e) {
            c.xm.IsDesktopUIActive()
              ? SteamClient.URL.ExecuteSteamURL("steam://open/settings/voice")
              : (0, ie.T)(
                  (0, m.CO)(e),
                  e.currentTarget.ownerDocument.defaultView,
                  "voice",
                );
          }
          render() {
            if (this.props.bSteamDeck) return this.renderSteamDeck();
            let e,
              t = c.xm.VoiceStore.BInitiatedOneOnOneChat(
                this.props.chatView.chat.accountid_partner,
              ),
              n = c.xm.CMInterface.steamid.GetAccountID(),
              i = this.props.chatView.chat.accountid_partner,
              o = c.xm.FriendStore.GetPlayer(n),
              r = c.xm.VoiceStore.BSelfHasAcceptedOrInitiatedOneOnOneChat(i),
              a = c.xm.VoiceStore.BSelfHadPreviouslyJoinedOneOnOneChat(i),
              s = this.props.chatView.chat.chat_partner,
              l = c.xm.VoiceStore.BPartnerHasAcceptedOrInitiatedOneOnOneChat(i),
              m =
                !r &&
                c.xm.VoiceStore.BPartnerHasRequestedAndIsInOneOnOneChat(
                  s.accountid,
                ),
              d = !1,
              p = !1,
              _ = !1;
            c.xm.VoiceStore.GetActiveOneOnOneVoiceChatAccountID() == i &&
              ((d =
                c.xm.VoiceStore.HasBeenAttemptingOverTwoSeconds() ||
                c.xm.VoiceStore.IsAttemptingReconnect()),
              (p =
                !c.xm.VoiceStore.BIsAccountFullyConnectedToActiveVoiceChat(n) ||
                c.xm.VoiceStore.IsAttemptingReconnect()),
              (_ =
                !c.xm.VoiceStore.BIsAccountFullyConnectedToActiveVoiceChat(i))),
              (e =
                t || r
                  ? u.createElement(
                      h.M,
                      { key: n, classNames: "friend-anim", timeout: 320 },
                      (e) =>
                        u.createElement(ne.bP, {
                          divRef: e,
                          friend: o,
                          key: n,
                          showVoiceLevel: !0,
                          context: { chat: this.props.chatView.chat },
                          listStatusIndicator: u.createElement("div", {
                            className: "connectionSpinner",
                          }),
                        }),
                    )
                  : u.createElement(
                      h.M,
                      { key: n, classNames: "friend-anim", timeout: 320 },
                      (e) =>
                        u.createElement(
                          "div",
                          {
                            ref: e,
                            className: "friend emptyFriend",
                            onClick: !r && this.InitiateVoiceChat,
                          },
                          u.createElement(
                            "div",
                            { className: "avatarHolder" },
                            u.createElement("img", {
                              className: "avatar",
                              src: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA",
                              draggable: !1,
                            }),
                          ),
                        ),
                    ));
            let g,
              C = [];
            t && C.push(e),
              l || m
                ? C.push(
                    u.createElement(
                      h.M,
                      { key: i, classNames: "friend-anim", timeout: 320 },
                      (e) =>
                        u.createElement(ne.bP, {
                          friend: s,
                          key: i,
                          showVoiceLevel: !0,
                          context: { chat: this.props.chatView.chat },
                          listStatusIndicator: u.createElement("div", {
                            className: "connectionSpinner",
                          }),
                        }),
                    ),
                  )
                : C.push(
                    u.createElement(
                      h.M,
                      { key: i, classNames: "friend-anim", timeout: 320 },
                      (e) =>
                        u.createElement(
                          "div",
                          {
                            className: "friend emptyFriend",
                            onClick: r
                              ? this.VoidOnClick
                              : this.InitiateVoiceChat,
                          },
                          u.createElement(
                            "div",
                            { className: "avatarHolder " },
                            u.createElement("img", {
                              className: "avatar",
                              src: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA",
                              draggable: !1,
                            }),
                          ),
                        ),
                    ),
                  ),
              t || C.push(e),
              (g =
                r && l
                  ? u.createElement(
                      w.fu,
                      {
                        className: "inviteButton inviteButtonJoinVoice",
                        onClick: this.EndVoiceChat,
                        onOKActionDescription: (0, G.we)("#Voice_StopTalking"),
                      },
                      (0, G.we)("#Voice_StopTalking"),
                    )
                  : r && !l
                    ? u.createElement(
                        w.fu,
                        {
                          className: "inviteButton inviteButtonJoinVoice",
                          onClick: this.EndVoiceChat,
                          onOKActionDescription: (0, G.we)("#Voice_EndVoice"),
                        },
                        (0, G.we)("#Voice_EndVoice"),
                      )
                    : u.createElement(
                        w.fu,
                        {
                          className: "inviteButton inviteButtonJoinVoice",
                          onClick: this.InitiateVoiceChat,
                          onOKActionDescription: (0, G.we)(
                            "#Voice_StartTalking",
                          ),
                        },
                        (0, G.we)("#Voice_StartTalking"),
                      ));
            let f = "",
              S = "OneOnOneVoiceRoomControls",
              v = !1;
            r && !l
              ? ((f = (0, G.we)(
                  "#Voice_WaitingForFriendToJoin",
                  s.display_name,
                )),
                (S += " WaitingForPartner"))
              : l && !r
                ? (a
                    ? (f = (0, G.we)(
                        "#Voice_ChannelRejoinAvailable",
                        s.display_name,
                      ))
                    : ((f = (0, G.we)(
                        "#Voice_ChannelAvailable",
                        s.display_name,
                      )),
                      (S += " WaitingForYouFirstTime")),
                  (S += " WaitingForYou"))
                : ((f = p
                    ? d
                      ? u.createElement(
                          "a",
                          {
                            title: (0, G.we)("#VoiceChatConnectingHelp"),
                            className: "connectionStatus",
                            target: "_blank",
                            href: "https://support.steampowered.com/kb_article.php?ref=2598-RTZB-6114",
                          },
                          (0, G.we)("#VoiceChatConnecting"),
                        )
                      : ""
                    : !p && _
                      ? u.createElement(
                          "a",
                          {
                            title: (0, G.we)("#VoiceChatConnectingHelp"),
                            className: "connectionStatus",
                            target: "_blank",
                            href: "https://support.steampowered.com/kb_article.php?ref=2598-RTZB-6114",
                          },
                          (0, G.we)(
                            "#VoiceChatParterConnecting",
                            s.display_name,
                          ),
                        )
                      : (0, G.we)("#Voice_ChannelActive", s.display_name)),
                  (S += " OneOnOneVoiceActive"),
                  (v = !0));
            let b = u.createElement(
                "div",
                { className: "OneOnOneVoiceStatusLabel" },
                f,
              ),
              I = r
                ? (0, G.we)("#Voice_EndVoice")
                : (0, G.we)("#Voice_Decline");
            return u.createElement(
              P.Z,
              { className: S, "flow-children": "row", focusable: !1 },
              u.createElement(
                "div",
                {
                  className: "VoiceToggleIconCtn friendSettingsButton no-drag",
                  onClick: this.OnSettingsClick,
                  title: (0, G.we)("#Tooltip_VoiceSettings"),
                },
                u.createElement(M.wB_, null),
              ),
              u.createElement(
                "div",
                { className: "OneOnOneVoiceMembers" },
                g,
                !v &&
                  !r &&
                  u.createElement(
                    w.fu,
                    {
                      className: "inviteButton inviteButtonDeclineVoice",
                      onClick: this.OnCloseClick,
                      onOKActionDescription: I,
                    },
                    I,
                  ),
                u.createElement(
                  P.Z,
                  { fnCanTakeFocus: () => !1, style: { display: "flex" } },
                  C,
                ),
                b,
              ),
              !v &&
                u.createElement(
                  P.Z,
                  {
                    className: "OneOnOneVoiceClose",
                    focusable: !0,
                    onActivate: this.OnCloseClick,
                    onOKActionDescription: I,
                    title: I,
                  },
                  u.createElement(M.sED, null),
                ),
            );
          }
          renderSteamDeck() {
            let e = this.props.chatView.chat.accountid_partner,
              t = c.xm.VoiceStore.BSelfHasAcceptedOrInitiatedOneOnOneChat(e),
              n = c.xm.VoiceStore.BSelfHadPreviouslyJoinedOneOnOneChat(e),
              i = c.xm.VoiceStore.BPartnerHasRequestedAndIsInOneOnOneChat(e),
              o = this.props.chatView.chat.BIsVoiceAllowed(),
              r = "oneOnOneVoiceChatButton",
              a = null,
              s = {
                onSecondaryButton: null,
                onSecondaryActionDescription: null,
              };
            if (t && i)
              (a = u.createElement(M.ETd, null)),
                (s.onActivate = this.EndVoiceChat),
                (s.onOKActionDescription = (0, G.we)("#Voice_StopTalking"));
            else if (t && !i)
              (a = u.createElement(M.ETd, null)),
                (s.onActivate = this.EndVoiceChat),
                (s.onOKActionDescription = (0, G.we)("#Voice_EndVoice"));
            else if (i && !t && n)
              (a = u.createElement(M.fpT, null)),
                (s.onActivate = this.InitiateVoiceChat),
                (s.onOKActionDescription = (0, G.we)("#Voice_StartTalking")),
                (s.onSecondaryButton = this.RejectVoiceChatRequest),
                (s.onSecondaryActionDescription = (0, G.we)(
                  "#Voice_DeclineVoiceChat",
                ));
            else if (i)
              (a = u.createElement(
                "div",
                { className: "WaitingForYouFirstTime" },
                u.createElement(M.BeN, null),
                u.createElement(
                  "div",
                  { className: "Sonar" },
                  u.createElement("div", { className: "SonarCircle" }),
                ),
              )),
                (s.onActivate = this.InitiateVoiceChat),
                (s.onOKActionDescription = (0, G.we)("#Voice_StartTalking")),
                (s.onSecondaryButton = this.RejectVoiceChatRequest),
                (s.onSecondaryActionDescription = (0, G.we)(
                  "#Voice_DeclineVoiceChat",
                ));
            else {
              if (!o) return null;
              (r += " NotInVoiceChat"),
                (a = u.createElement(M.mrd, null)),
                (s.onActivate = this.InitiateVoiceChat),
                (s.onOKActionDescription = (0, G.we)("#Voice_StartChat"));
            }
            return u.createElement(
              P.Z,
              { className: r, focusable: !0, ...s },
              a,
            );
          }
        };
        function le(e, t, n) {
          let i,
            o = !1,
            l = !0;
          if (e.invitedto instanceof s.$c) i = 300;
          else if (e.invitedto instanceof a.a$) {
            i = 340;
            let t = e.invitedto;
            t.BCanInvite() || t.BHasMember(e.invitee.accountid) || (l = !1);
          } else if (e.invitedto instanceof r.d) {
            (o = !0), (i = 340);
            let t = e.invitedto.GetGroup();
            t.BCanInvite() || t.BHasMember(e.invitee.accountid) || (l = !1);
          }
          l
            ? (0, T.HT)(
                u.createElement(ce, { ...e }),
                n,
                "InviteDialog",
                {
                  strTitle: o
                    ? (0, G.we)("#Chat_Actions_InviteFriend_VoiceChat")
                    : (0, G.we)("#Chat_Actions_DropGroupInvite_Title"),
                  popupWidth: 650,
                  popupHeight: i,
                },
                (0, m.h8)(n),
              )
            : (0, v.Ic)(
                n,
                (0, G.we)("#Chat_Actions_DropGroupInvite_Denied"),
                (0, G.we)("#Chat_Actions_DropGroupInvite_Denied_Description"),
              );
        }
        (0, i.Cg)([F.oI], se.prototype, "InitiateVoiceChat", null),
          (0, i.Cg)([F.oI], se.prototype, "VoidOnClick", null),
          (0, i.Cg)([F.oI], se.prototype, "EndVoiceChat", null),
          (0, i.Cg)([F.oI], se.prototype, "OnCloseClick", null),
          (0, i.Cg)([F.oI], se.prototype, "RejectVoiceChatRequest", null),
          (0, i.Cg)([F.oI], se.prototype, "OnSettingsClick", null),
          (se = (0, i.Cg)([I.PA], se));
        let ce = class extends u.Component {
          constructor(e) {
            super(e);
          }
          invitee = this.props.invitee;
          invitedToPlayer;
          invitedToGroup;
          invitedToChatRoom;
          formRef = u.createRef();
          AddMoreFriends(e) {
            let t = [],
              n = e.currentTarget.ownerDocument.defaultView;
            t.push(this.invitee.accountid),
              this.props.invitedto instanceof s.$c
                ? (0, S.UA)((0, m.CO)(e), n, this.props.chatview, !0, t)
                : this.props.invitedto instanceof a.a$
                  ? (0, f.jv)(
                      (0, m.CO)(e),
                      n,
                      this.props.invitedto,
                      void 0,
                      !0,
                      t,
                    )
                  : this.props.invitedto instanceof r.d &&
                    (0, f.E5)(
                      (0, m.CO)(e),
                      n,
                      this.props.invitedto.GetGroup(),
                      this.props.invitedto,
                      t,
                    ),
              this.props.closeModal();
          }
          Cancel() {
            this.props.closeModal();
          }
          componentDidMount() {
            let e = this.formRef.current;
            if (e) {
              let t = e.querySelector("button[type=submit]");
              t && t.focus();
            }
          }
          OnInviteClicked(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            if (this.props.invitedto instanceof s.$c) {
              this.invitedToPlayer = this.props.invitedto;
              let e = [];
              e.push(
                this.invitedToPlayer.persona.m_steamid.ConvertTo64BitString(),
              ),
                e.push(this.invitee.persona.m_steamid.ConvertTo64BitString()),
                (0, S.eJ)(t, this.props.chatview, e);
            } else if (this.props.invitedto instanceof a.a$)
              (this.invitedToGroup = this.props.invitedto),
                this.invitedToGroup.InviteFriend(this.invitee.accountid);
            else if (this.props.invitedto instanceof r.d) {
              [].push(this.invitee.accountid),
                (this.invitedToChatRoom = this.props.invitedto),
                this.invitedToChatRoom
                  .GetGroup()
                  .InviteFriend(this.invitee.accountid, this.invitedToChatRoom);
            }
            this.props.closeModal();
          }
          render() {
            let e,
              t,
              n,
              i = this.props.invitee,
              o = c.xm.FriendStore.self,
              l = !1;
            this.props.invitedto instanceof s.$c
              ? (e = this.props.invitedto)
              : this.props.invitedto instanceof a.a$
                ? (t = this.props.invitedto)
                : this.props.invitedto instanceof r.d &&
                  (n = this.props.invitedto);
            let m,
              d,
              h = "#Chat_Actions_DropGroupInvite_Confirm",
              p = !1;
            return (
              t
                ? (t.BIsUserGroupMember(i) &&
                    (h = "#Chat_Actions_DropGroupInvite_Member_Confirm"),
                  (l =
                    !!t.BIsClanChatRoom() &&
                    c.xm.FriendStore.ClanStore.GetClan(t.GetClanID()).BIsOGG()),
                  (m = t.name),
                  (d = u.createElement(C.I, { group: t, name: t.name })),
                  (p = t.BIsUserGroupMember(i)))
                : e
                  ? ((h = "#Chat_Actions_DropGroupInvite_1v2_Confirm"),
                    (m = e.display_name),
                    (d = u.createElement(
                      "div",
                      { className: "displayRow" },
                      u.createElement(
                        "div",
                        { className: "dropGroupInviteDialog_Friend" },
                        u.createElement("img", {
                          src: o.persona.avatar_url_medium,
                        }),
                      ),
                      u.createElement(
                        "div",
                        { className: "dropGroupInviteDialog_Friend" },
                        u.createElement("img", {
                          src: e.persona.avatar_url_medium,
                        }),
                      ),
                    )))
                  : n &&
                    ((h = "#Chat_Actions_DropVoiceInvite_Confirm"),
                    (m = n.name),
                    (d = u.createElement(
                      "div",
                      { className: "displayRow" },
                      u.createElement(M.mrd, null),
                    ))),
              u.createElement(
                T.x_,
                { onEscKeypress: this.Cancel },
                u.createElement(
                  D.U9,
                  {
                    classNameContent: "GenericConfirmDialog",
                    onSubmit: this.OnInviteClicked,
                    bCenterVertically: !0,
                    refElem: this.formRef,
                  },
                  u.createElement(
                    D.Y9,
                    null,
                    n
                      ? (0, G.we)("#Chat_Actions_InviteFriend_VoiceChat")
                      : (0, G.we)("#Chat_Actions_DropGroupInvite_Title"),
                  ),
                  u.createElement(
                    D.nB,
                    null,
                    u.createElement(
                      "div",
                      {
                        className:
                          "dropGroupInviteDialog displayColumn" +
                          (t || n ? " groupInviteHeight" : ""),
                      },
                      u.createElement(
                        "span",
                        { className: "dropGroupInviteDialog_Desc" },
                        (0, G.PP)(
                          h,
                          u.createElement(
                            "span",
                            { className: "highlight" },
                            i.display_name,
                          ),
                          u.createElement(
                            "span",
                            { className: "highlight" },
                            m,
                          ),
                          e &&
                            u.createElement(
                              "span",
                              { className: "highlight" },
                              (0, G.we)("#Chat_You"),
                            ),
                        ),
                      ),
                      u.createElement(
                        "div",
                        {
                          className:
                            "dropGroupInviteDialog_Graphic" +
                            (l ? " isOGGGroup" : ""),
                        },
                        u.createElement(
                          "div",
                          { className: "dropGroupInviteDialog_Friend" },
                          u.createElement("img", {
                            src: i.persona.avatar_url_medium,
                          }),
                        ),
                        u.createElement(
                          "div",
                          { className: "movingArrow" },
                          u.createElement(M.i3G, { angle: 90 }),
                        ),
                        d,
                        u.createElement(
                          "div",
                          {
                            className: "addMoreFriendsButton",
                            onClick: this.AddMoreFriends,
                          },
                          u.createElement(
                            "div",
                            null,
                            (0, G.we)("#Chat_Actions_AddMoreFriends"),
                          ),
                          u.createElement("div", { className: "ExpandArrow" }),
                        ),
                      ),
                    ),
                  ),
                  u.createElement(
                    D.wi,
                    null,
                    u.createElement(
                      D.dR,
                      null,
                      u.createElement(
                        D.jn,
                        { onClick: this.OnInviteClicked },
                        p
                          ? (0, G.we)("#Chat_SendLink")
                          : (0, G.we)("#Chat_Invite"),
                        " ",
                      ),
                      u.createElement(
                        D.$n,
                        { onClick: this.Cancel },
                        (0, G.we)("#Button_Cancel"),
                      ),
                    ),
                  ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([F.oI], ce.prototype, "AddMoreFriends", null),
          (0, i.Cg)([F.oI], ce.prototype, "Cancel", null),
          (0, i.Cg)([F.oI], ce.prototype, "OnInviteClicked", null),
          (ce = (0, i.Cg)([I.PA], ce));
        let me = class extends u.Component {
          AddFriendClick(e) {
            this.ContinueCreateChat((0, m.CO)(e), (0, L.uX)(e));
          }
          ContinueCreateChat(e, t) {
            (0, S.UA)(e, t, this.props.chatView, !0);
          }
          render() {
            this.props.chatView.chat.chat_partner;
            let e = "inviteAnotherFriendButton";
            return (
              this.props.additionalClasses &&
                (e += " " + this.props.additionalClasses),
              u.createElement(
                P.Z,
                {
                  title: (0, G.we)("#Chat_AddFriend_Hint"),
                  className: e,
                  onActivate: this.AddFriendClick,
                  onOKActionDescription: (0, G.we)(
                    "#Chat_CreateChatRoom_InviteFriendsToChat",
                  ),
                },
                u.createElement(M.MxO, null),
              )
            );
          }
        };
        (0, i.Cg)([F.oI], me.prototype, "AddFriendClick", null),
          (me = (0, i.Cg)([I.PA], me));
        const de = ({ onClick: e, edge: t }) =>
          u.createElement(
            "div",
            {
              className: (0, k.A)("BroadcastChatExpander", t),
              onClick: e,
              title: (0, G.we)("#Broadcast_View_ShowChat"),
            },
            u.createElement(M.K7s, { showChat: !0 }),
          );
        let ue = class extends u.Component {
          OnTextChannelCloseClick(e) {
            this.props.groupView.ClosePopoverChat();
          }
          OnChatHistoryRef(e) {
            e && e.Focus();
          }
          render() {
            let e = this.props.groupView.GetPopoverChatView();
            return e
              ? u.createElement(
                  h.M,
                  {
                    key: "quickChat",
                    classNames: "chatWindow-anim",
                    timeout: 320,
                  },
                  (t) =>
                    u.createElement(
                      "div",
                      { ref: t, className: "VoiceRoomChatHistory" },
                      u.createElement(
                        "div",
                        { className: "VoiceRoomChatWindow" },
                        u.createElement(
                          "div",
                          { className: "VoiceRoomChatTitle" },
                          u.createElement(
                            "div",
                            { className: "VoiceRoomTitleLabels" },
                            u.createElement(
                              "div",
                              { className: "VoiceChatTextChannelName" },
                              (0, G.we)("#Chat_Scratch_Pad"),
                            ),
                          ),
                          u.createElement(
                            "div",
                            {
                              className: "MinimizeTextChat",
                              onClick: this.OnTextChannelCloseClick,
                            },
                            u.createElement(M.sED, null),
                          ),
                        ),
                        u.createElement(
                          "div",
                          { className: "VoiceChatTextChannelDesc" },
                          (0, G.we)("#Chat_Scratch_Pad_Desc"),
                        ),
                        u.createElement(z.D, {
                          chatView: e,
                          isActive: !0,
                          ref: this.OnChatHistoryRef,
                        }),
                      ),
                    ),
                )
              : null;
          }
        };
        (0, i.Cg)([F.oI], ue.prototype, "OnTextChannelCloseClick", null),
          (0, i.Cg)([F.oI], ue.prototype, "OnChatHistoryRef", null),
          (ue = (0, i.Cg)([I.PA], ue));
        let he = class extends u.Component {
          constructor(e) {
            super(e);
          }
          OnBlock() {
            c.xm.FriendStore.BlockPlayer(this.props.friend, !1),
              c.xm.UIStore.CloseTabByID(this.props.chatView.GetUniqueID());
          }
          OnAllow() {
            c.xm.FriendStore.SetApprovedNonFriendMessages(
              this.props.friend.accountid,
            );
          }
          render() {
            return u.createElement(
              "div",
              { className: "NotAFriendMessage" },
              u.createElement(
                "div",
                { className: "NotAFriendBody" },
                u.createElement(
                  "div",
                  { className: "Exclamation" },
                  u.createElement(M.eTF, null),
                ),
                u.createElement(
                  "div",
                  { className: "Explanation" },
                  u.createElement(
                    "div",
                    { className: "ExplanationHeader" },
                    (0, G.we)("#DirectMessageFromNonFriend"),
                  ),
                  u.createElement(
                    "div",
                    { className: "ExplanationBody" },
                    (0, G.we)("#DirectMessageFromNonFriendNote"),
                  ),
                  u.createElement(
                    b.uU,
                    {
                      href: "https://support.steampowered.com/kb_article.php?ref=1266-OAFV-8478",
                      className: "ExplanationMoreInfo",
                    },
                    (0, G.we)("#Generic_More_Info"),
                  ),
                ),
                u.createElement(
                  "div",
                  { className: "Buttons" },
                  u.createElement(
                    "button",
                    {
                      className: "NotAFriendActionButton",
                      onClick: this.OnBlock,
                    },
                    (0, G.we)("#NonFriendAction_Block"),
                  ),
                  u.createElement(
                    "button",
                    {
                      className: "NotAFriendActionButton",
                      onClick: this.OnAllow,
                    },
                    (0, G.we)("#NonFriendAction_Allow"),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([F.oI], he.prototype, "OnBlock", null),
          (0, i.Cg)([F.oI], he.prototype, "OnAllow", null),
          (he = (0, i.Cg)([I.PA], he));
        let pe = class extends u.Component {
          render() {
            const { chatView: e, friend: t, ...n } = this.props,
              i = e.chat instanceof r.d;
            return u.createElement(g, {
              message: i
                ? (0, G.we)("#Chat_DropToInviteGroup")
                : (0, G.we)("#Chat_DropToInvite"),
              name: t.display_name,
              renderImage: () =>
                u.createElement(y.i8, { size: "Large", persona: t.persona }),
              ...n,
            });
          }
        };
        pe = (0, i.Cg)([I.PA], pe);
        let _e = class extends u.Component {
          render() {
            const { chatView: e, group: t, clan: n, ...i } = this.props;
            if (!t && !n)
              return (
                (0, R.w)(
                  !1,
                  "Either a group or clan must be passed to DropGroupToInviteFriendMessage.",
                ),
                null
              );
            const o = (t || n).name;
            return u.createElement(g, {
              message: (0, G.we)("#Chat_DropGroupToInviteFriend"),
              name: o,
              renderImage: () =>
                n
                  ? u.createElement(C._O, { clan: n, size: "large" })
                  : u.createElement(C.I, { group: t, large: !0 }),
              ...i,
            });
          }
        };
        _e = (0, i.Cg)([I.PA], _e);
        let ge = class extends u.Component {
          render() {
            let e = !1;
            if (!(this.props.chatView.chat instanceof l.s)) return null;
            let t = this.props.chatView.chat;
            return (
              t.is_friend_typing && (e = !0),
              u.createElement(
                "div",
                {
                  className:
                    "FriendChatTypingNotification" +
                    (e ? " FriendIsTyping" : ""),
                },
                (0, G.we)("#Friend_Chat_Typing", t.chat_partner.display_name),
              )
            );
          }
        };
        ge = (0, i.Cg)([I.PA], ge);
      },
      70552: (e, t, n) => {
        "use strict";
        n.d(t, { o: () => te });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(78116),
          s = n(60853),
          l = n(51802),
          c = n(93715),
          m = n(82789),
          d = n(58743),
          u = n(78919),
          h = n(63696),
          p = n(41230),
          _ = n(82924),
          g = n(81734),
          C = n(89021),
          f = n(74002),
          S = n(69074);
        let v = class extends h.Component {
          render() {
            const { fileUploadManager: e } = this.props;
            let t = e.file_upload_props.eUploadState;
            return 1 == t
              ? h.createElement(b, { fileUploadManager: e })
              : 3 == t || 5 == t || 4 == t
                ? h.createElement(w, { fileUploadManager: e })
                : 0 != t
                  ? h.createElement(I, { fileUploadManager: e })
                  : null;
          }
        };
        function b(e) {
          const { fileUploadManager: t } = e,
            [n, i] = (0, h.useState)(!1),
            o = (0, h.useRef)();
          (0, h.useEffect)(() => o.current?.focus(), []);
          const r = () => t.Reset();
          let a,
            s = t.file;
          s
            ? -1 != s.type.indexOf("image")
              ? (a = h.createElement("img", {
                  className: "chatFileUploadPreview",
                  src: t.file_upload_data_url,
                }))
              : -1 != s.type.indexOf("video") &&
                (a = h.createElement(g.CeX, null))
            : t.file_upload_props.exportFn &&
              (a = h.createElement(g.CeX, null));
          const l = t.file_upload_props.displayFileName,
            c = () => !0;
          return h.createElement(
            S.Z,
            {
              className: "chatFileUploadPreviewContainer chatUploadContainer",
              autoFocus: !0,
              retainFocus: !0,
              preferredFocus: !0,
              onMoveLeft: c,
              onMoveRight: c,
              onMoveUp: c,
              onMoveDown: c,
              onCancel: r,
            },
            a,
            l &&
              h.createElement(
                "div",
                { className: "chatFileUploadFileName" },
                "'",
                l,
                "'",
              ),
            h.createElement(
              S.Z,
              { className: "chatFileUploadCancel", onActivate: r },
              h.createElement(g.sED, null),
            ),
            h.createElement(
              C.jn,
              {
                ref: o,
                autoFocus: !0,
                className: "chatFileUploadBtn",
                onClick: async () => {
                  await t.BeginFileUpload({ bSpoiler: n }), t.Reset();
                },
              },
              (0, f.we)("#Chat_Upload"),
            ),
            h.createElement(C.Yh, {
              className: "spoilerCheckBox",
              label: (0, f.we)("#ChatEntry_TagAsSpoiler"),
              checked: n,
              onChange: () => i((e) => !e),
            }),
          );
        }
        v = (0, i.Cg)([p.PA], v);
        let I = class extends h.Component {
          render() {
            let e = this.props.fileUploadManager.file_upload_props;
            const t = e.displayFileName ?? "...";
            let n;
            n =
              7 == e.eUploadState
                ? (0, f.we)("#Chat_Exporting", t)
                : e.file
                  ? (0, f.we)("#Chat_Uploading", t)
                  : "";
            let i = { width: e.uploadProgress + "%" };
            return h.createElement(
              "div",
              {
                className:
                  "chatFileUploadProgressContainer chatUploadContainer",
              },
              h.createElement(
                "div",
                { className: "chatFileUploadProgressName" },
                n,
              ),
              h.createElement(
                "div",
                {
                  className:
                    "chatFileUploadProgressBarContainer DialogProgressBar_ProgressBarContainer",
                },
                h.createElement("div", {
                  className: "DialogProgressBar_Value",
                  style: i,
                }),
              ),
            );
          }
        };
        I = (0, i.Cg)([p.PA], I);
        let w = class extends h.Component {
          ClearErrorState() {
            this.props.fileUploadManager.ClearFileUploadError();
          }
          async OnRetryClick() {
            await this.props.fileUploadManager.RetryFileUpload(),
              this.props.fileUploadManager.Reset();
          }
          render() {
            let e,
              t = this.props.fileUploadManager.file_upload_props,
              n = t.displayFileName
                ? (0, f.we)("#Chat_Uploading", t.displayFileName)
                : "",
              i =
                t.strErrorDescription ||
                (0, f.we)("#Chat_Settings_Error_Unknown");
            3 == t.eUploadState &&
              (e = h.createElement(
                C.jn,
                { onClick: this.OnRetryClick },
                (0, f.we)("#Chat_Upload_ErrorAction_Retry"),
              ));
            const o = () => !0;
            return h.createElement(
              S.Z,
              {
                className:
                  "chatFileUploadProgressContainer chatUploadContainer",
                autoFocus: !0,
                retainFocus: !0,
                preferredFocus: !0,
                onMoveLeft: o,
                onMoveRight: o,
                onMoveUp: o,
                onMoveDown: o,
                onCancel: this.ClearErrorState,
              },
              h.createElement(
                "div",
                { className: "chatFileUploadProgressName" },
                n,
              ),
              h.createElement(
                "div",
                { className: "chatFileUploadErrorDescription" },
                i,
              ),
              h.createElement(
                "div",
                { className: "chatFileUploadActions" },
                h.createElement(
                  C.dR,
                  { className: "DialogLayout_NoMinWidth" },
                  e,
                  h.createElement(
                    C.$n,
                    { autoFocus: !0, onClick: this.ClearErrorState },
                    (0, f.we)("#Chat_Upload_ErrorAction_Close"),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([_.oI], w.prototype, "ClearErrorState", null),
          (0, i.Cg)([_.oI], w.prototype, "OnRetryClick", null),
          (w = (0, i.Cg)([p.PA], w));
        var y = n(58825),
          E = n(50669),
          D = n(94762),
          A = n(23812),
          T = n(31594),
          M = n(80611),
          R = n.n(M),
          k = n(27816),
          L = n(66378),
          G = n(61632),
          F = n(89193),
          P = n(13991),
          B = n.n(P),
          x = n(77171);
        class O extends h.Component {
          m_strLastSearch;
          m_rgCurrentMatches = [];
          m_mapMatchByKey = new Map();
          containerRef = h.createRef();
          constructor(e) {
            super(e),
              (this.m_hMobxSearchDisposer = (0, F.fm)(async () => {
                await this.UpdateSearchResults(this.props.strSearch),
                  this.forceUpdate();
              })),
              (this.state = { selectedIndex: void 0 });
          }
          OnKeyDown(e) {
            this.BHandleKeyPress(e.keyCode) && e.preventDefault();
          }
          BHandleKeyPress(e) {
            switch (e) {
              case 38:
                this.SetSelectedIndexDelta(-1);
                break;
              case 40:
                this.SetSelectedIndexDelta(1);
                break;
              case 36:
                this.SetSelectedIndex(0);
                break;
              case 33:
                this.SetSelectedIndexDelta(-this.GetPageSize());
                break;
              case 35:
                this.SetSelectedIndex(-1);
                break;
              case 34:
                this.SetSelectedIndexDelta(this.GetPageSize());
                break;
              case 13:
              case 9:
                if (void 0 === this.state.selectedIndex)
                  return (
                    this.props.onSuggestionSelected(this.props.strSearch), !1
                  );
                this.ChooseSuggestion(
                  this.m_rgCurrentMatches[this.state.selectedIndex],
                );
                break;
              case 27:
                this.props.onSuggestionSelected(this.props.strSearch);
                break;
              default:
                return !1;
            }
            return !0;
          }
          GetPageSize() {
            let e = this.containerRef.current,
              t = e && e.firstElementChild,
              n = this.m_rgCurrentMatches.length;
            if (
              (n > this.getMaxMatches() && (n = this.getMaxMatches()), t && n)
            ) {
              let e = t.scrollHeight / n,
                i = t.clientHeight / e;
              return Math.max(1, Math.floor(i));
            }
            return 5;
          }
          ChooseSuggestion(e) {
            this.props.onSuggestionSelected(
              this.props.strSearch,
              e ? this.getSelection(e) : void 0,
            );
          }
          SetSelectedIndexDelta(e) {
            void 0 !== this.state.selectedIndex
              ? this.SetSelectedIndex(this.state.selectedIndex + e)
              : this.SetSelectedIndex(1 === e ? 0 : e);
          }
          SetSelectedIndex(e) {
            if (!this.m_rgCurrentMatches.length) return;
            let t = this.m_rgCurrentMatches.length;
            t > this.getMaxMatches() && (t = this.getMaxMatches()),
              (e %= t) < 0 && (e += t),
              this.setState({ selectedIndex: e });
          }
          FindKeyIndex(e) {
            if (!this.m_mapMatchByKey.size && this.m_rgCurrentMatches.length)
              for (let e = 0; e < this.m_rgCurrentMatches.length; e++)
                this.m_mapMatchByKey.set(
                  this.getKey(this.m_rgCurrentMatches[e]),
                  e,
                );
            return this.m_mapMatchByKey.get(e);
          }
          OnClickSuggestion(e) {
            let t = this.FindKeyIndex(e);
            void 0 !== t && this.ChooseSuggestion(this.m_rgCurrentMatches[t]);
          }
          OnMouseOverSuggestion(e) {
            let t = this.FindKeyIndex(e);
            void 0 !== t && this.SetSelectedIndex(t);
          }
          BindSelectedElement(e) {
            if (!e) return;
            let t = this.containerRef.current,
              n = e.containerRef.current,
              i = t && t.firstElementChild;
            n &&
              i &&
              (i.scrollTop + i.clientHeight < n.offsetTop ||
                n.offsetTop < i.scrollTop) &&
              n.scrollIntoView();
          }
          async UpdateSearchResults(e) {
            (this.m_rgCurrentMatches = await this.performSearch(e)),
              (this.m_strLastSearch = e),
              this.m_mapMatchByKey.clear(),
              this.m_rgCurrentMatches.length
                ? this.state && void 0 !== this.state.selectedIndex
                  ? this.state.selectedIndex >=
                      this.m_rgCurrentMatches.length &&
                    this.setState({ selectedIndex: 0 })
                  : (void 0 ===
                      this.props.nMinimumSearchLengthBeforeAutoSelection ||
                      e.length >=
                        this.props.nMinimumSearchLengthBeforeAutoSelection) &&
                    this.setState({ selectedIndex: 0 })
                : this.state &&
                  void 0 !== this.state.selectedIndex &&
                  this.setState({ selectedIndex: void 0 });
          }
          m_hMobxSearchDisposer;
          componentWillUnmount() {
            this.m_hMobxSearchDisposer &&
              (this.m_hMobxSearchDisposer(),
              (this.m_hMobxSearchDisposer = void 0));
          }
          async componentDidUpdate(e) {
            this.m_strLastSearch != this.props.strSearch &&
              (await this.UpdateSearchResults(this.props.strSearch),
              this.forceUpdate());
          }
          render() {
            let e = [];
            if (this.m_rgCurrentMatches.length) {
              let t = this.getMaxMatches();
              for (
                let n = 0;
                n < Math.min(t, this.m_rgCurrentMatches.length);
                n++
              ) {
                let t = this.m_rgCurrentMatches[n],
                  i = this.getKey(t),
                  o = n === this.state.selectedIndex;
                e.push(
                  h.createElement(
                    N,
                    {
                      key: i,
                      matchKey: i,
                      fnOnClick: this.OnClickSuggestion,
                      fnOnMouseOver: this.OnMouseOverSuggestion,
                      bIsSelected: o,
                      ref: o ? this.BindSelectedElement : void 0,
                    },
                    this.renderMatch(t),
                  ),
                );
              }
              this.m_rgCurrentMatches.length > t &&
                e.push(
                  this.renderTooManyMatchesMessage(
                    this.m_rgCurrentMatches.length - t,
                  ),
                );
            } else {
              let t = this.renderNoMatchMessage();
              if (!t) return null;
              e.push(t);
            }
            return h.createElement(
              "div",
              { className: B().mentionDialogPosition, ref: this.containerRef },
              h.createElement(
                "div",
                {
                  className: B().mentionDialog,
                  tabIndex: 0,
                  onKeyDown: this.OnKeyDown,
                },
                this.renderHeader(),
                e,
              ),
            );
          }
        }
        (0, i.Cg)([_.oI], O.prototype, "OnKeyDown", null),
          (0, i.Cg)([_.oI], O.prototype, "OnClickSuggestion", null),
          (0, i.Cg)([_.oI], O.prototype, "OnMouseOverSuggestion", null),
          (0, i.Cg)([_.oI], O.prototype, "BindSelectedElement", null);
        class N extends h.PureComponent {
          containerRef = h.createRef();
          OnMouseOver(e) {
            this.props.fnOnMouseOver(this.props.matchKey);
          }
          OnClick(e) {
            this.props.fnOnClick(this.props.matchKey);
          }
          render() {
            return h.createElement(
              "div",
              {
                className: (0, x.A)(
                  B().suggestOption,
                  B().mentionSearchOption,
                  this.props.bIsSelected ? B().selected : "",
                ),
                onMouseEnter: this.OnMouseOver,
                onClick: this.OnClick,
                ref: this.containerRef,
              },
              this.props.children,
            );
          }
        }
        (0, i.Cg)([_.oI], N.prototype, "OnMouseOver", null),
          (0, i.Cg)([_.oI], N.prototype, "OnClick", null);
        const V = O;
        var U = n(93611),
          H = n.n(U);
        const W = class extends V {
          performSearch(e) {
            return this.props.emoticonStore.SearchEmoticons(e, 10, !1);
          }
          getSelection(e) {
            return e.name;
          }
          getKey(e) {
            return e.name;
          }
          renderMatch(e) {
            return h.createElement(
              "div",
              {
                className: (0, x.A)(
                  H().EmoticonSuggestion,
                  e.recent ? "Recent" : "",
                ),
              },
              h.createElement(
                "div",
                { className: H().Emoticon },
                h.createElement(G.nl, {
                  emoticon: e.name,
                  emoticonHoverStore: this.props.emoticonHoverStore,
                }),
                e.new && h.createElement(G.iD, null),
              ),
              ":",
              e.name,
              ":",
            );
          }
          renderNoMatchMessage() {
            return null;
          }
          renderTooManyMatchesMessage(e) {
            return null;
          }
          renderHeader() {
            return null;
          }
          getMaxMatches() {
            return Number.MAX_VALUE;
          }
        };
        var z = n(50622),
          j = n(63689),
          q = n(33769),
          K = n(99862),
          Z = n(14355),
          Q = n(41943),
          $ = n(17070),
          X = n(59889),
          Y = n(7153);
        const J = h.lazy(() =>
          Promise.all([n.e(9489), n.e(5430), n.e(7462)]).then(n.bind(n, 68365)),
        );
        function ee(e) {
          return h.createElement(
            h.Suspense,
            { fallback: null },
            h.createElement(J, { ...e }),
          );
        }
        let te = class extends h.Component {
          static contextType = $.QO;
          m_navRef = (0, A.b$)();
          m_refTextInput = h.createRef();
          m_refFileInput = h.createRef();
          m_refContainer = h.createRef();
          m_MentionDialog;
          m_textFocusCallback = null;
          m_textUpdatedCallback = null;
          m_nChatEntryInitialHeight = void 0;
          m_iSizeChatEntryInterval = void 0;
          m_iMentionSearchStartOffset;
          m_iMentionSearchCancelledOffset;
          state = {
            messageInput: "",
            submitEnabled: !1,
            mentionSearch: void 0,
            activeSuggestSearchType: void 0,
          };
          BindMentionDialog(e) {
            this.m_MentionDialog = e;
          }
          SetMessageInput(e, t) {
            this.setState(
              { messageInput: e, submitEnabled: e.trim().length > 0 },
              t,
            ),
              (this.props.chatView.text_entry = e),
              e && e.length && this.props.chatView.chat.OnTyping();
          }
          OnSubmit(e) {
            if (
              (e && e.preventDefault(),
              this.props.chatView &&
                this.props.chatView.file_upload_manager.file &&
                this.props.chatView.UploadFile(),
              this.props.chatView && this.props.chatView.clip_to_upload)
            ) {
              const { fnUploadClip: e } = (0, X.Sm)();
              e(this.props.chatView.clip_to_upload.clip_id, "", "", 3).then(
                (e) => {
                  1 == e.eResult &&
                    e.strURL &&
                    this.props.chatView.SendChatMessage(e.strURL),
                    this.props.chatView.SetClipToUpload(void 0);
                },
              );
            }
            this.state.messageInput.trim().length &&
              this.props.chatView &&
              (this.props.chatView.SendChatMessage(this.state.messageInput),
              (this.m_iMentionSearchCancelledOffset = void 0),
              this.ClearMentionSearchState(),
              this.setState({ submitEnabled: !1 }),
              this.SetMessageInput(""),
              (this.props.chatView.is_scrolled_to_bottom = !0),
              this.FocusTextInput()),
              this.SizeChatEntry(this.m_refTextInput.current, !0);
          }
          OnTextAreaChange(e) {
            e.persist(),
              this.m_iSizeChatEntryInterval ||
                (this.m_iSizeChatEntryInterval = window.setTimeout(() => {
                  (this.m_iSizeChatEntryInterval = 0),
                    this.SizeChatEntry(e.currentTarget);
                }, 1e3)),
              this.SetMessageInput(e.target.value);
          }
          SizeChatEntry(e, t) {
            if (!e) return;
            let n = d.xm.SettingsStore.FriendsSettings.bCompactFriendsList
              ? 12
              : 0;
            e.style.height = "inherit";
            let i = window.getComputedStyle(e),
              o =
                parseInt(i.getPropertyValue("border-top-width"), 10) +
                parseInt(i.getPropertyValue("padding-top"), 10) +
                parseInt(i.getPropertyValue("padding-bottom"), 10) +
                parseInt(i.getPropertyValue("border-bottom-width"), 10);
            null == this.m_nChatEntryInitialHeight &&
              (this.m_nChatEntryInitialHeight = e.clientHeight - o - n + "px");
            let r = e.scrollHeight - o - n;
            t
              ? ((e.style.height = this.m_nChatEntryInitialHeight),
                (this.m_nChatEntryInitialHeight = void 0))
              : (e.style.height = Math.min(120, r) + "px");
          }
          OnFocus(e) {
            this.UpdateMentionSearchState();
          }
          OnBlur(e) {
            if (
              !e.relatedTarget ||
              !z.id(this.m_refContainer.current, e.relatedTarget)
            ) {
              if ((0, k.Y8)()) return;
              (this.m_iMentionSearchCancelledOffset = void 0),
                this.ClearMentionSearchState();
            }
          }
          OnKeyDown(e) {
            if (
              this.state.activeSuggestSearchType &&
              this.m_MentionDialog &&
              !e.shiftKey &&
              !e.ctrlKey &&
              this.m_MentionDialog.BHandleKeyPress(e.keyCode)
            )
              return e.preventDefault(), void e.stopPropagation();
            8 == e.keyCode || 46 == e.keyCode
              ? (this.m_iMentionSearchCancelledOffset = void 0)
              : 13 != e.keyCode || e.shiftKey || e.ctrlKey
                ? 13 == e.keyCode &&
                  e.ctrlKey &&
                  (e.preventDefault(),
                  e.stopPropagation(),
                  this.InsertAtCursor("\n"))
                : (e.preventDefault(), e.stopPropagation(), this.OnSubmit());
          }
          OnPaste(e) {
            let t = z.gr(e);
            t &&
              (this.props.chatView.SetFileToUpload(t),
              e.preventDefault(),
              e.stopPropagation());
          }
          OnFileInputChange(e) {
            let t = e.currentTarget;
            t.files.length &&
              (this.props.chatView.SetFileToUpload(t.files[0]), (t.value = ""));
          }
          OnEmbedClick(e) {
            (0, D.lX)(
              h.createElement(ae, {
                chatView: this.props.chatView,
                refFileInput: this.m_refFileInput.current,
                fnInsertText: this.InsertAtCursor.bind(this),
              }),
              e.currentTarget,
              { bOverlapHorizontal: !0, bPreferPopLeft: !0, bPreferPopTop: !0 },
            );
          }
          OnEmoticonSelected(e, t = !1) {
            t || this.FocusTextInput(), this.InsertAtCursor(`:${e}:`);
          }
          InsertAtCursor(e) {
            let t = this.m_refTextInput.current,
              n = t.value,
              i = n.substr(0, t.selectionStart) + e + n.substr(t.selectionEnd),
              o = t.selectionStart + e.length;
            this.SetMessageInput(i, () => {
              t.selectionStart = t.selectionEnd = o;
            });
          }
          OnKeyPress(e) {
            this.UpdateMentionSearchState();
          }
          OnKeyboardFullyVisible() {
            this.props.chatView.OnScrollBottomRequest();
          }
          OnClick(e) {
            this.UpdateMentionSearchState();
          }
          OnContextMenu(e) {
            a.TS.IN_CLIENT || e.stopPropagation();
          }
          ClearMentionSearchState() {
            (this.m_iMentionSearchStartOffset = void 0),
              this.state.activeSuggestSearchType &&
                this.setState({
                  activeSuggestSearchType: void 0,
                  mentionSearch: void 0,
                });
          }
          FindMatchOpener(e, t, n) {
            for (let i = n - 1; i >= 0; i--) {
              if (t[i] == e) return i;
              if (" " == t[i]) break;
            }
          }
          UpdateMentionSearchState() {
            let e = this.m_refTextInput.current;
            if (!e) return;
            let t =
              (this.props.chatView && this.props.chatView.chat) instanceof l.d;
            if (e.selectionStart != e.selectionEnd || !e.selectionStart)
              return void this.ClearMentionSearchState();
            let n,
              i,
              o = e.selectionStart,
              r = e.value;
            for (let e = o - 1; e >= 0; e--) {
              let s = e > 0 ? r[e - 1] : void 0;
              if (("@" == r[e] || "＠" == r[e]) && t) {
                (s && " " != s && "\n" != s) || ((n = e), (i = "Mention"));
                break;
              }
              if (":" == r[e] && o - e > 2) {
                (s && " " != s && "\n" != s && ":" != s) ||
                  ((n = e), (i = "Emoticon"));
                break;
              }
              if (
                a.TS.EREALM != E.TU.k_ESteamRealmChina &&
                r.startsWith("/store ")
              ) {
                (n = 6), (i = "Store");
                break;
              }
              if ("/" == r[e] && 0 == e) {
                (n = e), (i = "SlashCommand");
                break;
              }
              if (" " == r[e] || "\n" == r[e]) break;
            }
            if (void 0 === n || n === this.m_iMentionSearchCancelledOffset)
              return void this.ClearMentionSearchState();
            let s = r.substr(n + 1, o - n - 1);
            (this.m_iMentionSearchStartOffset = n),
              this.setState({ activeSuggestSearchType: i, mentionSearch: s });
          }
          ReplaceSuggestedText(e, t, n) {
            let i = this.m_refTextInput.current.selectionStart,
              o = this.m_refTextInput.current.value,
              r = this.FindMatchOpener(e, o, i);
            if (
              (void 0 === r &&
                "@" == e &&
                (r = this.FindMatchOpener("＠", o, i)),
              void 0 !== r)
            ) {
              let e = o.substr(0, r);
              (e += t), (i >= o.length || " " != o[i]) && (e += " ");
              let a = e.length;
              (e += o.substr(i)),
                this.SetMessageInput(e, n),
                (this.m_refTextInput.current.value = e),
                (this.m_refTextInput.current.selectionStart =
                  this.m_refTextInput.current.selectionEnd =
                    a),
                this.FocusTextInput();
            }
          }
          OnMentionSuggestionSelected(e, t) {
            let n;
            if (
              (t instanceof c.$c
                ? (n = t.persona.m_strPlayerName)
                : t && (n = t),
              !n)
            )
              return (
                (this.m_iMentionSearchCancelledOffset =
                  this.m_iMentionSearchStartOffset),
                void this.ClearMentionSearchState()
              );
            {
              let e = n;
              -1 !== e.lastIndexOf("#") &&
                (e = e.substr(0, e.lastIndexOf("#"))),
                this.props.chatView.BIsMemberNameAmbiguous(e) &&
                  (t instanceof c.$c
                    ? (n += "#" + t.accountid.toString(36))
                    : (n += "#0"));
            }
            this.ReplaceSuggestedText("@", "@" + n),
              this.ClearMentionSearchState();
          }
          OnEmoticonSuggestionSelected(e, t) {
            if (!t)
              return (
                (this.m_iMentionSearchCancelledOffset =
                  this.m_iMentionSearchStartOffset),
                void this.ClearMentionSearchState()
              );
            this.ReplaceSuggestedText(":", ":" + t + ":"),
              this.ClearMentionSearchState();
          }
          OnSlashCommandSuggestionSelected(e, t) {
            if (!t)
              return (
                (this.m_iMentionSearchCancelledOffset =
                  this.m_iMentionSearchStartOffset),
                void this.ClearMentionSearchState()
              );
            this.ReplaceSuggestedText("/", t, () => {
              0 === (0, s.K)(t).unExpectedArguments && this.OnSubmit();
            }),
              this.ClearMentionSearchState();
          }
          OnStoreSuggestionSelected(e, t) {
            if (!t)
              return (
                (this.m_iMentionSearchCancelledOffset =
                  this.m_iMentionSearchStartOffset),
                void this.ClearMentionSearchState()
              );
            this.SetMessageInput(t, () => {
              this.OnSubmit();
            }),
              this.ClearMentionSearchState();
          }
          FocusTextInput() {
            this.context?.IN_GAMEPADUI
              ? setTimeout(() => {
                  this.m_navRef.current?.TakeFocus();
                }, 0)
              : this.m_refTextInput.current?.focus();
          }
          TextUpdated(e) {
            this.SetMessageInput(e);
          }
          InitForChatView(e) {
            this.m_textFocusCallback &&
              (this.m_textFocusCallback.Unregister(),
              (this.m_textFocusCallback = null)),
              this.m_textUpdatedCallback &&
                (this.m_textUpdatedCallback.Unregister(),
                (this.m_textUpdatedCallback = null));
            let t = e.text_entry;
            t != this.state.messageInput && this.setState({ messageInput: t }),
              (this.m_textFocusCallback = e.RegisterForTextEntryFocus(
                this.FocusTextInput,
              )),
              (this.m_textUpdatedCallback = e.RegisterForTextUpdated(
                this.TextUpdated,
              ));
          }
          componentDidMount() {
            this.InitForChatView(this.props.chatView), this.FocusTextInput();
          }
          componentDidUpdate(e) {
            this.props.chatView !== e.chatView &&
              this.InitForChatView(this.props.chatView),
              this.props.isActive &&
                !e.isActive &&
                setTimeout(() => this.FocusTextInput(), 0);
          }
          componentWillUnmount() {
            this.m_textFocusCallback &&
              (this.m_textFocusCallback.Unregister(),
              (this.m_textFocusCallback = null)),
              this.m_textUpdatedCallback &&
                (this.m_textUpdatedCallback.Unregister(),
                (this.m_textUpdatedCallback = null));
          }
          OnRoomEffectSelected(e) {
            this.props.chatView &&
              this.props.chatView.SendChatMessage(`/roomeffect ${e}`),
              this.FocusTextInput();
          }
          OnStickerSelected(e) {
            this.props.chatView &&
              this.props.chatView
                .SendChatMessage(`/sticker ${e}`)
                .then(() =>
                  d.xm.ChatStore.EmoticonStore.TrackStickerUsage(
                    e,
                    Date.now() / 1e3,
                  ),
                ),
              this.FocusTextInput();
          }
          render() {
            const { chatView: e, disabled: t, ownerWindow: n } = this.props;
            let i,
              o = e && e.chat;
            switch (this.state.activeSuggestSearchType) {
              case "Mention":
                i = h.createElement(ie, {
                  chatView: e,
                  strSearch: this.state.mentionSearch,
                  onSuggestionSelected: this.OnMentionSuggestionSelected,
                  ref: this.BindMentionDialog,
                });
                break;
              case "Emoticon":
                i = h.createElement(W, {
                  emoticonStore: d.xm.ChatStore.EmoticonStore,
                  emoticonHoverStore: T.s,
                  strSearch: this.state.mentionSearch,
                  nMinimumSearchLengthBeforeAutoSelection: 2,
                  onSuggestionSelected: this.OnEmoticonSuggestionSelected,
                  ref: this.BindMentionDialog,
                });
                break;
              case "SlashCommand":
                i = h.createElement(oe, {
                  strSearch: this.state.mentionSearch,
                  onSuggestionSelected: this.OnSlashCommandSuggestionSelected,
                  ref: this.BindMentionDialog,
                });
                break;
              case "Store":
                i = h.createElement(re, {
                  strSearch: this.state.mentionSearch,
                  onSuggestionSelected: this.OnStoreSuggestionSelected,
                  ref: this.BindMentionDialog,
                });
            }
            let r = d.xm.SettingsStore.FriendsSettings.bCompactFriendsList,
              a = d.xm.SettingsStore.FriendsSettings.nChatFontSize,
              s = "";
            a == y.ki.k_EChatFontSizeSmall
              ? (s = " smallChatFont")
              : a == y.ki.k_EChatFontSizeLarge && (s = " largeChatFont");
            let c = {};
            if (
              (this.state.submitEnabled &&
                ((c.onSecondaryButton = () => this.SetMessageInput("")),
                (c.onSecondaryActionDescription = (0, f.we)(
                  "#ChatEntryButton_Clear",
                ))),
              o.BIsVoiceAllowed())
            )
              if (o instanceof m.s) {
                if (!e.BVoiceActive()) {
                  c.onOptionsButton = () => o.ToggleVoiceChat();
                  let e = o.accountid_partner,
                    t =
                      d.xm.VoiceStore.BPartnerHasRequestedAndIsInOneOnOneChat(
                        e,
                      );
                  c.onOptionsActionDescription = (0, f.we)(
                    t ? "#Voice_StartTalking" : "#Friend_Menu_StartVoiceChat",
                  );
                }
              } else if (o instanceof l.d) {
                let t = e.GetParentGroupView(),
                  i = t.GetGroup();
                if (i.voiceRoomList.length > 1) {
                  const e = () => {
                    (0, Z.pg)(h.createElement(Q._1, { groupView: t }), n);
                  };
                  (c.onOptionsButton = e),
                    (c.onOptionsActionDescription = (0, f.we)(
                      "#Chat_ChatRoomGroup_ViewVoiceChats",
                    ));
                } else if (
                  1 != i.voiceRoomList.length ||
                  d.xm.VoiceStore.IsVoiceActiveForGroup(i.GetGroupID())
                )
                  0 != i.voiceRoomList.length ||
                    d.xm.VoiceStore.IsVoiceChatActive() ||
                    ((c.onOptionsButton = () => {
                      i.CreateAndJoinTempVoiceRoom();
                    }),
                    (c.onOptionsActionDescription = (0, f.we)(
                      "#Chat_ChatRoomGroup_StartVoiceChat",
                    )));
                else {
                  const e = () => {
                    i.voiceRoomList[0]?.StartVoiceChat();
                  };
                  (c.onOptionsButton = e),
                    (c.onOptionsActionDescription = (0, f.we)(
                      "#Chat_ChatRoomGroup_JoinVoiceChat",
                    ));
                }
              }
            return h.createElement(
              S.Z,
              {
                className: "chatEntry" + (r ? " compactView" : "") + s,
                "flow-children": "row",
                ...c,
                navEntryPreferPosition: Y.iU.PREFERRED_CHILD,
                ref: this.m_refContainer,
              },
              h.createElement(v, { fileUploadManager: e.file_upload_manager }),
              h.createElement(ee, {
                clipToUpload: e.clip_to_upload,
                finishUpload: (t) => {
                  e.SetClipToUpload(void 0), t && e.SendChatMessage(t);
                },
              }),
              h.createElement(
                "form",
                {
                  className: `${R().chatEntryControls}`,
                  onSubmit: this.OnSubmit,
                  onBlur: this.OnBlur,
                },
                i,
                h.createElement(A.dO, {
                  className: R().chatTextarea,
                  value: this.state.messageInput,
                  preferredFocus: !0,
                  onKeyboardFullyVisible: this.OnKeyboardFullyVisible,
                  onPaste: this.OnPaste,
                  onContextMenu: this.OnContextMenu,
                  ref: this.m_refTextInput,
                  onChange: this.OnTextAreaChange,
                  navRef: this.m_navRef,
                  onKeyDown: this.OnKeyDown,
                  onKeyUp: this.OnKeyPress,
                  onClick: this.OnClick,
                  onFocus: this.OnFocus,
                  disabled: t || d.xm.CMInterface.BDisconnected(),
                  maxLength: 5e3,
                  spellCheck:
                    !d.xm.SettingsStore.FriendsSettings.bDisableSpellcheck,
                }),
                h.createElement(
                  A.fu,
                  {
                    className:
                      R().chatSubmitButton +
                      (this.state.submitEnabled ? "" : ` ${R().disabled}`),
                    type: "submit",
                    disabled: !this.state.submitEnabled,
                    title: (0, f.we)("#ChatEntryButton_Submit"),
                    onOKActionDescription: (0, f.we)("#ChatEntryButton_Submit"),
                  },
                  h.createElement(g.XTb, null),
                ),
                h.createElement("input", {
                  type: "file",
                  accept: ".jpg,.jpeg,.png,.gif,.webm,.mpg,.mpeg,.ogv",
                  style: { display: "none" },
                  name: "fileupload",
                  ref: this.m_refFileInput,
                  onChange: this.OnFileInputChange,
                }),
              ),
              h.createElement(
                "div",
                {
                  className: `${R().chatEntryActionsContainer} compactableHeight`,
                },
                !this.context?.IN_GAMEPADUI &&
                  h.createElement(
                    "div",
                    { className: R().chatEntryActionsGroup },
                    h.createElement(L.A, {
                      disabled: t,
                      OnEmoticonSelected: this.OnEmoticonSelected,
                      onRoomEffectSelected: this.OnRoomEffectSelected,
                      roomEffectSettings: d.xm.GetChatRoomEffectSettings(),
                      onStickerSelected: this.OnStickerSelected,
                      rtLastAckedNewEmoticons:
                        u.ZM.UIDisplayPrefs.rtLastAckedNewEmoticons,
                      SetUIDisplayPref: u.ZM.SetUIDisplayPref.bind(u.ZM),
                      emoticonHoverStore: T.s,
                      emoticonStore: d.xm.ChatStore.EmoticonStore,
                      bShowChatAddons: !0,
                    }),
                    h.createElement(
                      A.fu,
                      {
                        className:
                          `${R().chatSubmitButton} ${R().EmbedButton}` +
                          (t ? ` ${R().disabled}` : ""),
                        type: "button",
                        onClick: this.OnEmbedClick,
                        title: (0, f.we)("#ChatEntryButton_SendEmbed"),
                        disabled: t,
                        onOKActionDescription: (0, f.we)(
                          "#ChatEntryButton_SendEmbed",
                        ),
                      },
                      h.createElement(g.pDR, null),
                    ),
                  ),
                !this.context?.IN_GAMEPADUI && h.createElement(ne, { chat: o }),
              ),
              h.createElement("div", {
                className: "disconnectBlocker compactableHeight",
              }),
            );
          }
        };
        (0, i.Cg)([_.oI], te.prototype, "BindMentionDialog", null),
          (0, i.Cg)([_.oI], te.prototype, "OnSubmit", null),
          (0, i.Cg)([_.oI], te.prototype, "OnTextAreaChange", null),
          (0, i.Cg)([_.oI], te.prototype, "SizeChatEntry", null),
          (0, i.Cg)([_.oI], te.prototype, "OnFocus", null),
          (0, i.Cg)([_.oI], te.prototype, "OnBlur", null),
          (0, i.Cg)([_.oI], te.prototype, "OnKeyDown", null),
          (0, i.Cg)([_.oI], te.prototype, "OnPaste", null),
          (0, i.Cg)([_.oI], te.prototype, "OnFileInputChange", null),
          (0, i.Cg)([_.oI], te.prototype, "OnEmbedClick", null),
          (0, i.Cg)([_.oI], te.prototype, "OnEmoticonSelected", null),
          (0, i.Cg)([_.oI], te.prototype, "OnKeyPress", null),
          (0, i.Cg)([_.oI], te.prototype, "OnKeyboardFullyVisible", null),
          (0, i.Cg)([_.oI], te.prototype, "OnClick", null),
          (0, i.Cg)([_.oI], te.prototype, "OnContextMenu", null),
          (0, i.Cg)([_.oI], te.prototype, "OnMentionSuggestionSelected", null),
          (0, i.Cg)([_.oI], te.prototype, "OnEmoticonSuggestionSelected", null),
          (0, i.Cg)(
            [_.oI],
            te.prototype,
            "OnSlashCommandSuggestionSelected",
            null,
          ),
          (0, i.Cg)([_.oI], te.prototype, "OnStoreSuggestionSelected", null),
          (0, i.Cg)([_.oI], te.prototype, "FocusTextInput", null),
          (0, i.Cg)([_.oI], te.prototype, "TextUpdated", null),
          (0, i.Cg)([_.oI], te.prototype, "OnRoomEffectSelected", null),
          (0, i.Cg)([_.oI], te.prototype, "OnStickerSelected", null),
          (te = (0, i.Cg)([p.PA], te));
        let ne = class extends h.Component {
          HandleStartVoice(e) {
            let t = this.props.chat;
            if (t instanceof m.s) return void t.ToggleVoiceChat();
            if (this.IsVoiceActiveForButton())
              return void d.xm.VoiceStore.OnUserEndVoiceChat();
            if (!(t instanceof l.d)) return;
            let n = t.GetGroup();
            if (!n) return;
            let i = n.voiceRoomList;
            if (0 == i.length) return void n.CreateAndJoinTempVoiceRoom();
            if (1 == i.length) {
              let e = i[0];
              return void d.xm.VoiceStore.InitiateRoomChat(
                n.GetGroupID(),
                e.GetRoomID(),
              );
            }
            let o = h.createElement(se, { group: n });
            (0, D.lX)(o, e.currentTarget, {
              bOverlapHorizontal: !0,
              bPreferPopLeft: !0,
              bPreferPopTop: !0,
            });
          }
          IsVoiceActiveForButton() {
            let e = this.props.chat,
              t = !1;
            if (e instanceof m.s) t = e.BVoiceActive();
            else if (e instanceof l.d) {
              let n = e.GetGroup();
              t = d.xm.VoiceStore.IsVoiceActiveForGroup(n.GetGroupID());
            }
            return t;
          }
          OnSettingsClick(e) {
            (0, q.T)(
              (0, u.CO)(e),
              e.currentTarget.ownerDocument.defaultView,
              "voice",
            );
          }
          render() {
            let e = this.IsVoiceActiveForButton(),
              t = ["VoiceToggle"],
              n = "",
              i = this.props.chat;
            e
              ? (t.push("Active"),
                d.xm.VoiceStore.BNoMicAvailableForSession() &&
                  t.push("NoMicrophone"),
                d.xm.VoiceStore.IsMicMuted() && t.push("MicMuted"))
              : t.push(" Inactive");
            let o = !i.BIsVoiceAllowed();
            if (o) t.push(" Disabled"), (n = i.GetVoiceNotAllowedReason());
            else if (i instanceof m.s)
              n = e
                ? "#Tooltip_VoiceControlButton_1v1_active"
                : "#Tooltip_VoiceControlButton_1v1_inactive";
            else if (i instanceof l.d)
              if (this.IsVoiceActiveForButton())
                n = "#Tooltip_VoiceControlButton_group_leave";
              else {
                let e = i.GetGroup();
                e && 0 == e.voiceRoomList.length
                  ? (n = "#Tooltip_VoiceControlButton_group_create")
                  : e && 1 == e.voiceRoomList.length
                    ? (n = "#Tooltip_VoiceControlButton_group_joinsingle")
                    : e &&
                      (n = "#Tooltip_VoiceControlButton_group_joinmultiple");
              }
            let r = d.xm.VoiceStore.GetPushToTalkEnabled(),
              a = d.xm.VoiceStore.GetPushToMuteEnabled(),
              s = d.xm.VoiceStore.GetPushToTalkVoiceStateEnabled(),
              c = d.xm.VoiceStore.GetPushToTalkHotKeyDisplayString(),
              u = "";
            return (
              (r || a) && (u += " pushToTalkEnabled"),
              s && (u += " pushToTalkKeyDown"),
              h.createElement(
                "div",
                {
                  className:
                    "ChatMessageEntryVoice" +
                    u +
                    (e ? " Active" : " Inactive") +
                    (o ? " Disabled" : ""),
                },
                h.createElement(
                  "div",
                  { className: "buttonsContainer" },
                  h.createElement(
                    A.fu,
                    {
                      disabled: o,
                      className: t.join(" "),
                      onClick: this.HandleStartVoice,
                      onOKActionDescription: (0, f.we)(n),
                      title: (0, f.we)(n),
                    },
                    h.createElement(
                      "div",
                      { className: "VoiceToggleIconCtn" },
                      e
                        ? h.createElement(g.OWN, null)
                        : h.createElement(g.mrd, null),
                    ),
                  ),
                  e &&
                    h.createElement(
                      "div",
                      { className: "activeVoiceControls" },
                      h.createElement(
                        "div",
                        { className: "activeVoiceFlexBox" },
                        h.createElement(
                          "div",
                          { className: "activeVoiceButtons" },
                          h.createElement(K.f7, null),
                          h.createElement(K.Ql, null),
                        ),
                      ),
                    ),
                ),
                (r || a) &&
                  this.IsVoiceActiveForButton() &&
                  h.createElement(
                    "div",
                    {
                      className: "activeVoicePushToTalk" + u,
                      title: (0, f.we)(
                        a ? "#ActiveVoicePushToMute" : "#ActiveVoicePushToTalk",
                        c,
                      ),
                    },
                    c,
                  ),
              )
            );
          }
        };
        (0, i.Cg)([_.oI], ne.prototype, "HandleStartVoice", null),
          (0, i.Cg)([_.oI], ne.prototype, "OnSettingsClick", null),
          (ne = (0, i.Cg)([p.PA], ne));
        class ie extends V {
          static contextType = $.QO;
          static nMaxMatches = 12;
          async performSearch(e) {
            return this.props.chatView.SearchMembersForMention(
              e,
              Number.MAX_VALUE,
            );
          }
          ChooseSuggestion(e) {
            (e && e.strNotSelectable) || super.ChooseSuggestion(e);
          }
          getSelection(e) {
            return e.friend ? e.friend : e.meta_mention;
          }
          getKey(e) {
            return "" + (e.friend ? e.friend.accountid : e.meta_mention);
          }
          renderMatch(e) {
            let t,
              n,
              { friend: i, iMatchOffset: o, bNicknameMatch: r } = e,
              a = this.props.strSearch.length,
              s = null;
            return (
              i
                ? ((t = i.persona.m_strPlayerName),
                  (n = i.has_nickname && i.nickname),
                  i.persona.avatar_url_medium &&
                    (s = i.persona.avatar_url_medium))
                : ((t = "@" + e.meta_mention), (n = null), o++),
              r
                ? h.createElement(
                    "span",
                    { className: "mentionSuggestion" },
                    s &&
                      h.createElement("img", {
                        className: "mentionAvatar",
                        src: i.persona.avatar_url_medium,
                        draggable: !1,
                      }),
                    t,
                    h.createElement(
                      "span",
                      { className: "nickname" },
                      " (",
                      n.substr(0, o).replace(/ /g, " "),
                      h.createElement(
                        "span",
                        { className: "mentionSearchMatch" },
                        n.substr(o, a).replace(/ /g, " "),
                      ),
                      n.substr(o + a).replace(/ /g, " "),
                      ")",
                    ),
                  )
                : h.createElement(
                    "span",
                    { className: "mentionSuggestion" },
                    t.substr(0, o).replace(/ /g, " "),
                    s &&
                      h.createElement("img", {
                        className: "mentionAvatar",
                        src: i.persona.avatar_url_medium,
                        draggable: !1,
                      }),
                    h.createElement(
                      "span",
                      { className: "mentionSearchMatch" },
                      t.substr(o, a).replace(/ /g, " "),
                    ),
                    t.substr(o + a).replace(/ /g, " "),
                    e.strNotSelectable &&
                      h.createElement(
                        "span",
                        { className: "notSelectable" },
                        " ",
                        ": " + e.strNotSelectable,
                        " ",
                      ),
                    n &&
                      h.createElement(
                        "span",
                        { className: "nickname" },
                        " (",
                        n,
                        ")",
                      ),
                  )
            );
          }
          renderNoMatchMessage() {
            return h.createElement(
              "div",
              {
                key: "nomatches",
                className: "suggestOption mentionSearchOption noMatches",
              },
              (0, f.we)("#ChatMentionSuggest_NoMatches"),
            );
          }
          renderTooManyMatchesMessage(e) {
            let t =
              e <= 1
                ? "#ChatMentionSuggest_ManyMatches"
                : "#ChatMentionSuggest_ManyMatchesPlural";
            return h.createElement(
              "div",
              {
                key: "manymatches",
                className: "suggestOption mentionSearchOption manyMatches",
              },
              (0, f.we)(t, e),
            );
          }
          renderHeader() {
            return h.createElement(
              "div",
              { className: "mentionSearchText" },
              (0, f.we)(
                "#ChatMentionSuggest_MembersMatching",
                this.props.strSearch,
              ),
            );
          }
          getMaxMatches() {
            return this.context?.IN_GAMEPADUI ? 6 : ie.nMaxMatches;
          }
        }
        class oe extends V {
          performSearch(e) {
            const t = "/" + e;
            return (0, s.MC)().filter((e) => e.startsWith(t));
          }
          getSelection(e) {
            return e;
          }
          getKey(e) {
            return e;
          }
          renderMatch(e) {
            const t = (0, s.K)(e);
            if (!t) return null;
            const n = (0, f.we)(t.strDescriptionToken);
            return h.createElement(
              "span",
              { className: "SlashCommandSuggestion" },
              h.createElement(
                "span",
                { className: "SlashCommandSuggestion_SlashCommand" },
                e,
              ),
              ": ",
              h.createElement(
                "span",
                { className: "SlashCommandSuggestion_SlashCommandDescription" },
                n,
              ),
            );
          }
          renderNoMatchMessage() {
            return null;
          }
          renderTooManyMatchesMessage(e) {
            return null;
          }
          renderHeader() {
            return null;
          }
          getMaxMatches() {
            return Number.MAX_VALUE;
          }
        }
        class re extends V {
          m_mapSuggestions;
          async performSearch(e) {
            this.m_mapSuggestions || (this.m_mapSuggestions = new Map());
            let t = e.trim();
            return (
              this.m_mapSuggestions.has(t) ||
                this.m_mapSuggestions.set(t, this.loadSearchFromStore(t)),
              this.m_mapSuggestions.get(t)
            );
          }
          async loadSearchFromStore(e) {
            const t = {
              term: e,
              f: "json",
              cc: a.TS.COUNTRY,
              l: a.TS.LANGUAGE,
              origin: self.origin,
            };
            return (
              (
                await r().get(`${a.TS.STORE_BASE_URL}search/suggest`, {
                  params: t,
                })
              ).data.filter(
                (e) => "game" === e.type || "software" === e.type,
              ) || []
            );
          }
          getSelection(e) {
            return `${a.TS.STORE_BASE_URL}app/${e.id}`;
          }
          getKey(e) {
            return String(e.id);
          }
          renderMatch(e) {
            return h.createElement(
              "span",
              { className: "SlashCommandSuggestion" },
              h.createElement(
                "span",
                { className: "SlashCommandSuggestion_SlashCommand" },
                e.name,
              ),
            );
          }
          renderNoMatchMessage() {
            return null;
          }
          renderTooManyMatchesMessage(e) {
            return null;
          }
          renderHeader() {
            return null;
          }
          getMaxMatches() {
            return Number.MAX_VALUE;
          }
        }
        function ae(e) {
          let t = [],
            n =
              "undefined" != typeof SteamClient &&
              void 0 !== SteamClient.Screenshots,
            i = (function () {
              let e =
                "undefined" != typeof SteamClient &&
                void 0 !== SteamClient.Screenshots;
              const [t, n] = h.useState(null);
              return (
                h.useEffect(() => {
                  if (!e) return;
                  let t = !1;
                  return (
                    SteamClient.Screenshots.GetLastScreenshotTaken().then(
                      (e) => {
                        t || n(e);
                      },
                    ),
                    () => {
                      t = !0;
                    }
                  );
                }, [e]),
                e ? t : null
              );
            })();
          (0, X.i3)();
          if (
            (e.refFileInput &&
              t.push(
                h.createElement(
                  k.kt,
                  {
                    key: "upload",
                    onSelected: () => {
                      e.refFileInput.click();
                    },
                  },
                  (0, f.we)("#ChatEntry_UploadImage"),
                ),
              ),
            n)
          ) {
            let n = null == i || void 0 === i,
              o = null;
            !n &&
              i &&
              (o = () =>
                (async function (e, t) {
                  let n = "https://steamloopback.host/" + t,
                    i = await r()({
                      url: n,
                      method: "GET",
                      responseType: "blob",
                    }),
                    o = j.tC(n, "/"),
                    a = z.pE(i.data, o);
                  e.SetFileToUpload(a);
                })(e.chatView, i.strUrl)),
              t.push(
                h.createElement(
                  k.kt,
                  { key: "lastscreenshot", disabled: n, onSelected: o },
                  (0, f.we)("#ChatEntry_UploadLastScreenshot"),
                ),
              );
          }
          return (
            t.push(
              h.createElement(
                k.kt,
                {
                  key: "tradeoffer",
                  onSelected: () => {
                    d.xm.EconomyStore.GetTradeOfferURL().then((t) => {
                      e.fnInsertText(t);
                    });
                  },
                },
                (0, f.we)("#ChatEntry_SendTradeURL"),
              ),
            ),
            h.createElement(k.tz, null, t)
          );
        }
        function se(e) {
          let t = e.group.GetGroupID(),
            n = e.group.voiceRoomList.map((e) =>
              h.createElement(
                k.kt,
                {
                  key: e.GetRoomID(),
                  onSelected: () => {
                    d.xm.VoiceStore.InitiateRoomChat(t, e.GetRoomID());
                  },
                },
                e.name,
              ),
            );
          return h.createElement(k.tz, null, n);
        }
      },
      98540: (e, t, n) => {
        "use strict";
        n.d(t, {
          I: () => W,
          _O: () => H,
          qj: () => z,
          wu: () => F,
          z7: () => L,
        });
        var i = n(34629),
          o = n(11057),
          r = n.n(o),
          a = n(78919),
          s = n(50622),
          l = n(58743),
          c = n(22913),
          m = n(24941),
          d = n(60340),
          u = n(25698),
          h = n(41230),
          p = n(63696),
          _ = n(81734),
          g = n(74002),
          C = n(82924),
          f = n(63689),
          S = n(13346),
          v = n(65281),
          b = n(4299),
          I = n(77171),
          w = n(77631),
          y = n(27816),
          E = n(94762),
          D = n(69074),
          A = n(14355),
          T = n(41943),
          M = n(91466),
          R = n(50228);
        const k = ["148618792083695825", "76561197960266962"];
        let L = class extends p.Component {
          InviteFriend(e) {
            (0, S.E5)(
              (0, a.CO)(e),
              (0, s.uX)(e),
              this.props.groupView.GetGroup(),
            );
          }
          OpenSettings(e) {
            (0, m.hI)((0, s.uX)(e), this.props.groupView);
          }
          OpenNotificationPreferences(e) {
            (0, d.lV)((0, s.uX)(e), this.props.groupView);
          }
          OnContextMenu(e) {
            (0, c.Tz)(e, this.props.groupView.GetGroup(), {
              is_chat_window: !0,
            });
          }
          render() {
            let e = this.props.groupView,
              t = e.GetGroup(),
              n = t.name,
              i = t.tagline,
              o = !1;
            t.readyToRender && (o = t.BCanInvite());
            const r = e.GetGroup().watching_broadcast_steamid;
            return p.createElement(
              "div",
              { className: "chatRoomHeader" },
              p.createElement(
                D.Z,
                {
                  "flow-children": "row",
                  className:
                    "chatRoomGroupHeader" + (r ? " notifyBroadcast" : ""),
                  onContextMenu: this.OnContextMenu,
                  onMenuButton: this.OnContextMenu,
                },
                p.createElement(W, { group: t }),
                p.createElement(
                  "div",
                  { className: "chatRoomGroupHeaderNameandTag" },
                  p.createElement(
                    "div",
                    { className: "chatRoomGroupHeaderName" },
                    n,
                  ),
                  p.createElement(G, { strTagline: i }),
                ),
                p.createElement("div", { className: "chatRoomGroupSpacer" }),
                t.readyToRender &&
                  p.createElement(
                    p.Fragment,
                    null,
                    r && p.createElement(P, { groupView: e }),
                    p.createElement(
                      "div",
                      { className: "chatRoomGroupControls" },
                      p.createElement(
                        "div",
                        { className: "chatRoomOptions" },
                        p.createElement(
                          D.Z,
                          {
                            className: "chatRoomButton ManageNotifications",
                            onActivate: this.OpenNotificationPreferences,
                            title: (0, g.we)("#Tooltip_NotificationSettings"),
                          },
                          p.createElement(_.IrQ, null),
                        ),
                        o &&
                          p.createElement(
                            D.Z,
                            {
                              className: "chatRoomButton InviteToGroupChat",
                              onActivate: this.InviteFriend,
                              title: (0, g.we)("#Tooltip_InviteToGroup"),
                            },
                            p.createElement(_.MxO, null),
                          ),
                        !o &&
                          p.createElement(
                            "div",
                            {
                              className:
                                "chatRoomButton InviteToGroupChat Disabled",
                              onClick: (e) => {},
                              title: (0, g.we)("#Tooltip_InviteToGroup_Denied"),
                            },
                            p.createElement(_.MxO, null),
                          ),
                        p.createElement(
                          D.Z,
                          {
                            className: "chatRoomButton GroupChatSettings",
                            onActivate: this.OpenSettings,
                            title: (0, g.we)("#Tooltip_GroupChatSettings"),
                          },
                          p.createElement(_.m59, null),
                        ),
                      ),
                      p.createElement(
                        "div",
                        { className: "chatRoomGroupStats" },
                        p.createElement(O, { groupView: e }),
                        p.createElement(V, { groupView: e }),
                        p.createElement(N, { groupView: e }),
                      ),
                    ),
                  ),
              ),
            );
          }
        };
        function G(e) {
          const { strTagline: t } = e,
            n = t.toLowerCase();
          return (!n.startsWith("https://") && !n.startsWith("http://")) ||
            t.includes(" ")
            ? p.createElement(
                "div",
                { className: "chatRoomGroupHeaderTagline" },
                e.strTagline,
              )
            : p.createElement(
                M.uU,
                {
                  href: t,
                  className: "chatRoomGroupHeaderTagline",
                  bUseLinkFilter: !0,
                },
                t,
              );
        }
        (0, i.Cg)([C.oI], L.prototype, "InviteFriend", null),
          (0, i.Cg)([C.oI], L.prototype, "OpenSettings", null),
          (0, i.Cg)([C.oI], L.prototype, "OpenNotificationPreferences", null),
          (0, i.Cg)([C.oI], L.prototype, "OnContextMenu", null),
          (L = (0, i.Cg)([h.PA], L));
        let F = class extends p.Component {
          fnShowTextChannelsDialog(e) {
            (0, A.pg)(
              p.createElement(T.LC, { groupView: this.props.groupView }),
              (0, s.uX)(e),
            );
          }
          render() {
            let e = this.props.groupView,
              t = e.GetGroup(),
              n = t.name,
              i = t.tagline,
              o = !1;
            t.readyToRender && (o = t.BCanInvite());
            const r = e.GetGroup().watching_broadcast_steamid,
              a = e.GetActiveChatView()?.chat.GetVoiceAllowed();
            let s = e.GetActiveChatView()?.GetTabName();
            return (
              a &&
                (s = (0, g.we)(
                  "#GroupSettings_Channels_VoiceQuickChatRoom",
                  s,
                )),
              p.createElement(
                "div",
                { className: "chatRoomHeader" },
                p.createElement(
                  D.Z,
                  {
                    focusable: !1,
                    fnCanTakeFocus: () => !0,
                    "flow-children": "row",
                    className:
                      "chatRoomGroupHeader" + (r ? " notifyBroadcast" : ""),
                  },
                  p.createElement(W, { group: t }),
                  p.createElement(
                    "div",
                    { className: "chatRoomGroupHeaderNameandTag" },
                    p.createElement(
                      "div",
                      { className: "chatRoomGroupHeaderName" },
                      n,
                      p.createElement(G, { strTagline: i }),
                    ),
                    p.createElement(
                      D.Z,
                      {
                        className:
                          "chatRoomGroupActiveChat " + (a ? "voiceRoom" : ""),
                        focusable: !0,
                        fnCanTakeFocus: () => !0,
                        onActivate: this.fnShowTextChannelsDialog,
                        onOKActionDescription: (0, g.we)(
                          "#GroupSettings_Channels_TextChannels",
                        ),
                      },
                      p.createElement(_.tcj, null),
                      s,
                    ),
                  ),
                  p.createElement("div", { className: "chatRoomGroupSpacer" }),
                  t.readyToRender &&
                    p.createElement(
                      p.Fragment,
                      null,
                      r && p.createElement(P, { groupView: e }),
                      p.createElement(
                        "div",
                        { className: "chatRoomGroupControls" },
                        p.createElement(
                          "div",
                          { className: "chatRoomGroupStats" },
                          p.createElement(O, { groupView: e }),
                          p.createElement(V, { groupView: e }),
                          p.createElement(N, { groupView: e }),
                        ),
                      ),
                    ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([C.oI], F.prototype, "fnShowTextChannelsDialog", null),
          (F = (0, i.Cg)([h.PA], F));
        let P = class extends p.Component {
          constructor(e) {
            super(e);
            let t = this.GetBroadcastID(e.groupView);
            this.state = { info: v.BroadcastWatchStore.StartInfo(t) };
          }
          GetBroadcastID(e) {
            return e
              .GetGroup()
              .watching_broadcast_steamid.ConvertTo64BitString();
          }
          componentWillUnmount() {
            v.BroadcastWatchStore.StopInfo(this.state.info);
          }
          OnRemoveBroadcast(e) {
            e.stopPropagation();
            const t = this.props.groupView.GetGroup();
            if (!t.BCanIAssociateBroadcast()) return;
            const n = (0, s.uX)(e);
            (0, u.Ci)(
              n,
              (0, g.we)("#Broadcast_EndWatchParty"),
              (0, g.we)("#Broadcast_EndWatchPartyPrompt"),
              (0, g.we)("#Broadcast_EndWatchParty"),
            ).then(() => t.SetChatRoomGroupWatchingBroadcast(void 0));
          }
          OnToggleBroadcast(e) {
            let t = this.props.groupView;
            t.isBroadcastShown ? t.HideBroadcast() : t.ShowBroadcast();
          }
          render() {
            const {
                info: { m_strAppTitle: e, m_strThumbnailUrl: t, m_strTitle: n },
              } = this.state,
              i = this.props.groupView,
              o = i.GetGroup(),
              r = this.GetBroadcastID(this.props.groupView),
              a = i.isBroadcastShown;
            if (k.indexOf(r) >= 0)
              return p.createElement(B, {
                groupView: i,
                onClick: this.OnToggleBroadcast,
                onRemoveBroadcast: this.OnRemoveBroadcast,
                watchingBroadcast: a,
              });
            if (a) return null;
            let s = new w.b(r),
              c = n;
            return (
              n ||
                (c = (0, g.we)(
                  "#PersonaStateWatchingBroadcast_Player",
                  l.xm.FriendStore.GetPlayer(s.GetAccountID()).display_name,
                )),
              p.createElement(
                "div",
                {
                  className: "broadcastInfoContainer",
                  onClick: this.OnToggleBroadcast,
                },
                p.createElement(
                  "div",
                  { className: "broadcastDetails" },
                  p.createElement(
                    "div",
                    { className: "nowWatching" },
                    (0, g.we)("#Broadcast_NowWatching"),
                  ),
                  p.createElement("div", { className: "gameTitle" }, e),
                  p.createElement("div", { className: "broadcastTitle" }, c),
                ),
                p.createElement(
                  "div",
                  { className: "thumbnail" },
                  t &&
                    p.createElement(b.y, {
                      className: "thumbnailImg",
                      src: t,
                      duration: 2500,
                    }),
                ),
                o.BCanIAssociateBroadcast() &&
                  p.createElement(
                    "div",
                    { className: "actions", onClick: this.OnRemoveBroadcast },
                    p.createElement(_.X, null),
                  ),
              )
            );
          }
        };
        (0, i.Cg)([C.oI], P.prototype, "OnRemoveBroadcast", null),
          (0, i.Cg)([C.oI], P.prototype, "OnToggleBroadcast", null),
          (P = (0, i.Cg)([h.PA], P));
        class B extends p.Component {
          OnContextMenu(e) {
            this.props.groupView.GetGroup().BCanIAssociateBroadcast() &&
              (function (e, t) {
                (0, E.lX)(p.createElement(x, { onRemoveBroadcast: t }), e);
              })(e, this.props.onRemoveBroadcast);
          }
          render() {
            let e = this.props.watchingBroadcast,
              t = (0, I.A)(r().YuleLog, e && r().Watching);
            return p.createElement("div", {
              className: t,
              onClick: this.props.onClick,
              onContextMenu: this.OnContextMenu,
            });
          }
        }
        (0, i.Cg)([C.oI], B.prototype, "OnContextMenu", null);
        class x extends p.Component {
          render() {
            return p.createElement(
              y.tz,
              { className: "chatRoomListItemContextMenu" },
              p.createElement(
                y.kt,
                {
                  key: "removebroadcast",
                  onSelected: this.props.onRemoveBroadcast,
                },
                (0, g.we)("#Chat_Actions_RemoveRoom_Action"),
              ),
            );
          }
        }
        let O = (0, h.PA)((e) => {
            const { groupView: t } = e;
            return p.createElement(
              "div",
              { className: "statMemberStat statMembersTotal" },
              p.createElement("div", { className: "statCircle" }),
              (0, g.Yp)("#Chat_Members", t.GetMemberCountTotal()),
            );
          }),
          N = (0, h.PA)((e) => {
            const { groupView: t } = e;
            let n = t.GetMemberCountInGame();
            return 0 == n
              ? null
              : p.createElement(
                  "div",
                  {
                    className: "statMemberStat statMembersInGame",
                    title: (0, g.Yp)("#Chat_Members_InGame_Tooltip", n),
                  },
                  p.createElement("div", { className: "statCircle" }),
                  n,
                );
          }),
          V = (0, h.PA)((e) => {
            const { groupView: t } = e;
            let n = t.GetMemberCountOnline();
            return 0 == n
              ? null
              : p.createElement(
                  "div",
                  {
                    className: "statMemberStat statMembersOnline",
                    title: (0, g.Yp)("#Chat_Members_Online_Tooltip", n),
                  },
                  p.createElement("div", { className: "statCircle" }),
                  n,
                );
          });
        function U(e) {
          const { appID: t } = e,
            [n] = (0, R.t7)(t, { include_assets_without_overrides: !0 }),
            i = n?.GetAssetsWithoutOverrides()?.GetHeaderURL();
          return i
            ? p.createElement(
                "div",
                { className: "ChatRoomGroupOGGAvatar Large" },
                p.createElement("img", { className: "OGGAvatar", src: i }),
              )
            : p.createElement("div", {
                className: "ChatRoomGroupOGGAvatar Large",
              });
        }
        let H = (0, h.PA)((e) => {
            let t = e.size;
            if (
              ("large" == t || "medium" == t) &&
              e.clan.BIsOGG() &&
              e.clan.GetOGGAppID()
            )
              return p.createElement(U, { appID: e.clan.GetOGGAppID() });
            let n = "";
            "micro" == t
              ? (n = "Micro")
              : "smallish" == t
                ? (n = "Small Smallish")
                : "smaller" == t
                  ? (n = "Smaller")
                  : "small" == t
                    ? (n = "Small")
                    : "large" == t && (n = "Large");
            let i =
              "large" == t ? e.clan.avatar_url_full : e.clan.avatar_url_medium;
            return p.createElement(
              "div",
              { className: "ChatRoomGroupAvatar " + n },
              p.createElement("img", {
                className: "ChatRoomGroupAvatar_Avatar",
                src: i,
              }),
            );
          }),
          W = class extends p.Component {
            render() {
              let e = this.props.group;
              if (e && e.BIsClanChatRoom()) {
                let t = l.xm.FriendStore.ClanStore.GetClan(e.GetClanID()),
                  n = "medium";
                return (
                  this.props.micro
                    ? (n = "micro")
                    : this.props.small
                      ? (n = "small")
                      : this.props.smallish
                        ? (n = "smallish")
                        : this.props.smaller
                          ? (n = "smaller")
                          : this.props.large && (n = "large"),
                  p.createElement(H, { clan: t, size: n })
                );
              }
              let t = "";
              if (
                (this.props.micro
                  ? (t = "Micro")
                  : this.props.small
                    ? (t = "Small")
                    : this.props.smallish
                      ? (t = "Small Smallish")
                      : this.props.smaller
                        ? (t = "Smaller")
                        : this.props.large && (t = "Large"),
                e && !e.IsNamedGroupChat())
              ) {
                let n = e.members_to_highlight,
                  i = n.members,
                  o = n.remaining_count;
                if (i.length) {
                  let e = i.length + (o ? 1 : 0);
                  return p.createElement(
                    "div",
                    {
                      className:
                        "ChatRoomMultiFriendAvatar With" + e + "Items " + t,
                    },
                    i.map((e, t) =>
                      p.createElement("img", {
                        src: this.props.large
                          ? e.persona.avatar_url_medium
                          : e.persona.avatar_url,
                        key: t,
                        className: "MultiAvatar Index" + t,
                      }),
                    ),
                    o > 0 &&
                      p.createElement(
                        "div",
                        {
                          className:
                            "ChatRoomMultiFriendMore MultiAvatar Index3",
                        },
                        "+",
                        o,
                      ),
                  );
                }
              }
              if (e && e.hasIcon)
                return p.createElement(
                  "div",
                  { className: "ChatRoomGroupAvatar HasAvatar " + t },
                  p.createElement("img", {
                    className: "ChatRoomGroupAvatar_Avatar",
                    src: e.avatar_url_full,
                  }),
                );
              {
                let n = "";
                e ? (n = e.name) : this.props.name && (n = this.props.name);
                let i = (0, f.g)(n),
                  o = "ChatRoomGroupAvatar " + t;
                return (
                  f.tV(i) && (o += " EmojiInitials"),
                  p.createElement(
                    "div",
                    { className: o },
                    p.createElement(
                      "div",
                      { className: "ChatRoomGroupAvatar_initials" },
                      i,
                    ),
                  )
                );
              }
            }
          };
        async function z(e, t) {
          let n = (0, a._k)(e),
            i = t.BIsClanChatRoom()
              ? "#Chat_Actions_LeaveChatRoomGroup_ClanConfirm"
              : t.BIsAccountIDOwner(l.xm.CMInterface.steamid.GetAccountID())
                ? "#Chat_Actions_OwnerLeaveChatRoomGroup_Confirm"
                : "#Chat_Actions_LeaveChatRoomGroup_Confirm";
          (await (0, u.WQ)(
            e,
            (0, g.we)("#Chat_Actions_LeaveChatRoomGroup"),
            (0, g.we)(i, t.name),
            (0, g.we)("#Chat_Actions_LeaveChatRoomGroup"),
          )) && t.LeaveChatRoomGroup(n);
        }
        W = (0, i.Cg)([h.PA], W);
      },
      41943: (e, t, n) => {
        "use strict";
        n.d(t, { vY: () => ge, LC: () => fe, _1: () => Se });
        var i = n(34629),
          o = n(89021),
          r = n(14355),
          a = n(25444),
          s = n(74977),
          l = n(78116),
          c = n(51802),
          m = n(58743),
          d = n(78919),
          u = n(68593),
          h = n(63696),
          p = n(81734),
          _ = n(41230),
          g = n(93715),
          C = n(82924),
          f = n(99862),
          S = n(52445),
          v = n(55700),
          b = n(2473);
        class I extends h.Component {
          m_elContainer = null;
          m_resizeObserver = null;
          constructor(e) {
            super(e), (this.state = { nWidth: 0, nHeight: 0 });
          }
          componentWillUnmount() {
            this.m_resizeObserver && this.m_resizeObserver.disconnect();
          }
          BindContainerRef(e) {
            this.m_resizeObserver &&
              (this.m_resizeObserver.disconnect(),
              (this.m_resizeObserver = null)),
              (this.m_elContainer = e),
              this.m_elContainer &&
                ((this.m_resizeObserver = (0, C.Fd)(
                  this.m_elContainer,
                  this.OnResize,
                )),
                this.UpdateDimensions(
                  this.m_elContainer.clientWidth,
                  this.m_elContainer.clientHeight,
                )),
              this.props.refToDiv && this.props.refToDiv(e);
          }
          UpdateDimensions(e, t) {
            (this.state.nWidth == e && this.state.nHeight == t) ||
              this.setState({ nWidth: e, nHeight: t });
          }
          OnResize(e, t) {
            let n = 0,
              i = 0;
            if (e.length > 0) {
              let t = e[0].contentRect;
              (n = t.width), (i = t.height);
            }
            this.UpdateDimensions(n, i);
          }
          render() {
            const {
                bUseRelativePosition: e,
                className: t,
                refToDiv: n,
                ...i
              } = this.props,
              o = e
                ? { position: "relative" }
                : {
                    position: "absolute",
                    top: 0,
                    right: 0,
                    bottom: 0,
                    left: 0,
                  },
              r = { width: this.state.nWidth, height: this.state.nHeight },
              a = this.props.children(r);
            return h.createElement(
              "div",
              { className: t, style: o, ref: this.BindContainerRef, ...i },
              a,
            );
          }
        }
        (0, i.Cg)([C.oI], I.prototype, "BindContainerRef", null),
          (0, i.Cg)([C.oI], I.prototype, "OnResize", null);
        var w = n(74002),
          y = n(77171),
          E = n(69074),
          D = n(23812),
          A = n(76482);
        const T = (e) =>
          l.TS.IN_CLIENT
            ? h.createElement(I, { ...e })
            : h.createElement(S.Ay, { ...e });
        let M = class extends h.Component {
          m_renderContext;
          GetFriendRenderContext() {
            let e = this.props.groupView.GetGroup();
            return (
              (this.m_renderContext && this.m_renderContext.group == e) ||
                (this.m_renderContext = {
                  group: e,
                  chatContext: "chatmemberlist",
                }),
              this.m_renderContext
            );
          }
          GetMembersMatchingSearch(e) {
            let t = O(
              this.props.groupView.GetGroup().memberList.member_list,
              e,
            );
            return t.sort(g.$c.DefaultFriendSortComparator), t;
          }
          OnMemberListToggleViewClick() {
            this.props.groupView.SetMemberListCollapsed(
              this.props.groupView.isMemberListExpanded,
            );
          }
          OnSearchInput(e) {
            this.props.groupView.UpdateMemberSearch(e.currentTarget.value);
          }
          OnSearchSubmit(e) {
            e.preventDefault();
            let t = this.props.groupView,
              n = t.normalizedMemberSearch;
            if (n && n.length) {
              let t = this.GetMembersMatchingSearch(n);
              t.length && t[0].OpenChatDialog((0, d.CO)(e));
            }
            t.ClearMemberSearch();
          }
          OnSearchKeyDown(e) {
            27 == e.keyCode &&
              (e.preventDefault(),
              e.currentTarget.blur(),
              this.props.groupView.ClearMemberSearch());
          }
          OnClearSearch() {
            this.props.groupView.ClearMemberSearch();
          }
          OnSearchFocus() {
            this.props.groupView.UpdateMemberSearch(
              this.props.groupView.GetMemberSearch(),
            );
          }
          OnSearchBlur() {
            0 == this.props.groupView.GetMemberSearch().length &&
              this.props.groupView.ClearMemberSearch();
          }
          render() {
            let e = this.props.groupView,
              t = e.isMemberListExpanded,
              n = e.GetMemberSearch(),
              i = "MemberListColumn",
              o = (0, w.we)("#Tooltip_MemberCollapse");
            t ||
              ((i += " MemberListViewCompact"),
              (o = (0, w.we)("#Tooltip_MemberExpand")));
            let r = "MemberListOptionsContainer";
            return (
              e.IsMemberSearchActive() && (r += " SearchActive"),
              h.createElement(
                E.Z,
                { className: i },
                h.createElement(
                  "div",
                  { className: r },
                  h.createElement(
                    "div",
                    {
                      className:
                        "MemberListOption ToggleMemberListView" +
                        (n.length > 0 ? " SearchActive" : ""),
                      onClick: this.OnMemberListToggleViewClick,
                      title: o,
                    },
                    h.createElement(p.F2T, null),
                  ),
                  h.createElement(
                    "form",
                    {
                      className: "socialInputContainer",
                      name: "friendSearchForm",
                      onSubmit: this.OnSearchSubmit,
                    },
                    h.createElement(
                      "div",
                      { className: "inputContainer no-drag" },
                      h.createElement("input", {
                        className: "friendSearchInput",
                        type: "text",
                        name: "memberlistSearch",
                        placeholder: (0, w.we)("#SearchByName"),
                        value: n,
                        onChange: this.OnSearchInput,
                        onKeyDown: this.OnSearchKeyDown,
                        onFocus: this.OnSearchFocus,
                        onBlur: this.OnSearchBlur,
                        autoComplete: "off",
                      }),
                      e.has_search_error
                        ? h.createElement(
                            "div",
                            {
                              className: "friendSearchError",
                              title: (0, w.we)("#SearchError"),
                            },
                            h.createElement(p.eTF, { color: "red" }),
                          )
                        : h.createElement(
                            "div",
                            {
                              className: "friendSearchClear",
                              onClick: this.OnClearSearch,
                            },
                            h.createElement(p.sED, null),
                          ),
                    ),
                  ),
                ),
                h.createElement(
                  E.Z,
                  {
                    style: { display: "flex", flex: 1, position: "relative" },
                    "flow-children": "column",
                  },
                  e.GetGroup().BIsMemberListVirtualized()
                    ? h.createElement(G, {
                        groupView: this.props.groupView,
                        inactive: this.props.inactive,
                        context: this.GetFriendRenderContext(),
                      })
                    : h.createElement(N, {
                        groupView: this.props.groupView,
                        inactive: this.props.inactive,
                        context: this.GetFriendRenderContext(),
                      }),
                ),
                h.createElement("div", { className: "disconnectBlocker" }),
              )
            );
          }
        };
        (0, i.Cg)([C.oI], M.prototype, "OnMemberListToggleViewClick", null),
          (0, i.Cg)([C.oI], M.prototype, "OnSearchInput", null),
          (0, i.Cg)([C.oI], M.prototype, "OnSearchSubmit", null),
          (0, i.Cg)([C.oI], M.prototype, "OnSearchKeyDown", null),
          (0, i.Cg)([C.oI], M.prototype, "OnClearSearch", null),
          (0, i.Cg)([C.oI], M.prototype, "OnSearchFocus", null),
          (0, i.Cg)([C.oI], M.prototype, "OnSearchBlur", null),
          (M = (0, i.Cg)([_.PA], M));
        let R = class extends h.Component {
          m_renderContext;
          GetFriendRenderContext() {
            let e = this.props.groupView.GetGroup();
            return (
              (this.m_renderContext && this.m_renderContext.group == e) ||
                (this.m_renderContext = {
                  group: e,
                  chatContext: "chatmemberlistselection",
                }),
              this.m_renderContext
            );
          }
          GetMembersMatchingSearch(e) {
            let t = O(
              this.props.groupView.GetGroup().memberList.member_list,
              e,
            );
            return t.sort(g.$c.DefaultFriendSortComparator), t;
          }
          OnSearchInput(e) {
            this.props.groupView.UpdateMemberSearch(e.currentTarget.value);
          }
          OnSearchSubmit(e) {
            e.preventDefault();
            let t = this.props.groupView,
              n = t.normalizedMemberSearch;
            if (n && n.length) {
              let t = this.GetMembersMatchingSearch(n);
              t.length && t[0].OpenChatDialog((0, d.CO)(e));
            }
            t.ClearMemberSearch();
          }
          OnSearchKeyDown(e) {
            27 == e.keyCode &&
              (e.preventDefault(),
              e.currentTarget.blur(),
              this.props.groupView.ClearMemberSearch());
          }
          OnClearSearch() {
            this.props.groupView.ClearMemberSearch();
          }
          OnSearchFocus() {
            this.props.groupView.UpdateMemberSearch(
              this.props.groupView.GetMemberSearch(),
            );
          }
          OnSearchBlur() {
            0 == this.props.groupView.GetMemberSearch().length &&
              this.props.groupView.ClearMemberSearch();
          }
          render() {
            let e = this.props.groupView,
              t = e.GetMemberSearch(),
              n = "MemberListOptionsContainer";
            e.IsMemberSearchActive() && (n += " SearchActive");
            const i = (e) => ({
              onActivate: (t) => {
                e.OpenChatDialog((0, d.CO)(t)), this.props.onAction();
              },
              onOKActionDescription: (0, w.we)("#Friend_Menu_SendMessage"),
            });
            return h.createElement(
              E.Z,
              {
                className: "GamepadMode MemberListColumn",
                "flow-children": "column",
              },
              h.createElement(
                A.g,
                null,
                h.createElement(
                  "div",
                  { className: n },
                  h.createElement(
                    "form",
                    {
                      className: "socialInputContainer",
                      name: "friendSearchForm",
                      onSubmit: this.OnSearchSubmit,
                    },
                    h.createElement(
                      E.Z,
                      {
                        className: "inputContainer no-drag",
                        "flow-children": "row",
                      },
                      h.createElement(D.BA, {
                        className: "friendSearchInput",
                        type: "text",
                        name: "memberlistSearch",
                        placeholder: (0, w.we)("#SearchByName"),
                        value: t,
                        onChange: this.OnSearchInput,
                        onKeyDown: this.OnSearchKeyDown,
                        onFocus: this.OnSearchFocus,
                        onBlur: this.OnSearchBlur,
                        autoComplete: "off",
                      }),
                      e.has_search_error
                        ? h.createElement(
                            "div",
                            {
                              className: "friendSearchError",
                              title: (0, w.we)("#SearchError"),
                            },
                            h.createElement(p.eTF, { color: "red" }),
                          )
                        : h.createElement(
                            E.Z,
                            {
                              className: "friendSearchClear",
                              onActivate: this.OnClearSearch,
                            },
                            h.createElement(p.sED, null),
                          ),
                    ),
                  ),
                ),
                h.createElement(
                  E.Z,
                  {
                    style: {
                      display: "flex",
                      flex: 1,
                      position: "relative",
                      minHeight: "300px",
                    },
                    "flow-children": "column",
                  },
                  e.GetGroup().BIsMemberListVirtualized()
                    ? h.createElement(G, {
                        groupView: this.props.groupView,
                        inactive: this.props.inactive,
                        context: this.GetFriendRenderContext(),
                        fnGetPanelProps: i,
                      })
                    : h.createElement(N, {
                        groupView: this.props.groupView,
                        inactive: this.props.inactive,
                        context: this.GetFriendRenderContext(),
                        fnGetPanelProps: i,
                      }),
                ),
                h.createElement("div", { className: "disconnectBlocker" }),
              ),
            );
          }
        };
        function k(e) {
          return e ? 36 : 28;
        }
        function L(e) {
          return e ? 44 : 36;
        }
        (0, i.Cg)([C.oI], R.prototype, "OnSearchInput", null),
          (0, i.Cg)([C.oI], R.prototype, "OnSearchSubmit", null),
          (0, i.Cg)([C.oI], R.prototype, "OnSearchKeyDown", null),
          (0, i.Cg)([C.oI], R.prototype, "OnClearSearch", null),
          (0, i.Cg)([C.oI], R.prototype, "OnSearchFocus", null),
          (0, i.Cg)([C.oI], R.prototype, "OnSearchBlur", null),
          (R = (0, i.Cg)([_.PA], R));
        let G = class extends h.Component {
          render() {
            const { groupView: e } = this.props,
              t = e.IsMemberSearchActive() && void 0 !== e.search_results;
            return h.createElement(T, null, ({ height: e, width: n }) =>
              t
                ? h.createElement(P, { ...this.props, width: n, height: e })
                : h.createElement(F, { ...this.props, width: n, height: e }),
            );
          }
        };
        G = (0, i.Cg)([_.PA], G);
        let F = class extends h.Component {
          static contextType = l.QO;
          render() {
            const {
                width: e,
                height: t,
                groupView: n,
                context: i,
                fnGetPanelProps: o,
              } = this.props,
              r = n.GetGroup().memberCountTotal;
            let a = this.props.groupView.GetVirtualizedMemberListView();
            return (
              a.GetViewChangenumber(),
              h.createElement(
                v.Y1,
                {
                  width: e,
                  height: t,
                  itemCount: r,
                  itemSize: L(this.context?.IN_GAMEPADUI),
                  overscanCount: 10,
                  onItemsRendered: this.OnItemsRendered,
                  itemKey: (e) => a.GetAccountIDAt(e) || e,
                  style: { overflowX: "hidden" },
                },
                (e) =>
                  h.createElement(B, {
                    ...e,
                    virtualizer: a,
                    groupView: n,
                    context: i,
                    fnGetPanelProps: o,
                  }),
              )
            );
          }
          OnItemsRendered(e) {
            this.props.groupView
              .GetVirtualizedMemberListView()
              .SetViewExtents(e.visibleStartIndex, e.visibleStopIndex);
          }
        };
        (0, i.Cg)([C.oI], F.prototype, "OnItemsRendered", null),
          (F = (0, i.Cg)([_.PA], F));
        let P = class extends h.Component {
          static contextType = l.QO;
          render() {
            const {
                width: e,
                height: t,
                groupView: n,
                context: i,
                fnGetPanelProps: o,
              } = this.props,
              r = n.search_results.length;
            return h.createElement(
              v.Y1,
              {
                width: e,
                height: t,
                itemCount: r,
                itemSize: L(this.context?.IN_GAMEPADUI),
                overscanCount: 10,
                itemKey: (e) => n.search_results[e].friend.accountid,
                style: { overflowX: "hidden" },
              },
              (e) =>
                h.createElement(x, {
                  ...e,
                  player: n.search_results[e.index].friend,
                  groupView: n,
                  context: i,
                  fnGetPanelProps: o,
                }),
            );
          }
        };
        P = (0, i.Cg)([_.PA], P);
        class B extends h.Component {
          render() {
            const {
                index: e,
                style: t,
                virtualizer: n,
                groupView: i,
                context: o,
                fnGetPanelProps: r,
              } = this.props,
              a = n.GetAccountIDAt(e);
            if (!a) return null;
            const s = n.GetMember(a);
            return s
              ? h.createElement(x, {
                  player: s,
                  groupView: i,
                  style: t,
                  context: o,
                  fnGetPanelProps: r,
                })
              : null;
          }
        }
        const x = ({
          style: e,
          player: t,
          groupView: n,
          className: i,
          bHideGameName: o,
          context: r,
          fnGetPanelProps: a,
        }) => {
          let s = (0, l.Qn)(),
            c = a ? a(t) : {};
          return h.createElement(
            E.Z,
            { style: { ...e, height: `${L(s)}px` }, ...c, className: i },
            h.createElement(U, {
              friend: t,
              bHideGameName: o,
              groupView: n,
              context: r,
            }),
          );
        };
        function O(e, t) {
          return e.filter((e) => e.BMatchesSearchString(t, !1));
        }
        let N = class extends h.Component {
          static contextType = l.QO;
          state = { collapsedBuckets: {} };
          m_disposeGetMemberList;
          constructor(e) {
            super(e),
              (this.m_disposeGetMemberList =
                m.xm.GroupMemberStore.RegisterForGroupMemberList(
                  this.OnMemberListChanged,
                  e.groupView.GetGroup().GetGroupID(),
                ));
          }
          OnMemberListChanged() {
            this.forceUpdate();
          }
          componentWillUnmount() {
            this.m_disposeGetMemberList.unregister();
          }
          SortedPlayerSortFunc(e, t) {
            return e.display_name.localeCompare(t.display_name);
          }
          BuildFilteredBuckets(e, t) {
            let n = [];
            for (let i of e) {
              let e = O(i.member_list, t);
              if (e.length > 0) {
                let t = new b.rV(i.id, this.SortedPlayerSortFunc, () => {});
                t.SetMembers(e), n.push(t);
              }
            }
            return n;
          }
          render() {
            const {
                inactive: e,
                groupView: t,
                context: n,
                fnGetPanelProps: i,
              } = this.props,
              { collapsedBuckets: o } = this.state;
            if (e) return null;
            let r = m.xm.GroupMemberStore.GetGroupMemberList(
              t.GetGroup().GetGroupID(),
            );
            if (0 == r.length) return null;
            let a = t.normalizedMemberSearch;
            a.length > 0 && (r = this.BuildFilteredBuckets(r, a));
            const s = (e, o, a) => {
                const s = r[e],
                  l = s.id === b.fW ? "partybeacon" : "regular";
                return h.createElement(x, {
                  style: a,
                  className: `chatroomBucket_${l}`,
                  bHideGameName: s.BIsGameGroup(),
                  groupView: t,
                  player: s.member_list[o],
                  context: n,
                  fnGetPanelProps: i,
                });
              },
              l = (e, t) => {
                const n = r[e],
                  i = o[n.id];
                return h.createElement(V, {
                  collapsible: r.length > 1,
                  collapsed: i,
                  memberCount: n.member_list.length,
                  name: n.name,
                  onCollapseChanged: () =>
                    this.setState({ collapsedBuckets: { ...o, [n.id]: !i } }),
                  style: t,
                });
              },
              c = this.context?.IN_GAMEPADUI;
            return h.createElement(
              "div",
              {
                className: (0, y.A)(
                  !c && "CompactFriendsList",
                  "chatRoomMembers",
                  "groupMemberList",
                ),
              },
              h.createElement(
                "div",
                {
                  className: "friendGroup",
                  style: { width: "100%", height: "100%" },
                },
                h.createElement(
                  "div",
                  {
                    className: "ChatRoomMemberScrollList_List",
                    style: {
                      width: "100%",
                      height: "100%",
                      boxSizing: "border-box",
                    },
                  },
                  h.createElement(T, null, ({ width: e, height: t }) =>
                    h.createElement(
                      H,
                      {
                        width: e,
                        height: t,
                        buckets: r.map((e) => (o[e.id] ? [] : e.member_list)),
                        itemSize: L(c),
                        estimatedItemSize: L(c),
                        renderBucketHeader: l,
                        bucketHeaderSize: k(c),
                        itemKey: (e, t) => r[e].member_list[t].accountid,
                      },
                      s,
                    ),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([C.oI], N.prototype, "OnMemberListChanged", null),
          (N = (0, i.Cg)([_.PA], N));
        class V extends h.PureComponent {
          render() {
            const {
              collapsed: e,
              collapsible: t,
              onCollapseChanged: n,
              style: i,
              memberCount: o,
              name: r,
            } = this.props;
            return h.createElement(
              "div",
              {
                className: (0, y.A)("groupName", e && "Collapsed"),
                onClick: () => t && n(),
                style: i,
              },
              h.createElement(
                "div",
                { className: "groupIcon" },
                h.createElement(p.YJl, null),
              ),
              t &&
                h.createElement(
                  "div",
                  { className: "ExpandPlusMinus" },
                  h.createElement(p.f5w, null),
                ),
              h.createElement("span", { className: "groupCountCollapsed" }, o),
              h.createElement(
                "div",
                { className: "groupLabelsContainer" },
                h.createElement("span", { className: "groupNameLabel" }, r),
                h.createElement(
                  "span",
                  { className: "groupCount" },
                  "(",
                  o,
                  ")",
                ),
              ),
            );
          }
        }
        let U = class extends h.Component {
          OnFriendSelected(e, t) {
            this.props.friend.OpenChatDialog((0, d.CO)(t)),
              this.props.groupView.ClearMemberSearch();
          }
          render() {
            const {
              friend: e,
              groupView: t,
              context: n,
              bHideGameName: i,
            } = this.props;
            let o = [],
              r = "",
              a = t.GetGroup(),
              s = t.isMemberListExpanded,
              c = a.GetMemberRank(e.accountid),
              m = e.efriendrelationship;
            switch (c) {
              default:
                break;
              case 30:
                r = "Moderator";
                break;
              case 40:
                r = "Officer";
                break;
              case 50:
                (r = "Owner"),
                  a.BIsClanChatRoom() ||
                    o.push(
                      h.createElement(
                        "div",
                        {
                          key: "rankIcon",
                          className:
                            "rankIcon rankOwner" +
                            (e.is_friend ? " isFriend" : ""),
                        },
                        h.createElement(p.OeC, null),
                      ),
                    );
            }
            switch (
              (a.BIsClanChatRoom() &&
                (c >= 40
                  ? o.push(
                      h.createElement(
                        "div",
                        { key: "rankIcon", className: "rankIcon rankOwner" },
                        h.createElement("img", {
                          src:
                            l.TS.COMMUNITY_CDN_URL +
                            "public/images/skin_1/comment_modindicator_officer.png",
                        }),
                      ),
                    )
                  : c >= 30 &&
                    o.push(
                      h.createElement(
                        "div",
                        { key: "rankIcon", className: "rankIcon rankOwner" },
                        h.createElement("img", {
                          src:
                            l.TS.COMMUNITY_CDN_URL +
                            "public/images/skin_1/comment_modindicator_moderator.png",
                        }),
                      ),
                    )),
              m)
            ) {
              case 3:
              case 6:
                o.push(
                  h.createElement(
                    "div",
                    { key: "friendIcon", className: "chatMemberFriendIcon" },
                    h.createElement(p.GSe, null),
                  ),
                );
                break;
              case 2:
                o.push(
                  h.createElement(
                    "div",
                    { key: "friendIcon", className: "chatMemberFriendIcon" },
                    h.createElement(p.GSe, { bPending: !0 }),
                  ),
                );
            }
            a.GetMemberPartyBeacon(e.accountid) &&
              o.push(
                h.createElement(
                  "div",
                  { key: "playIcon", className: "chatMemberPartyBeaconIcon" },
                  h.createElement(p.jGG, null),
                ),
              );
            let d = {
              friend: e,
              context: n,
              className: r,
              action: this.OnFriendSelected,
              bHideGameName: i,
              noActions: "chatmemberlistselection" == n.chatContext,
            };
            return s
              ? h.createElement(f.bP, { ...d, listStatusIndicatorLeft: o })
              : h.createElement(f.gv, { ...d }, o);
          }
        };
        (0, i.Cg)([C.oI], U.prototype, "OnFriendSelected", null),
          (U = (0, i.Cg)([_.PA], U));
        class H extends h.Component {
          m_memoizedIndices = {};
          m_ref = h.createRef();
          componentDidUpdate(e) {
            const { renderBucketFooter: t, renderBucketHeader: n } = this.props,
              i = t || n;
            e.buckets.length != this.props.buckets.length &&
              this.m_ref?.current &&
              i &&
              this.m_ref.current.resetAfterIndex(0, !0);
          }
          render() {
            this.m_memoizedIndices = {};
            const {
              width: e,
              height: t,
              children: n,
              renderBucketFooter: i,
              renderBucketHeader: o,
              buckets: r,
            } = this.props;
            let a = r.reduce((e, t) => e + t.length, 0);
            return (
              o && (a += r.length),
              i && (a += r.length),
              h.createElement(
                v._m,
                {
                  width: e,
                  height: t,
                  itemCount: a,
                  itemSize: this.CalculateItemHeight,
                  itemKey: this.ItemKey,
                  ref: this.m_ref,
                  style: { overflowX: "hidden" },
                },
                (e) => {
                  const { bucket: t, item: r } = this.RawToRelativeIndex(
                    e.index,
                  );
                  return "header" === r
                    ? o(t, e.style)
                    : "footer" === r
                      ? i(t, e.style)
                      : n(t, r, e.style);
                },
              )
            );
          }
          ItemKey(e) {
            const { itemKey: t } = this.props,
              { bucket: n, item: i } = this.RawToRelativeIndex(e);
            return "header" === i || "footer" === i
              ? `${n}_${i}_${e}`
              : t(n, i);
          }
          CalculateItemHeight(e) {
            const { bucket: t, item: n } = this.RawToRelativeIndex(e),
              {
                bucketHeaderSize: i,
                bucketFooterSize: o,
                itemSize: r,
              } = this.props;
            return "header" === n
              ? "function" == typeof i
                ? i(t)
                : "number" == typeof i
                  ? i
                  : (console.warn(
                      "[VirtualizedBucketList]: Header found but no header size provided!",
                    ),
                    0)
              : "footer" === n
                ? "function" == typeof o
                  ? o(t)
                  : "number" == typeof o
                    ? o
                    : (console.warn(
                        "[VirtualizedBucketList]: Footer found but no footer size provided!",
                      ),
                      0)
                : "function" == typeof r
                  ? r(t, n)
                  : r;
          }
          RawToRelativeIndex(e) {
            if (this.m_memoizedIndices[e]) return this.m_memoizedIndices[e];
            if (this.m_memoizedIndices[e - 1]) {
              const t = this.CalculateNextRelativeIndex(
                this.m_memoizedIndices[e - 1],
              );
              return (this.m_memoizedIndices[e] = t), t;
            }
            return (
              (this.m_memoizedIndices[e] = this.InternalRawToRelativeIndex(e)),
              this.m_memoizedIndices[e]
            );
          }
          InternalRawToRelativeIndex(e) {
            const {
              buckets: t,
              renderBucketHeader: n,
              renderBucketFooter: i,
            } = this.props;
            let o = 0,
              r = n ? -1 : 0;
            for (; e > 0; ) {
              if (!(e > t[o].length + (i ? 1 : 0))) {
                r += e;
                break;
              }
              (e -= t[o].length + (i ? 1 : 0) + (n ? 1 : 0)), o++;
            }
            return -1 === r
              ? { bucket: o, item: "header" }
              : r === t[o].length
                ? { bucket: o, item: "footer" }
                : { bucket: o, item: r };
          }
          CalculateNextRelativeIndex(e) {
            const {
                buckets: t,
                renderBucketFooter: n,
                renderBucketHeader: i,
              } = this.props,
              { bucket: o, item: r } = e,
              a = !!i,
              s = !!n;
            return "header" === r
              ? t[o].length
                ? { bucket: o, item: 0 }
                : s
                  ? { bucket: o, item: "footer" }
                  : { bucket: o + 1, item: "header" }
              : "footer" === r
                ? { bucket: o + 1, item: a ? "header" : 0 }
                : r < t[o].length - 1
                  ? { bucket: o, item: r + 1 }
                  : s
                    ? { bucket: o, item: "footer" }
                    : { bucket: o + 1, item: a ? "header" : 0 };
          }
        }
        (0, i.Cg)([C.oI], H.prototype, "ItemKey", null),
          (0, i.Cg)([C.oI], H.prototype, "CalculateItemHeight", null);
        var W = n(70552),
          z = n(11315),
          j = n(98540),
          q = n(39168),
          K = n(90095),
          Z = n(23038),
          Q = n(56517),
          $ = n(50622),
          X = n(77765),
          Y = n(49912),
          J = n(8318),
          ee = n(32245),
          te = n(13112),
          ne = n(77842),
          ie = n(13346),
          oe = n(24941),
          re = n(60340),
          ae = n(34879),
          se = n(11057),
          le = n.n(se),
          ce = n(92453),
          me = n(7153),
          de = n(17070),
          ue = n(69168);
        const he = h.lazy(() =>
            Promise.all([n.e(9489), n.e(7653)]).then(n.bind(n, 43668)),
          ),
          pe = 1e4,
          _e = 6e4;
        let ge = class extends h.Component {
          static contextType = de.QO;
          m_msWentInactive = 0;
          m_bShownTabIsGroupChat = !0;
          m_keyEventListener = "keydown";
          m_refBroadcastContainer = h.createRef();
          m_elMainContent;
          constructor(e) {
            super(e),
              (this.state = { dropToInviteFriend: void 0, bShowBothChats: !1 }),
              this.props.popup &&
                this.props.popup.addEventListener(
                  this.m_keyEventListener,
                  this.OnHTMLKeyEvent,
                );
          }
          OnDragEnter(e, t) {
            if (
              ((0, X.w)(
                (e && "friend" == e.type) || t,
                "Invalid data type passed to ChatRoomGroupDialog.OnDragEnter",
              ),
              e)
            ) {
              let t = e;
              t.friend &&
                t.sourceContext.group != this.props.groupView.GetGroup() &&
                this.setState({ dropToInviteFriend: t.friend });
            }
            return !0;
          }
          OnDragLeave() {
            this.state.dropToInviteFriend &&
              this.setState({ dropToInviteFriend: void 0 });
          }
          OnDragOver(e) {
            e.dataTransfer.dropEffect = "move";
          }
          OnDrop(e, t) {
            (0, X.w)(
              (e && "friend" == e.type) || 0 != t.dataTransfer.files.length,
              "Invalid data type passed to ChatRoomGroupDialog.OnDrop",
            );
            let n = this.props.groupView.GetChatView();
            if (e && "friend" == e.type) {
              let n = e;
              if (n.friend) {
                this.state.dropToInviteFriend &&
                  this.setState({ dropToInviteFriend: void 0 }),
                  d.ZM.DragDropManager.SetDropConsumed();
                let e = t.currentTarget.ownerDocument.defaultView;
                n.sourceContext.group != this.props.groupView.GetGroup() &&
                  (0, ee.nn)(
                    {
                      invitee: n.friend,
                      chatview: null,
                      invitedto: this.props.groupView.GetGroup(),
                    },
                    (0, d.CO)(t),
                    e,
                  );
              }
            } else if (0 != t.dataTransfer.files.length) {
              let e = t.dataTransfer.files[0];
              n.SetFileToUpload(e);
            }
          }
          componentDidUpdate(e) {
            e.isActive && !this.props.isActive
              ? this.OnBecameInactive()
              : this.props.isActive && this.OnBecameActive();
          }
          m_iIntervalInactive;
          m_iIntervalVeryInactive;
          OnBecameInactive() {
            (this.m_msWentInactive = performance.now()),
              (this.m_iIntervalInactive = SetBackgroundTimeout(
                this.forceUpdate.bind(this),
                10100,
              )),
              (this.m_iIntervalVeryInactive = SetBackgroundTimeout(
                this.forceUpdate.bind(this),
                60100,
              ));
          }
          OnBecameActive() {
            (this.m_msWentInactive = 0), this.ClearIntervals();
          }
          GetTitleBarDragDropProps() {
            let e = { rgAcceptedTypes: [], bAcceptsFiles: !0 };
            return (e.fnDrop = this.OnDrop), e;
          }
          GetChatBodyDragDropProps() {
            let e = { rgAcceptedTypes: ["friend"], bAcceptsFiles: !0 };
            return (
              (e.fnDragEnter = this.OnDragEnter),
              (e.fnDragLeave = this.OnDragLeave),
              (e.fnDragOver = this.OnDragOver),
              (e.fnDrop = this.OnDrop),
              e
            );
          }
          ClearIntervals() {
            this.m_iIntervalInactive &&
              (ClearBackgroundTimeout(this.m_iIntervalInactive),
              (this.m_iIntervalInactive = void 0)),
              this.m_iIntervalVeryInactive &&
                (ClearBackgroundTimeout(this.m_iIntervalVeryInactive),
                (this.m_iIntervalVeryInactive = void 0));
          }
          OnHTMLKeyEvent(e) {
            if (
              l.TS.IN_CLIENT &&
              this.props.isActive &&
              e.altKey &&
              !e.ctrlKey &&
              !e.shiftKey
            ) {
              const { groupView: t } = this.props;
              if (!t) return;
              38 === e.keyCode && t.SelectPreviousChannel(),
                40 === e.keyCode && t.SelectNextChannel();
            }
          }
          componentDidMount() {
            (this.props.popup ? this.props.popup : window).addEventListener(
              "resize",
              this.OnLayoutChange,
            );
          }
          componentWillUnmount() {
            this.ClearIntervals(),
              this.props.popup &&
                this.props.popup.removeEventListener(
                  this.m_keyEventListener,
                  this.OnHTMLKeyEvent,
                );
            (this.props.popup ? this.props.popup : window).removeEventListener(
              "resize",
              this.OnLayoutChange,
            );
          }
          CalculateBroadcastSectionStyles(e) {
            if (this.props.groupView.m_bChatHidden)
              return { width: "100%", height: "100%" };
            const {
                nWatchPartyBroadcastHeightPercentage: t,
                nWatchPartyBroadcastWidthPercentage: n,
              } = d.ZM.UIDisplayPrefs,
              i = {};
            if (e) {
              const e = t || 66;
              if (((i.height = `${e}%`), this.m_elMainContent)) {
                const { clientWidth: t, clientHeight: n } =
                    this.m_elMainContent,
                  o = (9 / 16) * t + 50,
                  r = (0, Y.OQ)(e, 1, (o / n) * 100);
                i.height = `${r}%`;
              }
            } else (i.width = n ? `${n}%` : "66%"), (i.overflowY = "auto");
            return i;
          }
          ShouldShowVerticalBroadcastChat() {
            return void 0 !== this.props.groupView.m_bShowVerticalBroadcastChat
              ? this.props.groupView.m_bShowVerticalBroadcastChat
              : !!this.m_elMainContent &&
                  this.m_elMainContent.clientHeight /
                    this.m_elMainContent.clientWidth >
                    5 / 7;
          }
          OnLayoutChange() {
            this.forceUpdate();
          }
          OnGrabberMouseDown(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            t.addEventListener("mousemove", this.HandleMouseMove),
              t.addEventListener("mouseup", this.UnregisterDragEvents),
              this.setState({ bDraggingChatGrabber: !0 });
          }
          HandleMouseMove(e) {
            e.preventDefault(), e.stopPropagation();
            let t =
                this.m_refBroadcastContainer.current.getBoundingClientRect(),
              n =
                this.m_refBroadcastContainer.current.parentElement.getBoundingClientRect();
            const i = this.ShouldShowVerticalBroadcastChat(),
              o = i ? t.top : t.left,
              r = i ? e.clientY : e.clientX,
              a = i ? n.height : n.width,
              s = (0, Y.OQ)(((r - o) / a) * 100, 1, 100),
              l = i
                ? "nWatchPartyBroadcastHeightPercentage"
                : "nWatchPartyBroadcastWidthPercentage";
            d.ZM.SetUIDisplayPref(l, s);
          }
          UnregisterDragEvents(e) {
            e.view.removeEventListener("mousemove", this.HandleMouseMove),
              e.view.removeEventListener("mouseup", this.UnregisterDragEvents),
              this.setState({ bDraggingChatGrabber: !1 });
          }
          OnLocalStreamChange(e) {
            this.props.groupView.SetLocalBroadcastId(e);
          }
          HideChat() {
            this.props.groupView.SetChatHidden(!0);
          }
          ShowChat() {
            this.props.groupView.SetChatHidden(!1);
          }
          ToggleVerticalBroadcastChat() {
            this.props.groupView.SetVerticalBroadcastChat(
              !this.ShouldShowVerticalBroadcastChat(),
            ),
              this.props.groupView.SetChatHidden(!1);
          }
          SetMainContentRef(e) {
            (this.m_elMainContent = e), this.OnLayoutChange();
          }
          ToggleShowBothChats() {
            this.state.bShowBothChats
              ? this.m_bShownTabIsGroupChat &&
                this.state.bShowBothChats &&
                this.props.groupView.SetGlobalBroadcastChatShown(!1)
              : ((this.m_bShownTabIsGroupChat =
                  !this.props.groupView.m_bShowGlobalChat),
                this.props.groupView.SetGlobalBroadcastChatShown(!0)),
              this.setState({ bShowBothChats: !this.state.bShowBothChats });
          }
          ToggleVoiceChat() {
            let e = this.props.groupView,
              t = e.GetGroup(),
              n = e.GetSelectedChatView().chat;
            m.xm.VoiceStore.IsVoiceActiveForGroup(t.GetGroupID())
              ? m.xm.VoiceStore.OnUserEndVoiceChat()
              : n.BIsVoiceAllowed() &&
                (0, r.pg)(
                  h.createElement(Se, { groupView: e }),
                  this.props.popup,
                );
          }
          RenderInnerChatTabs() {
            const e = this.props.groupView,
              t = e.GetGroup();
            return h.createElement(
              "div",
              { className: "ChatBodyControls" },
              h.createElement(
                "div",
                {
                  className: "Close",
                  onClick: this.HideChat,
                  title: (0, w.we)("#Broadcast_View_HideChat"),
                },
                h.createElement(p.K7s, { showChat: !1 }),
              ),
              h.createElement(
                "div",
                { className: "InnerChatTabs" },
                h.createElement(
                  "div",
                  {
                    className: (0, y.A)(
                      "InnerChatTab",
                      !e.m_bShowGlobalChat && "Active",
                    ),
                    onClick: () => e.SetGlobalBroadcastChatShown(!1),
                  },
                  h.createElement(q.RB, { group: t }),
                  h.createElement(j.I, { group: t, micro: !0 }),
                  h.createElement(
                    "span",
                    { className: "InnerChatTabLabel" },
                    (0, w.we)("#Broadcast_Chat_GroupChatTab", t.name),
                  ),
                ),
                (!this.state.bShowBothChats ||
                  (this.state.bShowBothChats &&
                    this.ShouldShowVerticalBroadcastChat())) &&
                  h.createElement(
                    "div",
                    {
                      className: (0, y.A)(
                        "InnerChatTab",
                        e.m_bShowGlobalChat && "Active",
                      ),
                      onClick: () => e.SetGlobalBroadcastChatShown(!0),
                    },
                    h.createElement(p.qzq, null),
                    h.createElement(
                      "span",
                      { className: "InnerChatTabLabel" },
                      (0, w.we)("#Broadcast_Chat_PublicChatTab"),
                    ),
                  ),
              ),
              h.createElement(
                "div",
                {
                  className: "showBothTabs",
                  onClick: this.ToggleShowBothChats,
                  title: (0, w.we)(
                    this.state.bShowBothChats
                      ? "#Broadcast_View_ShowSingleChats"
                      : "#Broadcast_View_ShowBothChats",
                  ),
                },
                h.createElement(p.QQ4, null),
              ),
            );
          }
          render() {
            if (this.props.bSteamDeck) return this.renderSteamDeck();
            if (!this.props.groupView || !this.props.groupView.GetChatView())
              return null;
            let e = this.props.groupView.GetGroup(),
              t = this.props.groupView,
              n = t.GetSelectedChatView(),
              i = t.GetPopoverChatView(),
              o = n.chat,
              r = this.state.bShowBothChats && t.isBroadcastShown,
              a = t.m_bShowGlobalChat,
              s = (a && r) || (!a && !r),
              c = (r && t.isBroadcastShown) || (!r && a),
              d = this.state.dropToInviteFriend
                ? h.createElement(ee.J3, {
                    chatView: n,
                    friend: this.state.dropToInviteFriend,
                  })
                : null,
              _ = !1,
              g = null,
              C = this.ShouldShowVerticalBroadcastChat(),
              f = t.m_bChatHidden,
              S = 4;
            if (
              (l.TS.STEAM_TV && (S = 2),
              e.watching_broadcast_steamid && t.isBroadcastShown)
            ) {
              const n = this.CalculateBroadcastSectionStyles(C),
                i = h.createElement(he, {
                  ref: this.m_refBroadcastContainer,
                  steamID: e.watching_broadcast_steamid.ConvertTo64BitString(),
                  localSteamID: t.m_strLocalBroadcastId,
                  watchLocation: S,
                  bWebRTC: !1,
                  onRequestClose: t.HideBroadcast,
                  onLocalStreamChange: this.OnLocalStreamChange,
                  actions: [
                    h.createElement("div", {
                      key: "ChatPosToggle",
                      onClick: this.ToggleVerticalBroadcastChat,
                      title: `${C ? ((0, w.we))("#Broadcast_View_Stack_H") : ((0, w.we))("#Broadcast_View_Stack_V")}`,
                      className:
                        "BroadcastChatPositionToggle " +
                        (C ? "right" : "bottom"),
                    }),
                  ],
                  style: n,
                  onTheaterMode: t.ToggleTheaterModeBroadcastChat,
                  bVerticalBroadcastChat: !C,
                });
              (g = h.createElement(
                h.Fragment,
                null,
                i,
                !f &&
                  h.createElement("div", {
                    className:
                      "BroadcastChatDivider " + (C ? "vertical" : "horizontal"),
                    onMouseDown: this.OnGrabberMouseDown,
                  }),
                f &&
                  h.createElement(ee.Ko, {
                    onClick: this.ShowChat,
                    edge: C ? "bottom" : "right",
                  }),
              )),
                (_ = !0);
            } else _ = !1;
            let v = !1,
              b = !1,
              I = {};
            if (!this.props.isActive) {
              I.display = "none";
              let e = this.m_msWentInactive
                ? performance.now() - this.m_msWentInactive
                : _e;
              e >= pe && (v = !0), e >= _e && !g && (b = !0);
            }
            let y = "chatWindow MultiUserChat",
              D = "ChatRoomGroupDialog_contents";
            i && (D += " InsetWindowOpen"),
              r && (D += " BothChatsDisplayed"),
              e.IsNamedGroupChat() && (y += " namedGroup");
            let A = "chatBody";
            this.state.dropToInviteFriend &&
              (A = "chatBody chatRoomActiveDrop"),
              m.xm.SettingsStore.FriendsSettings.bCompactFriendsList &&
                (y += " compactView"),
              _ && (y += " broadcastVisible");
            let T = null;
            this.props.bHideMemberList ||
              (T = h.createElement(M, {
                groupView: this.props.groupView,
                inactive: v,
              }));
            const R =
              this.props.bHideMessageInput ||
              (t.isBroadcastShown && ((!r && t.m_bShowGlobalChat) || f))
                ? null
                : h.createElement(ue.gs.Consumer, null, (e) =>
                    h.createElement(W.o, {
                      key: o.unique_id,
                      chatView: t.GetActiveChatView(),
                      isActive: this.props.isActive,
                      disabled: !1,
                      ownerWindow: e.ownerWindow,
                    }),
                  );
            let k,
              L = h.createElement(
                u.D,
                {
                  "flow-children": "column",
                  style: I,
                  className: "chatHistoryAndMembers",
                  ...this.GetChatBodyDragDropProps(),
                },
                h.createElement(Z.A, null, d),
                h.createElement(
                  "div",
                  { className: "displayColumn fullWidth" },
                  h.createElement(
                    E.Z,
                    {
                      "flow-children": "row",
                      className: "displayRow minHeightZero",
                      navEntryPreferPosition: me.iU.PREFERRED_CHILD,
                    },
                    h.createElement(
                      "div",
                      { className: "ChatRoomGroupDialog_history" },
                      m.xm.UIStore.show_winter_sale_ui &&
                        !m.xm.SettingsStore.FriendsSettings
                          .bDisableRoomEffects &&
                        h.createElement(J.Y, {
                          effectManager: o.RoomEffectManager(),
                        }),
                      h.createElement(ne.D, {
                        chatView: n,
                        isActive: this.props.isActive,
                      }),
                      h.createElement(
                        Z.A,
                        null,
                        h.createElement(ee.n$, { groupView: t }),
                      ),
                    ),
                    h.createElement("div", { className: "dropTargetBox" }),
                    T,
                  ),
                  R,
                ),
              );
            if (e.watching_broadcast_steamid && t.isBroadcastShown) {
              const n = h.createElement(Q.I, {
                emoticonStore: m.xm.ChatStore.EmoticonStore,
                steamID: e.watching_broadcast_steamid.ConvertTo64BitString(),
                broadcastID: "0",
                watchLocation: S,
                hidden: !t.m_bShowGlobalChat,
                className: this.state.bDraggingChatGrabber
                  ? "avoidEvents"
                  : void 0,
              });
              k = h.createElement(h.Fragment, null, n);
            }
            let G = "chatStack " + (C ? "displayRow" : "displayColumn");
            return (
              c && (G += " GlobalChatVisible"),
              s && (G += " GroupChatVisible"),
              h.createElement(
                u.D,
                {
                  fnCanTakeFocus: () => this.props.isActive,
                  "flow-children": "column",
                  "data-activechat": this.props.isActive,
                  style: I,
                  className: y,
                  ...this.GetTitleBarDragDropProps(),
                },
                !b &&
                  !this.props.bHideHeader &&
                  !this.context?.IN_GAMEPADUI &&
                  h.createElement(
                    "div",
                    { className: "chatHeader titleBarContainer" },
                    h.createElement("div", { className: "chatHeaderGradient" }),
                    h.createElement(j.z7, { groupView: t }),
                    h.createElement("div", { className: "disconnectBlocker" }),
                  ),
                !b &&
                  h.createElement(
                    be,
                    { className: D, readyToRender: e.readyToRender },
                    h.createElement(te.aq, { groupView: t, inactive: v }),
                    h.createElement(
                      "div",
                      {
                        className:
                          "ChatRoomGroup_MainAndChatEntry displayColumn",
                        ref: this.SetMainContentRef,
                      },
                      h.createElement(
                        "div",
                        {
                          className:
                            "ChatRoomGroup_Main_ContentAndMembers displayRow",
                        },
                        h.createElement(
                          "div",
                          {
                            className: `ChatRoomGroup_Main_Content ${C ? "Vertical" : "Horizontal"} ${f ? "chatHidden" : ""}`,
                          },
                          g,
                          (!t.m_bChatHidden || !t.isBroadcastShown) &&
                            h.createElement(
                              "div",
                              { className: A },
                              t.isBroadcastShown && this.RenderInnerChatTabs(),
                              h.createElement(
                                "div",
                                { className: G },
                                L,
                                r &&
                                  h.createElement("div", {
                                    className: "BothChatsSeperator",
                                  }),
                                r &&
                                  !this.ShouldShowVerticalBroadcastChat() &&
                                  h.createElement(
                                    "div",
                                    {
                                      className: "InnerChatTab",
                                      onClick: () =>
                                        t.SetGlobalBroadcastChatShown(!0),
                                    },
                                    h.createElement(p.qzq, null),
                                    h.createElement(
                                      "span",
                                      { className: "InnerChatTabLabel" },
                                      (0, w.we)(
                                        "#Broadcast_Chat_PublicChatTab",
                                      ),
                                    ),
                                  ),
                                k,
                              ),
                              !s && t.isBroadcastShown && R,
                            ),
                        ),
                      ),
                    ),
                  ),
              )
            );
          }
          renderSteamDeck() {
            if (!this.props.groupView || !this.props.groupView.GetChatView())
              return null;
            let e = this.props.groupView.GetGroup(),
              t = this.props.groupView,
              n = t.GetSelectedChatView(),
              i = t.GetPopoverChatView(),
              o = n.chat,
              r = this.state.bShowBothChats && t.isBroadcastShown,
              a = t.m_bShowGlobalChat,
              s = (a && r) || (!a && !r),
              c = (r && t.isBroadcastShown) || (!r && a),
              d = this.state.dropToInviteFriend
                ? h.createElement(ee.J3, {
                    chatView: n,
                    friend: this.state.dropToInviteFriend,
                  })
                : null,
              _ = !1,
              g = null,
              C = this.ShouldShowVerticalBroadcastChat(),
              f = t.m_bChatHidden,
              S = 4;
            if (
              (l.TS.STEAM_TV && (S = 2),
              e.watching_broadcast_steamid && t.isBroadcastShown)
            ) {
              const n = this.CalculateBroadcastSectionStyles(C),
                i = h.createElement(he, {
                  ref: this.m_refBroadcastContainer,
                  steamID: e.watching_broadcast_steamid.ConvertTo64BitString(),
                  localSteamID: t.m_strLocalBroadcastId,
                  watchLocation: S,
                  bWebRTC: !1,
                  onRequestClose: t.HideBroadcast,
                  onLocalStreamChange: this.OnLocalStreamChange,
                  actions: [
                    h.createElement("div", {
                      key: "ChatPosToggle",
                      onClick: this.ToggleVerticalBroadcastChat,
                      title: `${C ? ((0, w.we))("#Broadcast_View_Stack_H") : ((0, w.we))("#Broadcast_View_Stack_V")}`,
                      className:
                        "BroadcastChatPositionToggle " +
                        (C ? "right" : "bottom"),
                    }),
                  ],
                  style: n,
                  onTheaterMode: t.ToggleTheaterModeBroadcastChat,
                  bVerticalBroadcastChat: !C,
                });
              (g = h.createElement(
                h.Fragment,
                null,
                i,
                !f &&
                  h.createElement("div", {
                    className:
                      "BroadcastChatDivider " + (C ? "vertical" : "horizontal"),
                    onMouseDown: this.OnGrabberMouseDown,
                  }),
                f &&
                  h.createElement(ee.Ko, {
                    onClick: this.ShowChat,
                    edge: C ? "bottom" : "right",
                  }),
              )),
                (_ = !0);
            } else _ = !1;
            let v = !1,
              b = !1,
              I = {};
            if (!this.props.isActive) {
              I.display = "none";
              let e = this.m_msWentInactive
                ? performance.now() - this.m_msWentInactive
                : _e;
              e >= pe && (v = !0), e >= _e && !g && (b = !0);
            }
            let y = "chatWindow MultiUserChat";
            n.IsFriendChat() || (y += " GroupChat");
            let D = "ChatRoomGroupDialog_contents";
            i && (D += " InsetWindowOpen"),
              r && (D += " BothChatsDisplayed"),
              e.IsNamedGroupChat() && (y += " namedGroup");
            let A = "chatBody";
            this.state.dropToInviteFriend &&
              (A = "chatBody chatRoomActiveDrop"),
              m.xm.SettingsStore.FriendsSettings.bCompactFriendsList &&
                (y += " compactView"),
              _ && (y += " broadcastVisible");
            const T =
              this.props.bHideMessageInput ||
              (t.isBroadcastShown && ((!r && t.m_bShowGlobalChat) || f))
                ? null
                : h.createElement(ue.gs.Consumer, null, (e) =>
                    h.createElement(W.o, {
                      key: o.unique_id,
                      chatView: t.GetActiveChatView(),
                      isActive: this.props.isActive,
                      disabled: !1,
                      ownerWindow: e.ownerWindow,
                    }),
                  );
            let M,
              R = h.createElement(
                E.Z,
                {
                  "flow-children": "column",
                  style: I,
                  className: "chatHistoryAndMembers",
                },
                h.createElement(Z.A, null, d),
                h.createElement(
                  "div",
                  { className: "displayColumn fullWidth" },
                  h.createElement(
                    E.Z,
                    {
                      "flow-children": "row",
                      className: "displayRow minHeightZero",
                      navEntryPreferPosition: me.iU.PREFERRED_CHILD,
                    },
                    h.createElement(
                      "div",
                      {
                        className:
                          "ChatRoomGroupDialog_history " +
                          (o.GetVoiceAllowed() ? "voiceRoom" : ""),
                      },
                      m.xm.UIStore.show_winter_sale_ui &&
                        !m.xm.SettingsStore.FriendsSettings
                          .bDisableRoomEffects &&
                        h.createElement(J.Y, {
                          effectManager: o.RoomEffectManager(),
                        }),
                      h.createElement(ne.D, {
                        chatView: n,
                        isActive: this.props.isActive,
                      }),
                      h.createElement(
                        Z.A,
                        null,
                        h.createElement(ee.n$, { groupView: t }),
                      ),
                    ),
                    h.createElement(ve, { groupView: t }),
                  ),
                  T,
                ),
              );
            if (e.watching_broadcast_steamid && t.isBroadcastShown) {
              const n = h.createElement(Q.I, {
                emoticonStore: m.xm.ChatStore.EmoticonStore,
                steamID: e.watching_broadcast_steamid.ConvertTo64BitString(),
                broadcastID: "0",
                watchLocation: S,
                hidden: !t.m_bShowGlobalChat,
                className: this.state.bDraggingChatGrabber
                  ? "avoidEvents"
                  : void 0,
              });
              M = h.createElement(h.Fragment, null, n);
            }
            let k = "chatStack " + (C ? "displayRow" : "displayColumn");
            c && (k += " GlobalChatVisible"), s && (k += " GroupChatVisible");
            let L = {};
            m.xm.VoiceStore.IsVoiceActiveForGroup(e.GetGroupID()) &&
              ((L.onSecondaryButton = () => this.ToggleVoiceChat()),
              (L.onSecondaryActionDescription = (0, w.we)(
                "#Chat_ChatRoomGroup_EndVoiceChat",
              )));
            return h.createElement(
              u.D,
              {
                fnCanTakeFocus: () => this.props.isActive,
                "flow-children": "row",
                "data-activechat": this.props.isActive,
                style: I,
                className: y,
                ...this.GetTitleBarDragDropProps(),
                ...L,
              },
              h.createElement(
                E.Z,
                {
                  "flow-children": "column",
                  className: "ChatRoomGroup_WindowContent",
                },
                !b &&
                  h.createElement(
                    "div",
                    { className: "chatHeader titleBarContainer" },
                    h.createElement("div", { className: "chatHeaderGradient" }),
                    h.createElement(j.wu, { groupView: t }),
                    h.createElement("div", { className: "disconnectBlocker" }),
                  ),
                !b &&
                  h.createElement(
                    be,
                    { className: D, readyToRender: e.readyToRender },
                    !1,
                    h.createElement(
                      "div",
                      {
                        className:
                          "ChatRoomGroup_MainAndChatEntry displayColumn",
                        ref: this.SetMainContentRef,
                      },
                      h.createElement(
                        "div",
                        {
                          className:
                            "ChatRoomGroup_Main_ContentAndMembers displayRow",
                        },
                        h.createElement(
                          E.Z,
                          {
                            className: `ChatRoomGroup_Main_Content ${C ? "Vertical" : "Horizontal"} ${f ? "chatHidden" : ""}`,
                            "flow-children": "row",
                          },
                          g,
                          (!t.m_bChatHidden || !t.isBroadcastShown) &&
                            h.createElement(
                              "div",
                              { className: A },
                              this.context?.IN_GAMEPADUI &&
                                h.createElement(z.H, null),
                              t.isBroadcastShown && this.RenderInnerChatTabs(),
                              h.createElement(
                                "div",
                                { className: k },
                                R,
                                r &&
                                  h.createElement("div", {
                                    className: "BothChatsSeperator",
                                  }),
                                r &&
                                  !this.ShouldShowVerticalBroadcastChat() &&
                                  h.createElement(
                                    "div",
                                    {
                                      className: "InnerChatTab",
                                      onClick: () =>
                                        t.SetGlobalBroadcastChatShown(!0),
                                    },
                                    h.createElement(p.qzq, null),
                                    h.createElement(
                                      "span",
                                      { className: "InnerChatTabLabel" },
                                      (0, w.we)(
                                        "#Broadcast_Chat_PublicChatTab",
                                      ),
                                    ),
                                  ),
                                M,
                              ),
                              !s && t.isBroadcastShown && T,
                            ),
                        ),
                      ),
                    ),
                  ),
              ),
            );
          }
        };
        (0, i.Cg)([C.oI], ge.prototype, "OnDragEnter", null),
          (0, i.Cg)([C.oI], ge.prototype, "OnDragLeave", null),
          (0, i.Cg)([C.oI], ge.prototype, "OnDragOver", null),
          (0, i.Cg)([C.oI], ge.prototype, "OnDrop", null),
          (0, i.Cg)([C.oI], ge.prototype, "OnHTMLKeyEvent", null),
          (0, i.Cg)(
            [C.oI],
            ge.prototype,
            "ShouldShowVerticalBroadcastChat",
            null,
          ),
          (0, i.Cg)([C.oI], ge.prototype, "OnLayoutChange", null),
          (0, i.Cg)([C.oI], ge.prototype, "OnGrabberMouseDown", null),
          (0, i.Cg)([C.oI], ge.prototype, "HandleMouseMove", null),
          (0, i.Cg)([C.oI], ge.prototype, "UnregisterDragEvents", null),
          (0, i.Cg)([C.oI], ge.prototype, "OnLocalStreamChange", null),
          (0, i.Cg)([C.oI], ge.prototype, "HideChat", null),
          (0, i.Cg)([C.oI], ge.prototype, "ShowChat", null),
          (0, i.Cg)([C.oI], ge.prototype, "ToggleVerticalBroadcastChat", null),
          (0, i.Cg)([C.oI], ge.prototype, "SetMainContentRef", null),
          (0, i.Cg)([C.oI], ge.prototype, "ToggleShowBothChats", null),
          (0, i.Cg)([C.oI], ge.prototype, "ToggleVoiceChat", null),
          (ge = (0, i.Cg)([_.PA], ge));
        const Ce = (e) => {
            let { groupView: t, className: n, ...i } = e;
            h.useEffect(() => {
              t.SetMemberListCollapsed(!1, !1);
            });
            let r = h.createElement(R, {
              groupView: t,
              inactive: !1,
              onAction: e.closeModal,
            });
            return h.createElement(
              a.eV,
              { className: le().GroupMemberListDialog, ...i },
              h.createElement(
                o.Y9,
                null,
                (0, w.we)("#Chat_MemberGroup_Online"),
              ),
              r,
              h.createElement(Ie, { closeModal: e.closeModal }),
            );
          },
          fe = (e) => {
            let t,
              { groupView: n, ...i } = e,
              r = n.GetGroup(),
              s = (r.IsNamedGroupChat(), n.GetGroup().textRoomList),
              l = n.GetGroup().BCanAdminChannel(),
              [d, u] = h.useState(n.GetActiveChatView().chat.GetRoomID()),
              p = m.xm.ChatStore.GetActiveVoiceChat();
            if (p && p instanceof c.d) {
              let e = p;
              e.GetParentGroupID() == r.GetGroupID() &&
                (t = h.createElement(
                  E.Z,
                  { className: le().VoiceChatQuickChatChannelOption },
                  (0, w.we)("#Chat_Scratch_Pad"),
                  ":",
                  h.createElement(te.tc, {
                    key: p.unique_id,
                    chat: p,
                    bRenameActive: !1,
                    bActiveChat: p == n.GetActiveChatView().chat,
                    bDefaultRoom: p == n.GetGroup().GetDefaultChatRoom(),
                    onFocus: () => u(e.GetRoomID()),
                  }),
                ));
            }
            let _ = s.map((e) =>
              h.createElement(te.tc, {
                key: e.unique_id,
                chat: e,
                bRenameActive: n.IsRoomRenameActive(e.GetRoomID()),
                bActiveChat: e == n.GetActiveChatView().chat,
                bDefaultRoom: e == n.GetGroup().GetDefaultChatRoom(),
                onFocus: () => u(e.GetRoomID()),
              }),
            );
            const g = () => {
              n.SelectChat(d), e.closeModal();
            };
            let C = { onOKButton: g };
            return (
              l &&
                ((C.onOptionsButton = (t) => {
                  (0, te.Nq)((0, $.uX)(t), n, !1), e.closeModal();
                }),
                (C.onOptionsActionDescription = (0, w.we)(
                  "#Chat_AddTextChat",
                ))),
              h.createElement(
                a.eV,
                {
                  className: (0, y.A)(
                    le().ManageTextChannelsModal,
                    "friendsui-container",
                  ),
                  ...i,
                  onOK: g,
                },
                h.createElement(
                  A.g,
                  null,
                  h.createElement(
                    o.Y9,
                    null,
                    (0, w.we)("#GroupSettings_Channels_TextChannels"),
                  ),
                  h.createElement(E.Z, { focusable: !1, ...C }, t, _),
                  h.createElement(Ie, { closeModal: e.closeModal }),
                ),
              )
            );
          },
          Se = (e) => {
            let { groupView: t, ...n } = e,
              i = t.GetGroup(),
              r = t.GetGroup().voiceRoomList,
              s = (0, de.Qn)(),
              [l, c] = h.useState(t.GetActiveChatView().chat),
              d = r.filter((e) => 0 != e.voice_active_member_list.member_count),
              u = r.filter((e) => 0 == e.voice_active_member_list.member_count);
            const _ = null != m.xm.ChatStore.GetActiveVoiceChat(),
              g = (0, K.q3)(() =>
                m.xm.ChatStore.VoiceChat.GetActiveVoiceChatID(),
              ),
              C = () => {
                g == l.GetRoomID() ||
                  (t.ClosePopoverChat(), l.StartVoiceChat()),
                  s || e.closeModal();
              };
            let f = d.map((n) => {
                const o = g == l.GetRoomID(),
                  r = (t) => {
                    e.closeModal(),
                      (0, ie.jv)(
                        ae.m,
                        t.currentTarget.ownerDocument.defaultView,
                        i,
                        n,
                        !1,
                      );
                  };
                let a;
                return (
                  _ && !o
                    ? (a = (0, w.we)("#VoiceChat_Switch"))
                    : o || (a = (0, w.we)("#VoiceChat_Join")),
                  s
                    ? h.createElement(ce.A, {
                        key: n.unique_id,
                        context: ae.m,
                        chatRoom: n,
                        fnOKButton: o ? void 0 : C,
                        fnSecondaryButton: o
                          ? () => m.xm.ChatStore.VoiceChat.OnUserEndVoiceChat()
                          : void 0,
                        fnOptionsButton: o ? r : void 0,
                        fnOnFocus: () => c(n),
                        fnCloseModal: e.closeModal,
                        strOKActionDescription: a,
                        strSecondaryActionDescription: o
                          ? (0, w.we)("#VoiceChat_Leave")
                          : void 0,
                        strOptionsActionDescription: o
                          ? (0, w.we)("#VoiceChat_InviteOthers")
                          : void 0,
                      })
                    : h.createElement(te.mr, {
                        key: n.unique_id,
                        chat: n,
                        bRenameActive: t.IsRoomRenameActive(n.GetRoomID()),
                        onSelect: C,
                        onFocus: () => c(n),
                      })
                );
              }),
              S = u.map((e) =>
                s
                  ? h.createElement(ce.A, {
                      key: e.unique_id,
                      context: ae.m,
                      chatRoom: e,
                      fnOKButton: C,
                      fnOnFocus: () => c(e),
                      strOKActionDescription: (0, w.we)("#VoiceChat_Join"),
                    })
                  : h.createElement(te.mr, {
                      key: e.unique_id,
                      chat: e,
                      bRenameActive: t.IsRoomRenameActive(e.GetRoomID()),
                      onSelect: C,
                      onFocus: () => c(e),
                    }),
              ),
              v = null;
            if (!m.xm.VoiceStore.IsVoiceActiveForGroup(i.GetGroupID())) {
              const t = () => {
                i.CreateAndJoinTempVoiceRoom(), s || e.closeModal();
              };
              v = h.createElement(
                h.Fragment,
                null,
                0 == r.length &&
                  h.createElement(
                    E.Z,
                    null,
                    (0, w.we)("#GroupSettings_Channels_NoVoiceChannels"),
                  ),
                h.createElement(
                  E.Z,
                  { className: le().AddVoiceChannelBtn, onActivate: t },
                  h.createElement(p.nGC, null),
                  (0, w.we)("#Chat_AddVoiceChat"),
                ),
              );
            }
            return h.createElement(
              a.eV,
              {
                className: (0, y.A)(
                  le().ManageVoiceChannelsModal,
                  "friendsui-container",
                ),
                ...n,
                onOK: C,
              },
              h.createElement(
                A.g,
                null,
                h.createElement(
                  o.Y9,
                  null,
                  (0, w.we)("#GroupSettings_Channels_VoiceChannels"),
                ),
                h.createElement(
                  E.Z,
                  {
                    className: le().ManageVoiceChannels,
                    focusable: !1,
                    onOKButton: C,
                  },
                  v,
                  0 != f.length &&
                    h.createElement(
                      "div",
                      { className: le().ChannelStatusLabel },
                      (0, w.we)("#GroupSettings_Channels_ActiveVoiceChannels"),
                    ),
                  0 != f.length &&
                    h.createElement(E.Z, { className: le().VoiceChannels }, f),
                  0 != S.length &&
                    h.createElement(
                      "div",
                      { className: le().ChannelStatusLabel },
                      (0, w.we)(
                        "#GroupSettings_Channels_InactiveVoiceChannels",
                      ),
                    ),
                  0 != S.length &&
                    h.createElement(E.Z, { className: le().VoiceChannels }, S),
                ),
                h.createElement(Ie, { closeModal: e.closeModal }),
              ),
            );
          },
          ve = (0, _.PA)((e) => {
            let { groupView: t } = e;
            const n = (0, ue.R7)();
            let i = 0,
              o = !1;
            for (let e of t.GetGroup().voiceRoomList)
              0 != e.voice_active_member_list.member_count && i++,
                e.BVoiceActive() && (o = !0);
            let a = !1;
            for (let e of t.GetGroup().textRoomList)
              if (e.has_any_unread_messages) {
                a = !0;
                break;
              }
            return h.createElement(
              E.Z,
              {
                className: le().ChatRoomGroupControlsSteamDeck,
                "flow-children": "column",
              },
              h.createElement(
                E.Z,
                {
                  focusable: !0,
                  onActivate: (e) => {
                    (0, r.pg)(
                      h.createElement(Ce, { groupView: t }),
                      (0, $.uX)(e),
                    );
                  },
                  onOKActionDescription: (0, w.we)("#Chat_MemberGroup_Online"),
                },
                h.createElement(p.YJl, null),
              ),
              h.createElement(
                E.Z,
                {
                  focusable: !0,
                  onActivate: (e) => {
                    (0, r.pg)(
                      h.createElement(fe, { groupView: t }),
                      (0, $.uX)(e),
                    );
                  },
                  onOKActionDescription: (0, w.we)(
                    "#GroupSettings_Channels_TextChannels",
                  ),
                },
                h.createElement(p._h6, {
                  className: "SVGIcon_Button SVGIcon_CommentThread",
                }),
                h.createElement(
                  "div",
                  { className: le().TextChannelCount },
                  t.GetGroup().textRoomList.length,
                ),
                h.createElement(q.RB, {
                  className: a && le().UnreadTextChannel,
                }),
              ),
              h.createElement(
                E.Z,
                {
                  focusable: !0,
                  className: o && le().currentUserInVoiceChannel,
                  onActivate: () => {
                    (0, r.pg)(
                      h.createElement(Se, { groupView: t }),
                      n.ownerWindow,
                    );
                  },
                  onOKActionDescription: (0, w.we)(
                    "#GroupSettings_Channels_VoiceChannels",
                  ),
                },
                h.createElement(p.mrd, null),
                h.createElement(
                  "div",
                  { className: le().VoiceChannelCount },
                  h.createElement(
                    "span",
                    {
                      className:
                        i > 0
                          ? le().HasActiveVoiceRoom
                          : le().NoActiveVoiceRoom,
                    },
                    i,
                  ),
                  " / ",
                  t.GetGroup().voiceRoomList.length,
                ),
              ),
              h.createElement(
                E.Z,
                {
                  focusable: !0,
                  onActivate: (t) => {
                    let n = (0, $.uX)(t),
                      i = (0, d._k)(n);
                    (0, ie.E5)(i, n, e.groupView.GetGroup());
                  },
                  onOKActionDescription: (0, w.we)(
                    "#Chat_Actions_InviteFriendtoGroupChat",
                  ),
                },
                h.createElement(p.MxO, null),
              ),
              h.createElement(
                E.Z,
                {
                  focusable: !0,
                  onActivate: (t) => {
                    (0, re.lV)((0, $.uX)(t), e.groupView);
                  },
                  onOKActionDescription: (0, w.we)(
                    "#NotificationSettings_Title",
                  ),
                },
                h.createElement(p.IrQ, null),
              ),
              h.createElement(
                E.Z,
                {
                  focusable: !0,
                  onActivate: (t) => {
                    (0, oe.hI)((0, $.uX)(t), e.groupView);
                  },
                  onOKActionDescription: (0, w.we)("#GroupSettings"),
                },
                h.createElement(p.m59, null),
              ),
            );
          }),
          be = ({ className: e, readyToRender: t, children: n }) => {
            const i = h.createElement(s.t, {
              position: "center",
              string: (0, w.we)("#Chat_ChatRoomGroup_Requesting"),
            });
            return h.createElement(
              E.Z,
              { className: e },
              h.createElement(h.Suspense, { fallback: i }, t ? n : i),
            );
          },
          Ie = (e) =>
            h.createElement(
              o.wi,
              null,
              h.createElement(
                E.Z,
                { className: "_DialogColLayout", "flow-children": "row" },
                h.createElement(
                  o.jn,
                  { onClick: e.closeModal },
                  (0, w.we)("#Button_Close"),
                ),
              ),
            );
      },
      13112: (e, t, n) => {
        "use strict";
        n.d(t, {
          Ey: () => k,
          Nq: () => L,
          aq: () => R,
          mr: () => B,
          tc: () => F,
        });
        var i = n(34629),
          o = n(63696),
          r = n(23038),
          a = n(89021),
          s = n(81734),
          l = n(78919),
          c = n(58743),
          m = n(68593),
          d = n(22913),
          u = n(25698),
          h = n(14355),
          p = n(69074),
          _ = n(89193),
          g = n(41230),
          C = n(94762),
          f = n(27816),
          S = n(74002),
          v = n(82924),
          b = n(99862),
          I = n(39168),
          w = n(32245),
          y = n(50622),
          E = n(13346),
          D = n(77765),
          A = n(9907),
          T = n(17070),
          M = n(36755);
        let R = class extends o.Component {
          m_schHoverDelay = new A.LU();
          constructor(e) {
            super(e), (this.state = { bCollapsed: !1, bMouseHover: !1 });
          }
          OnRoomsContextMenu(e) {
            if (this.props.groupView.GetGroup().BCanAdminChannel()) {
              let t = e.currentTarget.ownerDocument.defaultView;
              (0, C.lX)(
                o.createElement(
                  f.tz,
                  null,
                  o.createElement(
                    f.kt,
                    {
                      onSelected: () => {
                        this.CreateTextChannel(t);
                      },
                    },
                    (0, S.we)("#GroupSettings_Channels_CreateText"),
                  ),
                  o.createElement(
                    f.kt,
                    {
                      onSelected: () => {
                        this.CreateVoiceChannel(t);
                      },
                    },
                    (0, S.we)("#GroupSettings_Channels_CreateVoice"),
                  ),
                ),
                e,
              );
            }
          }
          CreateTextChannel(e) {
            (0, h.HT)(
              o.createElement(k, {
                ownerWin: e,
                groupView: this.props.groupView,
                bVoiceChannel: !1,
                bJoinChannel: !0,
              }),
              e,
            );
          }
          CreateVoiceChannel(e) {
            (0, h.HT)(
              o.createElement(k, {
                ownerWin: e,
                groupView: this.props.groupView,
                bVoiceChannel: !0,
                bJoinChannel: !0,
              }),
              e,
            );
          }
          OnMouseEnter(e) {
            this.m_schHoverDelay.Schedule(400, () => {
              this.setState({ bMouseHover: !0 });
            });
          }
          OnMouseLeave(e) {
            this.setState({ bMouseHover: !1 }), this.m_schHoverDelay.Cancel();
          }
          ToggleCollapseExpand() {
            const { groupView: e } = this.props;
            e.SetChannelListCollapsed(!e.isChannelListCollapsed);
          }
          render() {
            let e = this.props.groupView.GetGroup(),
              t = e.IsNamedGroupChat(),
              n = !1,
              i = "chatRoomGroupNavColumn",
              r = this.props.groupView.isChannelListCollapsed;
            return (
              0 != e.voiceRoomList.length || t
                ? r &&
                  !this.state.bMouseHover &&
                  (i += " chatRoomGroupNavCollapsed")
                : ((n = !0), (i += " defaultChatOnly")),
              this.props.inactive || n
                ? o.createElement("div", { className: i })
                : o.createElement(
                    "div",
                    {
                      className: i,
                      onMouseEnter: this.OnMouseEnter,
                      onMouseLeave: this.OnMouseLeave,
                    },
                    o.createElement(
                      "div",
                      {
                        className: "chatRoomChannelGroups",
                        onContextMenu: this.OnRoomsContextMenu,
                      },
                      t &&
                        o.createElement(G, { groupView: this.props.groupView }),
                      o.createElement(P, { groupView: this.props.groupView }),
                      (!r || this.state.bMouseHover) &&
                        o.createElement(
                          "div",
                          {
                            className: "chatRoomGroupNavCollapseExpand",
                            title: (0, S.we)(
                              r
                                ? "#Tooltip_PinChannelList"
                                : "#Tooltip_UnpinChannelList",
                            ),
                            onClick: this.ToggleCollapseExpand,
                          },
                          o.createElement(s.yUp, { bPinned: !r }),
                        ),
                    ),
                    o.createElement("div", { className: "disconnectBlocker" }),
                  )
            );
          }
        };
        (0, i.Cg)([v.oI], R.prototype, "OnRoomsContextMenu", null),
          (0, i.Cg)([v.oI], R.prototype, "OnMouseEnter", null),
          (0, i.Cg)([v.oI], R.prototype, "OnMouseLeave", null),
          (0, i.Cg)([v.oI], R.prototype, "ToggleCollapseExpand", null),
          (R = (0, i.Cg)([g.PA], R));
        class k extends o.Component {
          m_refInput;
          OnSubmit() {
            let e = this.m_refInput && this.m_refInput.value;
            e &&
              this.props.groupView
                .GetGroup()
                .CreateChatRoom(e, this.props.bVoiceChannel)
                .then((e) => {
                  e &&
                    (this.props.closeModal(),
                    this.props.bJoinChannel &&
                      (this.props.bVoiceChannel
                        ? e.StartVoiceChat()
                        : this.props.groupView.SelectChat(e.GetRoomID())));
                })
                .catch((e) => {
                  (0, u.Ic)(
                    this.props.ownerWin,
                    (0, S.we)("#Generic_Error"),
                    (0, S.we)("#Chat_CreateChatRoom_GenericError"),
                  ),
                    this.props.closeModal();
                });
          }
          render() {
            return o.createElement(
              h.x_,
              { onEscKeypress: this.props.closeModal },
              o.createElement(
                a.U9,
                {
                  classNameContent: "CreateChatChannelDialog",
                  onSubmit: this.OnSubmit,
                },
                o.createElement(
                  a.Y9,
                  null,
                  (0, S.we)(
                    this.props.bVoiceChannel
                      ? "#GroupSettings_Channels_CreateVoice"
                      : "#GroupSettings_Channels_CreateText",
                  ),
                ),
                o.createElement(
                  a.nB,
                  null,
                  o.createElement(a.pd, {
                    ref: (e) => {
                      this.m_refInput = e;
                    },
                    autoFocus: !0,
                    label: (0, S.we)("#Chat_SaveVoiceRoom_Name"),
                  }),
                ),
                o.createElement(
                  a.wi,
                  null,
                  o.createElement(a.CB, { onCancel: this.props.closeModal }),
                ),
              ),
            );
          }
        }
        function L(e, t, n) {
          (0, h.HT)(
            o.createElement(k, {
              ownerWin: e,
              groupView: t,
              bVoiceChannel: n,
              bJoinChannel: !0,
            }),
            e,
            "CreateChatChannelDialog",
            {
              strTitle: (0, S.we)("#GroupSettings_Channels_CreateText"),
              popupWidth: 800,
              popupHeight: 400,
            },
            (0, l.h8)(e),
          );
        }
        (0, i.Cg)([v.oI], k.prototype, "OnSubmit", null);
        let G = class extends o.Component {
          OnCreateNewTextChannel(e) {
            let t = (0, y.uX)(e);
            this.props.groupView.GetGroup().BCanAdminChannel() &&
              L(t, this.props.groupView, !1);
          }
          OnStartChannelRename(e) {
            this.props.groupView.StartRoomRename(e);
          }
          OnChannelRename(e, t) {
            this.props.groupView.GetGroup().RenameRoom(e, t);
          }
          OnEndChannelRename() {
            this.props.groupView.EndRoomRename();
          }
          render() {
            let e = this.props.groupView,
              t = e.GetGroup().textRoomList,
              n = e.GetGroup().BCanAdminChannel();
            e.isChannelListCollapsed;
            return o.createElement(
              "div",
              { className: "chatRoomTextChannelsGroup" },
              o.createElement(
                "div",
                {
                  className: "ChannelTypeTitle",
                  title: (0, S.we)("#Tooltip_TextChannel"),
                  onClick: this.OnCreateNewTextChannel,
                },
                o.createElement(
                  "div",
                  {
                    className: "ChannelTypeLabel" + (n ? "" : " NoPermission"),
                    title: n
                      ? (0, S.we)("#Tooltip_TextChannelCreate")
                      : (0, S.we)("#Tooltip_NoPermissionChannelCreate"),
                  },
                  n
                    ? (0, S.we)("#Chat_AddTextChat")
                    : (0, S.we)("#Chat_CreateTextChannel_DefaultName"),
                ),
                o.createElement(
                  "div",
                  {
                    className: "ChatRoomAddRoomBtn",
                    title: (0, S.we)("#Tooltip_TextChannelCreate"),
                  },
                  o.createElement(s.f5w, null),
                ),
              ),
              t.map((t) =>
                o.createElement(F, {
                  key: t.unique_id,
                  chat: t,
                  bRenameActive: e.IsRoomRenameActive(t.GetRoomID()),
                  bActiveChat: t == e.GetActiveChatView().chat,
                  bDefaultRoom: t == e.GetGroup().GetDefaultChatRoom(),
                  onStartRename: this.OnStartChannelRename,
                  onRename: this.OnChannelRename,
                  onEndRename: this.OnEndChannelRename,
                }),
              ),
            );
          }
        };
        (0, i.Cg)([v.oI], G.prototype, "OnCreateNewTextChannel", null),
          (0, i.Cg)([v.oI], G.prototype, "OnStartChannelRename", null),
          (0, i.Cg)([v.oI], G.prototype, "OnChannelRename", null),
          (0, i.Cg)([v.oI], G.prototype, "OnEndChannelRename", null),
          (G = (0, i.Cg)([g.PA], G));
        let F = class extends o.Component {
          containerRef = o.createRef();
          ToggleTextChat() {
            if (this.props.bRenameActive) return;
            let e = c.xm.UIStore.IsChatRoomGroupActive(
                (0, l.wj)(this.containerRef.current),
                this.props.chat.GetGroup(),
              ),
              t = c.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                (0, l.wj)(this.containerRef.current),
                this.props.chat.GetGroup(),
                !1,
              ),
              n = t.GetPopoverChatView();
            e && n && n.chat && n.chat == this.props.chat
              ? t.ClosePopoverChat()
              : t.SelectChat(this.props.chat.GetRoomID());
          }
          OnContextMenu(e) {
            this.props.bRenameActive ||
              (0, d.ae)(
                (0, l.CO)(e),
                this.props.chat.GetGroup(),
                this.props.chat.GetRoomID(),
                e,
                this.props.onStartRename,
              );
          }
          render() {
            let e = this.props.chat,
              t = "chatRoomTextChannel";
            this.props.bActiveChat && (t += " ActiveTextChannel");
            let n = "chatRoomTextChannelName";
            this.props.bDefaultRoom && (n += " IsCommonsChannel");
            let i =
                this.props.bRenameActive && !this.props.chat.GetVoiceAllowed(),
              r = e.GetGroup().GetDefaultChatID() != e.GetRoomID(),
              a =
                c.xm.ChatStore.VoiceChat.GetActiveVoiceChatID() ==
                this.props.chat.GetRoomID();
            return o.createElement(
              p.Z,
              {
                focusable: !0,
                className: t,
                onClick: this.ToggleTextChat,
                onGamepadFocus: this.props.onFocus,
                onMenuButton: r ? this.OnContextMenu : void 0,
                onMenuActionDescription: r
                  ? (0, S.we)("#Chat_ChatRoomGroup_Options")
                  : void 0,
                onContextMenu: this.OnContextMenu,
                ref: this.containerRef,
              },
              o.createElement(I.RB, { chat: e }),
              o.createElement(
                "div",
                { className: "chatRoomTextChannelIcon" },
                a ? o.createElement(s.yFA, null) : o.createElement(s.tcj, null),
              ),
              !i &&
                o.createElement(
                  "div",
                  { className: n },
                  e.BIsDefaultRoom()
                    ? (0, S.we)("#Chat_DefaultChannelName")
                    : e.name,
                ),
              !this.props.bDefaultRoom &&
                i &&
                o.createElement(x, {
                  chat: this.props.chat,
                  onRename: this.props.onRename,
                  onEndRename: this.props.onEndRename,
                }),
            );
          }
        };
        (0, i.Cg)([v.oI], F.prototype, "ToggleTextChat", null),
          (0, i.Cg)([v.oI], F.prototype, "OnContextMenu", null),
          (F = (0, i.Cg)([g.PA], F));
        let P = class extends o.Component {
          CreateVoiceRoom() {
            this.props.groupView.GetGroup().CreateAndJoinTempVoiceRoom();
          }
          OnVoiceRoomSelected(e) {
            if (!(this.props.groupView.GetRenameRoomID() == e.GetRoomID())) {
              c.xm.ChatStore.VoiceChat.GetActiveVoiceChatID() ==
                e.GetRoomID() ||
                (this.props.groupView.ClosePopoverChat(), e.StartVoiceChat());
            }
          }
          OnStartChannelRename(e) {
            this.props.groupView.StartRoomRename(e);
          }
          OnChannelRename(e, t) {
            this.props.groupView.GetGroup().RenameRoom(e, t);
          }
          OnEndChannelRename() {
            this.props.groupView.EndRoomRename();
          }
          render() {
            let e = this.props.groupView,
              t = e.GetGroup().voiceRoomList;
            return o.createElement(
              "div",
              { className: "chatRoomVoiceChannelsGroup" },
              o.createElement(
                "div",
                {
                  className: "ChannelTypeTitle",
                  title: (0, S.we)("#Tooltip_VoiceChannelCreate"),
                  onClick: this.CreateVoiceRoom,
                },
                o.createElement(
                  "div",
                  { className: "ChannelTypeLabel" },
                  (0, S.we)("#Chat_AddVoiceChat"),
                ),
                o.createElement(
                  "div",
                  {
                    className: "ChatRoomAddRoomBtn",
                    title: (0, S.we)("#Tooltip_VoiceChannelCreate"),
                  },
                  o.createElement(s.f5w, null),
                ),
              ),
              t.map((t) =>
                o.createElement(B, {
                  key: t.unique_id,
                  context: "VoiceRoomsGroup",
                  chat: t,
                  bRenameActive: e.GetRenameRoomID() == t.GetRoomID(),
                  onSelect: () => {
                    this.OnVoiceRoomSelected(t);
                  },
                  onStartRename: this.OnStartChannelRename,
                  onRename: this.OnChannelRename,
                  onEndRename: this.OnEndChannelRename,
                }),
              ),
            );
          }
        };
        (0, i.Cg)([v.oI], P.prototype, "CreateVoiceRoom", null),
          (0, i.Cg)([v.oI], P.prototype, "OnVoiceRoomSelected", null),
          (0, i.Cg)([v.oI], P.prototype, "OnStartChannelRename", null),
          (0, i.Cg)([v.oI], P.prototype, "OnChannelRename", null),
          (0, i.Cg)([v.oI], P.prototype, "OnEndChannelRename", null),
          (P = (0, i.Cg)([g.PA], P));
        let B = class extends o.Component {
          static contextType = T.QO;
          m_dropConfirmationInterval;
          m_dropInviteInvitee;
          constructor(e) {
            super(e),
              (this.state = {
                dropToInviteFriend: void 0,
                bDropConfirmationNotice: !1,
              });
          }
          OnContextMenu(e) {
            this.props.bRenameActive ||
              (0, d.ae)(
                (0, l.CO)(e),
                this.props.chat.GetGroup(),
                this.props.chat.GetRoomID(),
                e,
                this.props.onStartRename,
              ),
              e.preventDefault(),
              e.stopPropagation();
          }
          InviteToChat(e) {
            (0, E.E5)(
              (0, l.CO)(e),
              e.currentTarget.ownerDocument.defaultView,
              this.props.chat.GetGroup(),
              this.props.chat,
            ),
              e.stopPropagation();
          }
          OnDragEnter(e, t) {
            if (
              ((0, D.w)(
                e && "friend" == e.type,
                "Invalid type passed to VoiceRoom.OnDragEnter",
              ),
              e)
            ) {
              let t = e;
              t.friend && this.setState({ dropToInviteFriend: t.friend });
            }
            return !0;
          }
          OnDragLeave() {
            this.state.dropToInviteFriend &&
              this.setState({ dropToInviteFriend: void 0 });
          }
          OnDragOver(e) {
            e.dataTransfer.dropEffect = "move";
          }
          OnDrop(e, t) {
            if (
              ((0, D.w)(
                e && "friend" == e.type,
                "Invalid data type passed to ChatRoomGroupDialog.OnDrop",
              ),
              e && "friend" == e.type)
            ) {
              let n = e;
              if (n.friend && n.friend != c.xm.FriendStore.self) {
                this.state.dropToInviteFriend &&
                  this.setState({ dropToInviteFriend: void 0 }),
                  l.ZM.DragDropManager.SetDropConsumed();
                let e = t.currentTarget.ownerDocument.defaultView;
                this.props.chat.GetGroup().BIsUserGroupMember(n.friend)
                  ? (this.props.chat
                      .GetGroup()
                      .InviteFriend(n.friend.accountid, this.props.chat),
                    this.setState({ bDropConfirmationNotice: !0 }),
                    (this.m_dropInviteInvitee = n.friend),
                    (this.m_dropConfirmationInterval = window.setInterval(
                      () => {
                        this.setState({ bDropConfirmationNotice: !1 }),
                          window.clearInterval(this.m_dropConfirmationInterval);
                      },
                      1200,
                    )))
                  : (0, w.nn)(
                      {
                        invitee: n.friend,
                        chatview: null,
                        invitedto: this.props.chat,
                      },
                      (0, l.CO)(t),
                      e,
                    );
              }
            }
          }
          GetDragDropProps() {
            let e = { rgAcceptedTypes: ["friend"] };
            return (
              (e.fnDragEnter = this.OnDragEnter),
              (e.fnDragOver = this.OnDragOver),
              (e.fnDragLeave = this.OnDragLeave),
              (e.fnDrop = this.OnDrop),
              e
            );
          }
          m_FriendContext;
          GetFriendContext() {
            let e =
              this.props.chat && this.props.chat.GetGroup().readyToRender
                ? this.props.chat
                : null;
            return (
              (this.m_FriendContext && this.m_FriendContext.chat == e) ||
                (this.m_FriendContext = { chat: e }),
              this.m_FriendContext
            );
          }
          render() {
            let e = this.props.chat.GetGroup(),
              t = this.props.chat == e.GetDefaultChatRoom(),
              n =
                c.xm.ChatStore.VoiceChat.GetActiveVoiceChatID() ==
                this.props.chat.GetRoomID(),
              i = c.xm.CMInterface.steamid.GetAccountID(),
              a = c.xm.FriendStore.GetPlayer(i),
              l = this.props.chat.voice_active_contains_only_self,
              d = "emptyChannelNotice",
              u = this.props.chat.voice_active_member_list.member_list.map(
                (e) => {
                  let t = c.xm.ChatStore.VoiceChat.GetUserSendsVideo(
                    e.accountid,
                  )
                    ? c.xm.ChatStore.VoiceChat.video_streams.find(
                        (t) => t.accountid == e.accountid,
                      )
                    : void 0;
                  return o.createElement(
                    M.M,
                    {
                      key: e.accountid,
                      classNames: "friend-anim",
                      timeout: 320,
                    },
                    (n) =>
                      o.createElement(b.bP, {
                        divRef: n,
                        friend: e,
                        key: e.accountid,
                        context: this.GetFriendContext(),
                        showVoiceLevel: !0,
                        bInVoiceList: !0,
                        video: t,
                      }),
                  );
                },
              ),
              h = this.props.chat.voice_active_contains_friends;
            n &&
              !this.props.chat.voice_active_contains_self &&
              (0 == u.length && (l = !0),
              (h = !0),
              u.push(
                o.createElement(
                  M.M,
                  { key: i, classNames: "friend-anim", timeout: 320 },
                  (e) =>
                    o.createElement(b.bP, {
                      divRef: e,
                      friend: a,
                      key: i,
                      context: this.GetFriendContext(),
                      showVoiceLevel: !0,
                    }),
                ),
              ));
            let p = ["chatRoomVoiceChannel"];
            n && p.push("ActiveVoiceChannel"),
              h ||
                "ChatRoomList" != this.props.context ||
                p.push("MinimizeMemberList"),
              this.state.dropToInviteFriend && p.push("voiceRoomActiveDrop"),
              n && l && (d += " Visible");
            let _ = this.props.chat.IsUnsavedVoiceChannel(),
              g = this.props.chat.name;
            return o.createElement(
              m.D,
              {
                focusable: !0,
                className: p.join(" "),
                onClick: this.props.onSelect,
                onGamepadFocus: this.props.onFocus,
                ...this.GetDragDropProps(),
                ref: this.props.containerRef,
              },
              o.createElement("div", {
                className: "chatRoomVoiceChannelIconGlow",
              }),
              o.createElement(
                "div",
                {
                  className: "chatRoomVoiceChannelNameContainer",
                  onContextMenu: this.OnContextMenu,
                },
                o.createElement(
                  "div",
                  { className: "chatRoomVoiceChannelIcon" },
                  o.createElement(s.mrd, null),
                ),
                !this.props.bRenameActive &&
                  o.createElement(
                    "div",
                    {
                      className:
                        "chatRoomVoiceChannelName" +
                        (_ ? " unsavedVoiceChannel" : ""),
                    },
                    g,
                  ),
                this.props.bRenameActive &&
                  o.createElement(x, {
                    chat: this.props.chat,
                    onRename: this.props.onRename,
                    onEndRename: this.props.onEndRename,
                  }),
                !this.props.bRenameActive &&
                  !this.context?.IN_GAMEPADUI &&
                  o.createElement(
                    o.Fragment,
                    null,
                    o.createElement(
                      "div",
                      {
                        onContextMenu: this.OnContextMenu,
                        onClick: this.OnContextMenu,
                        className: "VoiceControlPanelButton chatPinRoom",
                        title: (0, S.we)("#Chat_ChannelOptions"),
                      },
                      o.createElement(s.GB9, null),
                    ),
                  ),
              ),
              o.createElement(
                "div",
                { className: "VoiceChannelParticipants CompactFriendsList" },
                !h && u,
                h && o.createElement(r.A, { enter: !0, exit: !0 }, u),
              ),
              o.createElement(
                "div",
                { className: d },
                (0, S.we)("#Chat_VoiceEmptyChannel"),
              ),
              !this.context?.IN_GAMEPADUI &&
                o.createElement(b.lg, {
                  name: g,
                  chat: this.props.chat,
                  nostatus: !0,
                }),
              !t &&
                o.createElement(F, {
                  chat: this.props.chat,
                  bRenameActive: !1,
                  bActiveChat: !1,
                  bDefaultRoom: !1,
                }),
              o.createElement("div", { className: "ScratchPadConnect" }),
              this.state.bDropConfirmationNotice &&
                o.createElement(
                  "div",
                  {
                    className:
                      "dropConfirmationNotice" +
                      (this.state.bDropConfirmationNotice ? " Active" : ""),
                  },
                  o.createElement(
                    "div",
                    { className: "dropConfirmationLabel" },
                    o.createElement("img", {
                      className: "avatar",
                      src: this.m_dropInviteInvitee.persona.avatar_url_medium,
                    }),
                  ),
                ),
              o.createElement("div", { className: "dropTargetBox" }),
            );
          }
        };
        (0, i.Cg)([v.oI], B.prototype, "OnContextMenu", null),
          (0, i.Cg)([v.oI], B.prototype, "InviteToChat", null),
          (0, i.Cg)([v.oI], B.prototype, "OnDragEnter", null),
          (0, i.Cg)([v.oI], B.prototype, "OnDragLeave", null),
          (0, i.Cg)([v.oI], B.prototype, "OnDragOver", null),
          (0, i.Cg)([v.oI], B.prototype, "OnDrop", null),
          (B = (0, i.Cg)([g.PA], B));
        let x = class extends o.Component {
          m_strValue = "";
          constructor(e) {
            super(e), (0, _.Gn)(this), (this.m_strValue = this.props.chat.name);
          }
          componentDidUpdate(e) {
            e.chat !== this.props.chat &&
              (this.m_strValue = this.props.chat.name);
          }
          componentDidMount() {
            window.addEventListener("keydown", this.OnGlobalKeyDown, !1);
          }
          componentWillUnmount() {
            window.removeEventListener("keydown", this.OnGlobalKeyDown, !1);
          }
          BindInputRef(e) {
            e && e.focus();
          }
          OnChange(e) {
            this.m_strValue = e.target.value;
          }
          OnSubmit(e) {
            this.SubmitAndClose(), e.preventDefault();
          }
          OnGlobalKeyDown(e) {
            27 == e.keyCode && this.Close();
          }
          OnBlur(e) {
            this.SubmitAndClose();
          }
          SubmitAndClose() {
            this.props.onRename(this.props.chat.GetRoomID(), this.m_strValue),
              this.Close();
          }
          Close() {
            this.props.onEndRename();
          }
          render() {
            return o.createElement(
              "form",
              { className: "RenameChatRoomInline", onSubmit: this.OnSubmit },
              o.createElement("input", {
                ref: this.BindInputRef,
                type: "text",
                value: this.m_strValue,
                onChange: this.OnChange,
                onBlur: this.OnBlur,
              }),
            );
          }
        };
        (0, i.Cg)([_.sH], x.prototype, "m_strValue", void 0),
          (0, i.Cg)([v.oI], x.prototype, "BindInputRef", null),
          (0, i.Cg)([v.oI], x.prototype, "OnChange", null),
          (0, i.Cg)([v.oI], x.prototype, "OnSubmit", null),
          (0, i.Cg)([v.oI], x.prototype, "OnGlobalKeyDown", null),
          (0, i.Cg)([v.oI], x.prototype, "OnBlur", null),
          (x = (0, i.Cg)([g.PA], x));
      },
      39168: (e, t, n) => {
        "use strict";
        n.d(t, { AX: () => L, IV: () => k, RB: () => P });
        var i = n(34629),
          o = n(50669),
          r = n(78116),
          a = n(93715),
          s = n(78919),
          l = n(58743),
          c = n(98540),
          m = n(13112),
          d = n(22913),
          u = n(91466),
          h = n(92089),
          p = n(41230),
          _ = n(63696),
          g = n(23038),
          C = n(20590),
          f = n(69074),
          S = n(77631),
          v = n(65281),
          b = n(89021),
          I = n(81734),
          w = n(77171),
          y = n(50622),
          E = n(74002),
          D = n(82924),
          A = n(17070),
          T = n(85691),
          M = n(99862),
          R = n(36755);
        let k = class extends _.Component {
          static contextType = A.QO;
          m_elDiv;
          constructor(e) {
            super(e), (this.state = { ulSelectedGroupID: "" });
          }
          BindDiv(e) {
            this.m_elDiv = e;
          }
          get div() {
            return this.m_elDiv;
          }
          get recommendedHeight() {
            return this.m_elDiv.clientHeight;
          }
          get maximumHeight() {
            return this.recommendedHeight;
          }
          get minimumHeight() {
            return 0;
          }
          OnGroupSelected(e) {
            e == this.state.ulSelectedGroupID
              ? this.setState({ ulSelectedGroupID: "" })
              : this.setState({ ulSelectedGroupID: e });
          }
          render() {
            let e = this.props.chats.currentChatRoomGroups.sort(
              (e, t) => t.time_last_activity - e.time_last_activity,
            );
            const t = (0, o.nA)(r.TS.EREALM);
            return _.createElement(
              "div",
              {
                className: "ChatRoomList CompactFriendsList",
                ref: this.BindDiv,
              },
              0 == e.length &&
                _.createElement(
                  "div",
                  { className: "ChatRoomList_Empty" },
                  (0, E.we)("#Chat_ChatRoomList_Empty"),
                  _.createElement("br", null),
                  _.createElement("br", null),
                  !t &&
                    !this.context?.IN_GAMEPADUI &&
                    (0, E.PP)(
                      "#Chat_ChatRoomList_Empty_How",
                      _.createElement(
                        u.uU,
                        { href: r.TS.COMMUNITY_BASE_URL + "my/groups/" },
                        (0, E.we)("#Chat_ChatRoomList_Empty_HowLink"),
                      ),
                    ),
                  !t &&
                    this.context?.IN_GAMEPADUI &&
                    _.createElement(
                      _.Fragment,
                      null,
                      _.createElement(
                        "div",
                        { className: "ChatRoomList_Empty_Description" },
                        (0, E.we)("#Chat_ChatRoomList_Empty_SteamDeck"),
                      ),
                      _.createElement(
                        b.$n,
                        {
                          onClick: (e) => {
                            let t = (0, y.uX)(e);
                            (0, T.UA)((0, s._k)(t), t);
                          },
                        },
                        (0, E.we)(
                          "#Chat_ChatRoomList_Empty_StartNew_SteamDeck",
                        ),
                      ),
                    ),
                ),
              e.map((e) =>
                _.createElement(L, { key: e.GetGroupID(), group: e }),
              ),
              _.createElement("div", { className: "disconnectBlocker" }),
            );
          }
        };
        (0, i.Cg)([D.oI], k.prototype, "BindDiv", null),
          (0, i.Cg)([D.oI], k.prototype, "OnGroupSelected", null),
          (k = (0, i.Cg)([p.PA], k));
        const L = (0, p.PA)(function (e) {
            const {
                group: t,
                bShowLastChat: n,
                bHideUnreadMention: i,
                additionalElements: o,
              } = e,
              r = (0, A.Qn)(),
              [a, m] = _.useState(!1),
              [u, h] = _.useState(!1),
              [p, g] = _.useState(!1),
              S = _.useCallback(() => g(!0), []),
              v = _.useCallback(() => g(!1), []),
              b = _.useCallback(
                (e) => {
                  const i = t.room_with_last_message;
                  if (n && i) {
                    l.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                      (0, s.CO)(e),
                      t,
                      !0,
                    ).SelectChat(i.GetRoomID());
                  } else
                    l.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                      (0, s.CO)(e),
                      t,
                      !0,
                    );
                },
                [n, t],
              ),
              D = _.useCallback((e) => {
                m((e) => !e), e.stopPropagation();
              }, []),
              T = _.useCallback(
                (e) => {
                  (0, d.Tz)(e, t);
                },
                [t],
              ),
              M = _.useCallback(() => h(!0), []),
              R = _.useCallback(() => h(!1), []);
            const k = (function (e, t = !0) {
              const [n, i] = _.useState(void 0),
                o = _.useRef(!1),
                r = _.useCallback(
                  (t) => {
                    if (e.BIsClanChatRoom()) {
                      let t = l.xm.FriendStore.ClanStore.GetClan(e.GetClanID());
                      s.ZM.DragDropManager.StartDrag({ type: "clan", clan: t });
                    } else
                      s.ZM.DragDropManager.StartDrag({
                        type: "chatroomgroup",
                        group: e,
                      });
                  },
                  [e],
                ),
                a = _.useCallback((e) => {
                  s.ZM.DragDropManager.EndDrag();
                }, []),
                c = _.useCallback((e) => {
                  let t = s.ZM.DragDropManager.GetDragData();
                  if (t && "friend" == t.type) {
                    let n = t.friend;
                    (o.current = !0), e.preventDefault(), i(n);
                  } else o.current = !1;
                  e && (e.preventDefault(), o.current && e.stopPropagation());
                }, []),
                m = _.useCallback((e) => {
                  o.current && (e.preventDefault(), e.stopPropagation());
                }, []),
                d = _.useCallback((e) => {
                  (0, y.NO)(e) && ((o.current = !1), i(void 0));
                }, []),
                u = _.useCallback(
                  (t) => {
                    let n = s.ZM.DragDropManager.GetDragData();
                    if (n && "friend" == n.type) {
                      t.preventDefault(), t.stopPropagation();
                      let o = e.memberList.member_list.slice(),
                        r = n;
                      if (null != r.friend && -1 != o.indexOf(r.friend)) return;
                      s.ZM.DragDropManager.SetDropConsumed(),
                        e.InviteFriend(r.friend.accountid),
                        i(void 0);
                    }
                  },
                  [e],
                );
              let h = {};
              return (
                t &&
                  ((h.onDragEnter = c),
                  (h.onDragOver = m),
                  (h.onDragLeave = d),
                  (h.onDrop = u)),
                (h.draggable = !0),
                (h.onDragStart = r),
                (h.onDragEnd = a),
                h
              );
            })(t, !0);
            let L = null !== t.watching_broadcast_steamid,
              N = t.hasVoiceRoom;
            const V = (0, w.A)(
              e.className,
              "ChatRoomListGroupItem",
              !t.hasVoiceRoom && "NoChannels",
              a && "ShowAllChannels",
              u && "NonGroupHovered",
              L && "HasLinkedBroadcast",
            );
            return _.createElement(
              C.Y,
              {
                onEnter: S,
                onLeave: v,
                topOffset: "-300px",
                bottomOffset: "-200px",
              },
              _.createElement(
                f.Z,
                {
                  className: V,
                  ...k,
                  focusable: !0,
                  onOKButton: b,
                  onMenuButton: T,
                  onMenuActionDescription: (0, E.we)(
                    "#Chat_ChatRoomGroup_Options",
                  ),
                },
                _.createElement(
                  "div",
                  {
                    className: "ChatRoomListGroupItem_header",
                    onClick: b,
                    onContextMenu: T,
                  },
                  _.createElement(c.I, { group: p ? t : void 0, small: !0 }),
                  p &&
                    _.createElement(
                      _.Fragment,
                      null,
                      !r && L && _.createElement(G, { group: t }),
                      _.createElement(
                        "div",
                        { className: "groupNameStatusContainer" },
                        _.createElement(
                          "div",
                          { className: "displayRow" },
                          _.createElement(
                            "div",
                            { className: "chatRoomName" },
                            t.name,
                          ),
                          !r &&
                            _.createElement(
                              "div",
                              {
                                className: "ContextMenuButton",
                                onClick: T,
                                onMouseEnter: M,
                                onMouseLeave: R,
                              },
                              _.createElement(I.GB9, null),
                            ),
                        ),
                        !r && !a && N && _.createElement(O, { group: t }),
                        n && _.createElement(F, { group: t }),
                      ),
                      !i && _.createElement(P, { group: t }),
                    ),
                  !r &&
                    N &&
                    _.createElement(
                      "div",
                      { onMouseEnter: M, onMouseLeave: R },
                      _.createElement(B, { expanded: a, onClick: D }),
                    ),
                  o,
                ),
                !r &&
                  N &&
                  _.createElement(
                    "div",
                    { className: "detailsView" },
                    _.createElement(
                      "div",
                      { className: "ChatRoomListGroupItemChatRooms" },
                      _.createElement(x, { group: t, expanded: a }),
                    ),
                  ),
              ),
            );
          }),
          G = (0, p.PA)(function (e) {
            const { group: t } = e;
            let n = new S.b(t.watching_broadcast_steamid);
            const i = (function (e) {
              const [t, n] = _.useState();
              return (
                _.useEffect(() => {
                  if (!e) return void n(void 0);
                  const t = v.BroadcastWatchStore.StartInfo(e);
                  return n(t), () => v.BroadcastWatchStore.StopInfo(t);
                }, [e]),
                t && t.m_steamIDBroadcast === e ? t : null
              );
            })(n && n.ConvertTo64BitString());
            let o = i?.m_bInitialized
              ? i.m_strTitle ||
                i.m_strAppTitle ||
                (0, E.we)(
                  "#PersonaStateWatchingBroadcast_Player",
                  l.xm.FriendStore.GetPlayer(n.GetAccountID()).display_name,
                )
              : void 0;
            return _.createElement(
              "div",
              { className: "steamTVSubtitle" },
              _.createElement(I.P7C, null),
              ": ",
              o,
              " ",
            );
          }),
          F = (0, p.PA)(function (e) {
            const { group: t } = e,
              n = t.room_with_last_message;
            if (!n) return null;
            const i = l.xm.ChatStore.NotificationBBCodeParser.ParseBBCode(
                n.GetLastMessage(),
                {
                  chat: n,
                  unAccountIDSender: n.accountid_last_message,
                  key: n.GetLastMessage(),
                  rtTimestamp: n.time_last_message,
                  onLoad: () => {},
                },
              ),
              o = l.xm.FriendStore.GetPlayer(n.accountid_last_message),
              r = (i && i.body) || (0, h.Yj)(n.GetLastMessage());
            return _.createElement(
              "div",
              { className: "lastChatMessage" },
              _.createElement("div", null, o.display_name + " : ", r),
            );
          });
        let P = class extends _.Component {
          render() {
            let e = this.props.group,
              t = this.props.chat;
            if (
              (e && !e.hasUnreadChatMessage) ||
              (t && !t.has_any_unread_messages)
            )
              return null;
            let n =
              (this.props.className || "") + " ChatUnreadMessageIndicator";
            return (
              ((e && e.HasUnreadMention) || (t && t.has_unread_mention)) &&
                (n += " UnreadMention"),
              _.createElement(
                "div",
                { className: n },
                _.createElement("div", { className: "chatUnreadCircle" }, "@"),
              )
            );
          }
        };
        function B(e) {
          let t = e.expanded
            ? (0, E.we)("#Chat_ChatRoomListO_OpenGroupCollapse")
            : (0, E.we)("#Chat_ChatRoomListO_OpenGroupExpand");
          return _.createElement(
            "div",
            { className: "openGroupButton", title: t, onClick: e.onClick },
            _.createElement(I.F2T, null),
          );
        }
        P = (0, i.Cg)([p.PA], P);
        let x = (0, p.PA)((e) => {
            let t = [];
            for (let n of e.group.voiceRoomList)
              (e.expanded || n.voice_active_contains_self) && t.push(n);
            let n = null;
            return (
              t &&
                (n = t.map((e) =>
                  _.createElement(
                    R.M,
                    {
                      classNames: "heightcollapseandfade-anim",
                      timeout: 300,
                      key: e.unique_id,
                    },
                    (t) =>
                      _.createElement(m.mr, {
                        containerRef: t,
                        key: e.unique_id,
                        chat: e,
                        bRenameActive: !1,
                        context: "ChatRoomList",
                        onSelect: e.StartVoiceChat,
                      }),
                  ),
                )),
              _.createElement(g.A, null, n)
            );
          }),
          O = (0, p.PA)((e) => {
            let t = [];
            for (let n of e.group.voiceRoomList) {
              if (n.voice_active_contains_self) continue;
              let e = n.voice_active_member_list;
              if (0 == e.member_count) continue;
              let i = e.member_list.filter((e) => e.is_friend);
              0 != i.length &&
                ((i = e.member_list.slice()),
                i.sort(a.$c.FriendSortByFriendOrNotComparator),
                t.push({ ulRoomID: n.unique_id, rgFriends: i }));
            }
            return t && 0 != t.length
              ? _.createElement(
                  "div",
                  { className: "membersInVoice" },
                  _.createElement(
                    "div",
                    { className: "voiceChannelIcon" },
                    _.createElement(I.mrd, null),
                  ),
                  t.map((e) =>
                    _.createElement(N, { key: e.ulRoomID, friendsInRoom: e }),
                  ),
                )
              : null;
          }),
          N = class extends _.Component {
            render() {
              let e = this.props.friendsInRoom;
              return _.createElement(
                "span",
                { className: "voiceChatGroup" },
                e.rgFriends.map((e) =>
                  _.createElement(
                    M.Rg,
                    {
                      key: e.accountid,
                      friend: e,
                      context: {},
                      disableContextMenu: !1,
                    },
                    _.createElement("img", {
                      className:
                        "voiceFriendAvatar" +
                        (e.is_friend ? "" : " isNotFriend"),
                      src: e.persona.avatar_url,
                      draggable: !1,
                    }),
                  ),
                ),
              );
            }
          };
        N = (0, i.Cg)([p.PA], N);
      },
      22913: (e, t, n) => {
        "use strict";
        n.d(t, { Tz: () => D, ae: () => k, fM: () => A });
        var i = n(34629),
          o = n(78116),
          r = n(78919),
          a = n(50622),
          s = n(58743),
          l = n(98540),
          c = n(25698),
          m = n(91364),
          d = n(14355),
          u = n(91466),
          h = n(41230),
          p = n(63696),
          _ = n(94762),
          g = n(27816),
          C = n(89021),
          f = n(74002),
          S = n(82924),
          v = n(81734),
          b = n(13346),
          I = n(33310),
          w = n.n(I),
          y = n(27281),
          E = n(17070);
        function D(e, t, n) {
          let i,
            o = (0, r.CO)(e);
          return (
            t.BIsClanChatRoom() &&
              (i = s.xm.FriendStore.ClanStore.GetClan(t.GetClanID())),
            (0, _.lX)(
              p.createElement(R, {
                browserContext: o,
                group: t,
                clan: i,
                context: n,
                ownerWindow: (0, a.uX)(e),
              }),
              e,
            )
          );
        }
        function A(e, t, n) {
          let i,
            o = (0, r.CO)(e);
          return (
            t.GetChatGroupIDIfLoaded() &&
              (i = s.xm.ChatStore.GetChatRoomGroup(t.GetChatGroupIDIfLoaded())),
            (0, _.lX)(
              p.createElement(R, {
                browserContext: o,
                group: i,
                clan: t,
                context: n,
                ownerWindow: (0, a.uX)(e),
              }),
              e,
            )
          );
        }
        function T(e, t) {
          (0, y.L)("FindGamesToPlayWithFriends/ChatRoom"),
            e.stopPropagation(),
            (0, m.Hf)(t, (0, r.CO)(e));
        }
        function M(e, t, n, i, r) {
          if (
            o.TS.IN_CLIENT &&
            s.xm.SettingsStore.BClientHasFeatureOrOnWeb("FriendsFilter")
          ) {
            let o = e < 2 || e > 8;
            return p.createElement(
              g.kt,
              {
                disabled: o,
                key: i,
                onSelected: r,
                className: w().ChatroomContextMenuDisableableItem,
              },
              t,
              o &&
                p.createElement(
                  "div",
                  { className: w().DisabledDescriptor },
                  (0, f.we)(n, 2, 8),
                ),
            );
          }
          return null;
        }
        class R extends p.Component {
          static contextType = E.QO;
          OpenChatWindow(e) {
            this.props.group
              ? s.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                  this.props.browserContext,
                  this.props.group,
                  !0,
                )
              : this.props.clan.OpenChatDialog(this.props.browserContext, !0);
          }
          ShowClanProfile(e) {
            let t;
            if (this.props.clan.BIsOGG())
              t = `${o.TS.COMMUNITY_BASE_URL}app/${this.props.clan.GetOGGAppID()}`;
            else {
              let e = this.props.clan.steamid;
              t = `${o.TS.COMMUNITY_BASE_URL}gid/${e.ConvertTo64BitString()}`;
            }
            (0, u.EP)(e, t), e.stopPropagation();
          }
          FindGamesToPlay(e) {
            T(
              e,
              this.props.group.memberList.member_list.map((e) => e.accountid),
            );
          }
          LeaveChatRoomGroup(e) {
            (0, l.qj)(
              e.currentTarget.ownerDocument.defaultView,
              this.props.group,
            );
          }
          render() {
            let e = [],
              t = this.props.group,
              n = this.props.clan,
              i = this.props.context || {},
              o = s.xm.FriendStore.FavoritesStore,
              r = this.props.group.memberList.member_list.length;
            if (
              (i.tab
                ? e.push(
                    p.createElement(
                      g.kt,
                      {
                        key: "closetab",
                        onSelected: () => {
                          s.xm.UIStore.CloseTab(
                            this.props.browserContext,
                            i.tab,
                          );
                        },
                      },
                      (0, f.we)(
                        this.context?.IN_GAMEPADUI
                          ? "#Chat_CloseTabAction_SteamDeck"
                          : "#Chat_CloseTabAction",
                      ),
                    ),
                  )
                : i.is_chat_window ||
                  e.push(
                    p.createElement(
                      g.kt,
                      { key: "opentab", onSelected: this.OpenChatWindow },
                      (0, f.we)("#Chat_Actions_OpenChat"),
                    ),
                  ),
              n &&
                !n.BIsOGG() &&
                e.push(
                  p.createElement(
                    g.kt,
                    { key: "viewprofile", onSelected: this.ShowClanProfile },
                    (0, f.we)("#Friend_Menu_ViewProfile"),
                  ),
                ),
              this.props.group.readyToRender)
            ) {
              const t = M(
                r,
                (0, f.we)("#Chat_Actions_FindGamesToPlay"),
                "#Chat_Tooltip_FindGamesToPlay_UserCountRestriction_ChatGroup",
                "findgamestoplay",
                this.FindGamesToPlay,
              );
              t && e.push(t);
            }
            e.push(
              p.createElement(
                g.kt,
                { key: "leavechatroom", onSelected: this.LeaveChatRoomGroup },
                (0, f.we)(
                  n
                    ? "#Chat_Actions_LeaveChatRoom"
                    : "#Chat_Actions_LeaveChatRoomGroup",
                ),
              ),
            );
            let a = n ? { clan: n } : { chat: t };
            return (
              s.xm.FriendStore.FavoritesStore.BIsFavorited(a)
                ? i.is_favorites &&
                  e.push(
                    p.createElement(
                      g.kt,
                      {
                        key: "quickaccess",
                        onSelected: () => {
                          o.RemoveFromFavorites(a);
                        },
                      },
                      (0, f.we)("#Friend_Menu_RemoveFromQuickAccess"),
                    ),
                  )
                : e.push(
                    p.createElement(
                      g.kt,
                      {
                        key: "quickaccess",
                        onSelected: () => {
                          o.AddToFavorites(a);
                        },
                      },
                      (0, f.we)("#Friend_Menu_AddToQuickAccess"),
                    ),
                  ),
              n &&
                n.BIsOGG() &&
                e.push(
                  p.createElement(m.Rm, {
                    unAppID: n.GetOGGAppID(),
                    strGameName: n.name,
                  }),
                ),
              p.createElement(
                g.tz,
                { className: "chatRoomListItemContextMenu", label: t.name },
                e,
              )
            );
          }
        }
        function k(e, t, n, i, o) {
          if (t.GetDefaultChatID() == n) return null;
          if (L.BIsMenuEmpty(t, n, !!o)) return null;
          let r = (0, a.uX)(i);
          return (0, _.lX)(
            p.createElement(L, {
              browserContext: e,
              group: t,
              roomID: n,
              ownerWindow: r,
              onStartRoomRename: o,
            }),
            i,
          );
        }
        (0, i.Cg)([S.oI], R.prototype, "OpenChatWindow", null),
          (0, i.Cg)([S.oI], R.prototype, "ShowClanProfile", null),
          (0, i.Cg)([S.oI], R.prototype, "FindGamesToPlay", null),
          (0, i.Cg)([S.oI], R.prototype, "LeaveChatRoomGroup", null);
        class L extends p.PureComponent {
          ShowInviteDialog() {
            let e = this.props.group.GetChatRoom(this.props.roomID);
            (0, b.E5)(
              this.props.browserContext,
              this.props.ownerWindow,
              this.props.group,
              e,
            );
          }
          FindGamesToPlayInChannel(e) {
            T(
              e,
              this.props.group
                .GetChatRoom(this.props.roomID)
                .voice_active_member_list.member_list.map((e) => e.accountid),
            );
          }
          SaveVoiceRoom(e) {
            let t = (0, a.uX)(e);
            var n, i, o;
            (n = t),
              (i = this.props.group),
              (o = this.props.roomID),
              (0, d.HT)(
                p.createElement(G, { group: i, roomID: o }),
                n,
                "SaveVoiceRoomDialog",
                {
                  strTitle: (0, f.we)("#Chat_SaveVoiceRoom"),
                  popupWidth: 664,
                  popupHeight: 380,
                },
                (0, r.h8)(n),
              );
          }
          RemoveRoom() {
            (0, c.Ci)(
              this.props.ownerWindow,
              (0, f.we)("#Chat_Actions_RemoveRoom"),
              (0, f.we)("#Chat_Actions_RemoveRoom_Confirm"),
              (0, f.we)("#Chat_Actions_RemoveRoom_Action"),
            )
              .then(() => {
                let e = this.props.group,
                  t = this.props.roomID;
                e.DeleteChatRoom(t);
              })
              .catch(() => {});
          }
          ChangeRoomName() {
            this.props.onStartRoomRename(this.props.roomID);
          }
          static BIsMenuEmpty(e, t, n) {
            let i = e.GetDefaultChatID() == t,
              o = e.BIsTempVoiceChannel(t),
              r = e.BCanAdminChannel();
            return (
              !e.BIsVoiceChannel(t) &&
              (!o || !r) && !(n && !i && !o && r) &&
              !(!i && r)
            );
          }
          render() {
            let e = [],
              t = this.props.group,
              n = this.props.roomID,
              i = this.props.group.GetChatRoom(this.props.roomID),
              o = t.GetDefaultChatID() == n,
              r = t.BIsTempVoiceChannel(n),
              a = t.BCanAdminChannel(),
              s = (t.BCanInvite(), i.voice_active_member_list.member_count);
            e.push(
              p.createElement(
                g.kt,
                { key: "invitefriend", onSelected: this.ShowInviteDialog },
                (0, f.we)("#Chat_Actions_InviteFriendtoVoice"),
              ),
            );
            const l = M(
              s,
              (0, f.we)("#Chat_Actions_FindGamesToPlay"),
              "#Chat_Tooltip_FindGamesToPlay_UserCountRestriction_Channel",
              "findgamestoplayinchannel",
              this.FindGamesToPlayInChannel,
            );
            return (
              l && e.push(l),
              r &&
                e.push(
                  p.createElement(
                    g.kt,
                    {
                      key: "savechannel",
                      className: a ? "" : w().ChatRoomContextNoPermission,
                      onSelected: this.SaveVoiceRoom,
                    },
                    !a && p.createElement(v.c_I, null),
                    (0, f.we)("#Chat_Actions_SaveChannel"),
                  ),
                ),
              this.props.onStartRoomRename &&
                !o &&
                !r &&
                a &&
                e.push(
                  p.createElement(
                    g.kt,
                    { key: "renameroom", onSelected: this.ChangeRoomName },
                    (0, f.we)("#Chat_Actions_ChangeRoomName"),
                  ),
                ),
              !o &&
                a &&
                e.push(
                  p.createElement(
                    g.kt,
                    { key: "removeroom", onSelected: this.RemoveRoom },
                    (0, f.we)("#Chat_Actions_RemoveRoom"),
                  ),
                ),
              e.length < 1
                ? (console.log(
                    "warning: empty context menu. Did someone not update BIsMenuEmpty?",
                  ),
                  null)
                : p.createElement(
                    g.tz,
                    { className: "friendsContextMenu", label: t.name },
                    e,
                  )
            );
          }
        }
        (0, i.Cg)([S.oI], L.prototype, "ShowInviteDialog", null),
          (0, i.Cg)([S.oI], L.prototype, "FindGamesToPlayInChannel", null),
          (0, i.Cg)([S.oI], L.prototype, "SaveVoiceRoom", null),
          (0, i.Cg)([S.oI], L.prototype, "RemoveRoom", null),
          (0, i.Cg)([S.oI], L.prototype, "ChangeRoomName", null);
        let G = class extends p.Component {
          constructor(e) {
            super(e), (this.state = { strName: "", strError: void 0 });
          }
          HandleTextEntry(e) {
            this.setState({ strName: e.target.value });
          }
          HandleSubmit(e) {
            e && e.preventDefault();
            let t = this.state.strName;
            0 != t.length
              ? (this.props.group.RenameRoom(this.props.roomID, t),
                this.props.closeModal())
              : this.setState({
                  strError: (0, f.we)("#Chat_SaveVoiceRoom_Error_EmptyName"),
                });
          }
          render() {
            return p.createElement(
              d.x_,
              { onEscKeypress: this.props.closeModal },
              p.createElement(
                C.U9,
                {
                  classNameContent: "SaveVoiceRoomDialog",
                  onSubmit: this.HandleSubmit,
                },
                p.createElement(C.Y9, null, (0, f.we)("#Chat_SaveVoiceRoom")),
                p.createElement(
                  C.nB,
                  null,
                  this.state.strError &&
                    p.createElement(
                      C.a3,
                      { className: "nicknameError" },
                      this.state.strError,
                    ),
                  p.createElement(
                    C.a3,
                    null,
                    (0, f.we)("#Chat_SaveVoiceRoom_Description"),
                  ),
                  p.createElement(C.pd, {
                    type: "text",
                    label: (0, f.we)("#Chat_SaveVoiceRoom_Name"),
                    className: "nicknameInput",
                    value: this.state.strName,
                    onChange: this.HandleTextEntry,
                    autoFocus: !0,
                  }),
                ),
                p.createElement(
                  C.wi,
                  null,
                  p.createElement(C.CB, { onCancel: this.props.closeModal }),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([S.oI], G.prototype, "HandleTextEntry", null),
          (0, i.Cg)([S.oI], G.prototype, "HandleSubmit", null),
          (G = (0, i.Cg)([h.PA], G));
      },
      76343: (e, t, n) => {
        "use strict";
        n.d(t, { sU: () => U, dH: () => N, XX: () => q });
        var i = n(34629),
          o = n(78116),
          r = n(51802),
          a = n(73880),
          s = n(82789),
          l = n(58743),
          c = n(78919),
          m = n(53819),
          d = n(98540),
          u = n(22913),
          h = n(91364),
          p = n(89193),
          _ = n(41230),
          g = n(63696),
          C = n(23038),
          f = n(45112),
          S = n(94762),
          v = n(69074),
          b = n(27816),
          I = n(89021),
          w = n(1808),
          y = n(82924),
          E = n(67520);
        class D extends g.Component {
          m_elScroll;
          m_animation;
          constructor(e) {
            super(e),
              (this.state = {
                nCalculatedHeightPx: void 0,
                bLeftSliderVisible: !1,
                bRightSliderVisible: !1,
              });
          }
          OnRef(e) {
            this.UnbindWindowHandlers(),
              e &&
                ((this.m_elScroll = e),
                e.ownerDocument.defaultView &&
                  this.m_elScroll.ownerDocument.defaultView.addEventListener(
                    "resize",
                    this.CheckScrollPosition,
                  ),
                this.CheckScrollPosition());
          }
          CheckScrollPosition() {
            if (
              !this.m_elScroll ||
              (this.m_animation && this.m_animation.BIsActive())
            )
              return;
            let e = 0;
            for (
              let t = this.m_elScroll.firstElementChild;
              t;
              t = t.nextElementSibling
            )
              e = Math.max(e, t.getBoundingClientRect().height);
            e != this.state.nCalculatedHeightPx &&
              this.setState({ nCalculatedHeightPx: e }),
              this.UpdateSliderControlsForScrollOffset(
                this.m_elScroll.scrollLeft,
              );
          }
          UpdateSliderControlsForScrollOffset(e) {
            let t = e > 1,
              n =
                e + this.m_elScroll.getBoundingClientRect().width <
                this.m_elScroll.scrollWidth - 1;
            t != this.state.bLeftSliderVisible &&
              this.setState({ bLeftSliderVisible: t }),
              n != this.state.bRightSliderVisible &&
                this.setState({ bRightSliderVisible: n });
          }
          AnimateScrollLeftTo(e) {
            this.m_animation && this.m_animation.Cancel(),
              (this.m_animation = new E.JV(
                this.m_elScroll,
                { scrollLeft: e },
                {
                  msDuration: 500,
                  onComplete: this.CheckScrollPosition,
                  timing: "cubic-in-out",
                },
              )),
              this.m_animation.Start(),
              this.UpdateSliderControlsForScrollOffset(e);
          }
          OnSlideLeftClick() {
            (this.m_animation && this.m_animation.BIsActive()) ||
              (this.m_elScroll &&
                this.AnimateScrollLeftTo(
                  Math.max(
                    0,
                    this.m_elScroll.scrollLeft -
                      this.m_elScroll.getBoundingClientRect().width,
                  ),
                ));
          }
          OnSlideRightClick() {
            (this.m_animation && this.m_animation.BIsActive()) ||
              (this.m_elScroll &&
                this.AnimateScrollLeftTo(
                  Math.min(
                    this.m_elScroll.scrollWidth -
                      this.m_elScroll.getBoundingClientRect().width,
                    this.m_elScroll.scrollLeft +
                      this.m_elScroll.getBoundingClientRect().width,
                  ),
                ));
          }
          OnWheel(e) {
            e &&
              e.nativeEvent &&
              (e.nativeEvent.deltaY < 0
                ? this.OnSlideLeftClick()
                : this.OnSlideRightClick());
          }
          GetScrollRef() {
            return this.m_elScroll;
          }
          componentWillUnmount() {
            this.UnbindWindowHandlers(),
              this.m_animation && this.m_animation.Cancel();
          }
          componentDidUpdate() {
            this.CheckScrollPosition();
          }
          UnbindWindowHandlers() {
            this.m_elScroll &&
              (this.m_elScroll.ownerDocument.defaultView &&
                this.m_elScroll.ownerDocument.defaultView.removeEventListener(
                  "resize",
                  this.CheckScrollPosition,
                ),
              (this.m_elScroll = void 0));
          }
          render() {
            let e = "auto";
            return (
              this.state.nCalculatedHeightPx &&
                (e = this.state.nCalculatedHeightPx + "px"),
              g.createElement(
                "div",
                {
                  onWheel: this.OnWheel,
                  className: "HorizontalMiniSlider",
                  style: { height: e },
                },
                g.createElement(
                  "div",
                  {
                    className:
                      "HorizontalMiniSliderScroll " + this.props.className,
                    onScroll: this.CheckScrollPosition,
                    ref: this.OnRef,
                  },
                  this.props.children,
                ),
              )
            );
          }
        }
        (0, i.Cg)([y.oI], D.prototype, "OnRef", null),
          (0, i.Cg)([y.oI], D.prototype, "CheckScrollPosition", null),
          (0, i.Cg)([y.oI], D.prototype, "OnSlideLeftClick", null),
          (0, i.Cg)([y.oI], D.prototype, "OnSlideRightClick", null),
          (0, i.Cg)([y.oI], D.prototype, "OnWheel", null);
        var A = n(14355),
          T = n(81734),
          M = n(82099),
          R = n(37779),
          k = n(77171),
          L = n(74002),
          G = n(58574),
          F = n.n(G),
          P = n(99862),
          B = n(17070),
          x = n(34879),
          O = n(36755);
        let N = class extends g.Component {
          static contextType = B.QO;
          m_mapTabs = new Map();
          m_rgOrderedRenderedTabs = [];
          m_bUsePopups = !1;
          m_nInitialTabDragOffset = -1;
          m_window;
          m_nTheaterTopHoverHeight = 12;
          m_elchatTabDiv;
          m_elScroll;
          m_animation;
          m_fnUnregisterDropComplete = void 0;
          m_tabDrag = void 0;
          constructor(e) {
            super(e),
              (0, p.Gn)(this),
              (this.state = {
                iDragIndex: 0,
                windowWidth: 0,
                bTheaterModeTopHovered: !1,
              });
          }
          componentDidUpdate() {
            this.FixScrollLocation();
          }
          componentDidMount() {
            let e = this.props.popup ? this.props.popup.window : window;
            e && e.addEventListener("resize", this.OnWindowResizeEvent),
              this.m_elchatTabDiv &&
                (this.setState({
                  windowWidth: this.m_elchatTabDiv.clientWidth,
                }),
                this.UpdateWindowIcon());
          }
          componentWillUnmount() {
            let e = this.props.popup ? this.props.popup.window : window;
            e && e.removeEventListener("resize", this.OnWindowResizeEvent);
          }
          OnWindowResizeEvent() {
            this.m_elchatTabDiv &&
              this.setState({ windowWidth: this.m_elchatTabDiv.clientWidth });
          }
          FocusActiveTab() {
            let e = this.m_mapTabs.get(this.props.activeTab.GetUniqueID());
            if (!e) return !1;
            let t = e.GetChatTabRef();
            return !!t && (t.focus(), !0);
          }
          SetDragTab(e) {
            void 0 !== e
              ? (this.m_fnUnregisterDropComplete =
                  c.ZM.DragDropManager.RegisterForDropComplete(
                    this.HandleDropComplete,
                  ))
              : this.m_fnUnregisterDropComplete &&
                (this.m_fnUnregisterDropComplete.Unregister(),
                (this.m_fnUnregisterDropComplete = void 0)),
              (this.m_tabDrag = e),
              (this.m_nInitialTabDragOffset = -1);
          }
          GetDragTab() {
            return this.m_tabDrag;
          }
          HandleDropComplete(e) {
            (this.m_fnUnregisterDropComplete = void 0),
              (this.m_tabDrag = void 0);
          }
          FixScrollLocation() {
            if (!this.m_elScroll) return;
            if (!this.props.activeTab) return;
            let e = this.m_mapTabs.get(this.props.activeTab.GetUniqueID());
            if (!e) return;
            let t = e.GetChatTabRef();
            if (!t) return;
            let n = t.offsetLeft,
              i = t.offsetLeft + t.offsetWidth,
              o = Math.ceil(
                this.m_elScroll.scrollLeft + this.m_elScroll.clientWidth,
              );
            if (n < o && i > o) {
              let e = i - Math.floor(this.m_elScroll.clientWidth) + 40;
              this.SetScrollLeft(e);
            } else if (n < this.m_elScroll.scrollLeft + 40 || i > o) {
              let e = n;
              0 != e && (e -= 40), this.SetScrollLeft(e);
            }
          }
          SetScrollLeft(e) {
            this.m_elScroll.scrollLeft != e &&
              (this.m_animation && this.m_animation.Cancel(),
              (this.m_animation = new E.JV(
                this.m_elScroll,
                { scrollLeft: e },
                { msDuration: 300, timing: "sine", onComplete: () => {} },
              )),
              this.m_animation.Start());
          }
          UpdateDragOffset(e) {
            let t,
              n = e.clientX;
            for (t = 0; t < this.m_rgOrderedRenderedTabs.length; t++) {
              let e = this.m_rgOrderedRenderedTabs[t],
                i = this.m_mapTabs.get(e.GetUniqueID()),
                o = i && i.GetBoundingClientRect();
              if (
                i &&
                o &&
                n - o.left < o.width &&
                (this.m_nInitialTabDragOffset < 0 &&
                  (this.m_nInitialTabDragOffset = n - o.left),
                n - this.m_nInitialTabDragOffset < o.left + o.width / 2)
              )
                break;
            }
            this.state.iDragIndex != t && this.setState({ iDragIndex: t });
          }
          OnTabRef(e, t) {
            t ? this.m_mapTabs.set(e, t) : this.m_mapTabs.delete(e),
              this.UpdateWindowIcon();
          }
          OnScrollRef(e) {
            this.m_elScroll = e ? e.GetScrollRef() : null;
          }
          SelectTab(e) {
            this.props.tabSet.ActivateTab(e);
          }
          OnDragStart(e) {
            let t = c.ZM.DragDropManager.GetDragData();
            t && "chattab" == t.type && (t.tabSet = this.props.tabSet);
          }
          OnChatTabContianerRef(e) {
            this.m_elchatTabDiv = e;
          }
          OnDragEnd() {
            this.m_tabDrag = void 0;
          }
          OnBackClick(e) {
            this.props.ResponsiveWindowState.SetActiveView(m.OC.FriendsList);
          }
          ShowFriendsList(e) {
            l.xm.UIStore.SetTheaterMode(!1),
              l.xm.UIStore.SetFriendsListCollapsed((0, c.CO)(e), !1);
          }
          StartTopbarEventListener() {
            this.m_elchatTabDiv.ownerDocument.defaultView.addEventListener(
              "mousemove",
              this.OnTopbarHovered,
            );
          }
          OnTopbarHovered(e) {
            let t = e.clientY;
            l.xm.UIStore.GetTheaterMode() ||
              this.m_elchatTabDiv.ownerDocument.defaultView.removeEventListener(
                "mousemove",
                this.OnTopbarHovered,
              ),
              t > this.m_nTheaterTopHoverHeight
                ? this.state.bTheaterModeTopHovered &&
                  (this.setState({ bTheaterModeTopHovered: !1 }),
                  (this.m_nTheaterTopHoverHeight = 12))
                : this.state.bTheaterModeTopHovered ||
                  ((this.m_nTheaterTopHoverHeight = 50),
                  this.setState({ bTheaterModeTopHovered: !0 }));
          }
          OnTabSelectorClick(e) {
            let t =
              33 * this.m_mapTabs.size +
                (e.currentTarget.offsetTop + e.currentTarget.clientHeight) +
                16 >
              e.currentTarget.ownerDocument.defaultView.innerHeight;
            (0, S.lX)(
              g.createElement(V, { tabSet: this.props.tabSet }),
              e.currentTarget,
              {
                bOverlapHorizontal: !0,
                bPreferPopLeft: !1,
                bPreferPopTop: !1,
                bForcePopup: t,
              },
            );
          }
          UpdateWindowIcon() {
            try {
              if (
                this.props.popup &&
                this.props.popup.window &&
                void 0 !== this.props.popup.window.SteamClient
              ) {
                let e = !1,
                  t = !1,
                  n = this.props.tabSet.tabs;
                for (let i of n)
                  i.GetUnreadMessageCount() > 0 && (e = !0),
                    i.IsVoiceActive() && (t = !0);
                t
                  ? this.props.popup.window.SteamClient.Window.SetWindowIcon(
                      "voice",
                    )
                  : e
                    ? this.props.popup.window.SteamClient.Window.SetWindowIcon(
                        "messages",
                      )
                    : this.props.popup.window.SteamClient.Window.SetWindowIcon(
                        "steam",
                      );
              }
            } catch (e) {}
          }
          render() {
            let e = l.xm.UIStore.GetTheaterMode();
            if (
              (this.UpdateWindowIcon(),
              this.props.tabSet.tabCount <= 0 && !this.props.popup)
            )
              return null;
            let t,
              n = this.props.tabSet.tabs,
              i = this.props.activeTab,
              r = !1,
              s = !1;
            if (i instanceof a.$C) {
              r = i.isBroadcastShown;
            } else i && i.IsBroadcast && i.IsBroadcast() && (r = !0);
            for (let e of n)
              if (e.GetUnreadMessageCount() > 0) {
                s = !0;
                break;
              }
            if (this.m_tabDrag) {
              let e = n.indexOf(this.m_tabDrag);
              -1 != e
                ? e != this.state.iDragIndex &&
                  ((t = n.slice()),
                  (0, R.yY)(
                    t,
                    e,
                    Math.min(this.state.iDragIndex, n.length - 1),
                  ))
                : this.state.iDragIndex < n.length
                  ? ((t = n.slice()),
                    t.splice(this.state.iDragIndex, 0, this.m_tabDrag))
                  : (t = n.concat(this.m_tabDrag));
            }
            (n = t || n), (this.m_rgOrderedRenderedTabs = n);
            let m,
              d = "ChatTabs titleBarContainer";
            this.props.popup && (d += " HasWindowControls"),
              1 == n.length
                ? (d += " OneTab")
                : this.state.windowWidth < 180 * n.length + 180 &&
                  (d += " HasTabs"),
              l.xm.SettingsStore.FriendsSettings.bCompactFriendsList &&
                (d += " compactView"),
              this.state.bTheaterModeTopHovered && (d += " TheaterTopHovered"),
              (0, B.Pr)() && (d += " OSX"),
              this.props.ResponsiveWindowState &&
                (m = g.createElement(
                  "div",
                  {
                    className: "ChatTabsBackButton",
                    onClick: this.OnBackClick,
                  },
                  "<<",
                )),
              r && (d += " activeTabHasBroadcast");
            let u,
              h = !1,
              p = !0;
            this.props.popup &&
              ((u = (0, c._k)(this.props.popup)),
              (p = l.xm.UIStore.BIsFriendsListSingleWindow(u)),
              (h = !(0, x.u)(u, x.m))),
              e && this.m_elchatTabDiv && this.StartTopbarEventListener();
            const _ =
                (this.m_elchatTabDiv &&
                  180 * this.props.tabSet.tabCount +
                    (o.TS.IN_CLIENT ? 168 : 48) >
                    this.m_elchatTabDiv.clientWidth) ||
                !1,
              f = h;
            return g.createElement(
              v.Z,
              {
                "flow-children": "row",
                className: (0, k.A)(
                  d,
                  this.props.showOpenFriendsList && "friendsListCollapsed",
                ),
                onDragStart: this.OnDragStart,
                ref: this.OnChatTabContianerRef,
              },
              this.props.popup &&
                g.createElement(M.c, {
                  hideMin: f,
                  hideMax: f,
                  popup: this.props.popup,
                  className: "chatTitleBar",
                }),
              m,
              ((e && p) || this.props.showOpenFriendsList) &&
                g.createElement(
                  "div",
                  {
                    className: "chatTabOpenFriendsList",
                    onClick: this.ShowFriendsList,
                  },
                  g.createElement(T.YJl, null),
                  (0, L.we)("#FriendsList_ExpandButton"),
                ),
              this.props.tabSet.tabCount > 0 &&
                g.createElement(
                  "div",
                  {
                    className: (0, k.A)(
                      "chatTabSetContainer",
                      this.context?.IN_GAMEPADUI && "gamepadui",
                      o.TS.IN_CLIENT && "inclient",
                    ),
                  },
                  g.createElement(
                    D,
                    { className: "chatTabList", ref: this.OnScrollRef },
                    g.createElement(
                      C.A,
                      { className: F().ChatTabTransitionGroup },
                      n.map((e, t) => {
                        let n = this.props.activeTab == e,
                          i = (t) => this.OnTabRef(e.GetUniqueID(), t),
                          o = {
                            enter: F().ChatTabTransition_Enter,
                            enterActive: F().ChatTabTransition_EnterActive,
                            exit: F().ChatTabTransition_Exit,
                            exitActive: F().ChatTabTransition_ExitActive,
                          };
                        return g.createElement(
                          O.M,
                          { classNames: o, key: e.GetUniqueID(), timeout: 350 },
                          (t) =>
                            g.createElement(U, {
                              tab: e,
                              active: n,
                              selectTab: this.SelectTab,
                              ref: i,
                              containerRef: t,
                              fnOnDragEnd: this.OnDragEnd,
                            }),
                        );
                      }),
                    ),
                  ),
                  _ &&
                    !this.context?.IN_GAMEPADUI &&
                    g.createElement(
                      "div",
                      {
                        className:
                          "chatTabSelector" + (s ? " UnreadMessages" : ""),
                        onClick: this.OnTabSelectorClick,
                      },
                      g.createElement(T.GB9, null),
                      s &&
                        g.createElement("div", {
                          className: "ChatUnreadMessageIndicator",
                        }),
                    ),
                ),
              g.createElement("div", { className: "dropTargetBox" }),
              e &&
                g.createElement(
                  "div",
                  {
                    className:
                      "theaterModeHoverSpace" + (s ? " hasUnreadMessages" : ""),
                  },
                  s &&
                    g.createElement(
                      "div",
                      { className: "ChatUnreadMessageIndicator" },
                      g.createElement("div", { className: "chatUnreadCircle" }),
                    ),
                ),
            );
          }
        };
        (0, i.Cg)([p.sH], N.prototype, "m_nTheaterTopHoverHeight", void 0),
          (0, i.Cg)([p.sH], N.prototype, "m_tabDrag", void 0),
          (0, i.Cg)([y.oI], N.prototype, "OnWindowResizeEvent", null),
          (0, i.Cg)([y.oI], N.prototype, "HandleDropComplete", null),
          (0, i.Cg)([y.oI], N.prototype, "OnTabRef", null),
          (0, i.Cg)([y.oI], N.prototype, "OnScrollRef", null),
          (0, i.Cg)([y.oI], N.prototype, "SelectTab", null),
          (0, i.Cg)([y.oI], N.prototype, "OnDragStart", null),
          (0, i.Cg)([y.oI], N.prototype, "OnChatTabContianerRef", null),
          (0, i.Cg)([y.oI], N.prototype, "OnDragEnd", null),
          (0, i.Cg)([y.oI], N.prototype, "OnBackClick", null),
          (0, i.Cg)([y.oI], N.prototype, "ShowFriendsList", null),
          (0, i.Cg)([y.oI], N.prototype, "StartTopbarEventListener", null),
          (0, i.Cg)([y.oI], N.prototype, "OnTopbarHovered", null),
          (0, i.Cg)([y.oI], N.prototype, "OnTabSelectorClick", null),
          (N = (0, i.Cg)([_.PA], N));
        let V = class extends g.Component {
          SelectTab(e) {
            this.props.tabSet.ActivateTab(e);
          }
          render() {
            let e = [],
              t = this.props.tabSet.tabs;
            for (let n of t) {
              let t = g.createElement(U, {
                tab: n,
                active: !0,
                selectTab: this.SelectTab,
                fnOnDragEnd: null,
                bDisableContextMenu: !0,
              });
              e.push(
                g.createElement(
                  b.kt,
                  {
                    key: n.GetUniqueID(),
                    className: "ChatTabContextMenuItem",
                    onSelected: null,
                  },
                  t,
                ),
              );
            }
            return g.createElement(
              b.tz,
              {
                className:
                  "ChatTabs ChatTabsContextMenu compactView CompactFriendsList",
              },
              e,
            );
          }
        };
        (0, i.Cg)([y.oI], V.prototype, "SelectTab", null),
          (V = (0, i.Cg)([_.PA], V));
        let U = class extends g.Component {
          static contextType = B.QO;
          m_elChatTab;
          m_bMiddleMouseDown = !1;
          BindChatTab(e) {
            this.m_elChatTab = e;
          }
          GetBoundingClientRect() {
            return this.m_elChatTab
              ? this.m_elChatTab.getBoundingClientRect()
              : void 0;
          }
          GetChatTabRef() {
            return this.m_elChatTab;
          }
          OnDragStart(e) {
            let t = e.clientX - e.currentTarget.getBoundingClientRect().left,
              n = e.clientY - e.currentTarget.getBoundingClientRect().top;
            c.ZM.DragDropManager.StartDrag({
              type: "chattab",
              tab: this.props.tab,
              offsetX: t,
              offsetY: n,
            });
          }
          OnDragEnd(e) {
            let t = c.ZM.DragDropManager.GetDragData();
            if (t && "chattab" == t.type) {
              let n = t,
                i = !1;
              if (n.tabSet) {
                i = l.xm.UIStore.GetPerContextChatData(
                  n.tabSet.GetBrowserContext(),
                ).BUsePopups();
              }
              if (
                !c.ZM.DragDropManager.BWasDropConsumed() &&
                n.tabSet &&
                n.tabSet.tabCount > 1 &&
                i
              ) {
                let t = e.currentTarget.getBoundingClientRect();
                const o = 100;
                let r = t.left - e.clientX,
                  a = t.top - e.clientY;
                if (r * r + a * a > o * o) {
                  let t = e.currentTarget.ownerDocument.defaultView,
                    o = {
                      left: Math.max(0, e.screenX - n.offsetX),
                      top: Math.max(0, e.screenY - n.offsetY),
                      width: t.innerWidth,
                      height: t.innerHeight,
                    };
                  if ((this.props.fnOnDragEnd(), i)) {
                    let t = (0, c.CO)(e);
                    e.currentTarget.ownerDocument.defaultView.SteamClient.Window.GetMousePositionDetails().then(
                      (e) => {
                        e && ((o.left = -n.offsetX), (o.top = -n.offsetY)),
                          l.xm.UIStore.MoveTabToNewPopup(t, n.tab, o, e);
                      },
                    );
                  } else l.xm.UIStore.MoveTabToNewPopup((0, c.CO)(e), n.tab, o);
                }
              }
            }
            c.ZM.DragDropManager.EndDrag();
          }
          OnMouseDown(e) {
            0 == e.button
              ? this.props.selectTab(this.props.tab)
              : 1 == e.button &&
                (e.preventDefault(), (this.m_bMiddleMouseDown = !0));
          }
          OnOKButton(e) {
            this.props.selectTab(this.props.tab);
          }
          OnMouseUp(e) {
            1 == e.button &&
              this.m_bMiddleMouseDown &&
              (l.xm.UIStore.CloseTab((0, c.CO)(e), this.props.tab),
              e.preventDefault(),
              (this.m_bMiddleMouseDown = !1));
          }
          OnMouseLeave(e) {
            this.m_bMiddleMouseDown = !1;
          }
          OnCloseMouseDown(e) {
            e.stopPropagation();
          }
          OnCloseClick(e) {
            l.xm.UIStore.CloseTab((0, c.CO)(e), this.props.tab),
              e.stopPropagation();
          }
          OnContextMenu(e) {
            if (this.props.bDisableContextMenu) return;
            let t = this.props.tab;
            if (t.IsChatRoom()) {
              if (t instanceof a.$C) {
                let n = t;
                (0, u.Tz)(e, n.GetGroup(), { tab: t });
              }
            } else {
              let t = this.props.tab.GetChatView();
              (0, h.tj)(
                (0, c.CO)(e),
                { tab: this.props.tab },
                t.chat.chat_partner,
                e,
              );
            }
          }
          render() {
            let e, t;
            this.props.tab.GetChatView()?.IsFriendChat() &&
              ((e = this.props.tab.GetChatView()),
              (t = e.chat.accountid_partner));
            let n =
                null != t &&
                l.xm.VoiceStore.BSelfHasAcceptedOrInitiatedOneOnOneChat(t),
              i =
                null != t &&
                l.xm.VoiceStore.BPartnerHasAcceptedOrInitiatedOneOnOneChat(t),
              o = n && !i,
              r = l.xm.ChatStore.VoiceChat.IsMicMuted(),
              a = this.props.tab,
              s = a.IsVoiceActive(),
              c = (0, k.A)(
                F().ChatTab,
                "no-drag",
                this.props.active && F().Active,
                s && F().VoiceActive,
                s && r && F().MicMuted,
              );
            return g.createElement(
              v.Z,
              {
                className: c,
                ref: (0, y.XB)(this.BindChatTab, this.props.containerRef),
                focusable: null != this.props.selectTab,
                draggable: !0,
                onSecondaryButton: this.OnCloseClick,
                onSecondaryActionDescription: (0, L.we)(
                  "#Chat_CloseTabAction_SteamDeck",
                ),
                onOKButton: this.OnOKButton,
                onMenuButton: this.OnContextMenu,
                onMouseDown: this.OnMouseDown,
                onMouseUp: this.OnMouseUp,
                onMouseLeave: this.OnMouseLeave,
                onDragStart: this.OnDragStart,
                onDragEnd: this.OnDragEnd,
                onContextMenu: this.OnContextMenu,
                onOKActionDescription: null,
                onMenuActionDescription: (0, L.we)("#Chat_Tab_ContextMenu"),
              },
              g.createElement(
                W,
                { tab: this.props.tab, active: this.props.active },
                g.createElement(
                  "div",
                  { className: F().ChatTabRow },
                  a.IsVoiceActive() &&
                    g.createElement(
                      "div",
                      {
                        className: F().MicStatus,
                        title: r
                          ? (0, L.we)("#Tooltip_MicStatus_Muted")
                          : (0, L.we)("#Tooltip_MicStatus_Active"),
                      },
                      this.context?.IN_GAMEPADUI
                        ? o
                          ? g.createElement(T.t$Q, null)
                          : g.createElement(T.mrd, null)
                        : g.createElement(T.EQ9, { off: r }),
                    ),
                  g.createElement(
                    w.tH,
                    null,
                    g.createElement(j, { tab: this.props.tab }),
                  ),
                  g.createElement(
                    w.tH,
                    null,
                    this.context?.IN_GAMEPADUI &&
                      (function (e) {
                        if (!e) return null;
                        let t = e.chat.accountid_partner,
                          n =
                            l.xm.VoiceStore.BSelfHasAcceptedOrInitiatedOneOnOneChat(
                              t,
                            ),
                          i =
                            l.xm.VoiceStore.BPartnerHasAcceptedOrInitiatedOneOnOneChat(
                              t,
                            );
                        if (!i && !n) return null;
                        let o = "",
                          r =
                            l.xm.VoiceStore.BSelfHadPreviouslyJoinedOneOnOneChat(
                              t,
                            ),
                          a = e.chat.chat_partner,
                          s = l.xm.CMInterface.steamid.GetAccountID(),
                          c = !1,
                          m = !1,
                          d = !1;
                        l.xm.VoiceStore.GetActiveOneOnOneVoiceChatAccountID() ==
                          t &&
                          ((c =
                            l.xm.VoiceStore.HasBeenAttemptingOverTwoSeconds() ||
                            l.xm.VoiceStore.IsAttemptingReconnect()),
                          (m =
                            !l.xm.VoiceStore.BIsAccountFullyConnectedToActiveVoiceChat(
                              s,
                            ) || l.xm.VoiceStore.IsAttemptingReconnect()),
                          (d =
                            !l.xm.VoiceStore.BIsAccountFullyConnectedToActiveVoiceChat(
                              t,
                            )));
                        o =
                          n && !i
                            ? (0, L.we)(
                                "#Voice_WaitingForFriendToJoin",
                                a.display_name,
                              )
                            : i && !n
                              ? r
                                ? (0, L.we)(
                                    "#Voice_ChannelRejoinAvailable",
                                    a.display_name,
                                  )
                                : (0, L.we)(
                                    "#Voice_ChannelAvailable",
                                    a.display_name,
                                  )
                              : m
                                ? c
                                  ? (0, L.we)("#VoiceChatConnecting")
                                  : ""
                                : !m && d
                                  ? (0, L.we)(
                                      "#VoiceChatParterConnecting",
                                      a.display_name,
                                    )
                                  : (0, L.we)(
                                      "#Voice_ChannelActive",
                                      a.display_name,
                                    );
                        return g.createElement(
                          "div",
                          { className: F().VoiceStatusMessage },
                          o,
                        );
                      })(e),
                  ),
                  g.createElement(H, {
                    onClick: this.OnCloseClick,
                    onMouseDown: this.OnCloseMouseDown,
                  }),
                  g.createElement(z, { tab: this.props.tab }),
                ),
              ),
            );
          }
        };
        function H(e) {
          return g.createElement(
            "div",
            {
              title: (0, L.we)("#Chat_CloseTooltip"),
              className: F().CloseButton,
              onClick: e.onClick,
              onMouseDown: e.onMouseDown,
            },
            g.createElement(T.sED, null),
          );
        }
        (0, i.Cg)([y.oI], U.prototype, "BindChatTab", null),
          (0, i.Cg)([y.oI], U.prototype, "OnDragStart", null),
          (0, i.Cg)([y.oI], U.prototype, "OnDragEnd", null),
          (0, i.Cg)([y.oI], U.prototype, "OnMouseDown", null),
          (0, i.Cg)([y.oI], U.prototype, "OnOKButton", null),
          (0, i.Cg)([y.oI], U.prototype, "OnMouseUp", null),
          (0, i.Cg)([y.oI], U.prototype, "OnMouseLeave", null),
          (0, i.Cg)([y.oI], U.prototype, "OnCloseMouseDown", null),
          (0, i.Cg)([y.oI], U.prototype, "OnCloseClick", null),
          (0, i.Cg)([y.oI], U.prototype, "OnContextMenu", null),
          (U = (0, i.Cg)([_.PA], U));
        class W extends g.Component {
          m_refFriendHover = g.createRef();
          componentDidUpdate(e) {
            !e.active &&
              this.props.active &&
              this.m_refFriendHover.current &&
              this.m_refFriendHover.current.Hide();
          }
          render() {
            let e = this.props,
              t = e.tab.GetChatView();
            if (t && t.chat instanceof s.s) {
              let n = t.chat.chat_partner;
              return g.createElement(
                P.Rg,
                {
                  key: n.accountid,
                  ref: this.m_refFriendHover,
                  friend: n,
                  context: {},
                  disableContextMenu: !0,
                  direction: "bottom",
                },
                e.children,
              );
            }
            return e.children;
          }
        }
        let z = class extends g.Component {
          render() {
            const { tab: e } = this.props;
            if (e.IsChatRoom() && e instanceof a.$C) {
              if (!e.GetGroup().hasUnreadChatMessage) return null;
            } else if (!e.GetUnreadMessageCount()) return null;
            return g.createElement(
              "div",
              { className: F().UnreadGlow },
              g.createElement("div", { className: F().UnreadCircle }),
            );
          }
        };
        z = (0, i.Cg)([_.PA], z);
        let j = class extends g.Component {
          static contextType = B.QO;
          render() {
            let e = this.props.tab.GetChatView();
            if (e && e.chat instanceof s.s) {
              let t = e.chat.chat_partner,
                n = t.persona.is_ingame || this.context?.IN_GAMEPADUI,
                i = this.context?.IN_GAMEPADUI ? "Medium" : "X-Small";
              return g.createElement(
                "div",
                { className: F().ChatTabContent_Friend },
                g.createElement(P.bP, {
                  friend: e.chat.chat_partner,
                  noActions: !0,
                  context: { chat: e.chat },
                  bHideGameName: !n,
                  bHideEnhancedRichPresenceLabel: !this.context?.IN_GAMEPADUI,
                  bHidePersona: !n,
                  bHideSnooze: !1,
                  avatarSize: i,
                }),
                this.context?.IN_GAMEPADUI &&
                  !t.is_friend &&
                  g.createElement(
                    "div",
                    { className: F().IsNotFriendLabel },
                    (0, L.we)("#Friend_Menu_NotAFriendLabel"),
                    " ",
                  ),
              );
            }
            if (e && e.chat instanceof r.d) {
              let e = this.props.tab.GetGroup(),
                t = !0;
              return g.createElement(
                "div",
                { className: F().ChatTabContent_ChatRoom },
                g.createElement(d.I, { group: e, smaller: t, smallish: !t }),
                g.createElement(
                  "div",
                  { className: F().ChatTabContent_ChatRoomName },
                  this.props.tab.GetTabName(),
                ),
              );
            }
            if (this.props.tab.IsBroadcast()) {
              let e = this.props.tab.GetTabName();
              return g.createElement(
                "div",
                { className: F().ChatTabContent_ChatRoom },
                g.createElement(
                  "div",
                  { className: "ChatRoomGroupAvatar HasAvatar Smaller" },
                  g.createElement("img", {
                    className: "ChatRoomGroupAvatar_Avatar",
                    src: f.td.tabIcon,
                  }),
                ),
                g.createElement(
                  "div",
                  { className: F().ChatTabContent_ChatRoomName },
                  e,
                ),
              );
            }
            return null;
          }
        };
        function q(e) {
          c.ZM.UIDisplayPrefs.bDontShowVoiceAlert ||
            (e &&
              (0, A.HT)(
                g.createElement(K, null),
                e,
                "ActiveVoiceAlert",
                {
                  strTitle: (0, L.we)("#Chat_StillInVoiceDialog_Title"),
                  popupWidth: 650,
                  popupHeight: 340,
                },
                (0, c.h8)(e),
              ));
        }
        j = (0, i.Cg)([_.PA], j);
        let K = class extends g.Component {
          m_strChannelName;
          constructor(e) {
            super(e),
              (this.state = { bDontShowChecked: !1, strChatName: "" }),
              (this.m_strChannelName = "");
          }
          DismissDialog() {
            this.props.closeModal();
          }
          OnSubmit() {
            c.ZM.SetUIDisplayPref(
              "bDontShowVoiceAlert",
              this.state.bDontShowChecked,
            ),
              this.props.closeModal();
          }
          OnDialogChecked() {
            this.setState({ bDontShowChecked: !this.state.bDontShowChecked });
          }
          OnManualVoiceChatExit() {
            l.xm.VoiceStore.OnUserEndVoiceChat(), this.OnSubmit();
          }
          componentDidMount() {
            this.setState({
              strChatName: l.xm.ChatStore.GetActiveVoiceChat().name,
            });
          }
          render() {
            return g.createElement(
              A.x_,
              { onEscKeypress: this.DismissDialog },
              g.createElement(
                I.U9,
                {
                  classNameContent: "CloseActiveVoiceWindowConfirmation",
                  onSubmit: this.OnSubmit,
                },
                g.createElement(
                  I.Y9,
                  null,
                  g.createElement(
                    "div",
                    null,
                    (0, L.we)("#Chat_StillInVoiceDialog_Title"),
                  ),
                ),
                g.createElement(
                  I.nB,
                  null,
                  g.createElement(
                    "div",
                    { className: "activeVoiceDetails" },
                    (0, L.we)("#Chat_StillInVoiceDialog_Desc1"),
                  ),
                  g.createElement(
                    "div",
                    { className: "activeVoiceDetails" },
                    (0, L.we)("#Chat_StillInVoiceDialog_Desc2"),
                  ),
                  g.createElement(
                    "div",
                    { className: "voiceControlsExample" },
                    g.createElement(P.lg, {
                      name: this.state.strChatName,
                      chat: l.xm.ChatStore.GetActiveVoiceChat(),
                      nostatus: !0,
                    }),
                    g.createElement("div", {
                      className: "circleHighlight voiceExit",
                    }),
                  ),
                  !1,
                ),
                g.createElement(
                  I.wi,
                  null,
                  g.createElement(
                    "div",
                    { className: "_DialogColLayout" },
                    g.createElement(
                      I.jn,
                      { onClick: this.OnSubmit },
                      (0, L.we)("#Chat_StillInVoiceDialog_KeepChatting"),
                    ),
                  ),
                  g.createElement(
                    "div",
                    {
                      className: "dontShowConfirmation",
                      onClick: this.OnDialogChecked,
                    },
                    g.createElement(I.Yh, {
                      checked: this.state.bDontShowChecked,
                      onChange: this.OnDialogChecked,
                    }),
                    (0, L.we)("#Dialog_DontShowMeAgain"),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([y.oI], K.prototype, "DismissDialog", null),
          (0, i.Cg)([y.oI], K.prototype, "OnSubmit", null),
          (0, i.Cg)([y.oI], K.prototype, "OnDialogChecked", null),
          (0, i.Cg)([y.oI], K.prototype, "OnManualVoiceChatExit", null),
          (K = (0, i.Cg)([_.PA], K));
      },
      13346: (e, t, n) => {
        "use strict";
        n.d(t, { E5: () => b, Rf: () => w, jv: () => I });
        var i = n(34629),
          o = n(17070),
          r = n(78919),
          a = n(58743),
          s = n(68593),
          l = n(98540),
          c = n(13419),
          m = n(99862),
          d = n(14355),
          u = n(41230),
          h = n(63696),
          p = n(89021),
          _ = n(81734),
          g = n(74002),
          C = n(82924),
          f = n(77765),
          S = n(69074),
          v = n(76482);
        function b(e, t, n, i, o) {
          I(e, t, n, i, !1, o);
        }
        function I(e, t, n, i, o, a) {
          (0, d.HT)(
            h.createElement(E, {
              browserContext: e,
              chatRoomGroup: n,
              chatRoom: i,
              bIsDropInvite: o,
              vecInvitePlayers: a,
            }),
            t,
            "ChatRoomGroupInviteDialog",
            {
              strTitle: (0, g.we)("#Chat_CreateChatRoom"),
              popupWidth: 664,
              popupHeight: 680,
            },
            (0, r.h8)(t),
          );
        }
        let w = class extends h.Component {
          constructor(e) {
            super(e);
          }
          componentDidMount() {
            let e = this.props.chat.lastChatLinkInfo;
            (!e || Date.now() >= e.rtExpires) && this.GenerateLink(86400);
          }
          GenerateLink(e) {
            this.props.chat.CreateInviteLink(e);
          }
          OnFocus(e) {
            e.target.select();
          }
          render() {
            let e = this.props.chat.lastChatLinkInfo,
              t = (0, g.we)("#Chat_Invite_Loading");
            return (
              this.props.disabled && ((e = void 0), (t = "")),
              h.createElement(
                h.Fragment,
                null,
                h.createElement(p.pd, {
                  label: (0, g.we)("#Chat_Invite_Linkheader"),
                  className: "InviteFriendToChatDialog_LinkInput",
                  type: "text",
                  value: e ? e.strInviteURL : t,
                  readOnly: !0,
                  bShowCopyAction: !!e,
                  onFocus: this.OnFocus,
                  onClick: this.OnFocus,
                }),
                !this.props.disabled &&
                  h.createElement(y, {
                    onGenerate: this.GenerateLink,
                    chat: this.props.chat,
                  }),
              )
            );
          }
        };
        (0, i.Cg)([C.oI], w.prototype, "GenerateLink", null),
          (0, i.Cg)([C.oI], w.prototype, "OnFocus", null),
          (w = (0, i.Cg)([u.PA], w));
        let y = class extends h.Component {
          constructor(e) {
            super(e);
          }
          OnDropDownChange(e, t) {
            this.props.onGenerate(e.data), t.SetSelectedOption(void 0);
          }
          CreateExpiresText(e) {
            if (0 == e) return (0, g.we)("#InviteLink_ExpiresNever_Short");
            return e - a.xm.GetServerRTime32() > 3600
              ? (0, g.we)("#InviteLink_ExpiresDay_Short")
              : (0, g.we)("#InviteLink_ExpiresHour_Short");
          }
          render() {
            let e = this.props.chat.lastChatLinkInfo,
              t = [
                {
                  label: (0, g.we)("#InviteLink_ExpiresHour_Short"),
                  data: 3600,
                },
                {
                  label: (0, g.we)("#InviteLink_ExpiresDay_Short"),
                  data: 86400,
                },
                { label: (0, g.we)("#InviteLink_ExpiresNever_Short"), data: 0 },
              ];
            return h.createElement(
              "div",
              { className: "expireLinkInContainer" },
              h.createElement(
                p.JU,
                null,
                (0, g.we)("#InviteLink_ExpireDropDownLabel"),
              ),
              h.createElement(p.m, {
                strClassName: "inviteLinkDropDown",
                rgOptions: t,
                strDefaultLabel: e
                  ? this.CreateExpiresText(e.rtExpires)
                  : h.createElement("span", null, " "),
                onChange: this.OnDropDownChange,
                selectedOption: void 0,
              }),
            );
          }
        };
        (0, i.Cg)([C.oI], y.prototype, "OnDropDownChange", null),
          (y = (0, i.Cg)([u.PA], y));
        class E extends h.PureComponent {
          static contextType = o.QO;
          m_setMembersOfGroup;
          constructor(e) {
            super(e),
              (this.state = {
                dropToInviteFriend: void 0,
                rgPickedFriends: [],
              }),
              this.BuildMemberOfGroupSet(e);
          }
          componentDidUpdate(e) {
            e.chatRoomGroup !== this.props.chatRoomGroup &&
              this.BuildMemberOfGroupSet(this.props);
          }
          BuildMemberOfGroupSet(e) {
            let t = e.chatRoomGroup;
            (this.m_setMembersOfGroup = t.memberList.GetCurrentMemberSet()),
              this.forceUpdate();
          }
          DismissDialog() {
            this.props.closeModal();
          }
          OnSubmit() {
            for (let e of this.state.rgPickedFriends)
              this.props.chatRoomGroup.InviteFriend(
                e.accountid,
                this.props.chatRoom,
              );
            this.props.closeModal();
          }
          OnDragEnter(e, t) {
            if (
              ((0, f.w)(
                (e && "friend" == e.type) || t,
                "Invalid data type passed to ChatRoomGroupDialog.OnDragEnter",
              ),
              e)
            ) {
              let t = e;
              t.friend &&
                this.setState({
                  rgPickedFriends: this.state.rgPickedFriends.concat(t.friend),
                });
            }
            return !0;
          }
          OnDragLeave() {
            const { dropToInviteFriend: e, rgPickedFriends: t } = this.state;
            if (e) {
              const n = t.findIndex((t) => t.accountid === e.accountid);
              this.setState({
                dropToInviteFriend: void 0,
                rgPickedFriends: t.slice(0, n).concat(t.slice(n + 1)),
              });
            }
          }
          OnDrop(e, t) {
            if (
              ((0, f.w)(
                e && "friend" == e.type,
                "Invalid data type passed to ChatRoomGroupDialog.OnDrop",
              ),
              e && "friend" == e.type)
            ) {
              let t = e;
              if (t.friend) {
                r.ZM.DragDropManager.SetDropConsumed();
                this.state.rgPickedFriends.findIndex(
                  (e) => e.accountid === t.friend.accountid,
                ) > -1
                  ? this.setState({
                      dropToInviteFriend: void 0,
                      rgPickedFriends: this.state.rgPickedFriends.concat(
                        t.friend,
                      ),
                    })
                  : this.state.dropToInviteFriend &&
                    this.setState({ dropToInviteFriend: void 0 });
              }
            }
          }
          GetDragDropProps() {
            let e = { rgAcceptedTypes: ["friend"] };
            return (
              (e.fnDragEnter = this.OnDragEnter),
              (e.fnDragLeave = this.OnDragLeave),
              (e.fnDrop = this.OnDrop),
              e
            );
          }
          render() {
            let e = this.props.chatRoomGroup.GetDefaultChatRoom();
            this.props.chatRoom && (e = this.props.chatRoom);
            let t,
              n = this.props.chatRoomGroup.name,
              i = null != this.props.chatRoom,
              o = new Set([]),
              r = this.props.chatRoomGroup.BCanInvite();
            r
              ? this.props.chatRoom || (o = this.m_setMembersOfGroup)
              : this.props.chatRoom
                ? a.xm.FriendStore.all_friends.forEach((e) => {
                    this.props.chatRoomGroup.BHasMember(e.accountid) ||
                      o.add(e.accountid);
                  })
                : (0, f.w)(
                    !1,
                    "User should not be able to invite to the group",
                  ),
              (t = this.props.bIsDropInvite
                ? (0, g.we)("#Chat_InviteFriends_DropInvite_Pre")
                : r
                  ? (0, g.we)("#Chat_InviteFriends")
                  : (0, g.we)("#Chat_InviteGroupMembers"));
            let m =
              "ChatRoomGroupInviteDialog" +
              (this.props.bIsDropInvite ? " IsDropInvite" : "");
            this.context?.IN_GAMEPADUI && (m += " GamepadMode");
            return h.createElement(
              d.x_,
              { onEscKeypress: this.DismissDialog },
              h.createElement(
                p.U9,
                { classNameContent: m, onSubmit: this.OnSubmit },
                h.createElement(
                  p.Y9,
                  null,
                  i
                    ? h.createElement(
                        "div",
                        { className: "InviteToVoiceHeader" },
                        (0, g.we)("#Chat_Actions_InviteFriend_VoiceChat"),
                        h.createElement(
                          "div",
                          { className: "DialogHeaderSubtitle DialogHighlight" },
                          '"',
                          this.props.chatRoom.name,
                          '"',
                        ),
                      )
                    : (0, g.we)("#Chat_Actions_InviteFriend"),
                  h.createElement(
                    "div",
                    { className: "displayRow" },
                    h.createElement(l.I, {
                      group: this.props.chatRoomGroup,
                      small: !0,
                    }),
                    h.createElement(
                      "div",
                      { className: "DialogHeaderSubtitle DialogHighlight" },
                      n,
                    ),
                  ),
                ),
                h.createElement(
                  p.nB,
                  null,
                  h.createElement(
                    v.g,
                    null,
                    !this.props.bIsDropInvite &&
                      r &&
                      !this.context?.IN_GAMEPADUI &&
                      h.createElement(
                        h.Fragment,
                        null,
                        h.createElement(
                          "div",
                          { className: "inviteLinkContainer" },
                          h.createElement(w, { chat: e, disabled: !1 }),
                        ),
                        h.createElement(
                          "div",
                          { className: "OrSeparator" },
                          h.createElement("div", { className: "HBar" }),
                          h.createElement(
                            "div",
                            { className: "OrSeparatorLabel" },
                            (0, g.we)("#Chat_InviteFriends_OR_Separator"),
                          ),
                          h.createElement("div", { className: "HBar" }),
                        ),
                      ),
                    h.createElement(
                      s.T,
                      { className: "", ...this.GetDragDropProps() },
                      h.createElement(c.r, {
                        label: t,
                        eSort: 0,
                        rgPickedFriends: this.state.rgPickedFriends,
                        bDropInvite: this.props.bIsDropInvite,
                        renderChosenFriend: D,
                        onChange: (e) => this.setState({ rgPickedFriends: e }),
                        excludeFriend: (e) => o.has(e.accountid),
                      }),
                    ),
                  ),
                ),
                h.createElement(
                  p.wi,
                  null,
                  h.createElement(
                    S.Z,
                    {
                      className: "DialogTwoColLayout _DialogColLayout",
                      "flow-children": "row",
                    },
                    h.createElement(
                      p.jn,
                      { disabled: 0 === this.state.rgPickedFriends.length },
                      (0, g.we)("#Chat_Invite"),
                    ),
                    h.createElement(
                      p.$n,
                      { onClick: this.DismissDialog },
                      (0, g.we)("#Button_Close"),
                    ),
                  ),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([C.oI], E.prototype, "DismissDialog", null),
          (0, i.Cg)([C.oI], E.prototype, "OnSubmit", null),
          (0, i.Cg)([C.oI], E.prototype, "OnDragEnter", null),
          (0, i.Cg)([C.oI], E.prototype, "OnDragLeave", null),
          (0, i.Cg)([C.oI], E.prototype, "OnDrop", null);
        let D = (0, u.PA)((e) =>
          h.createElement(
            h.Fragment,
            null,
            h.createElement(
              m.Rg,
              { friend: e.friend, context: null },
              h.createElement(
                S.Z,
                {
                  className: "FriendPicker_ChosenFriend",
                  onActivate: () => {
                    e.onClick(e.friend);
                  },
                },
                h.createElement("span", null, e.friend.display_name),
                h.createElement(_.sED, null),
              ),
            ),
          ),
        );
      },
      24941: (e, t, n) => {
        "use strict";
        n.d(t, { hI: () => H });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(78116),
          s = n(73880),
          l = n(78919),
          c = n(58743),
          m = n(13112),
          d = n(13346),
          u = n(25698),
          h = n(99862),
          p = n(14355),
          _ = n(69074),
          g = n(89193),
          C = n(41230),
          f = n(63696),
          S = n(89021),
          v = n(81734),
          b = n(74977),
          I = n(50622),
          w = n(37779),
          y = n(74002),
          E = n(82924),
          D = n(57943),
          A = n(91466),
          T = n(77631),
          M = n(77765),
          R = n(84512),
          k = n.n(R),
          L = n(77171);
        function G(e) {
          const {
              title: t,
              pages: n,
              children: i,
              initialActivePage: o,
              renderNavFooter: r,
            } = e,
            [a, s] = (0, f.useState)(o || n[0]);
          return f.createElement(
            _.Z,
            { className: k().Container, "flow-children": "row" },
            f.createElement(
              _.Z,
              { className: k().Nav, "flow-children": "column" },
              f.createElement("span", { className: k().NavTitle }, t),
              f.createElement(
                _.Z,
                { className: k().NavItems, "flow-children": "column" },
                n.map((e) =>
                  f.createElement(
                    F,
                    { key: e, active: e === a, onClick: () => s(e) },
                    e,
                  ),
                ),
              ),
              r && r(),
            ),
            f.createElement("div", { className: k().Content }, i(a)),
          );
        }
        const F = (e) => {
          const { active: t, onClick: n, ...i } = e;
          return f.createElement(_.Z, {
            ...i,
            focusable: !0,
            onActivate: n,
            className: (0, L.A)(k().NavItem, t && k().Active),
          });
        };
        var P = n(50643),
          B = n.n(P);
        const x = (e) => {
            const { className: t, ...n } = e;
            return f.createElement("div", {
              className: (0, L.A)(B().DialogTitle, t),
              ...n,
            });
          },
          O = (e) => {
            const { className: t, ...n } = e;
            return f.createElement("div", {
              className: (0, L.A)(B().DialogContent, t),
              ...n,
            });
          };
        var N = n(86275),
          V = n.n(N),
          U = n(17070);
        function H(e, t) {
          (0, p.HT)(
            f.createElement(W, { groupView: t }),
            e,
            "ChatRoomGroupSettings",
            {
              strTitle: (0, y.we)("#GroupSettings"),
              popupWidth: 842,
              popupHeight: 600,
            },
            (0, l.h8)(e),
            { nDragAreaHeight: 32 },
          );
        }
        let W = class extends f.Component {
          static contextType = U.QO;
          m_inviteLinks = { loadingState: "pending", rgInviteLinks: null };
          m_bans = new s.L2();
          m_invitedUsers = { loadingState: "pending", rgInvitedUsers: null };
          constructor(e) {
            super(e),
              (0, g.Gn)(this),
              (this.state = {
                strRoomName: this.props.groupView.GetGroup().name,
              });
          }
          DismissDialog() {
            this.props.closeModal();
          }
          CloseDialog() {
            this.props.closeModal();
          }
          OnLeave(e) {
            let t = (0, I.uX)(e),
              n = (0, l.CO)(e),
              i = this.props.groupView.GetGroup(),
              o = i.BIsClanChatRoom()
                ? "#Chat_Actions_LeaveChatRoomGroup_ClanConfirm"
                : i.BIsAccountIDOwner(c.xm.CMInterface.steamid.GetAccountID())
                  ? "#Chat_Actions_OwnerLeaveChatRoomGroup_Confirm"
                  : "#Chat_Actions_LeaveChatRoomGroup_Confirm";
            (0, u.Ci)(
              t,
              (0, y.we)("#GroupSettings_Leave_Section"),
              (0, y.we)(o, i.name),
              (0, y.we)("#GroupSettings_Leave_Button"),
            )
              .then(() => {
                i.LeaveChatRoomGroup(n);
              })
              .then(() => {
                this.props.closeModal();
              })
              .catch(() => {});
          }
          GetNamedGroupPageList() {
            const e = this.props.groupView.GetGroup();
            return this.context?.IN_GAMEPADUI
              ? [
                  {
                    title: (0, y.we)("#GroupSettings_General_Section"),
                    render: () => f.createElement(q, { group: e }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_InvitedUsers_Section"),
                    render: () =>
                      f.createElement(te, {
                        group: e,
                        invitedUsers: this.m_invitedUsers,
                      }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Bans_Section"),
                    render: () =>
                      f.createElement(ne, { group: e, bans: this.m_bans }),
                  },
                ]
              : [
                  {
                    title: (0, y.we)("#GroupSettings_General_Section"),
                    render: () => f.createElement(q, { group: e }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Channels_Section"),
                    render: () =>
                      f.createElement(Q, { groupView: this.props.groupView }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Permissions_Section"),
                    render: () => f.createElement(X, { group: e }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Invite_Section"),
                    render: () =>
                      f.createElement(ee, {
                        group: e,
                        inviteLinks: this.m_inviteLinks,
                      }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_InvitedUsers_Section"),
                    render: () =>
                      f.createElement(te, {
                        group: e,
                        invitedUsers: this.m_invitedUsers,
                      }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Bans_Section"),
                    render: () =>
                      f.createElement(ne, { group: e, bans: this.m_bans }),
                  },
                ];
          }
          GetNonNamedGroupPageList() {
            const e = this.props.groupView.GetGroup();
            return this.context?.IN_GAMEPADUI
              ? [
                  {
                    title: (0, y.we)("#GroupSettings_Save_Section"),
                    render: () => f.createElement(j, { group: e }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Leave_Section"),
                    render: () => f.createElement(K, { group: e }),
                  },
                ]
              : [
                  {
                    title: (0, y.we)("#GroupSettings_Save_Section"),
                    render: () => f.createElement(j, { group: e }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Invite_Section"),
                    render: () =>
                      f.createElement(ee, {
                        group: e,
                        inviteLinks: this.m_inviteLinks,
                      }),
                  },
                  {
                    title: (0, y.we)("#GroupSettings_Leave_Section"),
                    render: () => f.createElement(K, { group: e }),
                  },
                ];
          }
          GetPageList() {
            return this.props.groupView.GetGroup().IsNamedGroupChat()
              ? this.GetNamedGroupPageList()
              : this.GetNonNamedGroupPageList();
          }
          render() {
            let e = this.GetPageList();
            const { groupView: t } = this.props,
              n = t.GetGroup(),
              i = `${n.unique_id}_${n.IsNamedGroupChat()}`;
            return f.createElement(
              p.x_,
              { onEscKeypress: this.DismissDialog },
              f.createElement(
                G,
                {
                  title: (0, y.we)("#GroupSettings"),
                  pages: e.map(({ title: e }) => e),
                  renderNavFooter: () =>
                    f.createElement(z, { onActivate: this.OnLeave }),
                  key: i,
                },
                (t) => {
                  const n = e.find((e) => e.title === t),
                    i = n ? n.render() : null;
                  return f.createElement(
                    O,
                    { style: { flexDirection: "column" }, key: t },
                    i,
                  );
                },
              ),
            );
          }
        };
        (0, i.Cg)([g.sH], W.prototype, "m_inviteLinks", void 0),
          (0, i.Cg)([g.sH], W.prototype, "m_invitedUsers", void 0),
          (0, i.Cg)([E.oI], W.prototype, "DismissDialog", null),
          (0, i.Cg)([E.oI], W.prototype, "CloseDialog", null),
          (0, i.Cg)([E.oI], W.prototype, "OnLeave", null),
          (W = (0, i.Cg)([C.PA], W));
        const z = (e) =>
          f.createElement(
            _.Z,
            { className: V().LeaveButton, ...e },
            f.createElement(v.Gq2, null),
            (0, y.we)("#GroupSettings_Leave_Section"),
          );
        let j = class extends f.Component {
          constructor(e) {
            super(e), (0, g.Gn)(this);
          }
          m_refInput;
          m_bSaving = !1;
          m_strError = "";
          BindInputRef(e) {
            this.m_refInput = e;
          }
          AnimateUpgrade_In() {
            document.getElementById("animUp");
          }
          AnimateUpgrade_Out() {
            document.getElementById("animDown");
          }
          SaveGroup() {
            let e = this.props.group;
            (this.m_bSaving = !1),
              (this.m_strError = ""),
              e.SaveChatRoomGroup(this.m_refInput.value).catch((e) => {
                (this.m_bSaving = !1),
                  (this.m_strError =
                    12 == e
                      ? (0, y.we)("#GroupSettings_Save_NameError")
                      : (0, y.we)("#GroupSettings_Save_GenericError"));
              });
          }
          render() {
            let e = this.m_bSaving,
              t = this.m_strError;
            return f.createElement(
              S.lV,
              { className: "DialogBody", onSubmit: this.SaveGroup },
              f.createElement(
                S.a3,
                null,
                (0, y.we)("#GroupSettings_Save_Desc"),
                f.createElement(
                  "div",
                  null,
                  f.createElement(
                    "ul",
                    null,
                    f.createElement(
                      "li",
                      null,
                      (0, y.we)("#GroupSettings_Save_Feature_1"),
                    ),
                    f.createElement(
                      "li",
                      null,
                      (0, y.we)("#GroupSettings_Save_Feature_2"),
                    ),
                    f.createElement(
                      "li",
                      null,
                      (0, y.we)("#GroupSettings_Save_Feature_3"),
                    ),
                    f.createElement(
                      "li",
                      null,
                      (0, y.we)("#GroupSettings_Save_Feature_4"),
                    ),
                  ),
                ),
              ),
              f.createElement(S.pd, {
                ref: this.BindInputRef,
                autoFocus: !0,
                label: (0, y.we)("#GroupSettings_Save_NameGroup"),
                disabled: e,
              }),
              !e &&
                f.createElement(
                  f.Fragment,
                  null,
                  t.length > 0 &&
                    f.createElement(
                      "div",
                      { className: "ErrorWhileSaving" },
                      t,
                    ),
                  f.createElement(
                    S.jn,
                    { className: "_FixedHeight" },
                    (0, y.we)("#GroupSettings_Save_Section"),
                  ),
                ),
              e && f.createElement(b.t, null),
            );
          }
        };
        (0, i.Cg)([g.sH], j.prototype, "m_bSaving", void 0),
          (0, i.Cg)([g.sH], j.prototype, "m_strError", void 0),
          (0, i.Cg)([E.oI], j.prototype, "BindInputRef", null),
          (0, i.Cg)([E.oI], j.prototype, "AnimateUpgrade_In", null),
          (0, i.Cg)([E.oI], j.prototype, "AnimateUpgrade_Out", null),
          (0, i.Cg)([E.oI], j.prototype, "SaveGroup", null),
          (j = (0, i.Cg)([C.PA], j));
        let q = class extends f.Component {
          static contextType = U.QO;
          m_strRoomName = void 0;
          m_strTagLine = void 0;
          m_fileInput;
          constructor(e) {
            super(e),
              (0, g.Gn)(this),
              (this.m_strRoomName = this.props.group.IsNamedGroupChat()
                ? this.props.group.name
                : ""),
              (this.m_strTagLine = this.props.group.tagline),
              (this.state = { bNameSubmitted: !1, bTaglineSubmitted: !1 });
          }
          AvatarUploadEResultToString(e) {
            let t = "#Chat_Settings_Error_Unknown";
            switch (e) {
              case 21:
                t = "#Chat_Settings_Error_NotLoggedOn";
                break;
              case 112:
                t = "#Chat_Settings_Error_LimitedUser";
                break;
              case 15:
                t = "#Chat_Settings_Error_AccessDenied";
                break;
              case 2:
                t = "#Chat_Settings_Error_FailedToUpload";
                break;
              case 25:
                t = "#Chat_Settings_Error_FileTooLarge";
                break;
              case 8:
                t = "#Chat_Settings_Error_InvalidImage";
                break;
              case 37:
                t = "#Chat_Settings_Error_ServerError";
            }
            return (0, y.we)(t);
          }
          SetChatRoomGroupAvatarEResultToString(e) {
            let t = "#Chat_Settings_Error_Unknown";
            switch (e) {
              case 10:
              case 8:
              case 32:
                t = "#Chat_Settings_Error_ServerError";
                break;
              case 15:
                t = "#Chat_Settings_Error_NotAdmin";
            }
            return (0, y.we)(t);
          }
          OnFileChange(e) {
            let t = e.target.files[0],
              n = this.props.group;
            e.preventDefault();
            let i = new FormData();
            i.set("sessionid", a.TS.SESSIONID), i.set("avatar", t);
            r()
              .post(a.TS.CHAT_BASE_URL + "chat/avatarfileupload/", i, {
                headers: { "content-type": "multipart/form-data" },
              })
              .then((e) => {
                1 == e.data.success &&
                  n.SetChatRoomGroupAvatar(e.data.sha).catch((e) => {
                    let t = this.SetChatRoomGroupAvatarEResultToString(e);
                    (0, u.Nw)((0, y.we)("#Generic_Error"), t);
                  });
              })
              .catch((e) => {
                let t = this.AvatarUploadEResultToString(
                  e.response.data.success,
                );
                (0, u.Nw)((0, y.we)("#Generic_Error"), t),
                  console.log(e.response);
              });
          }
          bindFileUploadControl(e) {
            this.m_fileInput = e;
          }
          OnNameChange(e) {
            (this.m_strRoomName = e.target.value),
              this.setState({ bNameSubmitted: !1 });
          }
          OnAvatarChange() {
            this.m_fileInput.click();
          }
          OnTagLineChange(e) {
            (this.m_strTagLine = e.target.value),
              this.setState({ bTaglineSubmitted: !1 });
          }
          OnNameBlur() {
            let e = this.props.group;
            if (!e.IsNamedGroupChat() && !this.m_strRoomName) return;
            if (e.IsNamedGroupChat() && e.name === this.m_strRoomName) return;
            const t = () => (this.m_strRoomName = this.props.group.name);
            e.RenameChatRoomGroup(this.m_strRoomName).then(t, t);
            let n = document.getElementById("b1");
            n && n.blur(), this.setState({ bNameSubmitted: !0 });
          }
          OnTagLineBlur() {
            let e = this.props.group;
            if (e.tagline != this.m_strTagLine) {
              e.SetChatRoomGroupTagline(this.m_strTagLine),
                this.setState({ bTaglineSubmitted: !0 });
              let t = document.getElementById("b2");
              t && t.blur();
            }
          }
          OnSubmitSent() {
            this.OnTagLineBlur(), this.OnNameBlur();
          }
          render() {
            const { group: e } = this.props,
              t = e.BCanAdminGroup();
            let n;
            if (e.BIsClanChatRoom()) n = f.createElement("div", null);
            else {
              if (null == e.GetOwnerAccountID())
                n = f.createElement(
                  "div",
                  null,
                  " ",
                  (0, y.we)("#Chat_Settings_No_Owner"),
                  " ",
                );
              else {
                let t = c.xm.FriendStore.GetPlayer(e.GetOwnerAccountID());
                n = f.createElement(
                  _.Z,
                  { focusable: !1, fnCanTakeFocus: () => !1 },
                  f.createElement(
                    S.JU,
                    null,
                    " ",
                    (0, y.we)("#Chat_Settings_General_Owner"),
                  ),
                  f.createElement(h.bP, {
                    className: "groupOwnerFriend",
                    friend: t,
                    context: null,
                  }),
                );
              }
            }
            return f.createElement(
              f.Fragment,
              null,
              f.createElement(
                x,
                null,
                (0, y.we)("#GroupSettings_General_Section"),
              ),
              !t && f.createElement(ie, null),
              f.createElement(
                S.lV,
                {
                  onSubmit: this.OnSubmitSent,
                  className: (0, L.A)("DialogBody", V().General),
                },
                f.createElement(
                  S.dR,
                  null,
                  f.createElement(
                    "div",
                    { className: V().AvatarAndUser },
                    f.createElement(
                      S.JU,
                      null,
                      (0, y.we)("#Chat_Settings_General_Icon"),
                    ),
                    f.createElement("img", {
                      className: (0, L.A)(V().Avatar, "no-drag"),
                      src: e.hasIcon
                        ? e.avatar_url_full
                        : "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
                    }),
                    !e.hasIcon &&
                      f.createElement(
                        "div",
                        { className: V().NoIconLabel },
                        (0, y.we)("#Chat_Settings_General_NoIcon"),
                      ),
                    f.createElement("input", {
                      type: "file",
                      style: { display: "none" },
                      name: "fileupload",
                      accept: ".png, .jpg, .jpeg, .gif",
                      ref: this.bindFileUploadControl,
                      onChange: this.OnFileChange,
                    }),
                    !this.context?.IN_GAMEPADUI &&
                      f.createElement(
                        S.$n,
                        { onClick: this.OnAvatarChange, disabled: !t },
                        (0, y.we)(
                          e.hasIcon
                            ? "#Chat_Settings_General_ChangeIcon"
                            : "#Chat_Settings_General_AddIcon",
                        ),
                      ),
                  ),
                  f.createElement(
                    "div",
                    { className: "GeneralChatSettings" },
                    f.createElement(S.pd, {
                      autoComplete: "off",
                      id: "b1",
                      className: "groupChatName",
                      label: (0, y.we)("#Chat_Settings_General_Chat_Name"),
                      type: "text",
                      value: this.m_strRoomName,
                      onChange: this.OnNameChange,
                      onBlur: this.OnNameBlur,
                      autoFocus: !0,
                      disabled: !t,
                    }),
                    f.createElement("input", {
                      type: "submit",
                      style: { display: "none" },
                    }),
                    f.createElement(S.pd, {
                      autoComplete: "off",
                      id: "b2",
                      className: "groupChatTag",
                      label: (0, y.we)("#Chat_Settings_General_Tagline"),
                      type: "text",
                      value: this.m_strTagLine,
                      onChange: this.OnTagLineChange,
                      onBlur: this.OnTagLineBlur,
                      disabled: !t,
                    }),
                    n,
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([g.sH], q.prototype, "m_strRoomName", void 0),
          (0, i.Cg)([g.sH], q.prototype, "m_strTagLine", void 0),
          (0, i.Cg)([E.oI], q.prototype, "OnFileChange", null),
          (0, i.Cg)([E.oI], q.prototype, "bindFileUploadControl", null),
          (0, i.Cg)([E.oI], q.prototype, "OnNameChange", null),
          (0, i.Cg)([E.oI], q.prototype, "OnAvatarChange", null),
          (0, i.Cg)([E.oI], q.prototype, "OnTagLineChange", null),
          (0, i.Cg)([E.oI], q.prototype, "OnNameBlur", null),
          (0, i.Cg)([E.oI], q.prototype, "OnTagLineBlur", null),
          (0, i.Cg)([E.oI], q.prototype, "OnSubmitSent", null),
          (q = (0, i.Cg)([C.PA], q));
        let K = class extends f.Component {
          OnLeave(e) {
            let t = e.currentTarget.ownerDocument.defaultView,
              n = (0, l.CO)(e),
              i = this.props.group.BIsClanChatRoom()
                ? "#Chat_Actions_LeaveChatRoomGroup_ClanConfirm"
                : this.props.group.BIsAccountIDOwner(
                      c.xm.CMInterface.steamid.GetAccountID(),
                    )
                  ? "#Chat_Actions_OwnerLeaveChatRoomGroup_Confirm"
                  : "#Chat_Actions_LeaveChatRoomGroup_Confirm";
            (0, u.Ci)(
              t,
              (0, y.we)("#GroupSettings_Leave_Section"),
              (0, y.we)(i, this.props.group.name),
              (0, y.we)("#GroupSettings_Leave_Button"),
            )
              .then(() => {
                this.props.group.LeaveChatRoomGroup(n);
              })
              .catch(() => {});
          }
          render() {
            return f.createElement(
              "div",
              null,
              (0, y.we)("#GroupSettings_Leave_Confirm"),
              f.createElement(
                S.$n,
                { onClick: this.OnLeave },
                (0, y.we)("#GroupSettings_Leave_Button"),
              ),
            );
          }
        };
        (0, i.Cg)([E.oI], K.prototype, "OnLeave", null),
          (K = (0, i.Cg)([C.PA], K));
        let Z = class extends f.Component {
          render() {
            let e = this.props.roomList.indexOf(this.props.room);
            (0, M.w)(-1 !== e, "Couldn't find CChatRoom inside of its list?");
            let t = e - 1,
              n = () => {
                this.props.room
                  .GetGroup()
                  .ReorderRoom(
                    this.props.roomList[t].GetRoomID(),
                    this.props.room.GetRoomID(),
                  );
              },
              i = e + 1,
              o = () => {
                this.props.room
                  .GetGroup()
                  .ReorderRoom(
                    this.props.room.GetRoomID(),
                    this.props.roomList[i].GetRoomID(),
                  );
              };
            return (
              (t < 0 || this.props.roomList[t].BIsDefaultRoom()) &&
                (n = void 0),
              i >= this.props.roomList.length && (o = void 0),
              this.props.room.BIsDefaultRoom() && ((n = void 0), (o = void 0)),
              this.props.enabled || ((n = void 0), (o = void 0)),
              void 0 === n && void 0 === o
                ? null
                : f.createElement(
                    "div",
                    { className: "rolePriorityContainer" },
                    f.createElement(
                      "div",
                      {
                        className:
                          "rolePriorityButton roleUp" +
                          (void 0 === n ? " Disabled" : ""),
                        onClick: n,
                      },
                      f.createElement(v.V5W, { angle: 0 }),
                    ),
                    f.createElement(
                      "div",
                      {
                        className:
                          "rolePriorityButton roleDown" +
                          (void 0 === o ? " Disabled" : ""),
                        onClick: o,
                      },
                      f.createElement(v.V5W, { angle: 180 }),
                    ),
                  )
            );
          }
        };
        Z = (0, i.Cg)([C.PA], Z);
        let Q = class extends f.Component {
          OnCreateNewTextChannel(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            (0, p.HT)(
              f.createElement(m.Ey, {
                ownerWin: t,
                groupView: this.props.groupView,
                bVoiceChannel: !1,
                bJoinChannel: !1,
              }),
              t,
            );
          }
          OnCreateNewVoiceChannel(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            (0, p.HT)(
              f.createElement(m.Ey, {
                ownerWin: t,
                groupView: this.props.groupView,
                bVoiceChannel: !0,
                bJoinChannel: !1,
              }),
              t,
            );
          }
          OnDeleteChannel(e, t) {
            let n = e.currentTarget.ownerDocument.defaultView;
            (0, u.Ci)(
              n,
              (0, y.we)("#GroupSettings_Channels_DeleteChannel"),
              (0, y.we)("#GroupSettings_Channels_DeleteConfirm"),
              (0, y.we)("#GroupSettings_Channels_DeleteButtonLabel"),
              (0, y.we)("#Button_Cancel"),
              !0,
            )
              .then(() => {
                let e = t.GetGroup(),
                  n = t.GetRoomID();
                e.DeleteChatRoom(n);
              })
              .catch(() => {});
          }
          render() {
            const { groupView: e } = this.props;
            let t = e.GetGroup().BCanAdminChannel();
            const n = e.GetGroup().textRoomList,
              i = e.GetGroup().voiceRoomList;
            let o = (e, o, r) =>
                f.createElement(
                  "div",
                  {
                    key: e.GetRoomID(),
                    className: "ChatGroupSettingsChannels_Row",
                  },
                  f.createElement(
                    "div",
                    { className: "_DialogRow _DialogRowBackground" },
                    f.createElement(
                      "div",
                      { className: "_DialogRowLabel" },
                      r
                        ? f.createElement(v.mrd, null)
                        : f.createElement(v.tcj, null),
                      f.createElement(
                        "div",
                        {
                          className: e.IsDefaultRoomForGroup()
                            ? "HomeChannel"
                            : "",
                          style: { alignSelf: "center" },
                        },
                        e.BIsDefaultRoom()
                          ? (0, y.we)("#Chat_DefaultChannelName")
                          : e.name,
                      ),
                    ),
                    e.IsDefaultRoomForGroup() &&
                      f.createElement(
                        "div",
                        { className: "_DialogRowSecondaryLabel" },
                        (0, y.we)(
                          "#GroupSettings_Channels_HomeChannelDeleteLabel",
                        ),
                      ),
                    !e.IsDefaultRoomForGroup() &&
                      t &&
                      f.createElement(
                        "div",
                        {
                          className: "ChannelDeleteButton",
                          onClick: (t) => this.OnDeleteChannel(t, e),
                        },
                        (0, y.we)("#GroupSettings_Channels_Delete"),
                      ),
                  ),
                  f.createElement(Z, {
                    room: e,
                    roomList: r ? i : n,
                    enabled: t,
                  }),
                ),
              r = n.map((e) => o(e, 0, !1)),
              a = i.map((e) => o(e, 0, !0));
            return f.createElement(
              f.Fragment,
              null,
              f.createElement(
                x,
                null,
                (0, y.we)("#GroupSettings_Channels_Section"),
              ),
              !t && f.createElement(ie, null),
              f.createElement(
                S.lV,
                { className: "DialogBody" },
                f.createElement(
                  S.dR,
                  { className: V().ChannelsButtons },
                  f.createElement(
                    S.$n,
                    {
                      className: "DialogButtonTall",
                      svgicon: v.tcj,
                      onClick: this.OnCreateNewTextChannel,
                      disabled: !t,
                    },
                    " ",
                    (0, y.we)("#GroupSettings_Channels_CreateText"),
                    " ",
                  ),
                  f.createElement(
                    S.$n,
                    {
                      className: "DialogButtonTall",
                      svgicon: () => v.mrd({}),
                      onClick: this.OnCreateNewVoiceChannel,
                      disabled: !t,
                    },
                    " ",
                    (0, y.we)("#GroupSettings_Channels_CreateVoice"),
                    " ",
                  ),
                ),
                f.createElement(
                  S.xz,
                  null,
                  0 != r.length &&
                    f.createElement(
                      "div",
                      {
                        className: "displayColumn flexShrinkNone",
                        style: { marginBottom: "32px" },
                      },
                      f.createElement(
                        S.JU,
                        null,
                        (0, y.we)("#GroupSettings_Channels_TextChannels"),
                      ),
                      f.createElement(S._E, null),
                      r,
                    ),
                  0 != a.length &&
                    f.createElement(
                      "div",
                      { className: "displayColumn flexShrinkNone" },
                      f.createElement(
                        S.JU,
                        null,
                        (0, y.we)("#GroupSettings_Channels_VoiceChannels"),
                      ),
                      f.createElement(S._E, null),
                      a,
                    ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([E.oI], Q.prototype, "OnCreateNewTextChannel", null),
          (0, i.Cg)([E.oI], Q.prototype, "OnCreateNewVoiceChannel", null),
          (0, i.Cg)([E.oI], Q.prototype, "OnDeleteChannel", null),
          (Q = (0, i.Cg)([C.PA], Q));
        class $ extends f.Component {
          m_refInput;
          state = { strRoleName: "" };
          OnSubmit() {
            let e = this.m_refInput && this.m_refInput.value.trim();
            e &&
              0 != e.length &&
              (this.props.closeModal(),
              this.props.group.CreateRole(e).catch(() => {
                (0, u.Ic)(
                  this.props.ownerWin,
                  (0, y.we)("#Generic_Error"),
                  (0, y.we)("#GroupSettings_CreateRole_GenericError"),
                ),
                  this.props.closeModal();
              }));
          }
          HandleTextEntry(e) {
            this.setState({ strRoleName: e.target.value });
          }
          render() {
            let e = this.state.strRoleName.length > 0;
            return f.createElement(
              p.x_,
              { onEscKeypress: this.props.closeModal },
              f.createElement(
                S.U9,
                {
                  classNameContent: "CreateChatChannelDialog",
                  onSubmit: this.OnSubmit,
                },
                f.createElement(
                  S.Y9,
                  null,
                  (0, y.we)("#GroupSettings_CreateRole_Title"),
                ),
                f.createElement(
                  S.nB,
                  null,
                  f.createElement(S.pd, {
                    ref: (e) => {
                      this.m_refInput = e;
                    },
                    autoFocus: !0,
                    label: (0, y.we)("#GroupSettings_CreateRole_Description"),
                    value: this.state.strRoleName,
                    onChange: this.HandleTextEntry,
                  }),
                ),
                f.createElement(
                  S.wi,
                  null,
                  f.createElement(S.CB, {
                    onCancel: this.props.closeModal,
                    bOKDisabled: !e,
                  }),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([E.oI], $.prototype, "OnSubmit", null),
          (0, i.Cg)([E.oI], $.prototype, "HandleTextEntry", null);
        let X = class extends f.Component {
          state = {};
          m_topRef = f.createRef();
          OnCreateRole(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            (0, p.HT)(
              f.createElement($, { ownerWin: t, group: this.props.group }),
              t,
            );
          }
          BCanLocalUserEditRole(e) {
            return this.props.group.BCanIModifyRole(e);
          }
          BCanLocalUserAssignRole() {
            return this.props.group.BCanIAssignRoles();
          }
          EditRole(e) {
            let t = this.props.group.GetRoleName(e),
              n = this.props.group.GetRoleActions(e);
            t &&
              n &&
              this.setState({
                editRoleID: e,
                editRoleName: t,
                editRoleActions: n,
              });
          }
          DoesRoleGrantPermission(e, t) {
            return !0;
          }
          OnSettingToggled(e, t) {
            this.props.group.SetRoleAction(this.state.editRoleID, e, t);
          }
          MoveRoleUp(e) {
            let t = this.props.group.GetRoleOrdinal(e),
              n = Math.max(0, t - 1);
            this.props.group.ReorderRole(e, n).then((e) => {
              this.forceUpdate();
            });
          }
          MoveRoleDown(e) {
            let t = this.props.group.GetRoleOrdinal(e) + 1;
            this.props.group.ReorderRole(e, t).then((e) => {
              this.forceUpdate();
            });
          }
          componentDidUpdate(e, t) {
            if (
              this.state.editRoleID !== t.editRoleID &&
              this.m_topRef &&
              this.m_topRef.current
            ) {
              let e = this.m_topRef.current.parentElement;
              for (; e; ) {
                if (e.scrollHeight > e.clientHeight)
                  return void (e.scrollTop = 0);
                e = e.parentElement;
              }
            }
          }
          render() {
            const { group: e } = this.props,
              { editRoleID: t } = this.state,
              n = e.BIsAccountIDOwner(c.xm.CMInterface.steamid.GetAccountID());
            let i = e.BIsClanChatRoom();
            if (t)
              return f.createElement(
                "div",
                { ref: this.m_topRef },
                f.createElement(J, {
                  group: e,
                  roleID: t,
                  onRequestClose: () => this.setState({ editRoleID: void 0 }),
                }),
              );
            let o = e.DefaultRoleID(),
              r = e
                .GetRoles()
                .slice()
                .sort((e, t) =>
                  e.role_id == o
                    ? 1
                    : t.role_id == o
                      ? -1
                      : e.ordinal - t.ordinal,
                ),
              s = e.GetHighestRankRoleIDForPermission(
                c.xm.FriendStore.self.accountid,
                8,
              ),
              l = s ? e.GetRoleOrdinal(s) : Number.MAX_VALUE - 1,
              m = e.BIsAccountIDOwner(c.xm.FriendStore.self.accountid),
              d = !1,
              u = this.BCanLocalUserAssignRole(),
              h = r.map((t, n) => {
                let a = !1,
                  s = this.BCanLocalUserEditRole(t.role_id),
                  u = s && (m || t.ordinal > l + 1) && t.ordinal > 0,
                  h = s && n < r.length - 2;
                return (
                  s && (d = !0),
                  t.role_id == o
                    ? ((a = !0), (u = !1), (h = !1))
                    : e.BMemberHasRole(
                        c.xm.FriendStore.self.accountid,
                        t.role_id,
                      ) && (a = !0),
                  f.createElement(
                    "div",
                    { className: "roleRow", key: t.role_id },
                    f.createElement(
                      S.$n,
                      {
                        className:
                          "roleButton" + (a && !m ? " currentUserRole" : ""),
                        onClick: (e) => {
                          this.EditRole(t.role_id);
                        },
                      },
                      f.createElement(v.X4B, null),
                      (0, y.we)(t.name),
                      f.createElement(
                        "span",
                        { className: "roleSubtitle" },
                        s
                          ? (0, y.we)("#Generic_Edit")
                          : (0, y.we)("#Generic_View"),
                      ),
                    ),
                    !i &&
                      d &&
                      r.length > 2 &&
                      (u || h) &&
                      f.createElement(
                        "div",
                        { className: "rolePriorityContainer" },
                        f.createElement(
                          "div",
                          {
                            className:
                              "rolePriorityButton roleUp" +
                              (u ? "" : " Disabled"),
                            onClick: (e) => {
                              this.MoveRoleUp(t.role_id), e.stopPropagation();
                            },
                          },
                          f.createElement(v.V5W, { angle: 0 }),
                        ),
                        f.createElement(
                          "div",
                          {
                            className:
                              "rolePriorityButton roleDown" +
                              (h ? "" : " Disabled"),
                            onClick: (e) => {
                              this.MoveRoleDown(t.role_id), e.stopPropagation();
                            },
                          },
                          f.createElement(v.V5W, { angle: 180 }),
                        ),
                      ),
                  )
                );
              }),
              p = (0, y.we)("#ChatRoomRole_Description_NoEdit");
            if (i) {
              let t = T.b.InitFromClanID(e.GetClanID()),
                n = `${a.TS.COMMUNITY_BASE_URL}gid/${t.ConvertTo64BitString()}/membersManage`;
              p = (0, y.PP)(
                "#ChatRoomRole_Description_Clan",
                f.createElement(
                  A.uU,
                  { href: n },
                  (0, y.we)("#ChatRoomRole_Description_ClanLink"),
                ),
              );
            } else
              d && !m
                ? (p = (0, y.we)("#ChatRoomRole_Description"))
                : (u || m) &&
                  (p = (0, y.we)("#ChatRoomRole_Description_NoEditCanAssign"));
            return f.createElement(
              f.Fragment,
              null,
              f.createElement("div", { ref: this.m_topRef }),
              f.createElement(
                x,
                null,
                (0, y.we)("#GroupSettings_Permissions_Section"),
              ),
              !n &&
                !d &&
                f.createElement(
                  ie,
                  null,
                  (0, y.we)("#Chat_Settings_Permission_Denied_Permissions"),
                ),
              f.createElement(
                "div",
                { className: "roleList" },
                f.createElement(
                  S.a3,
                  { className: V().PermissionsDescription },
                  p,
                ),
                f.createElement(
                  "div",
                  { className: V().RoleNameHeader },
                  f.createElement(
                    S.JU,
                    null,
                    (0, y.we)("#GroupSettings_Permissions_RolesTitle"),
                    " ",
                  ),
                  !m &&
                    f.createElement(
                      S.JU,
                      { className: "meKey" },
                      f.createElement(v.X4B, null),
                      (0, y.we)("#GroupSettings_meKey_Desc"),
                    ),
                  m &&
                    f.createElement(
                      S.JU,
                      { className: "meKey" },
                      f.createElement(v.OeC, null),
                      (0, y.we)("#GroupSettings_meKey_Desc_Owner"),
                    ),
                ),
                f.createElement(
                  S.lV,
                  { className: "DialogBody" },
                  f.createElement(
                    S.$n,
                    {
                      disabled: !0,
                      className: "roleButton owner",
                      svgicon: v.OeC,
                      onClick: () => {},
                    },
                    (0, y.we)("#ChatRoomRole_Owner"),
                    f.createElement(
                      "span",
                      { className: "roleSubtitle" },
                      (0, y.we)("#ChatRoomRole_OwnerSubtitle"),
                    ),
                  ),
                  h,
                ),
                !i &&
                  f.createElement(
                    S.jn,
                    {
                      className: "createNewRoleButton",
                      svgicon: () => v.f5w({ minus: !1, nocircle: !1 }),
                      onClick: this.OnCreateRole,
                      disabled: !e.BCanICreateRoles(),
                    },
                    (0, y.we)("#GroupSettings_Permissions_CreateNew"),
                  ),
              ),
            );
          }
        };
        (0, i.Cg)([E.oI], X.prototype, "OnCreateRole", null),
          (0, i.Cg)([E.oI], X.prototype, "EditRole", null),
          (0, i.Cg)([E.oI], X.prototype, "OnSettingToggled", null),
          (0, i.Cg)([E.oI], X.prototype, "MoveRoleUp", null),
          (0, i.Cg)([E.oI], X.prototype, "MoveRoleDown", null),
          (X = (0, i.Cg)([C.PA], X));
        const Y = (e) => {
          const {
              eAction: t,
              strLabel: n,
              disabled: i,
              group: o,
              roleID: r,
            } = e,
            a = o.GetRoleActions(r),
            s = a && a.BCanPerformAction(t),
            [l, c] = f.useState(0);
          return f.createElement(S.P8, {
            onChange: (e) => {
              o.SetRoleAction(r, t, e), c(l + 1);
            },
            label: n,
            value: s,
            disabled: i,
            className: V().PermissionToggle,
          });
        };
        let J = class extends f.Component {
          constructor(e) {
            super(e),
              (this.state = { editRoleName: e.group.GetRoleName(e.roleID) });
          }
          OnEditRoleNameChange(e) {
            this.setState({ editRoleName: e.target.value });
          }
          OnEditRoleNameBlur() {
            this.RenameRole();
            let e = document.getElementById("b1");
            e && e.blur();
          }
          RenameRole() {
            const { roleID: e } = this.props,
              t = this.state.editRoleName;
            this.props.group.RenameRole(e, t).catch(() => {
              this.setState({ editRoleName: this.props.group.GetRoleName(e) });
            });
          }
          DeleteRole(e, t) {
            let n = e.currentTarget.ownerDocument.defaultView;
            if (t == this.props.group.DefaultRoleID()) return;
            let i = this.props.group.GetRoleName(t),
              o = f.createElement(
                "div",
                { style: { marginTop: "8px", color: "white" } },
                i,
              );
            (0, u.Ci)(
              n,
              (0, y.we)("#GroupSettings_Permissions_ConfirmDeleteTitle"),
              (0, y.we)("#GroupSettings_Permissions_ConfirmDelete"),
              (0, y.we)("#GroupSettings_Permissions_ConfirmDeleteButton"),
              (0, y.we)("#Button_Cancel"),
              !0,
              o,
            )
              .then(() => this.props.group.DeleteRole(t))
              .then(() => this.props.onRequestClose())
              .catch((e) => {
                null != e &&
                  (0, u.Ic)(
                    n,
                    (0, y.we)("#Generic_Error"),
                    (0, y.we)("#GroupSettings_DeleteRole_GenericError"),
                  );
              });
          }
          render() {
            const { group: e, roleID: t, onRequestClose: n } = this.props;
            if (!e.GetRoleActions(t)) return null;
            let i = e.BIsClanChatRoom(),
              o = t == e.DefaultRoleID(),
              r =
                o && !i
                  ? (0, y.we)("#ChatRoomRole_Member")
                  : this.state.editRoleName,
              a = e.BCanIModifyRole(t);
            const s = { disabled: !a, group: e, roleID: t },
              l =
                i || !a
                  ? f.createElement(
                      "div",
                      {
                        className: (0, L.A)(
                          V().RoleNameHeader,
                          V().FixedRoleName,
                        ),
                      },
                      (0, y.we)(r),
                    )
                  : f.createElement(
                      "div",
                      { className: V().RoleNameHeader },
                      f.createElement(S.pd, {
                        autoComplete: "off",
                        id: "b1",
                        className: "editRoleName",
                        label: (0, y.we)("#GroupSettings_Permissions_RoleName"),
                        type: "text",
                        value: r,
                        disabled: o || !a,
                        onChange: this.OnEditRoleNameChange,
                        onBlur: this.OnEditRoleNameBlur,
                      }),
                    );
            return f.createElement(
              S.lV,
              {
                onSubmit: this.OnEditRoleNameBlur,
                className: V().PermissionsEdit,
              },
              f.createElement(
                "div",
                { className: V().Back, onClick: () => n() },
                f.createElement(v.aeP, null),
                (0, y.we)("#GroupSettings_Permissions_BackButton"),
              ),
              !a &&
                f.createElement(
                  ie,
                  null,
                  (0, y.we)("#Chat_Settings_Permission_Denied"),
                ),
              l,
              f.createElement(
                S.nB,
                null,
                f.createElement(
                  "div",
                  {
                    className: (0, L.A)("SettingsGroup", V().PermissionsGroup),
                  },
                  f.createElement(
                    S.JU,
                    { className: "PermissionsSectionHeader" },
                    (0, y.we)("#GroupSettings_Permissions_Heading_General"),
                  ),
                  f.createElement(Y, {
                    ...s,
                    eAction: 6,
                    strLabel: (0, y.we)("#GroupSettings_Permissions_Chat"),
                  }),
                  f.createElement(Y, {
                    ...s,
                    eAction: 10,
                    strLabel: (0, y.we)(
                      "#GroupSettings_Permissions_MentionAll",
                    ),
                  }),
                  f.createElement(Y, {
                    ...s,
                    eAction: 11,
                    strLabel: (0, y.we)(
                      "#GroupSettings_Permissions_SetWatchingBroadcast",
                    ),
                  }),
                ),
                f.createElement(
                  "div",
                  {
                    className: (0, L.A)("SettingsGroup", V().PermissionsGroup),
                  },
                  f.createElement(
                    S.JU,
                    { className: "PermissionsSectionHeader" },
                    (0, y.we)(
                      "#GroupSettings_Permissions_Heading_MembersAndRoles",
                    ),
                  ),
                  f.createElement(Y, {
                    ...s,
                    eAction: 2,
                    strLabel: (0, y.we)("#GroupSettings_Permissions_Kick"),
                  }),
                  f.createElement(Y, {
                    ...s,
                    eAction: 3,
                    strLabel: (0, y.we)("#GroupSettings_Permissions_Ban"),
                  }),
                  f.createElement(Y, {
                    ...s,
                    eAction: 4,
                    strLabel: (0, y.we)("#GroupSettings_Permissions_Invite"),
                  }),
                  f.createElement(Y, {
                    ...s,
                    eAction: 8,
                    strLabel: (0, y.we)(
                      "#GroupSettings_Permissions_ChangeGroupRoles",
                    ),
                    disabled: s.disabled || o,
                  }),
                  !i &&
                    f.createElement(Y, {
                      ...s,
                      eAction: 9,
                      strLabel: (0, y.we)(
                        "#GroupSettings_Permissions_ChangeUserRoles",
                      ),
                      disabled: s.disabled || o,
                    }),
                ),
                f.createElement(
                  "div",
                  {
                    className: (0, L.A)("SettingsGroup", V().PermissionsGroup),
                  },
                  f.createElement(
                    S.JU,
                    { className: "PermissionsSectionHeader" },
                    (0, y.we)(
                      "#GroupSettings_Permissions_Heading_RoomManagement",
                    ),
                  ),
                  f.createElement(Y, {
                    ...s,
                    eAction: 5,
                    strLabel: (0, y.we)(
                      "#GroupSettings_Permissions_ChangeTaglineAvatarName",
                    ),
                  }),
                  f.createElement(Y, {
                    ...s,
                    eAction: 1,
                    strLabel: (0, y.we)(
                      "#GroupSettings_Permissions_CreateRenameDeleteChannel",
                    ),
                  }),
                ),
              ),
              f.createElement(
                S.wi,
                null,
                !i &&
                  !o &&
                  a &&
                  f.createElement(
                    S.$n,
                    {
                      className: "deleteButton",
                      onClick: (e) => {
                        this.DeleteRole(e, t);
                      },
                    },
                    (0, y.we)("#GroupSettings_Permissions_DeleteRoleButton"),
                  ),
              ),
            );
          }
        };
        (0, i.Cg)([E.oI], J.prototype, "OnEditRoleNameChange", null),
          (0, i.Cg)([E.oI], J.prototype, "OnEditRoleNameBlur", null),
          (0, i.Cg)([E.oI], J.prototype, "RenameRole", null),
          (0, i.Cg)([E.oI], J.prototype, "DeleteRole", null),
          (J = (0, i.Cg)([C.PA], J));
        let ee = class extends f.Component {
          componentDidMount() {
            const { group: e, inviteLinks: t } = this.props;
            if ("loaded" == t.loadingState) return;
            e.BCanInvite() && "pending" == t.loadingState
              ? e.GetInviteLinksForGroup().then((e) => {
                  setTimeout(() => {
                    "loaded" == e.loadingState &&
                      (t.rgInviteLinks = e.rgInviteLinks.sort(
                        (e, t) => e.time_expires() - t.time_expires(),
                      )),
                      (t.loadingState = e.loadingState);
                  }, 500);
                })
              : (t.loadingState = "denied");
          }
          OnDeleteLink(e) {
            let t = this.props.inviteLinks,
              n = f.createElement(
                "div",
                { style: { marginTop: "5px", color: "#dee2e5" } },
                (0, D.u)(e.invite_code()),
              );
            (0, u.hr)(
              (0, y.we)("#GroupSettings_Invite_ConfirmDeleteTitle"),
              (0, y.we)("#GroupSettings_Invite_ConfirmDelete"),
              (0, y.we)("#GroupSettings_Invite_ConfirmDeleteButton"),
              (0, y.we)("#Button_Cancel"),
              !0,
              n,
            )
              .then(() => {
                this.props.group.DeleteInviteLink(e.invite_code()).then((n) => {
                  (0, M.w)(
                    "loaded" == t.loadingState,
                    "somehow got a valid link to delete without links being loaded",
                  );
                  let i = t.rgInviteLinks.findIndex(
                    (t) => t.invite_code() == e.invite_code(),
                  );
                  i >= 0 &&
                    (t.rgInviteLinks.splice(i, 1),
                    console.log("removed link", t.rgInviteLinks));
                });
              })
              .then(() => {})
              .catch(() => {});
          }
          FormatExpires(e) {
            if (e > 2145916800)
              return (0, y.we)("#GroupSettings_Invite_NeverExpires");
            return c.xm
              .RTime32ToDate(e)
              .toLocaleString([], {
                year: "numeric",
                month: "numeric",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
              });
          }
          HandleFocus(e) {
            e.target.select();
          }
          render() {
            const { inviteLinks: e, group: t } = this.props;
            let n;
            const i = t.BCanInvite();
            if ("pending" == e.loadingState)
              n = f.createElement("div", null, f.createElement(b.t, null));
            else if ("denied" == e.loadingState)
              n = f.createElement(
                "div",
                null,
                (0, y.we)("#GroupSettings_Invite_Denied"),
              );
            else if ("failed" == e.loadingState)
              n = f.createElement(
                "div",
                null,
                (0, y.we)("#GroupSettings_Invite_Failed"),
              );
            else if ("loaded" == e.loadingState) {
              let t = [];
              (t = e.rgInviteLinks.map((e) =>
                f.createElement(
                  "tr",
                  { key: e.invite_code() },
                  f.createElement(
                    "td",
                    null,
                    " ",
                    f.createElement(S.pd, {
                      className: "inviteURLLink",
                      value: (0, D.u)(e.invite_code()),
                      readOnly: !0,
                      onClick: this.HandleFocus,
                      onFocus: this.HandleFocus,
                    }),
                    " ",
                  ),
                  f.createElement(
                    "td",
                    { className: "dateCell allCaps" },
                    " ",
                    this.FormatExpires(e.time_expires()),
                    " ",
                  ),
                  f.createElement(
                    "td",
                    { className: "buttonCell" },
                    f.createElement(
                      S.$n,
                      { onClick: (t) => this.OnDeleteLink(e), disabled: !i },
                      (0, y.we)("#GroupSettings_Invite_Delete"),
                    ),
                  ),
                ),
              )),
                (n =
                  0 == t.length
                    ? f.createElement(
                        "div",
                        null,
                        (0, y.we)("#GroupSettings_Invite_NoInvites"),
                      )
                    : f.createElement(
                        "table",
                        { className: "DialogSpanningTable InviteLinksTable" },
                        f.createElement(
                          "thead",
                          null,
                          f.createElement(
                            "tr",
                            null,
                            f.createElement(
                              "th",
                              { className: "inviteCodeColumn" },
                              " ",
                              (0, y.we)("#GroupSettings_Invite_Code"),
                              " ",
                            ),
                            f.createElement(
                              "th",
                              { className: "dateColumn" },
                              " ",
                              (0, y.we)("#GroupSettings_Invite_Expiration"),
                              " ",
                            ),
                            f.createElement(
                              "th",
                              { className: "buttonColumn" },
                              " ",
                            ),
                          ),
                        ),
                        f.createElement("tbody", null, t),
                      ));
            }
            return f.createElement(
              f.Fragment,
              null,
              f.createElement(
                x,
                null,
                (0, y.we)("#GroupSettings_Invite_Section"),
              ),
              !i && f.createElement(ie, null),
              f.createElement(
                S.lV,
                { className: "DialogBody" },
                i &&
                  f.createElement(
                    "div",
                    { className: "inviteLinkContainer" },
                    f.createElement(d.Rf, {
                      chat: t.GetDefaultChatRoom(),
                      disabled: !i,
                    }),
                  ),
                i &&
                  f.createElement(
                    "div",
                    { className: "OrSeparator" },
                    f.createElement(S._E, null),
                  ),
                n,
              ),
            );
          }
        };
        (0, i.Cg)([E.oI], ee.prototype, "OnDeleteLink", null),
          (0, i.Cg)([E.oI], ee.prototype, "HandleFocus", null),
          (ee = (0, i.Cg)([C.PA], ee));
        let te = class extends f.Component {
          static contextType = U.QO;
          componentDidMount() {
            let e = this.props.invitedUsers;
            if ("loaded" == e.loadingState) return;
            let t = this.props.group;
            "pending" == e.loadingState &&
              t.GetInvitedUsersForGroup().then((t) => {
                setTimeout(() => {
                  "loaded" == t.loadingState &&
                    (e.rgInvitedUsers = t.rgInvitedUsers.sort(
                      (e, t) => e.time_invited() - t.time_invited(),
                    )),
                    (e.loadingState = t.loadingState);
                }, 500);
              });
          }
          RevokeInvite(e, t) {
            let n = c.xm.FriendStore.GetPlayer(t),
              i = e.currentTarget.ownerDocument.defaultView,
              o = f.createElement(h.bP, {
                className: "friend",
                friend: n,
                context: null,
                disableContextMenu: !0,
              });
            (0, u.Ci)(
              i,
              (0, y.we)("#GroupSettings_InvitedUsers_RevokeTitle"),
              (0, y.we)("#GroupSettings_InvitedUsers_RevokeBody"),
              (0, y.we)("#GroupSettings_InvitedUsers_RevokeConfirm"),
              (0, y.we)("#Button_Cancel"),
              !0,
              o,
            )
              .then(() => {
                this.props.group
                  .RevokeInvite(t)
                  .then(() => {
                    w.Wp(
                      this.props.invitedUsers.rgInvitedUsers,
                      (e) => e.accountid() === t,
                    );
                  })
                  .catch((e) => {
                    (0, u.Ic)(
                      i,
                      (0, y.we)("#Generic_Error"),
                      (0, y.we)(
                        "#GroupSettings_InvitedUsers_RevokeGenericError",
                      ),
                    );
                  });
              })
              .catch(() => {});
          }
          FormatDate(e) {
            return c.xm
              .RTime32ToDate(e)
              .toLocaleString([], {
                year: "numeric",
                month: "short",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
              });
          }
          RenderContent() {
            const { invitedUsers: e, group: t } = this.props,
              n = t.BCanInvite();
            if ("loaded" == e.loadingState) {
              if (!e.rgInvitedUsers || 0 == e.rgInvitedUsers.length)
                return f.createElement(
                  S.lV,
                  null,
                  (0, y.we)("#GroupSettings_InvitedUsers_Noone"),
                );
              let t = e.rgInvitedUsers.map((e) => {
                let t = {
                  friend: c.xm.FriendStore.GetPlayer(e.accountid()),
                  bHideGameName: !0,
                  bHidePersona: !0,
                  noActions: this.context?.IN_GAMEPADUI,
                  context: null,
                };
                return f.createElement(
                  "tr",
                  { className: "hoverRow", key: e.accountid() },
                  f.createElement(
                    "td",
                    { className: "friendCell" },
                    " ",
                    f.createElement(h.bP, { ...t }),
                    " ",
                  ),
                  f.createElement(
                    "td",
                    { className: "dateCell" },
                    " ",
                    this.FormatDate(e.time_invited()),
                    " ",
                  ),
                  f.createElement(
                    "td",
                    { className: "buttonCell" },
                    f.createElement(
                      S.$n,
                      {
                        onClick: (t) => this.RevokeInvite(t, e.accountid()),
                        disabled: !n,
                      },
                      (0, y.we)("#GroupSettings_InvitedUsers_RevokeInvite"),
                    ),
                  ),
                );
              });
              return f.createElement(
                S.lV,
                { className: "DialogBody" },
                f.createElement(
                  _.Z,
                  { "flow-children": "grid" },
                  f.createElement(
                    "table",
                    { className: "DialogSpanningTable InvitedUsersTable" },
                    f.createElement(
                      "thead",
                      null,
                      f.createElement(
                        "tr",
                        { className: "headerRow" },
                        f.createElement(
                          "th",
                          { className: "friendColumn" },
                          (0, y.we)(
                            "#GroupSettings_InvitedUsers_InvitedHeader",
                          ),
                          " ",
                        ),
                        f.createElement(
                          "th",
                          { className: "dateColumn" },
                          " ",
                          (0, y.we)("#GroupSettings_InvitedUsers_InvitedDate"),
                          " ",
                        ),
                        f.createElement(
                          "th",
                          { className: "buttonColumn" },
                          " ",
                        ),
                      ),
                    ),
                    f.createElement("tbody", null, t),
                  ),
                ),
              );
            }
            return f.createElement(
              S.lV,
              null,
              "pending" == e.loadingState
                ? f.createElement(b.t, { size: "medium" })
                : (0, y.we)("#GroupSettings_InvitedUsers_Failed"),
            );
          }
          render() {
            const { group: e } = this.props,
              t = e.BCanInvite();
            return f.createElement(
              f.Fragment,
              null,
              f.createElement(
                x,
                null,
                (0, y.we)("#GroupSettings_InvitedUsers_Section"),
              ),
              !t && f.createElement(ie, null),
              this.RenderContent(),
            );
          }
        };
        (0, i.Cg)([E.oI], te.prototype, "RevokeInvite", null),
          (te = (0, i.Cg)([C.PA], te));
        let ne = class extends f.Component {
          static contextType = U.QO;
          componentDidMount() {
            let e = this.props.group,
              t = this.props.bans;
            "pending" == t.loadingState &&
              e.GetBanList().then((e) => {
                setTimeout(() => {
                  (t.rgBans = e.rgBans), (t.loadingState = e.loadingState);
                }, 500);
              });
          }
          OnClickUnban(e, t) {
            let n = c.xm.FriendStore.GetPlayer(t),
              i = e.currentTarget.ownerDocument.defaultView,
              o = f.createElement(h.bP, {
                className: "friend",
                friend: n,
                context: null,
                disableContextMenu: !0,
              });
            (0, u.Ci)(
              i,
              (0, y.we)("#GroupSettings_Bans_UnbanTitle"),
              (0, y.we)("#GroupSettings_Bans_UnbanBody", n.display_name),
              (0, y.we)("#GroupSettings_Bans_UnbanConfirm"),
              (0, y.we)("#Button_Cancel"),
              !0,
              o,
            )
              .then(() => {
                this.props.group
                  .SetUserBanState(t, !1)
                  .then(() => {
                    w.Wp(this.props.bans.rgBans, (e) => e.accountid() === t);
                  })
                  .catch((e) => {
                    (0, u.Ic)(
                      i,
                      (0, y.we)("#Generic_Error"),
                      (0, y.we)("#GroupSettings_Bans_UnbanGenericError"),
                    );
                  });
              })
              .catch(() => {});
          }
          FormatDate(e) {
            return c.xm
              .RTime32ToDate(e)
              .toLocaleString([], {
                year: "numeric",
                month: "short",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
              });
          }
          RenderContent() {
            const { bans: e } = this.props;
            let t;
            if ("loaded" == e.loadingState)
              return 0 == e.rgBans.length
                ? f.createElement(
                    S.lV,
                    null,
                    (0, y.we)("#GroupSettings_Bans_NoOneBanned"),
                  )
                : ((t = e.rgBans.map((e) => {
                    let t = {
                      friend: c.xm.FriendStore.GetPlayer(e.accountid()),
                      noActions: this.context?.IN_GAMEPADUI,
                      context: null,
                    };
                    return f.createElement(
                      "tr",
                      { className: "hoverRow", key: e.accountid() },
                      f.createElement(
                        "td",
                        { className: "friendCell" },
                        " ",
                        f.createElement(h.bP, { ...t }),
                        " ",
                      ),
                      f.createElement(
                        "td",
                        { className: "dateCell" },
                        " ",
                        this.FormatDate(e.time_banned()),
                        " ",
                      ),
                      f.createElement(
                        "td",
                        { className: "buttonCell" },
                        " ",
                        f.createElement(
                          S.$n,
                          {
                            onClick: (t) => this.OnClickUnban(t, e.accountid()),
                          },
                          (0, y.we)("#GroupSettings_Bans_RevokeBan"),
                        ),
                      ),
                    );
                  })),
                  f.createElement(
                    S.lV,
                    { className: "DialogBody" },
                    f.createElement(
                      "table",
                      { className: "DialogSpanningTable BannedUsersTable" },
                      f.createElement(
                        "thead",
                        null,
                        f.createElement(
                          "tr",
                          { className: "headerRow" },
                          f.createElement(
                            "th",
                            { className: "friendColumn" },
                            (0, y.we)("#GroupSettings_Bans_InvitedHeader"),
                            " ",
                          ),
                          f.createElement(
                            "th",
                            { className: "dateColumn" },
                            " ",
                            (0, y.we)("#GroupSettings_Bans_BannedDate"),
                            " ",
                          ),
                          f.createElement(
                            "th",
                            { className: "buttonColumn" },
                            " ",
                          ),
                        ),
                      ),
                      f.createElement("tbody", null, t),
                    ),
                  ));
            {
              let t;
              return (
                (t =
                  "pending" == e.loadingState
                    ? f.createElement(b.t, { size: "medium" })
                    : "denied" == e.loadingState
                      ? (0, y.we)("#GroupSettings_Bans_AccessDenied")
                      : (0, y.we)("#GroupSettings_Bans_Failed")),
                f.createElement(S.lV, { className: "DialogBody" }, t)
              );
            }
          }
          render() {
            const { group: e } = this.props,
              t = e.BCanBan();
            return f.createElement(
              f.Fragment,
              null,
              f.createElement(
                x,
                null,
                (0, y.we)("#GroupSettings_Bans_Section"),
              ),
              !t && f.createElement(ie, null),
              this.RenderContent(),
            );
          }
        };
        (0, i.Cg)([E.oI], ne.prototype, "OnClickUnban", null),
          (ne = (0, i.Cg)([C.PA], ne));
        const ie = (e) =>
          f.createElement(
            "div",
            { className: V().Notification },
            f.createElement(v.c_I, null),
            e.children || (0, y.we)("#Chat_Settings_Permission_Denied"),
          );
      },
      60340: (e, t, n) => {
        "use strict";
        n.d(t, { lV: () => f, yi: () => S });
        var i = n(34629),
          o = n(63696),
          r = n(78116),
          a = n(89021),
          s = n(78919),
          l = n(14355),
          c = n(69074),
          m = n(74002),
          d = n(82924),
          u = n(58743),
          h = n(41230),
          p = n(33769),
          _ = n(77765),
          g = n(78161),
          C = n.n(g);
        function f(e, t) {
          let n = t.GetGroup().textRoomList.length;
          n > 7 && (n = 7);
          let i = 60 * n;
          n < 2 && (i -= 32),
            (0, l.HT)(
              o.createElement(v, { group: t.GetGroup() }),
              e,
              "ChatRoomGroupNotificationSettings",
              {
                strTitle: (0, m.we)("#NotificationSettings_Title"),
                popupWidth: 600,
                popupHeight: 348 + i,
              },
              (0, s.h8)(e),
            );
        }
        function S(e = !0) {
          let t = [];
          return (
            e &&
              (t = t.concat([
                {
                  label: o.createElement(
                    "span",
                    {
                      className: "ChannelSpecificNotificationSettings_Inherit",
                    },
                    (0, m.we)("#NotificationSetting_Inherit"),
                  ),
                  data: 0,
                },
              ])),
            (t = t.concat([
              { label: (0, m.we)("#NotificationSetting_AllMessages"), data: 4 },
              {
                label: (0, m.we)(
                  "#NotificationSetting_AnyMention",
                  u.xm.FriendStore.self.display_name,
                ),
                data: 3,
              },
              {
                label: (0, m.we)(
                  "#NotificationSetting_DirectMention",
                  u.xm.FriendStore.self.display_name,
                ),
                data: 2,
              },
              { label: (0, m.we)("#NotificationSetting_None"), data: 1 },
            ])),
            t
          );
        }
        let v = class extends o.Component {
          static contextType = r.QO;
          m_rgSelectOptions = S(!1);
          constructor(e) {
            super(e), (this.state = { cSavesInFlight: 0 });
          }
          IncrementSavesInFlight() {
            this.setState((e) => ({ cSavesInFlight: e.cSavesInFlight + 1 }));
          }
          DecrementSavesInFlight() {
            this.setState(
              (e) => (
                (0, _.w)(
                  e.cSavesInFlight > 0,
                  `expected ${e.cSavesInFlight} > 0`,
                ),
                { cSavesInFlight: e.cSavesInFlight - 1 }
              ),
            );
          }
          WrapSavePromise(e) {
            this.IncrementSavesInFlight(),
              e.then(this.DecrementSavesInFlight, this.DecrementSavesInFlight);
          }
          OnGroupNotificationLevelChanged(e) {
            this.WrapSavePromise(
              this.props.group.SetNotificationPreferences(e),
            );
          }
          OnShowUnreadIndicatorChanged(e) {
            this.WrapSavePromise(
              this.props.group.SetNotificationPreferences(void 0, void 0, e),
            );
          }
          DismissDialog() {
            this.props.closeModal();
          }
          OnFriendsSettingsClicked(e) {
            (0, p.T)((0, s.CO)(e), e.currentTarget.ownerDocument.defaultView);
          }
          render() {
            let e,
              t = this.props.group,
              n = t.chatRoomList.filter((e) => e.BShouldTrackUnreadMessages()),
              i = n.length > 0;
            if (
              (1 == n.length &&
                0 == n[0].GetDesktopNotificationLevelSetting() &&
                0 == n[0].GetMobileNotificationLevelsetting() &&
                (i = !1),
              i)
            ) {
              let i = n.map((e) =>
                o.createElement(b, {
                  fnHandleSave: this.WrapSavePromise,
                  group: t,
                  chat: e,
                  key: e.unique_id,
                }),
              );
              e = o.createElement(
                o.Fragment,
                null,
                o.createElement(
                  "div",
                  { className: "notificationsChannelListContainer" },
                  i,
                ),
              );
            }
            return o.createElement(
              l.x_,
              { onEscKeypress: this.DismissDialog },
              o.createElement(
                a.U9,
                { classNameContent: "ChatRoomNotificationSettingsDialog" },
                o.createElement(
                  a.Y9,
                  null,
                  (0, m.we)("#NotificationSettings_Title"),
                ),
                o.createElement(
                  a.JU,
                  null,
                  (0, m.PP)(
                    "#NotificationSettings_SubTitle",
                    o.createElement("span", { className: "whiteText" }, t.name),
                  ),
                ),
                o.createElement(
                  a.nB,
                  null,
                  o.createElement(
                    a.JU,
                    {
                      className:
                        "NotificationSettingsSavingIndicator " +
                        (this.state.cSavesInFlight ? "Saving" : ""),
                    },
                    (0, m.we)("#GroupSettings_Permissions_Saving"),
                    "...",
                  ),
                  o.createElement(I, {
                    drop_down_options: this.m_rgSelectOptions,
                    get_notification_level: (e) =>
                      t.GetDesktopNotificationLevel(e),
                    set_notification_level:
                      this.OnGroupNotificationLevelChanged,
                    get_muted: () => t.BIsUnreadIndicatorMuted(),
                    set_muted: this.OnShowUnreadIndicatorChanged,
                  }),
                  i &&
                    o.createElement(
                      o.Fragment,
                      null,
                      o.createElement(a._E, null),
                      o.createElement(
                        a.dR,
                        { className: "notificationsChannelHeader" },
                        o.createElement(
                          a.JU,
                          { className: "NotificationChannelNameLabel" },
                          (0, m.we)("#GroupSettings_Channels_TextChannels"),
                        ),
                        o.createElement(
                          a.JU,
                          { className: "OverrideChannelLabel" },
                          (0, m.we)("#NotificationSetting_ShortLabel"),
                        ),
                      ),
                      o.createElement(
                        a.xz,
                        { className: C().scrollMaskVertical },
                        e,
                      ),
                    ),
                ),
                o.createElement(
                  a.wi,
                  null,
                  !this.context?.IN_GAMEPADUI &&
                    (0, m.PP)(
                      "#NotificationSetting_Footer_Desc2",
                      o.createElement(
                        "span",
                        {
                          className: "textLink",
                          onClick: this.OnFriendsSettingsClicked,
                        },
                        (0, m.we)("#Settings"),
                      ),
                    ),
                  o.createElement(
                    c.Z,
                    { className: "_DialogColLayout", "flow-children": "row" },
                    o.createElement(
                      a.jn,
                      { onClick: this.props.closeModal },
                      (0, m.we)("#Button_Close"),
                    ),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([d.oI], v.prototype, "IncrementSavesInFlight", null),
          (0, i.Cg)([d.oI], v.prototype, "DecrementSavesInFlight", null),
          (0, i.Cg)([d.oI], v.prototype, "WrapSavePromise", null),
          (0, i.Cg)(
            [d.oI],
            v.prototype,
            "OnGroupNotificationLevelChanged",
            null,
          ),
          (0, i.Cg)([d.oI], v.prototype, "OnShowUnreadIndicatorChanged", null),
          (0, i.Cg)([d.oI], v.prototype, "DismissDialog", null),
          (0, i.Cg)([d.oI], v.prototype, "OnFriendsSettingsClicked", null),
          (v = (0, i.Cg)([h.PA], v));
        let b = class extends o.Component {
          static contextType = r.QO;
          m_rgSelectOptions = S();
          OnChatNotificationLevelChanged(e) {
            this.props.fnHandleSave(
              this.props.chat.SetNotificationPreferences(e.data),
            );
          }
          render() {
            let e = this.props.chat;
            e.GetDesktopNotificationLevelSetting();
            return this.context?.IN_GAMEPADUI
              ? o.createElement(
                  c.Z,
                  {
                    className: "notificationsChannel",
                    "flow-children": "column",
                  },
                  o.createElement(a.m, {
                    layout: "inline",
                    label: e.name,
                    rgOptions: this.m_rgSelectOptions,
                    selectedOption: e.GetDesktopNotificationLevelSetting(),
                    onChange: this.OnChatNotificationLevelChanged,
                  }),
                )
              : o.createElement(
                  a.dR,
                  { className: "notificationsChannel" },
                  o.createElement(
                    "div",
                    { className: "NotificationChannelName" },
                    e.name,
                  ),
                  o.createElement(a.m, {
                    rgOptions: this.m_rgSelectOptions,
                    selectedOption: e.GetDesktopNotificationLevelSetting(),
                    onChange: this.OnChatNotificationLevelChanged,
                  }),
                );
          }
        };
        (0, i.Cg)([d.oI], b.prototype, "OnChatNotificationLevelChanged", null),
          (b = (0, i.Cg)([h.PA], b));
        let I = class extends o.Component {
          OnNotificationLevelChanged(e) {
            this.props.set_notification_level(e.data);
          }
          OnShowUnreadIndicatorChanged(e) {
            this.props.set_muted(!e);
          }
          render() {
            let e = this.props.get_notification_level(!0);
            this.props.bIsDefault && 0 == e && (e = 4);
            let t = this.props.get_notification_level();
            return (
              this.props.bIsDefault && 0 == t && (t = 4),
              o.createElement(
                "div",
                { className: "ChatRoomNotificationSettingsDialog" },
                o.createElement(
                  "div",
                  {
                    className:
                      "notificationGeneralHeader" +
                      (this.props.bIsDefault ? " isDefault" : ""),
                  },
                  o.createElement(
                    a.JU,
                    null,
                    this.props.bIsDefault
                      ? (0, m.we)("#NotificationSetting_DefaultLabel")
                      : (0, m.we)("#NotificationSetting_Label"),
                  ),
                ),
                o.createElement(
                  "div",
                  { style: { marginBottom: 16 } },
                  o.createElement(
                    "div",
                    { className: "notificationRow" },
                    o.createElement(a.m, {
                      rgOptions: this.props.drop_down_options,
                      selectedOption: e,
                      onChange: this.OnNotificationLevelChanged,
                    }),
                  ),
                  4 != t &&
                    o.createElement(
                      "div",
                      { className: "indicatorOptionContainer" },
                      o.createElement(a.RF, {
                        className: "indicatorOption",
                        label: (0, m.we)("#NotificationSetting_Indicator"),
                        onChange: this.OnShowUnreadIndicatorChanged,
                        checked: !this.props.get_muted(),
                      }),
                      o.createElement(
                        "div",
                        {
                          className:
                            "ChatUnreadMessageIndicator" +
                            (this.props.get_muted() ? " Hidden" : ""),
                        },
                        o.createElement("div", {
                          className: "chatUnreadCircle",
                        }),
                      ),
                    ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([d.oI], I.prototype, "OnNotificationLevelChanged", null),
          (0, i.Cg)([d.oI], I.prototype, "OnShowUnreadIndicatorChanged", null),
          (I = (0, i.Cg)([h.PA], I));
      },
      85691: (e, t, n) => {
        "use strict";
        n.d(t, { UA: () => S, eJ: () => v, zw: () => b });
        var i = n(34629),
          o = n(58743),
          r = n(41230),
          a = n(14355),
          s = n(63696),
          l = n(93715),
          c = n(82924),
          m = n(74002),
          d = n(89021),
          u = n(69074),
          h = n(13419),
          p = n(78919),
          _ = n(50622),
          g = n(99862),
          C = n(81734),
          f = n(25698);
        function S(e, t, n, i = !1, o) {
          (0, a.HT)(
            s.createElement(b, {
              browserContext: e,
              chatViewToReplace: n,
              bHideChatNameEntry: i,
              vecInvitePlayers: o,
            }),
            t,
            "CreateChatDialog",
            {
              strTitle: (0, m.we)("#Chat_CreateChatRoom"),
              popupWidth: 664,
              popupHeight: 580,
            },
            (0, p.h8)(t),
          );
        }
        function v(e, t, n, i) {
          let r = (0, p._k)(e),
            a = o.xm.ChatStore.FindNamelessChatGroupWithFriends(n);
          a
            ? o.xm.UIStore.ReplaceFriendChatWithGroup(r, t, a)
            : o.xm.ChatStore.CreateChatRoomGroup(r, "", n, i)
                .then((e) => {
                  o.xm.UIStore.GetPerContextChatData(r);
                  let n = o.xm.ChatStore.GetChatRoomGroup(e);
                  n && o.xm.UIStore.ReplaceFriendChatWithGroup(r, t, n);
                })
                .catch(() => {
                  (0, f.Ic)(
                    e,
                    (0, m.we)("#Generic_Error"),
                    (0, m.we)("#Chat_CreateChatRoom_GenericError"),
                  );
                });
        }
        let b = class extends s.Component {
          constructor(e) {
            super(e);
            const t = e.vecInvitePlayers
              ? e.vecInvitePlayers.map((e) => o.xm.FriendStore.GetPlayer(e))
              : [];
            this.state = {
              strCurrentNameEntry: "",
              strError: void 0,
              bCreateInFlight: !1,
              rgSelectedFriends: t,
            };
          }
          HandleTextEntry(e) {
            this.setState({ strCurrentNameEntry: e.target.value });
          }
          HandleSubmit(e) {
            if ((e && e.preventDefault(), this.state.bCreateInFlight)) return;
            let t = (0, _.uX)(e);
            this.setState(
              (e) => (
                e.bCreateInFlight || this.InternalDoSubmit(t),
                { bCreateInFlight: !0 }
              ),
            );
          }
          InternalDoSubmit(e) {
            const t = this.state.rgSelectedFriends.map((e) =>
              e.persona.m_steamid.ConvertTo64BitString(),
            );
            let n = this.props.chatViewToReplace;
            if (n) {
              let i = new l.$c(
                this.props.chatViewToReplace.chat.accountid_partner,
              );
              return (
                t.push(i.persona.m_steamid.ConvertTo64BitString()),
                v(e, n, t),
                void this.props.closeModal()
              );
            }
            let i = this.props.bHideChatNameEntry
              ? ""
              : this.state.strCurrentNameEntry;
            o.xm.ChatStore.CreateChatRoomGroup(
              this.props.browserContext,
              i,
              t,
              this.props.creationOptions,
            )
              .then((e) => {
                this.props.closeModal();
              })
              .catch(() => {
                this.setState({
                  strError: (0, m.we)("#Chat_CreateChatRoom_GenericError"),
                  bCreateInFlight: !1,
                });
              });
          }
          IsChatRoomNameValid() {
            return this.state.strCurrentNameEntry.length > 0;
          }
          render() {
            let e = this.props.chatViewToReplace
                ? this.props.chatViewToReplace.chat.chat_partner
                : null,
              t = (0, m.we)("#Chat_CreateChatRoom_Button");
            const n = this.state.rgSelectedFriends.length > 0;
            let i = new Set();
            this.props.chatViewToReplace &&
              i.add(this.props.chatViewToReplace.chat.accountid_partner);
            let o = !1;
            this.state.bCreateInFlight
              ? ((o = !1), (t = (0, m.we)("#GroupSettings_Permissions_Saving")))
              : e
                ? (o = this.state.rgSelectedFriends.length > 0)
                : ((o = this.IsChatRoomNameValid() || n),
                  this.IsChatRoomNameValid() && !n
                    ? (t = (0, m.we)("#Chat_CreateChatRoom_Button"))
                    : n && !this.IsChatRoomNameValid()
                      ? (t = (0, m.we)("#Chat_CreateChatRoom_InviteFriends"))
                      : n &&
                        this.IsChatRoomNameValid() &&
                        (t = (0, m.we)(
                          "#Chat_CreateChatRoom_Button_wFriends",
                        )));
            const r =
              this.props.strTitle ||
              (e
                ? (0, m.we)("#Chat_CreateChatRoom_InviteFriends")
                : (0, m.we)("#Chat_CreateChatRoom"));
            return s.createElement(
              a.x_,
              { onEscKeypress: this.props.closeModal },
              s.createElement(
                d.U9,
                {
                  classNameContent: "CreateChatDialog",
                  onSubmit: this.HandleSubmit,
                },
                s.createElement(d.Y9, null, r),
                s.createElement(
                  d.nB,
                  null,
                  e &&
                    s.createElement(
                      d.a3,
                      null,
                      s.createElement(
                        "span",
                        null,
                        (0, m.we)("#Chat_CreateChatRoom_With"),
                        s.createElement(
                          "span",
                          { className: "DialogHighlight" },
                          (0, m.we)("#Chat_CreateChatRoom_You"),
                        ),
                        (0, m.we)("#Chat_CreateChatRoom_And"),
                        s.createElement(
                          "span",
                          { className: "DialogHighlight" },
                          e.display_name,
                        ),
                      ),
                    ),
                  this.state.strError &&
                    s.createElement(
                      d.a3,
                      { className: "nicknameError" },
                      this.state.strError,
                    ),
                  !this.props.bHideChatNameEntry &&
                    s.createElement(d.pd, {
                      type: "text",
                      label: (0, m.we)("#Chat_Settings_Room_Name"),
                      className: "nicknameInput",
                      value: this.state.strCurrentNameEntry,
                      onChange: this.HandleTextEntry,
                      autoFocus: !0,
                    }),
                  s.createElement(h.r, {
                    label: (0, m.we)("#Chat_DropToInviteGroup"),
                    eSort: 1,
                    autoFocus: this.props.bHideChatNameEntry,
                    renderChosenFriend: I,
                    excludeFriend: (e) => i.has(e.accountid),
                    onChange: (e) => this.setState({ rgSelectedFriends: e }),
                    rgPickedFriends: this.state.rgSelectedFriends,
                  }),
                ),
                s.createElement(
                  d.wi,
                  null,
                  s.createElement(d.CB, {
                    strOKText: t,
                    onCancel: this.props.closeModal,
                    bOKDisabled: !o,
                  }),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([c.oI], b.prototype, "HandleTextEntry", null),
          (0, i.Cg)([c.oI], b.prototype, "HandleSubmit", null),
          (b = (0, i.Cg)([r.PA], b));
        let I = (0, r.PA)((e) =>
          s.createElement(
            s.Fragment,
            null,
            s.createElement(
              g.Rg,
              { friend: e.friend, context: null },
              s.createElement(
                u.Z,
                {
                  className: "FriendPicker_ChosenFriend",
                  onClick: () => {
                    e.onClick(e.friend);
                  },
                },
                s.createElement("span", null, e.friend.display_name),
                s.createElement(C.sED, null),
              ),
            ),
          ),
        );
      },
      13419: (e, t, n) => {
        "use strict";
        n.d(t, { r: () => v });
        var i = n(63696),
          o = n(69074),
          r = n(54829),
          a = n(93715),
          s = n(58743),
          l = n(99862),
          c = n(89021),
          m = n(74002),
          d = n(81734),
          u = n(77171),
          h = n(10853),
          p = n(76482),
          _ = n(17070),
          g = n(82924),
          C = n(7153),
          f = n(28790),
          S = n.n(f);
        const v = (e) => {
            const {
                label: t,
                eSort: n,
                onChange: d,
                rgPickedFriends: f,
                excludeFriend: v,
                autoFocus: I,
                bDropInvite: w,
                renderChosenFriend: y,
              } = e,
              E = (0, _.Qn)(),
              [D, A] = (0, i.useState)(""),
              [T, M] = (0, i.useState)(null),
              R = (t) => {
                e.onFriendPicked && e.onFriendPicked(t),
                  d && d(f.concat(t)),
                  A("");
              },
              k = (t) => {
                if ((e.onFriendUnpicked && e.onFriendUnpicked(t), d)) {
                  const e = f.findIndex((e) => e.accountid === t.accountid);
                  -1 !== e && d(f.slice(0, e).concat(f.slice(e + 1)));
                }
              },
              L = (0, i.useMemo)(() => {
                const e = s.xm.FriendStore.all_friends.filter(
                    (e) =>
                      (!v || !v(e)) &&
                      !f.some((t) => t.accountid === e.accountid),
                  ),
                  t = s.xm.ChatStore.FriendChatStore;
                if (0 === n)
                  e.sort((e, n) => {
                    let i =
                      t.GetFriendLastChatTime(n.accountid) -
                      t.GetFriendLastChatTime(e.accountid);
                    return 0 !== i ? i : a.$c.DefaultFriendSortComparator(e, n);
                  });
                else
                  e.sort((e, t) =>
                    e.display_name.localeCompare(t.display_name),
                  );
                return e;
              }, [v, n, f]),
              G = (0, i.useMemo)(() => {
                const e = D && D.trim().toLocaleLowerCase(),
                  t = [];
                for (let n = 0; n < L.length && t.length < 500; n++) {
                  const i = L[n];
                  (e && !i.BMatchesSearchString(e, !1)) || t.push(i);
                }
                return t;
              }, [D, L]);
            i.useEffect(() => {
              M(G.length > 0 && D.length > 0 ? G[0] : null);
            }, [G]);
            const F = (0, i.useCallback)(
                (e) => {
                  e &&
                    !E &&
                    e.scrollIntoView({ behavior: "auto", block: "nearest" });
                },
                [E],
              ),
              P = () => {
                const e = f[f.length - 1];
                e && k(e);
              },
              B = f.length > 0,
              [x, O] = i.useState(!1),
              N = (0, u.A)(
                "FriendPicker",
                B && "FriendPicker_FriendsChosen",
                x && "FriendPicker_Focus",
              ),
              V = y || b,
              U = f.map((e) =>
                i.createElement(V, {
                  friend: e,
                  key: e.accountid,
                  onClick: () => k(e),
                }),
              ),
              H = i.useRef(),
              W = G.map((e, t) => {
                const n = !E && e == T,
                  r = (0, u.A)("FriendPicker_SuggestedFriend", n && "Focus");
                return i.createElement(
                  o.Z,
                  {
                    className: r,
                    onActivate: () => R(e),
                    onMouseUp: () => {
                      M(e), H.current?.Focus();
                    },
                    key: e.accountid,
                    "data-index": t,
                    ref: n ? F : void 0,
                  },
                  i.createElement(l.bP, {
                    noActions: !0,
                    friend: e,
                    context: null,
                  }),
                );
              }),
              z = i.useRef();
            i.useEffect(() => {
              z.current?.scrollTo({ top: 0, behavior: "auto" });
            }, [G]);
            const j = (function () {
                const e = i.useRef(),
                  [t, n] = i.useState(!0),
                  [o, r] = i.useState(!1),
                  a = () => {
                    const i = e.current,
                      a = null == i || i.scrollTop <= 1;
                    a != t && n(a);
                    const s =
                      null == i ||
                      i.scrollHeight - i.scrollTop <= i.clientHeight + 1;
                    s != o && r(s);
                  },
                  s = (0, u.A)(
                    S().ScrollFade,
                    t && S().ScrolledToTop,
                    o && S().ScrolledToBottom,
                  );
                return (
                  i.useLayoutEffect(a),
                  {
                    refForScrollable: e,
                    strClassNamesForScrollable: s,
                    fnOnScroll: a,
                  }
                );
              })(),
              { strMinHeightStyle: q, refForResizeObserver: K } = (0, g.X)(),
              Z = (0, g.Ue)(z, j.refForScrollable);
            return i.createElement(
              o.Z,
              { className: N, onSecondaryButton: P },
              i.createElement(
                c.eo,
                {
                  onChange: ({ currentTarget: { value: e } }) => A(e),
                  onKeyDown: (e) => {
                    if (13 === e.keyCode)
                      ((!E && e.currentTarget.value.trim().length) ||
                        null != T) &&
                        (e.preventDefault(), T && R(T));
                    else if (
                      8 === e.keyCode &&
                      0 === e.currentTarget.selectionEnd &&
                      f.length > 0
                    )
                      e.preventDefault(), P();
                    else if (
                      !E &&
                      (38 == e.keyCode ||
                        40 == e.keyCode ||
                        34 == e.keyCode ||
                        33 == e.keyCode) &&
                      G.length > 0
                    ) {
                      e.preventDefault();
                      const t = G.findIndex((e) => e == T);
                      let n;
                      38 == e.keyCode
                        ? (n = t - 1)
                        : 33 == e.keyCode
                          ? (n = Math.max(0, t - 5))
                          : 34 == e.keyCode
                            ? (n = Math.min(G.length - 1, t + 5))
                            : 40 == e.keyCode && (n = t + 1),
                        n < 0
                          ? (n = 0)
                          : n > G.length - 1 && (n = G.length - 1),
                        M(G[n]);
                    }
                  },
                  onFocus: () => O(!0),
                  onBlur: () => O(!1),
                  label: t,
                  value: D,
                  placeholder: B ? "" : (0, m.we)("#FriendPicker_StartTyping"),
                  autoFocus: I,
                  focusOnMount: !E && I,
                  ref: H,
                },
                U,
              ),
              w &&
                i.createElement(
                  "div",
                  { className: "DialogLabel" },
                  (0, m.we)("#Chat_InviteFriends_DropInvite"),
                ),
              i.createElement(
                r.YZ,
                {
                  className: "FriendPickerFriendList",
                  style: { minHeight: E ? void 0 : q },
                  ref: K,
                },
                i.createElement("div", {
                  className: "insetShadow verticalInsetShadow",
                }),
                i.createElement(
                  h.MS,
                  {
                    ref: Z,
                    onGamepadDirection: (e) => e.detail.is_repeat,
                    onScroll: j.fnOnScroll,
                    className: (0, u.A)(
                      "FriendPickerScrollPanel",
                      j.strClassNamesForScrollable,
                    ),
                    scrollIntoViewType: C.Yo.NoTransform,
                  },
                  i.createElement(p.g, null, W),
                ),
              ),
            );
          },
          b = (e) =>
            i.createElement(
              l.Rg,
              { friend: e.friend, context: null },
              i.createElement(
                o.Z,
                {
                  className: "FriendPicker_ChosenFriend",
                  onActivate: () => {
                    e.onClick(e.friend);
                  },
                },
                i.createElement("span", null, e.friend.display_name),
                i.createElement(d.sED, null),
              ),
            );
      },
      58825: (e, t, n) => {
        "use strict";
        n.d(t, {
          IW: () => b,
          dG: () => I,
          jr: () => f,
          ki: () => i,
          vQ: () => v,
        });
        var i,
          o = n(34629),
          r = n(63696),
          a = n(89021),
          s = n(78116),
          l = n(41230),
          c = n(82924),
          m = n(74002),
          d = n(52434),
          u = n(63887),
          h = n(94958),
          p = n(77631),
          _ = n(78919),
          g = n(58743),
          C = n(91466);
        class f extends r.Component {
          m_bSettingsChanged = !1;
          m_bCommunityPreferencesChanged = !1;
          constructor(e) {
            super(e),
              (this.state = {
                friendSettings: { ...e.friendsSettingsInitial },
                communityPreferences: { ...e.communityPreferencesInitial },
              });
          }
          componentDidUpdate(e) {
            let t = {};
            const {
              friendsSettingsInitial: n,
              communityPreferencesInitial: i,
            } = this.props;
            for (let i of Object.keys(n))
              n[i] != e.friendsSettingsInitial[i] && (t[i] = n[i]);
            let o = {};
            for (let t of Object.keys(i))
              i[t] != e.communityPreferencesInitial[t] && (o[t] = i[t]);
            Object.keys(t).length &&
              this.setState({
                friendSettings: { ...this.state.friendSettings, ...t },
              }),
              Object.keys(o).length &&
                this.setState({
                  communityPreferences: {
                    ...this.state.communityPreferences,
                    ...o,
                  },
                }),
              this.props.bSubmitImmediate &&
                (this.m_bSettingsChanged ||
                  this.m_bCommunityPreferencesChanged) &&
                this.props.onSubmit(
                  this.state.friendSettings,
                  this.state.communityPreferences,
                ),
              (this.m_bSettingsChanged = !1),
              (this.m_bCommunityPreferencesChanged = !1);
          }
          OnSubmit() {
            this.props.onSubmit(
              this.state.friendSettings,
              this.state.communityPreferences,
            ),
              (this.m_bSettingsChanged = !1),
              (this.m_bCommunityPreferencesChanged = !1);
          }
          HandleRadioChange(e) {
            this.setState({
              friendSettings: {
                ...this.state.friendSettings,
                nChatFlashMode: parseInt(e.currentTarget.value),
              },
            }),
              (this.m_bSettingsChanged = !0);
          }
          OnSettingToggled(e, t) {
            this.setState({
              friendSettings: { ...this.state.friendSettings, [e]: t },
            }),
              (this.m_bSettingsChanged = !0);
          }
          OnCommunityPreferenceToggled(e, t) {
            this.setState({
              communityPreferences: {
                ...this.state.communityPreferences,
                [e]: t,
              },
            }),
              (this.m_bCommunityPreferencesChanged = !0);
          }
          FriendsSettingsToggleRow(e) {
            return r.createElement(a.RF, {
              key: e.strName,
              onChange: (t) => {
                this.OnSettingToggled(e.strName, t);
              },
              label: e.strLabel,
              checked: !!this.state.friendSettings[e.strName],
              description: e.strDesc ? e.strDesc : "",
            });
          }
          FriendsSettingsCheckbox(e) {
            return r.createElement(a.Yh, {
              key: e.strName,
              onChange: (t) => {
                this.OnSettingToggled(e.strName, t);
              },
              checked: !!this.state.friendSettings[e.strName],
            });
          }
          FriendsSettingsCommunityPreferenceToggleRow(e) {
            return r.createElement(
              a.RF,
              {
                key: "CommunityPreference" + e.strName,
                onChange: (t) => {
                  this.OnCommunityPreferenceToggled(e.strName, t);
                },
                label: e.strLabel,
                checked: !!this.state.communityPreferences[e.strName],
                description: e.strDesc ? e.strDesc : "",
              },
              e.children,
            );
          }
          SettingLink(e) {
            return r.createElement(
              "div",
              { className: "_DialogInputContainer _DialogLayout" },
              r.createElement(
                "div",
                { className: "displayColumn alignSelfCenter" },
                r.createElement(
                  "div",
                  { className: "DialogToggle_Label" },
                  r.createElement(C.uU, { href: e.strLink }, e.strLabel),
                ),
                e.strDesc &&
                  r.createElement(
                    "div",
                    { className: "DialogToggle_Description" },
                    e.strDesc,
                  ),
                this.props.children,
              ),
            );
          }
        }
        (0, o.Cg)([c.oI], f.prototype, "OnSubmit", null),
          (0, o.Cg)([c.oI], f.prototype, "HandleRadioChange", null),
          (0, o.Cg)([c.oI], f.prototype, "OnSettingToggled", null),
          (0, o.Cg)([c.oI], f.prototype, "OnCommunityPreferenceToggled", null),
          (0, o.Cg)([c.oI], f.prototype, "FriendsSettingsToggleRow", null),
          (0, o.Cg)([c.oI], f.prototype, "FriendsSettingsCheckbox", null),
          (0, o.Cg)(
            [c.oI],
            f.prototype,
            "FriendsSettingsCommunityPreferenceToggleRow",
            null,
          ),
          (0, o.Cg)([c.oI], f.prototype, "SettingLink", null),
          (function (e) {
            (e[(e.k_EChatFontSizeSmall = 1)] = "k_EChatFontSizeSmall"),
              (e[(e.k_EChatFontSizeDefault = 2)] = "k_EChatFontSizeDefault"),
              (e[(e.k_EChatFontSizeLarge = 3)] = "k_EChatFontSizeLarge");
          })(i || (i = {}));
        class S extends r.Component {
          render() {
            let e = this.props.bParenthesizeNicknames,
              t = (0, m.we)("#FriendSettings_ExampleFriend"),
              n = (0, m.we)("#FriendSettings_ExampleNickname"),
              i = new d.Z(new p.b());
            return (
              (i.m_strPlayerName = t),
              (i.m_ePersonaState = 1),
              (i.m_strAvatarHash = d.dV),
              r.createElement(
                "div",
                { className: "friend online friendSettingsFakeFriend" },
                r.createElement(u.i8, {
                  className: "fakeFriendAvatar",
                  persona: i,
                  statusPosition: "right",
                }),
                r.createElement(h.D, {
                  className: "labelHolder",
                  persona: i,
                  eFriendRelationship: 3,
                  bIsSelf: !1,
                  strNickname: n,
                  bParenthesizeNicknames: e,
                  bCompactView: !1,
                }),
              )
            );
          }
        }
        let v = class extends f {
          constructor(e) {
            super(e);
          }
          SetChatFontSize(e) {
            this.setState({
              friendSettings: {
                ...this.state.friendSettings,
                nChatFontSize: e,
              },
            }),
              (this.m_bSettingsChanged = !0);
          }
          render() {
            let e = this.FriendsSettingsToggleRow,
              t = this.state.friendSettings.nChatFontSize;
            return r.createElement(
              a.lV,
              { className: "DialogBody", onSubmit: this.OnSubmit },
              r.createElement(
                "div",
                { className: "SettingsGroup" },
                r.createElement(e, {
                  strName: "bCompactFriendsList",
                  strLabel: (0, m.we)("#FriendSettings_CompactFriendsAndChat"),
                }),
                r.createElement(e, {
                  strName: "bCompactQuickAccess",
                  strLabel: (0, m.we)("#FriendSettings_CompactQuickAccess"),
                }),
                r.createElement(
                  a.JU,
                  { className: "friendSettingsSubheader" },
                  (0, m.we)("#FriendSettings_ChatFontSize"),
                ),
                r.createElement(
                  a.Xp,
                  { className: "FriendsSettingsChatFontSizeSection_ButtonRow" },
                  r.createElement(
                    a.$n,
                    {
                      className:
                        "smallFontSetting " +
                        (t == i.k_EChatFontSizeSmall ? "Primary" : "Off"),
                      onClick: () =>
                        this.SetChatFontSize(i.k_EChatFontSizeSmall),
                    },
                    (0, m.we)("#FriendSetting_ChatFontSmall"),
                  ),
                  r.createElement(
                    a.$n,
                    {
                      className:
                        "defaultFontSetting " +
                        (t == i.k_EChatFontSizeDefault ? "Primary" : "Off"),
                      onClick: () =>
                        this.SetChatFontSize(i.k_EChatFontSizeDefault),
                    },
                    (0, m.we)("#FriendSetting_ChatFontDefault"),
                  ),
                  r.createElement(
                    a.$n,
                    {
                      className:
                        "largeFontSetting " +
                        (t == i.k_EChatFontSizeLarge ? "Primary" : "Off"),
                      onClick: () =>
                        this.SetChatFontSize(i.k_EChatFontSizeLarge),
                    },
                    (0, m.we)("#FriendSetting_ChatFontLarge"),
                  ),
                ),
              ),
              !this.props.bSubmitImmediate &&
                r.createElement(a.CB, { onCancel: this.props.onCancel }),
            );
          }
        };
        (0, o.Cg)([c.oI], v.prototype, "SetChatFontSize", null),
          (v = (0, o.Cg)([l.PA], v));
        let b = class extends f {
          render() {
            let e = this.FriendsSettingsToggleRow,
              t = s.TS.IN_CLIENT
                ? "#FriendSettings_RememberOpenChats_DescClient"
                : "#FriendSettings_RememberOpenChats_Desc",
              n = this.SettingLink;
            return r.createElement(
              a.lV,
              { className: "DialogBody", onSubmit: this.OnSubmit },
              r.createElement(
                "div",
                { className: "SettingsGroup" },
                this.props.bShowPopupOpts &&
                  r.createElement(
                    r.Fragment,
                    null,
                    r.createElement(a.RF, {
                      onChange: (e) => _.ZM.ToggleSingleWindowMode(e),
                      label: (0, m.we)("#FriendSettings_DockChats"),
                      checked: g.xm.SettingsStore.BSingleWindowModeEnabled(),
                    }),
                    r.createElement(e, {
                      strName: "bAlwaysNewChatWindow",
                      strLabel: (0, m.we)(
                        "#FriendSettings_AlwaysNewChatWindow",
                      ),
                    }),
                  ),
                r.createElement(e, {
                  strName: "bDisableEmbedInlining",
                  strLabel: (0, m.we)("#FriendSettings_DisableEmbedInlining"),
                }),
                r.createElement(e, {
                  strName: "bRememberOpenChats",
                  strLabel: (0, m.we)("#FriendSettings_RememberOpenChats"),
                  strDesc: (0, m.we)(t),
                }),
                r.createElement(e, {
                  strName: "b24HourClock",
                  strLabel: (0, m.we)("#FriendSettings_AlwaysUse24HourClock"),
                }),
                r.createElement(e, {
                  strName: "bDisableSpellcheck",
                  strLabel: (0, m.we)("#FriendSettings_DisableSpellcheck"),
                }),
                g.xm.UIStore.show_winter_sale_ui &&
                  r.createElement(e, {
                    strName: "bDisableRoomEffects",
                    strLabel: (0, m.we)("#FriendSettings_DisableRoomEffects"),
                  }),
                r.createElement(n, {
                  strLabel: (0, m.we)("#TextFilterStatus_ChangeSettings"),
                  strLink: g.xm.ChatStore.GetTextFilterSettingsURL(),
                  strDesc: g.xm.ChatStore.GetTextFilterStatus(),
                }),
              ),
            );
          }
        };
        b = (0, o.Cg)([l.PA], b);
        let I = class extends f {
          constructor(e) {
            super(e);
          }
          render() {
            let e = this.FriendsSettingsToggleRow,
              t = this.FriendsSettingsCommunityPreferenceToggleRow;
            return r.createElement(
              a.lV,
              { className: "DialogBody", onSubmit: this.OnSubmit },
              r.createElement(
                "div",
                { className: "SettingsGroup" },
                r.createElement(
                  t,
                  {
                    strName: "bParenthesizeNicknames",
                    strLabel: (0, m.we)(
                      "#FriendSettings_ParenthesizeNicknames",
                    ),
                  },
                  r.createElement(S, {
                    bParenthesizeNicknames:
                      this.state.communityPreferences.bParenthesizeNicknames,
                  }),
                ),
                r.createElement(e, {
                  strName: "bCategorizeInGameFriendsByGame",
                  strLabel: (0, m.we)(
                    "#FriendSettings_CategorizeInGameFriendsByGame",
                  ),
                }),
                r.createElement(e, {
                  strName: "bHideOfflineFriendsInTagGroups",
                  strLabel: (0, m.we)(
                    "#FriendSettings_HideOfflineFriendsInCategories",
                  ),
                }),
                r.createElement(e, {
                  strName: "bHideCategorizedFriends",
                  strLabel: (0, m.we)("#FriendSettings_HideCategorizedFriends"),
                }),
                r.createElement(e, {
                  strName: "bForceAlphabeticFriendSorting",
                  strLabel: (0, m.we)("#FriendSettings_SortFriendsByStatus"),
                }),
                this.props.bDoNotDisturbSupported &&
                  r.createElement(e, {
                    strName: "bSignIntoFriends",
                    strLabel: (0, m.we)("#FriendSettings_SignInToFriends"),
                  }),
                r.createElement(e, {
                  strName: "bAnimatedAvatars",
                  strLabel: (0, m.we)("#FriendSettings_AnimatedAvatars"),
                }),
              ),
            );
          }
        };
        I = (0, o.Cg)([l.PA], I);
      },
      86597: (e, t, n) => {
        "use strict";
        n.d(t, { Ov: () => je, rN: () => z });
        var i = n(63696),
          o = n(41230),
          r = n(90095),
          a = n(58743),
          s = n(89021),
          l = n(97854),
          c = n(14355),
          m = n(77171),
          d = n(74002),
          u = n(91744),
          h = n.n(u),
          p = n(24803);
        function _(e) {
          const { title: t, children: n } = e;
          return i.createElement(
            "div",
            { className: h().PanelSection },
            t &&
              i.createElement(
                "div",
                { className: h().PanelSectionTitle },
                i.createElement("div", { className: h().Text }, t),
                e.spinner && i.createElement(l.y$y, null),
              ),
            n,
          );
        }
        (0, o.PA)((e) => {
          const { checked: t, onChange: n, icon: o, children: r } = e;
          return i.createElement(s.y4, {
            label: r,
            onChange: n,
            checked: t instanceof Function ? t() : t,
            padding: "compact",
            icon: o,
          });
        }),
          (0, o.PA)((e) => {
            const t = e.value;
            return i.createElement(s.d3, {
              layout: "inline",
              ...e,
              value: t instanceof Function ? t() : t,
            });
          });
        const g = (0, p.Ri)(h().PanelSectionRow);
        var C = n(72754),
          f = n(27828),
          S = n(81734),
          v = n(78919),
          b = n(52434),
          I = n(68593),
          w = n(17070),
          y = n(91466),
          E = n(10853),
          D = n(94762),
          A = n(27816),
          T = n(82924),
          M = n(25444),
          R = n(69074),
          k = n(29359),
          L = n(20788),
          G = n.n(L),
          F = n(7153),
          P = n(2377),
          B = n(79181);
        function x(e) {
          const [t, n] = i.useState(void 0),
            o = (function () {
              const e = i.useRef(new Map());
              return i.useCallback(
                (t) => (
                  e.current.has(t) || e.current.set(t, i.createRef()),
                  e.current.get(t)
                ),
                [],
              );
            })(),
            r = null != t,
            a = (e) => {
              n(e?.key);
            },
            s = (n) => {
              if (r) {
                let i;
                switch (n.detail.button) {
                  case k.pR.DIR_UP:
                    i = -1;
                    break;
                  case k.pR.DIR_DOWN:
                    i = 1;
                    break;
                  default:
                    return !1;
                }
                return (
                  ((n) => {
                    const i = e.items.find((e) => e.key == t);
                    try {
                      return (
                        null != e.onMoveRelative &&
                        null != i &&
                        e.onMoveRelative(i.index, n)
                      );
                    } catch (e) {
                      return console.error("Failed to reorder item:", e), !1;
                    }
                  })(i)
                    ? P.eZ.PlayNavSound(i > 0 ? P.PN.SliderUp : P.PN.SliderDown)
                    : P.eZ.PlayNavSound(P.PN.FailedNav),
                  !0
                );
              }
              return !1;
            },
            l = [{ name: void 0, label: void 0 }, ...(e.sections ?? [])].map(
              (n, r) => ({
                strLabel: n.label,
                key: n.label ?? r,
                rgItems: e.items
                  .filter((e) => e.sectionName == n.name)
                  .map((n, r) =>
                    i.createElement(O, {
                      key: n.key,
                      detail: n,
                      onSelect: () => a(n),
                      onDone: () => a(void 0),
                      selected: t == n.key,
                      navRef: o(n.key),
                      bottomSeparator: r < e.items.length - 1,
                      onGamepadDirection: s,
                      onReorderActionDescription: e.onReorderActionDescription,
                      onStopReorderActionDescription:
                        e.onStopReorderActionDescription,
                    }),
                  ),
              }),
            ),
            c = i.useRef();
          return (
            i.useEffect(() => {
              if (r && c.current?.BFocusWithin()) {
                const e = o(t).current;
                e && !e.BHasFocus() && e.TakeFocus();
              } else 0 == c.current?.BFocusWithin() && c.current.TakeFocus();
            }),
            i.createElement(
              R.Z,
              {
                retainFocus: !0,
                navRef: c,
                navEntryPreferPosition: r
                  ? F.iU.PREFERRED_CHILD
                  : F.iU.MAINTAIN_Y,
              },
              l.map(({ strLabel: e, key: t, rgItems: n }) =>
                0 == n.length
                  ? null
                  : i.createElement(
                      i.Fragment,
                      { key: t },
                      e && i.createElement(B.lr, null, e),
                      n,
                    ),
              ),
            )
          );
        }
        function O(e) {
          const t =
              e.onReorderActionDescription ??
              (0, d.we)("#ActionButtonLabelReorder"),
            n =
              e.onStopReorderActionDescription ??
              (0, d.we)("#ActionButtonLabelDone"),
            o = e.detail.disabled ?? !1,
            r =
              void 0 === e.detail.displayedIndex
                ? e.detail.index
                : e.detail.displayedIndex;
          return i.createElement(s.D0, {
            focusable: !o,
            icon: i.createElement(
              "div",
              { className: G().ReorderableListIconIndexCtr },
              i.createElement(
                "div",
                {
                  className: (0, m.A)(
                    G().ReorderableListIndexCtr,
                    e.selected && G().Selected,
                  ),
                },
                i.createElement(l.u49, {
                  direction: "up",
                  className: G().ReorderArrow,
                }),
                i.createElement(
                  "div",
                  {
                    className: G().ReorderableListIndex,
                    style: { backgroundColor: e.detail.indexColor },
                  },
                  r,
                ),
                i.createElement(l.u49, {
                  direction: "down",
                  className: G().ReorderArrow,
                }),
              ),
              e.detail.icon,
            ),
            label: i.createElement(
              "div",
              { className: G().ReorderableListItemLabel },
              e.detail.label,
            ),
            className: (0, m.A)(
              G().ReorderableListItem,
              e.selected && G().Selected,
              o && G().Disabled,
            ),
            disabled: o,
            highlightOnFocus: !e.selected,
            bottomSeparator:
              e.bottomSeparator && !e.selected ? "standard" : "none",
            onClick: e.detail.disabled
              ? null
              : e.selected
                ? e.onDone
                : e.onSelect,
            onCancel: e.selected ? e.onDone : void 0,
            onOKActionDescription: e.selected ? n : t,
            onCancelActionDescription: e.selected ? null : void 0,
            onOptionsButton: e.detail.onOptionsButton,
            onOptionsActionDescription: e.detail.onOptionsActionDescription,
            onSecondaryButton: e.detail.onSecondaryButton,
            onSecondaryActionDescription: e.detail.onSecondaryActionDescription,
            onGamepadDirection: e.onGamepadDirection,
            navRef: e.navRef,
            navKey: e.detail.key,
            preferredFocus: e.selected,
          });
        }
        function N(e) {
          const { closeModal: t, title: n, className: o, ...r } = e;
          return i.createElement(
            M.eV,
            { className: (0, m.A)(G().ReorderableListDialog, o), onCancel: t },
            i.createElement(
              R.Z,
              { onCancel: t },
              i.createElement(
                "div",
                { className: G().ModalHeader },
                i.createElement(s.Y9, null, n),
                i.createElement(
                  R.Z,
                  {
                    focusable: !0,
                    className: G().CloseButtonContainer,
                    onActivate: t,
                  },
                  i.createElement(l.bm, { className: G().CloseButton }),
                ),
              ),
              i.createElement(
                s.nB,
                null,
                i.createElement(s.a3, null, i.createElement(x, { ...r })),
              ),
            ),
          );
        }
        var V = n(42674),
          U = n(13419),
          H = n(50622);
        function W(e) {
          const { hostPlayer: t, bAmHost: n, rgPlayers: o } = Oe(),
            r = null != t,
            l = (0, a.TN)(),
            c = (0, i.useContext)(w.QO);
          return l
            ? i.createElement(
                i.Fragment,
                null,
                r &&
                  i.createElement(
                    _,
                    { title: (0, d.we)("#RemotePlay_Players") },
                    [t, ...o]
                      .filter((e) => e.bSession)
                      .map((e) =>
                        i.createElement(j, {
                          player: e,
                          key: `${e.playerID.steamid}_${e.playerID.guestid}`,
                          quickaccess: !0,
                        }),
                      ),
                    n &&
                      i.createElement(
                        g,
                        null,
                        i.createElement(
                          s.D0,
                          { childrenLayout: "below" },
                          i.createElement(
                            R.Z,
                            { className: C.InviteFriendGuestButtons },
                            i.createElement(
                              s.$n,
                              {
                                className: C.InlineInviteButton,
                                onClick: (e) => ot(c, (0, H.uX)(e)),
                              },
                              (0, d.we)("#RemotePlay_InviteFriend"),
                            ),
                            i.createElement(
                              s.$n,
                              {
                                className: C.InlineInviteButton,
                                onClick: () => ge(e.browserContext),
                              },
                              (0, d.we)("#RemotePlay_InviteGuest"),
                            ),
                          ),
                        ),
                      ),
                  ),
                r &&
                  i.createElement(
                    _,
                    null,
                    i.createElement(ye, null),
                    i.createElement(ne, null),
                  ),
              )
            : i.createElement(_, {
                title: (0, d.we)("#RemotePlay_NoGameRunning"),
              });
        }
        function z(e) {
          return i.createElement(
            "div",
            { className: C.QuickAccessContainer },
            i.createElement(
              "div",
              { className: C.QuickAccessTitle },
              (0, d.we)("#RemotePlayTogether_QuickAccessTitle"),
            ),
            i.createElement(
              E.MS,
              { className: C.QuickAccessScrollPanel },
              i.createElement(W, { browserContext: e.browserContext }),
            ),
          );
        }
        (0, o.PA)(function () {
          const e = a.xm.RemotePlayStore.bIsShowingPlaceholder;
          return i.createElement(
            s.Y9,
            { className: C.DialogHeader },
            (0, d.we)("#Friend_Menu_RemotePlay"),
            i.createElement(
              "div",
              {
                className: C.StreamPausedNote,
                style: e ? void 0 : { visibility: "hidden" },
              },
              (0, d.we)("#RemotePlay_StreamPaused"),
            ),
            i.createElement(
              "div",
              { className: C.HeaderActions },
              i.createElement(
                "div",
                { className: C.HeaderActionsButtons },
                i.createElement(te, null),
                i.createElement(J, null),
              ),
            ),
          );
        }),
          (0, o.PA)(function () {
            const { bAmHost: e, rgPlayers: t } = Oe();
            return i.createElement(
              ke,
              { title: (0, d.we)("#RemotePlay_Players") },
              t.map((e, t) =>
                e.bSession
                  ? i.createElement(j, {
                      player: e,
                      key: `${e.playerID.steamid}_${e.playerID.guestid}`,
                      quickaccess: !1,
                    })
                  : null,
              ),
              e && i.createElement(Ce, null),
              e && i.createElement(fe, null),
            );
          });
        const j = (0, o.PA)(function (e) {
          const { player: t } = e;
          return t.playerID.guestid && !t.friend.accountid
            ? t.bJoined
              ? i.createElement($, { ...e })
              : i.createElement(X, { ...e })
            : i.createElement(Q, { ...e });
        });
        function q(e) {
          return e.friend?.accountid
            ? e.friend.display_name
            : (0, d.we)("#RemotePlay_NumberedGuest", e.playerID.guestid);
        }
        function K(e) {
          const { bAmHost: t } = Oe(),
            n = a.xm.RemotePlayStore.GetControllerSlotsForPlayer(e.playerID),
            i = !(
              e.bKeyboardEnabled ||
              e.bMouseEnabled ||
              (e.bControllerEnabled && 0 !== n.length)
            ),
            o = e.rtJoined + 5,
            r = t && i && e.bJoined && o < Date.now() / 1e3;
          return ie(1e3 * o), r;
        }
        function Z(e, t) {
          const n = K(e);
          return e.bJoined
            ? t && n
              ? (0, d.we)("#RemotePlay_PlayerNoInputWarning_Concise")
              : void 0
            : (0, d.we)("#RemotePlay_Player_Invited");
        }
        const Q = (0, o.PA)(function (e) {
            const { player: t, quickaccess: n } = e,
              { friend: o } = t,
              { bAmHost: r } = Oe(),
              s = o.persona.avatar_url_full,
              l = o.accountid === a.xm.FriendStore.self.accountid,
              c = r && !l,
              u = r && !l && void 0 !== t.flNetworkDuration,
              h = () =>
                t.playerID.guestid
                  ? a.xm.RemotePlayStore.CancelGuestInviteAndSession(
                      t.playerID.steamid,
                      t.playerID.guestid,
                    )
                  : a.xm.RemotePlayStore.CancelInviteAndSession(o.accountid),
              p = (e) => (0, y.EP)(e, o.GetCommunityProfileURL()),
              _ = n
                ? (0, d.we)("#RemotePlay_CancelInvite")
                : (0, d.we)("#Button_Cancel"),
              g = t.bJoined ? (0, d.we)("#RemotePlay_Kick") : _,
              f = q(t),
              S = Z(t, n),
              v = re(t);
            return i.createElement(Pe, {
              quickaccess: n,
              icon: i.createElement(Ie, {
                src: s,
                onClick: n ? void 0 : p,
                className: C.PersonaAvatar,
              }),
              statusIcon:
                u &&
                i.createElement(
                  "div",
                  {
                    title: (0, d.we)("#Tooltip_RemotePlay_ConnectionQuality"),
                    style: { display: "flex" },
                  },
                  i.createElement(Ze, {
                    className: (0, m.A)(C.PlayerBitRate, n && C.QuickAccess),
                    quality: Qe(t.flNetworkDuration),
                  }),
                ),
              title: i.createElement(
                "div",
                { className: C.PersonaName },
                i.createElement(
                  "span",
                  { onClick: n ? void 0 : p, className: C.PersonaNameName },
                  f,
                ),
                t.bMobile && i.createElement(Ke, null),
              ),
              volumeControls: i.createElement(he, { player: t }),
              statusText: S,
              desktopButtons: c && i.createElement(xe, { onClick: h }, g),
              onSecondaryButton: c ? h : void 0,
              onSecondaryActionDescription: c ? g : void 0,
              playerControls:
                (!n || l || t.bJoined) &&
                i.createElement(ae, { player: t, quickaccess: n }),
              contextMenu: i.createElement(
                A.tz,
                { label: f },
                i.createElement(
                  A.kt,
                  { onSelected: p },
                  (0, d.we)("#RemotePlay_ShowProfile"),
                ),
                c && i.createElement(A.kt, { onSelected: h }, g),
                v.length > 0 && i.createElement(A.K5, null),
                v,
              ),
            });
          }),
          $ = (0, o.PA)(function (e) {
            const { player: t, quickaccess: n } = e,
              { bAmHost: o } = Oe(),
              r = (0, b.tp)(t.strAvatarHash, "full"),
              s = o,
              l = o && void 0 !== t.flNetworkDuration,
              c = () =>
                a.xm.RemotePlayStore.CancelGuestInviteAndSession(
                  t.playerID.steamid,
                  t.playerID.guestid,
                ),
              m = q(t),
              u = i.createElement(
                "div",
                { className: C.GuestTitle },
                m,
                t.bMobile && i.createElement(Ke, null),
              ),
              h = Z(t, n),
              p = re(t);
            return i.createElement(Pe, {
              quickaccess: n,
              icon: i.createElement(Ie, { src: r }),
              statusIcon:
                l &&
                i.createElement(
                  "div",
                  {
                    title: n
                      ? void 0
                      : (0, d.we)("#Tooltip_RemotePlay_ConnectionQuality"),
                    style: { display: "flex" },
                  },
                  i.createElement(Ze, {
                    className: C.PlayerBitRate,
                    quality: Qe(t.flNetworkDuration),
                  }),
                ),
              statusText: h,
              title: u,
              desktopButtons:
                s &&
                i.createElement(
                  xe,
                  { onClick: c },
                  (0, d.we)("#RemotePlay_Kick"),
                ),
              onSecondaryButton: s ? c : void 0,
              onSecondaryActionDescription: (0, d.we)("#RemotePlay_Kick"),
              playerControls:
                (!n || t.bJoined) &&
                i.createElement(ae, { player: t, quickaccess: n }),
              contextMenu:
                (s || p.length > 0) &&
                i.createElement(
                  A.tz,
                  { label: m },
                  s &&
                    i.createElement(
                      A.kt,
                      { onSelected: c },
                      (0, d.we)("#RemotePlay_Kick"),
                    ),
                  p.length > 0 && i.createElement(A.K5, null),
                  p,
                ),
            });
          }),
          X = (0, o.PA)(function (e) {
            const { player: t, quickaccess: n } = e,
              [o, r] = Ne(),
              s = () => {
                a.xm.RemotePlayStore.CopyLink(t.playerID.guestid), r();
              },
              c = () => {
                a.xm.RemotePlayStore.CancelGuestInviteAndSession(
                  t.playerID.steamid,
                  t.playerID.guestid,
                );
              },
              m = q(t);
            return i.createElement(Pe, {
              quickaccess: n,
              icon: n ? i.createElement(l.KJW, null) : i.createElement(Y, null),
              title: m,
              clipboardStatus: (0, d.we)(
                o
                  ? "#RemotePlay_Guest_CopyHint_Copied"
                  : "#RemotePlay_Guest_CopyHint",
              ),
              desktopButtons: i.createElement(
                xe,
                {
                  onClick: (e) => {
                    e.stopPropagation(), c();
                  },
                },
                (0, d.we)("#Button_Cancel"),
              ),
              className: C.InvitedGuestBox,
              onClick: s,
              onClickDescription: (0, d.we)("#RemotePlay_LinkCopy_Button"),
              contextMenu: i.createElement(
                A.tz,
                { label: m },
                i.createElement(
                  A.kt,
                  { onSelected: s },
                  (0, d.we)("#RemotePlay_LinkCopy_Button"),
                ),
                i.createElement(
                  A.kt,
                  { onSelected: c },
                  (0, d.we)("#RemotePlay_CancelInvite"),
                ),
              ),
              connectURL: t.strConnectUrl,
            });
          });
        function Y() {
          return i.createElement(
            be,
            { label: (0, d.we)("#RemotePlay_CopyLink_ButtonText") },
            i.createElement(ze, { color: "white" }),
          );
        }
        const J = (e) => {
          const { bAmHost: t } = Oe();
          return t
            ? null
            : i.createElement(
                xe,
                {
                  style: "dark",
                  onClick: () => a.xm.RemotePlayStore.StopRemotePlay(),
                  className: C.HeaderButton,
                },
                (0, d.we)("#RemotePlay_LeaveStream"),
              );
        };
        function ee(e) {
          switch (e) {
            case 3:
              return (0, d.we)("#RemotePlay_ClientQualityName_Beautiful");
            case 2:
              return (0, d.we)("#RemotePlay_ClientQualityName_Balanced");
            case 1:
              return (0, d.we)("#RemotePlay_ClientQualityName_Fast");
            default:
              return (0, d.we)("#RemotePlay_ClientQualityName_Automatic");
          }
        }
        const te = (0, o.PA)(function () {
            const e = a.xm.RemotePlayStore.client_streaming_quality,
              t = (0, d.we)("#RemotePlay_ClientQuality_WithValue", ee(e)),
              n = a.xm.RemotePlayStore.GetSessionForPlayer({
                steamid: a.xm.FriendStore.self.steamid64,
                guestid: 0,
              }),
              o = n && void 0 !== n.flNetworkDuration,
              { hostPlayer: r } = Oe();
            return r
              ? i.createElement(
                  "div",
                  { className: C.ClientQualityContainer },
                  o &&
                    i.createElement(Ze, {
                      className: C.HeaderBitrate,
                      quality: Qe(n.flNetworkDuration),
                    }),
                  i.createElement(
                    xe,
                    {
                      onClick: () => {
                        let e = a.xm.RemotePlayStore.client_streaming_quality;
                        (e += 1),
                          0 == e && (e = 1),
                          e > 3 && (e = a.xm.RemotePlayStore.is_host ? -1 : 1),
                          a.xm.RemotePlayStore.SetClientStreamingQuality(e);
                      },
                      style: "dark",
                      className: C.HeaderButton,
                    },
                    t,
                  ),
                )
              : null;
          }),
          ne = (0, o.PA)(function (e) {
            const t = a.xm.RemotePlayStore.client_streaming_quality,
              { bAmHost: n } = Oe(),
              o = [
                { data: 1, label: ee(1) },
                { data: 2, label: ee(2) },
                { data: 3, label: ee(3) },
              ];
            n && o.unshift({ data: -1, label: ee(-1) });
            const r = a.xm.RemotePlayStore.GetSessionForPlayer({
                steamid: a.xm.FriendStore.self.steamid64,
                guestid: 0,
              }),
              l = r && void 0 !== r.flNetworkDuration,
              c = a.xm.RemotePlayStore.host_streaming_quality_override,
              m = !n && -1 != c,
              u =
                a.xm.RemotePlayStore.in_session &&
                a.xm.RemotePlayStore.BHasJoinedPlayer() &&
                !m;
            return i.createElement(
              g,
              null,
              i.createElement(
                s.D0,
                {
                  label: (0, d.we)("#RemotePlay_ClientQuality"),
                  icon:
                    l &&
                    i.createElement(Ze, {
                      className: C.HeaderBitrate,
                      quality: Qe(r.flNetworkDuration),
                    }),
                  childrenLayout: "inline",
                  bottomSeparator: e.bottomSeparator,
                  description: m
                    ? (0, d.we)("#RemotePlay_ClientQuality_HostOverride")
                    : void 0,
                },
                i.createElement(s.ZU, {
                  rgOptions: o,
                  selectedOption: m ? c : t,
                  onChange: (e) => {
                    a.xm.RemotePlayStore.SetClientStreamingQuality(e.data);
                  },
                  disabled: !u,
                }),
              ),
            );
          });
        function ie(e) {
          const [t, n] = (0, i.useState)(0),
            o = () => n((e) => e + 1);
          (0, i.useEffect)(() => {
            const t = Date.now();
            if (t < e) {
              const n = window.setTimeout(o, e - t);
              return () => window.clearTimeout(n);
            }
            return () => {};
          }, [e]);
        }
        function oe(e) {
          const { bAmHost: t } = Oe(),
            n = e.playerID.steamid === a.xm.FriendStore.self.steamid64,
            o = t && !n,
            r = e.playerID.steamid === a.xm.FriendStore.self.steamid64,
            s = a.xm.RemotePlayStore.GetControllerSlotsForPlayer(e.playerID);
          return {
            fnToggleKeyboard: i.useCallback(() => {
              o &&
                a.xm.RemotePlayStore.SetPerUserKeyboardInputEnabled(
                  e.playerID,
                  !e.bKeyboardEnabled,
                );
            }, [o, e]),
            fnToggleMouse: i.useCallback(() => {
              o &&
                a.xm.RemotePlayStore.SetPerUserMouseInputEnabled(
                  e.playerID,
                  !e.bMouseEnabled,
                );
            }, [o, e]),
            fnTogglePlayersControllers: i.useCallback(() => {
              o &&
                (s.forEach((e) =>
                  a.xm.RemotePlayStore.TriggerControllerRumble(e),
                ),
                a.xm.RemotePlayStore.SetPerUserControllerInputEnabled(
                  e.playerID,
                  !e.bControllerEnabled,
                ));
            }, [o, e.bControllerEnabled, e.playerID, s]),
            fnIdentifyController: i.useCallback(
              (e) => {
                r && a.xm.RemotePlayStore.TriggerControllerRumble(e);
              },
              [r],
            ),
          };
        }
        function re(e) {
          const {
              fnToggleKeyboard: t,
              fnToggleMouse: n,
              fnTogglePlayersControllers: o,
            } = oe(e),
            { bAmHost: r } = Oe(),
            s = e.friend?.accountid === a.xm.FriendStore.self.accountid;
          if (!r || s || !e.bJoined) return [];
          const l = [];
          return (
            null != t &&
              l.push(
                i.createElement(
                  A.kt,
                  { key: "kb", onSelected: t },
                  e.bKeyboardEnabled
                    ? (0, d.we)("#Tooltip_RemotePlay_DisableKeyboard")
                    : (0, d.we)("#Tooltip_RemotePlay_EnableKeyboard"),
                ),
              ),
            null != n &&
              l.push(
                i.createElement(
                  A.kt,
                  { key: "mouse", onSelected: n },
                  e.bMouseEnabled
                    ? (0, d.we)("#Tooltip_RemotePlay_DisableMouse")
                    : (0, d.we)("#Tooltip_RemotePlay_EnableMouse"),
                ),
              ),
            null != o &&
              l.push(
                i.createElement(
                  A.kt,
                  { key: "controllers", onSelected: o },
                  e.bControllerEnabled
                    ? (0, d.we)(
                        "#Tooltip_RemotePlay_DisableControllers_Standalone",
                      )
                    : (0, d.we)(
                        "#Tooltip_RemotePlay_EnableControllers_Standalone",
                      ),
                ),
              ),
            l
          );
        }
        const ae = (0, o.PA)(function (e) {
          const { player: t, quickaccess: n } = e,
            {
              fnToggleKeyboard: o,
              fnToggleMouse: r,
              fnTogglePlayersControllers: s,
              fnIdentifyController: c,
            } = oe(t),
            u = K(t),
            h = a.xm.RemotePlayStore.GetControllerSlotsForPlayer(t.playerID),
            p = s ?? c;
          return i.createElement(
            "div",
            {
              className: (0, m.A)(
                n && C.QuickAccessPlayerControlsContainer,
                C.PlayerControlsContainer,
              ),
            },
            i.createElement(
              "div",
              { className: C.PlayerControls },
              i.createElement(ue, {
                enabled: t.bKeyboardEnabled,
                onClick: o,
                icon: n ? l.s3S : He,
                title: n ? void 0 : le(t.bKeyboardEnabled, null != o),
                lastUsedTime: t.nKeyboardUsedTime,
                quickaccess: n,
                className: C.Keyboard,
              }),
              i.createElement(ue, {
                enabled: t.bMouseEnabled,
                onClick: r,
                icon: n ? l.KKH : Ue,
                title: n ? void 0 : se(t.bMouseEnabled, null != r),
                lastUsedTime: t.nMouseUsedTime,
                quickaccess: n,
                className: C.Mouse,
              }),
              h.map((e, o) =>
                i.createElement(de, {
                  key: `${e}_${o}`,
                  enabled: t.bControllerEnabled,
                  onClick: () => p(e),
                  slot: e,
                  title: n ? void 0 : ce(t.bControllerEnabled, null != s),
                  interactable: null != p,
                  lastUsedTime: t.nControllerUsedTime,
                  quickaccess: n,
                }),
              ),
              u &&
                !n &&
                i.createElement(
                  "div",
                  {
                    className: C.NoInputWarning,
                    title: (0, d.we)("#RemotePlay_PlayerNoInputWarning"),
                  },
                  i.createElement(qe, { className: C.WarningIcon }),
                ),
            ),
          );
        });
        function se(e, t) {
          return t
            ? e
              ? (0, d.we)("#Tooltip_RemotePlay_DisableMouse")
              : (0, d.we)("#Tooltip_RemotePlay_EnableMouse")
            : e
              ? (0, d.we)("#Tooltip_RemotePlay_MouseEnabled")
              : (0, d.we)("#Tooltip_RemotePlay_MouseDisabled");
        }
        function le(e, t) {
          return t
            ? e
              ? (0, d.we)("#Tooltip_RemotePlay_DisableKeyboard")
              : (0, d.we)("#Tooltip_RemotePlay_EnableKeyboard")
            : e
              ? (0, d.we)("#Tooltip_RemotePlay_KeyboardEnabled")
              : (0, d.we)("#Tooltip_RemotePlay_KeyboardDisabled");
        }
        function ce(e, t) {
          return t
            ? e
              ? (0, d.we)("#Tooltip_RemotePlay_DisableControllers")
              : (0, d.we)("#Tooltip_RemotePlay_EnableControllers")
            : e
              ? (0, d.we)("#Tooltip_RemotePlay_ControllersEnabled")
              : (0, d.we)("#Tooltip_RemotePlay_ControllersDisabled");
        }
        function me(e) {
          const { controllerType: t, mobile: n, className: o } = e;
          return n
            ? i.createElement(l.fqd, { className: o })
            : i.createElement(l.pcV, { controllerType: t, className: o });
        }
        function de(e) {
          const {
              slot: t,
              enabled: n,
              onClick: o,
              title: r,
              interactable: s,
              lastUsedTime: c,
              quickaccess: d,
            } = e,
            u = t < a.xm.RemotePlayStore.priority_controller_slot_count,
            h = c + 1e3,
            p = h > Date.now();
          ie(h);
          const _ = Te(t),
            { bAmHost: g } = Oe(),
            f = !d && g,
            S = (0, T.vJ)(
              () => a.xm.RemotePlayStore.GetControllerType(t),
              [t],
              0,
            ),
            v = i.createElement(
              "div",
              {
                className: (0, m.A)(
                  C.PlayerController,
                  d && C.QuickAccessPlayerController,
                  n && C.Enabled,
                  !d && s && C.InteractableController,
                  f && C.Grabbable,
                ),
                onClick: o,
                title: d ? void 0 : r,
              },
              i.createElement(
                "div",
                {
                  className: (0, m.A)(C.PlayerControllerNumber, !u && C.Hidden),
                  style: { backgroundColor: Xe(t) },
                },
                t + 1,
              ),
              i.createElement(l.pcV, {
                className: (0, m.A)(C.PlayerControllerIcon, p && C.Wiggle),
                controllerType: S,
              }),
            );
          return !g || d ? v : i.createElement(I.T, { ..._ }, v);
        }
        function ue(e) {
          const {
              enabled: t,
              onClick: n,
              icon: o,
              title: r,
              lastUsedTime: a,
              className: s,
              quickaccess: l,
            } = e,
            c = a + 1e3,
            d = c > Date.now();
          ie(c);
          const u = o,
            h = i.createElement(u, {
              className: (0, m.A)(
                C.PlayerControl,
                l && C.QuickAccess,
                t ? C.ControlEnabled : C.ControlDisabled,
                d && C.Wiggle,
              ),
            }),
            p = !l && null != n;
          return i.createElement(
            "div",
            {
              onClick: p ? n : void 0,
              className: (0, m.A)(
                s,
                p && C.InteractableControl,
                l && C.QuickAccessControlIcon,
              ),
              title: l ? void 0 : r,
            },
            h,
          );
        }
        const he = (0, o.PA)(function (e) {
            return e.player.playerID.steamid === a.xm.FriendStore.self.steamid64
              ? i.createElement(_e, { ...e })
              : i.createElement(pe, { ...e });
          }),
          pe = (0, o.PA)(function (e) {
            const { player: t } = e,
              n = t?.friend?.accountid;
            if (
              !a.xm.VoiceStore.IsAnyVoiceActive() ||
              !n ||
              !a.xm.VoiceStore.IsVoiceActiveForFriend(n)
            )
              return null;
            let o = a.xm.VoiceStore.ConvertGainValueToSliderValue(
              a.xm.VoiceStore.GetPerUserGainLevel(n),
              f.F$.k_MaxPerUserGainMultiplier,
            );
            a.xm.VoiceStore.GetPerUserMuting(n);
            return i.createElement(Ve, {
              min: 0,
              max: 100,
              onChange: (e) =>
                a.xm.VoiceStore.SetPerUserGainLevel(
                  n,
                  a.xm.VoiceStore.ConvertSliderToGainValue(
                    e,
                    f.F$.k_MaxPerUserGainMultiplier,
                  ),
                ),
              value: o,
              icon: We,
              onIconClick: () =>
                a.xm.VoiceStore.SetPerUserMuting(
                  n,
                  !a.xm.VoiceStore.GetPerUserMuting(n),
                ),
            });
          }),
          _e = (0, o.PA)(function (e) {
            if (!a.xm.VoiceStore.IsAnyVoiceActive()) return null;
            return i.createElement(Ve, {
              min: 0,
              max: 100,
              onChange: (e) =>
                a.xm.VoiceStore.SetVoiceInputGain(
                  a.xm.VoiceStore.ConvertSliderToGainValue(
                    e,
                    f.F$.k_MaxInputOutputGainValue,
                  ),
                ),
              value: a.xm.VoiceStore.ConvertGainValueToSliderValue(
                a.xm.VoiceStore.GetVoiceInputGain(),
                f.F$.k_MaxInputOutputGainValue,
              ),
              icon: ({ className: e }) =>
                i.createElement(S.tmR, {
                  className: (0, m.A)(e, C.MicFillOverride),
                }),
              onIconClick: () => {
                a.xm.VoiceStore.IsMicMuted() &&
                  a.xm.VoiceStore.IsOutputMuted() &&
                  a.xm.VoiceStore.ToggleOutputMuting(),
                  a.xm.VoiceStore.ToggleMicMuting();
              },
            });
          });
        async function ge(e) {
          try {
            return a.xm.RemotePlayStore.CreateGuestInviteAndSession(
              a.xm.FriendStore.self.persona.m_gameid,
              e,
            );
          } catch (e) {
            throw (
              (console.error(
                `RemotePlayStore.CreateGuestInviteAndCopyLink caught: ${e}`,
              ),
              e)
            );
          }
        }
        function Ce(e) {
          const t = (0, i.useContext)(w.QO);
          return i.createElement(Pe, {
            quickaccess: !1,
            icon: i.createElement(Se, null),
            title: (0, d.we)("#RemotePlay_InviteFriend_Verbose"),
            description: (0, d.we)("#RemotePlay_InviteFriend_ShortDescription"),
            className: C.AddGuestBox,
            onClick: (e) => ot(t, (0, H.uX)(e)),
          });
        }
        function fe(e) {
          return i.createElement(Pe, {
            quickaccess: !1,
            icon: i.createElement(ve, null),
            title: (0, d.we)("#RemotePlay_InviteGuest_Verbose"),
            description: (0, d.we)("#RemotePlay_LinkCopy_ShortDescription"),
            className: C.AddGuestBox,
            onClick: (e) => ge((0, v.CO)(e)),
          });
        }
        function Se() {
          return i.createElement(
            be,
            { label: (0, d.we)("#RemotePlay_AddGuest_ButtonText") },
            i.createElement(
              "svg",
              { width: "19", height: "19", viewBox: "0 0 19 19" },
              i.createElement("path", {
                d: "M15.9747 12.5368H12.5368V15.9976C12.5368 17.6707 11.1846 19.0229 9.51146 19.0229C7.83836 19.0229 6.48613 17.6707 6.48613 15.9976V12.5368H3.02533C1.35223 12.5368 0 11.1846 0 9.51146C0 7.83836 1.35223 6.48613 3.02533 6.48613H6.48613V3.02533C6.48613 1.35223 7.83836 0 9.51146 0C11.1846 0 12.5368 1.35223 12.5368 3.02533V6.48613H15.9976C17.6707 6.48613 19.0229 7.83836 19.0229 9.51146C19 11.1846 17.6478 12.5368 15.9747 12.5368Z",
                fill: "#F9FDFF",
              }),
            ),
          );
        }
        function ve() {
          return i.createElement(
            be,
            { label: (0, d.we)("#RemotePlay_AddGuest_ButtonText") },
            i.createElement(ze, { color: "white" }),
          );
        }
        function be(e) {
          const { onClick: t, children: n, label: o } = e,
            [r, a] = Ne();
          return i.createElement(
            "div",
            {
              className: C.MediaButton,
              onClick: () => {
                a(), t && t();
              },
            },
            i.createElement(
              "div",
              {
                className: (0, m.A)(C.ButtonContent, r && C.RecentlyInteracted),
              },
              n,
              i.createElement("div", { className: C.MediaButtonLabel }, o),
            ),
          );
        }
        function Ie(e) {
          const { className: t, ...n } = e;
          return i.createElement("img", {
            className: (0, m.A)(C.MediaImage, t),
            ...n,
          });
        }
        (0, o.PA)(function (e) {
          return i.createElement(
            s.wi,
            { className: C.Footer },
            i.createElement(
              ke,
              {
                title: (0, d.we)("#RemotePlay_GameSettings"),
                className: C.NoMarginTop,
              },
              i.createElement(
                Be,
                { className: C.GameSettingsBox },
                i.createElement(we, null),
                e.showVolume && i.createElement(Re, null),
              ),
            ),
          );
        });
        const we = (0, o.PA)(function () {
            const { bAmHost: e, hostPlayer: t } = Oe(),
              n = [];
            for (
              let e = 0;
              e < a.xm.RemotePlayStore.priority_controller_slot_count;
              e++
            ) {
              const o = Ye(e, t);
              n.push(i.createElement(Ee, { index: e, key: e, player: o }));
            }
            return i.createElement(
              "div",
              { className: C.ControllerDropSlotsContainer },
              i.createElement(
                "div",
                { className: C.ControllerDropSlots },
                n,
                e &&
                  i.createElement(
                    "div",
                    {
                      className: C.HowToHint,
                      title: (0, d.we)(
                        "#Tooltip_RemotePlayControllerAssignments",
                      ),
                    },
                    "?",
                  ),
              ),
              e && i.createElement(Ae, null),
            );
          }),
          ye = (0, o.PA)(function () {
            const { bAmHost: e, hostPlayer: t } = Oe(),
              n = [];
            for (
              let e = 0;
              e < a.xm.RemotePlayStore.priority_controller_slot_count;
              e++
            ) {
              const o = Ye(e, t);
              n.push(i.createElement(De, { index: e, key: e, player: o }));
            }
            const o = (0, i.useContext)(w.QO);
            return i.createElement(
              g,
              null,
              i.createElement(
                s.D0,
                {
                  label: (0, d.we)("#RemotePlay_Controllers"),
                  childrenLayout: "below",
                  focusable: e,
                  onClick: e
                    ? (e) =>
                        (function (e, t) {
                          const n = i.createElement(
                            nt,
                            { configContext: e },
                            (e) => i.createElement(tt, { closeModal: e }),
                          );
                          (0, c.pg)(n, t);
                        })(o, (0, H.uX)(e))
                    : void 0,
                  onOKActionDescription: e
                    ? (0, d.we)("#RemotePlay_ChangeControllerOrder")
                    : null,
                },
                i.createElement(
                  "div",
                  { className: C.QuickAccessControllerOrderContainer },
                  n.map((e, t) =>
                    i.createElement(
                      i.Fragment,
                      { key: t },
                      t > 0 && i.createElement("div", { className: C.Divider }),
                      e,
                    ),
                  ),
                ),
              ),
            );
          }),
          Ee = (0, o.PA)(function ({ index: e, player: t }) {
            const n = !!t;
            let o;
            if (n) {
              const e = t.friend.accountid
                ? t.friend.display_name
                : (0, d.we)("#RemotePlay_NumberedGuest", t.playerID.guestid);
              o = (0, d.we)("#Tooltip_RemotePlayOtherController", e);
            }
            const { bDragHovered: r, dropTargetProps: s } = (function (e, t) {
                const [n, o] = (0, i.useState)(!1),
                  r = Te(e);
                return {
                  bDragHovered: n,
                  dropTargetProps: {
                    ...(t ? r : {}),
                    rgAcceptedTypes: ["rptcontroller"],
                    fnDrop: (t) => {
                      o(!1),
                        Me(t) &&
                          t.controllerID !== e &&
                          (a.xm.RemotePlayStore.SwapControllerSlots(
                            t.controllerID,
                            e,
                          ),
                          v.ZM.DragDropManager.SetDropConsumed());
                    },
                    fnDragEnter: (t) =>
                      Me(t)
                        ? (t.controllerID !== e && o(!0), !0)
                        : (console.error(
                            "Drag event received invalid data type.",
                          ),
                          !1),
                    fnDragLeave: () => {
                      o(!1);
                    },
                  },
                };
              })(e, n),
              { bAmHost: l } = Oe(),
              c = (0, m.A)(C.ControllerDropSlot, {
                [C.WithMargin]: e > 0,
                [C.DragHovered]: r,
                [C.CanGrab]: l && n,
                [C.Interactable]: l && n,
              }),
              u = (0, T.vJ)(
                () => a.xm.RemotePlayStore.GetControllerType(e),
                [e, t],
                0,
              ),
              h = i.createElement(
                "div",
                {
                  className: c,
                  title: o,
                  onClick: () => {
                    t &&
                      (t.playerID.steamid === a.xm.FriendStore.self.steamid64 ||
                        l) &&
                      a.xm.RemotePlayStore.TriggerControllerRumble(e);
                  },
                },
                i.createElement(me, {
                  controllerType: u,
                  mobile: t?.bMobile,
                  className: (0, m.A)(C.Controller, n && C.SlotFilled),
                }),
                i.createElement(
                  "div",
                  {
                    className: C.DropSlotNumber,
                    style: { backgroundColor: Xe(e) },
                  },
                  e + 1,
                ),
              );
            return l ? i.createElement(I.T, { ...s }, h) : h;
          }),
          De = (0, o.PA)(function (e) {
            const { index: t, player: n } = e,
              o = !!n,
              r = (0, T.vJ)(
                () => a.xm.RemotePlayStore.GetControllerType(t),
                [t, n],
                0,
              );
            return i.createElement(
              "div",
              {
                className: (0, m.A)(
                  C.QuickAccessControllerOrderSlot,
                  o && C.SlotFilled,
                ),
              },
              i.createElement(
                "div",
                {
                  className: C.DropSlotNumber,
                  style: { backgroundColor: Xe(t) },
                },
                t + 1,
              ),
              o &&
                i.createElement(me, {
                  controllerType: r,
                  mobile: n?.bMobile,
                  className: (0, m.A)(C.Controller, o && C.SlotFilled),
                }),
              !o && i.createElement(l.PqC, { none: !0 }),
            );
          }),
          Ae = (0, o.PA)(function () {
            const { bDragHovered: e, dropTargetProps: t } = (function () {
              const [e, t] = (0, i.useState)(!1);
              return {
                bDragHovered: e,
                dropTargetProps: {
                  rgAcceptedTypes: ["rptcontroller"],
                  fnDrop: (e) => {
                    t(!1),
                      Me(e) &&
                        e.controllerID <
                          a.xm.RemotePlayStore.priority_controller_slot_count &&
                        (a.xm.RemotePlayStore.RemoveControllerFromPrioritySlot(
                          e.controllerID,
                        ),
                        v.ZM.DragDropManager.SetDropConsumed());
                  },
                  fnDragEnter: (e) =>
                    Me(e)
                      ? (e.controllerID <
                          a.xm.RemotePlayStore.priority_controller_slot_count &&
                          t(!0),
                        !0)
                      : (console.error(
                          "Drag event received invalid data type.",
                        ),
                        !1),
                  fnDragLeave: () => {
                    t(!1);
                  },
                },
              };
            })();
            return i.createElement(
              I.T,
              { ...t },
              i.createElement(
                "div",
                {
                  className: (0, m.A)(
                    C.ControllerClearDropSlot,
                    e && C.DragHovered,
                  ),
                },
                i.createElement(S.X, { className: C.ClearDropSlotIcon }),
              ),
            );
          });
        function Te(e) {
          (0, i.useRef)();
          return {
            rgAcceptedTypes: [],
            onDragStart: (t) => {
              v.ZM.DragDropManager.StartDrag({
                type: "rptcontroller",
                controllerID: e,
              }),
                t.dataTransfer.setDragImage(t.currentTarget, 0, 0);
            },
            onDragEnd: () => {
              v.ZM.DragDropManager.EndDrag();
            },
            draggable: !0,
          };
        }
        function Me(e) {
          return e && "rptcontroller" === e.type;
        }
        const Re = (0, o.PA)(function () {
            return i.createElement(Ve, {
              min: 0,
              max: 100,
              onChange: (e) => a.xm.RemotePlayStore.SetGameVolume(e),
              value: a.xm.RemotePlayStore.game_volume,
              icon: We,
              title: (0, d.we)("#RemotePlay_GameMasterVolume"),
            });
          }),
          ke =
            ((0, o.PA)(function () {
              const e = a.xm.RemotePlayStore.game_volume;
              return i.createElement(
                g,
                null,
                i.createElement(s.d3, {
                  min: 0,
                  max: 100,
                  onChange: (e) => a.xm.RemotePlayStore.SetGameVolume(e),
                  value: a.xm.RemotePlayStore.game_volume,
                  icon: i.createElement(l.sUt, { flVolume: e / 100 }),
                  label: (0, d.we)("#RemotePlay_GameMasterVolume"),
                  layout: "inline",
                }),
              );
            }),
            (e) => {
              const { title: t, children: n, className: o } = e;
              return i.createElement(
                "div",
                { className: (0, m.A)(C.Section, o) },
                i.createElement(Le, null, t),
                i.Children.map(n, (e, t) =>
                  i.createElement(
                    "div",
                    { className: t > 0 ? C.SectionItemMargin : void 0 },
                    e,
                  ),
                ),
              );
            }),
          Le = (e) =>
            i.createElement("div", { className: C.SectionTitle, ...e }),
          Ge = (e) => {
            const {
                title: t,
                description: n,
                statusText: o,
                statusIcon: r,
                clipboardStatus: a,
                contextMenu: l,
                onClick: c,
                onClickDescription: u,
                onSecondaryButton: h,
                onSecondaryActionDescription: p,
                icon: _,
                connectURL: f,
                playerControls: S,
              } = e,
              v = (e) => {
                l && (0, D.lX)(l, e);
              };
            return i.createElement(
              g,
              null,
              i.createElement(
                s.D0,
                {
                  label: i.createElement(
                    "div",
                    {
                      className: (0, m.A)(
                        C.QuickAccessMediaBoxTitleRow,
                        a && C.Wrap,
                      ),
                    },
                    i.createElement(
                      "div",
                      { className: C.QuickAccessMediaBoxTitle },
                      t,
                    ),
                    r && i.createElement("div", null, r),
                    a &&
                      i.createElement(
                        "div",
                        { className: C.QuickAccessClipboardStatus },
                        a,
                      ),
                  ),
                  description: n,
                  icon: i.createElement(
                    "div",
                    { className: C.QuickAccessIconContainer },
                    _,
                  ),
                  focusable: !0,
                  onClick: v,
                  onOKActionDescription: l
                    ? (0, d.we)("#RemotePlay_Options")
                    : null,
                  onContextMenu: v,
                  onMenuButton: v,
                  childrenLayout: "inline",
                  verticalAlignment: "top",
                  onSecondaryButton: h,
                  onSecondaryActionDescription: p,
                  onOptionsButton: c,
                  onOptionsActionDescription: u,
                },
                i.createElement(
                  "div",
                  { className: C.QuickAccessMediaBoxChildrenContainer },
                  S &&
                    i.createElement(
                      "div",
                      { className: C.QuickAccessPlayerControlsContainer },
                      S,
                    ),
                  f &&
                    i.createElement(
                      "div",
                      { className: C.QuickAccessConnectURL },
                      f,
                    ),
                  o &&
                    i.createElement(
                      "div",
                      { className: C.QuickAccessStatusText },
                      o,
                    ),
                ),
              ),
            );
          },
          Fe = (e) => {
            const {
              title: t,
              description: n,
              statusText: o,
              desktopButtons: r,
              icon: a,
              clipboardStatus: s,
              statusIcon: l,
              connectURL: c,
              className: d,
              onClick: u,
              contextMenu: h,
              volumeControls: p,
              playerControls: _,
            } = e;
            return i.createElement(
              Be,
              {
                className: (0, m.A)(C.MediaBox, d),
                onClick: u,
                interactable: null != u,
                onContextMenu: (e) => {
                  i.Children.count(h) > 0 && (0, D.lX)(h, e);
                },
              },
              i.createElement("div", { className: C.Media }, a),
              i.createElement(
                "div",
                { className: C.Content },
                i.createElement(
                  "div",
                  { className: C.Top },
                  i.createElement(
                    "div",
                    { className: C.MediaBoxTitle },
                    i.createElement("div", { className: C.TitleText }, t),
                    o &&
                      i.createElement(
                        i.Fragment,
                        null,
                        i.createElement("div", {
                          className: C.TitleStatusDivider,
                        }),
                        i.createElement("div", { className: C.TitleStatus }, o),
                      ),
                    s &&
                      i.createElement(
                        i.Fragment,
                        null,
                        i.createElement("div", {
                          className: C.TitleStatusDivider,
                        }),
                        i.createElement("div", { className: C.TitleStatus }, s),
                      ),
                  ),
                  i.createElement("div", { className: C.DesktopButtons }, l, r),
                ),
                i.createElement(
                  "div",
                  { className: C.Bottom },
                  n &&
                    i.createElement(
                      "div",
                      { className: C.MediaBoxDescription },
                      n,
                    ),
                  _ &&
                    i.createElement(
                      "div",
                      { className: C.MediaBoxPlayerControls },
                      _,
                    ),
                  p &&
                    i.createElement(
                      "div",
                      { className: C.MediaBoxVolumeControls },
                      p,
                    ),
                  c &&
                    i.createElement(
                      "div",
                      {
                        className: C.LinkContainer,
                        onClick: (e) => e.stopPropagation(),
                      },
                      c,
                    ),
                ),
              ),
            );
          },
          Pe = (e) => {
            const { quickaccess: t, ...n } = e;
            return t
              ? i.createElement(Ge, { ...n })
              : i.createElement(Fe, { ...n });
          },
          Be = ({ className: e, interactable: t, ...n }) =>
            i.createElement("div", {
              className: (0, m.A)(e, C.ContentBox, t && C.Interactable),
              ...n,
            });
        function xe(e) {
          const {
            children: t,
            className: n,
            onClick: o,
            style: r = "light",
          } = e;
          return i.createElement(
            "div",
            {
              className: (0, m.A)(
                C.BoxButton,
                "light" === r ? C.Light : C.Dark,
                n,
              ),
              onClick: o,
            },
            t,
          );
        }
        function Oe() {
          const e = a.xm.RemotePlayStore;
          return (0, r.q3)(() => {
            let t = e.host;
            t || (t = a.xm.FriendStore.self);
            const n = {
                playerID: { steamid: t?.steamid64 ?? "", guestid: 0 },
                friend: a.xm.FriendStore.GetPlayer(t?.accountid ?? 0),
                gameID: "0",
                bSession: !0,
                bJoined: !0,
                bMobile: !1,
                bKeyboardEnabled: !0,
                bMouseEnabled: !0,
                bControllerEnabled: !0,
                nKeyboardUsedTime: 0,
                nMouseUsedTime: 0,
                nControllerUsedTime: 0,
                bGuest: !1,
              },
              i = e.is_host,
              o = e.GetAllSessions().filter((e) => i || e.bJoined);
            return { bAmHost: i, hostPlayer: n, rgPlayers: o };
          });
        }
        function Ne(e = 2e3) {
          const [t, n] = (0, i.useState)(!1),
            o = (0, i.useRef)(null);
          return [
            t,
            () => {
              n(!0),
                clearTimeout(o.current),
                (o.current = window.setTimeout(() => n(!1), e));
            },
          ];
        }
        function Ve(e) {
          const {
              icon: t,
              onIconClick: n,
              value: o,
              onChange: r,
              min: a,
              max: l,
              title: c,
            } = e,
            d = t,
            u = !!n;
          return i.createElement(
            "div",
            { className: C.SliderControlContainer, title: c },
            i.createElement(
              "div",
              { className: C.SliderIconContainer, onClick: n },
              i.createElement(d, {
                className: (0, m.A)(C.SliderIcon, u && 0 == o && C.Disabled),
              }),
            ),
            i.createElement(
              "div",
              { className: C.SliderContainer },
              i.createElement(s.rP, {
                min: a,
                max: l,
                value: o,
                onChange: r,
                className: C.Slider,
              }),
            ),
          );
        }
        function Ue(e) {
          const { className: t, color: n } = e;
          return i.createElement(
            "svg",
            {
              x: "0px",
              y: "0px",
              viewBox: "0 0 720 720",
              className: t,
              style: { fill: "currentcolor", color: n },
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                d: "M443.5,118.5H375v179.6c53.16-2.78,102.48-20.26,144-48.41V194C519,152.3,485.2,118.5,443.5,118.5z",
              }),
              i.createElement("path", {
                d: "M345,118.5h-68.5c-41.7,0-75.5,33.8-75.5,75.5v55.69c41.52,28.16,90.84,45.63,144,48.41V118.5z",
              }),
              i.createElement("path", {
                d: "M201,285.4v157.1c0,87.81,71.19,159,159,159h0c87.81,0,159-71.19,159-159V285.4\n\t\t\t\t\tc-47.69,28.1-102.19,43.1-159,43.1C303.19,328.5,248.69,313.5,201,285.4z",
              }),
            ),
          );
        }
        function He(e) {
          const { className: t, color: n } = e;
          return i.createElement(
            "svg",
            {
              x: "0px",
              y: "0px",
              viewBox: "0 0 720 720",
              className: t,
              style: { fill: "currentcolor", color: n },
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                d: "M584.73,164.47H121.94c-55.71,0-100.87,45.16-100.87,100.87v146.51c0,55.71,45.16,100.87,100.87,100.87h462.79\n\t\t\t\tc55.71,0,100.87-45.16,100.87-100.87V265.34C685.6,209.63,640.44,164.47,584.73,164.47z M452.42,256.94\n\t\t\t\tc0-18.46,14.97-33.43,33.43-33.43h0c18.46,0,33.43,14.97,33.43,33.43v0c0,18.46-14.97,33.43-33.43,33.43h0\n\t\t\t\tC467.38,290.37,452.42,275.4,452.42,256.94L452.42,256.94z M442.1,305.16c18.46,0,33.43,14.97,33.43,33.43v0\n\t\t\t\tc0,18.46-14.97,33.43-33.43,33.43h0c-18.46,0-33.43-14.97-33.43-33.43v0C408.67,320.13,423.63,305.16,442.1,305.16L442.1,305.16z\n\t\t\t\tM364.92,256.94c0-18.46,14.97-33.43,33.43-33.43h0c18.46,0,33.43,14.97,33.43,33.43v0c0,18.46-14.97,33.43-33.43,33.43h0\n\t\t\t\tC379.88,290.37,364.92,275.4,364.92,256.94L364.92,256.94z M354.45,305.16c18.46,0,33.43,14.97,33.43,33.43v0\n\t\t\t\tc0,18.46-14.97,33.43-33.43,33.43h0c-18.46,0-33.43-14.97-33.43-33.43v0C321.02,320.13,335.99,305.16,354.45,305.16L354.45,305.16z\n\t\t\t\tM277.42,256.94c0-18.46,14.97-33.43,33.43-33.43h0c18.46,0,33.43,14.97,33.43,33.43v0c0,18.46-14.97,33.43-33.43,33.43h0\n\t\t\t\tC292.38,290.37,277.42,275.4,277.42,256.94L277.42,256.94z M266.81,305.16c18.46,0,33.43,14.97,33.43,33.43v0\n\t\t\t\tc0,18.46-14.97,33.43-33.43,33.43h0c-18.46,0-33.43-14.97-33.43-33.43v0C233.38,320.13,248.34,305.16,266.81,305.16L266.81,305.16z\n\t\t\t\tM189.92,256.94c0-18.46,14.97-33.43,33.43-33.43h0c18.46,0,33.43,14.97,33.43,33.43v0c0,18.46-14.97,33.43-33.43,33.43h0\n\t\t\t\tC204.88,290.37,189.92,275.4,189.92,256.94L189.92,256.94z M102.42,256.94c0-18.46,14.97-33.43,33.43-33.43h0\n\t\t\t\tc18.46,0,33.43,14.97,33.43,33.43v0c0,18.46-14.97,33.43-33.43,33.43h0C117.38,290.37,102.42,275.4,102.42,256.94L102.42,256.94z\n\t\t\t\tM166.76,420.25c0,18.46-14.97,33.43-33.43,33.43h0c-18.46,0-33.43-14.97-33.43-33.43v0c0-18.46,14.97-33.43,33.43-33.43h0\n\t\t\t\tC151.79,386.82,166.76,401.78,166.76,420.25L166.76,420.25z M212.59,338.59c0,18.46-14.97,33.43-33.43,33.43h0\n\t\t\t\tc-18.46,0-33.43-14.97-33.43-33.43v0c0-18.46,14.97-33.43,33.43-33.43h0C197.62,305.16,212.59,320.13,212.59,338.59L212.59,338.59z\n\t\t\t\tM498.64,420.25c0,18.46-14.97,33.43-33.43,33.43H250.09c-18.46,0-33.43-14.97-33.43-33.43v0c0-18.46,14.97-33.43,33.43-33.43\n\t\t\t\th215.12C483.67,386.82,498.64,401.78,498.64,420.25L498.64,420.25z M529.74,372.02c-18.46,0-33.43-14.97-33.43-33.43v0\n\t\t\t\tc0-18.46,14.97-33.43,33.43-33.43h0c18.46,0,33.43,14.97,33.43,33.43v0C563.17,357.06,548.21,372.02,529.74,372.02L529.74,372.02z\n\t\t\t\tM606.78,420.25c0,18.46-14.97,33.43-33.43,33.43h0c-18.46,0-33.43-14.97-33.43-33.43v0c0-18.46,14.97-33.43,33.43-33.43h0\n\t\t\t\tC591.81,386.82,606.78,401.78,606.78,420.25L606.78,420.25z M606.78,256.94c0,18.46-14.97,33.43-33.43,33.43h0\n\t\t\t\tc-18.46,0-33.43-14.97-33.43-33.43v0c0-18.46,14.97-33.43,33.43-33.43h0C591.81,223.51,606.78,238.48,606.78,256.94L606.78,256.94z",
              }),
            ),
          );
        }
        function We(e) {
          const { className: t, color: n } = e;
          return i.createElement(
            "svg",
            {
              x: "0px",
              y: "0px",
              viewBox: "0 0 720 720",
              className: t,
              style: { fill: "currentcolor", color: n },
            },
            i.createElement("path", {
              d: "M189.54,272.79h-64.83c-21.35,0-38.66,17.31-38.66,38.66v97.09c0,21.35,17.31,38.66,38.66,38.66h64.83\n\t\t\t\tl137.79,77.33V195.46L189.54,272.79z",
            }),
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                d: "M515.5,606.28c-5.35,0-10.69-2.14-14.63-6.36c-7.53-8.08-7.09-20.74,0.99-28.27\n\t\t\t\t\tc58.53-54.56,92.1-131.7,92.1-211.65s-33.57-157.09-92.1-211.65c-8.08-7.53-8.52-20.19-0.99-28.27\n\t\t\t\t\tc7.53-8.08,20.19-8.52,28.27-0.99c32.72,30.5,58.49,66.61,76.58,107.32c18.74,42.16,28.24,87.1,28.24,133.59\n\t\t\t\t\ts-9.5,91.43-28.24,133.59c-18.09,40.71-43.86,76.81-76.58,107.32C525.27,604.5,520.38,606.28,515.5,606.28z",
              }),
              i.createElement("path", {
                d: "M449.63,538.52c-5.42,0-10.82-2.19-14.76-6.5c-7.46-8.15-6.9-20.8,1.25-28.26\n\t\t\t\t\tc40.26-36.84,63.35-89.24,63.35-143.77c0-54.52-23.09-106.93-63.35-143.77c-8.15-7.46-8.71-20.11-1.25-28.26\n\t\t\t\t\tc7.46-8.15,20.11-8.71,28.26-1.25c23.8,21.78,42.56,47.69,55.76,77c13.66,30.35,20.59,62.75,20.59,96.28\n\t\t\t\t\tc0,33.53-6.93,65.92-20.59,96.28c-13.19,29.31-31.95,55.21-55.76,77C459.29,536.79,454.46,538.52,449.63,538.52z",
              }),
              i.createElement("path", {
                d: "M383.73,470.72c-5.58,0-11.13-2.32-15.08-6.85c-7.26-8.32-6.4-20.96,1.92-28.22\n\t\t\t\t\tC392.45,416.57,405,388.99,405,360c0-28.99-12.55-56.57-34.42-75.65c-8.32-7.26-9.18-19.9-1.92-28.22\n\t\t\t\t\tc7.26-8.32,19.9-9.19,28.22-1.92C427.46,280.89,445,319.45,445,360c0,40.55-17.54,79.11-48.13,105.79\n\t\t\t\t\tC393.08,469.1,388.4,470.72,383.73,470.72z",
              }),
            ),
          );
        }
        function ze(e) {
          const { className: t, color: n } = e;
          return i.createElement(
            "svg",
            {
              width: "19",
              height: "19",
              viewBox: "0 0 19 19",
              className: t,
              style: { fill: "currentcolor", color: n },
            },
            i.createElement("path", {
              d: "M14.8406 11.2028L17.5123 8.53059C19.4614 6.58196 19.4614 3.41057 17.5123 1.46194C15.5635 -0.487315 12.3923 -0.487315 10.4435 1.46194L6.58776 5.31766C4.63871 7.26629 4.63871 10.4377 6.58776 12.3863C6.87553 12.6743 7.1905 12.9184 7.52381 13.1212L9.58797 11.0569C9.19479 10.9628 8.82184 10.7645 8.51573 10.4586C7.62985 9.57268 7.62985 8.13108 8.51573 7.24542L12.3714 3.3897C13.2573 2.50383 14.6989 2.50383 15.5846 3.3897C16.4705 4.27557 16.4705 5.71696 15.5846 6.60283L14.4518 7.73579C14.9186 8.83438 15.0476 10.0426 14.8406 11.2028Z",
            }),
            i.createElement("path", {
              d: "M4.13369 7.77151L1.46194 10.4435C-0.487315 12.3923 -0.487315 15.5635 1.46194 17.5123C3.41057 19.4614 6.58196 19.4614 8.5308 17.5123L12.3863 13.6566C14.3354 11.7078 14.3351 8.53658 12.3863 6.58795C12.0987 6.29997 11.7838 6.05584 11.4505 5.85303L9.38632 7.91739C9.77929 8.01163 10.1522 8.20959 10.4586 8.51571C11.3444 9.40158 11.3444 10.843 10.4586 11.7288L6.60262 15.5846C5.71675 16.4704 4.27536 16.4704 3.38949 15.5846C2.50361 14.6987 2.50361 13.2573 3.38949 12.3714L4.52244 11.2387C4.05547 10.1401 3.92645 8.93166 4.13369 7.77151Z",
            }),
          );
        }
        function je(e) {
          const { className: t, color: n } = e;
          return i.createElement(
            "svg",
            {
              viewBox: "0 0 24 14",
              className: t,
              style: { fill: "currentcolor", color: n },
            },
            i.createElement("path", {
              d: "M4.10365 8.93815C4.15279 8.97501 4.20193 9.00572 4.24494 9.04258C4.20193 9.00572 4.15279 8.96886 4.10365 8.93815Z",
            }),
            i.createElement("path", {
              d: "M5.52267 10.5845L5.52837 10.5902C5.52267 10.5902 5.52267 10.5845 5.52267 10.5845Z",
            }),
            i.createElement("path", {
              d: "M23.5218 9.9886L21.4209 2.00264C21.169 0.608173 19.492 -0.251853 17.6675 0.0737279C16.8443 0.221161 16.1379 0.589744 15.628 1.0689H9.95182C9.44194 0.583601 8.73549 0.221161 7.91233 0.0737279C6.09398 -0.251853 4.41079 0.608173 4.15893 2.00264L3.19447 5.6639C4.93295 6.19834 6.44414 7.26109 7.42703 8.74156L7.43317 8.74771C8.87678 9.27601 10.7381 9.59545 12.7653 9.59545C14.811 9.59545 16.6846 9.26987 18.1344 8.72928L19.2401 10.5783C19.9466 11.6902 20.6837 12.0711 21.7895 11.8684C22.8952 11.6779 23.6692 10.8302 23.5218 9.9886ZM9.56481 5.55947H8.63721V6.48707C8.63721 6.93551 8.27477 7.29795 7.82632 7.29795C7.37788 7.29795 7.01544 6.93551 7.01544 6.48707V5.55947H6.09398C5.64554 5.55947 5.2831 5.19703 5.2831 4.74859C5.2831 4.30014 5.64554 3.9377 6.09398 3.9377H7.02158V3.01625C7.02158 2.5678 7.38402 2.20536 7.83247 2.20536C8.28091 2.20536 8.64335 2.5678 8.64335 3.01625V3.94385H9.57095C10.0194 3.94385 10.3818 4.30629 10.3818 4.75473C10.3757 5.19703 10.0132 5.55947 9.56481 5.55947ZM15.8799 6.54235C15.327 6.54235 14.8724 6.09391 14.8785 5.54104C14.8785 4.98816 15.327 4.53358 15.8799 4.53358C16.4327 4.53358 16.8873 4.98202 16.8873 5.54104C16.8873 6.09391 16.4327 6.54235 15.8799 6.54235ZM17.7781 4.19571C17.2252 4.19571 16.7706 3.74727 16.7706 3.19439C16.7706 2.64152 17.219 2.18694 17.7781 2.18694C18.3309 2.18694 18.7855 2.63538 18.7855 3.19439C18.7855 3.74727 18.3309 4.19571 17.7781 4.19571ZM19.1725 6.88636C18.6197 6.85565 18.1958 6.37649 18.2265 5.82362C18.2572 5.27074 18.7364 4.84687 19.2892 4.87759C19.8421 4.9083 20.266 5.38746 20.2353 5.94034C20.2046 6.49321 19.7315 6.91708 19.1725 6.88636Z",
            }),
            i.createElement("path", {
              d: "M1.81836 12.7038C1.77536 12.5933 1.70164 12.4827 1.6095 12.3905C1.51735 12.2984 1.41292 12.2308 1.2962 12.1817C1.2532 12.1633 1.20406 12.1633 1.16105 12.1571C1.08734 12.1387 1.01976 12.1141 0.946047 12.1141C0.866188 12.1141 0.792471 12.1387 0.712611 12.1571C0.66961 12.1694 0.626609 12.1633 0.589751 12.1817C0.516034 12.2124 0.448461 12.2677 0.380887 12.3168C0.350172 12.3414 0.307171 12.3537 0.276455 12.3844C0.18431 12.4765 0.116736 12.581 0.0675918 12.6977C-0.0675552 13.0356 1.83284e-05 13.441 0.276455 13.7174C0.368601 13.8096 0.473033 13.8772 0.589751 13.9263C0.638895 13.9447 0.694182 13.9447 0.743327 13.957C0.8109 13.9693 0.872331 13.9939 0.939904 13.9939C1.17948 13.9939 1.41906 13.9017 1.60335 13.7174C1.6955 13.6253 1.76307 13.5209 1.81222 13.4041C1.91051 13.1891 1.91051 12.9311 1.81836 12.7038Z",
            }),
            i.createElement("path", {
              d: "M4.52137 12.4151C4.49065 12.2492 4.44151 12.0834 4.38622 11.9237C4.36165 11.8561 4.34322 11.7885 4.3125 11.7209C4.17121 11.3831 3.98692 11.0698 3.74734 10.7872C3.66749 10.6889 3.58763 10.6029 3.49548 10.5108C3.14533 10.1606 2.73374 9.88417 2.2853 9.69987C2.2423 9.68144 2.19315 9.66916 2.14401 9.65073C1.84914 9.54016 1.54199 9.46644 1.22255 9.43572C1.09969 9.42344 0.976832 9.41729 0.853971 9.41729C0.700395 9.41729 0.552962 9.47872 0.442387 9.5893C0.331812 9.69987 0.276524 9.84731 0.270381 10.0009C0.270381 10.1606 0.331812 10.3019 0.442387 10.4125C0.552962 10.523 0.700395 10.5845 0.853971 10.5845H0.860114C0.958402 10.5845 1.05055 10.6029 1.14884 10.6152C1.22255 10.6213 1.29013 10.6213 1.36384 10.6336C1.46828 10.652 1.56656 10.695 1.66485 10.7258C1.72014 10.7442 1.78157 10.7565 1.843 10.781C1.94129 10.8241 2.03344 10.8793 2.13172 10.9346C2.18087 10.9653 2.23616 10.9838 2.2853 11.0206C2.31602 11.0391 2.34059 11.0698 2.3713 11.0882C2.47573 11.1681 2.58631 11.2479 2.67846 11.3401C2.72146 11.3831 2.75831 11.4384 2.80132 11.4875C3.20676 11.9544 3.43405 12.538 3.43405 13.1584C3.43405 13.3181 3.50162 13.4656 3.60605 13.57C3.61834 13.5823 3.63677 13.5884 3.64906 13.6007C3.69206 13.6376 3.73506 13.6744 3.79035 13.6929C3.80263 13.699 3.81492 13.699 3.8272 13.699C3.88863 13.7236 3.95007 13.7359 4.01764 13.7359C4.07907 13.7359 4.13436 13.7174 4.1835 13.7051C4.20193 13.699 4.22036 13.699 4.23879 13.6929C4.30636 13.6621 4.37394 13.6191 4.42922 13.57C4.5398 13.4594 4.60123 13.3181 4.59509 13.1584C4.59509 12.8943 4.57051 12.6547 4.52137 12.4151Z",
            }),
            i.createElement("path", {
              d: "M7.40247 12.3107C7.36561 12.0281 7.31032 11.7455 7.24275 11.4752C7.11374 10.9592 6.92331 10.4739 6.67759 10.0132C6.08786 8.91358 5.19706 8.0044 4.10974 7.39623C4.07903 7.3778 4.05446 7.35938 4.02374 7.34095C3.69202 7.1628 3.34191 7.01538 2.97948 6.89252C2.94262 6.88023 2.9119 6.86795 2.87504 6.85566C2.86276 6.84952 2.85661 6.84952 2.84433 6.84338C2.50646 6.73894 2.16245 6.66523 1.80615 6.61608C1.72629 6.6038 1.65258 6.58537 1.57272 6.57922C1.49286 6.57308 1.40686 6.57308 1.32085 6.56694C1.17956 6.5608 1.04442 6.54851 0.903126 6.54851C0.817124 6.54851 0.731121 6.56694 0.651261 6.59765C0.595974 6.62223 0.540687 6.65294 0.491542 6.69594C0.393254 6.7758 0.32568 6.88023 0.282679 7.00309C0.26425 7.06453 0.251964 7.12596 0.251964 7.19353C0.251964 7.28567 0.270393 7.36553 0.301108 7.44539C0.313394 7.46997 0.331823 7.49454 0.350252 7.51911C0.380968 7.56825 0.40554 7.6174 0.442398 7.65426C0.460827 7.67269 0.491542 7.68497 0.516114 7.7034C0.559116 7.73412 0.602117 7.77098 0.651261 7.79555C0.675834 7.80783 0.706549 7.80783 0.737264 7.81398C0.792552 7.82626 0.841696 7.84469 0.903126 7.84469C1.26557 7.84469 1.61572 7.88155 1.95973 7.94912C2.02116 7.96141 2.08259 7.97984 2.14402 7.99827C2.2546 8.02284 2.35903 8.04741 2.46346 8.07813C2.49417 8.08427 2.51875 8.09656 2.54332 8.10884C2.57403 8.12113 2.60475 8.13342 2.63546 8.1457C2.7399 8.18256 2.83819 8.21327 2.94262 8.25628C3.02248 8.29313 3.09619 8.32999 3.17605 8.36685C3.24977 8.40371 3.32963 8.43442 3.40335 8.47743C3.47706 8.52043 3.54464 8.56343 3.61835 8.60643C3.69207 8.64943 3.76578 8.69243 3.83336 8.74158C3.9255 8.80301 4.01151 8.87058 4.09751 8.93815C4.14665 8.97501 4.1958 9.00573 4.2388 9.04259C4.75482 9.46646 5.19097 9.99476 5.51041 10.5845L5.51655 10.5906C5.63327 10.7995 5.72542 11.0268 5.81142 11.2541C5.88514 11.4445 5.94657 11.6411 5.99571 11.8438C6.04485 12.0465 6.08171 12.2493 6.10628 12.4643C6.13086 12.6731 6.14929 12.882 6.14929 13.097C6.14929 13.2751 6.223 13.4349 6.33972 13.5516C6.45644 13.6683 6.61616 13.742 6.80045 13.742C6.88645 13.742 6.97245 13.7236 7.05231 13.6929C7.20589 13.6253 7.32875 13.5024 7.39632 13.3489C7.42704 13.269 7.44547 13.1891 7.44547 13.097C7.45161 12.8267 7.43318 12.5687 7.40247 12.3107Z",
            }),
          );
        }
        function qe(e) {
          const { className: t } = e;
          return i.createElement(
            "svg",
            {
              width: "16",
              height: "16",
              viewBox: "0 0 23 24",
              fill: "none",
              className: t,
            },
            i.createElement("circle", {
              cx: "11.3115",
              cy: "12.247",
              r: "11.3115",
              fill: "#FFC82C",
            }),
            i.createElement("path", {
              d: "M9.61534 5.7H13.0733L12.5223 14.649H10.1473L9.61534 5.7ZM11.3253 15.96C11.8067 15.96 12.193 16.1057 12.4843 16.397C12.7883 16.6883 12.9403 17.081 12.9403 17.575C12.9403 18.069 12.7883 18.468 12.4843 18.772C12.193 19.076 11.8067 19.228 11.3253 19.228C10.8567 19.228 10.4767 19.076 10.1853 18.772C9.89401 18.468 9.74834 18.069 9.74834 17.575C9.74834 17.081 9.88768 16.6883 10.1663 16.397C10.4577 16.1057 10.844 15.96 11.3253 15.96Z",
              fill: "#1E2834",
            }),
          );
        }
        function Ke() {
          return i.createElement(S.rfv, { className: C.IconMobile });
        }
        function Ze(e) {
          const { className: t, quality: n = 4 } = e;
          return i.createElement(
            "svg",
            {
              width: "64",
              height: "64",
              viewBox: "0 0 64 64",
              fill: "none",
              className: (0, m.A)(t, C[`BitRateQuality_${n}`]),
            },
            i.createElement(
              "g",
              null,
              i.createElement("rect", {
                x: "0",
                y: "49",
                width: "13",
                height: "15",
                fill: "currentColor",
              }),
              i.createElement("rect", {
                x: "18.5",
                y: "36",
                width: "10",
                height: "26.5",
                fill: n >= 2 ? "currentColor" : "transparent",
                strokeWidth: "3",
                stroke: "currentColor",
              }),
              i.createElement("rect", {
                x: "35.5",
                y: "22",
                width: "10",
                height: "40.5",
                fill: n >= 3 ? "currentColor" : "transparent",
                strokeWidth: "3",
                stroke: "currentColor",
              }),
              i.createElement("rect", {
                x: "52.5",
                y: "1.5",
                width: "10",
                height: "61",
                fill: 4 == n ? "currentColor" : "transparent",
                strokeWidth: "3",
                stroke: "currentColor",
              }),
            ),
          );
        }
        function Qe(e) {
          return e > 200 ? 1 : e > 66 ? 2 : e > 33 ? 3 : 4;
        }
        const $e = { 0: "#0056D6", 1: "#236C39", 2: "#B72828", 3: "#D0722D" };
        function Xe(e) {
          return $e[e];
        }
        function Ye(e, t) {
          const n = a.xm.RemotePlayStore.GetPlayerInControllerSlot(e);
          let i = n ? a.xm.RemotePlayStore.GetSessionForPlayer(n) : void 0;
          return !i && n && t && n.steamid === t.playerID.steamid && (i = t), i;
        }
        function Je() {
          const { hostPlayer: e, rgPlayers: t } = Oe(),
            n = new Map(),
            o = (function () {
              const [e, t] = i.useState([]);
              return (
                i.useEffect(
                  () =>
                    (0, V.Dp)("Input.RegisterForControllerListChanges")
                      ? SteamClient.Input.RegisterForControllerListChanges(t)
                          .unregister
                      : () => {},
                  [],
                ),
                e
              );
            })();
          for (const e of o) {
            const t = e.nXInputIndex;
            n.has(t) || n.set(t, { nSlot: t }), (n.get(t).details = e);
          }
          const r = [e, ...t];
          for (const e of r) {
            const t = a.xm.RemotePlayStore.GetControllerSlotsForPlayer(
              e.playerID,
            );
            for (const i of t)
              n.has(i) || n.set(i, { nSlot: i }), (n.get(i).player = e);
          }
          const s = Array.from(n.values()),
            l = i.useRef([]);
          return (
            !s.some((e) => null == e.details || null == e.player) &&
              (l.current = s),
            l.current
          );
        }
        function et(e) {
          return {
            nSlot: e.nSlot,
            details: null == e.details ? void 0 : { ...e.details },
            player: null == e.player ? void 0 : { ...e.player },
          };
        }
        const tt = (0, o.PA)(function (e) {
          const t = Je(),
            [n, o] = (0, T.uN)(t, null, 400);
          let r = null;
          const s = [];
          for (
            let e = 0;
            e < a.xm.RemotePlayStore.priority_controller_slot_count;
            e++
          )
            n.find((t) => t.nSlot == e) ||
              (null === r && (r = e),
              s.push({
                label: (0, d.we)("#RemotePlay_ControllerSlot_Empty"),
                icon: i.createElement(l.PqC, { none: !0 }),
                key: `empty-${e}`,
                index: e,
                displayedIndex: e + 1,
                indexColor: Xe(e),
                disabled: !0,
              }));
          for (const e of n) {
            const t =
                e.nSlot >= a.xm.RemotePlayStore.priority_controller_slot_count,
              o = e.player?.bGuest
                ? (0, b.tp)(e.player?.strAvatarHash, "full")
                : e.player?.friend?.persona.avatar_url_full,
              l = 4 != e.details.eControllerType,
              c = !t && n.length > 1,
              m = t && null !== r;
            let u, h;
            c
              ? ((u = () =>
                  a.xm.RemotePlayStore.RemoveControllerFromPrioritySlot(
                    e.nSlot,
                  )),
                (h = (0, d.we)("#RemotePlay_DeactivateController")))
              : m &&
                ((u = () =>
                  a.xm.RemotePlayStore.SwapControllerSlots(e.nSlot, r, !1)),
                (h = (0, d.we)("#RemotePlay_ReactivateController"))),
              s.push({
                label: i.createElement(
                  i.Fragment,
                  null,
                  i.createElement(
                    "div",
                    { className: C.ReorderLabelName },
                    q(e.player),
                  ),
                  o &&
                    i.createElement(Ie, {
                      src: o,
                      className: C.ReorderLabelPersonaAvatar,
                    }),
                ),
                icon: i.createElement(me, {
                  controllerType: e.details.eControllerType,
                  mobile: e.player?.bMobile,
                }),
                key: e.details.nControllerIndex.toString(),
                index: e.nSlot,
                displayedIndex: e.details.nXInputIndex + 1,
                indexColor: t ? void 0 : Xe(e.details.nXInputIndex),
                sectionName: t ? "inactive" : void 0,
                onOptionsButton: l
                  ? () => a.xm.RemotePlayStore.TriggerControllerRumble(e.nSlot)
                  : void 0,
                onOptionsActionDescription: l
                  ? (0, d.we)("#RemotePlay_IdentifyController")
                  : void 0,
                onSecondaryButton: u,
                onSecondaryActionDescription: h,
              });
          }
          s.sort((e, t) => e.index - t.index);
          return i.createElement(N, {
            title: (0, d.we)("#RemotePlay_ControllerOrder"),
            items: s,
            sections: [
              {
                name: "inactive",
                label: (0, d.we)("#RemotePlay_InactiveControllers"),
              },
            ],
            onMoveRelative: (e, t) => {
              const i = e + t,
                r = a.xm.RemotePlayStore.SwapControllerSlots(e, i, !1);
              return (
                r &&
                  o(
                    (function (e, t, n) {
                      const i = e.map(et),
                        o = i.find((e) => e.nSlot == t),
                        r = i.find((e) => e.nSlot == n);
                      if (o && r) {
                        const e = o.nSlot;
                        (o.nSlot = r.nSlot), (r.nSlot = e);
                      } else o && (o.nSlot = n);
                      return (
                        o?.details && (o.details.nXInputIndex = o.nSlot),
                        r?.details && (r.details.nXInputIndex = r.nSlot),
                        i
                      );
                    })(n, e, i),
                  ),
                r
              );
            },
            closeModal: e.closeModal,
          });
        });
        function nt(e) {
          return i.createElement(
            w.ss,
            { ...e.configContext },
            e.children(e.closeModal),
          );
        }
        function it(e) {
          const [t, n] = i.useState([]);
          return i.createElement(
            c.x_,
            { onEscKeypress: e.closeModal },
            i.createElement(
              s.U9,
              {
                onSubmit: () => {
                  for (const n of t) {
                    if (a.xm.FriendStore.self === n) return;
                    a.xm.RemotePlayStore.CreateInviteAndSession(
                      n.accountid,
                      a.xm.FriendStore.self.persona.m_gameid,
                      e.browserContext,
                    );
                  }
                  e.closeModal && e.closeModal();
                },
                className: "friendsui-container",
              },
              i.createElement(
                s.Y9,
                null,
                (0, d.we)("#RemotePlay_InviteFriend_Verbose"),
              ),
              i.createElement(
                s.nB,
                null,
                i.createElement(U.r, {
                  label: (0, d.we)("#RemotePlay_FriendsToInvite"),
                  eSort: 2,
                  rgPickedFriends: t,
                  onChange: n,
                  autoFocus: !0,
                }),
              ),
              i.createElement(
                s.wi,
                null,
                i.createElement(s.CB, { onCancel: e.closeModal }),
              ),
            ),
          );
        }
        async function ot(e, t) {
          t = t ?? window;
          const n = (0, v._k)(t),
            o = "addfriend";
          if (!a.xm.RemotePlayStore.BDialogOpenInContext(n, o)) {
            const r = i.createElement(nt, { configContext: e }, (e) =>
                i.createElement(it, { closeModal: e, browserContext: n }),
              ),
              s = () => {
                a.xm.RemotePlayStore.DialogClosed(n, o);
              },
              l = a.xm.IsGamepadUIActive() ? void 0 : 664,
              m = a.xm.IsGamepadUIActive() ? void 0 : 580,
              u = await (0, c.pg)(r, t, {
                fnOnClose: s,
                popupWidth: l,
                popupHeight: m,
                strTitle: (0, d.we)("#RemotePlay_InviteFriend_Verbose"),
                bHideMainWindowForPopouts: !1,
                browserContext: n,
              });
            a.xm.RemotePlayStore.DialogOpened(n, () => u.Close(), o);
          }
        }
      },
      33769: (e, t, n) => {
        "use strict";
        n.d(t, { T: () => y });
        var i = n(34629),
          o = n(58743),
          r = n(78919),
          a = n(78116),
          s = n(14355),
          l = n(63696),
          c = n(41230),
          m = n(58825),
          d = n(82924),
          u = n(74002),
          h = n(89021),
          p = n(27828),
          _ = n(99862),
          g = n(81734),
          C = n(10893),
          f = n.n(C),
          S = n(77171);
        let v = class extends l.Component {
          m_elVoiceSettingsMarkerScroll;
          m_window;
          m_iTimeOutVoiceSettingsScroll;
          m_rgMicOptions = [{ label: "Default", data: "default" }];
          m_rgOutputOptions = [{ label: "Default", data: "default" }];
          constructor(e) {
            super(e),
              (this.state = {
                showAdvanced: !1,
                micOptionsReady: !1,
                outputOptionsReady: !1,
                hotkeyCapturing: !1,
              }),
              navigator.mediaDevices
                .enumerateDevices()
                .then(this.gotMediaDevices)
                .catch(this.gotMediaDevicesError);
          }
          gotMediaDevices(e) {
            for (let t = 0; t < e.length; ++t) {
              let n = e[t];
              if ("audioinput" == n.kind) {
                if ("default" != n.deviceId) {
                  let e = n.label;
                  "communications" == n.deviceId &&
                    (e = (0, u.we)("#Voice_DefaultCommunicationsDefault")),
                    this.m_rgMicOptions.push({ label: e, data: n.deviceId });
                }
              } else if ("audiooutput" == n.kind && "default" != n.deviceId) {
                let e = n.label;
                "communications" == n.deviceId &&
                  (e = (0, u.we)("#Voice_DefaultCommunicationsDefault")),
                  this.m_rgOutputOptions.push({ label: e, data: n.deviceId });
              }
            }
            this.setState({ micOptionsReady: !0 }),
              this.setState({ outputOptionsReady: !0 });
          }
          gotMediaDevicesError() {
            this.setState({ micOptionsReady: !0 }),
              this.setState({ outputOptionsReady: !0 });
          }
          onSubmit() {
            return !1;
          }
          VoiceSettingsRefMarker(e) {
            e &&
              e.ownerDocument &&
              ((this.m_elVoiceSettingsMarkerScroll = e),
              (this.m_window = e.ownerDocument.defaultView));
          }
          OnShowAdvancedSettings() {
            this.setState({ showAdvanced: !this.state.showAdvanced }),
              (this.m_iTimeOutVoiceSettingsScroll = this.m_window.setTimeout(
                () => {
                  this.m_elVoiceSettingsMarkerScroll &&
                    this.state.showAdvanced &&
                    this.m_elVoiceSettingsMarkerScroll.scrollIntoView({
                      behavior: "smooth",
                    }),
                    this.m_window.clearTimeout(
                      this.m_iTimeOutVoiceSettingsScroll,
                    );
                },
                200,
              ));
          }
          OnMicDropdownChanged(e) {
            this.props.voiceStore.SetSelectedMic(e.data);
          }
          OnOutputDeviceDropdownChanged(e) {
            this.props.voiceStore.SetSelectedOutput(e.data);
          }
          OnInputGainChanged(e) {
            this.props.voiceStore.SetVoiceInputGain(
              this.props.voiceStore.ConvertSliderToGainValue(
                e,
                p.F$.k_MaxInputOutputGainValue,
              ),
            );
          }
          OnOutputGainChanged(e) {
            this.props.voiceStore.SetVoiceOutputGain(
              this.props.voiceStore.ConvertSliderToGainValue(
                e,
                p.F$.k_MaxInputOutputGainValue,
              ),
            );
          }
          SetHotKeyCaptureState(e) {
            0 == e
              ? (null != SteamClient.WebChat &&
                  null != SteamClient.WebChat.UnregisterForMouseXButtonDown &&
                  SteamClient.WebChat.UnregisterForMouseXButtonDown(),
                this.setState({ hotkeyCapturing: !1 }))
              : (this.setState({ hotkeyCapturing: !0 }),
                null != SteamClient.WebChat &&
                  null != SteamClient.WebChat.RegisterForMouseXButtonDown &&
                  SteamClient.WebChat.RegisterForMouseXButtonDown(
                    this.OnXButtonDown,
                  ));
          }
          OnXButtonDown(e) {
            e > 0 &&
              this.state.hotkeyCapturing &&
              (null != SteamClient.WebChat &&
                null != SteamClient.WebChat.SetPushToTalkMouseButton &&
                (SteamClient.WebChat.SetPushToTalkMouseButton(e),
                o.xm.VoiceStore.RefreshPushToTalkKeySettings()),
              this.SetHotKeyCaptureState(!1));
          }
          OnTogglePushToTalk() {
            if (
              "undefined" != typeof SteamClient &&
              null != SteamClient.WebChat &&
              null != SteamClient.WebChat.SetPushToTalkEnabled
            ) {
              let e = o.xm.VoiceStore.GetPushToTalkEnabled();
              SteamClient.WebChat.SetPushToTalkEnabled(!e),
                o.xm.VoiceStore.SetPushToTalkEnabled(!e);
            }
          }
          AssignHotkey() {
            0 == this.state.hotkeyCapturing && this.SetHotKeyCaptureState(!0);
          }
          ClearHotKey() {
            "undefined" != typeof SteamClient &&
              null != SteamClient.WebChat &&
              null != SteamClient.WebChat.SetPushToTalkHotKey &&
              (SteamClient.WebChat.SetPushToTalkHotKey(0),
              o.xm.VoiceStore.RefreshPushToTalkKeySettings());
          }
          OnTransmissionTypeChange(e) {
            if ("undefined" != typeof SteamClient && SteamClient.WebChat)
              if ("pushtomute" === e)
                SteamClient.WebChat.SetPushToMuteEnabled &&
                  (SteamClient.WebChat.SetPushToMuteEnabled(!0),
                  o.xm.VoiceStore.SetPushToMuteEnabled(!0));
              else if ("openmic" === e || "pushtotalk" === e) {
                const t = "pushtotalk" === e;
                SteamClient.WebChat.SetPushToTalkEnabled &&
                  (SteamClient.WebChat.SetPushToTalkEnabled(t),
                  o.xm.VoiceStore.SetPushToTalkEnabled(t));
              }
          }
          onMouseDown(e) {
            0 != this.state.hotkeyCapturing && 0 != e.button && this.onClick(e);
          }
          onClick(e) {
            0 != this.state.hotkeyCapturing &&
              (null != SteamClient.WebChat &&
                null != SteamClient.WebChat.SetPushToTalkMouseButton &&
                (SteamClient.WebChat.SetPushToTalkMouseButton(e.button),
                o.xm.VoiceStore.RefreshPushToTalkKeySettings()),
              this.SetHotKeyCaptureState(!1),
              e.preventDefault(),
              e.stopPropagation());
          }
          onContextMenu(e) {
            e.preventDefault(), e.stopPropagation();
          }
          onKeyDown(e) {
            0 != this.state.hotkeyCapturing &&
              (null != SteamClient.WebChat &&
                null != SteamClient.WebChat.SetPushToTalkHotKey &&
                (SteamClient.WebChat.SetPushToTalkHotKey(e.keyCode),
                o.xm.VoiceStore.RefreshPushToTalkKeySettings()),
              this.SetHotKeyCaptureState(!1),
              e.preventDefault(),
              e.stopPropagation());
          }
          OnPPTSoundChecked(e) {
            o.xm.VoiceStore.SetPushToTalkOrMuteSoundsEnabled(e);
          }
          componentWillUnmount() {
            o.xm.VoiceStore.IsLocalMicTestActive() &&
              o.xm.VoiceStore.EndLocalMicTest();
          }
          OnStartLocalMicTest() {
            o.xm.VoiceStore.InitiateLocalMicTest();
          }
          OnStopLocalMicTest() {
            o.xm.VoiceStore.EndLocalMicTest();
          }
          render() {
            let e = o.xm.VoiceStore.GetPushToTalkEnabled(),
              t = o.xm.VoiceStore.GetPushToMuteEnabled(),
              n = !1,
              i = o.xm.VoiceStore.GetPushToTalkHotKeyDisplayString(),
              r = (0, u.we)("#VoicePushToTalkAssigned"),
              a = (0, u.we)("#VoicePushToMuteAssigned"),
              s = (0, u.we)("#VoiceMuteToggleAssigned"),
              c = o.xm.VoiceStore.GetPushToTalkOrMuteSoundsEnabled(),
              m =
                (o.xm.SettingsStore.BClientHasFeatureOrOnWeb(
                  "NewVoiceHotKeyState",
                ),
                o.xm.VoiceStore.IsLocalMicTestActive()),
              d = o.xm.FriendStore.self;
            "undefined" != typeof SteamClient &&
              null != SteamClient.WebChat &&
              null != SteamClient.WebChat.GetPushToTalkEnabled &&
              (n = !0),
              this.state.hotkeyCapturing &&
                (r = (0, u.we)("#VoicePushToTalkPressHotKey"));
            const C = t ? "pushtomute" : e ? "pushtotalk" : "openmic";
            return l.createElement(
              h.lV,
              {
                className: (0, S.A)(
                  "DialogBody",
                  "VoiceSettings",
                  f().VoiceSettings,
                ),
                onContextMenu: this.onContextMenu,
                onSubmit: this.onSubmit,
                onMouseDown: this.onMouseDown,
                onClick: this.onClick,
                onKeyDown: this.onKeyDown,
              },
              l.createElement(
                "div",
                { className: "_FixedHeight" },
                l.createElement(
                  "div",
                  { className: "voiceSelfHeader" },
                  l.createElement(
                    "div",
                    { className: "DialogLabel" },
                    (0, u.we)("#VoiceSetupHeader"),
                  ),
                  l.createElement(
                    "div",
                    { className: "voiceMicTestContainer" },
                    l.createElement(
                      "div",
                      {
                        className: "voiceSelfDirections",
                        title: (0, u.we)("#VoiceWhenMicIsWorking"),
                      },
                      l.createElement(_.bP, {
                        friend: d,
                        key: d.accountid,
                        showVoiceLevel: !0,
                        context: void 0,
                        noActions: !0,
                        listStatusIndicator: l.createElement("div", {
                          className: "connectionSpinner",
                        }),
                      }),
                      l.createElement(
                        h.$n,
                        {
                          className:
                            "LocalMicTestButton " + (m ? "Primary" : "Off"),
                          onClick: m
                            ? this.OnStopLocalMicTest
                            : this.OnStartLocalMicTest,
                        },
                        m
                          ? (0, u.we)("#VoiceStopLocalMicTest")
                          : (0, u.we)("#VoiceStartLocalMicTest"),
                      ),
                    ),
                  ),
                ),
                this.state.micOptionsReady &&
                  l.createElement(h.m, {
                    strClassName: "InputDevice",
                    label: (0, u.we)("#VoiceDevice"),
                    rgOptions: this.m_rgMicOptions,
                    strDefaultLabel: (0, u.we)("#DefaultMic"),
                    selectedOption: this.props.voiceStore.GetSelectedMic(),
                    onChange: this.OnMicDropdownChanged,
                  }),
                !this.state.micOptionsReady &&
                  l.createElement(h.m, {
                    label: (0, u.we)("#VoiceDevice"),
                    rgOptions: this.m_rgMicOptions,
                    strDefaultLabel: (0, u.we)("#MicLoading..."),
                  }),
                this.state.outputOptionsReady &&
                  l.createElement(h.m, {
                    label: (0, u.we)("#VoiceOutputDevice"),
                    rgOptions: this.m_rgOutputOptions,
                    strDefaultLabel: (0, u.we)("#DefaultOutputDevice"),
                    selectedOption:
                      this.props.voiceStore.GetSelectedOutputDevice(),
                    onChange: this.OnOutputDeviceDropdownChanged,
                  }),
                !this.state.outputOptionsReady &&
                  l.createElement(h.m, {
                    label: (0, u.we)("#VoiceOutputDevice"),
                    rgOptions: this.m_rgOutputOptions,
                    strDefaultLabel: (0, u.we)("#OutputDeviceLoading..."),
                  }),
                l.createElement(h.JU, null, (0, u.we)("#VoiceVolume")),
                l.createElement(
                  h.dR,
                  { className: "DialogLabelStrong" },
                  l.createElement(h.Kc, {
                    min: 0,
                    max: 100,
                    label: (0, u.we)("#VoiceInputGain"),
                    description: (0, u.we)("#VoiceInputGainExplainer"),
                    value: this.props.voiceStore.ConvertGainValueToSliderValue(
                      this.props.voiceStore.GetVoiceInputGain(),
                      p.F$.k_MaxInputOutputGainValue,
                    ),
                    onChange: this.OnInputGainChanged,
                  }),
                  l.createElement(h.Kc, {
                    min: 0,
                    max: 100,
                    label: (0, u.we)("#VoiceOutputGain"),
                    description: (0, u.we)("#VoiceOutputGainExplainer"),
                    value: this.props.voiceStore.ConvertGainValueToSliderValue(
                      this.props.voiceStore.GetVoiceOutputGain(),
                      p.F$.k_MaxInputOutputGainValue,
                    ),
                    onChange: this.OnOutputGainChanged,
                  }),
                ),
                "undefined" != typeof SteamClient &&
                  null != SteamClient.WebChat &&
                  null != SteamClient.WebChat.SetPushToMuteEnabled
                  ? l.createElement(
                      "div",
                      {
                        className:
                          "_DialogSection pushToTalkSection" +
                          (n ? "" : " disabled"),
                      },
                      l.createElement(
                        h.JU,
                        null,
                        (0, u.we)("#VoiceTransmissionType_Label"),
                        !n &&
                          l.createElement(
                            "span",
                            { className: "disabledNotice" },
                            " (",
                            (0, u.we)("#VoiceTransmissionType_Disabled"),
                            ") ",
                          ),
                      ),
                      l.createElement(
                        "div",
                        { className: f().TransmissionTypeSettings },
                        l.createElement(
                          h.zW,
                          { value: C, onChange: this.OnTransmissionTypeChange },
                          l.createElement(
                            h.a,
                            { value: "openmic" },
                            (0, u.we)("#VoiceTransmissionType_OpenMic"),
                          ),
                          l.createElement(
                            h.a,
                            { value: "pushtotalk" },
                            (0, u.we)("#VoiceTransmissionType_PushToTalk"),
                          ),
                          l.createElement(
                            h.a,
                            { value: "pushtomute" },
                            (0, u.we)("#VoiceTransmissionType_PushToMute"),
                          ),
                        ),
                        l.createElement(
                          "div",
                          { className: f().HotkeySettingRow },
                          l.createElement(
                            "div",
                            { className: f().HotkeySettingDescription },
                            e ? r : t ? a : s,
                          ),
                          l.createElement(
                            h.$n,
                            {
                              disabled: !n,
                              className: (0, S.A)(
                                f().HotkeyButton,
                                this.state.hotkeyCapturing && f().Capturing,
                              ),
                              onClick: this.AssignHotkey,
                            },
                            i,
                          ),
                          !e &&
                            !t &&
                            l.createElement(
                              h.$n,
                              {
                                className: f().HotkeyClearButton,
                                onClick: this.ClearHotKey,
                                title: (0, u.we)("#VoiceClearHotKeyTooltip"),
                              },
                              l.createElement(g.sED, null),
                            ),
                        ),
                        l.createElement(
                          "div",
                          { className: f().HotkeySettingRow },
                          l.createElement(
                            "span",
                            { className: f().HotkeySettingDescription },
                            (0, u.we)("#VoicePushToSomethingSoundOption"),
                          ),
                          l.createElement(h.Hk, {
                            value: c,
                            onChange: (e) => this.OnPPTSoundChecked(e),
                          }),
                        ),
                      ),
                    )
                  : l.createElement(
                      "div",
                      {
                        className:
                          "_DialogSection pushToTalkSection" +
                          (n ? "" : " disabled"),
                      },
                      l.createElement(
                        h.JU,
                        null,
                        (0, u.we)("#VoiceTransmissionType"),
                        !n &&
                          l.createElement(
                            "span",
                            { className: "disabledNotice" },
                            " (",
                            (0, u.we)("#g_DisabledOnWeb"),
                            ") ",
                          ),
                      ),
                      l.createElement(h.P8, {
                        disabled: !n,
                        label: (0, u.we)("#VoiceTransmissionTypeExplainer"),
                        value: e,
                        onChange: this.OnTogglePushToTalk,
                      }),
                      e &&
                        l.createElement(
                          "div",
                          {
                            className:
                              "pushtoTalkKeyAssignContainer displayRow",
                          },
                          l.createElement(
                            h.JU,
                            { className: "DialogLabelExplainer" },
                            r,
                          ),
                          l.createElement(
                            h.$n,
                            {
                              disabled: !n,
                              className:
                                this.state.hotkeyCapturing && "capturingKey",
                              onClick: this.AssignHotkey,
                            },
                            i,
                          ),
                        ),
                    ),
                l.createElement(b, { voiceStore: this.props.voiceStore }),
                l.createElement(
                  h.$n,
                  {
                    className: (0, S.A)(
                      "advancedSettingsButton",
                      f().AdvancedSettingsButton,
                    ),
                    onClick: this.OnShowAdvancedSettings,
                  },
                  this.state.showAdvanced
                    ? (0, u.we)("#VoiceHideAdvancedSettings")
                    : (0, u.we)("#VoiceShowAdvancedSettings"),
                  l.createElement(g.GB9, null),
                ),
                l.createElement(I, {
                  voiceStore: this.props.voiceStore,
                  visible: this.state.showAdvanced,
                }),
                l.createElement("div", {
                  className: "scrollToRef",
                  ref: this.VoiceSettingsRefMarker,
                }),
              ),
            );
          }
        };
        (0, i.Cg)([d.oI], v.prototype, "gotMediaDevices", null),
          (0, i.Cg)([d.oI], v.prototype, "gotMediaDevicesError", null),
          (0, i.Cg)([d.oI], v.prototype, "onSubmit", null),
          (0, i.Cg)([d.oI], v.prototype, "VoiceSettingsRefMarker", null),
          (0, i.Cg)([d.oI], v.prototype, "OnShowAdvancedSettings", null),
          (0, i.Cg)([d.oI], v.prototype, "OnMicDropdownChanged", null),
          (0, i.Cg)([d.oI], v.prototype, "OnOutputDeviceDropdownChanged", null),
          (0, i.Cg)([d.oI], v.prototype, "OnInputGainChanged", null),
          (0, i.Cg)([d.oI], v.prototype, "OnOutputGainChanged", null),
          (0, i.Cg)([d.oI], v.prototype, "OnXButtonDown", null),
          (0, i.Cg)([d.oI], v.prototype, "OnTogglePushToTalk", null),
          (0, i.Cg)([d.oI], v.prototype, "AssignHotkey", null),
          (0, i.Cg)([d.oI], v.prototype, "ClearHotKey", null),
          (0, i.Cg)([d.oI], v.prototype, "OnTransmissionTypeChange", null),
          (0, i.Cg)([d.oI], v.prototype, "onMouseDown", null),
          (0, i.Cg)([d.oI], v.prototype, "onClick", null),
          (0, i.Cg)([d.oI], v.prototype, "onContextMenu", null),
          (0, i.Cg)([d.oI], v.prototype, "onKeyDown", null),
          (0, i.Cg)([d.oI], v.prototype, "OnPPTSoundChecked", null),
          (0, i.Cg)([d.oI], v.prototype, "OnStartLocalMicTest", null),
          (0, i.Cg)([d.oI], v.prototype, "OnStopLocalMicTest", null),
          (v = (0, i.Cg)([c.PA], v));
        const b = (0, c.PA)((e) => {
          const { voiceStore: t } = e,
            n = t.GetUseNoiseGateLevel(),
            i =
              n === p.HT.k_ENoiseGateLevel_Low ? p.HT.k_ENoiseGateLevel_Off : n;
          return l.createElement(
            "div",
            { className: "_DialogSection" },
            l.createElement(
              h.JU,
              null,
              (0, u.we)("#VoiceTransmisionThreshold"),
            ),
            l.createElement(
              h.JU,
              { className: "DialogLabelStrong" },
              (0, u.we)("#VoiceTransmissionThresholdExplainer"),
            ),
            l.createElement(
              h.zW,
              { value: i, onChange: (e) => t.SetUseNoiseGateLevel(e) },
              l.createElement(
                h.a,
                { value: p.HT.k_ENoiseGateLevel_Off },
                (0, u.we)("#VoiceTransmissionThresholdOff"),
              ),
              l.createElement(
                h.a,
                { value: p.HT.k_ENoiseGateLevel_Medium },
                (0, u.we)("#VoiceTransmissionThresholdMedium"),
                l.createElement(
                  "span",
                  { className: f().RecommendedNote },
                  (0, u.we)("#VoiceTransmissionThresholdRecommended"),
                ),
              ),
              l.createElement(
                h.a,
                { value: p.HT.k_ENoiseGateLevel_High },
                (0, u.we)("#VoiceTransmissionThresholdHigh"),
              ),
            ),
          );
        });
        const I = (0, c.PA)((e) => {
          const { voiceStore: t, visible: n } = e;
          return l.createElement(
            "div",
            { className: "advancedSettings" + (n ? " showAdvanced" : "") },
            l.createElement(h.JU, null, (0, u.we)("#VoiceAdvancedSettings")),
            l.createElement(
              h.JU,
              { className: "DialogLabelExplainer Left" },
              (0, u.we)("#VoiceAdvancedSettingsExplainer"),
            ),
            l.createElement(h.P8, {
              className: f().ToggleRow,
              label: (0, u.we)("#VoiceEchoCancellation"),
              value: t.GetUseEchoCancellation(),
              onChange: (e) => t.SetUseEchoCancellation(e),
            }),
            l.createElement(h.P8, {
              className: f().ToggleRow,
              label: (0, u.we)("#VoiceNoiseCancellation"),
              value: t.GetUseNoiseCancellation(),
              onChange: (e) => t.SetUseNoiseCancellation(e),
            }),
            l.createElement(h.P8, {
              className: f().ToggleRow,
              label: (0, u.we)("#VoiceAutoGainControl"),
              value: t.GetUseAutoGainControl(),
              onChange: (e) => t.SetUseAutoGainControl(e),
            }),
            l.createElement(
              h.$n,
              {
                className: "copyVoiceLogsButton",
                onClick: () =>
                  (function (e) {
                    const t = e.GetVoiceLogs(),
                      n = document.createElement("textarea");
                    (n.textContent = t),
                      (n.style.position = "fixed"),
                      document.body.appendChild(n),
                      n.select();
                    try {
                      document.execCommand("copy");
                    } catch (e) {
                      console.warn("Copy voice logs to clipboard failed.", e);
                    } finally {
                      document.body.removeChild(n);
                    }
                  })(t),
              },
              (0, u.we)("#CopyVoiceChatLogs"),
            ),
          );
        });
        var w = n(60340);
        function y(e, t, n) {
          (0, s.HT)(
            l.createElement(E, { browserContext: e, startingPage: n }),
            t,
            (0, u.we)("#FriendSettings_Title"),
            {
              strTitle: (0, u.we)("#FriendSettings_Title"),
              popupWidth: 842,
              popupHeight: 720,
            },
            (0, r.h8)(t),
          );
        }
        let E = class extends l.Component {
          constructor(e) {
            super(e, (0, u.we)("#Settings"));
          }
          SaveFriendSettings(e, t) {
            o.xm.SettingsStore.BUpdateFriendsSettings(e),
              o.xm.SettingsStore.SetCommunityPreferences(t);
          }
          render() {
            let e = o.xm.UIStore.GetPerContextChatData(
                this.props.browserContext,
              ),
              t = {
                friendsSettingsInitial: o.xm.SettingsStore.FriendsSettings,
                communityPreferencesInitial:
                  o.xm.SettingsStore.CommunityPreferences,
                onCancel: this.props.closeModal,
                onSubmit: this.SaveFriendSettings,
                bShowClientOpts: a.TS.IN_CLIENT,
                bShowPopupOpts: e.BUsePopups(),
                bShowGroupOpts: !0,
                bSubmitImmediate: !0,
                bDoNotDisturbSupported:
                  a.TS.IN_CLIENT &&
                  o.xm.SettingsStore.BClientHasFeatureOrOnWeb("DoNotDisturb"),
              },
              n = {
                title: (0, u.we)("#FriendSettings_Title"),
                className: "FriendSettingsContainer",
                pages: [
                  {
                    title: (0, u.we)("#FriendSettings_Friends"),
                    identifier: "friends",
                    content: l.createElement(m.dG, { ...t }),
                  },
                  {
                    title: (0, u.we)("#FriendSettings_Chat"),
                    identifier: "chat",
                    content: l.createElement(m.IW, { ...t }),
                  },
                  {
                    title: (0, u.we)("#FriendSettings_SizeAndScaling"),
                    identifier: "sizeAndScaling",
                    content: l.createElement(m.vQ, { ...t }),
                  },
                  {
                    title: (0, u.we)("#FriendSettings_Notifications"),
                    identifier: "notifications",
                    content: l.createElement(D, { ...t }),
                  },
                  {
                    title: (0, u.we)("#FriendSettings_Voice"),
                    identifier: "voice",
                    content: l.createElement(v, {
                      onCancel: this.props.closeModal,
                      voiceStore: o.xm.ChatStore.VoiceChat,
                    }),
                  },
                ],
                startingPage: this.props.startingPage,
              };
            return l.createElement(
              s.x_,
              { onEscKeypress: this.props.closeModal },
              l.createElement(h.Bv, { ...n }),
            );
          }
        };
        E = (0, i.Cg)([c.PA], E);
        let D = class extends m.jr {
          m_rgOptions = (0, w.yi)(!1);
          constructor(e) {
            super(e);
          }
          FriendsSettingsNotificationRow(e) {
            let t = this.FriendsSettingsCheckbox;
            return l.createElement(
              "div",
              null,
              l.createElement(
                "div",
                { className: "FriendsSettingsNotificationRow" },
                l.createElement(
                  "div",
                  { className: "FriendsSettingsNotificationRow_Label" },
                  e.strLabel,
                ),
                l.createElement(
                  "div",
                  { className: "FriendsSettingsNotificationRow_Checkbox" },
                  l.createElement(t, { strName: e.strNameShow }),
                ),
                l.createElement(
                  "div",
                  { className: "FriendsSettingsNotificationRow_Checkbox" },
                  l.createElement(t, { strName: e.strNameSound }),
                ),
              ),
            );
          }
          render() {
            let e = this.state.friendSettings,
              t = this.FriendsSettingsNotificationRow;
            return l.createElement(
              h.lV,
              { className: "DialogBody", onSubmit: this.OnSubmit },
              l.createElement(
                "div",
                { className: "SettingsGroup" },
                l.createElement(
                  "div",
                  {
                    className:
                      "FriendsSettingsNotificationRow FriendsSettingsNotificationRow_Header",
                  },
                  l.createElement(
                    "div",
                    { className: "FriendsSettingsNotificationRow_Label" },
                    (0, u.we)("#FriendSettings_Notification_Table_Label"),
                  ),
                  l.createElement(
                    "div",
                    { className: "FriendsSettingsNotificationRow_Checkbox" },
                    (0, u.we)("#FriendSettings_Notification_Table_Show"),
                  ),
                  l.createElement(
                    "div",
                    { className: "FriendsSettingsNotificationRow_Checkbox" },
                    (0, u.we)("#FriendSettings_Notification_Table_Play"),
                  ),
                ),
                l.createElement(t, {
                  strLabel: (0, u.we)(
                    "#FriendSettings_Notification_FriendJoins",
                  ),
                  strNameShow: "bNotifications_ShowIngame",
                  strNameSound: "bSounds_PlayIngame",
                }),
                l.createElement(t, {
                  strLabel: (0, u.we)(
                    "#FriendSettings_Notification_FriendOnline",
                  ),
                  strNameShow: "bNotifications_ShowOnline",
                  strNameSound: "bSounds_PlayOnline",
                }),
                l.createElement(t, {
                  strLabel: (0, u.we)(
                    "#FriendSettings_Notification_ChatMessage",
                  ),
                  strNameShow: "bNotifications_ShowMessage",
                  strNameSound: "bSounds_PlayMessage",
                }),
                l.createElement(t, {
                  strLabel: (0, u.we)(
                    "#FriendSettings_Notification_ChatRoomNotification",
                  ),
                  strNameShow: "bNotifications_ShowChatRoomNotification",
                  strNameSound: "bSounds_PlayChatRoomNotification",
                }),
                this.props.bShowGroupOpts &&
                  l.createElement(t, {
                    strLabel: (0, u.we)(
                      "#FriendSettings_Notification_GroupEvent",
                    ),
                    strNameShow: "bNotifications_EventsAndAnnouncements",
                    strNameSound: "bSounds_EventsAndAnnouncements",
                  }),
              ),
              this.props.bShowPopupOpts &&
                this.props.bShowClientOpts &&
                l.createElement(
                  "div",
                  { className: "SettingsGroup" },
                  l.createElement(
                    "div",
                    { className: "FriendsSettingsFlashSection" },
                    l.createElement(
                      h.JU,
                      { className: "FriendsSettingsFlashSection_Header" },
                      (0, u.we)("#FriendSettings_Flash_Header"),
                    ),
                    l.createElement(
                      h.Xp,
                      { className: "FriendsSettingsFlashSection_ButtonRow" },
                      l.createElement(
                        h.$n,
                        {
                          className: 0 == e.nChatFlashMode ? "Primary" : "Off",
                          value: 0,
                          onClick: this.HandleRadioChange,
                        },
                        (0, u.we)("#FriendSettings_Flash_Always"),
                      ),
                      l.createElement(
                        h.$n,
                        {
                          className: 1 == e.nChatFlashMode ? "Primary" : "Off",
                          value: 1,
                          onClick: this.HandleRadioChange,
                        },
                        (0, u.we)("#FriendSettings_Flash_Minimized"),
                      ),
                      l.createElement(
                        h.$n,
                        {
                          className: 2 == e.nChatFlashMode ? "Primary" : "Off",
                          value: 2,
                          onClick: this.HandleRadioChange,
                        },
                        (0, u.we)("#FriendSettings_Flash_Never"),
                      ),
                    ),
                  ),
                ),
              !this.props.bSubmitImmediate &&
                l.createElement(h.CB, { onCancel: this.props.onCancel }),
            );
          }
        };
        (0, i.Cg)([d.oI], D.prototype, "FriendsSettingsNotificationRow", null),
          (D = (0, i.Cg)([c.PA], D));
      },
      25698: (e, t, n) => {
        "use strict";
        n.d(t, {
          Ci: () => l,
          Ic: () => d,
          Nw: () => u,
          WQ: () => m,
          dt: () => h,
          hr: () => c,
        });
        var i = n(14355),
          o = n(78919),
          r = n(58743),
          a = n(74002),
          s = n(25444);
        function l(e, t, n, r, l = (0, a.we)("#Button_Cancel"), c, m, d) {
          return (0, s.ZH)(
            (n) => {
              let r = h(e, t, d);
              (0, i.HT)(n, e, "alertdialog", r, d || (0, o.h8)(e));
            },
            t,
            n,
            r,
            l,
            c,
            m,
          );
        }
        function c(e, t, n, i = (0, a.we)("#Button_Cancel"), o, s) {
          const c = r.xm.GetDefaultBrowserContext();
          return l(window, e, t, n, i, o, s, c);
        }
        function m(e, t, n, i, o = (0, a.we)("#Button_Cancel"), r, s) {
          return l(e, t, n, i, o, r, s)
            .then(() => Promise.resolve(!0))
            .catch(() => Promise.resolve(!1));
        }
        function d(e, t, n, r = (0, a.we)("#Button_OK"), l, c, m) {
          return (0, s.nd)(
            (n) => {
              let r = h(e, t, c, m);
              (0, i.HT)(n, e, "alertdialog", r, c || (0, o.h8)(e));
            },
            t,
            n,
            r,
            l,
          );
        }
        function u(e, t, n = (0, a.we)("#Button_OK"), i) {
          const o = r.xm.GetDefaultBrowserContext(),
            s = r.xm.UIStore.GetPerContextChatData(o),
            l = s?.friends_list_window?.GetWindow() ?? window;
          return d(window, e, t, n, i, o, l);
        }
        function h(e, t, n, i) {
          return r.xm.UIStore.GetPerContextChatData(
            n || (0, o._k)(e),
          ).BUsePopups() && e.innerWidth < 600
            ? {
                strTitle: t,
                popupWidth: 638,
                popupHeight: 300,
                openerWindow: i,
              }
            : null;
        }
      },
      22226: (e, t, n) => {
        "use strict";
        n.d(t, { Io: () => O, Rg: () => G, A6: () => B });
        var i = n(34629),
          o = n(1748),
          r = n(41230),
          a = n(63696),
          s = n(7470),
          l = n(69168),
          c = n(50622),
          m = n(74002),
          d = n(82924),
          u = n(58743),
          h = n(65281),
          p = n(77631),
          _ = n(4299),
          g = n(3360),
          C = n(77171),
          f = n(62218),
          S = n(94599),
          v = n.n(S),
          b = n(52434),
          I = n(63887),
          w = n(50228);
        n(93637);
        let y = class extends a.Component {
          render() {
            const { community_data: e } = this.props;
            let t = e && e.favorite_badge;
            return t
              ? a.createElement(
                  "div",
                  {
                    className: (0, C.A)(
                      v().miniProfileFeaturedContainer,
                      this.props.className,
                    ),
                  },
                  a.createElement(
                    "div",
                    { className: v().favoriteBadgeIcon },
                    a.createElement("img", {
                      src: t.icon,
                      className: v().badgeIcon,
                    }),
                  ),
                  a.createElement(
                    "div",
                    {
                      className: (0, C.A)(
                        v().featuredLabels,
                        v().favoriteBadgeDescription,
                      ),
                    },
                    a.createElement(
                      "div",
                      { className: v().featuredTitle },
                      t.name,
                    ),
                    a.createElement(
                      "div",
                      { className: v().featuredSubTitle },
                      (0, m.we)("#Hover_BadgeXP", t.xp),
                    ),
                  ),
                )
              : null;
          }
        };
        y = (0, i.Cg)([r.PA], y);
        let E = class extends a.Component {
          render() {
            const { community_data: e, className: t } = this.props;
            return e
              ? a.createElement(
                  "div",
                  { className: (0, C.A)(v().miniProfileFeaturedContainer, t) },
                  a.createElement(
                    "div",
                    { className: e.level_class },
                    a.createElement(
                      "span",
                      { className: v().friendPlayerLevelNum },
                      e.level,
                    ),
                  ),
                  a.createElement(
                    "div",
                    { className: v().featuredLabels },
                    a.createElement(
                      "div",
                      { className: v().featuredTitle },
                      (0, m.we)("#Hover_SteamLevel") + " ",
                    ),
                  ),
                )
              : null;
          }
        };
        E = (0, i.Cg)([r.PA], E);
        let D = class extends a.Component {
          render() {
            let e = this.props.persona,
              t = this.props.community_data;
            return a.createElement(
              "div",
              {
                className: (0, C.A)(
                  v().miniProfileGameContainer,
                  this.props.className,
                ),
              },
              t?.in_game?.logo &&
                a.createElement("img", {
                  className: v().gameLogo,
                  src: t.in_game.logo,
                }),
              a.createElement(
                "div",
                {
                  className: (0, C.A)(
                    v().gameContent,
                    v().persona,
                    v().ingame,
                    v().ellipsis,
                  ),
                },
                a.createElement(
                  "div",
                  { className: v().gameState },
                  (0, m.we)(
                    e.is_in_nonsteam_game
                      ? "#PersonaStateInNonSteamGame"
                      : "#PersonaStateInGame",
                  ),
                ),
                this.props.persona.GetCurrentGameName(),
                this.props.persona.HasCurrentGameRichPresence() &&
                  a.createElement(
                    "div",
                    { className: v().richPresence },
                    this.props.persona.GetCurrentGameRichPresence(),
                  ),
                this.props.in_game_section_additional,
              ),
            );
          }
        };
        function A(e) {
          const { appID: t } = e,
            [n] = (0, w.t7)(t, { include_assets_without_overrides: !0 }),
            i = n?.GetAssetsWithoutOverrides()?.GetHeaderURL();
          return i
            ? a.createElement("img", { className: v().gameLogo, src: i })
            : null;
        }
        D = (0, i.Cg)([r.PA], D);
        let T = class extends a.Component {
          render() {
            let e,
              t,
              n = this.props.broadcast_description;
            return (
              n && ((e = (0, m.we)("#PersonaStateWatchingBroadcast")), (t = n)),
              a.createElement(
                "div",
                {
                  className: (0, C.A)(
                    v().miniProfileGameContainer,
                    this.props.className,
                  ),
                },
                this.props.persona.m_broadcastAppId &&
                  a.createElement(A, {
                    appID: this.props.persona.m_broadcastAppId,
                  }),
                a.createElement(
                  "div",
                  {
                    className: (0, C.A)(
                      v().gameContent,
                      v().persona,
                      v().watchingbroadcast,
                      v().ellipsis,
                    ),
                  },
                  a.createElement("div", { className: v().gameState }, e),
                  t &&
                    a.createElement("div", { className: v().richPresence }, t),
                  a.createElement(
                    "div",
                    { className: v().watchingbroadcastThumbnail },
                    this.props.broadcast_thumbnail,
                  ),
                ),
              )
            );
          }
        };
        T = (0, i.Cg)([r.PA], T);
        let M = class extends a.Component {
          render() {
            const {
              className: e,
              persona: t,
              data_loader: n,
              community_data_override: i,
              nickname: o,
              is_friend: r,
              is_blocked: s,
              friend_relationship: l,
              broadcast_description: c,
              broadcast_thumbnail: d,
              mutual_friends: u,
              in_game_section_additional: h,
              bottom_section_additional: p,
              ..._
            } = this.props;
            let S = n.community_data;
            i && (S = { ...S, ...i });
            const I = Object.keys((S && S.profile_background) || {}).length > 0;
            let w,
              A = v().miniProfileContent;
            t.is_ingame
              ? (w = a.createElement(D, {
                  ...this.props,
                  community_data: S,
                  className: I ? v().miniProfileBackdropBlur : void 0,
                }))
              : t.is_watchingbroadcast
                ? (w = a.createElement(T, {
                    ...this.props,
                    className: I ? v().miniProfileBackdropBlur : void 0,
                  }))
                : (A += " " + v().notInOrWatchingGame);
            let M = !0,
              L = !1,
              G = !1;
            r || ((A += " " + v().notFriends), (M = !1)),
              s && ((A += " " + v().communicationBlocked), (G = !0));
            let F,
              P = void 0 !== o,
              B = t.is_awayOrSnooze;
            return (
              (F = P
                ? a.createElement(
                    "div",
                    null,
                    a.createElement(
                      "div",
                      { className: v().personaAndIcons },
                      a.createElement(
                        "div",
                        { className: (0, C.A)(v().personaName, v().nickName) },
                        a.createElement(
                          "div",
                          { className: v().personaNameLabel },
                          this.props.nickname,
                        ),
                        a.createElement(
                          "div",
                          {
                            className: v().playerNicknameBracket,
                            title: (0, m.we)("#isNickname"),
                          },
                          "*",
                        ),
                      ),
                      a.createElement(g.X, { persona: t }),
                    ),
                    a.createElement(
                      "div",
                      { className: (0, C.A)(v().personaName, v().hasNickname) },
                      "( ",
                      a.createElement(
                        "div",
                        { className: v().personaNameLabel },
                        t.m_strPlayerName,
                      ),
                      " )",
                    ),
                  )
                : a.createElement(
                    "div",
                    { className: v().personaAndIcons },
                    a.createElement(
                      "div",
                      { className: v().personaName },
                      a.createElement(
                        "div",
                        { className: v().personaNameLabel },
                        t.m_strPlayerName,
                      ),
                    ),
                    a.createElement(g.X, { persona: t }),
                  )),
              2 == this.props.friend_relationship && (L = !0),
              a.createElement(
                a.Fragment,
                null,
                a.createElement(
                  "div",
                  {
                    key: t.GetAccountID(),
                    className: (0, C.A)(this.props.className, v().miniProfile),
                    ..._,
                  },
                  a.createElement(
                    "div",
                    { className: A },
                    a.createElement(R, { community_data: S, persona: t }),
                    a.createElement(
                      "div",
                      { className: v().miniProfileHeader },
                      a.createElement(
                        "div",
                        {
                          className: (0, C.A)(
                            v().miniProfilePlayer,
                            t.online_state,
                            B && v().isAway,
                            (0, b.rO)(t),
                          ),
                        },
                        a.createElement(k, {
                          persona: this.props.persona,
                          community_data: S,
                        }),
                        B &&
                          a.createElement(f.p, {
                            persona: t,
                            animating: !0,
                            className: v().SnoozeContainer,
                            size: "large",
                          }),
                        a.createElement(
                          "div",
                          { className: v().playerContent },
                          a.createElement(
                            "div",
                            { className: v().playerName },
                            a.createElement(
                              "div",
                              { className: v().persona },
                              F,
                              B &&
                                a.createElement(
                                  "div",
                                  { className: v().awayStatusLabel },
                                  (0, m.we)("#PersonaStateAway"),
                                ),
                              !t.is_online &&
                                a.createElement(
                                  "div",
                                  { className: v().awayStatusLabel },
                                  this.props.persona.GetLocalizedOnlineStatus(),
                                ),
                              "online" == t.online_state &&
                                !B &&
                                a.createElement(
                                  "div",
                                  { className: v().awayStatusLabel },
                                  (0, m.we)("#PersonaStateOnline"),
                                ),
                              !M &&
                                a.createElement(
                                  "div",
                                  { className: v().miniProfileNotFriends },
                                  L
                                    ? (0, m.we)(
                                        "#Friend_Menu_NotAFriendRequesting",
                                      )
                                    : (0, m.we)("#Friend_Menu_NotAFriendLabel"),
                                ),
                              G &&
                                a.createElement(
                                  "div",
                                  { className: v().miniProfileBlocked },
                                  (0, m.we)("#PersonaStateBlocked"),
                                ),
                            ),
                          ),
                        ),
                      ),
                    ),
                    w,
                    a.createElement(
                      "div",
                      {
                        className: (0, C.A)(
                          v().miniProfileBottom,
                          I && v().miniProfileBackdropBlur,
                        ),
                      },
                      a.createElement(y, { community_data: S }),
                      a.createElement(E, { community_data: S }),
                    ),
                    p,
                    a.createElement(
                      "div",
                      { className: v().mutualFriends },
                      this.props.mutual_friends,
                    ),
                  ),
                ),
              )
            );
          }
        };
        M = (0, i.Cg)([r.PA], M);
        const R = ({ community_data: e, persona: t }) => {
            if (e && e.profile_background) {
              const { image: t, ...n } = e.profile_background;
              if (Object.keys(n).length)
                return a.createElement(
                  "div",
                  {
                    className: v().miniProfileVideoBackgroundContainer,
                    key: n["video/webm"] || n["video/mp4"] || "image",
                  },
                  a.createElement(
                    "video",
                    {
                      className: v().miniProfileVideoBackground,
                      playsInline: !0,
                      muted: !0,
                      autoPlay: !0,
                      loop: !0,
                      poster: t,
                    },
                    Object.keys(n).map((e) =>
                      a.createElement("source", { key: e, src: n[e], type: e }),
                    ),
                  ),
                );
              if (t)
                return a.createElement(
                  "div",
                  { className: v().miniProfileVideoBackgroundContainer },
                  a.createElement("img", {
                    className: v().miniProfileVideoBackground,
                    src: t,
                  }),
                );
            }
            return a.createElement(
              "div",
              { className: v().miniProfileBackground },
              a.createElement("img", {
                className: v().miniProfileBackgroundBlur,
                src: t.avatar_url,
              }),
            );
          },
          k = (e) => {
            const { persona: t, community_data: n, size: i, ...o } = e,
              r =
                n &&
                n.avatar_frame &&
                a.createElement("img", {
                  src: n.avatar_frame,
                  className: v().Frame,
                }),
              s = n && n.animated_avatar,
              l = {
                size: i || "X-Large",
                statusPosition: "bottom",
                className: v().playerAvatar,
              };
            return s
              ? a.createElement(I.Ul, { ...o, strAvatarURL: s, ...l }, r)
              : a.createElement(I.i8, { persona: t, ...o, ...l }, r);
          };
        var L = n(77889);
        function G(e) {
          return a.createElement(
            L.g,
            {
              target: e.target,
              className: "friendHover miniProfileHover",
              visibilityObserver: e.hoverInstance,
              onNoSpace: e.onNoSpace,
              direction: e.direction,
            },
            a.createElement(B, { hoverInstance: e.hoverInstance }),
          );
        }
        let F = class extends a.Component {
          constructor(e) {
            super(e);
            const t =
              this.props.broadcastAccountID &&
              p.b.InitFromAccountID(this.props.broadcastAccountID);
            this.state = {
              broadcastInfo:
                t && h.BroadcastWatchStore.StartInfo(t.ConvertTo64BitString()),
            };
          }
          componentDidUpdate(e) {
            if (this.props.broadcastAccountID !== e.broadcastAccountID) {
              this.state.broadcastInfo &&
                h.BroadcastWatchStore.StopInfo(this.state.broadcastInfo);
              const e =
                this.props.broadcastAccountID &&
                p.b.InitFromAccountID(this.props.broadcastAccountID);
              this.setState({
                broadcastInfo:
                  e &&
                  h.BroadcastWatchStore.StartInfo(e.ConvertTo64BitString()),
              });
            }
          }
          componentWillUnmount() {
            this.state.broadcastInfo &&
              h.BroadcastWatchStore.StopInfo(this.state.broadcastInfo);
          }
          render() {
            return this.state.broadcastInfo
              ? a.createElement(_.y, {
                  src: this.state.broadcastInfo.m_strThumbnailUrl,
                })
              : null;
          }
        };
        F = (0, i.Cg)([r.PA], F);
        class P extends a.Component {
          render() {
            let e =
              u.xm.FriendStore.FriendGroupStore.incoming_invites_group.map_steamid_to_mutual_friends.get(
                this.props.friend.steamid64,
              );
            if (null != e) {
              let t = 10,
                n = a.createElement(
                  "div",
                  { className: "mutualFriendTitle" },
                  " ",
                  (0, m.we)("#FriendGroup_MutualFriends_Title"),
                  " ",
                ),
                i = [],
                o = Array.from(e);
              for (let e = 0; e < o.length && e < t; e++) {
                let t = u.xm.FriendStore.GetFriend(o[e]);
                i.push(
                  a.createElement(
                    "div",
                    { className: "mutualFriend", key: t.steamid64 },
                    a.createElement("img", {
                      className: "mutualFriendAvatar",
                      src: t.persona.avatar_url_medium,
                    }),
                    a.createElement(
                      "div",
                      { className: "mutualFriendLabel" },
                      t.display_name,
                    ),
                  ),
                );
              }
              return (
                o.length >= t &&
                  i.push(
                    a.createElement(
                      "div",
                      { className: "mutualFriend" },
                      a.createElement(
                        "div",
                        { className: "mutualFriendLabel plusOthersLabel" },
                        (0, m.Yp)(
                          "#FriendGroup_MutualFriends_Others",
                          o.length - t,
                        ),
                      ),
                    ),
                  ),
                a.createElement(
                  "div",
                  { className: "mutualFriendsContainer" },
                  " ",
                  n,
                  " ",
                  a.createElement("div", null, " ", i, " "),
                  " ",
                )
              );
            }
            return a.createElement("div", null);
          }
        }
        let B = class extends a.Component {
          constructor(e) {
            super(e);
          }
          render() {
            let e = this.props.hoverInstance.hover,
              t = e.persona,
              n = {
                className: "miniProfileHoverInner",
                persona: e.persona,
                data_loader: e.data_loader,
              };
            t.is_watchingbroadcast &&
              ((n.broadcast_description = e.friend.GetBroadcastDescription()),
              (n.broadcast_thumbnail = a.createElement(
                "div",
                { className: "watchingbroadcastThumbnail" },
                a.createElement(F, {
                  broadcastAccountID: t.m_broadcastAccountId,
                }),
              ))),
              e.friend.has_nickname && (n.nickname = e.friend.nickname),
              (n.is_friend =
                e.friend.is_friend || e.friend == u.xm.FriendStore.self),
              (n.is_blocked = e.friend.is_blocked),
              (n.friend_relationship = e.friend.efriendrelationship);
            let i = a.createElement("div", null),
              r = this.props.hoverInstance.context;
            return (
              r &&
                r.friendGroup &&
                r.friendGroup.m_eDisplayType == o.oy.eIncomingInvites &&
                (i = a.createElement(P, { friend: e.friend })),
              (n.mutual_friends = i),
              a.createElement(M, { ...n })
            );
          }
        };
        B = (0, i.Cg)([r.PA], B);
        class x extends l.Ad {
          m_hoverProps;
          m_reactRoot;
          constructor(e, t) {
            super("hoverpopup", {
              title: "hover",
              html_class: "friendsui-container HoverPopup client_chat_frame",
              body_class: "HoverPopupBody Hover" + e.className,
              replace_existing_popup: !0,
              target_browser: t,
              window_opener_id:
                e.target.ownerDocument.defaultView?.SteamClient.Browser.GetBrowserID(),
              eCreationFlags: (0, l.yq)(l.Dr.Tooltip),
            }),
              (this.m_hoverProps = e);
          }
          UpdateParamsBeforeShow(e) {
            let t = c.pd(
              this.m_hoverProps.target.ownerDocument.defaultView,
              this.m_hoverProps.target.getBoundingClientRect(),
            );
            return (
              (e.dimensions = {
                left: t.right,
                top: t.top,
                width: 1,
                height: 1,
              }),
              (e.availscreenwidth =
                this.m_hoverProps.target.ownerDocument.defaultView.screen.availWidth),
              (e.availscreenheight =
                this.m_hoverProps.target.ownerDocument.defaultView.screen.availHeight),
              e
            );
          }
          Render(e, t) {
            let n = this.InternalRender();
            (this.m_reactRoot = s.H(t)),
              this.m_reactRoot.render(
                a.createElement(N, { ...this.m_hoverProps, popup: e }, n),
              );
          }
          OnClose() {
            this.m_reactRoot.unmount();
          }
        }
        class O extends x {
          m_instance;
          constructor(e, t, n) {
            super(
              {
                target: e,
                visibilityObserver: t,
                className: "friendHover miniProfileHover",
              },
              n,
            ),
              (this.m_instance = t);
          }
          OnLoad() {}
          OnResize() {}
          InternalRender() {
            return a.createElement(B, { hoverInstance: this.m_instance });
          }
        }
        let N = class extends a.Component {
          m_elHover;
          m_bNoSpace = !1;
          state = {
            x: void 0,
            y: void 0,
            width: void 0,
            height: void 0,
            hoverPositionReady: !1,
          };
          bindHover(e) {
            (this.m_elHover = e || void 0), this.positionHover();
          }
          componentDidUpdate() {
            this.positionHover();
          }
          render() {
            return (
              void 0 !== this.state.x &&
                this.props.target.ownerDocument.defaultView.SteamClient.Window.GetWindowRestoreDetails().then(
                  (e) => {
                    const t =
                        this.state.x -
                        this.props.target.ownerDocument.defaultView.screenX,
                      n =
                        this.state.y -
                        this.props.target.ownerDocument.defaultView.screenY;
                    try {
                      this.props.popup.SteamClient.Window.PositionWindowRelative(
                        e,
                        t,
                        n,
                        this.state.width,
                        this.state.height,
                      );
                    } catch (e) {
                      console.error(e);
                    }
                  },
                ),
              a.createElement(
                "div",
                { className: "HoverPositionPopup", ref: this.bindHover },
                this.props.children,
              )
            );
          }
          positionHover() {
            let e = this.m_elHover,
              t = this.props.target;
            if (!e || !t) return;
            if (
              this.state.hoverPositionReady &&
              this.props.visibilityObserver &&
              !this.props.visibilityObserver.visible
            )
              return;
            let n = this.props.popup,
              i = t.ownerDocument.defaultView;
            if (!n || n.closed) return;
            let o = c.pd(i, t.getBoundingClientRect()),
              r = c.pd(n, e.getBoundingClientRect()),
              a = o.left,
              s = o.top;
            let l = n.screen,
              m = 0;
            l.availLeft && (m = l.availLeft);
            let d = o.right + c.No(r) + 2,
              u = n.screen.availWidth + m - d,
              h = o.left - c.No(r) - m;
            a =
              u < 2 && h > u ? o.left - c.No(r) - 3 + 3 : o.left + c.No(o) - -3;
            let p = 0;
            c.SY(o) < 48 && (p = Math.floor(c.SY(o) / 2) - 24),
              (s = o.top - 15 + p);
            if (o.top + c.SY(r) + 0 > n.screen.availHeight) {
              let t = c.SY(r) + 0 - (n.screen.availHeight - o.top),
                i = null != e.querySelector(".miniprofile_ingame") ? 78 : 24;
              (t = Math.min(c.SY(r) - i, t)), (s = o.top - t);
            }
            (a = Math.floor(a)), (s = Math.floor(s));
            let _ = Math.ceil(c.No(r)),
              g = Math.ceil(c.SY(r));
            a != this.state.x && this.setState({ x: a }),
              s != this.state.y && this.setState({ y: s }),
              _ != this.state.width && this.setState({ width: _ }),
              g != this.state.height && this.setState({ height: g }),
              this.state.hoverPositionReady ||
                this.setState({ hoverPositionReady: !0 });
          }
        };
        (0, i.Cg)([d.oI], N.prototype, "bindHover", null),
          (N = (0, i.Cg)([r.PA], N));
      },
      91364: (e, t, n) => {
        "use strict";
        n.d(t, {
          HS: () => ge,
          tj: () => Y,
          iS: () => pe,
          Rm: () => me,
          Jw: () => te,
          Hf: () => ne,
        });
        var i = n(34629),
          o = n(58743),
          r = n(78919),
          a = n(41230),
          s = n(14355),
          l = n(63696),
          c = n(82924),
          m = n(74002),
          d = n(89021);
        function u(e, t, n) {
          (0, s.HT)(
            l.createElement(h, { player: t }),
            n,
            "NicknameDialog",
            {
              strTitle: (0, m.we)("#Friend_Menu_AddNickname"),
              popupWidth: 640,
              popupHeight: 400,
            },
            (0, r.h8)(n),
          );
        }
        let h = class extends l.Component {
          constructor(e) {
            super(e),
              (this.state = {
                strCurrentNameEntry: this.props.player.nickname || "",
              });
          }
          HandleTextEntry(e) {
            this.setState({ strCurrentNameEntry: e.currentTarget.value });
          }
          HandleSubmit(e) {
            o.xm.FriendStore.SetPlayerNickname(
              this.props.player,
              this.state.strCurrentNameEntry,
            ).then((e) => {
              1 == e && this.props.closeModal && this.props.closeModal();
            });
          }
          componentDidUpdate(e) {
            e.player !== this.props.player &&
              this.setState({
                strCurrentNameEntry: this.props.player.nickname,
              });
          }
          render() {
            let e = "friend editNickname",
              t = this.props.player.has_nickname;
            return (
              this.props.player.persona.is_ingame
                ? (e += " ingame")
                : this.props.player.persona.is_online && (e += " online"),
              t && (e += " nickNamed"),
              l.createElement(
                s.x_,
                {
                  className: "Dialog_EditNickName",
                  onEscKeypress: this.props.closeModal,
                },
                l.createElement(
                  d.U9,
                  {
                    classNameContent: "NicknameDialog",
                    onSubmit: this.HandleSubmit,
                  },
                  l.createElement(
                    d.Y9,
                    null,
                    t
                      ? (0, m.we)("#Friend_Menu_ChangeNickname")
                      : (0, m.we)("#Friend_Menu_AddNickname"),
                  ),
                  l.createElement(
                    d.nB,
                    null,
                    l.createElement(
                      d.a3,
                      null,
                      t
                        ? (0, m.we)("#Nickname_EditNickname")
                        : (0, m.we)("#Nickname_AddANickname"),
                    ),
                    l.createElement(
                      d.a3,
                      null,
                      l.createElement(
                        "div",
                        { className: e },
                        l.createElement("img", {
                          className: "avatarMedium",
                          src: this.props.player.persona.avatar_url_full,
                        }),
                        l.createElement(
                          "div",
                          { className: "labelHolder" },
                          l.createElement(
                            "div",
                            { className: "mediumName" },
                            this.props.player.secondary_display_name,
                          ),
                          l.createElement(
                            "div",
                            { className: "nickNamedAs" },
                            (0, m.we)("#Nickname_NickNameAsDialog"),
                          ),
                          l.createElement(
                            "div",
                            { className: "mediumName asNickName" },
                            l.createElement(d.pd, {
                              placeholder: t
                                ? (0, m.we)("#Nickname_PlaceHolderNickName")
                                : (0, m.we)(
                                    "#Nickname_PlaceHolderNickNameFresh",
                                  ),
                              className: "nicknameInput",
                              value: this.state.strCurrentNameEntry,
                              onChange: this.HandleTextEntry,
                              autoFocus: !0,
                              bShowClearAction: !0,
                            }),
                          ),
                        ),
                      ),
                    ),
                  ),
                  l.createElement(
                    d.wi,
                    null,
                    l.createElement(d.CB, { onCancel: this.props.closeModal }),
                  ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([c.oI], h.prototype, "HandleTextEntry", null),
          (0, i.Cg)([c.oI], h.prototype, "HandleSubmit", null),
          (h = (0, i.Cg)([a.PA], h));
        var p = n(13419),
          _ = n(77631),
          g = n(50622),
          C = n(99862),
          f = n(89193);
        function S(e, t, n) {
          let i = n ? [n.accountid] : [];
          (0, s.HT)(
            l.createElement(v, { browserContext: e, rgPreSelectedFriends: i }),
            t,
            "CreateFriendCategoryDialog",
            {
              strTitle: (0, m.we)("#FriendGroup_Menu_CreateGroup"),
              popupWidth: 664,
              popupHeight: 700,
            },
            (0, r.h8)(t),
          );
        }
        class v extends l.Component {
          constructor(e) {
            super(e),
              (this.state = {
                strNameEntry: e.group ? e.group.name : "",
                strError: null,
                rgPickedFriends: e.rgPreSelectedFriends.map((e) =>
                  o.xm.FriendStore.GetPlayer(e),
                ),
              });
          }
          HandleTextEntry(e) {
            this.setState({ strNameEntry: e.target.value, strError: null });
          }
          HandleSubmit() {
            const e = this.state.rgPickedFriends,
              t = this.state.strNameEntry;
            if (this.props.group) {
              let n = new Set(this.props.group.GetCurrentMemberSet()),
                i = [],
                r = [];
              for (let t of e) {
                n.has(t.accountid)
                  ? n.delete(t.accountid)
                  : i.push(t.persona.m_steamid.ConvertTo64BitString());
              }
              n.forEach((e) => {
                r.push(_.b.InitFromAccountID(e).ConvertTo64BitString());
              }),
                o.xm.FriendStore.FriendGroupStore.ManageGroup(
                  this.props.group,
                  t,
                  i,
                  r,
                ).then((e) => {
                  e
                    ? this.props.closeModal && this.props.closeModal()
                    : this.setState({
                        strError: (0, m.we)(
                          "#FriendGroup_ManageGroup_ErrorFailed",
                        ),
                      });
                });
            } else {
              if (!t)
                return void this.setState({
                  strError: (0, m.we)("#FriendGroup_CreateGroup_ErrorNeedName"),
                });
              let n = e.map((e) => e.persona.m_steamid.ConvertTo64BitString());
              o.xm.FriendStore.FriendGroupStore.CreateGroup(t, n).then((e) => {
                e
                  ? this.props.closeModal && this.props.closeModal()
                  : this.setState({
                      strError: (0, m.we)(
                        "#FriendGroup_CreateGroup_ErrorFailed",
                      ),
                    });
              });
            }
          }
          render() {
            return l.createElement(
              s.x_,
              { onEscKeypress: this.props.closeModal },
              l.createElement(
                d.U9,
                {
                  classNameContent: "ManageGroupDialog",
                  onSubmit: this.HandleSubmit,
                },
                l.createElement(
                  d.Y9,
                  null,
                  this.props.group
                    ? (0, m.we)("#FriendGroup_Menu_Manage")
                    : (0, m.we)("#FriendGroup_Menu_CreateGroup"),
                ),
                l.createElement(
                  d.nB,
                  null,
                  this.state.strError &&
                    l.createElement(
                      d.a3,
                      { className: "nicknameError" },
                      this.state.strError,
                    ),
                  l.createElement(d.pd, {
                    type: "text",
                    label: (0, m.we)("#FriendGroup_CategoryName"),
                    className: "nicknameInput",
                    value: this.state.strNameEntry,
                    onChange: this.HandleTextEntry,
                    autoFocus: !0,
                  }),
                  l.createElement(p.r, {
                    label: (0, m.we)("#FriendGroup_CategoryMembers"),
                    eSort: 1,
                    rgPickedFriends: this.state.rgPickedFriends,
                    onChange: (e) => this.setState({ rgPickedFriends: e }),
                  }),
                ),
                l.createElement(
                  d.wi,
                  null,
                  l.createElement(d.CB, { onCancel: this.props.closeModal }),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([c.oI], v.prototype, "HandleTextEntry", null),
          (0, i.Cg)([c.oI], v.prototype, "HandleSubmit", null);
        class b extends l.Component {
          m_mapCategoryChecks = f.sH.map();
          state = { strError: null };
          componentDidUpdate(e) {
            e.friend !== this.props.friend && this.m_mapCategoryChecks.clear();
          }
          HandleSubmit() {
            let e = [];
            o.xm.FriendStore.FriendGroupStore.user_groups.forEach((t) => {
              if (this.m_mapCategoryChecks.has(t.unique_id)) {
                let n, i;
                this.m_mapCategoryChecks.get(t.unique_id) ? (i = t) : (n = t),
                  e.push(
                    o.xm.FriendStore.FriendGroupStore.TransferFriendFromToGroup(
                      this.props.friend,
                      n,
                      i,
                    ),
                  );
              }
            }),
              Promise.all(e).then((e) => {
                let t = !1;
                for (let n of e) for (let e of n) e || (t = !0);
                t
                  ? this.setState({
                      strError: (0, m.we)(
                        "#FriendGroup_ManageGroup_ErrorFailed",
                      ),
                    })
                  : this.props.closeModal();
              });
          }
          CreateNew(e) {
            S((0, r.CO)(e), (0, g.uX)(e), this.props.friend);
          }
          render() {
            return l.createElement(
              s.x_,
              { onEscKeypress: this.props.closeModal },
              l.createElement(
                d.U9,
                {
                  classNameContent: "AssignCategoriesDialog",
                  onSubmit: this.HandleSubmit,
                },
                l.createElement(
                  d.Y9,
                  null,
                  (0, m.we)("#FriendGroup_Categorize_Title"),
                ),
                l.createElement(
                  d.nB,
                  null,
                  this.state.strError &&
                    l.createElement(
                      d.a3,
                      { className: "nicknameError" },
                      this.state.strError,
                    ),
                  l.createElement(
                    d.dR,
                    null,
                    l.createElement(
                      d.VP,
                      null,
                      l.createElement(C.bP, {
                        friend: this.props.friend,
                        className: "AssignCategoriesDialog_Friend",
                        noActions: !0,
                        context: null,
                      }),
                    ),
                  ),
                  l.createElement(I, {
                    friend: this.props.friend,
                    mapChecks: this.m_mapCategoryChecks,
                  }),
                  l.createElement(
                    d.dR,
                    { className: "AssignCategoriesDialog_AddNewButton" },
                    l.createElement(
                      d.$n,
                      { onClick: this.CreateNew },
                      (0, m.we)("#FriendGroup_Categorize_AddNew"),
                    ),
                  ),
                ),
                l.createElement(
                  d.wi,
                  null,
                  l.createElement(d.CB, { onCancel: this.props.closeModal }),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([c.oI], b.prototype, "HandleSubmit", null),
          (0, i.Cg)([c.oI], b.prototype, "CreateNew", null);
        let I = class extends l.Component {
          render() {
            let e = o.xm.FriendStore.FriendGroupStore.user_groups.map((e) =>
              l.createElement(w, {
                friend: this.props.friend,
                group: e,
                key: e.unique_id,
                mapChecks: this.props.mapChecks,
              }),
            );
            return l.createElement(
              l.Fragment,
              null,
              l.createElement(
                d.JU,
                null,
                (0, m.we)("#FriendGroup_Categorize_Categories"),
              ),
              l.createElement(
                "div",
                { className: "FriendCategoryCheckboxes_List" },
                e,
              ),
            );
          }
        };
        I = (0, i.Cg)([a.PA], I);
        let w = class extends l.Component {
          OnToggle(e) {
            e != this.props.group.HasMember(this.props.friend.accountid)
              ? this.props.mapChecks.set(this.props.group.unique_id, e)
              : this.props.mapChecks.delete(this.props.group.unique_id);
          }
          OnContextMenu(e) {
            pe((0, r.CO)(e), this.props.group, e);
          }
          render() {
            let e,
              t = this.props.group,
              n = this.props.friend;
            return (
              (e = this.props.mapChecks.has(t.unique_id)
                ? this.props.mapChecks.get(t.unique_id)
                : t.HasMember(n.accountid)),
              l.createElement(
                "div",
                { onContextMenu: this.OnContextMenu },
                l.createElement(d.Yh, {
                  label: t.name,
                  checked: e,
                  onChange: this.OnToggle,
                }),
              )
            );
          }
        };
        (0, i.Cg)([c.oI], w.prototype, "OnToggle", null),
          (0, i.Cg)([c.oI], w.prototype, "OnContextMenu", null),
          (w = (0, i.Cg)([a.PA], w));
        var y = n(94762),
          E = n(27816),
          D = n(93715),
          A = n(82789),
          T = n(51802),
          M = n(78116),
          R = n(91466),
          k = n(50669),
          L = n(25698),
          G = n(81734),
          F = n(27828),
          P = n(46014),
          B = n(83957),
          x = n.n(B);
        let O = class extends l.Component {
          constructor(e) {
            super(e);
            let t = o.xm.FriendStore.self;
            this.state = {
              strCurrentNameEntry: t.primary_display_name,
              strError: "",
            };
          }
          HandleTextEntry(e) {
            this.setState({
              strCurrentNameEntry: e.currentTarget.value,
              strError: "",
            });
          }
          HandleSubmit(e) {
            this.SetPersonaName(this.state.strCurrentNameEntry);
          }
          DisplayError(e) {
            this.setState({ strError: e });
          }
          SetPersonaName(e) {
            if (
              (this.setState({ strError: "" }),
              M.TS.IN_CLIENT && null != SteamClient.WebChat.SetPersonaName)
            )
              SteamClient.WebChat.SetPersonaName(
                this.state.strCurrentNameEntry,
              ).then((e) => {
                this.props.eResultCallback &&
                  this.props.eResultCallback(e.eResult),
                  22 === e.eResult
                    ? this.props.closeModal && this.props.closeModal()
                    : e.strMessageToken
                      ? this.DisplayError((0, m.we)(e.strMessageToken))
                      : this.props.closeModal && this.props.closeModal();
              });
            else {
              let t = new FormData();
              t.append("sessionid", M.TS.SESSIONID), t.append("persona", e);
              let n = o.xm.FriendStore.self,
                i =
                  M.TS.CHAT_BASE_URL +
                  "profiles/" +
                  n.steamid64 +
                  "/ajaxsetpersonaname/";
              x()
                .post(i, t)
                .then((e) => {
                  let t = e.data;
                  if (t.success)
                    this.props.closeModal && this.props.closeModal();
                  else {
                    let e = t.message.replace("<br />", "");
                    this.DisplayError(e);
                  }
                })
                .catch((e) => {
                  this.DisplayError(
                    (0, m.we)("#Friends_NameChangeFailed_Info"),
                  );
                });
            }
          }
          render() {
            let e = o.xm.FriendStore.self,
              t = "friend changePersonaName";
            e.persona.is_ingame
              ? (t += " ingame")
              : e.persona.is_online && (t += " online");
            let n = !1;
            return (
              this.state.strError && (n = !0),
              l.createElement(
                s.x_,
                {
                  className: "Dialog_ChangePersonaName",
                  onEscKeypress: this.props.closeModal,
                },
                l.createElement(
                  d.U9,
                  {
                    classNameContent: "ChangePersonaNameDialog",
                    onSubmit: this.HandleSubmit,
                  },
                  l.createElement(
                    d.Y9,
                    null,
                    (0, m.we)("#ChangePersona_Title"),
                  ),
                  l.createElement(
                    d.nB,
                    null,
                    l.createElement(
                      d.a3,
                      null,
                      (0, m.we)("#ChangePersona_Description"),
                    ),
                    l.createElement(
                      d.a3,
                      null,
                      l.createElement(
                        "div",
                        { className: t },
                        l.createElement("img", {
                          className: "avatarMedium",
                          src: e.persona.avatar_url_full,
                        }),
                        l.createElement(
                          "div",
                          { className: "labelHolder" },
                          n &&
                            l.createElement(
                              "div",
                              { className: "error" },
                              this.state.strError,
                            ),
                          l.createElement(
                            "div",
                            null,
                            l.createElement(
                              "div",
                              null,
                              (0, m.we)("#ChangePersona_Change"),
                            ),
                            l.createElement(
                              "div",
                              { className: "mediumName" },
                              l.createElement(d.pd, {
                                placeholder: (0, m.we)(
                                  "#ChangePersona_PlaceHolder",
                                ),
                                className: "changePersonaInput",
                                value: this.state.strCurrentNameEntry,
                                onChange: this.HandleTextEntry,
                                autoFocus: !0,
                              }),
                            ),
                          ),
                        ),
                      ),
                    ),
                  ),
                  l.createElement(
                    d.wi,
                    null,
                    l.createElement(d.CB, { onCancel: this.props.closeModal }),
                  ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([c.oI], O.prototype, "HandleTextEntry", null),
          (0, i.Cg)([c.oI], O.prototype, "HandleSubmit", null),
          (O = (0, i.Cg)([a.PA], O));
        var N = n(32245),
          V = n(32965),
          U = n(52434),
          H = n(63887);
        let W = class extends l.Component {
          constructor(e) {
            super(e),
              (this.state = this.ComputeStateFromNotificationSettings(
                this.props.player.notification_settings,
              ));
          }
          ConvertENotificationSettingToBoolean(e) {
            return 1 == e;
          }
          ComputeStateFromNotificationSettings(e) {
            let t,
              n = !1,
              i = !1;
            for (const t in e) {
              if (0 != e[t]) {
                i = !0;
                break;
              }
            }
            return (
              i
                ? ((t = V.u()),
                  (t.bNotifications_ShowIngame =
                    this.ConvertENotificationSettingToBoolean(
                      e.Notifications_ShowInGame,
                    )),
                  (t.bNotifications_ShowMessage =
                    this.ConvertENotificationSettingToBoolean(
                      e.Notifications_ShowMessage,
                    )),
                  (t.bNotifications_ShowOnline =
                    this.ConvertENotificationSettingToBoolean(
                      e.Notifications_ShowOnline,
                    )),
                  (t.bSounds_PlayIngame =
                    this.ConvertENotificationSettingToBoolean(
                      e.Sounds_PlayInGame,
                    )),
                  (t.bSounds_PlayMessage =
                    this.ConvertENotificationSettingToBoolean(
                      e.Sounds_PlayMessage,
                    )),
                  (t.bSounds_PlayOnline =
                    this.ConvertENotificationSettingToBoolean(
                      e.Sounds_PlayOnline,
                    )))
                : ((n = !0), (t = o.xm.SettingsStore.FriendsSettings)),
              { settings: t, bUseDefaults: n }
            );
          }
          ConvertBooleanToENotificationSetting(e) {
            return e ? 1 : 2;
          }
          FriendSettingsToNotificationSettings(e) {
            let t = new D.YS();
            return (
              (t.Notifications_SendMobile =
                this.props.player.notification_settings.Notifications_SendMobile),
              this.state.bUseDefaults ||
                ((t.Notifications_ShowInGame =
                  this.ConvertBooleanToENotificationSetting(
                    this.state.settings.bNotifications_ShowIngame,
                  )),
                (t.Notifications_ShowMessage =
                  this.ConvertBooleanToENotificationSetting(
                    this.state.settings.bNotifications_ShowMessage,
                  )),
                (t.Notifications_ShowOnline =
                  this.ConvertBooleanToENotificationSetting(
                    this.state.settings.bNotifications_ShowOnline,
                  )),
                (t.Sounds_PlayInGame =
                  this.ConvertBooleanToENotificationSetting(
                    this.state.settings.bSounds_PlayIngame,
                  )),
                (t.Sounds_PlayMessage =
                  this.ConvertBooleanToENotificationSetting(
                    this.state.settings.bSounds_PlayMessage,
                  )),
                (t.Sounds_PlayOnline =
                  this.ConvertBooleanToENotificationSetting(
                    this.state.settings.bSounds_PlayOnline,
                  ))),
              t
            );
          }
          HandleSubmit() {
            o.xm.FriendStore.SetPlayerNotificationSettings(
              this.props.player,
              this.FriendSettingsToNotificationSettings(this.state.settings),
            ).then((e) => {
              1 == e && this.props.closeModal && this.props.closeModal();
            });
          }
          componentDidUpdate(e) {
            e.player !== this.props.player &&
              this.setState(
                this.ComputeStateFromNotificationSettings(
                  this.props.player.notification_settings,
                ),
              );
          }
          OnSettingToggled(e, t) {
            this.setState({ settings: { ...this.state.settings, [e]: t } });
          }
          FriendsSettingsCheckbox(e) {
            return l.createElement(d.Yh, {
              key: e.strName,
              disabled: this.state.bUseDefaults,
              onChange: (t) => {
                this.OnSettingToggled(e.strName, t);
              },
              checked: !!this.state.settings[e.strName],
            });
          }
          NotificationRow(e) {
            let t = this.FriendsSettingsCheckbox;
            return l.createElement(
              "div",
              null,
              l.createElement(
                "div",
                { className: "FriendsSettingsNotificationRow" },
                l.createElement(
                  "div",
                  { className: "FriendsSettingsNotificationRow_Label" },
                  e.strLabel,
                ),
                l.createElement(
                  "div",
                  { className: "FriendsSettingsNotificationRow_Checkbox" },
                  l.createElement(t, { strName: e.strNameShow }),
                ),
                l.createElement(
                  "div",
                  { className: "FriendsSettingsNotificationRow_Checkbox" },
                  l.createElement(t, { strName: e.strNameSound }),
                ),
              ),
            );
          }
          OnDefaultToggled(e) {
            e
              ? this.setState({
                  settings: o.xm.SettingsStore.FriendsSettings,
                  bUseDefaults: !0,
                })
              : this.setState({ bUseDefaults: !1 });
          }
          render() {
            let e = this.NotificationRow,
              t = this.state.bUseDefaults,
              n = "friend editFriendNotifications";
            return (
              (n += (0, U.rO)(this.props.player.persona)),
              l.createElement(
                s.x_,
                {
                  className: "Dialog_FriendNotifications",
                  onEscKeypress: this.props.closeModal,
                },
                l.createElement(
                  d.U9,
                  {
                    classNameContent: "FriendNotificationsDialog",
                    onSubmit: this.HandleSubmit,
                  },
                  l.createElement(
                    d.Y9,
                    null,
                    (0, m.we)("#Friend_Menu_NotificationsTitle"),
                  ),
                  l.createElement(
                    d.nB,
                    { className: t ? "useDefaults" : "" },
                    l.createElement(
                      d.a3,
                      null,
                      (0, m.we)(
                        "#FriendNotifications_Instructions",
                        this.props.player.display_name,
                      ),
                    ),
                    l.createElement(
                      d.a3,
                      null,
                      l.createElement(
                        "div",
                        { className: n },
                        l.createElement(H.i8, {
                          persona: this.props.player.persona,
                          size: "Large",
                        }),
                        l.createElement(
                          "div",
                          { className: "labelHolder" },
                          this.props.player.primary_display_name,
                          !this.props.player.is_display_name_nickname &&
                            this.props.player.has_secondary_display_name &&
                            l.createElement(
                              "span",
                              { className: "playerNickname" },
                              " (",
                              this.props.player.secondary_display_name,
                              ")",
                            ),
                          this.props.player.is_display_name_nickname &&
                            l.createElement(
                              "span",
                              {
                                className: "playerNicknameBracket",
                                title: (0, m.we)("#isNickname"),
                              },
                              "*",
                            ),
                        ),
                      ),
                    ),
                    l.createElement(d.Yh, {
                      className: "useDefaultsCheckBox",
                      label: (0, m.we)("#FriendNotifications_UseDefaults"),
                      onChange: (e) => {
                        this.OnDefaultToggled(e);
                      },
                      checked: this.state.bUseDefaults,
                    }),
                    l.createElement(
                      "div",
                      { className: "SettingsGroup" },
                      l.createElement(
                        "div",
                        {
                          className:
                            "FriendsSettingsNotificationRow FriendsSettingsNotificationRow_Header",
                        },
                        l.createElement(
                          "div",
                          { className: "FriendsSettingsNotificationRow_Label" },
                          (0, m.we)("#FriendSettings_Notification_Table_Label"),
                        ),
                        l.createElement(
                          "div",
                          {
                            className:
                              "FriendsSettingsNotificationRow_Checkbox",
                          },
                          (0, m.we)("#FriendSettings_Notification_Table_Show"),
                        ),
                        l.createElement(
                          "div",
                          {
                            className:
                              "FriendsSettingsNotificationRow_Checkbox",
                          },
                          (0, m.we)("#FriendSettings_Notification_Table_Play"),
                        ),
                      ),
                      l.createElement(e, {
                        strLabel: (0, m.we)(
                          "#FriendSettings_FriendNotification_FriendJoins",
                        ),
                        strNameShow: "bNotifications_ShowIngame",
                        strNameSound: "bSounds_PlayIngame",
                      }),
                      l.createElement(e, {
                        strLabel: (0, m.we)(
                          "#FriendSettings_FriendNotification_FriendOnline",
                        ),
                        strNameShow: "bNotifications_ShowOnline",
                        strNameSound: "bSounds_PlayOnline",
                      }),
                      l.createElement(e, {
                        strLabel: (0, m.we)(
                          "#FriendSettings_Notification_ChatMessage",
                        ),
                        strNameShow: "bNotifications_ShowMessage",
                        strNameSound: "bSounds_PlayMessage",
                      }),
                    ),
                  ),
                  l.createElement(
                    d.wi,
                    null,
                    l.createElement(d.CB, { onCancel: this.props.closeModal }),
                  ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([c.oI], W.prototype, "HandleSubmit", null),
          (0, i.Cg)([c.oI], W.prototype, "OnSettingToggled", null),
          (0, i.Cg)([c.oI], W.prototype, "FriendsSettingsCheckbox", null),
          (0, i.Cg)([c.oI], W.prototype, "NotificationRow", null),
          (0, i.Cg)([c.oI], W.prototype, "OnDefaultToggled", null),
          (W = (0, i.Cg)([a.PA], W));
        var z = n(24803),
          j = n(20074),
          q = n(27281),
          K = n(99059),
          Z = n(25444),
          Q = n(74977),
          $ = n(42674),
          X = n(50228);
        function Y(e, t, n, i) {
          return (0, y.lX)(
            l.createElement(ie, {
              browserContext: e,
              context: t,
              friend: n,
              ownerWindow: (0, g.uX)(i),
            }),
            i,
            { bForcePopup: M.TS.IN_STEAMUI },
          );
        }
        let J = (0, a.PA)(function (e) {
            let t = e.friend,
              n = [],
              i = t.persona_name_history,
              o = t.persona_name_history_loaded;
            if (o && i.length > 0) {
              let e = 0;
              for (let t of i)
                n.push(
                  l.createElement(
                    "div",
                    { className: "recentName", key: "name_history_" + e },
                    t,
                  ),
                ),
                  e++;
            } else
              o
                ? n.push(
                    l.createElement(
                      "div",
                      { className: "recentName", key: "name_history_none" },
                      (0, m.we)("#Friend_Menu_RecentAliases_None"),
                    ),
                  )
                : n.push(
                    l.createElement(
                      "div",
                      { className: "recentName", key: "name_history_loading" },
                      (0, m.we)("#Friend_Menu_RecentAliases_Loading"),
                    ),
                  );
            return l.createElement(
              l.Fragment,
              null,
              l.createElement(
                E.Vs,
                { label: (0, m.we)("#Friend_Menu_RecentAliases") },
                n,
              ),
            );
          }),
          ee = class extends l.Component {
            OnToggle(e) {
              this.props.group.ToggleMemberRoleState(
                this.props.friend.accountid,
                e,
              );
            }
            render() {
              let e = this.props.group.DefaultRoleID(),
                t = this.props.group.GetMemberRoleIDs(
                  this.props.friend.accountid,
                ),
                n = this.props.group.BIsAccountIDOwner(
                  this.props.friend.accountid,
                ),
                i = this.props.group.BCanEditRoles(),
                o = this.props.group
                  .GetRoles()
                  .slice()
                  .sort((t, n) =>
                    t.role_id == e
                      ? 1
                      : n.role_id == e
                        ? -1
                        : parseInt(t.role_id) - parseInt(n.role_id),
                  )
                  .map((n) => {
                    let o = -1 != t.findIndex((e) => e == n.role_id);
                    if (!o && !i) return null;
                    let r = n.name,
                      a = this.props.group.BCanIAssignRole(n.role_id);
                    return (
                      n.role_id == e
                        ? (r = (0, m.we)("#ChatRoomRole_Member"))
                        : r.startsWith("#ChatRoomRole_") && (r = (0, m.we)(r)),
                      l.createElement(re, {
                        key: n.role_id,
                        friend: this.props.friend,
                        group: this.props.group,
                        roleName: r,
                        roleID: n.role_id,
                        bHasRole: o,
                        bEditable: a,
                      })
                    );
                  }),
                r =
                  i && !n
                    ? (0, m.we)("#Friend_Menu_EditRoles")
                    : (0, m.we)("#Friend_Menu_ViewRoles");
              return l.createElement(
                l.Fragment,
                null,
                l.createElement(
                  E.Vs,
                  { label: r },
                  n
                    ? l.createElement(
                        E.kt,
                        {
                          className: "FriendMenuRoleCheckbox disabled",
                          key: "role",
                          onSelected: () => {},
                          bInteractableItem: !0,
                        },
                        l.createElement(G.OeC, null),
                        (0, m.we)("#ChatRoomRole_Owner"),
                      )
                    : o,
                ),
              );
            }
          };
        function te(e, t, n, i) {
          let o = (0, D.uQ)(t);
          if (1 != t)
            if (24 == t) {
              let t = l.createElement(
                z.uU,
                {
                  style: { color: "white" },
                  href: M.TS.HELP_BASE_URL + "wizard/HelpWithLimitedAccount",
                },
                (0, m.we)("#Friend_InviteError_VisitSteamSupport"),
              );
              (0, L.Ic)(
                e,
                (0, m.we)("#Friend_Menu_AddToFriendsList"),
                (0, m.we)("#Friend_Menu_AddToFriendsList"),
                (0, m.we)("#Button_OK"),
                (0, m.PP)("#Friend_InviteError_LimitedUserLink", t),
              );
            } else
              (0, L.Ic)(
                e,
                (0, m.we)("#Friend_Menu_AddToFriendsList"),
                (0, m.we)(o, i),
              );
          else
            (0, L.Ic)(
              e,
              (0, m.we)("#Friend_Menu_AddToFriendsList"),
              (0, m.we)("#Friend_InviteError", i),
            );
        }
        function ne(e, t) {
          const n = "steam://open/library/shared-apps/" + JSON.stringify(e);
          SteamClient.WebChat.OpenURLInClient(n, t.m_unPID, !1);
        }
        (0, i.Cg)([c.oI], ee.prototype, "OnToggle", null),
          (ee = (0, i.Cg)([a.PA], ee));
        let ie = class extends l.PureComponent {
          static contextType = M.QO;
          state = { bCanCreateRemotePlayInvite: !1, strConnectPrivate: "" };
          async componentDidMount() {
            const e = await o.xm.RemotePlayStore.BCanCreateInviteForGame(
                o.xm.FriendStore.self.persona.m_gameid,
                !1,
              ),
              t = o.xm.FriendStore.self.persona.m_unGamePlayedAppID;
            let n = "";
            M.TS.IN_CLIENT &&
              t &&
              (0, $.Dp)("WebChat.GetPrivateConnectString") &&
              (n = await SteamClient.WebChat.GetPrivateConnectString(t));
            let i = { bCanCreateRemotePlayInvite: e, strConnectPrivate: n };
            (i.bCanCreateRemotePlayInvite ==
              this.state.bCanCreateRemotePlayInvite &&
              i.strConnectPrivate == this.state.strConnectPrivate) ||
              this.setState(i);
          }
          ShowFriendProfile(e) {
            let t = this.props.friend.GetCommunityProfileURL();
            (0, R.EP)(e, t), e.stopPropagation();
          }
          ShowFriendFiltereredLibrary(e) {
            const t = [this.props.friend.accountid];
            (0, q.L)("FindGamesToPlayWithFriends/FriendsMenu"),
              e.stopPropagation();
            ne(t, (0, r.CO)(e));
          }
          async InviteFriend() {
            let { eResult: e, eFriendRelationship: t } =
              await o.xm.FriendStore.SendFriendInvite(this.props.friend);
            4 == t
              ? (0, L.Ic)(
                  this.props.ownerWindow,
                  (0, m.we)("#Friend_Menu_AddToFriendsList"),
                  (0, m.we)("#Friend_InviteSent"),
                )
              : 3 == t
                ? (0, L.Ic)(
                    this.props.ownerWindow,
                    (0, m.we)("#Friend_Menu_AddToFriendsList"),
                    (0, m.we)(
                      "#Friend_MutualInviteSent",
                      this.props.friend.display_name,
                    ),
                  )
                : te(
                    this.props.ownerWindow,
                    e,
                    0,
                    this.props.friend.display_name,
                  );
          }
          async AcceptIncomingInvite() {
            let { eResult: e, eFriendRelationship: t } =
              await o.xm.FriendStore.SendFriendInvite(this.props.friend);
            3 == t
              ? (0, L.Ic)(
                  this.props.ownerWindow,
                  (0, m.we)("#Friend_Menu_AddToFriendsList"),
                  (0, m.we)(
                    "#Friend_MutualInviteSent",
                    this.props.friend.display_name,
                  ),
                )
              : te(
                  this.props.ownerWindow,
                  e,
                  0,
                  this.props.friend.display_name,
                );
          }
          IgnoreIncomingInvite() {
            o.xm.FriendStore.RemoveFriend(this.props.friend).then((e) => {
              1 == e
                ? (0, L.Ic)(
                    this.props.ownerWindow,
                    (0, m.we)("#Friend_Menu_IgnoreIncomingInvite"),
                    (0, m.we)(
                      "#Friend_IgnoreIncomingInvite_Success",
                      this.props.friend.display_name,
                    ),
                  )
                : (0, L.Ic)(
                    this.props.ownerWindow,
                    (0, m.we)("#Friend_Menu_IgnoreIncomingInvite"),
                    (0, m.we)(
                      "#Friend_IgnoreIncomingInvite_Error",
                      this.props.friend.display_name,
                    ),
                  );
            });
          }
          RemoveFriend() {
            let e = 4 == this.props.friend.efriendrelationship,
              t = (0, m.we)(
                e
                  ? "#Friend_Menu_CancelInvitation"
                  : "#Friend_Menu_RemoveFromFriendsList",
              ),
              n = (0, m.we)(
                e
                  ? "#Friend_CancelInvitation_Confirm"
                  : "#Friend_RemoveFromFriendsList_Confirm",
                this.props.friend.display_name,
              ),
              i = (0, m.we)(
                e ? "#Button_Confirm" : "#Friend_Menu_RemoveFromFriendsList",
              ),
              r = (0, m.we)(
                e
                  ? "#Friend_CancelInvitation_Error"
                  : "#Friend_RemoveFromFriendsList_Error",
              );
            (0, L.Ci)(
              this.props.ownerWindow,
              t,
              n,
              i,
              (0, m.we)("#Button_Cancel"),
              !0,
            )
              .then(() => {
                o.xm.FriendStore.RemoveFriend(this.props.friend).then((e) => {
                  (3 != e && 6 != e) || (0, L.Ic)(this.props.ownerWindow, t, r);
                });
              })
              .catch(() => {});
          }
          BlockFriend() {
            (0, L.Ci)(
              this.props.ownerWindow,
              (0, m.we)("#Friend_Menu_BlockAllCommunication"),
              (0, m.we)(
                "#Friend_Block_Confirm",
                this.props.friend.display_name,
              ),
              (0, m.we)("#Friend_Menu_BlockAllCommunication"),
            )
              .then(() => {
                o.xm.FriendStore.BlockPlayer(this.props.friend);
              })
              .catch(() => {});
          }
          UnblockFriend() {
            (0, L.Ci)(
              this.props.ownerWindow,
              (0, m.we)("#Friend_Menu_UnblockAllCommunication"),
              (0, m.we)(
                "#Friend_Unblock_Confirm",
                this.props.friend.display_name,
              ),
              (0, m.we)("#Friend_Menu_UnblockAllCommunication"),
            )
              .then(() => {
                o.xm.FriendStore.BlockPlayer(this.props.friend, !0);
              })
              .catch(() => {});
          }
          InviteToGame(e, t) {
            o.xm.FriendStore.InviteToGame(this.props.friend, e, t);
          }
          InviteToLobby(e, t) {
            o.xm.FriendStore.InviteToLobby(this.props.friend, e, t);
          }
          InviteToWatch() {
            o.xm.FriendStore.InviteToWatch(this.props.friend);
          }
          InviteToRemotePlay() {
            let e = this.props.friend;
            o.xm.FriendStore.self !== e &&
              o.xm.RemotePlayStore.CreateInviteAndSession(
                e.accountid,
                o.xm.FriendStore.self.persona.m_gameid,
                this.props.browserContext,
              );
          }
          CancelRemotePlay() {
            let e = this.props.friend;
            o.xm.RemotePlayStore.CancelInviteAndSession(e.accountid);
          }
          CancelAllRemotePlay() {
            o.xm.RemotePlayStore.CancelAllInvitesAndSessions();
          }
          InviteToVoice(e, t) {
            (0, N.nn)(
              { invitee: this.props.friend, invitedto: e },
              null,
              this.props.ownerWindow,
            );
          }
          render() {
            let e,
              t,
              n = this.props,
              i = n.context || {},
              a = [],
              c = [],
              d = n.friend,
              h = o.xm.FriendStore.FavoritesStore,
              p = o.xm.FriendStore.self == d,
              _ = "favorites" == i.chatContext,
              g = i.group;
            !g && i.chat instanceof T.d && (g = i.chat.GetGroup());
            let C = !1,
              f = d.is_friend,
              v = 2 == d.efriendrelationship,
              I = 4 == d.efriendrelationship,
              w = v || 4 == d.efriendrelationship,
              y = o.xm.FriendStore.self.persona.m_unGamePlayedAppID;
            d.persona.m_unGamePlayedAppID;
            i.chat &&
              (i.chat instanceof A.s
                ? ((e = i.chat), e.BVoiceActive() && (C = !0))
                : i.chat instanceof T.d &&
                  ((t = i.chat), t.BVoiceActive() && (C = !0))),
              f ||
                v ||
                p ||
                a.push(
                  l.createElement(
                    "div",
                    {
                      className: "contextMenuLabel contextMenuNotAFriend",
                      key: "header",
                    },
                    (0, m.we)("#Friend_Menu_NotAFriendLabel"),
                  ),
                ),
              !C ||
                p ||
                this.context?.IN_GAMEPADUI ||
                a.push(l.createElement(oe, { friend: this.props.friend })),
              i.tab &&
                a.push(
                  l.createElement(
                    E.kt,
                    {
                      key: "closetab",
                      onSelected: () => {
                        o.xm.UIStore.CloseTab(n.browserContext, i.tab);
                      },
                    },
                    (0, m.we)(
                      this.context?.IN_GAMEPADUI
                        ? "#Chat_CloseTabAction_SteamDeck"
                        : "#Chat_CloseTabAction",
                    ),
                  ),
                ),
              e ||
                i.tab ||
                v ||
                I ||
                p ||
                d.is_blocked ||
                a.push(
                  l.createElement(
                    E.kt,
                    {
                      key: "chat",
                      className: f ? "" : "SendMessageContextNotFriends",
                      onSelected: () => {
                        n.friend.OpenChatDialog(n.browserContext);
                      },
                    },
                    (0, m.we)("#Friend_Menu_SendMessage"),
                  ),
                );
            let D = o.xm.ChatStore.BIsEligibleForVoiceChat(d, e),
              R = o.xm.ChatStore.GetActiveVoiceChat();
            R && R instanceof A.s && R.accountid_partner == d.accountid
              ? a.push(
                  l.createElement(
                    E.kt,
                    {
                      key: "voicechat",
                      onSelected: () => {
                        R.ToggleVoiceChat();
                      },
                    },
                    (0, m.we)("#Friend_Menu_StopVoiceChat"),
                  ),
                )
              : D &&
                (R instanceof T.d
                  ? R.GetMember(d.accountid) ||
                    a.push(
                      l.createElement(
                        E.kt,
                        {
                          key: "voicechat",
                          className: "contextVoiceInvite",
                          onSelected: () => {
                            this.InviteToVoice(R, i);
                          },
                        },
                        l.createElement(G.mrd, null),
                        (0, m.we)("#Chat_Actions_InviteFriend_VoiceChat"),
                      ),
                    )
                  : a.push(
                      l.createElement(
                        E.kt,
                        {
                          key: "voicechat",
                          onSelected: () => {
                            o.xm.UIStore.ShowFriendChatDialogAndStartVoice(
                              n.browserContext,
                              d.accountid,
                            );
                          },
                        },
                        (0, m.we)("#Friend_Menu_StartVoiceChat"),
                      ),
                    )),
              a.length > 0 &&
                a.push(l.createElement(E.K5, { key: "separator" })),
              a.push(
                l.createElement(
                  E.kt,
                  { key: "viewprofile", onSelected: this.ShowFriendProfile },
                  (0, m.we)("#Friend_Menu_ViewProfile"),
                ),
              ),
              M.TS.IN_CLIENT &&
                o.xm.SettingsStore.BClientHasFeatureOrOnWeb("FriendsFilter") &&
                !p &&
                a.push(
                  l.createElement(
                    E.kt,
                    {
                      key: "findgamestoplay",
                      onSelected: this.ShowFriendFiltereredLibrary,
                    },
                    (0, m.we)("#Friend_Menu_GamesToPlayTogether"),
                  ),
                ),
              g &&
                a.push(
                  l.createElement(le, {
                    key: "moderationoptions",
                    friend: d,
                    bIsSelf: p,
                    group: g,
                    ownerWindow: n.ownerWindow,
                  }),
                );
            let L = [];
            const F = !!d.persona.m_unGamePlayedAppID && !p;
            if (!p) {
              if (f) {
                if (
                  (c.push(
                    l.createElement(
                      E.kt,
                      {
                        key: "setnickname",
                        onSelected: () => {
                          u(n.browserContext, n.friend, n.ownerWindow);
                        },
                      },
                      (0, m.we)(
                        n.friend.has_nickname
                          ? "#Friend_Menu_ChangeNickname"
                          : "#Friend_Menu_AddNickname",
                      ),
                    ),
                  ),
                  h.BIsFavorited({ friend: d }))
                ) {
                  (_ ? a : c).push(
                    l.createElement(
                      E.kt,
                      { key: "quickaccess", onSelected: he.bind(null, d) },
                      (0, m.we)("#Friend_Menu_RemoveFromQuickAccess"),
                    ),
                  );
                } else
                  c.push(
                    l.createElement(
                      E.kt,
                      { key: "quickaccess", onSelected: ue.bind(null, d) },
                      (0, m.we)("#Friend_Menu_AddToQuickAccess"),
                    ),
                  );
                if (
                  (c.push(
                    l.createElement(
                      E.kt,
                      {
                        key: "managecategories",
                        onSelected: () => {
                          !(function (e, t, n) {
                            0 ==
                            o.xm.FriendStore.FriendGroupStore.user_groups.length
                              ? S(e, t, n)
                              : (0, s.HT)(
                                  l.createElement(b, {
                                    browserContext: e,
                                    friend: n,
                                  }),
                                  t,
                                  "AssignFriendCategoryDialog",
                                  {
                                    strTitle: (0, m.we)(
                                      "#FriendGroup_Menu_CreateGroup",
                                    ),
                                    popupWidth: 664,
                                    popupHeight: 580,
                                  },
                                  (0, r.h8)(t),
                                );
                          })(n.browserContext, n.ownerWindow, n.friend);
                        },
                      },
                      (0, m.we)("#FriendGroup_Menu_Categorize"),
                    ),
                  ),
                  c.push(
                    l.createElement(
                      E.kt,
                      {
                        key: "notifications",
                        onSelected: () => {
                          return (
                            n.browserContext,
                            (e = n.friend),
                            (t = n.ownerWindow),
                            void (0, s.HT)(
                              l.createElement(W, { player: e }),
                              t,
                              "FriendNotificationsDialog",
                              {
                                strTitle: (0, m.we)(
                                  "#Friend_Menu_Notifications",
                                ),
                                popupWidth: 640,
                                popupHeight: 520,
                              },
                              (0, r.h8)(t),
                            )
                          );
                          var e, t;
                        },
                      },
                      (0, m.we)("#Friend_Menu_Notifications"),
                    ),
                  ),
                  _ ||
                    c.push(
                      l.createElement(
                        E.kt,
                        { key: "removefriend", onSelected: this.RemoveFriend },
                        (0, m.we)("#Friend_Menu_RemoveFromFriendsList"),
                      ),
                    ),
                  c.push(l.createElement(J, { key: "aliases", friend: d })),
                  o.xm.FriendStore.self.persona.is_ingame &&
                    o.xm.BroadcastStore.is_broadcast_capable &&
                    L.push(
                      l.createElement(
                        E.kt,
                        {
                          className: "contextMenuGameOptions",
                          key: "invitetowatch",
                          onSelected: () => {
                            this.InviteToWatch();
                          },
                        },
                        (0, m.we)("#Friend_Menu_InviteToWatch"),
                      ),
                    ),
                  0 != y &&
                    "0" != o.xm.FriendStore.self.persona.m_game_lobby_id)
                )
                  L.push(
                    l.createElement(
                      E.kt,
                      {
                        className: "contextMenuGameOptions",
                        key: "lobbyinvite",
                        onSelected: () => {
                          this.InviteToLobby(
                            y,
                            o.xm.FriendStore.self.persona.m_game_lobby_id,
                          );
                        },
                      },
                      (0, m.we)("#Friend_Menu_InviteToLobby"),
                    ),
                  );
                else if (0 != this.state.strConnectPrivate?.length) {
                  const e = this.state.strConnectPrivate;
                  L.push(
                    l.createElement(
                      E.kt,
                      {
                        className: "contextMenuGameOptions",
                        key: "gameinvite",
                        onSelected: () => {
                          this.InviteToGame(y, e);
                        },
                      },
                      (0, m.we)("#Friend_Menu_InviteToGame"),
                    ),
                  );
                } else if (o.xm.FriendStore.self.persona.connect_string) {
                  const e = o.xm.FriendStore.self.persona.connect_string;
                  L.push(
                    l.createElement(
                      E.kt,
                      {
                        className: "contextMenuGameOptions",
                        key: "gameinvite",
                        onSelected: () => {
                          this.InviteToGame(y, e);
                        },
                      },
                      (0, m.we)("#Friend_Menu_InviteToGame"),
                    ),
                  );
                }
                o.xm.RemotePlayStore.HasInviteAndSession(d.accountid)
                  ? L.push(
                      l.createElement(
                        E.kt,
                        {
                          className: "contextMenuGameOptions",
                          key: "cancelremoteplay",
                          onSelected: () => {
                            this.CancelRemotePlay();
                          },
                        },
                        (0, m.we)("#Friend_Menu_CancelRemotePlay"),
                      ),
                    )
                  : o.xm.RemotePlayStore.HasInviteAndSessionForGameIDOtherThan(
                        String(y),
                      )
                    ? L.push(
                        l.createElement(
                          E.kt,
                          {
                            className: "contextMenuGameOptions",
                            key: "cancelallremoteplay",
                            onSelected: () => {
                              this.CancelAllRemotePlay();
                            },
                          },
                          (0, m.we)("#Friend_Menu_CancelAllRemotePlay"),
                        ),
                      )
                    : this.state.bCanCreateRemotePlayInvite &&
                      L.push(
                        l.createElement(
                          E.kt,
                          {
                            className: "contextMenuGameOptions",
                            key: "invitetoremoteplay",
                            onSelected: () => {
                              this.InviteToRemotePlay();
                            },
                          },
                          (0, m.we)("#Friend_Menu_InviteToRemotePlay"),
                        ),
                      ),
                  M.TS.EREALM !== k.TU.k_ESteamRealmChina &&
                    a.push(l.createElement(ae, { key: "trading", friend: d }));
              } else
                v
                  ? (a.push(
                      l.createElement(
                        E.kt,
                        {
                          key: "acceptincominginvite",
                          onSelected: this.AcceptIncomingInvite,
                        },
                        (0, m.we)("#Friend_Menu_AcceptIncomingInvite"),
                      ),
                    ),
                    a.push(
                      l.createElement(
                        E.kt,
                        {
                          key: "ignoreincominginvite",
                          onSelected: this.IgnoreIncomingInvite,
                        },
                        (0, m.we)("#Friend_Menu_IgnoreIncomingInvite"),
                      ),
                    ),
                    a.push(l.createElement(J, { key: "aliases", friend: d })))
                  : I
                    ? a.push(
                        l.createElement(
                          E.kt,
                          { key: "remove", onSelected: this.RemoveFriend },
                          (0, m.we)("#Friend_Menu_CancelInvitation"),
                        ),
                      )
                    : a.push(
                        l.createElement(
                          E.kt,
                          { key: "invite", onSelected: this.InviteFriend },
                          (0, m.we)("#Friend_Menu_AddToFriendsList"),
                        ),
                      );
              w &&
                a.push(
                  l.createElement(
                    E.kt,
                    {
                      key: "setnickname",
                      onSelected: () => {
                        u(n.browserContext, n.friend, n.ownerWindow);
                      },
                    },
                    (0, m.we)(
                      n.friend.has_nickname
                        ? "#Friend_Menu_ChangeNickname"
                        : "#Friend_Menu_AddNickname",
                    ),
                  ),
                ),
                (_ && !d.is_blocked) ||
                  c.push(
                    l.createElement(
                      E.kt,
                      {
                        key: "block",
                        onSelected: d.is_blocked
                          ? this.UnblockFriend
                          : this.BlockFriend,
                      },
                      (0, m.we)(
                        d.is_blocked
                          ? "#Friend_Menu_UnblockAllCommunication"
                          : "#Friend_Menu_BlockAllCommunication",
                      ),
                    ),
                  );
            }
            if (!a) return null;
            let P, B;
            if (
              (this.props.context &&
                this.props.context.group &&
                (P = this.props.context.group.GetMemberPartyBeacon(
                  this.props.friend.accountid,
                )),
              L.length > 0 && (!F || d.persona.m_unGamePlayedAppID != y))
            ) {
              let e;
              if (0 == y)
                e = l.createElement(
                  "div",
                  { className: "contextMenuGameItem" },
                  l.createElement(
                    "div",
                    { className: "contextMenuGameName" },
                    o.xm.FriendStore.self.current_game_name,
                  ),
                );
              else {
                let t = o.xm.AppInfoStore.GetAppInfo(y);
                e = l.createElement(
                  "div",
                  { className: "contextMenuGameItem" },
                  l.createElement(
                    "div",
                    { className: "contextMenuGameIcon" },
                    l.createElement("img", {
                      className: "GameIcon",
                      src: t.icon_url,
                    }),
                  ),
                  l.createElement(
                    "div",
                    { className: "contextMenuGameName" },
                    t.name,
                  ),
                );
              }
              (B = l.createElement(
                l.Fragment,
                { key: "mygame" },
                l.createElement(
                  E.kt,
                  {
                    className: "contextMenuGameTitle contextMenuUnselectable",
                    onSelected: null,
                    disabled: !0,
                  },
                  l.createElement(
                    "div",
                    { className: "contextMenuGameTitleBlurCropContainer" },
                    e,
                  ),
                ),
                l.createElement(
                  "div",
                  { className: "contextMenuSectionContent" },
                  L,
                ),
              )),
                (L = []);
            }
            return l.createElement(
              E.tz,
              { className: "friendsContextMenu", label: d.display_name },
              a,
              1 == c.length && c,
              c.length > 1 &&
                l.createElement(
                  E.Vs,
                  { label: (0, m.we)("#Friend_Menu_Manage") },
                  c,
                ),
              !!d.persona.m_broadcastAccountId &&
                !p &&
                l.createElement(de, {
                  friend: d,
                  ownerWindow: n.ownerWindow,
                  browserContext: n.browserContext,
                }),
              B,
              !!B && F && l.createElement(E.K5, null),
              F &&
                l.createElement(me, {
                  unAppID: d.persona.m_unGamePlayedAppID,
                  strGameName: d.current_game_name,
                  ulGameID: d.persona.m_gameid,
                  friend: d,
                  partyBeacon: P,
                  ownerWindow: n.ownerWindow,
                  browserContext: n.browserContext,
                  extraItems: L,
                  localAppID: y,
                }),
            );
          }
        };
        (0, i.Cg)([c.oI], ie.prototype, "ShowFriendProfile", null),
          (0, i.Cg)([c.oI], ie.prototype, "ShowFriendFiltereredLibrary", null),
          (0, i.Cg)([c.oI], ie.prototype, "InviteFriend", null),
          (0, i.Cg)([c.oI], ie.prototype, "AcceptIncomingInvite", null),
          (0, i.Cg)([c.oI], ie.prototype, "IgnoreIncomingInvite", null),
          (0, i.Cg)([c.oI], ie.prototype, "RemoveFriend", null),
          (0, i.Cg)([c.oI], ie.prototype, "BlockFriend", null),
          (0, i.Cg)([c.oI], ie.prototype, "UnblockFriend", null),
          (0, i.Cg)([c.oI], ie.prototype, "InviteToGame", null),
          (0, i.Cg)([c.oI], ie.prototype, "InviteToLobby", null),
          (0, i.Cg)([c.oI], ie.prototype, "InviteToWatch", null),
          (0, i.Cg)([c.oI], ie.prototype, "InviteToRemotePlay", null),
          (0, i.Cg)([c.oI], ie.prototype, "CancelRemotePlay", null),
          (0, i.Cg)([c.oI], ie.prototype, "CancelAllRemotePlay", null),
          (0, i.Cg)([c.oI], ie.prototype, "InviteToVoice", null),
          (ie = (0, i.Cg)([a.PA], ie));
        let oe = class extends l.Component {
          constructor(e) {
            super(e);
            let t = o.xm.VoiceStore.ConvertGainValueToSliderValue(
              o.xm.VoiceStore.GetPerUserGainLevel(this.props.friend.accountid),
              F.F$.k_MaxPerUserGainMultiplier,
            );
            this.state = { volumeNumber: t };
          }
          OnFriendVolumeChanged(e) {
            o.xm.VoiceStore.SetPerUserGainLevel(
              this.props.friend.accountid,
              o.xm.VoiceStore.ConvertSliderToGainValue(
                e,
                F.F$.k_MaxPerUserGainMultiplier,
              ),
            ),
              this.setState({ volumeNumber: e });
          }
          OnMutingClick(e) {
            let t = o.xm.VoiceStore.GetPerUserMuting(
              this.props.friend.accountid,
            );
            o.xm.VoiceStore.SetPerUserMuting(this.props.friend.accountid, !t),
              this.forceUpdate();
          }
          OnInlineVolumeClick(e) {
            this.forceUpdate();
          }
          render() {
            let e = this.state.volumeNumber,
              t = "VolumeIcon",
              n = o.xm.VoiceStore.GetPerUserMuting(this.props.friend.accountid);
            return (
              e > 65
                ? (t += " HighestVolume")
                : e > 45
                  ? (t += " HighVolume")
                  : e < 46 && e > 24
                    ? (t += " MedVolume")
                    : e < 25 && (t += " LowVolume"),
              l.createElement(
                E.kt,
                { key: "volume", onSelected: () => {}, bInteractableItem: !0 },
                l.createElement(
                  "div",
                  {
                    className: "InlineVolume" + (n ? " Muted" : ""),
                    onClick: this.OnInlineVolumeClick,
                  },
                  l.createElement(
                    "button",
                    { className: t, onClick: this.OnMutingClick },
                    l.createElement(G.fSs, null),
                  ),
                  l.createElement(d.Kc, {
                    min: 0,
                    max: 100,
                    label: "",
                    value: e,
                    onChange: this.OnFriendVolumeChanged,
                  }),
                  l.createElement(
                    "div",
                    { className: "volumePercentage" },
                    2 * e,
                    "%",
                  ),
                ),
              )
            );
          }
        };
        (0, i.Cg)([c.oI], oe.prototype, "OnFriendVolumeChanged", null),
          (0, i.Cg)([c.oI], oe.prototype, "OnMutingClick", null),
          (0, i.Cg)([c.oI], oe.prototype, "OnInlineVolumeClick", null),
          (oe = (0, i.Cg)([a.PA], oe));
        let re = class extends l.Component {
          OnChange(e) {
            this.props.group.SetMemberRoleState(
              this.props.friend.accountid,
              this.props.roleID,
              e,
            );
          }
          render() {
            return l.createElement(
              E.kt,
              {
                className:
                  "FriendMenuRoleCheckbox" +
                  (this.props.bEditable ? "" : " disabled"),
                key: "role",
                onSelected: () => {},
                bInteractableItem: !0,
              },
              l.createElement(d.Yh, {
                label: this.props.roleName,
                checked: this.props.bHasRole,
                onChange: this.OnChange,
                disabled: !this.props.bEditable,
              }),
            );
          }
        };
        (0, i.Cg)([c.oI], re.prototype, "OnChange", null),
          (re = (0, i.Cg)([a.PA], re));
        class ae extends l.Component {
          SendTradeOffer(e) {
            let t = "NewTradeOffer" + this.props.friend.accountid,
              n = (0, g.uX)(e).open(
                o.xm.EconomyStore.GetDefaultTradeOfferURLForFriend(
                  this.props.friend.accountid,
                ),
                t,
                "height=1120,width=1028,resize=yes,scrollbars=yes",
              );
            n && n.focus();
          }
          render() {
            let e = this.props.friend;
            return l.createElement(
              E.Vs,
              { label: (0, m.we)("#FriendMenu_Trading") },
              l.createElement(se, { friend: e }),
              l.createElement(
                E.kt,
                { onSelected: this.SendTradeOffer },
                (0, m.we)("#FriendMenu_SendTradeOffer"),
              ),
            );
          }
        }
        function se(e) {
          return l.createElement(
            E.kt,
            {
              onSelected: (t) => {
                (0, R.EP)(t, e.friend.GetCommunityProfileURL() + "inventory/");
              },
            },
            (0, m.we)("#FriendMenu_ViewInventory"),
          );
        }
        (0, i.Cg)([c.oI], ae.prototype, "SendTradeOffer", null);
        class le extends l.Component {
          async BanFriend() {
            (await (0, L.WQ)(
              this.props.ownerWindow,
              (0, m.we)("#Friend_Ban"),
              (0, m.we)("#Friend_Ban_Confirm", this.props.friend.display_name),
              (0, m.we)("#Friend_Ban_Button"),
              (0, m.we)("#Button_Cancel"),
              !0,
            )) &&
              this.props.group.SetUserBanState(this.props.friend.accountid, !0);
          }
          OnKickFriend() {
            let e = this.props.group,
              t = fe,
              n = this.props.ownerWindow;
            new Promise((e, i) => {
              let o = (0, L.dt)(
                n,
                (0, m.we)("#Friend_Kick", this.props.friend.display_name),
              );
              (0, s.HT)(
                l.createElement(Se, {
                  OnOK: e,
                  OnCancel: i,
                  OnSet: (e) => {
                    t = e;
                  },
                }),
                n,
                "alertdialog",
                o,
                (0, r.h8)(n),
              );
            })
              .then(() =>
                e.KickUser(
                  this.props.friend.accountid,
                  Math.floor(Date.now() / 1e3 + t),
                ),
              )
              .catch(() => {});
          }
          render() {
            let e = [],
              t = this.props.friend,
              n = this.props.group;
            return (
              n.BHasMember(t.accountid)
                ? (!this.props.bIsSelf &&
                    n.BCanKick() &&
                    e.push(
                      l.createElement(
                        E.kt,
                        {
                          disabled: !n.BCanKickMember(t.accountid),
                          key: "kick",
                          onSelected: this.OnKickFriend,
                        },
                        (0, m.we)("#Friend_Menu_KickFromChatRoom"),
                      ),
                    ),
                  !this.props.bIsSelf &&
                    n.BCanBan() &&
                    e.push(
                      l.createElement(
                        E.kt,
                        {
                          disabled: !n.BCanBanMember(t.accountid),
                          key: "ban",
                          onSelected: this.BanFriend,
                        },
                        (0, m.we)("#Friend_Menu_Ban"),
                      ),
                    ),
                  n &&
                    e.push(
                      l.createElement(ee, {
                        key: "editroles",
                        friend: t,
                        group: n,
                        bEditable: n.BCanEditRoles(),
                      }),
                    ))
                : e.push(
                    l.createElement(
                      E.kt,
                      { disabled: !0, key: "notmember", onSelected: null },
                      (0, m.we)("#Friend_Menu_HasLeftChat"),
                    ),
                  ),
              e
            );
          }
        }
        function ce(e) {
          const { appID: t } = e,
            [n] = (0, X.t7)(t, { include_assets_without_overrides: !0 }),
            i = n?.GetAssetsWithoutOverrides()?.GetHeaderURL();
          return i
            ? l.createElement(
                "div",
                { className: "contextMenuGameHeader" },
                l.createElement("img", { className: "GameHeader", src: i }),
              )
            : l.createElement("div", { className: "contextMenuGameHeader" });
        }
        (0, i.Cg)([c.oI], le.prototype, "BanFriend", null),
          (0, i.Cg)([c.oI], le.prototype, "OnKickFriend", null);
        let me = class extends l.Component {
          static contextType = M.QO;
          constructor(e) {
            super(e),
              (this.state = { bIsSubscribedToApp: void 0 }),
              P.W.BIsSubscribedApp(this.props.unAppID).then((e) => {
                this.setState({ bIsSubscribedToApp: e });
              });
          }
          ShowStorePage(e) {
            let t = (0, j.Dn)(this.props.unAppID, "friendcontextmenu");
            (0, R.EP)(e, t), e.stopPropagation();
          }
          ShowCommunityHub(e) {
            let t = `${M.TS.COMMUNITY_BASE_URL}app/${this.props.unAppID}`;
            (0, R.EP)(e, t), e.stopPropagation();
          }
          LaunchGame(e) {
            let t =
              "steam://rungameid/" +
              (this.props.ulGameID || this.props.unAppID);
            (0, R.EP)(e, t), e.stopPropagation();
          }
          WatchGame(e) {
            o.xm.UIStore.SetFriendBroadcastVisible(
              this.props.friend.steamid64,
              !0,
            ),
              this.props.friend.OpenChatDialog((0, r.CO)(e));
          }
          JoinGame(e) {
            const t = this.props.friend;
            if (
              !t.persona.has_joinable_game_flag ||
              (t.persona.connect_string && 0 != t.persona.connect_string.length)
            ) {
              const n = (0, K.xE)(
                t.persona.GetAccountID(),
                t.persona.m_unGamePlayedAppID,
                t.persona.connect_string,
                null,
                t.persona.is_in_valid_lobby && t.persona.m_game_lobby_id,
              );
              (0, R.EP)(e, n);
            } else {
              let e = this.props.ownerWindow;
              (0, s.pg)(l.createElement(ve, { friend: t, ownerWindow: e }), e, {
                browserContext: this.props.browserContext,
              });
            }
            e.stopPropagation();
          }
          ViewGameInfo(e) {
            if (
              M.TS.IN_CLIENT &&
              (0, $.Dp)("ServerBrowser.CreateFriendGameInfoDialog")
            ) {
              const e = this.props.browserContext.m_unPID;
              SteamClient.ServerBrowser.CreateFriendGameInfoDialog(
                e,
                this.props.friend.steamid64,
              );
            } else {
              const t = `steam://viewfriendsgame/${this.props.friend.steamid64}`;
              (0, R.EP)(e, t);
            }
            e.stopPropagation();
          }
          ShowInSteam(e) {
            let t = `steam://store/${this.props.unAppID}`;
            (0, R.EP)(e, t), e.stopPropagation();
          }
          JoinPartyBeacon(e) {
            let t = `steam://joinparty/${this.props.unAppID}/${this.props.partyBeacon.beacon_id}`;
            (0, R.EP)(e, t), e.stopPropagation();
          }
          render() {
            if (!this.props.unAppID) return null;
            let e,
              t = [],
              n = this.props.friend,
              i = o.xm.AppInfoStore.GetAppInfo(this.props.unAppID);
            if (!i.is_valid) return null;
            if (i.is_initialized)
              if (this.props.bShowLargeHeader)
                e = l.createElement(ce, { appID: this.props.unAppID });
              else {
                let t = l.createElement(
                  "span",
                  { className: "contextMenuGameName" },
                  (0, m.we)(
                    "#Friend_Menu_ViewGameStorePageGameName",
                    this.props.strGameName || i.name,
                  ),
                );
                e = l.createElement(
                  "div",
                  { className: "contextMenuGameItem" },
                  l.createElement(
                    "div",
                    { className: "contextMenuGameIcon" },
                    l.createElement("img", {
                      className: "GameIcon",
                      src: i.icon_url,
                    }),
                  ),
                  t,
                );
              }
            const r = this.props.localAppID == this.props.unAppID;
            void 0 === this.state.bIsSubscribedToApp
              ? t.push(
                  l.createElement(
                    E.kt,
                    {
                      className: "contextMenuGameOptions contextMenuPlayButton",
                      key: "showinsteam",
                      onSelected: this.ShowInSteam,
                    },
                    l.createElement(G.jGG, null),
                    (0, m.we)("#Friend_Menu_ShowInSteam"),
                  ),
                )
              : this.state.bIsSubscribedToApp &&
                (this.props.partyBeacon
                  ? t.push(
                      l.createElement(
                        E.kt,
                        {
                          className:
                            "contextMenuGameOptions contextMenuPlayButton contextMenuPartyBeacon",
                          key: "joinparty",
                          onSelected: this.JoinPartyBeacon,
                        },
                        l.createElement(G.jGG, null),
                        (0, m.we)("#Friend_Menu_JoinFriendPartyBeacon"),
                      ),
                    )
                  : n &&
                    n.persona.is_in_joinable_game &&
                    t.push(
                      l.createElement(
                        E.kt,
                        {
                          className:
                            "contextMenuGameOptions contextMenuPlayButton",
                          key: "joingame",
                          onSelected: this.JoinGame,
                        },
                        l.createElement(G.jGG, null),
                        (0, m.we)("#Friend_Menu_JoinFriendGame"),
                      ),
                    ),
                r ||
                  t.push(
                    l.createElement(
                      E.kt,
                      {
                        className:
                          "contextMenuGameOptions contextMenuPlayButton",
                        key: "launchgame",
                        onSelected: this.LaunchGame,
                      },
                      l.createElement(G.jGG, null),
                      (0, m.we)("#Friend_Menu_LaunchFriendGame"),
                    ),
                  )),
              n &&
                t.push(
                  l.createElement(
                    E.kt,
                    {
                      className: "contextMenuGameOptions",
                      key: "watchgame",
                      onSelected: this.WatchGame,
                    },
                    (0, m.we)("#Friend_Menu_WatchFriendGame"),
                  ),
                );
            let a = n?.persona.has_server_ip ?? !1,
              s = n?.persona?.HasRichPresenceForViewGameInfo() ?? !1;
            return (
              n &&
                (a || s) &&
                !this.context?.IN_GAMEPADUI &&
                t.push(
                  l.createElement(
                    E.kt,
                    {
                      className: "contextMenuGameOptions",
                      key: "viewgameinfo",
                      onSelected: this.ViewGameInfo,
                    },
                    (0, m.we)("#Friend_Menu_ViewGameInfo"),
                  ),
                ),
              r ||
                t.push(
                  l.createElement(
                    E.kt,
                    {
                      className: "contextMenuGameOptions",
                      key: "viewstorepage",
                      onSelected: this.ShowStorePage,
                    },
                    (0, m.we)("#Friend_Menu_ViewGameStorePage"),
                  ),
                ),
              this.context?.IN_GAMEPADUI ||
                t.push(
                  l.createElement(
                    E.kt,
                    {
                      className: "contextMenuGameOptions",
                      key: "viewcommunityhub",
                      onSelected: this.ShowCommunityHub,
                    },
                    (0, m.we)("#Friend_Menu_ViewCommunityHub"),
                  ),
                ),
              l.createElement(
                l.Fragment,
                null,
                l.createElement(
                  E.kt,
                  {
                    className: "contextMenuGameTitle contextMenuUnselectable",
                    onSelected: null,
                    disabled: !0,
                  },
                  l.createElement(
                    "div",
                    { className: "contextMenuGameTitleBlurCropContainer" },
                    e,
                  ),
                ),
                l.createElement(
                  "div",
                  { className: "contextMenuSectionContent" },
                  t,
                  this.props.extraItems,
                ),
              )
            );
          }
        };
        (0, i.Cg)([c.oI], me.prototype, "ShowStorePage", null),
          (0, i.Cg)([c.oI], me.prototype, "ShowCommunityHub", null),
          (0, i.Cg)([c.oI], me.prototype, "LaunchGame", null),
          (0, i.Cg)([c.oI], me.prototype, "WatchGame", null),
          (0, i.Cg)([c.oI], me.prototype, "JoinGame", null),
          (0, i.Cg)([c.oI], me.prototype, "ViewGameInfo", null),
          (0, i.Cg)([c.oI], me.prototype, "ShowInSteam", null),
          (0, i.Cg)([c.oI], me.prototype, "JoinPartyBeacon", null),
          (me = (0, i.Cg)([a.PA], me));
        let de = class extends l.Component {
          WatchStream() {
            let e = this.props.browserContext,
              t = this.props.friend;
            const n = t.persona.m_broadcastAccountId;
            o.xm.UIStore.ShowOrActivateBroadcast(
              e,
              n,
              !0,
            ).ShowWatchPromptDialog(t);
          }
          render() {
            let e = this.props.friend;
            return l.createElement(
              l.Fragment,
              null,
              l.createElement(
                E.kt,
                {
                  className: "contextMenuBroadcast contextMenuUnselectable",
                  onSelected: null,
                  disabled: !0,
                },
                l.createElement(
                  "div",
                  { className: "contextMenuBroadcastTitle" },
                  (0, m.we)("#Broadcast_Watching"),
                ),
                l.createElement(
                  "div",
                  { className: "contextMenuBroadcastSubtitle" },
                  e.GetBroadcastDescription(),
                ),
              ),
              l.createElement(
                "div",
                { className: "contextMenuSectionContent" },
                l.createElement(
                  E.kt,
                  {
                    className: "contextMenuGameOptions",
                    onSelected: this.WatchStream,
                  },
                  (0, m.we)("#Broadcast_WatchStream"),
                ),
              ),
            );
          }
        };
        function ue(e) {
          o.xm.FriendStore.FavoritesStore.AddToFavorites({ friend: e });
        }
        function he(e) {
          o.xm.FriendStore.FavoritesStore.RemoveFromFavorites({ friend: e });
        }
        function pe(e, t, n) {
          return (0, y.lX)(
            l.createElement(_e, {
              browserContext: e,
              group: t,
              ownerWindow: (0, g.uX)(n),
            }),
            n,
          );
        }
        function _e(e) {
          let t = [];
          return (
            e.group &&
              e.group.modifiable &&
              (t.push(
                l.createElement(
                  E.kt,
                  {
                    key: "managegroup",
                    onSelected: () => {
                      var t, n, i;
                      (t = e.browserContext),
                        (n = e.group),
                        (i = e.ownerWindow),
                        (0, s.HT)(
                          l.createElement(v, {
                            browserContext: t,
                            group: n,
                            rgPreSelectedFriends: n.member_accountid_list,
                          }),
                          i,
                          "CreateFriendCategoryDialog",
                          {
                            strTitle: (0, m.we)("#FriendGroup_Menu_Manage"),
                            popupWidth: 664,
                            popupHeight: 700,
                          },
                          (0, r.h8)(i),
                        );
                    },
                  },
                  (0, m.we)("#FriendGroup_Menu_Manage"),
                ),
              ),
              t.push(
                l.createElement(
                  E.kt,
                  {
                    key: "removegroup",
                    onSelected: () => {
                      o.xm.FriendStore.FriendGroupStore.RemoveGroup(e.group);
                    },
                  },
                  (0, m.we)("#FriendGroup_Menu_Remove"),
                ),
              )),
            l.createElement(
              E.tz,
              { className: "friendsContextMenu", label: e.group?.name },
              t,
              l.createElement(
                E.kt,
                {
                  key: "creategroup",
                  onSelected: () => {
                    S(e.browserContext, e.ownerWindow);
                  },
                },
                (0, m.we)("#FriendGroup_Menu_CreateGroup"),
              ),
            )
          );
        }
        function ge(e, t, n) {
          return (0, y.lX)(
            l.createElement(Ce, {
              browserContext: e,
              ownerWindow: t.currentTarget.ownerDocument.defaultView,
              setPersonaNameEresultCallback: n,
            }),
            t,
          );
        }
        (0, i.Cg)([c.oI], de.prototype, "WatchStream", null),
          (de = (0, i.Cg)([a.PA], de));
        class Ce extends l.PureComponent {
          constructor(e) {
            super(e);
          }
          SetUserOnline() {
            o.xm.FriendStore.SetUserPersonaState(1);
          }
          SetUserInvisible() {
            o.xm.FriendStore.SetUserPersonaState(7);
          }
          SetUserAway() {
            o.xm.FriendStore.SetUserPersonaState(3);
          }
          SetUserOffline() {
            o.xm.SignOutOfFriends(this.props.browserContext),
              o.xm.FriendStore.SetUserPersonaState(0, !1);
          }
          ToggleUserDND() {
            o.xm.FriendStore.SetUserDoNotDisturb(
              !o.xm.FriendStore.GetUserDoNotDisturb(),
            );
          }
          ShowUserProfile(e) {
            let t = o.xm.FriendStore.self.GetCommunityProfileURL();
            (0, R.EP)(e, t), e.stopPropagation();
          }
          EditProfile(e) {
            let t = `${o.xm.FriendStore.self.GetCommunityProfileURL()}edit`;
            (0, R.EP)(e, t), e.stopPropagation();
          }
          EditName(e) {
            var t, n;
            this.props.browserContext,
              (t = this.props.ownerWindow),
              (n = this.props.setPersonaNameEresultCallback),
              (0, s.HT)(
                l.createElement(O, { eResultCallback: n }),
                t,
                "ChangePersonaDialog",
                {
                  strTitle: (0, m.we)("#Friend_Menu_AddNickname"),
                  popupWidth: 640,
                  popupHeight: 400,
                },
                (0, r.h8)(t),
              );
          }
          render() {
            let e = [],
              t = [],
              n = 1 == o.xm.FriendStore.self.persona.m_ePersonaState;
            e.push(
              l.createElement(
                E.IK,
                {
                  key: "state_online",
                  bChecked: n,
                  onSelected: this.SetUserOnline,
                },
                (0, m.we)("#PersonaStateOnline"),
              ),
            );
            let i = 3 == o.xm.FriendStore.self.persona.m_ePersonaState;
            e.push(
              l.createElement(
                E.IK,
                {
                  key: "state_away",
                  bChecked: i,
                  onSelected: this.SetUserAway,
                },
                (0, m.we)("#PersonaStateAway"),
              ),
            );
            let r = 7 == o.xm.FriendStore.self.persona.m_ePersonaState;
            if (
              (e.push(
                l.createElement(
                  E.IK,
                  {
                    key: "state_invisible",
                    className: "personaContextMenuItem",
                    bChecked: r,
                    onSelected: this.SetUserInvisible,
                  },
                  (0, m.we)("#PersonaStateInvisible"),
                  l.createElement(
                    "div",
                    { className: "persona_menu_descriptor" },
                    (0, m.we)("#PersonaStateInvisibleDescriptor"),
                  ),
                ),
              ),
              M.TS.IN_CLIENT &&
                o.xm.SettingsStore.BClientHasFeatureOrOnWeb("DoNotDisturb"))
            ) {
              let t = 0 == o.xm.FriendStore.self.persona.m_ePersonaState;
              e.push(
                l.createElement(
                  E.IK,
                  {
                    key: "state_offline",
                    className: "personaContextMenuItem",
                    bChecked: t,
                    onSelected: this.SetUserOffline,
                  },
                  (0, m.we)("#PersonaStateOffline"),
                  l.createElement(
                    "div",
                    { className: "persona_menu_descriptor" },
                    (0, m.we)("#PersonaStateOfflineDescriptor"),
                  ),
                ),
              );
            }
            if (o.xm.SettingsStore.BClientHasFeatureOrOnWeb("DoNotDisturb")) {
              let e = o.xm.FriendStore.GetUserDoNotDisturb();
              t.push(
                l.createElement(
                  E.IK,
                  {
                    key: "do_not_disturb",
                    className: "personaContextMenuItem",
                    bChecked: !1,
                    onSelected: this.ToggleUserDND,
                  },
                  l.createElement(d.Yh, {
                    key: "dnd_checkbox",
                    className: "DNDCheckBox",
                    checked: e,
                    label: (0, m.we)("#User_ToggleDoNotDisturb"),
                  }),
                  l.createElement(
                    "div",
                    { className: "persona_menu_dnd_descriptor" },
                    (0, m.we)("#PersonaStateDoNotDisturbDescriptor"),
                  ),
                ),
              );
            }
            return (
              t.push(
                l.createElement(
                  E.kt,
                  { key: "editname", onSelected: this.EditName },
                  (0, m.we)("#Friend_Menu_ChangeMyName"),
                ),
              ),
              t
                ? l.createElement(
                    E.tz,
                    {
                      className: "friendsContextMenu currentUserContextMenu",
                      label: o.xm.FriendStore.self.display_name,
                    },
                    l.createElement(
                      "div",
                      { className: "contextMenuSectionContent" },
                      e,
                    ),
                    t,
                  )
                : null
            );
          }
        }
        (0, i.Cg)([c.oI], Ce.prototype, "SetUserOnline", null),
          (0, i.Cg)([c.oI], Ce.prototype, "SetUserInvisible", null),
          (0, i.Cg)([c.oI], Ce.prototype, "SetUserAway", null),
          (0, i.Cg)([c.oI], Ce.prototype, "SetUserOffline", null),
          (0, i.Cg)([c.oI], Ce.prototype, "ToggleUserDND", null),
          (0, i.Cg)([c.oI], Ce.prototype, "ShowUserProfile", null),
          (0, i.Cg)([c.oI], Ce.prototype, "EditProfile", null),
          (0, i.Cg)([c.oI], Ce.prototype, "EditName", null);
        const fe = 3600;
        class Se extends l.Component {
          OnCancel() {
            this.props.OnCancel(), this.props.closeModal();
          }
          OnOK() {
            this.props.OnOK(), this.props.closeModal();
          }
          OnDropDownChange(e, t) {
            this.props.OnSet(e.data);
          }
          render() {
            let e = [
              { label: (0, m.we)("#Friend_Kick_Hour"), data: fe },
              { label: (0, m.we)("#Friend_Kick_Day"), data: 86400 },
              { label: (0, m.we)("#Friend_Kick_Week"), data: 604800 },
            ];
            return l.createElement(
              s.x_,
              { onEscKeypress: this.OnCancel },
              l.createElement(
                d.U9,
                {
                  classNameContent: "KickUserDialog",
                  onSubmit: this.OnOK,
                  bCenterVertically: !0,
                },
                l.createElement(
                  d.Y9,
                  null,
                  " ",
                  (0, m.we)("#Friend_Kick"),
                  " ",
                ),
                l.createElement(
                  d.nB,
                  null,
                  l.createElement(
                    d.a3,
                    null,
                    (0, m.we)("#Friend_Kick_How_Long"),
                  ),
                  l.createElement(d.m, {
                    strDefaultLabel: (0, m.we)("#Friend_Kick_Hour"),
                    rgOptions: e,
                    onChange: this.OnDropDownChange,
                    selectedOption: void 0,
                  }),
                ),
                l.createElement(
                  d.wi,
                  null,
                  l.createElement(d.CB, {
                    onCancel: this.OnCancel,
                    strOKText: (0, m.we)("#Friend_Kick_Button"),
                    strCancelText: (0, m.we)("#Button_Cancel"),
                  }),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([c.oI], Se.prototype, "OnCancel", null),
          (0, i.Cg)([c.oI], Se.prototype, "OnOK", null),
          (0, i.Cg)([c.oI], Se.prototype, "OnDropDownChange", null);
        const ve = (0, a.PA)((e) => {
          const { friend: t, ownerWindow: n, closeModal: i } = e,
            o = t.persona.connect_string;
          return (
            l.useEffect(() => {
              if (o?.length) {
                const e = (0, K.xE)(
                  t.persona.GetAccountID(),
                  t.persona.m_unGamePlayedAppID,
                  t.persona.connect_string,
                  null,
                  t.persona.is_in_valid_lobby && t.persona.m_game_lobby_id,
                );
                (0, R.EP)(n, e), i && i();
              }
            }, [o]),
            l.createElement(
              Z.o0,
              {
                bAlertDialog: !0,
                strTitle: (0, m.we)("#Friend_JoinGameWait_Title"),
                strDescription: (0, m.we)("#Friend_JoinGameWait_Desc"),
                strOKButtonText: (0, m.we)("#Friend_JoinGameWait_Cancel"),
                onOK: i,
                onCancel: i,
                closeModal: i,
              },
              l.createElement(
                "div",
                {
                  style: {
                    display: "flex",
                    justifyContent: "center",
                    marginTop: "20px",
                  },
                },
                l.createElement(Q.t, null),
              ),
            )
          );
        });
      },
      99862: (e, t, n) => {
        "use strict";
        n.d(t, {
          lg: () => Pe,
          JG: () => at,
          bP: () => dt,
          gv: () => gt,
          Rg: () => mt,
          i$: () => Ze,
          hv: () => Ke,
          l$: () => qe,
          f7: () => Be,
          Ql: () => xe,
        });
        var i = n(34629),
          o = n(78116),
          r = n(73880),
          a = n(51802),
          s = n(93715),
          l = n(82789),
          c = n(1748),
          m = n(78919),
          d = n(58743),
          u = n(68593),
          h = n(25698),
          p = n(91364),
          _ = n(2856),
          g = n(98540),
          C = n(39168),
          f = n(22913),
          S = n(89193),
          v = n(41230),
          b = n(90095),
          I = n(63696),
          w = n(69074),
          y = n(62218),
          E = n(63887),
          D = n(50622),
          A = n(74002),
          T = n(82924),
          M = n(69168),
          R = n(34879);
        let k = class extends I.Component {
          m_rgFavoriteElementRefs = [];
          constructor(e) {
            super(e);
          }
          render() {
            let e = this.props.FavoritesStore.favorites.map((e, t) => {
              let n;
              if (e.friend) n = "f" + e.friend.accountid;
              else if (e.clan) n = "cl" + e.clan.clanid;
              else {
                if (!e.chat) return null;
                n = "cg" + e.chat.GetGroupID();
              }
              return I.createElement(G, {
                favorite: e,
                index: t,
                friendRenderContext: this.GetFriendRenderContext(),
                key: n,
                bIsDragGhost: !1,
                bIsDragOutGhost: !1,
                ref: this.OnFavoriteElementRef.bind(this, t),
              });
            });
            return I.createElement(w.Z, { "flow-children": "column" }, e);
          }
          OnFavoriteElementRef(e, t) {
            this.m_rgFavoriteElementRefs[e] = t;
          }
          m_FriendRenderContext;
          GetFriendRenderContext() {
            return (
              this.m_FriendRenderContext ||
                (this.m_FriendRenderContext = { chatContext: "friendslist" }),
              this.m_FriendRenderContext
            );
          }
        };
        k = (0, i.Cg)([v.PA], k);
        let L = class extends I.Component {
          m_iActiveDragIndex = void 0;
          m_ActiveDrag = void 0;
          m_ActiveDragOut = void 0;
          m_bGhostIsDupe = !1;
          m_rgFavoriteElementRefs = [];
          constructor(e) {
            super(e),
              (0, S.Gn)(this),
              (this.state = {
                bHintDismissed: m.ZM.UIDisplayPrefs.bFavoritesHintDismissed,
              });
          }
          DismissFavoritesHint() {
            this.setState({ bHintDismissed: !0 }),
              m.ZM.SetUIDisplayPref("bFavoritesHintDismissed", !0);
          }
          render() {
            let e = this.props.FavoritesStore.favorites,
              t = this.m_ActiveDrag,
              n = "quickAccessFriends emptyQuickAccess";
            if (
              (this.state.bHintDismissed && (n += " hintDismissed"),
              e.length || t)
            ) {
              let n = e,
                i = d.xm.SettingsStore.FriendsSettings.bCompactQuickAccess;
              if (t) {
                let e;
                if (
                  (this.m_bGhostIsDupe &&
                    (e = n.findIndex((e) => (0, _.f)(e, t))),
                  void 0 === this.m_iActiveDragIndex ||
                    this.m_iActiveDragIndex >= n.length)
                )
                  n = [...n, { isActiveDrag: !0, ...t }];
                else {
                  this.m_iActiveDragIndex;
                  n = [
                    ...n.slice(0, this.m_iActiveDragIndex),
                    { isActiveDrag: !0, ...t },
                    ...n.slice(this.m_iActiveDragIndex),
                  ];
                }
              }
              let o = n.map((e, n) => {
                  let i;
                  if (e.friend) i = "f" + e.friend.accountid;
                  else if (e.clan) i = "cl" + e.clan.clanid;
                  else {
                    if (!e.chat) return null;
                    i = "cg" + e.chat.GetGroupID();
                  }
                  let o =
                      this.m_bGhostIsDupe && !e.isActiveDrag && (0, _.f)(t, e),
                    r = e.isActiveDrag;
                  return (
                    r && (i += "dragGhost"),
                    I.createElement(G, {
                      favorite: e,
                      index: n,
                      friendRenderContext: this.GetFriendRenderContext(),
                      key: i,
                      bIsDragGhost: r,
                      bIsDragOutGhost: o,
                      ref: this.OnFavoriteElementRef.bind(this, n),
                    })
                  );
                }),
                r = "quickAccessFriends";
              return (
                i && (r += " compactQuickAccess"),
                I.createElement(
                  u.D,
                  {
                    className: r,
                    ...this.GetDragDropProps(),
                    "flow-children": "grid",
                  },
                  o,
                  I.createElement("div", { className: "dropTargetBox" }),
                )
              );
            }
            return I.createElement(
              u.T,
              { className: n, ...this.GetDragDropProps() },
              I.createElement(
                "div",
                { className: "quickAccessFriendsMessage" },
                (0, A.we)("#FriendsList_Favorites_Hint"),
              ),
              !this.state.bHintDismissed &&
                I.createElement(
                  "div",
                  {
                    className: "quickAccessFriendsMessageDismiss",
                    onClick: this.DismissFavoritesHint,
                  },
                  (0, A.we)("#Generic_Got_It"),
                ),
              I.createElement("div", { className: "dropTargetBox" }),
            );
          }
          OnFavoriteElementRef(e, t) {
            this.m_rgFavoriteElementRefs[e] = t;
          }
          m_FriendRenderContext;
          GetFriendRenderContext() {
            return (
              this.m_FriendRenderContext ||
                (this.m_FriendRenderContext = { chatContext: "friendslist" }),
              this.m_FriendRenderContext
            );
          }
          m_bAcceptDrag = !1;
          GetDragDropProps() {
            let e = {
              rgAcceptedTypes: ["friend", "chattab", "chatroomgroup", "clan"],
            };
            return (
              (e.fnDragEnter = this.OnDragEnter),
              (e.fnDragOver = this.OnDragOver),
              (e.fnDragLeave = this.OnDragLeave),
              (e.fnDrop = this.OnDrop),
              (e.onDragStart = this.OnDragStart),
              (e.onDragEndCapture = this.OnDragEnd),
              e
            );
          }
          OnDragStart(e) {
            let t = m.ZM.DragDropManager.GetDragData();
            !t ||
              ("friend" != t.type &&
                "chatroomgroup" != t.type &&
                "clan" != t.type) ||
              ((t.is_favorite = !0),
              (this.m_ActiveDragOut = this.FindItemFromDrag(t)));
          }
          OnDragEnd(e) {
            let t = m.ZM.DragDropManager.GetDragData(),
              n = this.FindItemFromDrag(t);
            if (
              n &&
              "is_favorite" in t &&
              t.is_favorite &&
              !m.ZM.DragDropManager.BWasDropConsumed()
            ) {
              let t = e.currentTarget.getBoundingClientRect();
              const i = 100;
              (0, D.UQ)(t, e.clientX, e.clientY) > i &&
                (this.props.FavoritesStore.RemoveFromFavorites(n),
                m.ZM.DragDropManager.EndDrag());
            }
            this.m_ActiveDragOut = void 0;
          }
          FindItemFromDrag(e) {
            let t, n, i, o;
            if ("friend" == e.type) n = e.friend;
            else if ("chattab" == e.type) {
              let t = e.tab;
              if (t instanceof r.$C) {
                let e = t.GetGroup();
                e.BIsClanChatRoom() &&
                  (i = d.xm.FriendStore.ClanStore.GetClan(e.GetClanID())),
                  (o = e);
              } else {
                n = t.GetChatView().chat.chat_partner;
              }
            } else
              "chatroomgroup" == e.type
                ? (o = e.group)
                : "clan" == e.type && (i = e.clan);
            return (
              n
                ? n.is_friend && (t = { friend: n })
                : i
                  ? (t = { clan: i })
                  : o && (t = { chat: o }),
              t
            );
          }
          OnDragEnter(e, t) {
            let n = this.FindItemFromDrag(e);
            return (
              n &&
                !(0, _.f)(this.m_ActiveDrag, n) &&
                ((this.m_ActiveDrag = n),
                (this.m_bGhostIsDupe =
                  this.props.FavoritesStore.BIsFavorited(n))),
              !0
            );
          }
          OnDragOver(e) {
            let t, n;
            for (let i of this.m_rgFavoriteElementRefs) {
              let o = i && i.GetBoundingClientRect();
              if (o) {
                let r = (0, D.UQ)(o, e.clientX, e.clientY);
                (void 0 === n || r < n) && ((n = r), (t = i));
              }
            }
            t && (this.m_iActiveDragIndex = t.props.index),
              (e.dataTransfer.dropEffect = "copy");
          }
          ResetDragState() {
            (this.m_ActiveDrag = void 0),
              (this.m_ActiveDragOut = void 0),
              (this.m_iActiveDragIndex = void 0);
          }
          OnDragLeave() {
            this.m_ActiveDrag && this.ResetDragState();
          }
          OnDrop(e, t) {
            let n = this.FindItemFromDrag(e);
            this.m_ActiveDrag;
            n
              ? (m.ZM.DragDropManager.SetDropConsumed(),
                this.props.FavoritesStore.AddToFavorites(
                  n,
                  this.m_iActiveDragIndex,
                ),
                n.friend && n.friend.LoadEquippedProfileItems(),
                this.ResetDragState())
              : this.m_ActiveDrag && this.ResetDragState();
          }
        };
        (0, i.Cg)([S.sH], L.prototype, "m_iActiveDragIndex", void 0),
          (0, i.Cg)([S.sH], L.prototype, "m_ActiveDrag", void 0),
          (0, i.Cg)([S.sH], L.prototype, "m_ActiveDragOut", void 0),
          (0, i.Cg)([T.oI], L.prototype, "DismissFavoritesHint", null),
          (0, i.Cg)([T.oI], L.prototype, "OnDragStart", null),
          (0, i.Cg)([T.oI], L.prototype, "OnDragEnd", null),
          (0, i.Cg)([T.oI], L.prototype, "OnDragEnter", null),
          (0, i.Cg)([T.oI], L.prototype, "OnDragOver", null),
          (0, i.Cg)([T.oI], L.prototype, "OnDragLeave", null),
          (0, i.Cg)([T.oI], L.prototype, "OnDrop", null),
          (L = (0, i.Cg)([v.PA], L));
        class G extends I.Component {
          containerRef = I.createRef();
          GetBoundingClientRect() {
            let e = this.containerRef.current;
            return e ? e.getBoundingClientRect() : null;
          }
          onFavoriteElementClick(e) {
            let t = this.props.favorite;
            if (t.friend)
              this.props.favorite.friend.OpenChatDialog((0, m.CO)(e));
            else if (t.clan) t.clan.OpenChatDialog((0, m.CO)(e));
            else {
              if (!t.chat) return;
              d.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                (0, m.CO)(e),
                t.chat,
                !0,
              );
            }
            e.stopPropagation();
          }
          OnFavoriteElementContextMenu(e) {
            let t = this.props.favorite;
            if (t.friend)
              (0, p.tj)(
                (0, m.CO)(e),
                this.props.friendRenderContext,
                t.friend,
                e,
              );
            else if (t.clan) (0, f.fM)(e, t.clan, { is_favorites: !0 });
            else {
              if (!t.chat) return;
              (0, f.Tz)(e, t.chat, { is_favorites: !0 });
            }
            e.stopPropagation();
          }
          render() {
            let e,
              t,
              n = "quickAccessFriend",
              i = this.props.favorite;
            this.props.bIsDragGhost
              ? (n += " dropGhost")
              : this.props.bIsDragOutGhost && (n += " dragOriginGhost"),
              this.props.bIsDragOutGhost && (e = { display: "none" }),
              (t = i.friend
                ? I.createElement(F, {
                    key: i.friend.accountid,
                    friend: i.friend,
                    friendRenderContext: this.props.friendRenderContext,
                    className: n,
                  })
                : i.clan
                  ? I.createElement(P, {
                      key: i.clan.clanid,
                      clan: i.clan,
                      className: n,
                    })
                  : i.chat
                    ? I.createElement(B, {
                        key: i.chat.GetGroupID(),
                        chat: i.chat,
                        className: n,
                      })
                    : null);
            let o = I.createElement(
              w.Z,
              {
                style: e,
                className: "favoriteElement",
                onActivate: this.onFavoriteElementClick,
                onOKActionDescription: (0, A.we)("#Friend_Menu_SendMessage"),
                onMenuActionDescription: (0, A.we)("#Friend_Menu_Open"),
                onContextMenu: this.OnFavoriteElementContextMenu,
                onMenuButton: this.OnFavoriteElementContextMenu,
                ref: this.containerRef,
              },
              t,
            );
            return i.friend
              ? I.createElement(
                  mt,
                  { friend: i.friend, context: this.props.friendRenderContext },
                  o,
                )
              : o;
          }
        }
        (0, i.Cg)([T.oI], G.prototype, "onFavoriteElementClick", null),
          (0, i.Cg)([T.oI], G.prototype, "OnFavoriteElementContextMenu", null);
        let F = (0, v.PA)(function (e) {
            let t = (0, o.Qn)(),
              n = e.friend,
              i = !t && d.xm.SettingsStore.FriendsSettings.bCompactQuickAccess,
              r = null;
            const a = (0, M.R7)(),
              s = (0, m._k)(a.ownerWindow),
              l = !(0, R.u)(s, R.m);
            let c,
              u = d.xm.CMInterface.logged_on;
            if (
              (I.useEffect(() => {
                d.xm.CMInterface.logged_on && n.LoadEquippedProfileItems();
              }, [u, n]),
              n.persona.is_awayOrSnooze &&
                (r = I.createElement(y.p, {
                  persona: n.persona,
                  className: "SnoozeContainer",
                  size: "medium",
                  dim: !0,
                })),
              n.persona.is_ingame)
            ) {
              let e =
                n.persona.m_unGamePlayedAppID &&
                d.xm.AppInfoStore.GetAppInfo(n.persona.m_unGamePlayedAppID);
              e?.is_valid &&
                (c = I.createElement(
                  "div",
                  { className: "FavoriteFriend_GameIcon" },
                  I.createElement("img", {
                    className: "gameIcon",
                    src: e.icon_url,
                    draggable: !1,
                  }),
                ));
            }
            let h =
                d.xm.ChatStore.FriendChatStore.GetUnfilteredFriendsWithUnreadMessages(),
              p = !1;
            for (let e of h)
              if (e.accountid_partner == n.accountid) {
                p = !0;
                break;
              }
            let _ = null;
            p &&
              (_ = I.createElement(
                "div",
                { className: "ChatUnreadMessageIndicator" },
                I.createElement("div", { className: "chatUnreadCircle" }),
              ));
            let g = null,
              C = null,
              f =
                d.xm.SettingsStore.FriendsSettings.bAnimatedAvatars &&
                n.persona.is_online;
            if ((0, b.q3)(() => n.BLoadedEquippedItems())) {
              let e = n.GetEquippedProfileItems();
              e && ((g = e.animated_avatar), (C = e.avatar_frame));
            }
            return I.createElement(
              dt,
              {
                friend: n,
                key: n.accountid,
                className: e.className,
                context: e.friendRenderContext,
                bFriendsListEntry: !0,
                bSingleClickActivate: !0,
              },
              !t &&
                I.createElement(
                  "div",
                  null,
                  I.createElement(
                    E.xz,
                    {
                      key: `${n.persona.GetAccountID()}_${n.persona.is_online}`,
                      loopDuration: f ? "Medium" : "None",
                      persona: n.persona,
                      animatedAvatar: g,
                      avatarFrame: C,
                      size: "Medium",
                      bLimitProfileFrameAnimationTime: !f || l,
                    },
                    c,
                    r,
                  ),
                  !i &&
                    I.createElement(
                      "div",
                      { className: "playerNameQuickAccessContainer" },
                      I.createElement(
                        "div",
                        { className: "playerName" },
                        n.display_name,
                      ),
                      n.is_display_name_nickname &&
                        I.createElement(
                          "span",
                          {
                            className: "playerNicknameBracket",
                            title: (0, A.we)("#isNickname"),
                          },
                          "*",
                        ),
                    ),
                  _,
                ),
            );
          }),
          P = class extends I.Component {
            static contextType = o.QO;
            OnDragStart(e) {
              m.ZM.DragDropManager.StartDrag({
                type: "clan",
                clan: this.props.clan,
              });
            }
            OnDragEnd(e) {
              m.ZM.DragDropManager.EndDrag();
            }
            render() {
              let e = "QuickAccessFriend QuickAccessClan",
                t =
                  !this.context?.IN_GAMEPADUI &&
                  d.xm.SettingsStore.FriendsSettings.bCompactQuickAccess;
              this.props.className && (e += " " + this.props.className);
              let n = null,
                i = this.props.clan.GetChatGroupIDIfLoaded();
              if (i) {
                let e = d.xm.ChatStore.GetChatRoomGroup(i);
                e && (n = I.createElement(C.RB, { group: e }));
              }
              return I.createElement(
                "div",
                {
                  className: e,
                  draggable: !0,
                  onDragStart: this.OnDragStart,
                  onDragEnd: this.OnDragEnd,
                },
                I.createElement(g._O, { clan: this.props.clan, size: "small" }),
                !t &&
                  I.createElement(
                    "div",
                    { className: "clanName" },
                    this.props.clan.name,
                  ),
                n,
              );
            }
          };
        (0, i.Cg)([T.oI], P.prototype, "OnDragStart", null),
          (0, i.Cg)([T.oI], P.prototype, "OnDragEnd", null),
          (P = (0, i.Cg)([v.PA], P));
        let B = class extends I.Component {
          static contextType = o.QO;
          OnDragStart(e) {
            m.ZM.DragDropManager.StartDrag({
              type: "chatroomgroup",
              group: this.props.chat,
            });
          }
          OnDragEnd(e) {
            m.ZM.DragDropManager.EndDrag();
          }
          render() {
            let e = "QuickAccessChat",
              t = null,
              n =
                !this.context?.IN_GAMEPADUI &&
                d.xm.SettingsStore.FriendsSettings.bCompactQuickAccess;
            return (
              this.props.chat.hasUnreadChatMessage &&
                (t = I.createElement(C.RB, { group: this.props.chat })),
              this.props.className && (e += " " + this.props.className),
              I.createElement(
                "div",
                {
                  className: e,
                  draggable: !0,
                  onDragStart: this.OnDragStart,
                  onDragEnd: this.OnDragEnd,
                },
                I.createElement(g.I, { group: this.props.chat }),
                !n &&
                  I.createElement(
                    "div",
                    { className: "clanName" },
                    this.props.chat.name,
                  ),
                t,
              )
            );
          }
        };
        (0, i.Cg)([T.oI], B.prototype, "OnDragStart", null),
          (0, i.Cg)([T.oI], B.prototype, "OnDragEnd", null),
          (B = (0, i.Cg)([v.PA], B));
        var x = n(32245),
          O = n(91466),
          N = n(23038),
          V = n(94762),
          U = n(27816),
          H = n(81734),
          W = n(97854),
          z = n(39927),
          j = n(49912),
          q = n(85691),
          K = n(33769),
          Z = (n(14355), n(89021)),
          Q = n(37779);
        const $ = "DEBUG_LogCMTraffic";
        var X = n(74977),
          Y = n(22226),
          J = n(52049),
          ee = (n(8805), n(25444), n(36642), n(8820));
        I.Component;
        class te extends I.Component {
          m_rgSelectOptions = [
            { label: "Option #1", data: 1 },
            { label: "Option #2", data: 2 },
            {
              label: I.createElement(
                "span",
                null,
                "Option ",
                I.createElement("u", null, "#3"),
              ),
              data: 3,
            },
          ];
          constructor(e) {
            super(e),
              (this.state = {
                inputText: "Input text",
                checkboxChecked: !0,
                selectedOption: void 0,
              });
          }
          OnInputChanged(e) {
            this.setState({ inputText: e.currentTarget.value });
          }
          OnToggled(e) {
            this.setState({ checkboxChecked: e });
          }
          OnSelectDropDownChanged(e) {
            this.setState({ selectedOption: e.data });
          }
          OnSubmit() {
            alert(JSON.stringify(this.state));
          }
          render() {
            return I.createElement(
              I.Fragment,
              null,
              I.createElement(
                Z.lV,
                { className: "DialogBody", onSubmit: this.OnSubmit },
                I.createElement(
                  "div",
                  { className: "_FixedHeight" },
                  I.createElement(Z.a3, null, "Text input"),
                  I.createElement(Z.pd, {
                    label: "INPUT TITLE",
                    value: this.state.inputText,
                    onChange: this.OnInputChanged,
                  }),
                  I.createElement(Z.pd, {
                    label: "READ ONLY",
                    value: "You can't change this",
                    disabled: !0,
                  }),
                  I.createElement(Z.m, {
                    label: "Drop down",
                    rgOptions: this.m_rgSelectOptions,
                    strDefaultLabel: "Select one...",
                    selectedOption: this.state.selectedOption,
                    onChange: this.OnSelectDropDownChanged,
                  }),
                  I.createElement(Z.RF, {
                    label: "On Off Toggle",
                    checked: this.state.checkboxChecked,
                    onChange: this.OnToggled,
                  }),
                  I.createElement(
                    "div",
                    { style: { marginBottom: "20px" } },
                    I.createElement("span", null, "Checkbox:"),
                    I.createElement(
                      "div",
                      {
                        style: {
                          display: "inline-block",
                          marginLeft: "20px",
                          verticalAlign: "middle",
                        },
                      },
                      I.createElement(Z.Yh, null),
                    ),
                  ),
                  I.createElement(
                    "div",
                    { style: { marginBottom: "20px" } },
                    I.createElement("span", null, "Round checkbox:"),
                    I.createElement(
                      "div",
                      {
                        style: {
                          display: "inline-block",
                          marginLeft: "20px",
                          verticalAlign: "middle",
                        },
                      },
                      I.createElement(Z.Od, null),
                    ),
                  ),
                  I.createElement(Z.Kc, { min: 0, max: 100, value: 25 }),
                  I.createElement(
                    "div",
                    { style: { marginBottom: "20px" } },
                    I.createElement(
                      Z.Xp,
                      null,
                      I.createElement(Z.jn, null, "PrimaryButton"),
                      I.createElement(Z.QW, null, "TextButton"),
                      I.createElement(
                        Z.$n,
                        { svgicon: H.OeC },
                        "Button w/ Icon",
                      ),
                    ),
                  ),
                  I.createElement(
                    Z.dR,
                    null,
                    I.createElement(Z.pd, {
                      label: "Left input",
                      placeholder: "Placeholder",
                    }),
                    I.createElement(Z.pd, {
                      label: "Right input",
                      placeholder: "Placeholder",
                    }),
                  ),
                  I.createElement(Z.RF, {
                    label: "Another toggle",
                    description:
                      "This one has a longer description with more details.",
                  }),
                ),
              ),
              I.createElement(
                Z.wi,
                null,
                I.createElement(Z.CB, { onCancel: this.props.onCancel }),
              ),
            );
          }
        }
        (0, i.Cg)([T.oI], te.prototype, "OnInputChanged", null),
          (0, i.Cg)([T.oI], te.prototype, "OnToggled", null),
          (0, i.Cg)([T.oI], te.prototype, "OnSelectDropDownChanged", null),
          (0, i.Cg)([T.oI], te.prototype, "OnSubmit", null);
        class ne extends I.Component {
          rgDragDropOptions = [
            I.createElement(
              Z.ck,
              { key: "key1", id: "key1" },
              I.createElement(Z.RF, { label: "Draggable toggle #1" }),
            ),
            I.createElement(
              Z.ck,
              { key: "key2", id: "key2" },
              I.createElement(Z.RF, { label: "Draggable toggle #2" }),
            ),
            I.createElement(
              Z.ck,
              { key: "key3", id: "key3" },
              I.createElement(Z.RF, { label: "Draggable toggle #3" }),
            ),
            I.createElement(
              Z.ck,
              { key: "keyz", id: "keyz" },
              I.createElement(ie, { ref: this.RefTest }),
            ),
            I.createElement(
              Z.ck,
              { key: "key4", id: "key4" },
              I.createElement(Z.RF, { label: "Draggable toggle #4" }),
            ),
          ];
          OnSubmit() {
            alert(JSON.stringify(this.state));
          }
          RefTest(e) {
            console.log("Got ref", e);
          }
          OnListReordered(e, t) {
            Q.yY(this.rgDragDropOptions, e, t), this.forceUpdate();
          }
          render() {
            return I.createElement(
              Z.lV,
              { className: "DialogBody", onSubmit: this.OnSubmit },
              I.createElement(
                Z.AL,
                { onReorder: this.OnListReordered },
                this.rgDragDropOptions,
              ),
            );
          }
        }
        (0, i.Cg)([T.oI], ne.prototype, "OnSubmit", null),
          (0, i.Cg)([T.oI], ne.prototype, "RefTest", null),
          (0, i.Cg)([T.oI], ne.prototype, "OnListReordered", null);
        class ie extends I.Component {
          m_iInterval;
          constructor(e) {
            super(e), (this.state = { cSeconds: 0 });
          }
          componentDidMount() {
            this.m_iInterval = window.setInterval(() => {
              this.setState((e) => ({ cSeconds: e.cSeconds + 1 }));
            }, 1e3);
          }
          componentWillUnmount() {
            window.clearInterval(this.m_iInterval);
          }
          render() {
            return I.createElement(Z.pd, {
              value: this.state.cSeconds,
              disabled: !0,
              label: "COUNTER",
            });
          }
        }
        class oe extends I.Component {
          OnCMToggled(e) {
            e
              ? window.localStorage.setItem($, "true")
              : window.localStorage.removeItem($),
              this.forceUpdate();
          }
          OnStickyContextMenuToggle(e) {
            (0, U.$b)(e), this.forceUpdate();
          }
          render() {
            return I.createElement(
              I.Fragment,
              null,
              I.createElement(
                Z.nB,
                null,
                I.createElement(Z.RF, {
                  label: '"Sticky" Context Menus',
                  description:
                    "Context menus will stay open to allow inspecting CSS",
                  checked: (0, U.Y8)(),
                  onChange: this.OnStickyContextMenuToggle,
                }),
                I.createElement(Z.RF, {
                  label: "Log all CM Traffic",
                  description:
                    "All messages to and from the steam servers will be logged to the browser console (F12)",
                  checked:
                    window.localStorage &&
                    "true" == window.localStorage.getItem($),
                  onChange: this.OnCMToggled,
                }),
              ),
            );
          }
        }
        (0, i.Cg)([T.oI], oe.prototype, "OnCMToggled", null),
          (0, i.Cg)([T.oI], oe.prototype, "OnStickyContextMenuToggle", null);
        class re extends I.Component {
          m_SteamID;
          constructor(e) {
            super(e), (this.state = { searchString: "" });
          }
          OnSearchInput(e) {
            e.currentTarget.value != this.state.searchString &&
              this.setState({ searchString: e.currentTarget.value });
          }
          render() {
            let e,
              t = new J.JD();
            e =
              "" == this.state.searchString
                ? d.xm.FriendStore.self.steamid.GetAccountID()
                : this.state.searchString;
            let n = new J.ol(d.xm.FriendStore.GetPlayer(+e));
            return (
              (t.hover = n),
              (t.visible = !0),
              n.data_loader.EnsureCommunityDataLoaded(),
              I.createElement(
                Z.lV,
                { className: "DialogBody" },
                I.createElement(
                  Z.dR,
                  null,
                  I.createElement(
                    "div",
                    { style: { flex: 1 } },
                    I.createElement(Z.JU, null, "Old Throbber"),
                    I.createElement(
                      "div",
                      { className: "LoadingWrapper" },
                      I.createElement(
                        "div",
                        { className: "LoadingThrobber" },
                        I.createElement("div", { className: "Bar Bar1" }),
                        I.createElement("div", { className: "Bar Bar2" }),
                        I.createElement("div", { className: "Bar Bar3" }),
                      ),
                      I.createElement("div", { className: "LoadingText" }),
                    ),
                  ),
                  I.createElement(
                    "div",
                    { style: { flex: 2 } },
                    I.createElement(Z.JU, null, "New Throbber (W.I.P.)"),
                    I.createElement(
                      "div",
                      { className: "displayRow" },
                      I.createElement(X.t, {
                        size: "xlarge",
                        string: "X-Large",
                      }),
                      I.createElement(X.t, { size: "large", string: "Large" }),
                      I.createElement(X.t, {
                        size: "medium",
                        string: "Medium",
                      }),
                      I.createElement(X.t, { size: "small", string: "Small" }),
                    ),
                  ),
                ),
                I.createElement(
                  Z.nB,
                  null,
                  I.createElement(Z.JU, null, "Miniprofile Tester:"),
                  I.createElement(
                    "form",
                    null,
                    I.createElement("input", {
                      className: "friendSearchInput",
                      type: "text",
                      name: "memberlistSearch",
                      placeholder: "Enter SteamID",
                      value: this.state.searchString,
                      onInput: this.OnSearchInput,
                      autoComplete: "off",
                    }),
                  ),
                  I.createElement(
                    "div",
                    { className: "fakeMiniProfile", style: { zIndex: 5 } },
                    I.createElement(Y.A6, { hoverInstance: t }),
                  ),
                  I.createElement(dt, {
                    friend: d.xm.FriendStore.GetPlayer(+e),
                    context: null,
                  }),
                ),
              )
            );
          }
        }
        (0, i.Cg)([T.oI], re.prototype, "OnSearchInput", null);
        var ae = n(52434),
          se = n(82099),
          le = n(77631),
          ce = n(20074),
          me = n(77765),
          de = n(94958),
          ue = n(77171),
          he = n(11315),
          pe = n(31857),
          _e = n(86597),
          ge = n(46014),
          Ce = n(23812),
          fe = n(7153),
          Se = n(29359),
          ve = n(75228),
          be = n(45089),
          Ie = n(53819),
          we = n(68189),
          ye = n(21400);
        let Ee = class extends I.Component {
          render() {
            const e = d.xm.ChatStore.GetRecentChats(),
              t = {
                bGranularToday: !0,
                bGranularYesterday: !0,
                bGranularTodayTimeOnly: !0,
                bGranularWeek: !0,
                bAbbreviateDayOfWeek: !0,
                bForce24HourClock:
                  d.xm.SettingsStore.FriendsSettings.b24HourClock,
              };
            return I.createElement(
              "div",
              { className: we.RecentChatsList },
              e.map((e, n) => {
                if (e instanceof l.s) {
                  const i = e,
                    o = i.GetMember(i.accountid_partner);
                  let r;
                  i.unread_message_count > 0 &&
                    (r = I.createElement(
                      "div",
                      {
                        key: "FriendMessageCount",
                        className: "FriendMessageCount",
                      },
                      i.unread_message_count,
                    ));
                  let a = I.createElement(
                    "div",
                    { key: "RecentTime", className: we.Time },
                    (0, ye.lQ)(i.time_last_message, t),
                  );
                  return I.createElement(dt, {
                    friend: o,
                    key: n,
                    className: (0, ue.A)(
                      we.RecentChatElement,
                      i.unread_message_count > 0 && "unreadFriend",
                    ),
                    context: { chat: i, chatContext: "recentchats" },
                    bHideStatus: !0,
                    bHideGameName: !0,
                    bInGameIcon: !0,
                    lastChat: i,
                    statusPosition: "right",
                    listStatusIndicator: [r, a],
                  });
                }
                {
                  const i = e,
                    o = i.GetRoomWithLastMessageForUser();
                  let r;
                  i.hasUnreadChatMessage &&
                    (r = I.createElement(
                      "div",
                      {
                        key: "FriendMessageCount",
                        className: (0, ue.A)(
                          "FriendMessageCount",
                          i.HasUnreadMention && "HasUnreadMention",
                        ),
                      },
                      i.HasUnreadMention ? "@" : "!",
                    ));
                  let a = o
                    ? I.createElement(
                        "div",
                        { key: "RecentTime", className: we.Time },
                        (0, ye.lQ)(o.time_last_message, t),
                      )
                    : void 0;
                  return I.createElement(C.AX, {
                    key: n,
                    className: we.RecentChatElement,
                    group: i,
                    bShowLastChat: !0,
                    bHideUnreadMention: !0,
                    additionalElements: [a, r],
                  });
                }
              }),
            );
          }
        };
        Ee = (0, i.Cg)([v.PA], Ee);
        var De = n(92089),
          Ae = n(20590);
        var Te,
          Me = n(17070),
          Re = n(4532),
          ke = n(71465),
          Le = n(36755);
        let Ge = class extends I.Component {
          constructor(e) {
            super(e);
          }
          render() {
            let e =
                this.props.chat.VoiceChatStore.HasBeenAttemptingOverTwoSeconds(),
              t = this.props.chat.VoiceChatStore.IsAttemptingReconnect();
            return I.createElement(
              "div",
              { className: "connectionStatusLabels" },
              e &&
                I.createElement(
                  "div",
                  { className: "connectionStatus" },
                  I.createElement(
                    "a",
                    {
                      title: (0, A.we)("#VoiceChatConnectingHelp"),
                      className: "connectionStatus",
                      target: "_blank",
                      href: "https://support.steampowered.com/kb_article.php?ref=2598-RTZB-6114",
                    },
                    (0, A.we)("#VoiceChatConnecting"),
                  ),
                ),
              t &&
                I.createElement(
                  "div",
                  { className: "connectionStatus" },
                  I.createElement(
                    "a",
                    {
                      className: "connectionStatus",
                      target: "_blank",
                      href: "https://support.steampowered.com/kb_article.php?ref=2598-RTZB-6114",
                    },
                    (0, A.we)("#VoiceChatReconnecting"),
                  ),
                ),
            );
          }
        };
        Ge = (0, i.Cg)([v.PA], Ge);
        let Fe = class extends I.Component {
          render() {
            let e = this.props.chats.GetActiveVoiceChat();
            return this.props.chats.VoiceChat.IsAnyVoiceActive() && e
              ? I.createElement(Pe, {
                  chat: e,
                  name: this.props.chats.GetActiveVoiceChannelName(),
                  nostatus: !1,
                  containerRef: this.props.containerRef,
                })
              : I.createElement(
                  "div",
                  {
                    className: "activeVoiceControls",
                    ref: this.props.containerRef,
                  },
                  I.createElement(
                    "div",
                    { className: "buttonsContainer" },
                    I.createElement(
                      "div",
                      { className: "activeVoiceFlexBox" },
                      I.createElement(
                        "div",
                        { className: "activeVoiceLabels" },
                        I.createElement(
                          "div",
                          { className: "activeVoiceHeader" },
                          (0, A.we)("#ActiveVoiceChat"),
                        ),
                        I.createElement("div", {
                          className: "activeVoiceName",
                        }),
                      ),
                      I.createElement(
                        w.Z,
                        {
                          className: "activeVoiceButtons",
                          "flow-children": "row",
                        },
                        I.createElement(Be, null),
                        I.createElement(xe, null),
                        I.createElement("div", {
                          className: "activeVoiceButtonsSpacer",
                        }),
                        I.createElement(Oe, null),
                        I.createElement("div", {
                          className: "activeVoiceButtonsSpacerAfter",
                        }),
                      ),
                    ),
                  ),
                );
          }
        };
        Fe = (0, i.Cg)([v.PA], Fe);
        let Pe = class extends I.Component {
          constructor(e) {
            super(e);
          }
          ActivateActiveVoiceChat(e) {
            if (this.props.chat instanceof a.d) {
              let t = d.xm.ChatStore.GetChatRoomGroup(
                this.props.chat.GetParentGroupID(),
              );
              if (t)
                return void d.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                  (0, m.CO)(e),
                  t,
                  !0,
                );
            }
            d.xm.UIStore.ShowAndOrActivateChat(
              (0, m.CO)(e),
              this.props.chat,
              !0,
            );
          }
          render() {
            let e = d.xm.VoiceStore.GetPushToTalkEnabled(),
              t = d.xm.VoiceStore.GetPushToMuteEnabled(),
              n = d.xm.VoiceStore.GetPushToTalkVoiceStateEnabled(),
              i = d.xm.VoiceStore.GetPushToTalkHotKeyDisplayString(),
              o = "";
            return (
              (e || t) && (o += " pushToTalkEnabled"),
              n && (o += " pushToTalkKeyDown"),
              I.createElement(
                "div",
                {
                  className: "activeVoiceControls" + o,
                  ref: this.props.containerRef,
                },
                I.createElement(
                  "div",
                  { className: "buttonsContainer" },
                  I.createElement(
                    "div",
                    { className: "activeVoiceFlexBox" },
                    I.createElement(
                      "div",
                      { className: "activeVoiceLabels" },
                      I.createElement(
                        "div",
                        { className: "activeVoiceHeader" },
                        (0, A.we)("#ActiveVoiceChat"),
                      ),
                      I.createElement(
                        "div",
                        {
                          className: "activeVoiceName",
                          onClick: this.ActivateActiveVoiceChat,
                        },
                        this.props.name,
                      ),
                    ),
                    I.createElement(
                      w.Z,
                      {
                        className: "activeVoiceButtons",
                        "flow-children": "row",
                      },
                      I.createElement(Be, null),
                      I.createElement(xe, null),
                      I.createElement("div", {
                        className: "activeVoiceButtonsSpacer",
                      }),
                      I.createElement(Oe, null),
                      I.createElement("div", {
                        className: "activeVoiceButtonsSpacerAfter",
                      }),
                    ),
                  ),
                  !this.props.nostatus &&
                    I.createElement(Ge, { chat: this.props.chat }),
                ),
                (e || t) &&
                  I.createElement(
                    "div",
                    { className: "activeVoicePushToTalk" + o },
                    (0, A.we)(
                      t ? "#ActiveVoicePushToMute" : "#ActiveVoicePushToTalk",
                      i,
                    ),
                  ),
              )
            );
          }
        };
        (0, i.Cg)([T.oI], Pe.prototype, "ActivateActiveVoiceChat", null),
          (Pe = (0, i.Cg)([v.PA], Pe));
        let Be = class extends I.Component {
          ToggleMicrophone(e) {
            d.xm.VoiceStore.IsMicMuted() &&
              d.xm.VoiceStore.IsOutputMuted() &&
              d.xm.VoiceStore.ToggleOutputMuting(),
              d.xm.VoiceStore.ToggleMicMuting(),
              e.stopPropagation();
          }
          render() {
            let e = d.xm.VoiceStore.BNoMicAvailableForSession(),
              t = d.xm.VoiceStore.BHasSampleRateTooHighInBrowser(),
              n = d.xm.VoiceStore.IsMicMuted(),
              i = "VoiceControlPanelButton ToggleMicrophoneButton",
              o = "";
            return (
              (o = n
                ? (0, A.we)("#VoiceChat_UnmuteMic")
                : (0, A.we)("#VoiceChat_MuteMic")),
              e &&
                ((i += " NoMicrophone"),
                (o = t
                  ? (0, A.we)("#VoiceChat_ChromeSampleRateTooHighMicExplainer")
                  : (0, A.we)("#VoiceChat_DeniedMicrophoneAccess"))),
              n && (i += " disabled"),
              I.createElement(
                Ce.fu,
                {
                  className: i,
                  onClick: this.ToggleMicrophone,
                  onOKActionDescription: o,
                  title: o,
                },
                I.createElement(
                  "div",
                  { className: "VoiceIconCtn" },
                  n || e
                    ? I.createElement(H.EQ9, { off: !0 })
                    : I.createElement(H.EQ9, null),
                ),
              )
            );
          }
        };
        (0, i.Cg)([T.oI], Be.prototype, "ToggleMicrophone", null),
          (Be = (0, i.Cg)([v.PA], Be));
        let xe = class extends I.Component {
          ToggleVoiceOutput(e) {
            d.xm.VoiceStore.IsOutputMuted() == d.xm.VoiceStore.IsMicMuted() &&
              d.xm.VoiceStore.ToggleMicMuting(),
              d.xm.VoiceStore.ToggleOutputMuting(),
              e.stopPropagation();
          }
          render() {
            let e = d.xm.VoiceStore.IsOutputMuted(),
              t = "VoiceControlPanelButton ToggleVoiceOutputButton";
            e && (t += " disabled");
            let n = "";
            return (
              (n = e
                ? (0, A.we)("#VoiceChat_UnmuteSpeaker")
                : (0, A.we)("#VoiceChat_MuteSpeaker")),
              I.createElement(
                Ce.fu,
                {
                  className: t,
                  onClick: this.ToggleVoiceOutput,
                  onOKActionDescription: n,
                  title: n,
                },
                I.createElement(
                  "div",
                  { className: "VoiceIconCtn" },
                  e
                    ? I.createElement(H.LeN, { off: !0 })
                    : I.createElement(H.LeN, null),
                  " ",
                ),
              )
            );
          }
        };
        (0, i.Cg)([T.oI], xe.prototype, "ToggleVoiceOutput", null),
          (xe = (0, i.Cg)([v.PA], xe));
        let Oe = class extends I.Component {
          static contextType = o.QO;
          EndVoiceChat(e) {
            d.xm.VoiceStore.OnUserEndVoiceChat(), e.stopPropagation();
          }
          render() {
            return I.createElement(
              Ce.fu,
              {
                className: "VoiceControlPanelButton chatEndVoiceChat",
                onClick: this.EndVoiceChat,
                title: (0, A.we)("#VoiceChat_Leave"),
                onOKActionDescription: (0, A.we)("#VoiceChat_Leave"),
              },
              I.createElement(
                "div",
                { className: "VoiceIconCtn" },
                I.createElement(H.OWN, null),
              ),
            );
          }
        };
        (0, i.Cg)([T.oI], Oe.prototype, "EndVoiceChat", null),
          (Oe = (0, i.Cg)([v.PA], Oe));
        class Ne extends I.Component {
          constructor(e) {
            super(e);
          }
          GetNormalizedSearchString() {
            return (
              this.state.searchString &&
              this.state.searchString.trim().toLocaleLowerCase()
            );
          }
        }
        const Ve = (e) => {
            e.fnOnToggleViewingIncomingInvites;
            let [t, n] = I.useState(d.xm.UIStore.FriendsListSteamDeckActiveTab),
              i = I.useRef(d.xm.UIStore.FriendsListSteamDeckActiveTab),
              [o] = I.useState(new Map());
            I.useEffect(() => {
              e.rgTabs.forEach((e) => {
                o.set(e.eTab, I.createRef());
              });
            }, [e, o]),
              I.useEffect(() => {
                if (t != i.current) {
                  let e = o.get(i.current),
                    n = o.get(t);
                  e.current?.BFocusWithin() &&
                    n.current &&
                    n.current.TakeFocus(),
                    (i.current = t);
                }
              }, [t, o]);
            const r = I.useCallback(
              (e, t) => {
                n(t), (i.current = e);
              },
              [n, i],
            );
            (0, T.hL)(
              d.xm.UIStore.FriendsListSteamDeckActiveTabCallbackList(),
              r,
            );
            const a = I.useCallback((e) => {
                d.xm.UIStore.FriendsListSteamDeckActiveTab = e;
              }, []),
              s = (e) => {
                d.xm.UIStore.SelectFriendsListSteamDeckSiblingTab(e);
              };
            let l = (0, b.q3)(() => d.xm.FriendStore.GetPendingInviteCount());
            const c = () => {
              SteamClient.Messaging.PostMessage(
                "FriendsUI",
                "NavigateToInvites",
                "{}",
              );
            };
            return I.createElement(
              I.Fragment,
              null,
              I.createElement(
                "div",
                { className: "FriendsListSteamDeckTopSection" },
                I.createElement(
                  "div",
                  { className: "TabPanelHeader" },
                  e.rgTabs[t].strTabContentTitle,
                  t == Ie.Jw.FriendsList &&
                    I.createElement(
                      w.Z,
                      { className: "FriendActionsContainer" },
                      l > 0 &&
                        I.createElement(
                          w.Z,
                          {
                            onActivate: c,
                            onOKActionDescription: (0, A.we)(
                              "#Menu_FriendInvites",
                            ),
                            focusable: !0,
                            className: "FriendsInvitesButton",
                          },
                          I.createElement(H.GSe, { bShowArm: !0 }),
                          I.createElement(
                            "div",
                            { className: "PendingInviteCount" },
                            l,
                          ),
                        ),
                      I.createElement(
                        w.Z,
                        {
                          onActivate: c,
                          onOKActionDescription: (0, A.we)(
                            "#FriendInviteLink_AddFriend",
                          ),
                          focusable: !0,
                          className: "friendListButton AddFriendButton",
                        },
                        I.createElement(H.sdo, null),
                      ),
                    ),
                  t == Ie.Jw.GroupChats &&
                    I.createElement(
                      w.Z,
                      { className: "FriendActionsContainer" },
                      I.createElement(
                        w.Z,
                        {
                          onActivate: (e) => {
                            let t = D.uX(e);
                            (0, q.UA)((0, m._k)(t), t);
                          },
                          onOKActionDescription: (0, A.we)(
                            "#Chat_CreateGroupChat",
                          ),
                          focusable: !0,
                          className: "NewChatGroupButton",
                        },
                        I.createElement(H.nGC, null),
                      ),
                    ),
                ),
                I.createElement(
                  w.Z,
                  {
                    className: "FriendsListSteamDeckTabs",
                    "flow-children": "row",
                    navEntryPreferPosition: fe.iU.PREFERRED_CHILD,
                  },
                  I.createElement(
                    w.Z,
                    {
                      className: (0, ue.A)(pe.TabBumper, pe.Previous),
                      onActivate: () => s(-1),
                      focusable: !1,
                    },
                    I.createElement(be.$m, {
                      button: ve.g4.LeftBumper,
                      type: be.wt.Dark,
                    }),
                  ),
                  e.rgTabs.map((e, n) =>
                    I.createElement(
                      We,
                      {
                        key: n,
                        navRef: o.get(e.eTab),
                        tab: e.eTab,
                        activeTab: t,
                        preferredFocus: e.eTab == t,
                        onFocus: () => a(e.eTab),
                        fnSetActiveTab: a,
                      },
                      e.tabElement,
                    ),
                  ),
                  I.createElement(
                    w.Z,
                    {
                      className: (0, ue.A)(pe.TabBumper, pe.Next),
                      onActivate: () => s(1),
                      focusable: !1,
                    },
                    I.createElement(be.$m, {
                      button: ve.g4.RightBumper,
                      type: be.wt.Dark,
                    }),
                  ),
                ),
              ),
              I.createElement(He, { rgTabs: e.rgTabs, activeTab: t }),
            );
          },
          Ue = (e, t) => {
            let n;
            switch (e) {
              case Ie.Jw.Favorites:
                n = "FavoritesTabList";
                break;
              case Ie.Jw.FriendsList:
                n = "FriendsTabList";
                break;
              case Ie.Jw.GroupChats:
                n = "GroupsTabList";
                break;
              case Ie.Jw.RecentMessages:
                n = "RecentMessagesTabList";
                break;
              default:
                n = "TabList";
            }
            return (0, ue.A)(
              n,
              e < t ? "beforeActiveTab" : e == t ? "" : "afterActiveTab",
            );
          };
        function He(e) {
          const { rgTabs: t, activeTab: n } = e,
            i = I.useRef(n),
            o = (0, Z.a_)().bQuickAccessMenu,
            r = I.useRef(),
            a = I.useRef();
          return (
            (0, I.useEffect)(() => {
              i.current !== n &&
                r.current?.BFocusWithin() &&
                a.current &&
                a.current.TakeFocus(),
                (i.current = n);
            }, [n]),
            I.createElement(
              w.Z,
              {
                className: (0, ue.A)(
                  "FriendsListTabPanelContainer",
                  o && "QuickAccess",
                ),
                fnScrollIntoViewHandler: () => null,
              },
              t.map((e) => {
                const t = e.eTab === n,
                  o = e.eTab === i.current,
                  s = t ? a : o ? r : null;
                return I.createElement(
                  ze,
                  {
                    className: Ue(e.eTab, n),
                    key: e.eTab,
                    navRef: s,
                    bActiveTab: t,
                  },
                  e.tabContentElement,
                );
              }),
            )
          );
        }
        const We = I.forwardRef(function (e, t) {
            let { tab: n, activeTab: i, fnSetActiveTab: o, ...r } = e;
            const a = n == i;
            return I.createElement(w.Z, {
              focusable: !0,
              onActivate: () => {
                a || o(n);
              },
              className: (0, ue.A)("FriendsListTab", a && "Active"),
              ...r,
              ref: t,
            });
          }),
          ze = I.forwardRef(function (e, t) {
            let {
              bActiveTab: n,
              className: i,
              navRef: o,
              children: r,
              ...a
            } = e;
            const { refNav: s, bShouldMount: l } = (function (e, t) {
                const n = I.useRef(),
                  i = I.useRef(),
                  o = I.useRef(),
                  r = I.useRef(),
                  a = (0, ee.uH)(e, t);
                return (
                  I.useEffect(() => {
                    if (!e && a)
                      n.current &&
                        (o.current = {
                          scrollTop: n.current.scrollTop,
                          scrollLeft: n.current.scrollLeft,
                        }),
                        i.current && (r.current = i.current.GetFocusSnapshot());
                    else if (e && !a) {
                      if (n.current && o.current) {
                        const { scrollTop: e, scrollLeft: t } = o.current;
                        (o.current = void 0),
                          window.setTimeout(() => {
                            (n.current.scrollTop = e),
                              (n.current.scrollLeft = t);
                          }, 1);
                      }
                      i.current &&
                        r.current &&
                        (i.current.RestoreFocusSnapshot(r.current, 2),
                        (r.current = void 0));
                    }
                  }, [e, a]),
                  { bShouldMount: a || e, refNav: i, refScroll: n }
                );
              })(!0, 3e5),
              c = (0, T.Ue)(s, o);
            return I.createElement(
              w.Z,
              {
                navRef: c,
                className: (0, ue.A)(i, "FriendsListTabPanel", n && "Active"),
                fnCanTakeFocus: () => n,
                ...a,
                ref: t,
              },
              l && r,
            );
          });
        function je() {
          let e = !1,
            t = (0, b.q3)(() => {
              let t = 0;
              const n = d.xm.ChatStore.GetRecentChats();
              for (const i of n)
                if (i instanceof l.s) {
                  const e = i;
                  e.unread_message_count > 0 && (t += e.unread_message_count);
                } else if (i instanceof r.a$) {
                  e || (e = i.HasUnreadMention);
                  i.hasUnreadChatMessage && t++;
                }
              return t;
            }),
            n = 1 == t && e,
            i = t < 100 && !(e && 1 == t),
            o = n ? "@" : "!";
          return I.createElement(
            "div",
            {
              className: (0, ue.A)(
                pe.RecentChatIcon,
                n && pe.NotificationUnreadMention,
              ),
            },
            I.createElement(H.RO3, null),
            t > 0 &&
              I.createElement("div", { className: pe.UnreadAlert }, i ? t : o),
          );
        }
        let qe = class extends Ne {
          m_navRef = null;
          m_fnUnregisterMessages;
          constructor(e) {
            super(e),
              (this.state = {
                searchString: "",
                bFriendTabSearch: !1,
                bViewingIncomingInvites: !1,
                tabLabelWidth: 0,
              }),
              (this.m_navRef = I.createRef());
          }
          componentDidMount() {
            const e = this.props.friends.FavoritesStore.favorites;
            (d.xm.UIStore.FriendsListSteamDeckActiveTab = e.length
              ? Ie.Jw.Favorites
              : Ie.Jw.FriendsList),
              (this.m_fnUnregisterMessages =
                SteamClient.Messaging.RegisterForMessages(
                  "FriendsList",
                  this.OnMessage,
                ));
          }
          componentWillUnmount() {
            this.m_fnUnregisterMessages &&
              this.m_fnUnregisterMessages.unregister();
          }
          OnMessage(e, t, n) {
            "FriendsList" == e &&
              "ShowInvitesList" == t &&
              ((d.xm.UIStore.FriendsListSteamDeckActiveTab = Ie.Jw.FriendsList),
              this.SetInviteListVisibility(!0));
          }
          OnSearchSelection() {
            this.setState({ searchString: "" });
          }
          StartSearchOnKeyPress(e) {}
          SetInviteListVisibility(e) {
            this.setState({ bViewingIncomingInvites: e }, () => {
              this.state.bViewingIncomingInvites &&
                (d.xm.FriendStore.FriendGroupStore.EnsureMutualFriendsForIncomingInvites(),
                d.xm.FriendStore.ClanStore.EnsureInitialStateForClanInvites());
            });
          }
          ToggleViewingIncomingInvites() {
            this.SetInviteListVisibility(!this.state.bViewingIncomingInvites);
          }
          TakeFocus() {
            this.m_navRef.current.TakeFocus();
          }
          render() {
            let e = this.GetNormalizedSearchString(),
              t = "friendRequestButton";
            this.state.bViewingIncomingInvites;
            let n = "friendTab socialListTab activeTab";
            this.state.bFriendTabSearch;
            this.state.tabLabelWidth > 0 && this.state.tabLabelWidth;
            let i = !1;
            if (this.props.popup) {
              let e = (0, m._k)(this.props.popup);
              i = !(0, R.u)(e, R.m);
            }
            let o = !1,
              r = 0,
              a = !1,
              s =
                "friendListButton friendSettingsButton friendsListNeedsUpdate no-drag";
            null != m.ZM &&
              ((o = m.ZM.BNeedsUpdate()),
              (r = m.ZM.GetSecondsOutOfDate()),
              r < 432e3
                ? (o = !1)
                : r > 604800 && ((s += " friendsListVeryOutOfDate"), (a = !0)));
            let l = "friendlist GamepadMode";
            this.props.bQuickAccess || (l += " FriendsListAnchored"),
              this.state.bViewingIncomingInvites &&
                (l += " FriendRequestViewActive");
            const c = [
              {
                eTab: Ie.Jw.Favorites,
                strTabContentTitle: (0, A.we)("#FriendGroup_Favorites"),
                tabElement: I.createElement(H.Em3, null),
                tabContentElement: I.createElement(k, {
                  FavoritesStore: this.props.friends.FavoritesStore,
                }),
              },
              {
                eTab: Ie.Jw.FriendsList,
                strTabContentTitle: (0, A.we)("#Label_Friends"),
                tabElement: I.createElement(H.GSe, {
                  bShowArm: this.state.bViewingIncomingInvites,
                }),
                tabContentElement: I.createElement(et, {
                  friends: this.props.friends,
                  chats: this.props.chats,
                  searchString: e,
                  fnOnSearchSelection: this.OnSearchSelection,
                  onStartSearch: this.StartSearchOnKeyPress,
                  browserContext: this.props.browserContext,
                  bViewingIncomingInvites: this.state.bViewingIncomingInvites,
                  bHideGroupChats: !0,
                  onClose: this.ToggleViewingIncomingInvites,
                }),
              },
              {
                eTab: Ie.Jw.GroupChats,
                strTabContentTitle: (0, A.we)("#Label_Groups"),
                tabElement: I.createElement(H.YJl, null),
                tabContentElement: I.createElement(tt, {
                  friends: this.props.friends,
                  chats: this.props.chats,
                }),
              },
              {
                eTab: Ie.Jw.RecentMessages,
                strTabContentTitle: (0, A.we)("#FriendGroup_Recent"),
                tabElement: I.createElement(je, null),
                tabContentElement: I.createElement(Ee, null),
              },
            ];
            return I.createElement(
              w.Z,
              {
                className: l,
                "flow-children": "column",
                onButtonDown: (e) => {
                  const t = e.detail.button;
                  t == Se.pR.BUMPER_LEFT
                    ? (d.xm.UIStore.SelectFriendsListSteamDeckSiblingTab(-1),
                      e.stopPropagation())
                    : t == Se.pR.BUMPER_RIGHT &&
                      (d.xm.UIStore.SelectFriendsListSteamDeckSiblingTab(1),
                      e.stopPropagation());
                },
                navRef: this.m_navRef,
              },
              I.createElement(
                "div",
                {
                  className: (0, ue.A)(
                    "friendListHeaderContainer",
                    "titleBarContainer",
                    (0, Me.Pr)() && "OSX",
                  ),
                },
                I.createElement("div", { className: "disconnectBlocker" }),
              ),
              I.createElement(Ve, {
                friends: this.props.friends,
                rgTabs: c,
                fnOnToggleViewingIncomingInvites:
                  this.ToggleViewingIncomingInvites,
              }),
            );
          }
        };
        (0, i.Cg)([T.oI], qe.prototype, "OnMessage", null),
          (0, i.Cg)([T.oI], qe.prototype, "OnSearchSelection", null),
          (0, i.Cg)([T.oI], qe.prototype, "StartSearchOnKeyPress", null),
          (0, i.Cg)([T.oI], qe.prototype, "SetInviteListVisibility", null),
          (0, i.Cg)([T.oI], qe.prototype, "ToggleViewingIncomingInvites", null),
          (qe = (0, i.Cg)([v.PA], qe));
        class Ke extends I.Component {
          m_friendsListRef = null;
          constructor(e) {
            super(e), (this.m_friendsListRef = I.createRef());
          }
          render() {
            let e = d.xm.UIStore.GetDefaultTabSetForContext(
              this.props.browserContext,
            );
            return I.createElement(
              w.Z,
              {
                className: "FriendsListAndChatsSteamDeck",
                "flow-children": "row",
                onButtonDown: (e) => {
                  const t = e.detail.button;
                  t == Se.pR.BUMPER_LEFT
                    ? (d.xm.UIStore.SelectFriendsListSteamDeckSiblingTab(-1),
                      e.stopPropagation())
                    : t == Se.pR.BUMPER_RIGHT &&
                      (d.xm.UIStore.SelectFriendsListSteamDeckSiblingTab(1),
                      e.stopPropagation());
                },
              },
              I.createElement(qe, {
                ref: this.m_friendsListRef,
                bQuickAccess: !1,
                friends: this.props.friends,
                chats: this.props.chats,
                browserContext: this.props.browserContext,
                collapsed: !1,
              }),
              I.createElement(
                w.Z,
                { className: "SteamDeckChats" },
                I.createElement(x.ft, { tabs: e, ResponsiveWindowState: null }),
              ),
              d.xm.CMInterface.BDisconnected() &&
                I.createElement(
                  "div",
                  { className: "FriendsDataOutofDate" },
                  I.createElement(
                    "div",
                    null,
                    I.createElement(W.y$y, null),
                    (0, A.we)("#Friends_Reconnecting_Msg"),
                  ),
                ),
            );
          }
        }
        let Ze = class extends Ne {
          m_animationTabLabelCollapse;
          m_elTabLabel;
          m_tabLabelWidth;
          ref = I.createRef();
          constructor(e) {
            super(e),
              (this.state = {
                searchString: "",
                bFriendTabSearch: !1,
                bViewingIncomingInvites: !1,
                tabLabelWidth: 0,
              }),
              (this.m_tabLabelWidth = -1);
          }
          m_refSearchInput;
          OnSearchInputRef(e) {
            this.m_refSearchInput = e;
          }
          StartSearchOnKeyPress(e) {
            let t = this.state.bFriendTabSearch;
            this.setState({ bFriendTabSearch: !0 }),
              t && this.m_refSearchInput && this.m_refSearchInput.focus();
          }
          OnSearchInput(e) {
            e.currentTarget.value != this.state.searchString &&
              this.setState({ searchString: e.currentTarget.value });
          }
          OnSearchSubmit(e) {
            e.preventDefault();
            let t = this.GetNormalizedSearchString();
            if (t && t.length) {
              let n =
                this.props.friends.FriendGroupStore.all_friends.GetMembersMatchingSearch(
                  t,
                );
              n.length && n[0].OpenChatDialog((0, m.CO)(e));
            }
            this.setState({ searchString: "" });
          }
          OnSearchSelection() {
            this.setState({ searchString: "" });
          }
          OnSearchKeyDown(e) {
            27 == e.keyCode &&
              (this.setState({ searchString: "" }),
              e.preventDefault(),
              e.currentTarget.blur(),
              this.setState({ bFriendTabSearch: !1 }),
              this.CollapseTabLabel());
          }
          OnClearSearch() {
            this.setState({ searchString: "" }), this.OnTabSearchClick();
          }
          OnSettingsClick(e) {
            d.xm.IsDesktopUIActive()
              ? SteamClient.URL.ExecuteSteamURL("steam://open/settings/friends")
              : (0, K.T)(
                  (0, m.CO)(e),
                  e.currentTarget.ownerDocument.defaultView,
                );
          }
          ToggleCollapseExpand(e) {
            d.xm.UIStore.SetFriendsListCollapsed(
              (0, m.CO)(e),
              !this.props.collapsed,
            );
          }
          OnDoFriendsListUpdate(e) {
            let t = e.currentTarget.ownerDocument.defaultView,
              n = m.ZM.GetSecondsOutOfDate(),
              i = (0, A.Hq)(n, !0);
            (0, h.Ci)(
              t,
              (0, A.we)("#Friends_ConfirmUpdate_Title"),
              (0, A.we)("#Friends_ConfirmUpdate_Body", i),
              (0, A.we)("#Friends_ConfirmUpdate_Ok"),
            )
              .then(() => {
                m.ZM.PerformFriendsUIUpdate();
              })
              .catch(() => {});
          }
          BindTabLabel(e) {
            (this.m_elTabLabel = e), this.UpdateWindowIcon();
          }
          UpdateWindowIcon() {
            if (
              this.m_elTabLabel &&
              void 0 !== this.m_elTabLabel.ownerDocument.defaultView.SteamClient
            ) {
              let e = !1;
              this.props.chats.VoiceChat.IsAnyVoiceActive() && (e = !0);
              let t =
                this.props.chats.FriendChatStore.GetFriendsWithUnreadMessages(
                  this.props.browserContext,
                ).length > 0;
              try {
                this.m_elTabLabel &&
                  null !=
                    this.m_elTabLabel.ownerDocument.defaultView.SteamClient
                      .Window.SetWindowIcon &&
                  (e
                    ? this.m_elTabLabel.ownerDocument.defaultView.SteamClient.Window.SetWindowIcon(
                        "voice",
                      )
                    : t
                      ? this.m_elTabLabel.ownerDocument.defaultView.SteamClient.Window.SetWindowIcon(
                          "messages",
                        )
                      : this.m_elTabLabel.ownerDocument.defaultView.SteamClient.Window.SetWindowIcon(
                          "steam",
                        ));
              } catch (e) {}
            }
          }
          CollapseTabLabel() {
            if (
              (this.m_animationTabLabelCollapse &&
                this.m_animationTabLabelCollapse.Cancel(),
              this.state.bFriendTabSearch)
            ) {
              let e = 1,
                t = this.m_tabLabelWidth;
              this.setState({ tabLabelWidth: e }, () => {
                (this.m_animationTabLabelCollapse = new z.w(
                  this,
                  { tabLabelWidth: t },
                  { msDuration: 300, timing: "sine" },
                )),
                  this.m_animationTabLabelCollapse.Start();
              });
            } else {
              let e = this.m_tabLabelWidth,
                t = 1;
              this.setState({ tabLabelWidth: e }, () => {
                (this.m_animationTabLabelCollapse = new z.w(
                  this,
                  { tabLabelWidth: t },
                  { msDuration: 300, timing: "sine" },
                )),
                  this.m_animationTabLabelCollapse.Start();
              });
            }
          }
          OnTabSearchClick() {
            this.m_tabLabelWidth < 0 &&
              (this.m_tabLabelWidth = this.m_elTabLabel.clientWidth),
              this.setState({ bFriendTabSearch: !this.state.bFriendTabSearch }),
              this.CollapseTabLabel();
          }
          ToggleViewingIncomingInvites() {
            this.setState(
              { bViewingIncomingInvites: !this.state.bViewingIncomingInvites },
              () => {
                this.state.bViewingIncomingInvites &&
                  (d.xm.FriendStore.FriendGroupStore.EnsureMutualFriendsForIncomingInvites(),
                  d.xm.FriendStore.ClanStore.EnsureInitialStateForClanInvites());
              },
            );
          }
          SignIn() {
            window.parent.postMessage(
              { message: "SignInRequest", state: void 0 },
              "https://steamloopback.host",
            );
          }
          render() {
            let e = this.props.friends.self,
              t = this.GetNormalizedSearchString(),
              n = this.state.bFriendTabSearch,
              i = "friendTab socialListTab activeTab";
            n && (i += " TabSearchActive");
            let r = {};
            this.state.tabLabelWidth > 0 &&
              (r.width = this.state.tabLabelWidth + "px");
            let a = !1;
            if (this.props.popup) {
              let e = (0, m._k)(this.props.popup);
              a = !(0, R.u)(e, R.m);
            }
            let s = !1,
              l = 0,
              c = !1,
              u =
                "friendListButton friendSettingsButton friendsListNeedsUpdate no-drag";
            null != m.ZM &&
              ((s = m.ZM.BNeedsUpdate()),
              (l = m.ZM.GetSecondsOutOfDate()),
              l < 432e3
                ? (s = !1)
                : l > 604800 && ((u += " friendsListVeryOutOfDate"), (c = !0)));
            let h = this.props.chats.GetActiveVoiceChat(),
              p = !1;
            (this.props.chats.VoiceChat.IsAnyVoiceActive() || h) && (p = !0),
              this.UpdateWindowIcon();
            let _ = d.xm.SettingsStore.FriendsSettings.bCompactFriendsList,
              g = this.props.collapsed,
              C = "friendlist",
              f = m.ZM && m.ZM.IsDesktopUIActive();
            _ && (C += " compactView"),
              s && (C += " needsUpdate"),
              g && this.props.collapsible && (C += " collapsed");
            const S = d.xm.FriendStore.BIsOfflineMode(),
              v = a;
            return I.createElement(
              "div",
              { className: C, ref: this.ref },
              I.createElement(
                "div",
                {
                  className: (0, ue.A)(
                    "friendListHeaderContainer",
                    "titleBarContainer",
                    (0, Me.Pr)() && "OSX",
                  ),
                },
                this.props.popup &&
                  o.TS.IN_CLIENT &&
                  I.createElement(se.c, {
                    hideMin: v,
                    hideMax: v,
                    popup: this.props.popup,
                    className: "chatTitleBar",
                  }),
                this.props.collapsible &&
                  I.createElement(
                    "div",
                    { className: "friendListCollapse no-drag" },
                    I.createElement(
                      "div",
                      {
                        className:
                          "friendListButton friendCollapseButton no-drag " +
                          (g ? "Collapsed" : ""),
                        onClick: this.ToggleCollapseExpand,
                      },
                      I.createElement(H.F2T, null),
                    ),
                  ),
                I.createElement(Je, {
                  popup: this.props.popup && this.props.popup,
                  currentUser: e,
                }),
                I.createElement(
                  "div",
                  { className: "friendListButtons" },
                  s &&
                    I.createElement(
                      "div",
                      {
                        className: u,
                        onClick: this.OnDoFriendsListUpdate,
                        title: c
                          ? (0, A.we)("#Tooltip_FriendsListUpdate_VeryOld")
                          : (0, A.we)("#Tooltip_FriendsListUpdate"),
                      },
                      I.createElement(H.MvQ, null),
                    ),
                  !f &&
                    I.createElement(
                      "div",
                      {
                        className:
                          "friendListButton friendSettingsButton no-drag",
                        onClick: this.OnSettingsClick,
                        title: (0, A.we)("#Tooltip_Settings"),
                      },
                      I.createElement(H.wB_, null),
                    ),
                ),
                !S &&
                  I.createElement(
                    I.Fragment,
                    null,
                    I.createElement(
                      N.A,
                      null,
                      p &&
                        I.createElement(
                          Le.M,
                          {
                            key: "activeVoiceControls1",
                            classNames: "activevoice-anim",
                            timeout: 500,
                          },
                          (e) =>
                            I.createElement(Fe, {
                              chats: this.props.chats,
                              containerRef: e,
                            }),
                        ),
                    ),
                    I.createElement(Ye, {
                      browserContext: this.props.browserContext,
                    }),
                    I.createElement(L, {
                      FavoritesStore: this.props.friends.FavoritesStore,
                      bInOverlay: a,
                    }),
                    I.createElement(
                      "div",
                      { className: "socialTabSearchContainer" },
                      I.createElement(
                        "div",
                        { className: "socialTabContainer" },
                        I.createElement(
                          "div",
                          { className: i },
                          I.createElement(
                            "div",
                            {
                              className: "tabLabel",
                              style: r,
                              ref: this.BindTabLabel,
                              onClick: n ? void 0 : this.OnTabSearchClick,
                            },
                            (0, A.we)("#tab_friends"),
                          ),
                          I.createElement(
                            "div",
                            { className: "friendsTabButtonsContainer" },
                            I.createElement(
                              "div",
                              {
                                className: "TabSearchButton",
                                onClick: n ? null : this.OnTabSearchClick,
                              },
                              I.createElement(
                                N.A,
                                { className: "tabSearchTransitionGroup" },
                                n &&
                                  I.createElement(
                                    Le.M,
                                    {
                                      key: "tabSearch",
                                      classNames: "tab-search-anim",
                                      timeout: 500,
                                    },
                                    (e) =>
                                      I.createElement(
                                        "div",
                                        {
                                          ref: e,
                                          className: "socialSearchContainer",
                                        },
                                        I.createElement(
                                          "form",
                                          {
                                            className:
                                              "socialInputContainer" +
                                              (n ? " SearchActive" : ""),
                                            name: "friendSearchForm",
                                            onSubmit: this.OnSearchSubmit,
                                          },
                                          I.createElement(
                                            "div",
                                            {
                                              className:
                                                "inputContainer no-drag",
                                            },
                                            I.createElement("input", {
                                              id: "friendSearchInputID",
                                              className: "friendSearchInput",
                                              autoFocus: !0,
                                              type: "text",
                                              name: "friendSearch",
                                              placeholder: (0, A.we)(
                                                "#SearchFriends",
                                              ),
                                              value: this.state.searchString,
                                              onInput: this.OnSearchInput,
                                              onKeyDown: this.OnSearchKeyDown,
                                              autoComplete: "off",
                                              ref: this.OnSearchInputRef,
                                            }),
                                            I.createElement(
                                              "div",
                                              {
                                                className: "friendSearchClear",
                                                onClick: this.OnClearSearch,
                                              },
                                              I.createElement(H.sED, null),
                                            ),
                                          ),
                                        ),
                                      ),
                                  ),
                              ),
                              I.createElement(
                                "div",
                                {
                                  className: "searchIconButton",
                                  onClick: this.OnTabSearchClick,
                                  title: (0, A.we)("#Tooltip_SearchFriends"),
                                },
                                I.createElement(H.eSy, null),
                              ),
                            ),
                            I.createElement(Qe, {
                              fnToggleViewingIncomingInvites:
                                this.ToggleViewingIncomingInvites,
                              bViewingIncomingInvites:
                                this.state.bViewingIncomingInvites,
                            }),
                            I.createElement(
                              O.uU,
                              { href: o.TS.COMMUNITY_BASE_URL + "friends/add" },
                              I.createElement(
                                "div",
                                {
                                  className:
                                    "friendListButton addFriendButton no-drag",
                                  title: (0, A.we)("#Tooltip_AddFriend"),
                                },
                                I.createElement(H.sdo, null),
                              ),
                            ),
                          ),
                        ),
                      ),
                    ),
                  ),
                I.createElement("div", { className: "disconnectBlocker" }),
              ),
              S
                ? I.createElement(
                    "div",
                    { className: pe.OfflineContainer },
                    I.createElement(
                      "div",
                      { className: pe.OfflineMessage },
                      I.createElement(
                        "div",
                        { className: pe.summaryText },
                        (0, A.we)("#FriendsList_SignedOut"),
                      ),
                      I.createElement(
                        "div",
                        { className: pe.detailText },
                        (0, A.we)("#FriendsList_SignedOut_Detail"),
                      ),
                      I.createElement(
                        "div",
                        null,
                        I.createElement(
                          "button",
                          { className: pe.retryButton, onClick: this.SignIn },
                          (0, A.we)("#Friends_SignIn"),
                        ),
                      ),
                    ),
                  )
                : I.createElement(et, {
                    friends: this.props.friends,
                    chats: this.props.chats,
                    searchString: t,
                    fnOnSearchSelection: this.OnSearchSelection,
                    onStartSearch: this.StartSearchOnKeyPress,
                    browserContext: this.props.browserContext,
                    bViewingIncomingInvites: this.state.bViewingIncomingInvites,
                    onClose: this.ToggleViewingIncomingInvites,
                  }),
              I.createElement(
                "div",
                { className: "friendListFooter" },
                I.createElement(Xe, null),
              ),
            );
          }
        };
        (0, i.Cg)([T.oI], Ze.prototype, "OnSearchInputRef", null),
          (0, i.Cg)([T.oI], Ze.prototype, "StartSearchOnKeyPress", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnSearchInput", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnSearchSubmit", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnSearchSelection", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnSearchKeyDown", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnClearSearch", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnSettingsClick", null),
          (0, i.Cg)([T.oI], Ze.prototype, "ToggleCollapseExpand", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnDoFriendsListUpdate", null),
          (0, i.Cg)([T.oI], Ze.prototype, "BindTabLabel", null),
          (0, i.Cg)([T.oI], Ze.prototype, "CollapseTabLabel", null),
          (0, i.Cg)([T.oI], Ze.prototype, "OnTabSearchClick", null),
          (0, i.Cg)([T.oI], Ze.prototype, "ToggleViewingIncomingInvites", null),
          (0, i.Cg)([T.oI], Ze.prototype, "SignIn", null),
          (Ze = (0, i.Cg)([v.PA], Ze));
        const Qe = (0, v.PA)(function (e) {
          const {
              fnToggleViewingIncomingInvites: t,
              bViewingIncomingInvites: n,
            } = e,
            [i, o] = (0, I.useState)(!1);
          (i || n) &&
            (d.xm.FriendStore.FriendGroupStore.incoming_invites_group
              .member_list,
            d.xm.FriendStore.ClanStore.clan_invites);
          const r = d.xm.FriendStore.GetClanInviteCount(),
            a = d.xm.FriendStore.GetFriendInviteCount();
          let s = d.xm.FriendStore.GetOutgoingFriendRequestCount() > 0,
            l = a + r;
          const c = a > 0 || r > 0 || s;
          let m = "friendRequestButton";
          return (
            n && (m += " friendRequestViewActive"),
            s && 0 == l && (m += " friendRequestOutgoingOnly"),
            (0, I.useEffect)(() => {
              !c && n && t();
            }, [c, n, t]),
            c
              ? I.createElement(
                  "div",
                  {
                    className: m,
                    onClick: t,
                    title: (0, A.Yp)("#Tooltip_FriendRequest", l),
                    onMouseEnter: () => o(!0),
                    onMouseLeave: () => o(!1),
                  },
                  I.createElement(H.Gv$, null),
                  l > 0 &&
                    I.createElement("div", { className: "requestsNumber" }, l),
                )
              : null
          );
        });
        class $e extends I.Component {
          render() {
            let e =
              o.TS.COMMUNITY_BASE_URL + "groups/SteamClientBeta/discussions/3/";
            return d.xm.IsInBeta()
              ? I.createElement(
                  "div",
                  { className: "betaFeedbackLabel" },
                  (0, A.PP)(
                    "#GiveFeedbackToSteam_Desc",
                    I.createElement(
                      O.uU,
                      { href: e, className: "betaFeedbackAnchor" },
                      " ",
                      (0, A.we)("#GiveFeedbackToSteam_URL"),
                      " ",
                    ),
                  ),
                )
              : null;
          }
        }
        let Xe = class extends I.Component {
          constructor(e) {
            super(e);
          }
          OnSettingsZooClick(e) {
            0;
          }
          render() {
            return I.createElement(
              I.Fragment,
              null,
              I.createElement(
                "div",
                { className: "flexRowCentered" },
                !1,
                I.createElement($e, null),
              ),
            );
          }
        };
        (0, i.Cg)([T.oI], Xe.prototype, "OnSettingsZooClick", null),
          (Xe = (0, i.Cg)([v.PA], Xe));
        const Ye = (0, v.PA)((e) => {
            const { browserContext: t } = e,
              n = (function () {
                const [e, t] = (0, I.useState)(!1),
                  n = (0, b.q3)(() => d.xm.FriendStore.self.persona.m_gameid);
                return (
                  (0, I.useEffect)(() => {
                    let e = !0;
                    return (
                      d.xm.RemotePlayStore.BCanCreateInviteForGame(n, !1).then(
                        (n) => {
                          e && t(n);
                        },
                      ),
                      () => {
                        e = !1;
                      }
                    );
                  }, [n]),
                  e
                );
              })(),
              [i, o] = (0, m.PJ)("bRemotePlayLinkHintDismissed"),
              [r, a] = (0, Re.l)();
            if (!n) return null;
            const s = (0, A.we)("#RemotePlay_LinkCopyTitle");
            return I.createElement(
              "div",
              { className: pe.RemotePlayInviteLinkSection },
              I.createElement(
                "div",
                {
                  className: pe.LinkRow,
                  onClick: () => SteamClient.Friends.ShowRemotePlayTogetherUI(),
                },
                I.createElement("div", { className: pe.LinkRowText }, s),
                I.createElement(
                  "div",
                  {
                    title: (0, A.we)("#Tooltip_RemotePlay_CreateInvite"),
                    className: pe.LinkRowIconContainer,
                  },
                  I.createElement(_e.Ov, { className: pe.LinkRowIcon }),
                ),
              ),
              !i &&
                I.createElement(
                  "div",
                  { className: pe.LinkExplanation },
                  I.createElement(
                    "div",
                    { className: pe.ExplanationText },
                    (0, A.PP)(
                      "#RemotePlay_LinkCopyExplanation",
                      I.createElement(
                        "span",
                        { className: pe.Strong },
                        (0, A.we)("#RemotePlay_LinkCopyExplanation_Anyone"),
                      ),
                    ),
                  ),
                  I.createElement(
                    "div",
                    { className: pe.GotItButton, onClick: () => o(!0) },
                    (0, A.we)("#Generic_Got_It"),
                  ),
                  I.createElement(
                    "svg",
                    {
                      className: pe.AccentChevron,
                      width: "30px",
                      height: "15px",
                      viewBox: "0 0 64 32",
                    },
                    I.createElement(
                      "defs",
                      null,
                      I.createElement(
                        "linearGradient",
                        { id: r, x1: "0%", y1: "0%", x2: "0%", y2: "100%" },
                        I.createElement("stop", {
                          offset: "0%",
                          style: {
                            stopColor: "rgb(24, 92, 108)",
                            stopOpacity: 1,
                          },
                        }),
                        I.createElement("stop", {
                          offset: "100%",
                          style: {
                            stopColor: "rgb(24, 92, 108)",
                            stopOpacity: 1,
                          },
                        }),
                      ),
                    ),
                    I.createElement("path", {
                      d: "M 0 0 L 64 0 L 32 32 z",
                      stroke: "colourname",
                      fill: a,
                    }),
                  ),
                ),
            );
          }),
          Je = (0, v.PA)(function (e) {
            const { currentUser: t, popup: n } = e,
              i = (0, Me.Qn)(),
              o = (0, ke.Uy)(t.persona.m_unGamePlayedAppID);
            (0, I.useEffect)(() => {
              t.LoadEquippedProfileItems();
            });
            const r = I.useCallback((e) => (0, p.HS)((0, m.CO)(e), e), []),
              a = I.useCallback(
                (e) => {
                  let n = t.GetCommunityProfileURL();
                  (0, O.EP)(e, n), e.stopPropagation();
                },
                [t],
              );
            let s = "currentUserContainer " + (0, ae.rO)(t.persona);
            2 == t.persona.m_ePersonaState && (s += " userDoNotDisturb");
            let l = null;
            d.xm.FriendStore.BIsInvisibleMode() &&
              (l = () => (0, A.we)("#PersonaStateInvisible"));
            let c = null;
            t.persona.HasCurrentGameRichPresence()
              ? (c = () => t.persona.GetCurrentGameRichPresence())
              : t.persona.m_broadcastAccountId &&
                (c = () => t.GetBroadcastDescription());
            let u =
                t.persona.is_ingame &&
                (1 == d.xm.UserStore.PrivacySettings.privacy_state_ownedgames ||
                  o),
              h = null,
              _ = null,
              g = !i && d.xm.SettingsStore.FriendsSettings.bAnimatedAvatars;
            if (t.BLoadedEquippedItems()) {
              let e = t.GetEquippedProfileItems();
              e && ((h = e.animated_avatar), (_ = e.avatar_frame));
            }
            let C = !1;
            if (n) {
              let e = (0, m._k)(n);
              C = !(0, R.u)(e, R.m);
            }
            const f = C ? "Medium" : "Infinite";
            let S = I.createElement(
              "div",
              { className: "currentUserAvatar" },
              I.createElement(E.xz, {
                loopDuration: g ? f : "None",
                bLimitProfileFrameAnimationTime: !g || C,
                size: "Medium",
                persona: t.persona,
                animatedAvatar: h,
                avatarFrame: _,
                onClick: a,
              }),
            );
            return I.createElement(
              "div",
              { className: s },
              I.createElement(
                "svg",
                {
                  className: "statusHeaderGlow",
                  width: "100%",
                  height: "132",
                  xmlns: "http://www.w3.org/2000/svg",
                },
                I.createElement(
                  "defs",
                  null,
                  I.createElement(
                    "radialGradient",
                    {
                      id: "exampleGradient",
                      cx: "50%",
                      cy: "50%",
                      r: "50%",
                      fx: "35%",
                      fy: "30%",
                    },
                    I.createElement("stop", {
                      offset: "10%",
                      stopColor: "gold",
                    }),
                    I.createElement("stop", {
                      offset: "95%",
                      stopColor: "green",
                    }),
                  ),
                ),
                I.createElement("ellipse", {
                  cx: "5%",
                  cy: "28%",
                  rx: "65%",
                  ry: "60%",
                  fill: "url(#exampleGradient)",
                }),
              ),
              I.createElement(
                "div",
                { className: "AvatarAndUser", onContextMenu: r },
                I.createElement(
                  mt,
                  {
                    friend: t,
                    context: { chatContext: "friendslist" },
                    onContextMenu: r,
                  },
                  S,
                ),
                I.createElement(de.D, {
                  className: "labelHolder",
                  persona: t.persona,
                  bIsSelf: !0,
                  eFriendRelationship: t.efriendrelationship,
                  strNickname: t.nickname,
                  bParenthesizeNicknames:
                    d.xm.SettingsStore.CommunityPreferences
                      .bParenthesizeNicknames,
                  bCompactView:
                    d.xm.SettingsStore.FriendsSettings.bCompactFriendsList,
                  bHideSnooze: !0,
                  renderStatus: l,
                  renderRichPresence: c,
                  onContextMenu: r,
                  bDNDSet: d.xm.FriendStore.GetUserDoNotDisturb(),
                  bHasGamePrivacy: u,
                }),
              ),
            );
          });
        let et = class extends I.Component {
          static contextType = o.QO;
          m_elFriendsListContent;
          m_elFriendsListScroll;
          constructor(e) {
            super(e), (this.state = { bScrolledFromTop: !1 });
          }
          get frame() {
            return this.m_elFriendsListContent;
          }
          OnContextMenu(e) {
            let t =
              this.props.searchString && this.props.searchString.length > 0;
            this.props.bViewingIncomingInvites ||
              t ||
              (0, p.iS)((0, m.CO)(e), null, e);
          }
          BindFriendsListContent(e) {
            this.m_elFriendsListContent = e;
          }
          OnFriendsListKeyDown(e) {
            e.ctrlKey ||
              e.altKey ||
              e.metaKey ||
              e.key.length > 1 ||
              (this.props.onStartSearch && this.props.onStartSearch(e));
          }
          OnFriendsListScrollRef(e) {
            this.m_elFriendsListScroll = e;
          }
          ScrollToTop() {
            this.m_elFriendsListScroll &&
              (this.m_elFriendsListScroll.scrollTop = 0);
          }
          OnScrollFriendsList(e) {
            let t = e.currentTarget.scrollTop > 10;
            t != this.state.bScrolledFromTop &&
              this.setState({ bScrolledFromTop: t });
          }
          OnAcceptClanInvite(e, t) {
            let n = e.currentTarget.ownerDocument.defaultView;
            d.xm.FriendStore.ClanStore.RespondToClanInvite(t, !0).then((e) => {
              e ||
                (0, h.Ic)(
                  n,
                  (0, A.we)("#Friend_AcceptClanInvite"),
                  (0, A.we)("#Friend_AcceptClanInvite_Error"),
                );
            });
          }
          OnDeclineClanInvite(e, t) {
            let n = e.currentTarget.ownerDocument.defaultView;
            d.xm.FriendStore.ClanStore.RespondToClanInvite(t, !1).then((e) => {
              e ||
                (0, h.Ic)(
                  n,
                  (0, A.we)("#Friend_DeclineClanInvite"),
                  (0, A.we)("#Friend_DeclineClanInvite_Error"),
                );
            });
          }
          render() {
            let e,
              t = this.props.searchString && this.props.searchString.length > 0,
              { bViewingIncomingInvites: n, bHideGroupChats: i } = this.props;
            const r =
              this.props.browserContext.m_unAppID &&
              0 != this.props.browserContext.m_unAppID;
            let a = {
              searchString: this.props.searchString,
              fnOnSearchSelection: this.props.fnOnSearchSelection,
            };
            if (this.props.friends.self.is_ready)
              if (n) {
                let n = d.xm.FriendStore.ClanStore.clan_invites.length,
                  i =
                    (le.b.InitFromAccountID(d.xm.FriendStore.self.accountid),
                    []);
                if (n)
                  for (let e of d.xm.FriendStore.ClanStore.clan_invites) {
                    const t = e.steamid;
                    let n;
                    (n = e.BIsOGG()
                      ? `${o.TS.COMMUNITY_BASE_URL}app/${e.GetOGGAppID()}`
                      : `${o.TS.COMMUNITY_BASE_URL}gid/${t.ConvertTo64BitString()}`),
                      i.push(
                        I.createElement(
                          "div",
                          {
                            className: "clanInviteContainer",
                            key: "clan_invite_" + t.GetAccountID(),
                          },
                          I.createElement(
                            O.uU,
                            { href: n },
                            I.createElement(
                              "div",
                              { className: "clanAvatar" },
                              I.createElement("img", {
                                className: "clanAvatarIcon",
                                src: e.avatar_url_medium,
                              }),
                            ),
                            I.createElement(
                              "div",
                              { className: "clanName" },
                              e.name,
                              I.createElement(
                                "div",
                                { className: "clanDetails displayRow" },
                                I.createElement(
                                  "div",
                                  { className: "displayRow statMembersTotal" },
                                  I.createElement("div", {
                                    className: "statCircle",
                                  }),
                                  e.member_count,
                                  " Members",
                                ),
                                e.users_online > 0 &&
                                  I.createElement(
                                    "div",
                                    {
                                      className: "displayRow statMembersOnline",
                                      title: (0, A.Yp)(
                                        "#Chat_Members_Online_Tooltip",
                                        e.users_online,
                                      ),
                                    },
                                    I.createElement("div", {
                                      className: "statCircle",
                                    }),
                                    e.users_online,
                                  ),
                                e.users_ingame > 0 &&
                                  I.createElement(
                                    "div",
                                    {
                                      className: "displayRow statMembersInGame",
                                      title: (0, A.Yp)(
                                        "#Chat_Members_InGame_Tooltip",
                                        e.users_ingame,
                                      ),
                                    },
                                    I.createElement("div", {
                                      className: "statCircle",
                                    }),
                                    e.users_ingame,
                                  ),
                              ),
                            ),
                          ),
                          I.createElement(
                            "div",
                            { className: "clanActionButtons" },
                            I.createElement(
                              "div",
                              {
                                className: "displayColumn",
                                title: (0, A.we)(
                                  "#FriendGroup_Tip_Accept_Invite",
                                ),
                              },
                              I.createElement(
                                Z.QW,
                                {
                                  onClick: (e) => {
                                    this.OnAcceptClanInvite(e, t);
                                  },
                                },
                                (0, A.we)("#Button_Accept"),
                              ),
                            ),
                            I.createElement(
                              "div",
                              {
                                className: "displayColumn",
                                title: (0, A.we)(
                                  "#FriendGroup_Tip_Decline_Invite",
                                ),
                              },
                              I.createElement(
                                Z.QW,
                                {
                                  onClick: (e) => {
                                    this.OnDeclineClanInvite(e, t);
                                  },
                                },
                                (0, A.we)("#Button_Decline"),
                              ),
                            ),
                          ),
                        ),
                      );
                  }
                e = I.createElement(
                  I.Fragment,
                  null,
                  n > 0 &&
                    !t &&
                    I.createElement(
                      I.Fragment,
                      null,
                      I.createElement(
                        "div",
                        { className: "clanInvitesGroupContainer" },
                        I.createElement(
                          "div",
                          { className: "clanInviteTitle" },
                          (0, A.we)("#Friend_PendingClanInvites"),
                        ),
                        i,
                      ),
                    ),
                  I.createElement(rt, {
                    group:
                      this.props.friends.FriendGroupStore
                        .incoming_invites_group,
                    collapsed: !1,
                    ...a,
                    onClose: this.props.onClose,
                    bInOverlay: r,
                  }),
                  I.createElement(rt, {
                    group:
                      this.props.friends.FriendGroupStore
                        .outgoing_invites_group,
                    collapsed: !1,
                    ...a,
                    onClose: this.props.onClose,
                    bInOverlay: r,
                  }),
                );
              } else if (t)
                e = I.createElement(rt, {
                  group: this.props.friends.FriendGroupStore.all_friends,
                  collapsed: !1,
                  bInOverlay: r,
                  ...a,
                });
              else {
                let t = this.props.friends.FriendGroupStore.user_groups.map(
                    (e) =>
                      I.createElement(rt, {
                        group: e,
                        key: e.id,
                        groupDisplayPrefs:
                          this.props.friends.FriendGroupStore.groupDisplayPrefs,
                        bInOverlay: r,
                        ...a,
                      }),
                  ),
                  n = this.props.friends.FriendGroupStore.default_groups.map(
                    (e) =>
                      I.createElement(rt, {
                        group: e,
                        key: e.id,
                        groupDisplayPrefs:
                          this.props.friends.FriendGroupStore.groupDisplayPrefs,
                        bInOverlay: r,
                        ...a,
                      }),
                  ),
                  i = !1;
                this.props.chats.FriendChatStore.GetFriendsWithUnreadMessages(
                  this.props.browserContext,
                ).length && (i = !0),
                  (e = I.createElement(
                    I.Fragment,
                    null,
                    i &&
                      !this.context?.IN_GAMEPADUI &&
                      I.createElement(
                        "div",
                        { className: "recentChatsGroup unreadChatsGroup" },
                        I.createElement(ft, {
                          friendChatStore: this.props.chats.FriendChatStore,
                          browserContext: this.props.browserContext,
                        }),
                      ),
                    I.createElement(ot, { bInOverlay: r }),
                    t,
                    n,
                  ));
              }
            else e = void 0;
            let s = d.xm.SettingsStore.FriendsSettings.bCompactFriendsList;
            return I.createElement(
              w.Z,
              {
                className:
                  "FriendsListContent" + (s ? " CompactFriendsList" : ""),
                ref: this.BindFriendsListContent,
                retainFocus: !0,
                "flow-children": "column",
              },
              I.createElement(he.H, null),
              !this.context?.IN_GAMEPADUI &&
                I.createElement(Ct, {
                  browserContext: this.props.browserContext,
                  bScrolledFromTop: this.state.bScrolledFromTop && !t,
                  onClick: this.ScrollToTop,
                }),
              I.createElement(
                "div",
                {
                  className: "friendlistListContainer",
                  onContextMenu: this.OnContextMenu,
                  tabIndex: 0,
                  onKeyDown: this.OnFriendsListKeyDown,
                  ref: this.OnFriendsListScrollRef,
                  onScroll: this.OnScrollFriendsList,
                },
                I.createElement(
                  Z.$n,
                  {
                    focusable: n,
                    onClick: this.props.onClose,
                    className: "BackToFriendsListButton",
                  },
                  (0, A.we)("#FriendGroup_CloseGamepadUI"),
                ),
                I.createElement(
                  "div",
                  { className: "listContentContainer" },
                  e,
                  I.createElement("div", { className: "disconnectBlocker" }),
                ),
              ),
              I.createElement(he.P, null),
              !i &&
                I.createElement(nt, {
                  friends: this.props.friends,
                  chats: this.props.chats,
                  parent: this,
                }),
            );
          }
        };
        (0, i.Cg)([T.oI], et.prototype, "OnContextMenu", null),
          (0, i.Cg)([T.oI], et.prototype, "BindFriendsListContent", null),
          (0, i.Cg)([T.oI], et.prototype, "OnFriendsListKeyDown", null),
          (0, i.Cg)([T.oI], et.prototype, "OnFriendsListScrollRef", null),
          (0, i.Cg)([T.oI], et.prototype, "ScrollToTop", null),
          (0, i.Cg)([T.oI], et.prototype, "OnScrollFriendsList", null),
          (et = (0, i.Cg)([v.PA], et));
        class tt extends I.Component {
          constructor(e) {
            super(e);
          }
          render() {
            return I.createElement(
              "div",
              { className: "GroupChats" },
              I.createElement(C.IV, {
                friends: this.props.friends,
                chats: this.props.chats,
              }),
            );
          }
        }
        let nt = class extends I.Component {
          static {
            Te = this;
          }
          static s_pxGroupChatsAutoCollapseThreshold = 45;
          m_elChatRoomTitleContainer;
          m_iTimeoutSaveHeightPref;
          m_iGrabberBarInitialGrabOffset;
          m_elChatRoomListContainer;
          m_elChatSection;
          m_window;
          m_observerChatSection;
          m_iTimeoutUpdateChatSectionSize;
          m_animationChatSectionShrink;
          ref = I.createRef();
          m_bMouseOver = !1;
          constructor(e) {
            super(e),
              (this.state = {
                nChatRoomListContainerHeight:
                  m.ZM.UIDisplayPrefs.nChatRoomListHeightPx,
                nChatRoomListContainerMaxHeight:
                  m.ZM.UIDisplayPrefs.nChatRoomListHeightPx,
                bChatRoomListCollapsed:
                  m.ZM.UIDisplayPrefs.bChatRoomListCollapsed,
                nChatRoomListPreCollapseHeight:
                  m.ZM.UIDisplayPrefs.nChatRoomListHeightPx,
                bChatRoomListResizing: !1,
              });
          }
          UpdateChatSectionSize() {
            if (
              ((0, me.w)(
                this.m_elChatSection,
                "m_elChatRoomListContainer not set",
              ),
              this.m_bMouseOver)
            )
              return (
                this.m_iTimeoutUpdateChatSectionSize &&
                  this.m_window.clearTimeout(
                    this.m_iTimeoutUpdateChatSectionSize,
                  ),
                void (this.m_iTimeoutUpdateChatSectionSize =
                  this.m_window.setTimeout(() => {
                    (this.m_iTimeoutUpdateChatSectionSize = void 0),
                      this.UpdateChatSectionSize();
                  }, 500))
              );
            let e = this.m_elChatSection.maximumHeight,
              t = this.m_elChatSection.minimumHeight;
            if (
              ((this.m_elChatRoomListContainer.style.minHeight = t + "px"),
              this.state.nChatRoomListContainerMaxHeight > e)
            ) {
              this.m_animationChatSectionShrink &&
                this.m_animationChatSectionShrink.Cancel();
              let n = this.state.nChatRoomListContainerMaxHeight,
                i = e;
              this.setState({ nChatRoomListContainerMaxHeight: n }, () => {
                (this.m_animationChatSectionShrink = new z.w(
                  this,
                  {
                    nChatRoomListContainerHeight: (0, j.OQ)(
                      this.state.nChatRoomListContainerHeight,
                      t,
                      e,
                    ),
                    nChatRoomListContainerMaxHeight: i,
                  },
                  { msDuration: 300, timing: "sine" },
                )),
                  this.m_animationChatSectionShrink.Start();
              });
            } else this.setState({ nChatRoomListContainerMaxHeight: e });
          }
          OnChatSectionMutation(e, t) {
            this.m_iTimeoutUpdateChatSectionSize &&
              this.m_window.clearTimeout(this.m_iTimeoutUpdateChatSectionSize),
              (this.m_iTimeoutUpdateChatSectionSize = this.m_window.setTimeout(
                () => {
                  (this.m_iTimeoutUpdateChatSectionSize = void 0),
                    this.UpdateChatSectionSize();
                },
                1e3,
              ));
          }
          BindChatRoomTitleContainer(e) {
            this.m_elChatRoomTitleContainer = e;
          }
          BindChatRoomListContainer(e) {
            e &&
              ((this.m_elChatRoomListContainer = e),
              this.UpdateChatSectionSize());
          }
          BindChatSection(e) {
            this.m_observerChatSection &&
              (this.m_observerChatSection.disconnect(),
              (this.m_observerChatSection = null)),
              e &&
                ((this.m_elChatSection = e),
                (this.m_window = e.div.ownerDocument.defaultView),
                (this.m_observerChatSection = new MutationObserver(
                  this.OnChatSectionMutation,
                )),
                this.m_observerChatSection.observe(e.div, {
                  childList: !0,
                  subtree: !0,
                }));
          }
          OnGrabberMouseDown(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            (this.m_iGrabberBarInitialGrabOffset =
              e.clientY -
              this.m_elChatRoomTitleContainer.getBoundingClientRect().top),
              this.setState({
                nChatRoomListPreCollapseHeight:
                  m.ZM.UIDisplayPrefs.nChatRoomListHeightPx,
              }),
              t.addEventListener("mousemove", this.HandleMouseMove),
              t.addEventListener(
                "mouseup",
                this.UnregisterChatRoomListDragEvents,
              );
          }
          OnGrabberTouchStart(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            (this.m_iGrabberBarInitialGrabOffset =
              e.touches[0].clientY -
              this.m_elChatRoomTitleContainer.getBoundingClientRect().top),
              t.addEventListener("touchmove", this.HandleTouchMove),
              t.addEventListener(
                "touchend",
                this.UnregisterChatRoomListDragEvents,
              );
          }
          HandleTouchMove(e) {
            e.touches.length >= 1 &&
              this.InternalAdjustChatRoomListContainerOnDrag(
                e.touches[0].clientY,
              );
          }
          HandleMouseMove(e) {
            this.InternalAdjustChatRoomListContainerOnDrag(e.clientY);
          }
          OnMouseEnter(e) {
            this.m_bMouseOver = !0;
          }
          OnMouseLeave(e) {
            this.m_bMouseOver = !1;
          }
          InternalAdjustChatRoomListContainerOnDrag(e) {
            if (!this.props.parent || !this.props.parent.frame) return;
            let t = this.props.parent.frame.getBoundingClientRect(),
              n = t.top,
              i = this.m_iGrabberBarInitialGrabOffset,
              o =
                t.height -
                (this.m_elChatRoomTitleContainer.getBoundingClientRect()
                  .height -
                  i),
              r = e - n;
            r < 0 ? (r = 0) : r > o && (r = o);
            let a = o - r;
            (a = (0, j.OQ)(
              a,
              this.m_elChatSection.minimumHeight,
              this.m_elChatSection.maximumHeight,
            )),
              this.setState({ nChatRoomListContainerHeight: a }),
              this.setState({
                bChatRoomListCollapsed: !(
                  this.state.nChatRoomListContainerHeight > 0
                ),
              }),
              m.ZM.SetUIDisplayPref(
                "bChatRoomListCollapsed",
                !(this.state.nChatRoomListContainerHeight > 0),
              ),
              this.setState({ bChatRoomListResizing: !0 });
          }
          ToggleChatsList() {
            this.state.bChatRoomListCollapsed &&
              this.setState({
                nChatRoomListContainerHeight:
                  this.state.nChatRoomListPreCollapseHeight,
              }),
              this.setState({
                bChatRoomListCollapsed: !this.state.bChatRoomListCollapsed,
              }),
              m.ZM.SetUIDisplayPref(
                "bChatRoomListCollapsed",
                !this.state.bChatRoomListCollapsed,
              );
          }
          UnregisterChatRoomListDragEvents(e) {
            e.view.removeEventListener("mousemove", this.HandleMouseMove),
              e.view.removeEventListener("touchmove", this.HandleTouchMove),
              e.view.removeEventListener(
                "mouseup",
                this.UnregisterChatRoomListDragEvents,
              ),
              e.view.removeEventListener(
                "touchend",
                this.UnregisterChatRoomListDragEvents,
              ),
              this.state.nChatRoomListContainerHeight <
              Te.s_pxGroupChatsAutoCollapseThreshold
                ? (m.ZM.SetUIDisplayPref(
                    "nChatRoomListHeightPx",
                    this.state.nChatRoomListPreCollapseHeight,
                  ),
                  this.setState({ bChatRoomListCollapsed: !0 }))
                : (this.setState({
                    nChatRoomListPreCollapseHeight:
                      this.state.nChatRoomListContainerHeight,
                  }),
                  m.ZM.SetUIDisplayPref(
                    "nChatRoomListHeightPx",
                    this.state.nChatRoomListContainerHeight,
                  )),
              (this.m_iGrabberBarInitialGrabOffset = null),
              this.setState({ bChatRoomListResizing: !1 });
          }
          OnCreateChatRoom(e) {
            (0, q.UA)((0, m.CO)(e), e.currentTarget.ownerDocument.defaultView);
          }
          render() {
            let e = {
                height: this.state.bChatRoomListCollapsed
                  ? 0
                  : this.state.nChatRoomListContainerHeight + "px",
                maxHeight: this.state.bChatRoomListCollapsed
                  ? 0
                  : this.state.nChatRoomListContainerMaxHeight + "px",
              },
              t = this.props.chats.currentChatRoomGroups,
              n = !1,
              i = "FriendsListChatSection ChatRoomListContainerParent";
            if (this.props.chats.chat_group_list_ready)
              for (let e of t) e.hasUnreadChatMessage && (n = !0);
            return (
              this.state.bChatRoomListCollapsed && (i += " Collapsed"),
              this.state.bChatRoomListResizing && (i += " ChatListResizing"),
              n && (i += " HasUnreadChats"),
              I.createElement(
                "div",
                {
                  className: i,
                  onMouseEnter: this.OnMouseEnter,
                  onMouseLeave: this.OnMouseLeave,
                  ref: this.ref,
                },
                I.createElement(
                  "div",
                  {
                    className: "friendsListSectionTitle chatSectionTitle",
                    ref: this.BindChatRoomTitleContainer,
                  },
                  this.state.bChatRoomListCollapsed &&
                    n &&
                    I.createElement(C.RB, null),
                  I.createElement(
                    "div",
                    {
                      className: "ToggleGroupChatList",
                      onClick: this.ToggleChatsList,
                      title: this.state.bChatRoomListCollapsed
                        ? (0, A.we)("#Tooltip_ChatsExpand")
                        : (0, A.we)("#Tooltip_ChatsCollapse"),
                    },
                    I.createElement(H.F2T, { angle: -90 }),
                  ),
                  I.createElement(
                    "div",
                    {
                      className: "voiceRoomDragBar",
                      onMouseDown: this.OnGrabberMouseDown,
                      onTouchStart: this.OnGrabberTouchStart,
                    },
                    I.createElement(
                      "div",
                      { className: "groupChatSectionTitle" },
                      (0, A.we)("#tab_chats"),
                    ),
                  ),
                  I.createElement(
                    "button",
                    {
                      className: "createChatRoomButton",
                      onClick: this.OnCreateChatRoom,
                      title: (0, A.we)("#Tooltip_CreateGroupChat"),
                    },
                    I.createElement(H.u9R, null),
                  ),
                  I.createElement("div", { className: "disconnectBlocker" }),
                ),
                I.createElement(he.H, null),
                I.createElement(
                  "div",
                  {
                    className: "chatRoomListContainer",
                    style: e,
                    ref: this.BindChatRoomListContainer,
                  },
                  I.createElement(C.IV, {
                    friends: this.props.friends,
                    chats: this.props.chats,
                    ref: this.BindChatSection,
                  }),
                ),
                I.createElement(he.P, null),
              )
            );
          }
        };
        (0, i.Cg)([T.oI], nt.prototype, "UpdateChatSectionSize", null),
          (0, i.Cg)([T.oI], nt.prototype, "OnChatSectionMutation", null),
          (0, i.Cg)([T.oI], nt.prototype, "BindChatRoomTitleContainer", null),
          (0, i.Cg)([T.oI], nt.prototype, "BindChatRoomListContainer", null),
          (0, i.Cg)([T.oI], nt.prototype, "BindChatSection", null),
          (0, i.Cg)([T.oI], nt.prototype, "OnGrabberMouseDown", null),
          (0, i.Cg)([T.oI], nt.prototype, "OnGrabberTouchStart", null),
          (0, i.Cg)([T.oI], nt.prototype, "HandleTouchMove", null),
          (0, i.Cg)([T.oI], nt.prototype, "HandleMouseMove", null),
          (0, i.Cg)([T.oI], nt.prototype, "OnMouseEnter", null),
          (0, i.Cg)([T.oI], nt.prototype, "OnMouseLeave", null),
          (0, i.Cg)([T.oI], nt.prototype, "ToggleChatsList", null),
          (0, i.Cg)(
            [T.oI],
            nt.prototype,
            "UnregisterChatRoomListDragEvents",
            null,
          ),
          (0, i.Cg)([T.oI], nt.prototype, "OnCreateChatRoom", null),
          (nt = Te = (0, i.Cg)([v.PA], nt));
        class it extends I.Component {
          GetDragDropProps(e = !0) {
            let t = { rgAcceptedTypes: [] };
            return (
              e &&
                ((t.fnDragEnter = this.OnDragEnter),
                (t.fnDragLeave = this.OnDragLeave),
                (t.fnDrop = this.OnDrop),
                (t.rgAcceptedTypes = ["friend"])),
              (t.onDragStart = this.OnDragStart),
              (t.onDragEnd = this.OnDragEnd),
              t
            );
          }
          OnDragStart(e) {
            let t = m.ZM.DragDropManager.GetDragData();
            if (t && "friend" == t.type) {
              let e = t;
              (e.group = this.GetGroup()),
                this.setState({ friendDraggedOut: e.friend });
            }
          }
          OnDragEnd(e) {
            this.state.friendDraggedOut &&
              this.setState({ friendDraggedOut: null });
          }
          OnDragEnter(e, t) {
            (0, me.w)(
              e && "friend" == e.type,
              "Invalid data type passed to FriendGroupDragDrop.OnDragEnter",
            );
            let n = e,
              i = n.friend,
              o = n.group,
              r = this.GetGroup();
            return (
              (!r ||
                o == r ||
                !this.GetGroup().HasMember(i.accountid) ||
                n.is_favorite ||
                (this.GetGroup().accepts_group_removals && o.modifiable)) &&
                i.is_friend &&
                this.state.friendDrag != i &&
                this.setState({ friendDrag: i }),
              !0
            );
          }
          ResetDragState() {
            this.setState({ friendDrag: null });
          }
          OnDragLeave() {
            this.state.friendDrag && this.ResetDragState();
          }
          OnDrop(e, t) {
            (0, me.w)(
              e && "friend" == e.type,
              "Invalid data type passed to FriendGroupDragDrop.OnDrop",
            );
            let n = e;
            if (n.group == this.GetGroup())
              this.setState({ friendDraggedOut: null });
            else {
              let e = this.state.friendDrag,
                t = () => {
                  this.state.friendDrag &&
                    this.state.friendDrag == e &&
                    this.ResetDragState();
                };
              this.PerformDropAction(n).then(t).catch(t);
            }
          }
        }
        (0, i.Cg)([T.oI], it.prototype, "OnDragStart", null),
          (0, i.Cg)([T.oI], it.prototype, "OnDragEnd", null),
          (0, i.Cg)([T.oI], it.prototype, "OnDragEnter", null),
          (0, i.Cg)([T.oI], it.prototype, "OnDragLeave", null),
          (0, i.Cg)([T.oI], it.prototype, "OnDrop", null);
        const ot = (0, v.PA)((e) => {
          if (
            !d.xm.SettingsStore.FriendsSettings.bCategorizeInGameFriendsByGame
          )
            return null;
          let t = d.xm.FriendStore.FriendGroupStore.game_groups,
            n = t.map((t) =>
              I.createElement(lt, {
                key: t.id,
                group: t,
                bSingletonGroup: !1,
                bOtherGroups: !0,
                groupDisplayPrefs:
                  d.xm.FriendStore.FriendGroupStore.groupDisplayPrefs,
                bInOverlay: e.bInOverlay,
              }),
            ),
            i = d.xm.FriendStore.FriendGroupStore.singleton_game_group;
          return (
            i &&
              n.push(
                I.createElement(lt, {
                  key: "singleton",
                  group: i,
                  bSingletonGroup: !0,
                  bOtherGroups: t.length > 0,
                  groupDisplayPrefs:
                    d.xm.FriendStore.FriendGroupStore.groupDisplayPrefs,
                  bInOverlay: e.bInOverlay,
                }),
              ),
            I.createElement(I.Fragment, null, n)
          );
        });
        let rt = class extends it {
          static contextType = o.QO;
          m_actions = S.sH.map();
          containerRef = I.createRef();
          constructor(e) {
            super(e),
              (this.state = {
                bLocalCollapsed: this.props.collapsed,
                bSortOfflineByRecent: !1,
              });
          }
          GetGroup() {
            return this.props.group;
          }
          PerformDropAction(e) {
            let t = e.friend,
              n = e.group,
              i = this.props.group;
            return (
              e.is_favorite || m.ZM.DragDropManager.SetDropConsumed(),
              d.xm.FriendStore.FriendGroupStore.TransferFriendFromToGroup(
                t,
                n,
                i,
              )
            );
          }
          ToggleCollapsed() {
            this.props.groupDisplayPrefs
              ? this.props.groupDisplayPrefs.ToggleUserGroupCollapsed(
                  this.props.group.unique_id,
                )
              : this.setState({ bLocalCollapsed: !this.state.bLocalCollapsed });
          }
          IsCollapsed() {
            return this.props.groupDisplayPrefs
              ? this.props.groupDisplayPrefs.GetUserGroupCollapsed(
                  this.props.group.unique_id,
                )
              : this.state.bLocalCollapsed;
          }
          IsInviteGroup() {
            return this.props.group.m_eDisplayType == c.oy.eIncomingInvites;
          }
          IsOutGoingInviteGroup() {
            return this.props.group.m_eDisplayType == c.oy.eOutgoingInvites;
          }
          OnContextMenu(e) {
            (this.props.group.modifiable ||
              this.props.group.accepts_group_removals) &&
              (0, p.iS)((0, m.CO)(e), this.props.group, e);
          }
          OnFriendSelected(e) {
            this.props.friendSelectAction
              ? this.props.friendSelectAction(e)
              : (e.OpenChatDialog((0, m.wj)(this.containerRef.current)),
                this.props.fnOnSearchSelection &&
                  this.props.fnOnSearchSelection());
          }
          OnAcceptInvite(e) {
            (0, me.w)(
              this.IsInviteGroup(),
              "accept invite on non-invite group",
            );
            let t = this.m_actions.get(e.accountid);
            t && "accept" == t.action
              ? this.m_actions.delete(e.accountid)
              : this.m_actions.set(e.accountid, {
                  friend: e,
                  action: "accept",
                });
          }
          OnDeclineInvite(e) {
            (0, me.w)(
              this.IsInviteGroup(),
              "decline invite on non-invite group",
            );
            let t = this.m_actions.get(e.accountid);
            !t || ("decline" != t.action && "block" != t.action)
              ? this.m_actions.set(e.accountid, {
                  friend: e,
                  action: "decline",
                })
              : this.m_actions.delete(e.accountid);
          }
          OnBlockInvite(e, t) {
            (0, me.w)(this.IsInviteGroup(), "block invite on non-invite group"),
              e
                ? this.m_actions.set(t.accountid, {
                    friend: t,
                    action: "block",
                  })
                : this.m_actions.set(t.accountid, {
                    friend: t,
                    action: "decline",
                  });
          }
          async AcceptInvite(e, t) {
            let { eResult: n, eFriendRelationship: i } =
              await d.xm.FriendStore.SendFriendInvite(t);
            3 != i && (0, p.Jw)(e, n, i, t.display_name);
          }
          DeclineInvite(e, t) {
            d.xm.FriendStore.RemoveFriend(t).then((n) => {
              1 != n &&
                (0, h.Ic)(
                  e,
                  (0, A.we)("#Friend_Menu_IgnoreIncomingInvite"),
                  (0, A.we)(
                    "#Friend_IgnoreIncomingInvite_Error",
                    t.display_name,
                  ),
                );
            });
          }
          BlockInvite(e, t) {
            d.xm.FriendStore.BlockPlayer(t).then((n) => {
              5 != n &&
                (0, h.Ic)(
                  e,
                  (0, A.we)("#Friend_Menu_BlockIncomingInvite"),
                  (0, A.we)(
                    "#Friend_BlockIncomingInvite_Error",
                    t.display_name,
                  ),
                );
            });
          }
          OnConfirmChanges(e) {
            (0, me.w)(
              this.IsInviteGroup(),
              "confirm changes on non-invite group",
            );
            let t = e.currentTarget.ownerDocument.defaultView;
            this.m_actions.forEach((e) => {
              "accept" == e.action
                ? this.AcceptInvite(t, e.friend)
                : "decline" == e.action
                  ? this.DeclineInvite(t, e.friend)
                  : "block" == e.action
                    ? this.BlockInvite(t, e.friend)
                    : console.log(`unknown action ${e.action}`);
            });
          }
          OnIgnoreAllInvites(e) {
            (0, me.w)(
              this.IsInviteGroup(),
              "ignore all invites on non-invite group",
            );
            let t = e.currentTarget.ownerDocument.defaultView;
            (0, h.Ci)(
              t,
              (0, A.we)("#FriendGroup_ConfirmAllIgnore_Title"),
              (0, A.we)("#FriendGroup_ConfirmAllIgnore_Body"),
              (0, A.we)("#FriendGroup_ConfirmAllIgnore_OK"),
            )
              .then(() => {
                let e = this.props.group.member_list;
                for (let n of e) this.DeclineInvite(t, n);
              })
              .catch(() => {});
          }
          OnCloseInvites() {
            (0, me.w)(
              this.IsInviteGroup(),
              "close invites on non-invite group",
            ),
              this.props.onClose();
          }
          ToggleOfflineSortMethod() {
            this.setState({
              bSortOfflineByRecent: !this.state.bSortOfflineByRecent,
            });
          }
          m_FriendRenderContext;
          GetFriendRenderContext() {
            return (
              (this.m_FriendRenderContext &&
                this.m_FriendRenderContext.friendGroup == this.props.group) ||
                (this.m_FriendRenderContext = {
                  friendGroup: this.props.group,
                  chatContext: "friendslist",
                }),
              this.m_FriendRenderContext
            );
          }
          render() {
            let e =
                this.props.searchString && this.props.searchString.length > 0,
              t = e,
              n = this.IsCollapsed() && !e && !this.state.friendDrag,
              i = [],
              r = this.IsInviteGroup(),
              a = this.props.group.m_eDisplayType == c.oy.eOfflineOnly,
              l = !1;
            if (!n) {
              let t,
                n = !1;
              if (
                ((t =
                  this.props.searchString && this.props.searchString.length
                    ? this.props.group.GetMembersMatchingSearch(
                        this.props.searchString,
                      )
                    : this.props.group.member_list),
                this.state.friendDrag &&
                  (this.props.group.HasMember(this.state.friendDrag.accountid)
                    ? (n = !0)
                    : (t = t
                        .concat(this.state.friendDrag)
                        .sort(s.$c.DefaultFriendSortComparator))),
                a &&
                  this.state.bSortOfflineByRecent &&
                  ((t = this.props.group.member_list_unsorted
                    .slice()
                    .sort(s.$c.FriendSortByLastSeenComparator)),
                  (l = !0)),
                r)
              ) {
                let e =
                  d.xm.FriendStore.FriendGroupStore.incoming_invites_group;
                t = t.slice().sort((t, n) => {
                  let i = e.map_steamid_to_mutual_friends.get(t.steamid64),
                    o = e.map_steamid_to_mutual_friends.get(n.steamid64),
                    r = (i ? i.size : 0) - (o ? o.size : 0);
                  return r > 0 || (0 == r && t.accountid > n.accountid)
                    ? -1
                    : 1;
                });
              }
              let o = null;
              !e &&
                this.props.group.should_filter_categorized_friends &&
                (o = d.xm.FriendStore.FriendGroupStore.categorized_friend_set);
              for (let e of t) {
                if (
                  this.props.setExcludedFriends &&
                  this.props.setExcludedFriends.has(e.accountid)
                )
                  continue;
                if (o && o.has(e.accountid)) continue;
                let t,
                  a,
                  s,
                  l = 4 == e.efriendrelationship,
                  c = this.state.friendDrag != e || n ? "" : "dropGhost";
                this.state.friendDraggedOut == e &&
                  this.state.friendDrag != e &&
                  (c += " dragOriginGhost");
                let m = this.props.gamepadEventOverrides ?? {};
                if (r) {
                  let n = this.m_actions.get(e.accountid);
                  (t = n && "accept" == n.action ? "bright" : "dim"),
                    (a =
                      !n || ("decline" != n.action && "block" != n.action)
                        ? "dim"
                        : "bright"),
                    (s =
                      !n || ("decline" != n.action && "block" != n.action)
                        ? ""
                        : " declined"),
                    n && "accept" == n.action
                      ? (c += "bright")
                      : !n ||
                        ("decline" != n.action && "block" != n.action) ||
                        (c += "dim"),
                    this.context?.IN_GAMEPADUI &&
                      ((m.onOKButton = (t) => {
                        let n = D.uX(t);
                        this.AcceptInvite(n, e);
                      }),
                      (m.onOKActionDescription = (0, A.we)(
                        "#FriendGroup_Tip_Accept",
                      )),
                      (m.onSecondaryButton = (t) => {
                        let n = D.uX(t);
                        this.BlockInvite(n, e);
                      }),
                      (m.onSecondaryActionDescription = (0, A.we)(
                        "#Button_Block",
                      )),
                      (m.onOptionsButton = (t) => {
                        let n = D.uX(t);
                        this.DeclineInvite(n, e);
                      }),
                      (m.onOptionsActionDescription = (0, A.we)(
                        "#FriendGroup_Tip_Decline",
                      )));
                }
                i.push(
                  I.createElement(
                    Le.M,
                    {
                      className: r
                        ? "friendInviteContainer" + s
                        : "friendCategoryContainer",
                      key: e.accountid,
                      classNames: "friend-anim",
                      timeout: 320,
                    },
                    (n) =>
                      I.createElement(
                        "div",
                        { ref: n },
                        I.createElement(dt, {
                          friend: e,
                          key: e.accountid,
                          className: c,
                          context: this.GetFriendRenderContext(),
                          bInOverlay: this.props.bInOverlay,
                          noActions: r && this.context?.IN_GAMEPADUI,
                          action:
                            l || (r && this.context?.IN_GAMEPADUI)
                              ? () => {}
                              : this.OnFriendSelected,
                          ...this.props.friendProps,
                          gamepadEventOverrides: m,
                          bFriendsListEntry: !0,
                        }),
                        r &&
                          !this.context?.IN_GAMEPADUI &&
                          I.createElement(
                            "div",
                            { className: "friendInviteButtons" },
                            I.createElement(
                              "div",
                              {
                                className:
                                  "friendInviteButton acceptFriendInvite " + t,
                                onClick: () => this.OnAcceptInvite(e),
                                title: (0, A.we)("#FriendGroup_Tip_Accept"),
                              },
                              I.createElement(H.Jlk, null),
                            ),
                            I.createElement(
                              "div",
                              {
                                className:
                                  "friendInviteButton declineFriendInvite " + a,
                                onClick: () => this.OnDeclineInvite(e),
                                title: (0, A.we)("#FriendGroup_Tip_Decline"),
                              },
                              I.createElement(H.sED, null),
                            ),
                          ),
                        r &&
                          !this.context?.IN_GAMEPADUI &&
                          I.createElement(
                            "div",
                            { className: "friendInviteBlockContainer" },
                            I.createElement(Z.Yh, {
                              onChange: (t) => this.OnBlockInvite(t, e),
                            }),
                            I.createElement(
                              "div",
                              { className: "displayColumn" },
                              I.createElement(
                                "div",
                                { className: "blockCommunicationLabel" },
                                (0, A.we)("#FriendGroup_IncomingInvites_Block"),
                              ),
                              I.createElement(
                                "div",
                                {
                                  className: "blockCommunicationLabel subtitle",
                                },
                                (0, A.we)(
                                  "#FriendGroup_IncomingInvites_Block_desc",
                                ),
                              ),
                            ),
                          ),
                      ),
                  ),
                );
              }
            }
            let m = "friendGroup",
              h = !1,
              p = !1,
              _ = !1;
            if (
              (t && (m += " noTransitions"),
              this.props.group.modifiable
                ? ((m += " taggedGroup "), (h = !0))
                : this.props.group.m_eDisplayType == c.oy.eOnlineOnlyNotInGame
                  ? ((m += " onlineFriends "), (p = !0))
                  : this.props.group.m_eDisplayType == c.oy.eOfflineOnly
                    ? ((m += " offlineFriends "), (_ = !0))
                    : this.IsInviteGroup()
                      ? (m += " friendRequests ")
                      : this.IsOutGoingInviteGroup() &&
                        (m += " friendOutgoingRequests "),
              e && (!i || !i.length))
            )
              return I.createElement(
                "div",
                {
                  className: "friendSearchNoResultsContainer",
                  ref: this.containerRef,
                },
                I.createElement(
                  "div",
                  null,
                  (0, A.we)(
                    "#FriendGroup_Search_NoResults",
                    this.props.searchString,
                  ),
                ),
                I.createElement(
                  "div",
                  { className: "searchSteamSuggestion" },
                  (0, A.we)("#FriendGroup_Search_CantFind"),
                ),
                I.createElement(
                  O.uU,
                  { href: o.TS.COMMUNITY_BASE_URL + "search/users" },
                  (0, A.we)("#FriendGroup_Search_Link"),
                ),
              );
            if (0 == i.length && !this.IsCollapsed()) return null;
            let g = 0 != this.m_actions.size,
              C = "SortByRecent";
            l && (C += " Recent"), n && (C += " Collapsed");
            let f = !this.IsInviteGroup() && !this.IsOutGoingInviteGroup(),
              S = {
                onActivate: this.ToggleCollapsed,
                onOKActionDescription: (0, A.we)(
                  n ? "#FriendGroup_Expand" : "#FriendGroup_Collapse",
                ),
                onContextMenu: this.OnContextMenu,
                onMenuButton: f && this.OnContextMenu,
                onMenuActionDescription: f
                  ? (0, A.we)("#FriendGroup_Options")
                  : void 0,
              };
            return I.createElement(
              u.T,
              {
                className: m,
                ...this.GetDragDropProps(
                  this.props.group.modifiable ||
                    this.props.group.accepts_group_removals,
                ),
                ref: this.containerRef,
              },
              I.createElement(
                w.Z,
                {
                  className: "groupHeaderContainer",
                  "flow-children": "row",
                  focusable: !1,
                },
                !e &&
                  I.createElement(
                    w.Z,
                    { className: "groupName" + (n ? " Collapsed" : ""), ...S },
                    I.createElement(
                      "div",
                      { className: "ExpandPlusMinus" },
                      I.createElement(H.f5w, null),
                    ),
                    this.props.group.icon_url &&
                      I.createElement("img", {
                        className: "groupIcon",
                        src: this.props.group.icon_url,
                      }),
                    this.props.group.name,
                    !e &&
                      I.createElement(
                        "span",
                        {
                          className: this.IsCollapsed()
                            ? "groupCount collapsed"
                            : "groupCount",
                        },
                        "(",
                        this.props.group.member_count,
                        ")",
                      ),
                    h && I.createElement("hr", null),
                  ),
                _ &&
                  I.createElement(
                    w.Z,
                    {
                      className: C,
                      focusable: !0,
                      onActivate: this.ToggleOfflineSortMethod,
                      title: l
                        ? (0, A.we)("#FriendGroup_Tip_SortByRecent")
                        : (0, A.we)("#FriendGroup_Tip_SortByAlphabet"),
                      onOKActionDescription: (0, A.we)(
                        "#FriendGroup_ChangeSort",
                      ),
                    },
                    I.createElement(H.gxp, null),
                  ),
              ),
              I.createElement(
                N.A,
                { className: "groupList", enter: !t, exit: !t },
                i,
                r &&
                  !this.context?.IN_GAMEPADUI &&
                  I.createElement(
                    Le.M,
                    {
                      key: "inviteButtons",
                      classNames: "opacityfade-anim",
                      timeout: 320,
                    },
                    (e) =>
                      I.createElement(
                        "div",
                        { className: "confirmInviteRequestContainer", ref: e },
                        I.createElement(
                          "div",
                          { className: "confirmInviteRequestActions" },
                          g
                            ? I.createElement(
                                "div",
                                {
                                  className:
                                    "confirmInviteButton confirmInvites",
                                  onClick: this.OnConfirmChanges,
                                },
                                (0, A.we)("#FriendGroup_ConfirmInvites"),
                              )
                            : I.createElement(
                                "div",
                                {
                                  className:
                                    "confirmInviteButton confirmInvites dim",
                                },
                                (0, A.we)("#FriendGroup_ConfirmInvites"),
                              ),
                          I.createElement(
                            "div",
                            {
                              className:
                                "confirmInviteButton ignoreAllRequests",
                              onClick: this.OnIgnoreAllInvites,
                            },
                            (0, A.we)("#FriendGroup_AllIgnore"),
                          ),
                        ),
                        I.createElement(
                          w.Z,
                          {
                            className: "cancelAddFriends",
                            onActivate: this.OnCloseInvites,
                            onOKActionDescription: (0, A.we)(
                              "#FriendGroup_Close",
                            ),
                            title: (0, A.we)("#FriendGroup_Close"),
                          },
                          I.createElement(H.i3G, { angle: -90 }),
                        ),
                      ),
                  ),
              ),
              h && I.createElement("div", { className: "dropTargetBox" }),
            );
          }
        };
        function at(e, t, n) {
          return (0, V.lX)(
            I.createElement(st, {
              browserContext: e,
              appid: t,
              ownerWindow: n.currentTarget.ownerDocument.defaultView,
            }),
            n,
          );
        }
        (0, i.Cg)([T.oI], rt.prototype, "ToggleCollapsed", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnContextMenu", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnFriendSelected", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnAcceptInvite", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnDeclineInvite", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnBlockInvite", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnConfirmChanges", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnIgnoreAllInvites", null),
          (0, i.Cg)([T.oI], rt.prototype, "OnCloseInvites", null),
          (0, i.Cg)([T.oI], rt.prototype, "ToggleOfflineSortMethod", null),
          (rt = (0, i.Cg)([v.PA], rt));
        class st extends I.PureComponent {
          render() {
            return I.createElement(
              U.tz,
              null,
              I.createElement(p.Rm, {
                unAppID: this.props.appid,
                bShowLargeHeader: !0,
              }),
            );
          }
        }
        let lt = class extends it {
          constructor(e) {
            super(e),
              (this.state = {
                bLocalCollapsed: this.props.collapsed,
                bIsSubscribedToApp: !1,
              }),
              ge.W.BIsSubscribedApp(this.props.group.id).then((e) => {
                this.setState({ bIsSubscribedToApp: e });
              });
          }
          GetGroup() {
            return this.props.group;
          }
          PerformDropAction(e) {
            return Promise.reject("FriendGameGroups do not accept drops");
          }
          ToggleCollapsed() {
            this.props.groupDisplayPrefs
              ? this.props.groupDisplayPrefs.ToggleUserGroupCollapsed(
                  this.props.group.unique_id,
                )
              : this.setState({ bLocalCollapsed: !this.state.bLocalCollapsed });
          }
          IsCollapsed() {
            return this.props.groupDisplayPrefs
              ? this.props.groupDisplayPrefs.GetUserGroupCollapsed(
                  this.props.group.unique_id,
                )
              : this.state.bLocalCollapsed;
          }
          m_FriendRenderContext;
          GetFriendRenderContext() {
            return (
              (this.m_FriendRenderContext &&
                this.m_FriendRenderContext.friendGroup == this.props.group) ||
                (this.m_FriendRenderContext = {
                  friendGroup: this.props.group,
                  chatContext: "friendslist",
                }),
              this.m_FriendRenderContext
            );
          }
          OnShowHeaderContextMenu(e) {
            let t = this.props.group.id;
            if (t) {
              d.xm.AppInfoStore.GetAppInfo(t).is_valid &&
                at((0, m.CO)(e), t, e);
            }
          }
          render() {
            if (
              this.props.bSingletonGroup &&
              0 == this.props.group.unfiltered_count
            )
              return null;
            const e = this.IsCollapsed();
            let t = [];
            if (!e) {
              let e = this.props.group.member_list,
                n = new Map(),
                i = new Map(),
                o = new Map();
              if (!this.props.bSingletonGroup) {
                let t = "",
                  r = null;
                for (let a of e)
                  r &&
                    a.persona.player_group != t &&
                    n.set(r.accountid, "lastInGroup"),
                    a.persona.player_group &&
                      (o.set(
                        a.persona.player_group,
                        a.persona.player_group_size,
                      ),
                      i.has(a.persona.player_group)
                        ? i.set(
                            a.persona.player_group,
                            i.get(a.persona.player_group) + 1,
                          )
                        : i.set(a.persona.player_group, 1),
                      a.persona.player_group != t
                        ? (n.set(a.accountid, "firstInGroup"),
                          (t = a.persona.player_group),
                          (r = a))
                        : (n.set(a.accountid, "inGroup"), (r = a)));
                r && n.set(r.accountid, "lastInGroup");
              }
              let r =
                  !this.props.bSingletonGroup && this.props.group.id != c.o_,
                a = null;
              for (let s of e) {
                let e = "";
                this.state.friendDraggedOut == s &&
                  this.state.friendDrag != s &&
                  (e += " dragOriginGhost");
                let l,
                  c = !1;
                if (n.has(s.accountid)) {
                  c = !0;
                  let t = n.get(s.accountid);
                  if ("lastInGroup" == t) {
                    let e = i.get(s.persona.player_group),
                      n = o.get(s.persona.player_group);
                    if (n <= 1 && 1 == e) t = "";
                    else if (n && e < n) {
                      let i = !1;
                      d.xm.FriendStore.self.persona.player_group ==
                        s.persona.player_group && (i = !0);
                      let o = n - e,
                        r = n - e - (i ? 1 : 0),
                        l = "oneDigit";
                      o >= 10 && o < 100
                        ? (l = "twoDigits")
                        : o >= 100 && (l = "manyDigits");
                      let c =
                        1 == r
                          ? "#FriendGroup_PlayerGroupFooter_Label_Singular"
                          : "#FriendGroup_PlayerGroupFooter_Label";
                      i &&
                        (c =
                          0 == r
                            ? "#FriendGroup_PlayerGroupFooter_Label_PlusYouOnly"
                            : 1 == r
                              ? "#FriendGroup_PlayerGroupFooter_Label_PlusYou_Singular"
                              : "#FriendGroup_PlayerGroupFooter_Label_PlusYou"),
                        (t = 1 == e ? "firstInGroup" : "inGroup"),
                        (a = I.createElement(
                          Le.M,
                          {
                            key: s.persona.player_group + "_footer",
                            classNames: "friend-anim",
                            timeout: 320,
                          },
                          (e) =>
                            I.createElement(
                              "div",
                              {
                                ref: e,
                                className: "SteamPlayerGroupFooter lastInGroup",
                                draggable: !1,
                              },
                              I.createElement("div", {
                                className: "SteamPlayerGroupLines",
                              }),
                              I.createElement(
                                "div",
                                {
                                  className: "SteamPlayerGroupFooterCount " + l,
                                },
                                I.createElement(
                                  "div",
                                  { className: "count" },
                                  "+",
                                  o,
                                ),
                              ),
                              I.createElement(
                                "div",
                                { className: "SteamPlayerGroupFooterLabel" },
                                (0, A.we)(c, r),
                              ),
                            ),
                        ));
                    }
                  }
                  e += " " + t;
                }
                this.props.bSingletonGroup &&
                  (l = I.createElement(ct, {
                    appid: s.persona.m_unGamePlayedAppID,
                  })),
                  (e += " " + y.p.hoverClass),
                  t.push(
                    I.createElement(
                      Le.M,
                      {
                        key: s.accountid,
                        classNames: "friend-anim",
                        timeout: 320,
                      },
                      (t) =>
                        I.createElement(dt, {
                          divRef: t,
                          friend: s,
                          key: s.accountid,
                          bHideGameName: r,
                          className: e,
                          context: this.GetFriendRenderContext(),
                          bInGroup: c,
                          bFriendsListEntry: !0,
                          listStatusIndicatorLeft: l,
                          bInOverlay: this.props.bInOverlay,
                        }),
                    ),
                  ),
                  a && t.push(a);
              }
            }
            let n = "friendGroup gameGroup",
              i = this.props.group.name,
              o = null;
            this.props.bSingletonGroup &&
              ((n += " OtherGamesGroup"),
              (o = this.props.bOtherGroups
                ? (0, A.we)("#FriendGroup_InGame_Others")
                : (0, A.we)("#FriendGroup_InGame")));
            let r = {
              onActivate: this.ToggleCollapsed,
              onOKActionDescription: (0, A.we)(
                e ? "#FriendGroup_Expand" : "#FriendGroup_Collapse",
              ),
            };
            return (
              this.props.bSingletonGroup ||
                this.props.group.id == c.o_ ||
                (this.state.bIsSubscribedToApp
                  ? ((r.onOptionsButton = () => {
                      let e =
                        "steam://open/library/details/" + this.props.group.id;
                      d.xm.OpenURLInBrowser(e, R.m);
                    }),
                    (r.onOptionsActionDescription = (0, A.we)(
                      "#Friend_Menu_ViewGameInLibrary",
                    )))
                  : ((r.onOptionsButton = () => {
                      let e = (0, ce.Dn)(
                        this.props.group.id,
                        "friendcontextmenu",
                      );
                      d.xm.OpenURLInBrowser(e, R.m);
                    }),
                    (r.onOptionsActionDescription = (0, A.we)(
                      "#Friend_Menu_ViewGameStorePage",
                    )))),
              I.createElement(
                u.T,
                {
                  className: n,
                  ...this.GetDragDropProps(
                    this.props.group.modifiable ||
                      this.props.group.accepts_group_removals,
                  ),
                },
                I.createElement(
                  w.Z,
                  {
                    className: "groupName" + (e ? " Collapsed" : ""),
                    onContextMenu: this.OnShowHeaderContextMenu,
                    ...r,
                  },
                  I.createElement(
                    "div",
                    { className: "gameGroupContainer" },
                    I.createElement(
                      "div",
                      { className: "ExpandPlusMinus" },
                      I.createElement(H.f5w, null),
                    ),
                    o,
                    this.props.group.icon_url &&
                      I.createElement("img", {
                        className: "groupIcon",
                        src: this.props.group.icon_url,
                      }),
                  ),
                  i,
                  I.createElement(
                    "span",
                    {
                      className: this.IsCollapsed()
                        ? "groupCount collapsed"
                        : "groupCount",
                    },
                    "(",
                    this.props.group.member_count,
                    ")",
                  ),
                  I.createElement("hr", null),
                ),
                I.createElement(
                  N.A,
                  {
                    className: this.IsCollapsed()
                      ? "friendsContainer groupCollapsed"
                      : "friendsContainer",
                  },
                  t,
                ),
              )
            );
          }
        };
        (0, i.Cg)([T.oI], lt.prototype, "ToggleCollapsed", null),
          (0, i.Cg)([T.oI], lt.prototype, "OnShowHeaderContextMenu", null),
          (lt = (0, i.Cg)([v.PA], lt));
        let ct = class extends I.Component {
          OnShowGameIconContextMenu(e) {
            at((0, m.CO)(e), this.props.appid, e);
          }
          render() {
            let e =
              0 != this.props.appid
                ? d.xm.AppInfoStore.GetAppInfo(this.props.appid)
                : null;
            return e && e.is_valid
              ? I.createElement(
                  "div",
                  {
                    className: "FriendInGameIcon",
                    onContextMenu: this.OnShowGameIconContextMenu,
                  },
                  I.createElement("img", {
                    className: "gameIcon",
                    alt: "",
                    src: e.icon_url,
                  }),
                )
              : I.createElement(
                  "div",
                  { className: "FriendInGameIcon" },
                  I.createElement(
                    "div",
                    { className: "FriendInGameIcon_NA" },
                    "N/A",
                  ),
                );
          }
        };
        (0, i.Cg)([T.oI], ct.prototype, "OnShowGameIconContextMenu", null),
          (ct = (0, i.Cg)([v.PA], ct));
        class mt extends I.Component {
          childRef = I.createRef();
          OnContextMenu(e) {
            if (this.props.disableContextMenu) return;
            let t;
            if (this.props.onContextMenu) t = this.props.onContextMenu(e);
            else {
              t = m.ZM.FriendHoverStore.GetHover(
                this.props.friend,
              ).OnContextMenu(this.props.context, e);
            }
            t &&
              this.props.onContextMenuShown &&
              this.props.onContextMenuShown(t);
          }
          componentWillUnmount() {
            this.Hide();
          }
          Hide() {
            m.ZM.FriendHoverStore.GetHover(this.props.friend).HideByElement(
              this.childRef.current,
            );
          }
          render() {
            let e = I.Children.only(this.props.children);
            if (e) {
              let t = this.props,
                n = m.ZM.FriendHoverStore.GetHover(t.friend);
              return I.cloneElement(e, {
                onMouseEnter: (e) => n.Show(e, t.context, t.direction),
                onMouseLeave: n.Hide,
                onContextMenu: this.OnContextMenu,
                ref: this.childRef,
              });
            }
            return this.props.children;
          }
        }
        (0, i.Cg)([T.oI], mt.prototype, "OnContextMenu", null);
        const dt = (0, v.PA)((e) => {
          const t = (0, M.R7)(),
            n = (0, m._k)(t.ownerWindow),
            i = !(0, R.u)(n, R.m);
          return I.createElement(ut, { bInOverlay: i, ...e });
        });
        let ut = class extends I.Component {
          static contextType = o.QO;
          constructor(e) {
            super(e),
              (this.state = { bActive: !1, bVisible: !1, bHovered: !1 });
          }
          OnWaypointEnter() {
            this.setState({ bVisible: !0 });
          }
          OnWaypointLeave() {
            this.setState({ bVisible: !1 });
          }
          OnMouseEnter() {
            this.setState({ bHovered: !0 });
          }
          OnMouseLeave() {
            this.setState({ bHovered: !1 });
          }
          OnDoubleClick(e) {
            this.RunAction(!0, e);
          }
          OnClick(e) {
            this.RunAction(!1, e);
          }
          OnOKButton(e) {
            this.RunAction(!0, e);
          }
          RunAction(e, t) {
            !this.props.bSingleClickActivate == e &&
              (this.props.action
                ? this.props.action(this.props.friend, t)
                : this.props.noActions ||
                  this.props.friend.OpenChatDialog((0, m.CO)(t)));
          }
          OnDragStart(e) {
            e.dataTransfer.setData(
              "text/plain",
              this.props.friend.persona.m_strPlayerName,
            ),
              e.dataTransfer.setData(
                "text/steamid",
                this.props.friend.persona.m_steamid.ConvertTo64BitString(),
              ),
              this.props.friend.is_friend
                ? m.ZM.DragDropManager.StartDrag({
                    type: "friend",
                    source: this.props.context.chatContext,
                    friend: this.props.friend,
                    sourceContext: this.props.context,
                  })
                : m.ZM.DragDropManager.StartDrag({
                    type: "nonfriend",
                    source: this.props.context.chatContext,
                    friend: this.props.friend,
                    sourceContext: this.props.context,
                  }),
              m.ZM.FriendHoverStore.GetHover(
                this.props.friend,
              ).HideAllInstances();
          }
          OnDragEnd(e) {
            m.ZM.DragDropManager.EndDrag();
          }
          OnShowContextMenu(e) {
            let t = (0, p.tj)(
              (0, m.CO)(e),
              this.props.context,
              this.props.friend,
              e,
            );
            t && this.OnContextMenuShown(t);
          }
          OnContextMenuShown(e) {
            this.setState({ bActive: !0 }),
              e.SetOnHideCallback(() => {
                this.setState({ bActive: !1 });
              });
          }
          render() {
            const {
              friend: e,
              showVoiceLevel: t,
              bHideGameName: n,
              bHideEnhancedRichPresenceLabel: i,
              context: o,
              action: r,
              noActions: a,
              notDraggable: s,
              disableContextMenu: l,
              className: c,
              bInVoiceList: m,
              listStatusIndicator: u,
              listStatusIndicatorLeft: h,
              bInGroup: p,
              bFriendsListEntry: _,
              bForcePersonaNameDisplay: g,
              bSingleClickActivate: C,
              avatarSize: f = "Medium",
              bHidePersona: S,
              bHideSnooze: v,
              bHideStatus: b,
              bHideStatusInfo: y,
              bInGameIcon: D,
              statusPosition: T,
              lastChat: M,
              gamepadEventOverrides: R,
              children: k,
              bInOverlay: L,
              video: G,
              divRef: F,
              ...P
            } = this.props;
            if ((e.LoadIfNecessary(), !e.is_ready))
              return I.createElement("div", null);
            let B = d.xm.CMInterface.steamid.GetAccountID() == e.accountid,
              x = null,
              O = 0;
            this.props.showVoiceLevel &&
              (O = d.xm.VoiceStore.get_volume(e.accountid));
            let N,
              V = { ...P, className: "friend " + (0, ae.rO)(e.persona) };
            if (
              (c && (V.className += " " + c),
              _ && (V.className += " friendStatusHover"),
              B)
            ) {
              let e = d.xm.VoiceStore.IsAttemptingInitialConnection(),
                t = d.xm.VoiceStore.HasBeenAttemptingOverTwoSeconds(),
                n = d.xm.VoiceStore.IsAttemptingReconnect(),
                i =
                  "https://support.steampowered.com/kb_article.php?ref=2598-RTZB-6114",
                o = (0, A.we)("#VoiceChatConnectingHelp"),
                r = null;
              t
                ? (r = (0, A.we)("#VoiceChatConnecting"))
                : n && (r = (0, A.we)("#VoiceChatReconnecting")),
                r &&
                  (x = B
                    ? () =>
                        I.createElement(
                          "a",
                          { target: "_blank", title: o, href: i },
                          r,
                        )
                    : () => r);
              let a = "";
              e && (a += " connecting"),
                t && (a += " slowconnecting"),
                n && (a += " reconnecting"),
                (V.className += a);
            }
            if (
              ((a && !r) ||
                ((V.onDoubleClick = this.OnDoubleClick),
                (V.onClick = this.OnClick),
                (V.onOKButton = this.OnOKButton)),
              a ||
                l ||
                !this.context?.IN_GAMEPADUI ||
                ((V.onContextMenu = this.OnShowContextMenu),
                (V.onMenuButton = this.OnShowContextMenu),
                (V.onOKActionDescription = (0, A.we)(
                  "#Friend_Menu_SendMessage",
                )),
                (V.onMenuActionDescription = (0, A.we)("#Friend_Menu_Open"))),
              a ||
                s ||
                ((V.onDragStart = this.OnDragStart),
                (V.onDragEnd = this.OnDragEnd),
                (V.draggable = !0)),
              R && (V = { ...V, ...R }),
              k)
            )
              N = I.createElement(w.Z, { ...V, ref: F }, k);
            else {
              let r,
                s = 100,
                c = {};
              if (t && 1 != O) {
                let e = 3.2,
                  t = Math.min(O * e, 1),
                  n = Math.max(0, s * t);
                (n = Math.round(10 * n) / 10),
                  (c.height = n + "%"),
                  (c.top = "auto"),
                  n > 1 && (V.className += " speaking");
              }
              o &&
                o.group &&
                ((r = o.group.GetMemberPartyBeacon(e.accountid)),
                r && (V.className += " partyBeacon")),
                this.state.bActive &&
                  (V.className += " Friend_ContextMenuActive");
              let _,
                g = d.xm.VoiceStore.GetPerUserMuting(e.accountid),
                C = null,
                A = null,
                R =
                  this.state.bVisible &&
                  !this.context?.IN_GAMEPADUI &&
                  d.xm.SettingsStore.FriendsSettings.bAnimatedAvatars &&
                  e.persona.is_online;
              if (e.BLoadedEquippedItems()) {
                let t = e.GetEquippedProfileItems();
                t && ((C = t.animated_avatar), (A = t.avatar_frame));
              }
              if (D && e.persona.is_ingame) {
                let t = d.xm.AppInfoStore.GetAppInfo(
                  e.persona.m_unGamePlayedAppID,
                );
                t.is_valid &&
                  (_ = I.createElement(
                    "div",
                    { className: "FavoriteFriend_GameIcon" },
                    I.createElement("img", {
                      className: "gameIcon",
                      src: t.icon_url,
                      draggable: !1,
                    }),
                  ));
              }
              let k = I.createElement(
                E.xz,
                {
                  key: `${e.persona.GetAccountID()}_${e.persona.is_online}`,
                  loopDuration: R ? "Medium" : "None",
                  persona: e.persona,
                  animatedAvatar: C,
                  avatarFrame: A,
                  size: f,
                  statusStyle: c,
                  statusPosition: T,
                  bParentHovered: e.persona.is_online && this.state.bHovered,
                  bLimitProfileFrameAnimationTime: !R || L,
                },
                m && g && I.createElement(H.fSs, null),
                _,
              );
              a ||
                (k = I.createElement(
                  mt,
                  {
                    friend: e,
                    context: o,
                    disableContextMenu: l,
                    onContextMenuShown: this.OnContextMenuShown,
                  },
                  k,
                ));
              let P = o && "chatmemberlist" == o.chatContext,
                B = "";
              2 != e.efriendrelationship ||
                P ||
                (void 0 ===
                  d.xm.FriendStore.FriendGroupStore.incoming_invites_group.map_steamid_to_mutual_friends.get(
                    e.steamid64,
                  ) && (B = "noMutualFriends"),
                (x = () => I.createElement(ht, { friend: e })));
              let U = null;
              if (M && M.GetLastMessage()) {
                const e = d.xm.ChatStore.NotificationBBCodeParser.ParseBBCode(
                  M.GetLastMessage(),
                  {
                    chat: M,
                    unAccountIDSender: M.accountid_last_message,
                    key: M.GetLastMessage(),
                    rtTimestamp: M.time_last_message,
                    onLoad: () => {},
                  },
                );
                U = () =>
                  I.createElement(
                    "div",
                    { className: pe.LastMessage },
                    `${(e && e.body) || ((0, De.Yj))(M.GetLastMessage())}`,
                  );
              } else
                e.persona.HasCurrentGameRichPresence()
                  ? (U = () => e.persona.GetCurrentGameRichPresence())
                  : e.persona.m_broadcastAccountId &&
                    (U = () => e.GetBroadcastDescription());
              const W = () => {
                (G.showOnDesktop = !G.showOnDesktop),
                  d.xm.ChatStore.VoiceChat.SetReceivingVideo(
                    G.accountid,
                    G.showOnDesktop,
                  );
              };
              N = I.createElement(
                w.Z,
                {
                  onMouseEnter: this.OnMouseEnter,
                  onMouseLeave: this.OnMouseLeave,
                  ...V,
                  ref: F,
                },
                I.createElement(Ae.Y, {
                  onEnter: this.OnWaypointEnter,
                  onLeave: this.OnWaypointLeave,
                }),
                I.createElement(pt, { friend: e }),
                p &&
                  I.createElement("div", {
                    className: "SteamPlayerGroupLines",
                  }),
                m && I.createElement(_t, { friend: e }),
                h,
                k,
                !y &&
                  I.createElement(de.D, {
                    className: (0, ue.A)("labelHolder", B),
                    persona: e.persona,
                    eFriendRelationship: e.efriendrelationship,
                    bIsSelf: d.xm.FriendStore.self == e,
                    strNickname: e.nickname,
                    bParenthesizeNicknames:
                      d.xm.SettingsStore.CommunityPreferences
                        .bParenthesizeNicknames,
                    renderStatus: x,
                    renderRichPresence: U,
                    bHideGameName: n,
                    bHideStatus: b,
                    bHideEnhancedRichPresenceLabel: i,
                    bHidePersona: S,
                    bHideSnooze: v,
                    bCompactView:
                      d.xm.SettingsStore.FriendsSettings.bCompactFriendsList,
                    onContextMenu:
                      this.context?.IN_GAMEPADUI || a || l
                        ? void 0
                        : this.OnShowContextMenu,
                    bHasPartyBeacon: void 0 !== r,
                  }),
                u,
                G &&
                  I.createElement(
                    "div",
                    {
                      onClick: W,
                      style: G.showOnDesktop ? { color: "lightgreen" } : void 0,
                    },
                    "#",
                  ),
              );
            }
            return N;
          }
        };
        (0, i.Cg)([T.oI], ut.prototype, "OnWaypointEnter", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnWaypointLeave", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnMouseEnter", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnMouseLeave", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnDoubleClick", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnClick", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnOKButton", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnDragStart", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnDragEnd", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnShowContextMenu", null),
          (0, i.Cg)([T.oI], ut.prototype, "OnContextMenuShown", null),
          (ut = (0, i.Cg)([v.PA], ut));
        const ht = (0, v.PA)(function (e) {
            const { friend: t } = e;
            let n,
              i,
              o =
                d.xm.FriendStore.FriendGroupStore.incoming_invites_group.map_steamid_to_mutual_friends.get(
                  t.steamid64,
                );
            return (
              (0, I.useEffect)(() => {
                void 0 === o &&
                  d.xm.FriendStore.FriendGroupStore.EnsureMutualFriendsForIncomingInvites();
              }, [o]),
              void 0 === o
                ? (i = (0, A.we)("#FriendGroup_NoMutualFriends"))
                : ((i = (0, A.Yp)("#FriendGroup_YesMutualFriends", o.size)),
                  (n = o.size)),
              I.createElement(
                "span",
                { className: "inviteLabel" },
                I.createElement(
                  "span",
                  { className: "mutualFriendNumber" },
                  n && n + " ",
                ),
                i,
              )
            );
          }),
          pt = (0, v.PA)((e) => {
            const { friend: t } = e,
              n = I.useCallback(() => t.LoadEquippedProfileItems(), [t]);
            return !t.BLoadedEquippedItems() &&
              t.persona.is_online &&
              d.xm.SettingsStore.FriendsSettings.bAnimatedAvatars
              ? I.createElement(Ae.Y, { onEnter: n, topOffset: "-500px" })
              : null;
          });
        let _t = class extends I.Component {
          render() {
            let e = this.props.friend,
              t = d.xm.CMInterface.steamid.GetAccountID() == e.accountid,
              n = "voiceStatusIconsContainer",
              i = "",
              o = "",
              r = !1,
              a = !1,
              s = !1,
              l = d.xm.VoiceStore.GetPerUserMuting(e.accountid),
              c = d.xm.VoiceStore.GetUserMutedRemotely(e.accountid),
              m = d.xm.VoiceStore.GetOutputMutedRemotely(e.accountid);
            return (
              t
                ? ((r = d.xm.VoiceStore.IsMicMuted()),
                  (a = d.xm.VoiceStore.IsOutputMuted()),
                  (s = d.xm.VoiceStore.BNoMicAvailableForSession()),
                  r && (n += " mic_muted_self"),
                  a && (n += " output_muted_self"))
                : (s = d.xm.VoiceStore.GetUserHasNoMicForSession(e.accountid)),
              l && (n += " muted_locally"),
              c && (n += " mic_muted_remotely"),
              m && (n += " output_muted_remotely"),
              s && (n += " no_mic_for_session"),
              s
                ? (i = (0, A.we)("#Tooltip_MicStatus_NoMic"))
                : c
                  ? (i = (0, A.we)("#Tooltip_RemoteMicStatus_Muted"))
                  : r && (i = (0, A.we)("#Tooltip_YourMicStatus_Muted")),
              m
                ? (o = (0, A.we)("#Tooltip_RemoteOutputStatus_Muted"))
                : a && (o = (0, A.we)("#Tooltip_YourOutputStatus_Muted")),
              I.createElement(
                "div",
                { className: n },
                I.createElement(
                  "div",
                  {
                    className: "voicestatusIcon voiceStatusMic disabled",
                    title: i,
                  },
                  I.createElement(H.EQ9, { off: !0 }),
                ),
                I.createElement(
                  "div",
                  {
                    className: "voicestatusIcon voiceStatusOutput disabled",
                    title: o,
                  },
                  I.createElement(H.LeN, { off: !0 }),
                ),
              )
            );
          }
        };
        _t = (0, i.Cg)([v.PA], _t);
        let gt = class extends I.Component {
          render() {
            const {
              friend: e,
              bLarge: t,
              className: n,
              context: i,
              children: o,
            } = this.props;
            return I.createElement(
              mt,
              { friend: e, context: i },
              I.createElement(
                "div",
                {
                  className: (0, ue.A)(
                    "friend",
                    "FriendAvatar",
                    (0, ae.rO)(e.persona),
                    n,
                  ),
                },
                I.createElement(
                  E.i8,
                  {
                    persona: e.persona,
                    size: t ? "Large" : "Medium",
                    className: n,
                  },
                  o,
                ),
              ),
            );
          }
        };
        gt = (0, i.Cg)([v.PA], gt);
        let Ct = class extends I.Component {
          render() {
            let e,
              t = d.xm.ChatStore.FriendChatStore.GetUnreadFriendMessageCount(
                this.props.browserContext,
              );
            return (
              this.props.bScrolledFromTop &&
                t > 0 &&
                (e = I.createElement(
                  Le.M,
                  { classNames: "unread-messages-anim", timeout: 320 },
                  (e) =>
                    I.createElement(
                      "div",
                      {
                        ref: e,
                        className: "unreadMessageViolator",
                        onClick: this.props.onClick,
                      },
                      1 == t &&
                        (0, A.we)("#FriendGroup_UnreadMessagesViolator"),
                      t > 1 &&
                        (0, A.we)(
                          "#FriendGroup_UnreadMessagesViolatorPlural",
                          t,
                        ),
                    ),
                )),
              I.createElement(N.A, null, e)
            );
          }
        };
        Ct = (0, i.Cg)([v.PA], Ct);
        let ft = class extends I.Component {
          constructor(e) {
            super(e), (this.state = { collapsed: !1 });
          }
          OnHeaderClick(e) {
            this.setState({ collapsed: !this.state.collapsed });
          }
          render() {
            let e = this.props.friendChatStore.GetFriendsWithUnreadMessages(
              this.props.browserContext,
            );
            if (!e.length) return null;
            let t = this.state.collapsed,
              n = t
                ? null
                : e.map((e) => {
                    let t = e.unread_message_count,
                      n = e.chat_partner,
                      i = I.createElement(
                        "div",
                        { className: "FriendMessageCount" },
                        t,
                      );
                    return I.createElement(
                      Le.M,
                      {
                        key: n.accountid,
                        classNames: "friend-anim",
                        timeout: 320,
                      },
                      (t) =>
                        I.createElement(
                          "div",
                          { ref: t, className: "unreadFriend" },
                          I.createElement(dt, {
                            friend: n,
                            key: n.accountid,
                            context: { chat: e },
                            bFriendsListEntry: !0,
                            listStatusIndicator: i,
                            bInOverlay:
                              this.props.browserContext.m_unAppID &&
                              0 != this.props.browserContext.m_unAppID,
                          }),
                        ),
                    );
                  });
            return I.createElement(
              "div",
              { className: "friendGroup" },
              I.createElement(
                "div",
                {
                  className: "groupName" + (t ? " Collapsed" : ""),
                  onClick: this.OnHeaderClick,
                },
                I.createElement(
                  "div",
                  { className: "ExpandPlusMinus" },
                  I.createElement(H.f5w, null),
                ),
                (0, A.we)("#FriendGroup_UnreadMessages"),
                I.createElement(
                  "span",
                  { className: "groupCount" },
                  "(",
                  e.length,
                  ")",
                ),
                I.createElement("hr", null),
              ),
              I.createElement(N.A, null, n),
            );
          }
        };
        (0, i.Cg)([T.oI], ft.prototype, "OnHeaderClick", null),
          (ft = (0, i.Cg)([v.PA], ft));
      },
      92453: (e, t, n) => {
        "use strict";
        n.d(t, { $: () => M, A: () => D });
        var i = n(34629),
          o = n(51802),
          r = n(82789),
          a = n(41230),
          s = n(63696),
          l = n(69074),
          c = n(77171),
          m = n(74002),
          d = n(99862),
          u = n(51234),
          h = n.n(u),
          p = n(81734),
          _ = n(98540),
          g = n(58743),
          C = n(54829),
          f = n(89021),
          S = n(82924),
          v = n(27828),
          b = n(25698),
          I = n(50622),
          w = n(14355),
          y = (n(17070), n(89523));
        const E = (e) => {
            const t = s.useRef();
            return s.createElement(
              w.x_,
              { onEscKeypress: e.closeModal },
              s.createElement(
                f.U9,
                {
                  classNameContent: "CreateChatChannelDialog",
                  onSubmit: () => {
                    e.onResult(t.current.value), e.closeModal();
                  },
                },
                s.createElement(f.Y9, null, (0, m.we)(e.title)),
                s.createElement(
                  f.nB,
                  null,
                  s.createElement(f.pd, { ref: t, autoFocus: !0 }),
                ),
                s.createElement(
                  f.wi,
                  null,
                  s.createElement(f.CB, { onCancel: e.closeModal }),
                ),
              ),
            );
          },
          D = (0, a.PA)((e) => {
            const t = null != e.fnOKButton,
              n = e.chatRoom.GetGroup().BCanAdminChannel(),
              i = e.chatRoom.IsTempVoiceRoom();
            let o = e.chatRoom.BVoiceActive(),
              r = e.chatRoom.voice_active_member_list.member_list.length > 0;
            return s.createElement(
              C.YZ,
              {
                focusable: !0,
                className: (0, c.A)(
                  h().GroupRoomContainer,
                  o && h().UserInRoom,
                  r && h().ActiveVoiceRoom,
                ),
                onOKButton: e.fnOKButton,
                onOKActionDescription:
                  e.strOKActionDescription ??
                  (0, m.we)("#VoiceChat_ManageRoom"),
                onSecondaryButton: e.fnSecondaryButton,
                onSecondaryActionDescription: e.strSecondaryActionDescription,
                onOptionsButton: e.fnOptionsButton,
                onOptionsActionDescription: e.strOptionsActionDescription,
                onGamepadFocus: e.fnOnFocus,
              },
              s.createElement(
                l.Z,
                {
                  focusable: !t,
                  className: h().RoomHeader,
                  onClick: undefined,
                  onOKButton: t
                    ? void 0
                    : () => {
                        g.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                          e.context,
                          e.chatRoom.GetGroup(),
                          !0,
                        ).SelectChat(e.chatRoom.GetRoomID()),
                          e.fnCloseModal && e.fnCloseModal();
                      },
                  onOKActionDescription: (0, m.we)("#VoiceChat_ViewQuickChat"),
                  onSecondaryButton: n
                    ? (t) => {
                        (0, b.Ci)(
                          (0, I.uX)(t),
                          (0, m.we)("#Chat_Actions_RemoveRoom"),
                          (0, m.we)("#Chat_Actions_RemoveRoom_Confirm"),
                          (0, m.we)("#Chat_Actions_RemoveRoom_Action"),
                        ).then(() => {
                          e.chatRoom
                            .GetGroup()
                            .DeleteChatRoom(e.chatRoom.GetRoomID());
                        });
                      }
                    : void 0,
                  onSecondaryActionDescription: n
                    ? (0, m.we)("#Chat_Actions_RemoveRoom")
                    : void 0,
                  onOptionsButton: n
                    ? (t) => {
                        (0, w.HT)(
                          s.createElement(E, {
                            title: (0, m.we)("#Chat_Actions_ChangeRoomName"),
                            description: void 0,
                            onResult: (t) =>
                              e.chatRoom
                                .GetGroup()
                                .RenameRoom(e.chatRoom.GetRoomID(), t),
                          }),
                          (0, I.uX)(t),
                        );
                      }
                    : void 0,
                  onOptionsActionDescription: n
                    ? i
                      ? (0, m.we)("#Chat_Actions_SaveChannel")
                      : (0, m.we)("#Chat_Actions_ChangeRoomName")
                    : void 0,
                },
                s.createElement(p.mrd, null),
                s.createElement(
                  "div",
                  { className: h().RoomTitle },
                  e.chatRoom.name,
                ),
              ),
              e.chatRoom.voice_active_member_list.member_list.map((n) => {
                const i =
                    n.accountid != g.xm.ChatStore.VoiceChat.GetLocalAccountID(),
                  o =
                    n.accountid != g.xm.ChatStore.VoiceChat.GetLocalAccountID(),
                  r = g.xm.ChatStore.VoiceChat.GetPerUserMuting(n.accountid),
                  a = g.xm.ChatStore.VoiceChat.GetUserMutedRemotely(
                    n.accountid,
                  ),
                  l = g.xm.ChatStore.VoiceChat.GetOutputMutedRemotely(
                    n.accountid,
                  );
                let u = [];
                r &&
                  u.push(
                    s.createElement(
                      "div",
                      { className: h().MicMutedLocally },
                      s.createElement(p.fSs, { muted: !0 }),
                    ),
                  ),
                  a &&
                    u.push(
                      s.createElement(
                        "div",
                        { className: h().MicMutedRemotely },
                        s.createElement(p.EQ9, { off: !0 }),
                      ),
                    ),
                  l &&
                    u.push(
                      s.createElement(
                        "div",
                        { className: h().OutputMutedRemotely },
                        s.createElement(p.LeN, { off: !0 }),
                      ),
                    );
                const _ = i
                  ? r
                    ? (0, m.we)("#VoiceChat_Unmute")
                    : (0, m.we)("#VoiceChat_Mute")
                  : null;
                return s.createElement(d.bP, {
                  key: n.accountid,
                  noActions: t,
                  friend: n,
                  className: (0, c.A)(h().GroupVoiceChatFriend),
                  context: { chat: e.chatRoom, chatContext: "friendslist" },
                  avatarSize: "Medium",
                  statusPosition: "right",
                  showVoiceLevel: !0,
                  gamepadEventOverrides: t
                    ? void 0
                    : {
                        onOKButton: () => {
                          o &&
                            (n.OpenChatDialog(e.context),
                            e.fnCloseModal && e.fnCloseModal());
                        },
                        onOKActionDescription: o
                          ? (0, m.we)("#Friend_Menu_SendMessage")
                          : null,
                        onSecondaryButton: () => {
                          i &&
                            g.xm.ChatStore.VoiceChat.SetPerUserMuting(
                              n.accountid,
                              !r,
                            );
                        },
                        onSecondaryActionDescription: _,
                        onOptionsButton: () => {},
                        onOptionsActionDescription: null,
                      },
                  listStatusIndicator: u,
                });
              }),
            );
          });
        function A(e) {
          let { chat: t, onHold: n } = e;
          return s.createElement(
            l.Z,
            { className: h().PendingVoiceChatRequest },
            s.createElement(d.bP, {
              noActions: !0,
              friend: t.chat_partner,
              className: (0, c.A)(
                h().FriendVoiceChat,
                t.unread_message_count > 0 && "unreadFriend",
              ),
              context: { chat: t, chatContext: "friendslist" },
              avatarSize: "Large",
              statusPosition: "right",
            }),
            s.createElement(
              f.$n,
              {
                onClick: () => {
                  g.xm.VoiceStore.InitiateFriendChat(t.accountid_partner);
                },
              },
              n ? (0, m.we)("#Voice_Resume") : (0, m.we)("#Voice_Accept"),
            ),
            s.createElement(
              f.$n,
              {
                onClick: () => {
                  g.xm.VoiceStore.OnRejectOneOnOneVoiceChatForPartner(
                    t.accountid_partner,
                  );
                },
              },
              n ? (0, m.we)("#Voice_End") : (0, m.we)("#Voice_Decline"),
            ),
          );
        }
        function T(e) {
          let { vecPendingChats: t } = e;
          if (0 == t.length) return null;
          let n = !1;
          return (
            t.forEach((e) => {
              n ||
                (n = g.xm.VoiceStore.BSelfHadPreviouslyJoinedOneOnOneChat(
                  e?.accountid_partner,
                ));
            }),
            s.createElement(
              s.Fragment,
              null,
              s.createElement(
                "div",
                { className: (0, c.A)(h().Title, h().PendingVoiceChats) },
                n
                  ? (0, m.we)("#VoiceChat_CallOnHold")
                  : (0, m.we)("#VoiceChat_PendingRequests"),
              ),
              s.createElement(
                l.Z,
                { className: h().PendingVoiceChatsList },
                t.map((e) =>
                  s.createElement(A, { key: e.unique_id, chat: e, onHold: n }),
                ),
              ),
            )
          );
        }
        let M = class extends s.Component {
          m_BrowserContext;
          ref = s.createRef();
          constructor(e) {
            super(e);
          }
          componentDidMount() {
            this.m_BrowserContext = (0, y.wj)(this.ref.current);
          }
          OnInputGainChanged(e) {
            this.props.chats.VoiceChat.IsMicMuted() &&
              this.props.chats.VoiceChat.ToggleMicMuting(),
              this.props.chats.VoiceChat.SetVoiceInputGain(
                this.props.chats.VoiceChat.ConvertSliderToGainValue(
                  e,
                  v.F$.k_MaxInputOutputGainValue,
                ),
              );
          }
          OnOutputGainChanged(e) {
            this.props.chats.VoiceChat.IsOutputMuted() &&
              this.props.chats.VoiceChat.ToggleOutputMuting(),
              this.props.chats.VoiceChat.SetVoiceOutputGain(
                this.props.chats.VoiceChat.ConvertSliderToGainValue(
                  e,
                  v.F$.k_MaxInputOutputGainValue,
                ),
              );
          }
          render() {
            let e = this.props.chats.GetActiveVoiceChat();
            const t = e instanceof r.s ? e : void 0,
              n = e instanceof o.d ? e : void 0,
              i = this.props.chats.FriendChatStore.GetAllChats().filter((e) => {
                let n = g.xm.VoiceStore.BPartnerHasRequestedAndIsInOneOnOneChat(
                  e.accountid_partner,
                );
                return (
                  t?.accountid_partner == e.accountid_partner && (n = !1), n
                );
              });
            if (!this.props.chats.VoiceChat.IsAnyVoiceActive() || !e)
              return 0 != i.length
                ? s.createElement(T, { vecPendingChats: i })
                : s.createElement(
                    "div",
                    { className: h().Title },
                    (0, m.we)("#VoiceChat_NoneActive"),
                  );
            const a = t?.GetMember(t.accountid_partner);
            let u;
            t?.unread_message_count > 0 &&
              (u = s.createElement(
                "div",
                { className: "FriendMessageCount" },
                t.unread_message_count,
              ));
            const C = () => {
                SteamClient.URL.ExecuteSteamURL("steam://open/settings/audio"),
                  window.parent.postMessage(
                    { message: "CloseSideMenus" },
                    "https://steamloopback.host",
                  );
              },
              S = this.props.chats.VoiceChat.IsOutputMuted()
                ? 0
                : this.props.chats.VoiceChat.ConvertGainValueToSliderValue(
                    this.props.chats.VoiceChat.GetVoiceOutputGain(),
                    v.F$.k_MaxInputOutputGainValue,
                  ),
              b = this.props.chats.VoiceChat.IsMicMuted()
                ? 0
                : this.props.chats.VoiceChat.ConvertGainValueToSliderValue(
                    this.props.chats.VoiceChat.GetVoiceInputGain(),
                    v.F$.k_MaxInputOutputGainValue,
                  ),
              I = this.props.chats.VoiceChat.GetVoiceInputGain() > 0,
              w = this.props.chats.VoiceChat.GetVoiceOutputGain() > 0,
              y = "#ffaa17",
              E = (e) => {
                if (!e) return "";
                const t = Math.round(20 * Math.log10(e)),
                  n = t < 0 ? t.toString() : "+" + t.toString();
                return (0, m.we)("#VoiceChat_AudioLevelDb", n);
              };
            return s.createElement(
              s.Fragment,
              null,
              s.createElement(T, { vecPendingChats: i }),
              s.createElement(
                "div",
                { ref: this.ref, className: h().Title },
                (0, m.we)("#VoiceChat_InVoiceChat"),
              ),
              s.createElement(
                "div",
                { className: h().VoiceChatList },
                s.createElement(
                  l.Z,
                  {
                    className: (0, c.A)(
                      h().FriendVoiceChatSliderContainer,
                      0 == b && "MicMuted",
                    ),
                    onOKActionDescription: (0, m.we)(
                      "#VoiceChat_AdjustMicVolume",
                    ),
                    onSecondaryButton: I
                      ? () => this.props.chats.VoiceChat.ToggleMicMuting()
                      : void 0,
                    onSecondaryActionDescription: I
                      ? this.props.chats.VoiceChat.IsMicMuted()
                        ? (0, m.we)("#VoiceChat_UnmuteMic_Deck")
                        : (0, m.we)("#VoiceChat_MuteMic_Deck")
                      : void 0,
                    onMenuButton: C,
                    onMenuActionDescription: (0, m.we)(
                      "#VoiceChat_GoToAudioSettings",
                    ),
                  },
                  s.createElement(f.d3, {
                    layout: "inline",
                    min: 0,
                    max: 100,
                    step: 10,
                    value: b,
                    onChange: this.OnInputGainChanged,
                    icon: s.createElement(p.EQ9, {
                      off: 0 == b,
                      onClick: () =>
                        this.props.chats.VoiceChat.ToggleMicMuting(),
                    }),
                    className: h().SliderPadding,
                    resetValue: 50,
                    resetValueAppearance: {
                      trackForegroundColor: y,
                      side: "right",
                    },
                    showValue: !0,
                    renderValue: (e) =>
                      E(
                        this.props.chats.VoiceChat.ConvertSliderToGainValue(
                          e,
                          v.F$.k_MaxInputOutputGainValue,
                        ),
                      ),
                  }),
                ),
                s.createElement(
                  l.Z,
                  {
                    className: h().FriendVoiceChatSliderContainer,
                    onOKActionDescription: (0, m.we)(
                      "#VoiceChat_AdjustVoiceVolume",
                    ),
                    onSecondaryButton: w
                      ? () => this.props.chats.VoiceChat.ToggleOutputMuting()
                      : void 0,
                    onSecondaryActionDescription: w
                      ? this.props.chats.VoiceChat.IsOutputMuted()
                        ? (0, m.we)("#VoiceChat_UnmuteVoice_Deck")
                        : (0, m.we)("#VoiceChat_MuteVoice_Deck")
                      : void 0,
                    onMenuButton: C,
                    onMenuActionDescription: (0, m.we)(
                      "#VoiceChat_GoToAudioSettings",
                    ),
                  },
                  s.createElement(f.d3, {
                    layout: "inline",
                    min: 0,
                    max: 100,
                    step: 10,
                    value: S,
                    onChange: this.OnOutputGainChanged,
                    icon: s.createElement(p.LeN, {
                      off: 0 == S,
                      onClick: () =>
                        this.props.chats.VoiceChat.ToggleOutputMuting(),
                    }),
                    className: h().SliderPadding,
                    resetValue: 50,
                    resetValueAppearance: {
                      trackForegroundColor: y,
                      side: "right",
                    },
                    showValue: !0,
                    renderValue: (e) =>
                      E(
                        this.props.chats.VoiceChat.ConvertSliderToGainValue(
                          e,
                          v.F$.k_MaxInputOutputGainValue,
                        ),
                      ),
                  }),
                ),
                t &&
                  s.createElement(
                    l.Z,
                    {
                      className: (0, c.A)(
                        h().FriendVoiceChatContainer,
                        "FriendVoiceChatContainer",
                      ),
                    },
                    s.createElement(d.bP, {
                      friend: a,
                      className: (0, c.A)(
                        h().FriendVoiceChat,
                        t.unread_message_count > 0 && "unreadFriend",
                      ),
                      context: { chat: t, chatContext: "friendslist" },
                      avatarSize: "Medium",
                      statusPosition: "right",
                      listStatusIndicator: u,
                    }),
                    s.createElement(
                      l.Z,
                      {
                        focusable: !0,
                        className: h().LeaveVoiceChat,
                        onActivate: () =>
                          this.props.chats.VoiceChat.OnUserEndVoiceChat(),
                      },
                      s.createElement(p.ETd, null),
                      (0, m.we)("#VoiceChat_Leave"),
                    ),
                  ),
                n &&
                  s.createElement(
                    l.Z,
                    { className: h().GroupVoiceChatContainer },
                    s.createElement(
                      l.Z,
                      {
                        focusable: !0,
                        className: h().GroupContainer,
                        onOKButton: () => {
                          g.xm.UIStore.ShowAndOrActivateChatRoomGroup(
                            this.m_BrowserContext,
                            n.GetGroup(),
                            !0,
                          );
                        },
                        onOKActionDescription: (0, m.we)(
                          "#ChatRoom_Invite_Accept_Inviter",
                        ),
                      },
                      s.createElement(_.I, { group: n.GetGroup(), small: !0 }),
                      s.createElement(
                        "div",
                        { className: h().GroupTitle },
                        n.GetGroup().name,
                      ),
                    ),
                    s.createElement(D, {
                      context: this.m_BrowserContext,
                      chatRoom: n,
                    }),
                    s.createElement(
                      l.Z,
                      {
                        focusable: !0,
                        className: h().LeaveVoiceChat,
                        onActivate: () =>
                          this.props.chats.VoiceChat.OnUserEndVoiceChat(),
                      },
                      s.createElement(p.ETd, null),
                      (0, m.we)("#VoiceChat_Leave"),
                    ),
                  ),
              ),
            );
          }
        };
        (0, i.Cg)([S.oI], M.prototype, "OnInputGainChanged", null),
          (0, i.Cg)([S.oI], M.prototype, "OnOutputGainChanged", null),
          (M = (0, i.Cg)([a.PA], M));
      },
      77842: (e, t, n) => {
        "use strict";
        n.d(t, { D: () => Ne });
        var i = n(34629),
          o = n(63696),
          r = n(82924),
          a = n(89193),
          s = n(41230),
          l = n(8805),
          c = n(67520),
          m = n(17070),
          d = n(58743),
          u = n(58825),
          h = n(32245),
          p = n(81734),
          _ = n(56132),
          g = n(74002),
          C = n(42937),
          f = n(51802),
          S = n(60853),
          v = n(50622),
          b = n(63689),
          I = n(69074),
          w = n(91466),
          y = n(78116),
          E = n(92089),
          D = n(93715),
          A = n(99862),
          T = n(94786),
          M = n(57382);
        var R = n(77171),
          k = n(94712),
          L = n.n(k),
          G = n(63887),
          F = n(78325),
          P = n(90095),
          B = n(77889),
          x = n(70042),
          O = n(94762),
          N = n(61632),
          V = n(31594),
          U = n(68628),
          H = n(75699);
        const W = (0, s.PA)((e) => {
          const { msg: t, chat: n } = e,
            { showPicker: i } = Q(n, t);
          if (0 === t.reactions.length) return null;
          return o.createElement(
            "div",
            { className: U.MessageReactions },
            t.reactions.map((e) =>
              o.createElement(z, {
                key: e.strReaction,
                chat: n,
                msg: t,
                reaction: e,
                onClick: () =>
                  ((e) =>
                    n.UpdateMessageReaction(
                      t,
                      e.eReactionType,
                      e.strReaction,
                      !e.bUserReacted,
                    ))(e),
              }),
            ),
            o.createElement(X, { className: U.OpenPickerButton, onClick: i }),
          );
        });
        const z = (0, s.PA)((e) => {
          const {
              onClick: t,
              reaction: { bUserReacted: n, cReactors: i },
              chat: r,
              msg: a,
            } = e,
            [s, l] = (function (e = 400) {
              const [t, n] = (0, o.useState)(!1),
                i = (0, o.useRef)();
              return (
                (0, o.useEffect)(() => () => clearTimeout(i.current), []),
                [
                  t,
                  (o) => {
                    o && !t && void 0 === i.current
                      ? (i.current = window.setTimeout(() => {
                          (i.current = void 0), n(!0);
                        }, e))
                      : o ||
                        (window.clearTimeout(i.current),
                        (i.current = void 0),
                        t && n(o));
                  },
                ]
              );
            })(),
            c = (0, o.useRef)(),
            m = { borderColor: n ? "#8D8E94" : "#1B1C20" };
          return o.createElement(
            "div",
            {
              onClick: t,
              style: m,
              className: U.MessageReaction,
              onMouseEnter: () => l(!0),
              onMouseLeave: () => l(!1),
              ref: c,
            },
            o.createElement(j, { reaction: e.reaction }),
            o.createElement("div", { className: U.ReactionCount }, i),
            s &&
              o.createElement(Z, {
                target: c.current,
                reaction: e.reaction,
                chat: r,
                msg: a,
              }),
          );
        });
        function j(e) {
          switch (e.reaction.eReactionType) {
            case 1:
              return o.createElement(q, { ...e });
            case 2:
              return o.createElement(K, { ...e });
            default:
              return (
                console.error(
                  `Unknown message reaction type: ${e.reaction.eReactionType}`,
                ),
                null
              );
          }
        }
        function q(e) {
          const { reaction: t, large: n } = e;
          return o.createElement("img", {
            className: (0, R.A)(U.EmoticonReaction, n && U.Large),
            src: x.p.GetEmoticonURL(t.strReaction, e.large),
          });
        }
        function K(e) {
          const {
              reaction: { strReaction: t },
              large: n,
            } = e,
            i = (0, H.G)(y.TS.COMMUNITY_CDN_URL, t);
          return o.createElement("img", {
            className: (0, R.A)(U.StickerReaction, n && U.Large),
            src: i,
          });
        }
        const Z = (0, s.PA)((e) => {
          const { target: t, reaction: n, chat: i, msg: r } = e,
            { strReaction: a, cReactors: s } = n,
            l = i.GetMessageReactionReactors(r, n, 3);
          let c = (function (e, t, n) {
            const i = d.xm.FriendStore.self;
            if (0 === t.length)
              return 1 === n
                ? (0, g.PP)("#MessageReaction_DescriptionCountOnly", e)
                : (0, g.PP)(
                    "#MessageReaction_DescriptionCountOnly_Plural",
                    n,
                    e,
                  );
            const r = t.filter((e) => e !== i.accountid),
              a = r.length != t.length;
            return t.length < n
              ? t.length >= 2
                ? (0, g.PP)(
                    "#MessageReaction_DescriptionMany" + (a ? "You" : ""),
                    r
                      .slice(0, a ? 1 : 2)
                      .map((e) =>
                        o.createElement(Y, { key: e.toString(), accountid: e }),
                      ),
                    n - 2,
                    e,
                  )
                : a
                  ? (0, g.PP)(
                      "#MessageReaction_DescriptionYouAndCount" +
                        (n - 1 == 1 ? "" : "_Plural"),
                      n - 1,
                      e,
                    )
                  : 1 === n
                    ? (0, g.PP)("#MessageReaction_DescriptionCountOnly", e)
                    : (0, g.PP)(
                        "#MessageReaction_DescriptionCountOnly_Plural",
                        n,
                        e,
                      )
              : (0, g.PP)(
                  `#MessageReaction_Description${n}${a ? "You" : ""}`,
                  ...r.map((e) =>
                    o.createElement(Y, { key: e.toString(), accountid: e }),
                  ),
                  e,
                );
          })(o.createElement("span", { className: U.ReactionName }, a), l, s);
          return (0, F.createPortal)(
            o.createElement(
              B.g,
              { direction: "top", target: t, className: U.ReactionHover },
              o.createElement(j, { reaction: n, large: !0 }),
              o.createElement("div", { className: U.HoverDescription }, c),
            ),
            t.ownerDocument.body,
          );
        });
        function Q(e, t) {
          const [n, i] = (0, o.useState)(null);
          return {
            bOpen: !!n,
            showPicker: (r) => {
              if (n) return;
              const a = {
                  bOverlapHorizontal: !0,
                  strClassName: U.ManageAppFiltersPopupContextMenu,
                },
                s = (0, O.lX)(
                  o.createElement($, {
                    chat: e,
                    msg: t,
                    onRequestClose: () => s && s.Hide(),
                  }),
                  r,
                  a,
                );
              s.SetOnHideCallback(() => i(null)), i(s);
            },
          };
        }
        function $(e) {
          const { msg: t, chat: n, onRequestClose: i } = e,
            r = (e, o) => {
              const r = 1 == e ? `:${o}:` : o,
                a = t.reactions.find((e) => e.strReaction === r),
                s = !a || !a.bUserReacted;
              n.UpdateMessageReaction(t, e, r, s), i();
            };
          return o.createElement(N.X6, {
            emoticonHoverStore: V.s,
            emoticonStore: d.xm.ChatStore.EmoticonStore,
            onEmoticonSelected: (e) => r(1, e),
            onStickerSelected: (e) => r(2, e),
            strFlairGroupID: "",
          });
        }
        function X(e) {
          const { className: t, ...n } = e;
          return o.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              className: (0, R.A)(t, U.AddReactionIcon),
              ...n,
            },
            o.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M18 3C15.0333 3 12.1332 3.87973 9.66645 5.52796C7.19972 7.17618 5.27713 9.51886 4.14181 12.2597C3.0065 15.0006 2.70945 18.0166 3.28823 20.9264C3.86701 23.8361 5.29562 26.5088 7.3934 28.6066C9.49119 30.7044 12.1639 32.133 15.0737 32.7118C17.9834 33.2906 20.9994 32.9935 23.7403 31.8582C26.4811 30.7229 28.8238 28.8003 30.472 26.3336C32.1203 23.8668 33 20.9667 33 18C33 16.0302 32.612 14.0796 31.8582 12.2597C31.1044 10.4399 29.9995 8.78628 28.6066 7.3934C27.2137 6.00052 25.5601 4.89563 23.7403 4.14181C21.9204 3.38799 19.9698 3 18 3ZM9.00001 15C9.00001 14.4067 9.17595 13.8266 9.5056 13.3333C9.83524 12.8399 10.3038 12.4554 10.852 12.2284C11.4001 12.0013 12.0033 11.9419 12.5853 12.0576C13.1672 12.1734 13.7018 12.4591 14.1213 12.8787C14.5409 13.2982 14.8266 13.8328 14.9424 14.4147C15.0581 14.9967 14.9987 15.5999 14.7716 16.1481C14.5446 16.6962 14.1601 17.1648 13.6667 17.4944C13.1734 17.8241 12.5934 18 12 18C11.2044 18 10.4413 17.6839 9.87869 17.1213C9.31608 16.5587 9.00001 15.7956 9.00001 15ZM24 18C23.4067 18 22.8266 17.8241 22.3333 17.4944C21.8399 17.1648 21.4554 16.6962 21.2284 16.1481C21.0013 15.5999 20.9419 14.9967 21.0576 14.4147C21.1734 13.8328 21.4591 13.2982 21.8787 12.8787C22.2982 12.4591 22.8328 12.1734 23.4147 12.0576C23.9967 11.9419 24.5999 12.0013 25.1481 12.2284C25.6962 12.4554 26.1648 12.8399 26.4944 13.3333C26.8241 13.8266 27 14.4067 27 15C27 15.7956 26.6839 16.5587 26.1213 17.1213C25.5587 17.6839 24.7957 18 24 18ZM26.3149 23.6788C26.7672 22.8295 27 21.9193 27 21H18H9C9 21.9193 9.23279 22.8295 9.68508 23.6788C10.1374 24.5281 10.8003 25.2997 11.636 25.9497C12.4718 26.5998 13.4639 27.1154 14.5558 27.4672C15.6478 27.8189 16.8181 28 18 28C19.1819 28 20.3522 27.8189 21.4442 27.4672C22.5361 27.1154 23.5282 26.5998 24.364 25.9497C25.1997 25.2997 25.8626 24.5281 26.3149 23.6788Z",
            }),
          );
        }
        function Y(e) {
          const t = (0, P.q3)(
            () => d.xm.FriendStore.GetPlayer(e.accountid).display_name,
          );
          return o.createElement("span", { className: U.ReactorName }, t);
        }
        var J = n(25698),
          ee = n(27816),
          te = n(34879),
          ne = n(78919),
          ie = n(69168);
        function oe(e) {
          const { reason: t } = e;
          let n;
          return (
            (n =
              2 == t
                ? (0, g.we)("#Friend_Chat_CommunityBanned")
                : (0, g.we)("#Friend_Chat_Blocked")),
            o.createElement(
              "div",
              { className: "msg" },
              o.createElement(
                "div",
                { className: "msgText MessageFromBlockedUser" },
                n,
              ),
            )
          );
        }
        let re = (0, s.PA)((e) =>
            o.createElement(
              A.Rg,
              { friend: e.player, context: e.context },
              o.createElement("span", null, e.player.display_name),
            ),
          ),
          ae = class extends o.Component {
            render() {
              let e = this.props.messages,
                t = this.props.friendRenderContext;
              if (0 == e.length) return null;
              let n = [],
                i = [],
                r = !0;
              for (let a of e) {
                if (-1 != i.indexOf(a.unServerMsgParamAccountID)) continue;
                n.length > 0 && n.push(", ");
                let e = d.xm.FriendStore.GetPlayer(a.unServerMsgParamAccountID);
                n.push(o.createElement(re, { context: t, player: e })),
                  i.push(a.unServerMsgParamAccountID),
                  e.is_ready || (e.LoadIfNecessary(), (r = !1));
              }
              let a = d.xm.FriendStore.GetPlayer(e[0].unAccountID);
              a.is_ready || (a.LoadIfNecessary(), (r = !1));
              let s = o.createElement(re, { context: t, player: a }),
                l = "";
              if (n.length > 1) {
                let e = o.createElement(o.Fragment, null, ...n);
                l = (0, g.PP)("#ChatRoom_ServerMessage_Invited_Multiple", e, s);
              } else l = (0, g.PP)("#ChatRoom_ServerMessage_Invited", n[0], s);
              return o.createElement(
                T.xh,
                { style: "server" },
                o.createElement(
                  "div",
                  { className: "msg serverMsg" },
                  o.createElement("div", { className: "msgText" }, r ? l : " "),
                ),
              );
            }
          };
        ae = (0, i.Cg)([s.PA], ae);
        let se = class extends o.Component {
          render() {
            let e = this.props.messages,
              t = this.props.friendRenderContext;
            if (0 == e.length) return null;
            let n = [],
              i = [],
              r = !0;
            for (let a of e) {
              if (-1 != i.indexOf(a.unServerMsgParamAccountID)) continue;
              n.length > 0 &&
                n.push((0, g.we)("#ChatRoom_ServerMessageMultiple_Separator"));
              let e = d.xm.FriendStore.GetPlayer(a.unServerMsgParamAccountID);
              n.push(o.createElement(re, { context: t, player: e })),
                i.push(a.unServerMsgParamAccountID),
                e.is_ready || (e.LoadIfNecessary(), (r = !1));
            }
            let a = "";
            if (n.length > 1) {
              let e = n.pop();
              2 == n.length && n.pop();
              let t = o.createElement(o.Fragment, null, ...n);
              a = (0, g.PP)(this.props.tokenPrefix + "_Multiple", t, e);
            } else a = (0, g.PP)(this.props.tokenPrefix, n[0]);
            return o.createElement(le, null, r ? a : " ");
          }
        };
        se = (0, i.Cg)([s.PA], se);
        const le = ({ children: e }) =>
          o.createElement(
            T.xh,
            { style: "server" },
            o.createElement(
              "div",
              { className: "msg serverMsg" },
              o.createElement("div", { className: "msgText" }, e),
            ),
          );
        async function ce(e, t, n) {
          if (0 == n.length) return;
          const i = n.length > 1;
          let o = n[0].unAccountID,
            r = d.xm.FriendStore.GetPlayer(o).primary_display_name,
            a = (0, g.we)(
              i
                ? "#Chat_Actions_DeleteChatMessages"
                : "#Chat_Actions_DeleteChatMessage",
            ),
            s = (0, g.we)(
              i
                ? "#Chat_Actions_DeleteChatMessages_Confirm"
                : "#Chat_Actions_DeleteChatMessage_Confirm",
              r,
            ),
            l = (0, g.we)("#Chat_Actions_Delete");
          if (!(await (0, J.WQ)(e, a, s, l))) return;
          let c = await t.DeleteChatMessages(n);
          if (1 == c) return;
          let m =
            15 == c
              ? "#Chat_Actions_DeleteChatMessage_FailAccess"
              : "#Chat_Actions_DeleteChatMessage_Fail";
          (s = (0, g.we)(m, r)), (0, J.Ic)(e, a, s);
        }
        const me = (0, s.PA)((e) => {
            const {
                msg: t,
                speakerWidth: n,
                chatView: i,
                onUpdate: r,
                children: a,
                extraClassName: s,
              } = e,
              l = (0, y.Qn)(),
              c = (0, o.useRef)(0),
              m = c.current,
              [u, h] = o.useState(!1),
              _ = (0, o.useRef)(),
              C = o.useRef(),
              { showPicker: D } = Q(i.chat, t),
              A = (n, i) => {
                let r,
                  a = e.msg.unAccountID;
                e.chatView.chat instanceof f.d && (r = e.chatView.chat);
                const s = [],
                  l = (0, v.uX)(n),
                  c = l.getSelection(),
                  m = c && c.rangeCount > 0 && c.toString().length > 0;
                let d;
                (d =
                  document.queryCommandEnabled("copy") || m
                    ? () => {
                        l.document.execCommand("copy");
                      }
                    : () => (0, T.pM)(_.current)),
                  s.push(
                    o.createElement(
                      ee.kt,
                      { key: "copy", onSelected: d },
                      (0, g.we)("#ContextMenu_Copy"),
                    ),
                  ),
                  s.push(
                    o.createElement(
                      ee.kt,
                      {
                        key: "select",
                        onSelected: () =>
                          l.getSelection().selectAllChildren(_.current),
                      },
                      (0, g.we)("#Chat_Actions_Select_Message"),
                    ),
                  ),
                  s.push(
                    o.createElement(
                      ee.Vs,
                      { key: "react", label: (0, g.we)("#Chat_Actions_React") },
                      o.createElement($, {
                        chat: k,
                        msg: t,
                        onRequestClose: () => h && h.Hide(),
                      }),
                    ),
                  ),
                  r &&
                    r.BCanDeleteMemberMessages(a) &&
                    s.push(
                      o.createElement(
                        ee.kt,
                        { key: "delete", onSelected: () => ce(l, r, [e.msg]) },
                        (0, g.we)("#Chat_Actions_Delete"),
                      ),
                    );
                let u = o.createElement(ee.tz, null, " ", s, " ");
                const h = (0, O.lX)(u, n, i);
                return h;
              };
            let M = (e) =>
              A(e, { bOverlapHorizontal: !0, bOverlapVertical: !1 });
            const k = i.chat;
            let G = t.strMessage;
            const F = e.hideTimeStamp || i.IsChatRoom(),
              P = !F && d.xm.FriendStore.GetPlayer(t.unAccountID),
              B = (0, b.aQ)(G);
            let x, N;
            if (t.eErrorSending != S.Bm.None)
              switch (t.eErrorSending) {
                case S.Bm.NotFriends:
                  (N = "ChatMessageErrorSending"),
                    (x = o.createElement(
                      "div",
                      { className: "ChatMessageErrorSendingAlert" },
                      (0, g.we)("#Chat_ErrorSending_NotFriends"),
                    ));
                  break;
                case S.Bm.RateLimitExceeded:
                  (N = "ChatMessageErrorSending"),
                    (x = o.createElement(
                      "div",
                      { className: "ChatMessageErrorSendingAlert" },
                      (0, g.we)("#Chat_ErrorSending_RateLimitExceeded"),
                    ));
                  break;
                case S.Bm.NoChatPermissionInGroup:
                  (N = "ChatMessageErrorSendingPermissionDenied"),
                    (x = o.createElement(
                      "div",
                      { className: "ChatMessageErrorPermissionDeniedAlert" },
                      o.createElement(p.c_I, null),
                      (0, g.we)("#Chat_ErrorPermissionDenied"),
                    ));
                  break;
                case S.Bm.Generic:
                default:
                  (N = "ChatMessageErrorSending"),
                    (x = o.createElement(
                      "div",
                      { className: "ChatMessageErrorSendingAlert" },
                      (0, g.we)("#Chat_ErrorSending"),
                    ));
              }
            const V = (0, R.A)(
                "msg",
                L().MsgWithAddons,
                s,
                N,
                {
                  isCurrentUser: k.self.accountid === t.unAccountID,
                  HasTimeStamp: !F,
                  EmojiOnly: b.tV(G),
                },
                u && "RevealSpoiler",
              ),
              U = { width: n ? `${n}px` : void 0 },
              H = {
                chat: k,
                unAccountIDSender: t.unAccountID,
                rtTimestamp: t.rtTimestamp,
                key: t.UniqueKey(),
                onLoad: r,
                bUseLargeEmoticons: (0, b.aQ)(G),
                bAnimate: t.eAnimationState === S.oO.Animating,
                onAnimationStart: () => c.current++,
                onAnimationEnd: () => {
                  m && c.current--, c.current || e.msg.OnAnimationEnd();
                },
              };
            G = k.ChatStore.TextFilterStore.FilterText(t.unAccountID, G);
            const z = G.includes("[spoiler]"),
              j =
                a ||
                o.createElement(E.wr, {
                  bbcode: G,
                  context: H,
                  parser: k.GetBBCodeParser(),
                }),
              q = (0, R.A)("msgText", {
                MsgNoUserContent: !t.HasUserContent(),
                EmoticonOnly: B,
              });
            let K,
              Z = {
                onMenuButton: (e) => {
                  M(e);
                },
                onMenuActionDescription: (0, g.we)("#Chat_MessageContextMenu"),
              };
            return (
              l ||
                (Z = {
                  ...Z,
                  onOKButton: (e) => D(e),
                  onOKActionDescription: (0, g.we)("#Chat_Actions_React"),
                }),
              e.chatView.chat instanceof f.d && (K = e.chatView.chat),
              K &&
                K.BCanDeleteMemberMessages(e.msg.unAccountID) &&
                ((Z.onSecondaryButton = (t) => {
                  ce((0, v.uX)(t), K, [e.msg]);
                }),
                (Z.onSecondaryActionDescription = (0, g.we)(
                  "#Chat_Actions_Delete",
                ))),
              o.createElement(
                I.Z,
                {
                  className: V,
                  navRef: C,
                  focusableIfNoChildren: !0,
                  onContextMenu: A,
                  onSecondaryButton: z ? () => h(!u) : void 0,
                  onSecondaryActionDescription: z
                    ? (0, g.we)(u ? "#Hide_Spoiler" : "#Reveal_Spoiler")
                    : void 0,
                  ...Z,
                },
                !F &&
                  o.createElement(
                    pe,
                    { className: "FriendChatTimeStamp", friend: P, style: U },
                    o.createElement(w.EO, {
                      rtime: t.rtTimestamp,
                      bTimeOnly: !0,
                    }),
                  ),
                x,
                o.createElement(
                  T.xh,
                  null,
                  o.createElement("div", { className: q, ref: _ }, j),
                ),
                o.createElement(W, { msg: t, chat: k }),
                o.createElement(de, { msg: t, chat: k, onShowContextMenu: M }),
              )
            );
          }),
          de = (0, s.PA)((e) => {
            const { msg: t, chat: n } = e,
              { bOpen: i, showPicker: r } = Q(n, t),
              { bOpen: a, showContextMenu: s } = (function (e) {
                const [t, n] = (0, o.useState)(null),
                  i = (i) => {
                    if (t) return;
                    let o = e(i);
                    o.SetOnHideCallback(() => n(null)), n(o);
                  };
                return { bOpen: !!t, showContextMenu: i };
              })(e.onShowContextMenu);
            let l,
              c = i || a;
            n instanceof f.d && (l = n);
            let m = null;
            return (
              l &&
                l.BCanDeleteMemberMessages(t.unAccountID) &&
                (m = (t) => {
                  ce((0, v.uX)(t), l, [e.msg]);
                }),
              o.createElement(
                "div",
                { className: (0, R.A)(L().Addons, c && L().Open) },
                o.createElement(X, { className: L().Emoticon, onClick: r }),
                m &&
                  o.createElement(ue, { className: L().Emoticon, onClick: m }),
                o.createElement(he, {
                  className: L().Emoticon,
                  onShowContextMenu: s,
                }),
              )
            );
          });
        function ue(e) {
          const { className: t, onClick: n, ...i } = e;
          return o.createElement(
            "div",
            { className: t, onClick: n },
            o.createElement(p.PRY, null),
          );
        }
        function he(e) {
          const { className: t, ...n } = e;
          return o.createElement(
            "div",
            { className: t, onClick: e.onShowContextMenu },
            o.createElement(p.h28, null),
          );
        }
        let pe = (0, s.PA)((e) => {
          const t = e.friend.persona;
          let n = !1;
          t.m_broadcastAccountId && (n = !0);
          const i = (0, R.A)(
            e.className,
            (t.is_ingame ? "ingame" : t.is_online && "online") || "offline",
            { away: t.is_awayOrSnooze, watchingbroadcast: n },
          );
          return o.createElement(
            "div",
            { className: i, style: e.style },
            e.children,
          );
        });
        const _e = (e) => {
          const t = (0, ie.R7)(),
            n = (0, ne._k)(t.ownerWindow),
            i = !(0, te.u)(n, te.m);
          return o.createElement(ge, { bInOverlay: i, ...e });
        };
        let ge = class extends o.Component {
          GetChatRoomSpeakerClass(e) {
            let t = e.persona;
            return t.is_ingame
              ? L().SpeakerName_InGame
              : t.m_broadcastAccountId
                ? L().SpeakerName_WatchingBroadcast
                : t.is_online
                  ? L().SpeakerName_Online
                  : L().SpeakerName_Default;
          }
          render() {
            let e,
              t = this.props.friend,
              n = "",
              i = "";
            if (this.props.chatView.IsChatRoom()) {
              let i,
                r = this.props.chatView.chat;
              switch (
                (r.GetMember(t.accountid) &&
                  (i = r.GetGroup().GetMemberRank(t.accountid)),
                i)
              ) {
                default:
                  break;
                case 30:
                  n = "Moderator";
                  break;
                case 40:
                  n = "Officer";
                  break;
                case 50:
                  (n = "Owner"),
                    r.GetGroup().BIsClanChatRoom() ||
                      (e = o.createElement(
                        "div",
                        { className: "rankIcon rankOwner" },
                        o.createElement(p.OeC, null),
                      ));
              }
              r.GetGroup().BIsClanChatRoom() &&
                (i >= 40
                  ? (e = o.createElement(
                      "div",
                      { className: "rankIcon rankOwner" },
                      o.createElement("img", {
                        src:
                          y.TS.COMMUNITY_CDN_URL +
                          "public/images/skin_1/comment_modindicator_officer.png",
                      }),
                    ))
                  : i >= 30 &&
                    (e = o.createElement(
                      "div",
                      { className: "rankIcon rankOwner" },
                      o.createElement("img", {
                        src:
                          y.TS.COMMUNITY_CDN_URL +
                          "public/images/skin_1/comment_modindicator_moderator.png",
                      }),
                    )));
            } else n = "";
            i = "speakerName " + this.GetChatRoomSpeakerClass(t);
            let r = "avatar speakerAvatar",
              a = null,
              s = null;
            if (t.BLoadedEquippedItems()) {
              let e = t.GetEquippedProfileItems();
              e &&
                ((a = e.animated_avatar),
                (s = e.avatar_frame),
                s &&
                  s.image_small &&
                  s.image_small.length > 0 &&
                  (r += " hasAvatarFrame"));
            }
            let l =
                d.xm.SettingsStore.FriendsSettings.bAnimatedAvatars &&
                t.persona.is_online &&
                !this.props.bInOverlay,
              c = d.xm.GetServerRTime32() - this.props.msg.rtTimestamp < 60;
            return o.createElement(
              T.xh,
              {
                style: "speaker allow-embedded-newlines",
                text: [
                  `[${(0, M.j)(this.props.msg.rtTimestamp, { bIncludeWeekday: !1 })}]`,
                  `${t.primary_display_name}:`,
                ],
              },
              o.createElement(
                "div",
                {
                  ref: this.props.refFocus,
                  className:
                    "ChatSpeaker ChatRoomSpeaker SpeakerLineBreak" +
                    (t.accountid == this.props.chatView.chat.self.accountid
                      ? " isCurrentUser"
                      : ""),
                },
                o.createElement(
                  pe,
                  { friend: t, className: "speaker" },
                  o.createElement(
                    A.Rg,
                    { friend: t, context: this.props.friendRenderContext },
                    o.createElement(
                      "div",
                      { className: "speakerHoverArea " + n },
                      e,
                      o.createElement(G.xz, {
                        loopDuration: l && c ? "Medium" : "None",
                        className: r,
                        persona: t.persona,
                        animatedAvatar: a,
                        avatarFrame: s,
                        size: "Small",
                        bLimitProfileFrameAnimationTime: !l || !c,
                      }),
                      o.createElement("div", { className: "speakerStatus" }),
                      o.createElement(
                        "div",
                        { className: i },
                        t.primary_display_name,
                        !t.is_display_name_nickname &&
                          t.has_secondary_display_name &&
                          o.createElement(
                            "span",
                            { className: "playerNickname" },
                            " (",
                            t.secondary_display_name,
                            ")",
                          ),
                        t.is_display_name_nickname &&
                          o.createElement(
                            "span",
                            {
                              className: "playerNicknameBracket",
                              title: (0, g.we)("#isNickname"),
                            },
                            "*",
                          ),
                      ),
                    ),
                  ),
                  o.createElement(
                    "div",
                    { className: "speakerTimeStamp" },
                    o.createElement(w.EO, {
                      rtime: this.props.msg.rtTimestamp,
                      bTimeOnly: !1,
                    }),
                  ),
                ),
              ),
            );
          }
        };
        ge = (0, i.Cg)([s.PA], ge);
        let Ce = class extends o.Component {
          OnUpdate() {
            this.props.onUpdate(
              "ChatMessageSlashEmote " + this.props.msg.UniqueKey(),
            );
          }
          render() {
            let e = this.props.msg,
              t = this.props.chatView.chat,
              n = d.xm.FriendStore.GetPlayer(e.unAccountID);
            const i = e.strMessage.slice(e.strMessage.search(/\s/g) + 1),
              r = (0, R.A)(
                "speaker",
                n.persona.is_ingame
                  ? "ingame"
                  : n.persona.is_online
                    ? "online"
                    : "offline",
              ),
              a = {
                width: this.props.speakerWidth
                  ? `${this.props.speakerWidth}px`
                  : void 0,
              },
              s = (0, R.A)("msg", "ChatMsgSlashEmote", "ChatRoomSlashEmote", {
                isCurrentUser: t.self.accountid === e.unAccountID,
                ChatMessageErrorSending: e.eErrorSending != S.Bm.None,
              });
            return o.createElement(
              "div",
              { className: s },
              e.eErrorSending != S.Bm.None &&
                o.createElement(
                  "div",
                  { className: "ChatMessageErrorSendingAlert" },
                  (0, g.we)("#Chat_ErrorSending"),
                ),
              o.createElement(
                "div",
                {
                  className:
                    "SpeakerLineBreak" +
                    (e.unAccountID == t.self.accountid ? " isCurrentUser" : ""),
                },
                o.createElement(
                  "div",
                  { className: r },
                  o.createElement(
                    A.Rg,
                    { friend: n, context: { chat: t, chatContext: "message" } },
                    o.createElement(
                      T.xh,
                      {
                        style: "speaker allow-embedded-newlines",
                        text: [
                          `[${(0, M.j)(this.props.msg.rtTimestamp, { bIncludeWeekday: !1 })}]`,
                          `${n.display_name}:`,
                        ],
                      },
                      o.createElement(
                        "div",
                        { className: "speakerHoverArea" },
                        o.createElement("img", {
                          className: "avatar speakerAvatar",
                          src: n.persona.avatar_url,
                          onLoad: this.OnUpdate,
                        }),
                        o.createElement("div", { className: "speakerStatus" }),
                        o.createElement(
                          "div",
                          { className: "speakerName", style: a },
                          n.display_name,
                        ),
                      ),
                    ),
                  ),
                  o.createElement(
                    T.xh,
                    { style: "force-display append-innertext", text: "/me" },
                    o.createElement(
                      "div",
                      { className: "msgText" },
                      o.createElement(E.wr, {
                        bbcode: i,
                        context: {
                          chat: t,
                          unAccountIDSender: e.unAccountID,
                          rtTimestamp: e.rtTimestamp,
                          onUpdate: this.props.onUpdate,
                        },
                        parser: t.GetBBCodeParser(),
                      }),
                    ),
                  ),
                  o.createElement(
                    "div",
                    { className: "speakerTimeStamp" },
                    o.createElement(w.EO, {
                      rtime: e.rtTimestamp,
                      bTimeOnly: !1,
                    }),
                  ),
                ),
              ),
            );
          }
        };
        (0, i.Cg)([r.oI], Ce.prototype, "OnUpdate", null),
          (Ce = (0, i.Cg)([s.PA], Ce));
        let fe = class extends o.Component {
          render() {
            return o.createElement(
              me,
              { ...this.props, extraClassName: "ChatMessageDeleted" },
              o.createElement(
                "div",
                { className: "msgText" },
                o.createElement(
                  "span",
                  { className: "filteredURL bb_removedlink" },
                  (0, g.we)("#Chat_MessageDeleted"),
                ),
              ),
            );
          }
        };
        fe = (0, i.Cg)([s.PA], fe);
        let Se = class extends o.Component {
          render() {
            let e = this.props.msg,
              t = this.props.friendRenderContext;
            if (11 == e.eServerMsgType) {
              const n = {
                unAccountIDSender: 0,
                chat: t.chat,
                rtTimestamp: e.rtTimestamp,
                key: e.UniqueKey(),
                onLoad: void 0,
              };
              return o.createElement(
                le,
                null,
                o.createElement(E.wr, {
                  bbcode: this.props.msg.strServerMsgAppCustomLocalized,
                  context: n,
                  parser: t.chat.GetBBCodeParser(),
                }),
              );
            }
            {
              const n = (function (e) {
                  switch (e.eServerMsgType) {
                    case 1: {
                      let t = d.xm.FriendStore.GetPlayer(e.unAccountID);
                      return {
                        strToken: "#ChatRoom_ServerMessage_RenameChatRoom",
                        parts: [e.strServerMsgParam, t],
                      };
                    }
                    case 2:
                      return {
                        strToken: "#ChatRoom_ServerMessage_Joined",
                        parts: [
                          d.xm.FriendStore.GetPlayer(
                            e.unServerMsgParamAccountID,
                          ),
                        ],
                      };
                    case 3:
                      return {
                        strToken: "#ChatRoom_ServerMessage_Parted",
                        parts: [
                          d.xm.FriendStore.GetPlayer(
                            e.unServerMsgParamAccountID,
                          ),
                        ],
                      };
                    case 4: {
                      let t = d.xm.FriendStore.GetPlayer(e.unAccountID);
                      return {
                        strToken: "#ChatRoom_ServerMessage_Kicked",
                        parts: [
                          d.xm.FriendStore.GetPlayer(
                            e.unServerMsgParamAccountID,
                          ),
                          t,
                        ],
                      };
                    }
                    case 9: {
                      let t = d.xm.FriendStore.GetPlayer(e.unAccountID);
                      return e.strServerMsgParam.length
                        ? {
                            strToken:
                              "#ChatRoom_ServerMessage_ChatRoomTaglineChanged",
                            parts: [e.strServerMsgParam, t],
                          }
                        : {
                            strToken:
                              "#ChatRoom_ServerMessage_ChatRoomTaglineRemoved",
                            parts: [t],
                          };
                    }
                    case 10:
                      return {
                        strToken:
                          "#ChatRoom_ServerMessage_ChatRoomAvatarChanged",
                        parts: [d.xm.FriendStore.GetPlayer(e.unAccountID)],
                      };
                    case 5:
                      return {
                        strToken: "#ChatRoom_ServerMessage_Invited",
                        parts: [
                          d.xm.FriendStore.GetPlayer(
                            e.unServerMsgParamAccountID,
                          ),
                          d.xm.FriendStore.GetPlayer(e.unAccountID),
                        ],
                      };
                    default:
                      return {
                        strToken: "#ChatRoom_ServerMessage_Unhandled",
                        parts: [],
                      };
                  }
                })(e),
                i = n.parts.length
                  ? (function (e, t, ...n) {
                      let i = [];
                      for (let t of n)
                        t instanceof D.$c
                          ? i.push(
                              o.createElement(re, { context: e, player: t }),
                            )
                          : i.push(t);
                      return (0, g.PP)(t, ...i);
                    })(t, n.strToken, ...n.parts)
                  : (0, g.we)(n.strToken);
              return o.createElement(le, null, i);
            }
          }
        };
        Se = (0, i.Cg)([s.PA], Se);
        let ve = class extends o.Component {
          render() {
            let e = this.props.msg,
              t = this.props.friendRenderContext;
            const n = {
              unAccountIDSender: 0,
              chat: t.chat,
              rtTimestamp: e.rtTimestamp,
              key: e.UniqueKey(),
              onLoad: void 0,
            };
            return o.createElement(
              le,
              null,
              o.createElement(E.wr, {
                bbcode: e.strMessage,
                context: n,
                parser: t.chat.GetBBCodeParser(),
              }),
            );
          }
        };
        ve = (0, i.Cg)([s.PA], ve);
        let be = class extends o.Component {
          render() {
            return o.createElement(
              T.xh,
              { style: "invite", text: this.props.msg.strMessage },
              o.createElement(
                "div",
                { className: "msg" },
                o.createElement(
                  "div",
                  { className: "msg voiceChannelInvite" },
                  this.props.msg.strMessage,
                ),
                o.createElement("div", {
                  className: "msg voiceChannelInviteClear",
                }),
              ),
            );
          }
        };
        be = (0, i.Cg)([s.PA], be);
        var Ie = n(77765),
          we = n(7153);
        let ye = class extends o.Component {
          componentDidUpdate() {
            this.props.onUpdate(
              "ChatMessageBlocks " + this.props.chatView.GetUniqueID(),
            );
          }
          renderBlock(e) {
            const t = this.props,
              { chatView: n } = this.props,
              i = n.chat.chat_message_blocks,
              r = !n.IsChatRoom() && i.time_passes_index,
              a = n.IsChatRoom() ? n.chat.first_unread_msg_time : _.ME,
              s = i.message_blocks[e],
              l = 0 == e ? _.ME : i.message_blocks[e - 1].GetRTimeLastMessage();
            if (a && l <= a && s.GetRTimeLastMessage() > a) {
              let n,
                i = s;
              a > s.GetRTimeFirstMessage() &&
                (([n, i] = s.CreateVirtualSplitOnTimestamp(a)),
                (0, Ie.w)(n.messages.length, "No messages in prefix"));
              let l = a;
              return o.createElement(
                o.Fragment,
                { key: s.UniqueKey() },
                n &&
                  o.createElement(Ee, {
                    ...t,
                    block: n,
                    bIsInitialBlock: 0 === e,
                    bShowTimePasses: e === r,
                  }),
                o.createElement(Me, { rtTimestamp: l, bUnread: !0 }),
                i.messages.length > 0 &&
                  o.createElement(Ee, {
                    ...t,
                    block: i,
                    bIsInitialBlock: !1,
                    bShowTimePasses: !1,
                  }),
              );
            }
            return o.createElement(Ee, {
              ...t,
              key: s.UniqueKey(),
              block: s,
              bIsInitialBlock: 0 === e,
              bShowTimePasses: e === r,
            });
          }
          render() {
            this.props;
            const { chatView: e } = this.props;
            return e.chat.chat_message_blocks.message_blocks.map((e, t) =>
              this.renderBlock(t),
            );
          }
        };
        ye = (0, i.Cg)([s.PA], ye);
        let Ee = class extends o.Component {
          componentDidUpdate() {
            this.props.block.is_last_block &&
              this.props.onUpdate(
                "ChatMessageBlock " + this.props.block.UniqueKey(),
              );
          }
          render() {
            let e,
              t,
              {
                block: n,
                bIsInitialBlock: i,
                bShowTimePasses: r,
                ...a
              } = this.props,
              s = a.friendRenderContext,
              l = n.messages;
            if (
              (n.BIsInvite()
                ? (e = o.createElement(ae, {
                    messages: l,
                    friendRenderContext: s,
                  }))
                : n.BIsServerMsg()
                  ? (e = o.createElement(Re, {
                      block: n,
                      friendRenderContext: s,
                    }))
                  : n.BIsLocalMsg()
                    ? (e = o.createElement(ke, {
                        block: n,
                        friendRenderContext: s,
                      }))
                    : l.length &&
                      (e = o.createElement(Ae, {
                        ...a,
                        messages: l,
                        bLastMessageBlock: n.is_last_block,
                      })),
              n.is_last_block)
            ) {
              let e = d.xm.GetLocalMidnightInRTime32();
              n.GetRTimeMidnightBeforeBlock() != e &&
                (t = o.createElement(Me, { rtTimestamp: e }));
            } else
              n.GetRTimeMidnightBeforeBlock() !=
                n.GetRTimeMidnightBeforeNextBlock() &&
                (t = o.createElement(Me, {
                  rtTimestamp: n.GetRTimeMidnightBeforeNextBlock(),
                }));
            return o.createElement(
              o.Fragment,
              null,
              i && l.length > 0 && o.createElement(De, { msg: l[0] }),
              r &&
                o.createElement(Me, {
                  rtTimestamp: l[0].rtTimestamp,
                  bTimePassesLine: !0,
                }),
              e,
              t,
            );
          }
        };
        function De(e) {
          return e.msg.rtTimestamp < d.xm.GetLocalMidnightInRTime32()
            ? o.createElement(Me, { rtTimestamp: e.msg.rtTimestamp })
            : null;
        }
        Ee = (0, i.Cg)([s.PA], Ee);
        let Ae = class extends o.Component {
          m_element = o.createRef();
          m_refSpeaker = o.createRef();
          constructor(e) {
            super(e), (this.state = { bHoveringDelete: !1 });
          }
          OnHoverDelete(e) {
            this.setState({ bHoveringDelete: e });
          }
          CopyMessage() {
            (0, T.pM)(this.m_element.current);
          }
          SelectMessage(e) {
            e.getSelection().selectAllChildren(this.m_element.current);
          }
          OnMessageBlockContextMenu(e) {
            let t,
              n = this.props.messages[0].unAccountID;
            this.props.chatView.chat instanceof f.d &&
              (t = this.props.chatView.chat);
            const i = [],
              r = (0, v.uX)(e),
              a = r.getSelection(),
              s = a && a.rangeCount > 0 && a.toString().length > 0;
            let l;
            return (
              (l =
                document.queryCommandEnabled("copy") || s
                  ? () => {
                      r.document.execCommand("copy");
                    }
                  : this.CopyMessage),
              i.push(
                o.createElement(
                  ee.kt,
                  { key: "copy", onSelected: l },
                  (0, g.we)("#ContextMenu_Copy"),
                ),
              ),
              i.push(
                o.createElement(
                  ee.kt,
                  {
                    key: "select",
                    onSelected: () => {
                      this.SelectMessage(r);
                    },
                  },
                  (0, g.we)("#Chat_Actions_Select_Message"),
                ),
              ),
              t &&
                t.BCanDeleteMemberMessages(n) &&
                i.push(
                  o.createElement(
                    ee.kt,
                    {
                      key: "delete",
                      onSelected: () => {
                        ce(r, t, this.props.messages);
                      },
                    },
                    (0, g.we)("#Chat_Actions_Delete"),
                  ),
                ),
              i.length ? (0, O.lX)(o.createElement(ee.tz, null, i), e) : null
            );
          }
          componentDidMount() {
            const { chatView: e } = this.props,
              t = this.props.messages[0].unAccountID;
            e instanceof C.CF &&
              e.virtualizer &&
              e.virtualizer.SubscribeToPersona(t);
          }
          componentDidUpdate(e) {
            const { chatView: t } = this.props;
            e.messages[0].unAccountID !== this.props.messages[0].unAccountID &&
              t instanceof C.CF &&
              t.virtualizer &&
              (t.virtualizer.UnsubscribeFromPersona(e.messages[0].unAccountID),
              t.virtualizer.SubscribeToPersona(
                this.props.messages[0].unAccountID,
              ));
          }
          componentWillUnmount() {
            const { chatView: e } = this.props;
            e instanceof C.CF &&
              e.virtualizer &&
              e.virtualizer.UnsubscribeFromPersona(
                this.props.messages[0].unAccountID,
              );
          }
          ScrollIntoViewHandler(e, t, n) {
            let i = this.m_refSpeaker.current;
            return !!i && (i.scrollIntoView(), !0);
          }
          render() {
            let e = !0,
              t = !1,
              n = this.props.bLastMessageBlock,
              i = this.props.messages[0].unAccountID,
              r = d.xm.FriendStore.GetPlayer(i),
              a = this.props.chatView.IsChatRoom()
                ? this.props.chatView.chat
                : null,
              s = "ChatMessageBlock",
              l = 0;
            a && r.is_blocked
              ? (l = 1)
              : a && r.persona.m_bCommunityBanned && (l = 2);
            let c = [];
            if (0 == l) {
              this.props.messages.length &&
                "/me" === this.props.messages[0].GetSlashCommand() &&
                (e = !1);
              let i = 0;
              for (let r = 0; r < this.props.messages.length; r++) {
                let s = this.props.messages[r],
                  l = !0;
                if (!a) {
                  let e = Math.floor(s.rtTimestamp / 60);
                  i && e != i
                    ? ((l = !1), (t = !0))
                    : n && t && r == this.props.messages.length - 1 && (l = !1),
                    (i = e);
                }
                let m = {
                  msg: s,
                  key: s.UniqueKey(),
                  chatView: this.props.chatView,
                  hideTimeStamp: l,
                  onUpdate: this.props.onUpdate,
                };
                s.eDeleteState != S.$F.Deleting &&
                  s.eDeleteState != S.$F.Deleted &&
                  ("/me" === s.GetSlashCommand()
                    ? c.push(o.createElement(Ce, { ...m }))
                    : s instanceof S.$G
                      ? ((e = !1), c.push(o.createElement(be, { ...m })))
                      : c.push(
                          o.createElement(me, {
                            ...m,
                            speakerWidth: this.props.speakerWidth,
                          }),
                        ));
              }
            } else
              c.push(o.createElement(oe, { reason: l, key: "blocked" })),
                (s += " ChatMessageBlock_BlockedSender");
            return (
              n &&
                ((s += " LastMessageBlock"),
                t && (s += " HasInternalTimeStamp")),
              1 != c.length || a || (s += " SingletonMsg"),
              0 == c.length
                ? null
                : o.createElement(
                    T.xh,
                    null,
                    o.createElement(
                      I.Z,
                      {
                        ref: this.m_element,
                        className: s,
                        onContextMenu: this.OnMessageBlockContextMenu,
                        scrollIntoViewWhenChildFocused: !0,
                        fnScrollIntoViewHandler: this.ScrollIntoViewHandler,
                        navEntryPreferPosition: we.iU.LAST,
                        "flow-children": "column",
                      },
                      e &&
                        o.createElement(_e, {
                          refFocus: this.m_refSpeaker,
                          friend: r,
                          chatView: this.props.chatView,
                          msg: this.props.messages[0],
                          friendRenderContext: this.props.friendRenderContext,
                          key: "speaker",
                          speakerWidth: this.props.speakerWidth,
                          onUpdate: this.props.onUpdate,
                        }),
                      false,
                      c,
                    ),
                  )
            );
          }
        };
        (0, i.Cg)([r.oI], Ae.prototype, "OnHoverDelete", null),
          (0, i.Cg)([r.oI], Ae.prototype, "CopyMessage", null),
          (0, i.Cg)([r.oI], Ae.prototype, "SelectMessage", null),
          (0, i.Cg)([r.oI], Ae.prototype, "OnMessageBlockContextMenu", null),
          (0, i.Cg)([r.oI], Ae.prototype, "ScrollIntoViewHandler", null),
          (Ae = (0, i.Cg)([s.PA], Ae));
        class Te extends o.Component {
          OnMouseEnter() {
            this.props.onHover(!0);
          }
          OnMouseLeave() {
            this.props.onHover(!1);
          }
          OnDeleteMessages(e) {
            ce((0, v.uX)(e), this.props.chatRoom, this.props.messages);
          }
          render() {
            return o.createElement(
              "div",
              {
                className: "ChatMessageBlockDelete",
                onMouseEnter: this.OnMouseEnter,
                onMouseLeave: this.OnMouseLeave,
                onClick: this.OnDeleteMessages,
                title: (0, g.we)("#Chat_Actions_Delete"),
              },
              o.createElement(p.lMJ, null),
            );
          }
        }
        (0, i.Cg)([r.oI], Te.prototype, "OnMouseEnter", null),
          (0, i.Cg)([r.oI], Te.prototype, "OnMouseLeave", null),
          (0, i.Cg)([r.oI], Te.prototype, "OnDeleteMessages", null);
        class Me extends o.Component {
          shouldComponentUpdate(e) {
            return (
              e.rtTimestamp !== this.props.rtTimestamp ||
              e.bUnread !== this.props.bUnread ||
              e.bTimePassesLine !== this.props.bTimePassesLine
            );
          }
          render() {
            let e,
              t = d.xm.RTime32ToDate(this.props.rtTimestamp),
              n = ["msg", "timeDivision"];
            if (this.props.bUnread) {
              let i = {
                weekday: "long",
                year: "numeric",
                month: "long",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
              };
              (e = (0, g.we)(
                "#ChatRoom_New_Messages",
                t.toLocaleDateString(g.pf.GetPreferredLocales(), i),
              )),
                n.push("new_messages");
            } else if (this.props.bTimePassesLine)
              (e = ""), n.push("time_passes");
            else {
              let n = {
                weekday: "long",
                year: "numeric",
                month: "long",
                day: "numeric",
              };
              e = t.toLocaleDateString(g.pf.GetPreferredLocales(), n);
            }
            return o.createElement(
              T.xh,
              { style: "timestamp", text: e },
              o.createElement(
                "div",
                { className: n.join(" ") },
                o.createElement("div", { className: "preHorizDivider" }),
                e,
                o.createElement("div", { className: "horizDivider" }),
              ),
            );
          }
        }
        const Re = (e) => {
            const { block: t, friendRenderContext: n } = e,
              i = t.messages.reduce((e, t) => {
                if (!e.length) return e.push([t]), e;
                const n = e[e.length - 1],
                  i = n[0],
                  o = Le(i),
                  r = Le(t);
                return o && r ? (n.push(t), e) : (e.push([t]), e);
              }, []);
            return o.createElement(
              o.Fragment,
              null,
              i.map((e) =>
                Le(e[0])
                  ? o.createElement(Ge, {
                      key: e[0].UniqueKey(),
                      messages: e,
                      friendRenderContext: n,
                    })
                  : e.map((e) =>
                      o.createElement(Se, {
                        msg: e,
                        key: e.UniqueKey(),
                        friendRenderContext: n,
                      }),
                    ),
              ),
            );
          },
          ke = (e) => {
            const { block: t, friendRenderContext: n } = e;
            return o.createElement(
              o.Fragment,
              null,
              t.messages.map((e) =>
                o.createElement(ve, {
                  msg: e,
                  key: e.UniqueKey(),
                  friendRenderContext: n,
                }),
              ),
            );
          },
          Le = (e) => 2 === e.eServerMsgType || 3 === e.eServerMsgType,
          Ge = (e) => {
            const { messages: t, friendRenderContext: n } = e,
              { rgLeavers: i, rgJoiners: r } = t.reduce(
                (e, t) => (
                  2 === t.eServerMsgType && e.rgJoiners.push(t.unAccountID),
                  3 === t.eServerMsgType && e.rgLeavers.push(t.unAccountID),
                  e
                ),
                { rgLeavers: [], rgJoiners: [] },
              );
            if (!i.length && !r.length) return null;
            let a;
            return (
              (a =
                0 === i.length
                  ? r.length > 2
                    ? (0, g.PP)(
                        "#ChatRoom_ServerMessage_Joined_Number",
                        o.createElement(Pe, { accountids: r }),
                      )
                    : 2 === r.length
                      ? (0, g.PP)(
                          "#ChatRoom_ServerMessage_Joined_Multiple",
                          o.createElement(Fe, { context: n, accountid: r[0] }),
                          o.createElement(Fe, { context: n, accountid: r[1] }),
                        )
                      : (0, g.PP)(
                          "#ChatRoom_ServerMessage_Joined",
                          o.createElement(Fe, { context: n, accountid: r[0] }),
                        )
                  : 0 === r.length
                    ? i.length > 2
                      ? (0, g.PP)(
                          "#ChatRoom_ServerMessage_Parted_Number",
                          o.createElement(Pe, { accountids: i }),
                        )
                      : 2 === i.length
                        ? (0, g.PP)(
                            "#ChatRoom_ServerMessage_Parted_Multiple",
                            o.createElement(Fe, {
                              context: n,
                              accountid: i[0],
                            }),
                            o.createElement(Fe, {
                              context: n,
                              accountid: i[1],
                            }),
                          )
                        : (0, g.PP)(
                            "#ChatRoom_ServerMessage_Parted",
                            o.createElement(Fe, {
                              context: n,
                              accountid: i[0],
                            }),
                          )
                    : 1 === i.length && 1 === r.length
                      ? (0, g.PP)(
                          "#ChatRoom_ServerMessage_SingleJoined_SingleParted",
                          o.createElement(Fe, { context: n, accountid: r[0] }),
                          o.createElement(Fe, { context: n, accountid: i[0] }),
                        )
                      : 1 === i.length
                        ? (0, g.PP)(
                            "#ChatRoom_ServerMessage_MultipleJoined_SingleParted",
                            o.createElement(Pe, { accountids: r }),
                            o.createElement(Fe, {
                              context: n,
                              accountid: i[0],
                            }),
                          )
                        : 1 === r.length
                          ? (0, g.PP)(
                              "#ChatRoom_ServerMessage_SingleJoined_MultipleParted",
                              o.createElement(Fe, {
                                context: n,
                                accountid: r[0],
                              }),
                              o.createElement(Pe, { accountids: i }),
                            )
                          : (0, g.PP)(
                              "#ChatRoom_ServerMessage_MultipleJoined_MultipleParted",
                              o.createElement(Pe, { accountids: r }),
                              o.createElement(Pe, { accountids: i }),
                            )),
              o.createElement(le, null, a)
            );
          },
          Fe = (0, s.PA)((e) => {
            const { context: t, accountid: n } = e,
              i = d.xm.FriendStore.GetPlayer(n);
            return o.createElement(
              A.Rg,
              { friend: i, context: t },
              o.createElement("span", null, i.display_name),
            );
          }),
          Pe = (0, s.PA)((e) => {
            const { accountids: t } = e,
              n = t.map((e) => d.xm.FriendStore.GetPlayer(e));
            return o.createElement(
              "span",
              { title: n.map((e) => e.display_name).join(", ") },
              n.length,
            );
          });
        var Be = n(11315),
          xe = n(54829),
          Oe = n(41491);
        let Ne = class extends o.Component {
          constructor(e) {
            super(e), (0, a.Gn)(this);
          }
          static contextType = m.QO;
          state = { chatSubscribed: null };
          m_window;
          m_elHistoryScroll;
          m_animation;
          LOG = new l.wd("ChatHistory", () => this.props.chatView.GetUniqueID())
            .Debug;
          m_bLoadHistoryInProgress = !1;
          m_bLoadingOperationInProgress = !1;
          m_bHasPendedLoadOlder = !1;
          m_nIgnoreScrollUpUntilTime = 0;
          GetScrollTop() {
            return (
              this.LOG(
                "scrollTop is",
                this.m_elHistoryScroll.scrollTop,
                "returning",
                Math.ceil(this.m_elHistoryScroll.scrollTop),
              ),
              Math.ceil(this.m_elHistoryScroll.scrollTop)
            );
          }
          GetScrollInfo() {
            if (this.m_elHistoryScroll) {
              const { scrollHeight: e, clientHeight: t } =
                this.m_elHistoryScroll;
              return {
                scrollTop: this.GetScrollTop(),
                scrollHeight: e,
                clientHeight: t,
              };
            }
            return { scrollTop: 0, scrollHeight: 0, clientHeight: 0 };
          }
          LogScrollInfo(e) {
            if (!l.fi.Get().IsDebugLogEnabled("ChatHistory")) return;
            const {
              scrollTop: t,
              scrollHeight: n,
              clientHeight: i,
            } = this.GetScrollInfo();
            let {
              lastScrollTop: o,
              lastScrollHeight: r,
              lastClientHeight: a,
            } = this.props.chatView;
            this.LOG(
              `${e}: scrolltop ${t} scrollHeight ${n} clientHeight ${i}, was scrollTop ${o} scrollHeight ${r} clientHeight ${a} `,
            );
          }
          DumpChildSizes() {
            if (!l.fi.Get().IsDebugLogEnabled("ChatHistory")) return;
            let e = this.m_elHistoryScroll.children[0],
              t = e.children.length;
            if (t < 0) {
              let n = 0;
              this.LOG("History has", t, "children");
              for (let i = 0; i < t; i++) {
                let t = e.children[i];
                (n += t.clientHeight),
                  this.LOG("Child", i, "height", t.clientHeight, t);
              }
              this.LOG("Total height:", n);
            }
          }
          OnHistoryScrollRef(e) {
            this.m_elHistoryScroll &&
              this.m_window &&
              this.m_window.removeEventListener("resize", this.OnResize),
              (this.m_elHistoryScroll = e),
              e &&
                ((this.m_window = e.ownerDocument.defaultView),
                this.m_window.addEventListener("resize", this.OnResize));
          }
          OnScrollEvent(e) {
            this.LogScrollInfo("*** OnScrollEvent"), this.OnScroll();
          }
          OnScroll() {
            const e = this.props.chatView,
              {
                scrollTop: t,
                scrollHeight: n,
                clientHeight: i,
              } = this.GetScrollInfo();
            let {
              lastScrollTop: o,
              lastScrollHeight: r,
              lastClientHeight: a,
            } = e;
            if ((this.LogScrollInfo("OnScroll"), 0 == i))
              return void this.LOG("Onscroll zero clientHeight, ignoring");
            let s = n - t <= i,
              l = r - o <= a;
            (0, Ie.w)(
              l == e.is_scrolled_to_bottom,
              `${e.GetUniqueID()}: computed and stored at bottom don't match`,
            ),
              this.LOG("bAtBottom", s, "bWasAtBottom", l);
            let c = t;
            l &&
              o - c == 1 &&
              (this.LOG(
                "*** Scroll position off by one while pinned, ignoring and setting scrollTop to",
                o,
              ),
              (c = o)),
              s ||
              (l && n != r) ||
              (c < o && l && Date.now() < this.m_nIgnoreScrollUpUntilTime)
                ? (this.LogScrollInfo("At bottom"),
                  c < o &&
                    l &&
                    Date.now() < this.m_nIgnoreScrollUpUntilTime &&
                    this.LOG(
                      "**** IGNORING APPARENT SCROLL UP WHILE PINNED TO BOTTOM IN LAYOUT",
                    ),
                  (c = n - i),
                  (0, Ie.w)(
                    c >= 0,
                    `${e.GetUniqueID()}: Onscroll client height bigger than scroll height`,
                  ),
                  (e.is_scrolled_to_bottom = !0),
                  c != t &&
                    (this.LOG("Setting scrollTop to", c),
                    (this.m_elHistoryScroll.scrollTop = c)))
                : i < a && l
                  ? (this.LogScrollInfo(
                      "Shrinking window while pinned to bottom",
                    ),
                    (c = n - i),
                    (e.is_scrolled_to_bottom = !0),
                    c != t &&
                      (this.LOG("Setting scrollTop to", c),
                      (this.m_elHistoryScroll.scrollTop = c)))
                  : c < o
                    ? (this.LogScrollInfo("Detected scroll up"),
                      (e.is_scrolled_to_bottom = s))
                    : c != o &&
                      (this.LogScrollInfo(
                        "Detected scroll down but not to bottom",
                      ),
                      (e.is_scrolled_to_bottom = !1)),
              (e.lastScrollTop = c),
              (e.lastScrollHeight = n),
              (e.lastClientHeight = i);
            let m = !(
              e.is_scrolled_to_bottom ==
              e.lastScrollHeight - e.lastScrollTop <= e.lastClientHeight
            );
            m &&
              ((0, Ie.w)(
                !m,
                `${e.GetUniqueID()}: setting mismatched computed and stored`,
              ),
              this.LOG(
                e.lastScrollTop,
                e.lastScrollHeight,
                e.lastClientHeight,
                e.is_scrolled_to_bottom,
              )),
              c < 10 && this.LoadOlderMessages();
          }
          OnRequestScrollToBottom() {
            this.ScrollToBottom();
          }
          ScrollToBottom() {
            const { scrollHeight: e, clientHeight: t } = this.GetScrollInfo();
            this.LogScrollInfo("ScrollToBottom");
            const n = e - t;
            (0, Ie.w)(
              n >= 0,
              `${this.props.chatView.GetUniqueID()}: ScrollToBottom client height bigger than scroll height`,
            ),
              this.m_animation && this.m_animation.Cancel(),
              (this.m_animation = new c.JV(
                this.m_elHistoryScroll,
                { scrollTop: n },
                { msDuration: 300, timing: "sine", onComplete: () => {} },
              )),
              this.m_animation.Start();
          }
          LoadOlderMessages() {
            const { chatView: e } = this.props,
              t = e.chat;
            if (!t.IsMoreHistoryAvailable()) return;
            if (this.m_bLoadingOperationInProgress)
              return (
                this.LOG("noting pended load"),
                void (this.m_bHasPendedLoadOlder = !0)
              );
            let n = () =>
              t.LoadMoreHistory().then((t) => {
                const { scrollHeight: i } = this.GetScrollInfo(),
                  { lastScrollTop: o, lastScrollHeight: r } = e,
                  a = o + i - r;
                return (
                  this.LogScrollInfo("LoadOlderMessags"),
                  (this.m_elHistoryScroll.scrollTop = a),
                  this.m_bHasPendedLoadOlder
                    ? (this.LOG("LoadOlderMessages starting pended"),
                      (this.m_bHasPendedLoadOlder = !1),
                      n())
                    : ((this.m_bLoadingOperationInProgress = !1), t)
                );
              });
            this.LOG("LoadOlderMessages starting"),
              (this.m_bLoadHistoryInProgress = !0),
              (this.m_bLoadingOperationInProgress = !0),
              this.DoAndDelay(this.m_window, n, 500).then((e) => {
                this.LOG("loading over"), (this.m_bLoadHistoryInProgress = !1);
              });
          }
          DoAndDelay(e, t, n) {
            const i = performance.now();
            return t().then((t) => {
              const o = performance.now() - i;
              return o < n
                ? new Promise((i) => e.setTimeout(i.bind(null, t), n - o))
                : t;
            });
          }
          Focus() {
            this.m_elHistoryScroll && this.m_elHistoryScroll.focus();
          }
          componentDidMount() {
            if (
              (this.LOG("ComponentDidMount"),
              this.UpdateChatViewCallback(),
              this.m_elHistoryScroll &&
                this.props.chatView.is_scrolled_to_bottom)
            ) {
              let { chatView: e } = this.props,
                { scrollHeight: t, clientHeight: n } = this.GetScrollInfo();
              (e.lastScrollTop = t - n),
                (e.lastScrollHeight = t),
                (e.lastClientHeight = n),
                (this.m_elHistoryScroll.scrollTop = e.lastScrollTop),
                (0, Ie.w)(
                  e.is_scrolled_to_bottom ==
                    e.lastScrollHeight - e.lastScrollTop <= e.lastClientHeight,
                  `${e.GetUniqueID()}: setting mismatched computed and stored`,
                );
            }
          }
          componentDidUpdate() {
            const { chatView: e } = this.props;
            this.UpdateChatViewCallback();
            const {
                scrollTop: t,
                scrollHeight: n,
                clientHeight: i,
              } = this.GetScrollInfo(),
              { lastScrollTop: o, lastScrollHeight: r } = e;
            if (0 == i)
              return void this.LOG(
                "componentDidUpdate clientHeight == 0, ignoring",
              );
            let a = t;
            n == r ? (a = o) : n - t <= i && (a = n - i),
              this.LogScrollInfo("componentDidUpdate"),
              this.DelayedScrollTo(a);
          }
          UpdateChatViewCallback() {
            let e = this.state.chatSubscribed;
            this.props.chatView != e &&
              (this.props.chatView.RemoveOnChatFrameChangedCallback(
                this.OnFrameChanged,
              ),
              this.props.chatView.RemoveOnChatRequestScrollBottomCallback(
                this.OnRequestScrollToBottom,
              ),
              (e = null)),
              !e &&
                this.props.isActive &&
                (this.props.chatView.AddOnChatFrameChangedCallback(
                  this.OnFrameChanged,
                ),
                this.props.chatView.AddOnChatRequestScrollBottomCallback(
                  this.OnRequestScrollToBottom,
                ),
                (e = this.props.chatView)),
              this.state.chatSubscribed != e &&
                this.setState({ chatSubscribed: e });
          }
          componentWillUnmount() {
            this.m_window &&
              (this.m_window.removeEventListener("resize", this.OnResize),
              (this.m_window = void 0)),
              this.props.chatView.RemoveOnChatFrameChangedCallback(
                this.OnFrameChanged,
              );
          }
          m_FriendRenderContext;
          GetFriendRenderContext() {
            return (
              (this.m_FriendRenderContext &&
                this.m_FriendRenderContext.chat == this.props.chatView.chat) ||
                (this.m_FriendRenderContext = {
                  chatContext: "message",
                  chat: this.props.chatView.chat,
                }),
              this.m_FriendRenderContext
            );
          }
          OnFrameChanged() {
            const e = this.props.chatView,
              { scrollHeight: t, clientHeight: n } = this.GetScrollInfo(),
              {
                lastScrollTop: i,
                lastScrollHeight: o,
                lastClientHeight: r,
              } = e;
            let a;
            this.LogScrollInfo("OnFrameChanged"),
              (this.m_nIgnoreScrollUpUntilTime = Date.now() + 300),
              e.is_scrolled_to_bottom
                ? (this.LOG("OnFrameChanged scrolling to bottom"), (a = t - n))
                : (this.LOG("OnFrameChanged preserving bottom"),
                  (a = i + r + t - o - n)),
              this.LOG("OnFrameChanged setting scrollTop to", a),
              this.DelayedScrollTo(a);
          }
          DelayedScrollTo(e) {
            this.LOG("DelayedScrollTo", e),
              (this.m_elHistoryScroll.scrollTop = e),
              this.m_window.setTimeout(() => {
                this.LOG("DelayedOnScroll firing", e), this.OnScroll();
              }, 150);
          }
          OnUpdate(e) {
            const t = this.props.chatView,
              { scrollHeight: n, clientHeight: i } = this.GetScrollInfo();
            if (
              (this.LogScrollInfo("OnUpdate for " + e),
              this.LOG("Scrolled to bottom is", t.is_scrolled_to_bottom),
              0 == n)
            )
              this.LOG("OnUpdate zero scroll height");
            else if (t.is_scrolled_to_bottom) {
              this.LogScrollInfo("OnUpdate currently scrolled to bottom");
              const e = n - i;
              this.DelayedScrollTo(e);
            } else if (t.chat.BIsPrepend) {
              t.chat.ResetPrepended();
              const {
                lastScrollTop: e,
                lastScrollHeight: o,
                lastClientHeight: r,
              } = t;
              this.LogScrollInfo("OnUpdate prepended messages");
              const a = e + r + n - o - i;
              this.DelayedScrollTo(a);
            } else
              this.LogScrollInfo("OnUpdate content updated, doing nothing");
          }
          OnResize() {
            const {
              scrollTop: e,
              scrollHeight: t,
              clientHeight: n,
            } = this.GetScrollInfo();
            this.LogScrollInfo("OnResize");
            let i = e;
            t - e <= n && (i = t - n), this.DelayedScrollTo(i);
          }
          Swallow(e) {
            e.stopPropagation(), e.preventDefault();
          }
          render() {
            let {
              chatView: e,
              speakerLabelWidth: t,
              blockInteraction: n,
            } = this.props;
            if (!e || e != this.state.chatSubscribed) return null;
            let i = e.chat,
              r = this.GetFriendRenderContext(),
              a = t && Math.max(Math.min(t, 120), 50);
            this.LOG("Render"), i.LoadChatLogs();
            let s = d.xm.SettingsStore.FriendsSettings.nChatFontSize,
              l = "ChatHistoryContainer";
            return (
              s == u.ki.k_EChatFontSizeSmall
                ? (l += " smallChatFont")
                : s == u.ki.k_EChatFontSizeLarge && (l += " largeChatFont"),
              o.createElement(
                xe.YZ,
                {
                  className: l,
                  navEntryPreferPosition: we.iU.LAST,
                  preferredFocus: !0,
                  onGamepadDirection: (0, Oe.s1)({ bPreventMovementUp: !0 }),
                  onOKActionDescription: (0, g.we)("#Chat_SelectChatWindow"),
                },
                n &&
                  o.createElement("div", {
                    className: "interactionBlocker",
                    onClick: this.Swallow,
                  }),
                !this.context?.IN_GAMEPADUI && o.createElement(Be.H, null),
                this.context?.IN_GAMEPADUI &&
                  o.createElement("div", { className: "ChatHistorySelector" }),
                o.createElement(Ve, { chatHistory: this, chatView: e }),
                o.createElement(
                  "div",
                  {
                    className: "chatHistoryScroll",
                    ref: this.OnHistoryScrollRef,
                    onScroll: this.OnScrollEvent,
                    tabIndex: 0,
                  },
                  o.createElement(
                    "div",
                    { className: "chatHistory" },
                    o.createElement(ye, {
                      chatView: e,
                      friendRenderContext: r,
                      onUpdate: this.OnUpdate,
                      speakerWidth: a,
                    }),
                    o.createElement("div", { className: "disconnectBlocker" }),
                  ),
                ),
                o.createElement(h.ln, { chatView: e }),
                !this.context?.IN_GAMEPADUI &&
                  o.createElement(Ue, {
                    chatView: e,
                    action: this.ScrollToBottom,
                  }),
                !this.context?.IN_GAMEPADUI && o.createElement(Be.P, null),
              )
            );
          }
        };
        (0, i.Cg)([a.sH], Ne.prototype, "m_bLoadHistoryInProgress", void 0),
          (0, i.Cg)([r.oI], Ne.prototype, "DumpChildSizes", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnHistoryScrollRef", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnScrollEvent", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnScroll", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnRequestScrollToBottom", null),
          (0, i.Cg)([r.oI], Ne.prototype, "ScrollToBottom", null),
          (0, i.Cg)([r.oI], Ne.prototype, "LoadOlderMessages", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnFrameChanged", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnUpdate", null),
          (0, i.Cg)([r.oI], Ne.prototype, "OnResize", null),
          (0, i.Cg)([r.oI], Ne.prototype, "Swallow", null),
          (Ne = (0, i.Cg)([s.PA], Ne));
        let Ve = class extends o.Component {
          render() {
            let e = "LoadingOlderMessages";
            return (
              this.props.chatHistory.m_bLoadHistoryInProgress ||
                (e += " Hidden"),
              o.createElement(
                "div",
                { className: e },
                o.createElement("span", null, (0, g.we)("#Chat_Loading")),
              )
            );
          }
        };
        Ve = (0, i.Cg)([s.PA], Ve);
        let Ue = class extends o.Component {
          render() {
            let { chatView: e, action: t } = this.props,
              n = "ScrollToBottomButton";
            e.is_scrolled_to_bottom && (n += " Hidden");
            let i = (0, g.we)("#Chat_ScrollToBottom");
            return (
              e.chat.unread_message_count > 0 &&
                ((i = (0, g.Yp)(
                  "#Chat_UnreadMessages",
                  e.chat.unread_message_count,
                )),
                (n += " UnreadMessages")),
              o.createElement(
                "div",
                { className: n, onClick: t },
                o.createElement("span", null, i),
              )
            );
          }
        };
        Ue = (0, i.Cg)([s.PA], Ue);
      },
      59805: (e, t, n) => {
        "use strict";
        n.d(t, {
          IO: () => mt,
          ve: () => at,
          CN: () => je,
          p5: () => Ue,
          Yg: () => We,
          vT: () => ze,
          p: () => He,
          RM: () => Ke,
          Af: () => Ve,
          wE: () => Ne,
          as: () => qe,
          V8: () => $e,
          nf: () => Ze,
          cQ: () => Qe,
          rS: () => ot,
          Y$: () => it,
          KO: () => rt,
        });
        var i = n(34629),
          o = n(78116),
          r = n(58743),
          a = n(78919),
          s = n(53819),
          l = n(68593),
          c = n(32245),
          m = n(86597),
          d = n(63696),
          u = n(41230),
          h = n(50622),
          p = n(83957),
          _ = n.n(p),
          g = n(89193),
          C = n(48325),
          f = n(77631),
          S = n(77765),
          v = n(10672),
          b = n(17070);
        class I {
          constructor() {
            (0, g.Gn)(this);
          }
          m_mapProfiles = new Map();
          m_mapProfilesLoading = new Map();
          async LoadProfiles(e, t) {
            (0, S.w)(
              e.length <= 500,
              "Check LoadProfiles, requesting too many steam IDs",
            );
            let n = e.filter(
              (e) =>
                !this.m_mapProfiles.has(e) && !this.m_mapProfilesLoading.has(e),
            );
            if (0 == n.length) return this.m_mapProfilesLoading.get(e[0]);
            let i = b.TS.COMMUNITY_BASE_URL + "actions/ajaxresolveusers",
              o = _().get(i, {
                params: { steamids: n.join(",") },
                withCredentials: !0,
                cancelToken: t?.token,
              });
            n.forEach((e) => this.m_mapProfilesLoading.set(e, o));
            let r = await o;
            r.data &&
              200 == r.status &&
              r.data.forEach((e) => {
                (e.avatar_hash = e.avatar_url),
                  (e.avatar_url_medium = (0, C.t)(e.avatar_url, "medium")),
                  (e.avatar_url_full = (0, C.t)(e.avatar_url, "full")),
                  (e.avatar_url = (0, C.t)(e.avatar_url)),
                  this.m_mapProfiles.set(e.steamid, e),
                  this.m_mapProfilesLoading.delete(e.steamid);
              });
          }
          GetProfile(e) {
            return this.m_mapProfiles.get(e);
          }
          GetProfileByAccountID(e) {
            return this.m_mapProfiles.get(
              f.b.InitFromAccountID(e).ConvertTo64BitString(),
            );
          }
          GetProfileBySteamID(e) {
            return this.m_mapProfiles.get(e.ConvertTo64BitString());
          }
          BHasProfile(e) {
            return this.m_mapProfiles.has(e);
          }
          BHasProfileByAccountID(e) {
            return this.m_mapProfiles.has(
              f.b.InitFromAccountID(e).ConvertTo64BitString(),
            );
          }
          BHasProfileBySteamID(e) {
            return this.m_mapProfiles.has(e.ConvertTo64BitString());
          }
          BHasAllProfilesBySteamID(e) {
            return !e.some((e) => !this.BHasProfileBySteamID(e));
          }
          GetProfileURLBySteamID(e) {
            const t = this.GetProfileBySteamID(e);
            return t && t.profile_url
              ? b.TS.COMMUNITY_BASE_URL + "id/" + t.profile_url
              : b.TS.COMMUNITY_BASE_URL +
                  "profiles/" +
                  e.ConvertTo64BitString();
          }
          GetPersonaNameBySteamID(e) {
            const t = this.GetProfileBySteamID(e);
            return t && t.persona_name ? t.persona_name : "";
          }
        }
        (0, i.Cg)([g.sH], I.prototype, "m_mapProfiles", void 0);
        const w = new I();
        function y(e) {
          return (function (e) {
            const t = d.useMemo(
                () => (e ? ("string" == typeof e ? new f.b(e) : e) : null),
                [e],
              ),
              [n, i] = (0, d.useState)(!!t && !w.BHasProfileBySteamID(t));
            return (
              (0, d.useEffect)(() => {
                const e = _().CancelToken.source();
                return (
                  t &&
                    !w.BHasProfileBySteamID(t) &&
                    w
                      .LoadProfiles([t.ConvertTo64BitString()])
                      .catch((e) => {
                        const n = (0, v.H)(e);
                        console.error(
                          "useUserProfile failed to load profile for " +
                            t.ConvertTo64BitString() +
                            ": " +
                            n.strErrorMsg,
                          n,
                        );
                      })
                      .finally(() => {
                        e.token.reason || i(!1);
                      }),
                  () => e.cancel("unmounting useUserProfile")
                );
              }, [e]),
              [n, !!t && w.GetProfileBySteamID(t)]
            );
          })(d.useMemo(() => (e ? f.b.InitFromAccountID(e) : null), [e]));
        }
        var E = n(82924),
          D = n(89021),
          A = n(74002),
          T = n(96655),
          M = n.n(T),
          R = n(81734),
          k = n(23812);
        class L extends d.Component {
          state = {
            invite_token: "",
            input_search: "",
            friend_code_copied: !1,
            invite_copied: !1,
          };
          async componentDidMount() {
            const e = await _().get(
              b.TS.COMMUNITY_BASE_URL + "invites/ajaxgetall",
              { params: { sessionid: b.TS.SESSIONID } },
            );
            if (e && e.data && e.data.tokens) {
              const t = e.data.tokens.filter((e) => e.valid);
              t.length
                ? this.setState({ invite_token: t[0].invite_token })
                : this.OnCreateInviteLink();
            } else this.OnCreateInviteLink();
          }
          async OnCreateInviteLink() {
            const e = new FormData();
            e.append("sessionid", b.TS.SESSIONID),
              e.append("steamid_user", b.iA.steamid),
              e.append("duration", (2592e3).toString());
            const t = await _().post(
              b.TS.COMMUNITY_BASE_URL + "invites/ajaxcreate",
              e,
            );
            t &&
              t.data &&
              t.data.invite &&
              this.setState({ invite_token: t.data.invite.invite_token });
          }
          OnCopy(e, t) {
            "friend_code" === e &&
              (this.setState({ friend_code_copied: !0 }),
              setTimeout(() => this.setState({ friend_code_copied: !1 }), 1e3)),
              "invite" === e &&
                (this.setState({ invite_copied: !0 }),
                setTimeout(() => this.setState({ invite_copied: !1 }), 1e3)),
              (0, h.OG)(t);
          }
          async OnAddFriend(e) {
            const t = new FormData();
            t.append("sessionID", b.TS.SESSIONID),
              t.append("steamid", e),
              t.append("accept_invite", "0");
            try {
              const e = await _().post(
                b.TS.COMMUNITY_BASE_URL + "actions/AddFriendAjax",
                t,
              );
              return e && e.data && 1 == e.data.success;
            } catch {
              return !1;
            }
          }
          OnSearchChange(e) {
            this.setState({ input_search: e.target.value });
          }
          OnSearchKeyDown(e) {
            13 === e.keyCode && this.OnSearchSubmit();
          }
          OnSearchSubmit() {
            window.open(
              b.TS.COMMUNITY_BASE_URL +
                "search/users/#text=" +
                encodeURIComponent(this.state.input_search),
              "_self",
            );
          }
          render() {
            const e = b.iA.short_url + "/" + this.state.invite_token;
            return d.createElement(
              "div",
              null,
              d.createElement(
                "div",
                { className: M().HeaderBlock },
                (0, A.we)("#ManageFriends_AddAFriend"),
              ),
              d.createElement(
                "div",
                { className: M().Background },
                d.createElement(
                  "h1",
                  { className: M().Heading },
                  (0, A.we)("#ManageFriends_YourFriendCode"),
                ),
                d.createElement(
                  "div",
                  { className: M().CopyContainer },
                  d.createElement(
                    "h1",
                    { className: M().Text },
                    b.iA.accountid,
                  ),
                  d.createElement(
                    D.jn,
                    {
                      autoFocus: !0,
                      className: M().Button,
                      onClick: () =>
                        this.OnCopy("friend_code", String(b.iA.accountid)),
                    },
                    this.state.friend_code_copied
                      ? (0, A.we)("#ManageFriends_Copied")
                      : (0, A.we)("#ManageFriends_Copy"),
                  ),
                ),
                d.createElement(
                  "p",
                  { className: M().Body },
                  (0, A.we)("#ManageFriends_EnterFriendCode"),
                ),
                d.createElement(G, {
                  onButtonClick: this.OnAddFriend,
                  buttonText: (0, A.we)("#ManageFriends_SendInvite"),
                  bDisableForSelf: !0,
                  bDisableForFriends: !0,
                  bShowStatus: !0,
                }),
              ),
              d.createElement(
                "div",
                { className: M().DimBackground },
                d.createElement(
                  "h1",
                  { className: M().Heading },
                  (0, A.we)("#ManageFriends_OrSendQuickInvite"),
                ),
                d.createElement(
                  "p",
                  { className: M().Body },
                  (0, A.we)("#ManageFriends_QuickInviteDescription"),
                ),
                d.createElement(
                  "p",
                  { className: M().Body },
                  (0, A.we)("#ManageFriends_QuickInviteNote"),
                ),
                d.createElement(
                  "div",
                  { className: M().CopyContainer },
                  Boolean(this.state.invite_token) &&
                    d.createElement("div", { className: M().Link }, e),
                  d.createElement(
                    D.jn,
                    {
                      className: M().Button,
                      onClick: () => this.OnCopy("invite", e),
                    },
                    this.state.invite_copied
                      ? (0, A.we)("#ManageFriends_Copied")
                      : (0, A.we)("#ManageFriends_Copy"),
                  ),
                ),
                d.createElement(
                  D.$n,
                  {
                    className: M().GenerateLinkButton,
                    onClick: this.OnCreateInviteLink,
                  },
                  (0, A.we)("#ManageFriends_CreateInviteLink"),
                ),
              ),
              d.createElement(
                "div",
                { className: M().Background },
                d.createElement(
                  "h1",
                  { className: M().Heading },
                  (0, A.we)("#ManageFriends_OrSearch"),
                ),
                d.createElement("br", null),
                d.createElement(
                  "div",
                  {
                    style: {
                      display: "flex",
                      alignItems: "center",
                      maxWidth: "598px",
                      position: "relative",
                    },
                  },
                  d.createElement(
                    "div",
                    { style: { width: "100%" } },
                    d.createElement(D.pd, {
                      className: M().Input,
                      onKeyDown: this.OnSearchKeyDown,
                      value: this.state.input_search,
                      onChange: this.OnSearchChange,
                      placeholder: (0, A.we)("#ManageFriends_EnterProfileName"),
                    }),
                  ),
                  d.createElement(
                    "div",
                    {
                      id: "searchIcon",
                      style: {
                        position: "absolute",
                        right: "10px",
                        cursor: "pointer",
                      },
                      onClick: this.OnSearchSubmit,
                    },
                    d.createElement(R.eSy, null),
                  ),
                ),
              ),
            );
          }
        }
        (0, i.Cg)([E.oI], L.prototype, "OnCreateInviteLink", null),
          (0, i.Cg)([E.oI], L.prototype, "OnCopy", null),
          (0, i.Cg)([E.oI], L.prototype, "OnAddFriend", null),
          (0, i.Cg)([E.oI], L.prototype, "OnSearchChange", null),
          (0, i.Cg)([E.oI], L.prototype, "OnSearchKeyDown", null),
          (0, i.Cg)([E.oI], L.prototype, "OnSearchSubmit", null);
        class G extends d.Component {
          state = {
            input_friend_code: "",
            disable_send_invite: !1,
            searchResult: null,
            invite_status: "pending",
          };
          m_currentRequest = 0;
          async OnFriendCodeChange(e) {
            const t = e.target.value.split(",")[0];
            this.setState({ input_friend_code: t, invite_status: "pending" }),
              window.clearTimeout(this.m_currentRequest),
              (this.m_currentRequest = window.setTimeout(
                () => this.LoadProfile(t),
                500,
              ));
          }
          async LoadProfile(e) {
            if (e) {
              const t = f.b.InitFromAccountID(Number(e));
              await w.LoadProfiles([t.ConvertTo64BitString()]);
              const n = w.GetProfile(t.ConvertTo64BitString());
              n
                ? this.setState({
                    searchResult: n,
                    disable_send_invite:
                      b.iA.is_limited ||
                      (this.props.bDisableForFriends && n.is_friend) ||
                      (this.props.bDisableForSelf &&
                        n.steamid === b.iA.steamid),
                  })
                : this.setState({ searchResult: null });
            } else this.setState({ searchResult: null });
          }
          async OnActionClick(e) {
            const t = new FormData();
            t.append("sessionID", b.TS.SESSIONID),
              t.append("steamid", e),
              t.append("accept_invite", "0"),
              this.setState({ disable_send_invite: !0 });
            (await this.props.onButtonClick(e))
              ? (this.setState({
                  input_friend_code: "",
                  invite_status: "success",
                }),
                setTimeout(() => this.setState({ searchResult: null }), 3e3))
              : this.setState({
                  invite_status: "failure",
                  disable_send_invite: !1,
                });
          }
          render() {
            return d.createElement(
              "div",
              { className: M().FriendCodeSelector },
              d.createElement(D.pd, {
                className: M().Input,
                value: this.state.input_friend_code,
                onChange: this.OnFriendCodeChange,
                placeholder: (0, A.we)(
                  "#ManageFriends_EnterFriendCodePlaceholder",
                ),
              }),
              d.createElement(
                F,
                {
                  searchResult: this.state.searchResult,
                  invite_status: this.state.invite_status,
                  bShowStatus: this.props.bShowStatus,
                },
                d.createElement(
                  D.jn,
                  {
                    className: M().SendInviteButton,
                    onClick: () =>
                      this.OnActionClick(this.state.searchResult.steamid),
                    disabled: this.state.disable_send_invite,
                  },
                  this.props.buttonText,
                ),
              ),
            );
          }
        }
        (0, i.Cg)([E.oI], G.prototype, "OnFriendCodeChange", null),
          (0, i.Cg)([E.oI], G.prototype, "LoadProfile", null),
          (0, i.Cg)([E.oI], G.prototype, "OnActionClick", null);
        const F = (e) => {
          const {
              searchResult: t,
              invite_status: n,
              bShowStatus: i,
              children: o,
            } = e,
            r = (0, b.Qn)();
          return Boolean(t)
            ? d.createElement(
                "div",
                { className: M().ProfileCard },
                d.createElement(
                  "div",
                  { className: M().UserContainer },
                  d.createElement(
                    "div",
                    { className: M().Image },
                    d.createElement("img", {
                      style: { width: "100%", height: "100%" },
                      src: t.avatar_url_full,
                    }),
                  ),
                  d.createElement(
                    "div",
                    { className: M().ProfileContent },
                    d.createElement(
                      "h1",
                      { className: M().Heading },
                      t.persona_name,
                    ),
                    d.createElement(
                      "div",
                      { className: M().ProfileLink },
                      d.createElement(
                        k.Ii,
                        {
                          target: r ? void 0 : "_blank",
                          href:
                            b.TS.COMMUNITY_BASE_URL + "profiles/" + t.steamid,
                        },
                        (0, A.we)("#ManageFriends_ProfileLink"),
                      ),
                      d.createElement("br", null),
                      d.createElement(
                        "span",
                        { className: M().Body },
                        t.real_name,
                        d.createElement("br", null),
                        `${t.city}${t.city ? "," : ""} ${t.state}${t.state ? "," : ""} ${t.country}`,
                      ),
                    ),
                  ),
                  o,
                ),
                d.createElement(
                  "div",
                  { className: M().ProfileLink },
                  t.is_friend &&
                    d.createElement(
                      "div",
                      null,
                      (0, A.we)("#ManageFriends_IsFriend"),
                    ),
                  0 != t.friends_in_common &&
                    d.createElement(
                      "div",
                      null,
                      d.createElement(
                        k.Ii,
                        {
                          target: r ? void 0 : "_blank",
                          href:
                            b.TS.COMMUNITY_BASE_URL +
                            "profiles/" +
                            t.steamid +
                            "/friendscommon",
                        },
                        1 === t.friends_in_common
                          ? (0, A.we)(
                              "#ManageFriends_FriendsInCommonSingular",
                              t.friends_in_common,
                            )
                          : (0, A.we)(
                              "#ManageFriends_FriendsInCommon",
                              t.friends_in_common,
                            ),
                      ),
                    ),
                  i &&
                    "failure" === n &&
                    d.createElement(
                      "div",
                      { className: M().Failure },
                      (0, A.we)("#ManageFriends_InviteFailure"),
                    ),
                  i &&
                    "success" === n &&
                    d.createElement(
                      "div",
                      { className: M().Success },
                      (0, A.we)("#ManageFriends_InviteSuccess", t.persona_name),
                    ),
                ),
              )
            : null;
        };
        var P = n(25698),
          B = n(91364),
          x = n(25444),
          O = n(74977),
          N = n(69074),
          V = n(99862),
          U = n(63689),
          H = n(14355),
          W = n(91466),
          z = n(65226);
        function j(e, t, n, i) {
          (0, B.tj)(e, { friendGroup: t }, n, i);
        }
        async function q(e, t) {
          return 1 == (await e.RemoveFriend(t));
        }
        const K = (e) => {
            const { friendGroup: t, friend: n } = e;
            return d.createElement(V.bP, {
              className: z.InvitesFriend,
              focusable: !1,
              childFocusDisabled: !0,
              friend: n,
              context: { friendGroup: t },
            });
          },
          Z = (e) => {
            const { friends: t, children: n } = e;
            return d.createElement(
              "div",
              { className: z.InvitesSectionHeader },
              d.createElement(
                "div",
                { className: z.Text },
                t.name,
                " (",
                t.member_list.length,
                ")",
              ),
              n,
            );
          },
          Q = (e) => {
            const { friendStore: t, setMutualFriends: n, closeModal: i } = e,
              o = Array.from(n.values()).map((e) => t.GetFriend(e)),
              r = d.useCallback(
                (e, t) => {
                  let n = t.GetCommunityProfileURL();
                  (0, W.EP)(h.uX(e), n), i();
                },
                [i],
              ),
              a = o.map((e) =>
                d.createElement(
                  N.Z,
                  {
                    key: e.accountid,
                    className: z.MutualFriendRow,
                    noFocusRing: !0,
                    onActivate: (t) => r(t, e),
                    onOKActionDescription: (0, A.we)(
                      "#Friend_Menu_ViewProfile",
                    ),
                  },
                  d.createElement(V.bP, {
                    className: z.InvitesFriend,
                    focusable: !1,
                    friend: e,
                    context: {},
                  }),
                ),
              );
            return d.createElement(
              x.o0,
              {
                className: "friendsui-container",
                strTitle: (0, A.we)("#Friend_Invites_MutualFriends"),
                onOK: i,
                onCancel: i,
                bAlertDialog: !0,
              },
              d.createElement(D.nB, null, a),
            );
          };
        const $ = (0, u.PA)((e) => {
            const { friendStore: t, context: n, friends: i } = e,
              o = d.useCallback(
                (e, t) => {
                  const n =
                    i.map_steamid_to_mutual_friends.get(e.steamid64)?.size || 0;
                  return (
                    (i.map_steamid_to_mutual_friends.get(t.steamid64)?.size ||
                      0) - n || (0, U.lY)(e.display_name, t.display_name)
                  );
                },
                [i],
              );
            if (0 == i.member_count) return null;
            const r = i.member_list
              .slice()
              .sort(o)
              .map((e, o) => {
                (0, S.w)(
                  2 == e.efriendrelationship,
                  "Incorrect friend type in IncomingInvites",
                );
                const r = i.map_steamid_to_mutual_friends.get(e.steamid64),
                  a = r?.size
                    ? {
                        onOptionsActionDescription: (0, A.we)(
                          "#Friend_Invites_ViewMutual",
                        ),
                        onOptionsButton: (e) => {
                          !(async function (e, t, n) {
                            const i = h.uX(n);
                            (0, H.pg)(
                              d.createElement(Q, {
                                friendStore: e,
                                setMutualFriends: t,
                              }),
                              i,
                            );
                          })(t, r, e);
                        },
                      }
                    : void 0;
                return d.createElement(
                  N.Z,
                  {
                    key: e.accountid,
                    className: z.InvitesRow,
                    ...a,
                    onMenuButton: (t) => j(n, i, e, t),
                    onMenuActionDescription: (0, A.we)("#Friend_Menu_Open"),
                  },
                  d.createElement(K, { friendGroup: i, friend: e }),
                  d.createElement(
                    D.$n,
                    {
                      onClick: (n) =>
                        (async function (e, t, n) {
                          const i = h.uX(n);
                          if (
                            !(await (0, P.WQ)(
                              i,
                              (0, A.we)("#Friend_Menu_BlockAllCommunication"),
                              (0, A.we)(
                                "#Friend_Block_Confirm",
                                t.display_name,
                              ),
                              (0, A.we)("#Button_Confirm"),
                            ))
                          )
                            return;
                          5 != (await e.BlockPlayer(t)) &&
                            (0, P.Ic)(
                              i,
                              (0, A.we)("#Friend_Menu_BlockIncomingInvite"),
                              (0, A.we)(
                                "#Friend_BlockIncomingInvite_Error",
                                t.display_name,
                              ),
                            );
                        })(t, e, n),
                    },
                    (0, A.we)("#Button_Block"),
                  ),
                  d.createElement(
                    D.$n,
                    {
                      onClick: (n) =>
                        (async function (e, t, n) {
                          let { eResult: i, eFriendRelationship: o } =
                            await e.SendFriendInvite(t);
                          if (3 != o) {
                            const e = h.uX(n);
                            (0, B.Jw)(e, i, o, t.display_name);
                          }
                        })(t, e, n),
                    },
                    (0, A.we)("#Button_Accept"),
                  ),
                  d.createElement(
                    D.$n,
                    {
                      onClick: (n) =>
                        (async function (e, t, n) {
                          if (!(await q(e, t))) {
                            const e = h.uX(n);
                            (0, P.Ic)(
                              e,
                              (0, A.we)("#Friend_Menu_IgnoreIncomingInvite"),
                              (0, A.we)(
                                "#Friend_IgnoreIncomingInvite_Error",
                                t.display_name,
                              ),
                            );
                          }
                        })(t, e, n),
                    },
                    (0, A.we)("#Button_Ignore"),
                  ),
                );
              });
            return d.createElement(
              N.Z,
              {
                className: z.IncomingInvites,
                "flow-children": "grid",
                retainFocus: !0,
              },
              d.createElement(D._E, { className: z.Divider }),
              d.createElement(
                Z,
                { friends: i },
                i.member_list.length > 1 &&
                  d.createElement(
                    D.$n,
                    {
                      onClick: (e) =>
                        (async function (e, t, n) {
                          const i = h.uX(n);
                          if (
                            !(await (0, P.WQ)(
                              i,
                              (0, A.we)("#Friend_Invites_IgnoreAllTitle"),
                              (0, A.we)(
                                "#Friend_Invites_IgnoreAllDescription",
                                t.length,
                              ),
                              (0, A.we)("#Button_Confirm"),
                            ))
                          )
                            return;
                          const o = t.map((t) => q(e, t));
                          let r = 0;
                          (await Promise.all(o)).forEach((e) => {
                            !e && r++;
                          }),
                            r > 0 &&
                              (0, P.Ic)(
                                i,
                                (0, A.we)("#Error_Generic"),
                                (0, A.Yp)("#Friend_Invites_FailedToDecline", r),
                              );
                        })(t, i.member_list, e),
                    },
                    (0, A.we)("#FriendGroup_AllIgnore"),
                  ),
              ),
              r,
            );
          }),
          X = (0, u.PA)((e) => {
            const { friendStore: t, context: n, friends: i } = e;
            if (0 == i.member_count) return null;
            const o = i.member_list.map(
              (e, o) => (
                (0, S.w)(
                  4 == e.efriendrelationship,
                  "Incorrect friend type in OutgoingInvites",
                ),
                d.createElement(
                  N.Z,
                  {
                    key: e.accountid,
                    className: z.InvitesRow,
                    onMenuButton: (t) => j(n, i, e, t),
                    onMenuActionDescription: (0, A.we)("#Friend_Menu_Open"),
                  },
                  d.createElement(K, { friendGroup: i, friend: e }),
                  d.createElement(
                    D.$n,
                    {
                      onClick: (n) =>
                        (async function (e, t, n) {
                          const i = h.uX(n);
                          if (
                            !(await (0, P.WQ)(
                              i,
                              (0, A.we)("#Friend_Invites_CancelInvite"),
                              (0, A.we)(
                                "#Friend_CancelInvitation_Confirm",
                                t.display_name,
                              ),
                              (0, A.we)("#Button_Confirm"),
                            ))
                          )
                            return;
                          const o = await e.RemoveFriend(t);
                          (3 != o && 6 != o) ||
                            (0, P.Ic)(
                              i,
                              (0, A.we)("#Friend_Menu_CancelInvitation"),
                              (0, A.we)(
                                "#Friend_CancelInvitation_Error",
                                t.display_name,
                              ),
                            );
                        })(t, e, n),
                    },
                    (0, A.we)("#Friend_Invites_CancelInvite"),
                  ),
                )
              ),
            );
            return d.createElement(
              N.Z,
              {
                className: z.OutgoingInvites,
                "flow-children": "grid",
                retainFocus: !0,
              },
              d.createElement(D._E, { className: z.Divider }),
              d.createElement(Z, { friends: i }),
              o,
            );
          }),
          Y = (e) => {
            const { friendStore: t } = e;
            return d.createElement(
              "div",
              { className: z.FriendCodeSection },
              d.createElement(
                "div",
                { className: z.FriendCode },
                d.createElement(
                  "div",
                  { className: z.Code },
                  t.self.persona.GetAccountID(),
                ),
              ),
              d.createElement(
                "div",
                { className: z.Caption },
                (0, A.we)("#FriendInvites_YourFriendCode"),
              ),
            );
          },
          J = (e) => {
            const { friendStore: t } = e,
              n = d.useRef(),
              i = d.useCallback(
                (e) => {
                  let i = h.uX(e);
                  e.preventDefault();
                  const o = parseInt(n.current?.value);
                  return (
                    o &&
                      (0, H.pg)(
                        d.createElement(ee, {
                          friendStore: t,
                          accountID: o,
                          ownerWindow: i,
                        }),
                        i,
                      ),
                    !0
                  );
                },
                [t],
              );
            return d.createElement(
              "div",
              { className: z.AddFriendSection },
              d.createElement(
                "div",
                { className: z.Title },
                (0, A.we)("#FriendInvites_AddFriend_Title"),
              ),
              d.createElement(
                "div",
                { className: z.Description },
                (0, A.we)("#FriendInvites_AddFriend_Description"),
              ),
              d.createElement(
                "form",
                { className: z.InputForm, onSubmit: i },
                d.createElement(D.pd, {
                  autoFocus: !0,
                  ref: n,
                  className: z.Input,
                  placeholder: (0, A.we)(
                    "#FriendInvites_AddFriend_Placeholder",
                  ),
                }),
                d.createElement(
                  D.$n,
                  { className: z.SubmitButton, type: "submit" },
                  (0, A.we)("#Button_OK"),
                ),
              ),
            );
          },
          ee = (0, u.PA)((e) => {
            const {
                friendStore: t,
                accountID: n,
                ownerWindow: i,
                closeModal: o,
              } = e,
              [r, a] = y(n),
              s = d.useCallback(async () => {
                const { eResult: e, eFriendRelationship: r } =
                  await t.SendFriendInviteBySteamID(f.b.InitFromAccountID(n));
                1 == e
                  ? 4 == r
                    ? (0, P.Ic)(
                        i,
                        (0, A.we)("#Friend_Menu_AddToFriendsList"),
                        (0, A.we)("#Friend_InviteSent"),
                      )
                    : 3 == r &&
                      (0, P.Ic)(
                        i,
                        (0, A.we)("#Friend_Menu_AddToFriendsList"),
                        (0, A.we)("#Friend_MutualInviteSent", a.persona_name),
                      )
                  : (0, B.Jw)(i, e, r, a.persona_name),
                  o();
              }, [n, a, o, i, t]);
            let l = d.createElement(O.t, null),
              c = !1;
            return (
              r ||
                (a
                  ? ((l = d.createElement(F, {
                      searchResult: a,
                      bShowStatus: !1,
                    })),
                    (c =
                      !a.is_friend &&
                      a.accountid != t.self.steamid.GetAccountID()))
                  : (l = d.createElement(
                      "div",
                      { className: z.SearchError },
                      (0, A.we)("#Friend_Invites_NotFound"),
                    ))),
              d.createElement(
                x.o0,
                {
                  className: "friendsui-container",
                  strTitle: (0, A.we)("#Friend_Invites_SearchTitle", n),
                  onOK: s,
                  onCancel: o,
                  strOKButtonText: (0, A.we)("#ManageFriends_SendInvite"),
                  strCancelButtonText: (0, A.we)("#Button_Close"),
                  bOKDisabled: !c,
                },
                d.createElement(D.nB, null, l),
              )
            );
          }),
          te = (e) => {
            const { friendStore: t, scrollableElement: n } = e,
              i = d.useCallback(
                (e) => {
                  e && n.current?.scrollTo({ top: 0, behavior: "smooth" });
                },
                [n],
              );
            return d.createElement(
              N.Z,
              { className: z.TopSection, onFocusWithin: i },
              d.createElement(J, { friendStore: t }),
              d.createElement(Y, { friendStore: t }),
            );
          },
          ne = (0, u.PA)((e) => {
            const { friends: t, browserContext: n } = e,
              i = d.useRef(),
              o = t.FriendGroupStore.incoming_invites_group,
              r = t.FriendGroupStore.outgoing_invites_group;
            return (
              d.useEffect(() => {
                t.FriendGroupStore.EnsureMutualFriendsForIncomingInvites(),
                  t.ClanStore.EnsureInitialStateForClanInvites();
              }, [t]),
              d.createElement(
                N.Z,
                { ref: i, className: z.InvitesList, "flow-children": "grid" },
                d.createElement(te, { friendStore: t, scrollableElement: i }),
                d.createElement($, { friendStore: t, context: n, friends: o }),
                d.createElement(X, { friendStore: t, context: n, friends: r }),
              )
            );
          });
        var ie = n(92453),
          oe = n(90095),
          re = n(77171),
          ae = n(28574),
          se = n(73880),
          le = n(82789),
          ce = n(96009);
        function me(e) {
          let { chats: t, onActivate: n, ...i } = e,
            o = (0, oe.q3)(() => {
              let e = 0,
                t = r.xm.GetServerRTime32() - 2 * ae.Kp.PerWeek;
              const n = r.xm.ChatStore.GetRecentChats();
              for (const i of n)
                if (i instanceof le.s) {
                  e += i.unread_message_count;
                } else if (i instanceof se.a$) {
                  i.chatRoomList.forEach((n) => {
                    if (n.has_unread_messages && n.time_last_ack > t) {
                      let t = n.unread_message_count;
                      t > 0 && (e += t);
                    }
                  });
                }
              return e;
            });
          if (0 == o) return null;
          return d.createElement(
            N.Z,
            {
              className: (0, re.A)(
                ce.NotificationUnreadMentionContainer,
                o > 0 && ce.HasMessages,
              ),
              onActivate: (e) => {
                n && n(e),
                  (r.xm.UIStore.FriendsListSteamDeckActiveTab =
                    s.Jw.RecentMessages);
              },
              ...i,
            },
            d.createElement(R.wbc, null),
            d.createElement(
              "div",
              { className: ce.Header_NotificationUnreadMention },
              o,
            ),
          );
        }
        var de = n(51802),
          ue = n(98540),
          he = n(89106);
        function pe(e) {
          let { chats: t, className: n, ...i } = e,
            o = (0, oe.q3)(() => t.GetActiveVoiceChat());
          const a = o instanceof le.s ? o : void 0,
            s = a?.GetMember(a.accountid_partner),
            l = o instanceof de.d ? o : void 0,
            c = (0, oe.q3)(
              () =>
                t.VoiceChat.IsMicMuted() ||
                0 == t.VoiceChat.GetVoiceInputGain(),
            ),
            m = (0, oe.q3)(
              () =>
                t.VoiceChat.IsOutputMuted() ||
                0 == t.VoiceChat.GetVoiceOutputGain(),
            ),
            u = (0, oe.q3)(() => t.FriendChatStore.GetAllChats());
          let h = !1;
          const p = (0, oe.q3)(() =>
            u.filter((e) => {
              let t = r.xm.VoiceStore.BPartnerHasRequestedAndIsInOneOnOneChat(
                e.accountid_partner,
              );
              return a?.accountid_partner == e.accountid_partner && (t = !1), t;
            }),
          );
          if (
            (p.forEach((e) => {
              h ||
                (h = r.xm.VoiceStore.BSelfHadPreviouslyJoinedOneOnOneChat(
                  e?.accountid_partner,
                ));
            }),
            !t.VoiceChat.IsAnyVoiceActive() && !o && 0 == p.length)
          )
            return null;
          const _ = null != a,
            g = null != l,
            C = 0 != p.length,
            f = (0, re.A)(
              n,
              he.VoiceChatHeader,
              o && he.ActiveCall,
              _ && he.FriendVoice,
              g && he.GroupVoice,
              C && he.IncomingCall,
              h && he.CallOnHold,
            );
          let S = {};
          if (_)
            (S.onSecondaryButton = () => t.VoiceChat.OnUserEndVoiceChat()),
              (S.onSecondaryActionDescription = (0, A.we)("#VoiceChat_Leave"));
          else if (g)
            (S.onSecondaryButton = () => t.VoiceChat.OnUserEndVoiceChat()),
              (S.onSecondaryActionDescription = (0, A.we)(
                "#VoiceChat_LeaveVoiceRoom",
              ));
          else if (C) {
            let e = p[0];
            (S.onSecondaryButton = () =>
              r.xm.VoiceStore.OnRejectOneOnOneVoiceChatForPartner(
                e.accountid_partner,
              )),
              (S.onSecondaryActionDescription = (0, A.we)(
                "#Voice_DeclineVoiceChat",
              ));
          }
          return d.createElement(
            N.Z,
            { className: f, ...i, ...S },
            d.createElement("div", { className: he.VoiceChatStatusBackground }),
            p.map((e) => {
              let t = e.chat_partner;
              return d.createElement(V.bP, {
                key: e.unique_id,
                noActions: !0,
                bHideGameName: !0,
                bHidePersona: !0,
                bHideStatusInfo: !0,
                showVoiceLevel: !0,
                friend: t,
                context: { chat: e, chatContext: "friendslist" },
                avatarSize: "Medium",
                statusPosition: "right",
              });
            }),
            0 != p.length &&
              d.createElement(
                "div",
                { className: "WaitingForYouFirstTime" },
                h ? d.createElement(R.fpT, null) : d.createElement(R.BeN, null),
                !h &&
                  d.createElement(
                    "div",
                    { className: "Sonar" },
                    d.createElement("div", { className: "SonarCircle" }),
                  ),
              ),
            a &&
              d.createElement(V.bP, {
                noActions: !0,
                bHideGameName: !0,
                bHidePersona: !0,
                bHideStatusInfo: !0,
                showVoiceLevel: !0,
                friend: s,
                context: { chat: a, chatContext: "friendslist" },
                avatarSize: "Medium",
                statusPosition: "right",
              }),
            l && d.createElement(ue.I, { group: l.GetGroup(), small: !0 }),
            (a || l) &&
              d.createElement(R.LeN, {
                off: m,
                className: m ? "Muted" : void 0,
              }),
            (a || l) &&
              d.createElement(R.EQ9, {
                off: c,
                className: c ? "Muted" : void 0,
              }),
          );
        }
        class _e extends d.Component {
          m_refTextInput = null;
          constructor(e) {
            super(e), (this.state = { error: 1, strPIN: "" });
          }
          componentDidMount() {
            this.m_refTextInput.focus();
          }
          BindTextInput(e) {
            this.m_refTextInput = e;
          }
          OnPINInput(e) {
            this.setState({ strPIN: e.target.value });
          }
          onOK(e) {
            return (
              e.preventDefault(),
              r.xm.ParentalStore.Unlock(this.state.strPIN).then((e) => {
                1 != e && this.setState({ error: e });
              }),
              !0
            );
          }
          render() {
            let e = "";
            switch (this.state.error) {
              case 1:
                break;
              case 25:
                e = (0, A.we)("#FamilyView_TooManyAttempts");
                break;
              default:
                e = (0, A.we)("#FamilyView_BadPIN");
            }
            return d.createElement(
              "div",
              null,
              d.createElement(
                "div",
                { className: "FamilyViewTitle" },
                (0, A.we)("#FamilyView_Title"),
              ),
              d.createElement(
                "div",
                { className: "FamilyViewInstructions" },
                (0, A.we)("#FamilyView_Unlock_Instructions"),
              ),
              d.createElement(
                "form",
                { onSubmit: this.onOK },
                d.createElement("input", {
                  type: "password",
                  maxLength: 4,
                  className: "pinInput",
                  ref: this.BindTextInput,
                  value: this.state.strPIN,
                  onChange: this.OnPINInput,
                }),
                d.createElement(
                  "button",
                  { type: "submit" },
                  (0, A.we)("#Button_OK"),
                ),
              ),
              e && d.createElement("p", { className: "error_text" }, e),
            );
          }
        }
        (0, i.Cg)([E.oI], _e.prototype, "BindTextInput", null),
          (0, i.Cg)([E.oI], _e.prototype, "OnPINInput", null),
          (0, i.Cg)([E.oI], _e.prototype, "onOK", null);
        var ge = n(7470),
          Ce = n(23038),
          fe = n(20045),
          Se = n(50669),
          ve = n(12744),
          be = n(55244),
          Ie = n(69168),
          we = n(8246),
          ye = n(27816),
          Ee = n(1808),
          De = n(49391),
          Ae = n(82099),
          Te = n(96242),
          Me = n(49912),
          Re = n(52146),
          ke = n(98077),
          Le = n.n(ke),
          Ge = n(51525),
          Fe = n(3715);
        var Pe = n(71465);
        const Be = d.memo(function () {
          const e = (0, Fe.jE)();
          return (
            (function (e, t) {
              const n = (0, ve.zv)();
              (0, d.useEffect)(() => {
                if (n)
                  return n.messageHandlers.RegisterServiceNotificationHandler(
                    e,
                    t,
                  ).unregister;
              }, [n, e, t]);
            })(
              Ge.$y.NotifyPrivateAppListChangedHandler,
              d.useCallback(
                (t) => ((0, Pe.JT)(e, t.Body().private_apps().appids()), 1),
                [e],
              ),
            ),
            null
          );
        });
        var xe = n(36755);
        function Oe() {
          const e = (0, a._k)((0, Ie.R7)().ownerWindow);
          return void 0 === e.m_eUIMode ? { ...e, m_eUIMode: 4 } : e;
        }
        function Ne(e, t, n) {
          const i = window,
            o = (0, a._k)(i);
          ge.H(n).render(
            d.createElement(
              Ye,
              { ownerWindow: i },
              d.createElement(Je, null),
              d.createElement(et, {
                friends: e,
                chats: t,
                browserContext: o,
                elTarget: n,
              }),
            ),
          );
        }
        function Ve(e, t, n) {
          const i = window,
            o = (0, a._k)(i);
          ge.H(n).render(
            d.createElement(
              Ye,
              { ownerWindow: i },
              d.createElement(De.EO, { browserInfo: o }, " "),
            ),
          );
        }
        function Ue(e, t, n) {
          const i = (0, oe.q3)(() => r.xm.ready_to_render),
            o = Oe();
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(tt, {
              key: "throbber",
              fadeOut: i,
              className: Le().throbberContainerSteamDeckFriendsQuickAccess,
            }),
            i
              ? d.createElement(V.l$, {
                  bQuickAccess: !0,
                  friends: e,
                  chats: t,
                  browserContext: o,
                  collapsed: !1,
                })
              : null,
          );
        }
        function He(e, t) {
          const n = (0, oe.q3)(() => r.xm.ready_to_render),
            i = Oe();
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(tt, {
              key: "throbber",
              fadeOut: n,
              className: Le().throbberContainerSteamDeckFriendsQuickAccess,
            }),
            n ? d.createElement(ne, { friends: e, browserContext: i }) : null,
          );
        }
        function We(e, t, n) {
          const i = (0, oe.q3)(() => r.xm.ready_to_render),
            o = Oe();
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(tt, {
              key: "throbber",
              fadeOut: i,
              className: Le().throbberContainerSteamDeckFriends,
            }),
            i
              ? d.createElement(V.l$, {
                  bQuickAccess: !1,
                  friends: e,
                  chats: t,
                  browserContext: o,
                  collapsed: !1,
                })
              : null,
          );
        }
        function ze(e, t, n) {
          const i = (0, oe.q3)(() => r.xm.ready_to_render);
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(tt, {
              key: "throbber",
              fadeOut: i,
              className: Le().throbberContainerSteamDeckFriendsQuickAccess,
            }),
            i ? d.createElement("div", null, "(out of date client)") : null,
          );
        }
        function je(e, t, n) {
          const i = (0, oe.q3)(() => r.xm.ready_to_render),
            o = Oe();
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(tt, {
              key: "throbber",
              fadeOut: i,
              className: Le().throbberContainerSteamDeckFriends,
            }),
            i
              ? d.createElement(V.hv, {
                  children: n.children,
                  friends: e,
                  chats: t,
                  browserContext: o,
                })
              : null,
          );
        }
        function qe(e) {
          const t = Oe();
          let n = r.xm.UIStore.GetDefaultTabSetForContext(t);
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(c.yA, { tabs: n, ResponsiveWindowState: null }),
          );
        }
        function Ke(e, t) {
          const n = Oe();
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(m.rN, { browserContext: n }),
          );
        }
        function Ze(e, t) {
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(ie.$, { chats: e }),
          );
        }
        function Qe(e, t) {
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(pe, { chats: e, ...t }),
          );
        }
        function $e(e, t) {
          return d.createElement(
            b.ss,
            { IN_GAMEPADUI: !0 },
            d.createElement(me, { chats: e, ...t }),
          );
        }
        function Xe(e) {
          e.preventDefault();
        }
        function Ye(e) {
          const { ownerWindow: t, children: n } = e,
            i = d.useCallback(() => r.xm?.CMInterface, []),
            o = (0, E.bs)(d.useCallback(() => new be.A(), []));
          return (
            (0, E.l6)(window, "dragover", Xe),
            (0, E.l6)(window, "dragenter", Xe),
            (0, E.l6)(window, "drop", Xe),
            d.createElement(
              Re.s,
              null,
              d.createElement(
                b.ss,
                { IN_GAMEPADUI: !1 },
                d.createElement(
                  Ie.kc,
                  { ownerWindow: t },
                  d.createElement(
                    we.p,
                    { body_class: "friendsui-container" },
                    d.createElement(
                      ve.VQ,
                      { useActiveCMInterface: i, useStorage: o },
                      n,
                    ),
                  ),
                ),
              ),
            )
          );
        }
        function Je() {
          return d.createElement(Ee.wC, null, d.createElement(Be, null));
        }
        let et = class extends d.Component {
          render() {
            const {
              browserContext: e,
              friends: t,
              chats: n,
              elTarget: i,
            } = this.props;
            let o = new a.kP(i.ownerDocument.defaultView),
              s = null,
              l = null,
              c = r.xm.ready_to_render;
            return (
              c &&
                ((s = r.xm.UIStore.GetDefaultTabSetForContext(e)),
                (l = r.xm.UIStore.GetPerContextChatData(e)),
                l.SetFriendsListWindow(o)),
              d.createElement(
                d.Fragment,
                null,
                d.createElement(tt, { fadeOut: c }),
                c &&
                  d.createElement(st, {
                    friends: t,
                    chats: n,
                    tabset: s,
                    container: o,
                  }),
              )
            );
          }
        };
        function tt(e) {
          const { fadeOut: t, className: n } = e,
            [i, o] = d.useState(t),
            r = d.useCallback(
              (e) => {
                e.target == e.currentTarget &&
                  t &&
                  "opacity" == e.propertyName &&
                  o(!0);
              },
              [t],
            );
          if (i) return null;
          let a = Le().throbberContainer;
          return (
            t && (a += ` ${Le()["throbberContainer-exit-active"]}`),
            d.createElement(
              "div",
              { className: (0, re.A)(a, n), onTransitionEnd: r },
              d.createElement(
                "div",
                { className: "WaitingForInterFaceReadyContainer" },
                d.createElement(
                  "div",
                  { className: "WaitingForInterFaceReadyThrobber" },
                  d.createElement(O.t, {
                    className: "Throbber_Blur",
                    size: "xlarge",
                  }),
                  d.createElement(O.t, { size: "xlarge" }),
                ),
              ),
            )
          );
        }
        et = (0, i.Cg)([u.PA], et);
        class nt extends Ie.K9 {
          constructor(e, t, n, i) {
            super(e, t, n, i);
          }
          GetSavedDimensionsKey() {
            if (this.BIsInOverlay()) {
              let e = r.xm.UIStore.GetPerContextChatData(
                this.m_rgParams.target_browser,
              ).screen_info;
              return (
                "Overlay_" +
                (e && e.width && e.height
                  ? e.width + "x" + e.height + "_"
                  : "") +
                this.m_strSavedDimensionsKey
              );
            }
            return this.m_strSavedDimensionsKey;
          }
        }
        const it = 226,
          ot = 400,
          rt = 3 * it;
        class at extends nt {
          m_friends;
          m_chats;
          m_browserContext;
          m_fnOnClose;
          m_reactRoot;
          constructor(e, t, n, i, o) {
            let r = Ie.Wf.Resizable;
            i && !(0, b.Pr)() && (r |= Ie.Wf.Minimized);
            let s = 300,
              l = 650,
              c = !1;
            o &&
              (o.width && ((s = o.width), (c = !0)),
              o.height && ((l = o.height), (c = !0))),
              super(
                "friendslist",
                "PopupFriendsListDimensions",
                {
                  dimensions: { width: s, height: l },
                  minWidth: it,
                  minHeight: ot,
                  title: (0, A.we)("#WindowTitle_FriendsList"),
                  html_class:
                    "friendsui-container client_chat_frame fullheight SavedDimensionsPopup",
                  body_class: "fullheight",
                  target_browser: n,
                  eCreationFlags: r,
                  bIgnoreSavedDimensions: c,
                },
                !1,
              ),
              (this.m_friends = e),
              (this.m_chats = t),
              a.ZM.m_strLoaderWindowRestoreDetails &&
                (this.SaveWindowPosition(a.ZM.m_strLoaderWindowRestoreDetails),
                (a.ZM.m_strLoaderWindowRestoreDetails = void 0));
          }
          Render(e, t) {
            t.setAttribute("class", "fullheight popup_chat_frame");
            let n = new a.kP(e),
              i = this.browser_info || r.xm.GetDefaultBrowserContext(),
              o = r.xm.UIStore.GetDefaultTabSetForContext(i);
            (this.m_browserContext = i),
              r.xm.UIStore.BIsFriendsListSingleWindow(i) &&
                e.SteamClient.Window.SetMinSize &&
                e.SteamClient.Window.SetMinSize(rt, ot),
              (this.m_reactRoot = ge.H(t)),
              this.m_reactRoot.render(
                d.createElement(
                  Ye,
                  { ownerWindow: this.window },
                  d.createElement(st, {
                    popup: this,
                    friends: this.m_friends,
                    chats: this.m_chats,
                    tabset: o,
                    container: n,
                  }),
                ),
              );
          }
          OnResizeComplete(e) {
            super.OnResizeComplete(e),
              window.parent.postMessage(
                { message: "FriendsListRestoreDetailsChanged", data: e },
                "https://steamloopback.host",
              );
          }
          OnClose() {
            super.OnClose(),
              this.m_reactRoot.unmount(),
              window.parent.postMessage(
                {
                  message: "FriendsListRestoreDetailsChanged",
                  data: this.m_rgParams.strRestoreDetails,
                },
                "https://steamloopback.host",
              ),
              this.m_browserContext &&
                r.xm.OnFriendsListClosed(this.m_browserContext),
              this.m_fnOnClose && this.m_fnOnClose();
          }
          SetOnClose(e) {
            this.m_fnOnClose = e;
          }
        }
        let st = class extends d.Component {
          m_nInlineChatWidth;
          m_bUsePopups = !1;
          m_browserContext;
          m_ResponsiveWindowState;
          m_unTimerWindowTitleUnreadCycle;
          m_nWindowTitleUnreadCycleCount = 0;
          m_popupActionDisposer;
          m_popupFocusDisposer;
          m_elFriendsListContainer;
          m_refChatDialog = d.createRef();
          m_refRoot = d.createRef();
          m_lastFocusElement = null;
          constructor(e) {
            super(e), (0, g.Gn)(this);
            this.m_browserContext =
              this.props.popup && this.props.popup.browser_info
                ? this.props.popup.browser_info
                : r.xm.GetDefaultBrowserContext();
            let t = r.xm.UIStore.GetPerContextChatData(this.m_browserContext);
            (this.m_bUsePopups = t.BUsePopups()),
              this.m_bUsePopups
                ? (this.m_nInlineChatWidth = 640)
                : ((this.m_nInlineChatWidth = 530),
                  (this.m_ResponsiveWindowState =
                    r.xm.UIStore.GetResponsiveWindowState(
                      this.m_browserContext,
                    ))),
              (this.state = { bIsResizingWindow: !1 });
          }
          OnCopy(e) {
            this.m_refChatDialog &&
              this.m_refChatDialog.current &&
              this.m_refChatDialog.current.OnCopy(e);
          }
          BindWindowHandlers() {
            const e = this.props.container,
              t = this.props.tabset;
            (this.m_popupActionDisposer = (0, g.fm)(() => {
              if (!o.TS.IN_CLIENT) {
                let t =
                  r.xm.ChatStore.FriendChatStore.GetUnfilteredFriendsWithUnreadMessages();
                t.length && void 0 === this.m_unTimerWindowTitleUnreadCycle
                  ? (this.m_unTimerWindowTitleUnreadCycle = window.setInterval(
                      () => {
                        this.m_nWindowTitleUnreadCycleCount =
                          (this.m_nWindowTitleUnreadCycleCount + 1) % 1e3;
                      },
                      2e3,
                    ))
                  : t.length ||
                    void 0 === this.m_unTimerWindowTitleUnreadCycle ||
                    (window.clearInterval(this.m_unTimerWindowTitleUnreadCycle),
                    (this.m_unTimerWindowTitleUnreadCycle = void 0));
                let n = 1 + t.length,
                  i = this.m_nWindowTitleUnreadCycleCount % n;
                if (i > 0) {
                  let n = t[i - 1];
                  return void (e.title = (0, A.we)(
                    "#WindowTitle_UnreadMessage",
                    n.name,
                  ));
                }
              }
              r.xm.UIStore.BIsFriendsListSingleWindow(this.m_browserContext) &&
              t.GetTitle()
                ? o.TS.IN_CLIENT
                  ? (e.title =
                      (0, A.we)("#WindowTitle_FriendsList") +
                      " - " +
                      t.GetTitle())
                  : (e.title = t.GetTitle())
                : (e.title = (0, A.we)("#WindowTitle_FriendsList"));
            })),
              (this.m_popupFocusDisposer = e.OnFocus(() => {
                r.xm.UIStore.BIsFriendsListSingleWindow(
                  this.m_browserContext,
                ) && this.props.tabset.OnWindowFocus();
              }));
          }
          UnbindWindowHandlers() {
            this.m_popupActionDisposer &&
              (this.m_popupActionDisposer(),
              (this.m_popupActionDisposer = void 0)),
              this.m_popupFocusDisposer &&
                (this.m_popupFocusDisposer.unregister(),
                (this.m_popupFocusDisposer = void 0));
          }
          componentWillUnmount() {
            this.UnbindWindowHandlers();
          }
          componentDidMount() {
            this.BindWindowHandlers(),
              (this.m_browserContext.m_eBrowserType !=
                fe.W.EBrowserType_OpenVROverlay &&
                this.m_browserContext.m_eBrowserType !=
                  fe.W.EBrowserType_OpenVROverlay_Dashboard) ||
                (this.m_refRoot.current.addEventListener(
                  "focusin",
                  this.OnFocusIn,
                ),
                this.m_refRoot.current.addEventListener(
                  "focusout",
                  this.OnFocusOut,
                ));
          }
          OnFocusIn(e) {
            let t = !1;
            switch (e.target.tagName) {
              case "TEXTAREA":
                t = !0;
                break;
              case "INPUT":
                t = "text" == e.target.type;
            }
            if (t) {
              e.currentTarget.ownerDocument.defaultView.SteamClient.OpenVR.ShowKeyboard(),
                console.log("Showing VR Keyboard"),
                (this.m_lastFocusElement = e.target),
                this.m_lastFocusElement.addEventListener(
                  "click",
                  this.OnTextInputClick,
                );
            }
          }
          OnFocusOut(e) {
            if (e.target == this.m_lastFocusElement) {
              e.currentTarget.ownerDocument.defaultView.SteamClient.OpenVR.HideKeyboard(),
                this.m_lastFocusElement.removeEventListener(
                  "click",
                  this.OnTextInputClick,
                ),
                (this.m_lastFocusElement = null),
                console.log("Hiding VR Keyboard");
            }
          }
          OnTextInputClick(e) {
            e.currentTarget.ownerDocument.defaultView.SteamClient.OpenVR.ShowKeyboard();
          }
          BindFriendsListContainer(e) {
            this.m_elFriendsListContainer = e;
          }
          OnGrabberMouseDown(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            this.setState({ bIsResizingWindow: !0 }),
              t.addEventListener("mousemove", this.HandleMouseMove),
              t.addEventListener(
                "mouseup",
                this.UnregisterFriendsListDragEvents,
              );
          }
          OnGrabberTouchStart(e) {
            let t = e.currentTarget.ownerDocument.defaultView;
            t.addEventListener("touchmove", this.HandleTouchMove),
              t.addEventListener(
                "touchend",
                this.UnregisterFriendsListDragEvents,
              );
          }
          HandleTouchMove(e) {
            e.touches.length >= 1 &&
              this.InternalAdjustFriendsListContainerOnDrag(
                e.touches[0].clientX,
              );
          }
          HandleMouseMove(e) {
            this.InternalAdjustFriendsListContainerOnDrag(e.clientX);
          }
          InternalAdjustFriendsListContainerOnDrag(e) {
            if (!this.m_elFriendsListContainer) return;
            let t = this.m_elFriendsListContainer.getBoundingClientRect().left;
            this.SetFriendsListSingleWindowWidth(e - t);
          }
          SetFriendsListSingleWindowWidth(e) {
            let t = (this.props.popup ? this.props.popup.window : window)
                .innerWidth,
              n = (0, Me.OQ)(t - 400, 200, 440);
            (e = (0, Me.OQ)(e, 200, n)),
              a.ZM.SetUIDisplayPref("nFriendsListSingleWindowWidthPx", e);
          }
          UnregisterFriendsListDragEvents(e) {
            this.setState({ bIsResizingWindow: !1 }),
              e.view.removeEventListener("mousemove", this.HandleMouseMove),
              e.view.removeEventListener("touchmove", this.HandleTouchMove),
              e.view.removeEventListener(
                "mouseup",
                this.UnregisterFriendsListDragEvents,
              ),
              e.view.removeEventListener(
                "touchend",
                this.UnregisterFriendsListDragEvents,
              );
          }
          render() {
            let e = !0,
              t = !0,
              n = r.xm.UIStore.BIsFriendsListSingleWindow(
                this.m_browserContext,
              ),
              i = r.xm.UIStore.GetPerContextChatData(this.m_browserContext),
              m = !1,
              u = !1;
            if (!n)
              if (this.m_ResponsiveWindowState) {
                let n = this.m_ResponsiveWindowState.GetActiveView();
                (e = n == s.OC.FriendsList), (t = n == s.OC.Chat);
              } else t = !1;
            let h = r.xm.UIStore.GetTheaterMode(),
              p = !(
                o.TS.IN_CLIENT ||
                h ||
                o.TS.IN_TENFOOT ||
                window.__bHideHeader
              ),
              _ = "chat_main fullheight",
              g = null;
            e && t
              ? (this.props.tabset.tabCount > 0 &&
                  ((u = !0),
                  (m = r.xm.UIStore.BIsFriendsListCollapsed(
                    this.m_browserContext,
                  ))),
                (_ += " singlewindow"),
                (g = d.createElement("div", {
                  className:
                    "singleWindowDivider" + (m ? " friendsListCollapsed" : ""),
                  onMouseDown: this.OnGrabberMouseDown,
                  onTouchStart: this.OnGrabberTouchStart,
                })))
              : e
                ? (_ += " responsive_friends")
                : t && (_ += " responsive_chats"),
              this.state.bIsResizingWindow && (_ += " resizingSingleWindow"),
              h && (_ += " TheaterMode"),
              this.props.popup && this.props.popup.focused && (_ += " focused"),
              r.xm.CMInterface.BDisconnected() &&
                !r.xm.FriendStore.BIsOfflineMode() &&
                (_ += " errorDisconnected");
            let C = this.props.popup && this.props.popup.window,
              f = m
                ? {
                    width: 0,
                    transition:
                      "width 0.32s ease-in-out, opacity 0.32s ease-in-out",
                  }
                : {
                    width:
                      a.ZM.UIDisplayPrefs.nFriendsListSingleWindowWidthPx +
                      "px",
                  };
            return r.xm.SettingsStore.IsSteamInTournamentMode()
              ? d.createElement(
                  "div",
                  { className: _, ref: this.m_refRoot },
                  d.createElement(
                    Ee.tH,
                    null,
                    d.createElement(ut, {
                      popup: this.props.popup
                        ? this.props.popup.window
                        : void 0,
                    }),
                  ),
                )
              : r.xm.ParentalStore.BIsFriendsBlocked()
                ? o.TS.IN_CLIENT
                  ? d.createElement(
                      "div",
                      { className: _ },
                      d.createElement(_e, null),
                    )
                  : (location.reload(), d.createElement("div", null))
                : d.createElement(
                    "div",
                    { className: _, onContextMenu: ye.aE, ref: this.m_refRoot },
                    d.createElement(
                      Ee.tH,
                      null,
                      d.createElement(ut, {
                        popup: this.props.popup
                          ? this.props.popup.window
                          : void 0,
                      }),
                    ),
                    p && d.createElement(lt, { friends: this.props.friends }),
                    d.createElement(
                      N.Z,
                      {
                        className: "chat_main_flex displayRow",
                        onCopy: this.OnCopy,
                      },
                      r.xm.ready_to_render &&
                        d.createElement(
                          Ee.tH,
                          null,
                          d.createElement(
                            De.EO,
                            {
                              browserInfo: this.m_browserContext,
                              bUsePopups: i.BUsePopups(),
                            },
                            e &&
                              d.createElement(
                                l.D,
                                {
                                  className:
                                    "friendsListContainer fullheight " +
                                    (m ? "collapsed" : ""),
                                  style: t ? f : null,
                                  ref: this.BindFriendsListContainer,
                                  rgAcceptedTypes: [],
                                  bAcceptsFiles: !0,
                                },
                                d.createElement(V.i$, {
                                  friends: this.props.friends,
                                  chats: this.props.chats,
                                  popup: C,
                                  browserContext: this.m_browserContext,
                                  collapsible: u,
                                  collapsed: m,
                                }),
                              ),
                            g,
                            t &&
                              d.createElement(c.yA, {
                                tabs: this.props.tabset,
                                popup: C,
                                ref: this.m_refChatDialog,
                                ResponsiveWindowState: e
                                  ? null
                                  : this.m_ResponsiveWindowState,
                                showOpenFriendsList: u && m,
                              }),
                            this.props.popup &&
                              o.TS.IN_CLIENT &&
                              d.createElement(Te.Z, { popup: C }),
                            d.createElement("div", {
                              className:
                                "singleWindowFocusBar chatSingleWindowFocusBar",
                            }),
                          ),
                        ),
                    ),
                  );
          }
        };
        (0, i.Cg)(
          [g.sH],
          st.prototype,
          "m_nWindowTitleUnreadCycleCount",
          void 0,
        ),
          (0, i.Cg)([E.oI], st.prototype, "OnCopy", null),
          (0, i.Cg)([E.oI], st.prototype, "OnFocusIn", null),
          (0, i.Cg)([E.oI], st.prototype, "OnFocusOut", null),
          (0, i.Cg)([E.oI], st.prototype, "OnTextInputClick", null),
          (0, i.Cg)([E.oI], st.prototype, "BindFriendsListContainer", null),
          (0, i.Cg)([E.oI], st.prototype, "OnGrabberMouseDown", null),
          (0, i.Cg)([E.oI], st.prototype, "OnGrabberTouchStart", null),
          (0, i.Cg)([E.oI], st.prototype, "HandleTouchMove", null),
          (0, i.Cg)([E.oI], st.prototype, "HandleMouseMove", null),
          (0, i.Cg)(
            [E.oI],
            st.prototype,
            "UnregisterFriendsListDragEvents",
            null,
          ),
          (st = (0, i.Cg)([u.PA], st));
        let lt = class extends d.Component {
          render() {
            let e = this.props.friends.self,
              t = o.TS.EREALM === Se.TU.k_ESteamRealmChina;
            return d.createElement(
              "div",
              { className: Le().SteamPageHeader },
              d.createElement(
                "a",
                { href: `${o.TS.STORE_BASE_URL}` },
                d.createElement("div", {
                  className: (0, re.A)(
                    Le().SteamPageHeaderShortLogo,
                    o.TS.EREALM == Se.TU.k_ESteamRealmChina
                      ? Le().LogoChina
                      : Le().LogoGlobal,
                  ),
                }),
              ),
              d.createElement(ct, {
                text: (0, A.we)("#StoreLink_Label"),
                href: `${o.TS.STORE_BASE_URL}`,
              }),
              !t &&
                d.createElement(ct, {
                  text: (0, A.we)("#CommunityLink_Label"),
                  href: `${o.TS.COMMUNITY_BASE_URL}`,
                }),
              d.createElement(ct, {
                text: e.primary_display_name,
                href: e.GetCommunityProfileURL(),
              }),
              d.createElement(ct, {
                text: (0, A.we)("#SupportLink_Label"),
                href: `${o.TS.HELP_BASE_URL}`,
              }),
            );
          }
        };
        function ct(e) {
          return d.createElement(
            "a",
            { className: Le().SteamPageHeaderTopLink, href: e.href },
            e.text,
          );
        }
        lt = (0, i.Cg)([u.PA], lt);
        class mt extends nt {
          m_tabSet;
          m_chats;
          m_popupActionDisposer;
          m_popupFocusDisposer;
          m_reactRoot;
          constructor(e, t, n, i, o, r, a) {
            let s = {
              title: "",
              html_class:
                "friendsui-container client_chat_frame fullheight ChatPopup",
              body_class: "fullheight",
              minWidth: 400,
              minHeight: 400,
              strRestoreDetails: o,
              dimensions: { width: 740, height: 650 },
              target_browser: e,
              eCreationFlags: Ie.Wf.Resizable,
            };
            a && (s.eCreationFlags |= Ie.Wf.Minimized),
              r &&
                (Object.assign(s.dimensions, r),
                (s.bIgnoreSavedDimensions = !0)),
              super("chat_" + t, n.GetTabSetIdentifier(), s, !0),
              (this.m_tabSet = n),
              (this.m_chats = i);
          }
          SetTitle() {
            if (this.m_popup && this.m_popup.document && this.m_tabSet) {
              let e = this.m_tabSet.GetTitle();
              this.m_popup.document.title = e;
            }
          }
          OnFocus() {
            this.m_tabSet.OnWindowFocus();
          }
          BindWindowHandlers() {
            this.m_popupActionDisposer ||
              (this.m_popupActionDisposer = (0, g.fm)(this.SetTitle));
          }
          UnbindWindowHandlers() {
            this.m_popupActionDisposer &&
              (this.m_popupActionDisposer(),
              (this.m_popupActionDisposer = void 0));
          }
          get tab_set() {
            return this.m_tabSet;
          }
          ClearTabSet() {
            this.m_tabSet = void 0;
          }
          OnResize() {
            r.xm.UIStore.OnTabSetResized(this.m_tabSet), super.OnResize();
          }
          OnBeforeUnload() {
            this.m_tabSet &&
              super.SetSavedDimensionsKey(this.m_tabSet.GetTabSetIdentifier()),
              super.OnBeforeUnload();
          }
          OnClose() {
            if (this.m_tabSet) {
              let e = !1;
              null != this.m_popup.window &&
                this.m_popup.window.SteamClient &&
                this.m_popup.window.SteamClient.Window &&
                this.m_popup.window.SteamClient.Window.ProcessShuttingDown &&
                (e =
                  this.m_popup.window.SteamClient.Window.ProcessShuttingDown()),
                this.m_tabSet.OnPopupClosed(e);
            }
            this.UnbindWindowHandlers(), this.m_reactRoot.unmount();
          }
          Render(e, t) {
            t.setAttribute("class", "fullheight popup_chat_frame"),
              this.BindWindowHandlers(),
              (this.m_reactRoot = ge.H(t)),
              this.m_reactRoot.render(
                d.createElement(dt, { popup: this, chatTabs: this.m_tabSet }),
              );
          }
        }
        (0, i.Cg)([E.oI], mt.prototype, "SetTitle", null);
        let dt = class extends d.Component {
          render() {
            let e = this.props.popup.window,
              t = this.props.chatTabs,
              n = "popup_chat_frame fullheight";
            return (
              this.props.popup.focused && (n += " focused"),
              r.xm.UIStore.GetTheaterMode() && (n += " TheaterMode"),
              r.xm.CMInterface.BDisconnected() && (n += " errorDisconnected"),
              d.createElement(
                Ye,
                { ownerWindow: e },
                d.createElement(
                  "div",
                  { className: n, onContextMenu: ye.aE },
                  d.createElement(ut, { popup: this.props.popup.window }),
                  d.createElement(
                    De.EO,
                    { browserInfo: this.props.popup.browser_info },
                    d.createElement(c.yA, {
                      tabs: t,
                      popup: e,
                      ResponsiveWindowState: null,
                    }),
                  ),
                  o.TS.IN_CLIENT && d.createElement(Te.Z, { popup: e }),
                ),
              )
            );
          }
        };
        dt = (0, i.Cg)([u.PA], dt);
        let ut = class extends d.Component {
          OnKeyDown(e) {
            e.preventDefault(), e.stopPropagation();
          }
          render() {
            return o.TS.IN_CLIENT
              ? r.xm.CMInterface.BDisconnected() &&
                !r.xm.FriendStore.BIsOfflineMode()
                ? d.createElement(
                    "div",
                    {
                      className: "ConnectionTrouble",
                      tabIndex: 0,
                      onKeyDown: this.OnKeyDown,
                    },
                    d.createElement(
                      "div",
                      { className: "ConnectionTroubleContent" },
                      d.createElement(Ae.c, {
                        hideMin: !0,
                        hideMax: !0,
                        popup: this.props.popup,
                      }),
                      d.createElement(
                        "div",
                        { className: "ConnectionTroubleMessage" },
                        (0, A.we)("#ConnectionTrouble_CurrentlyDisconnected"),
                      ),
                    ),
                  )
                : null
              : d.createElement(ht, null);
          }
        };
        (0, i.Cg)([E.oI], ut.prototype, "OnKeyDown", null),
          (ut = (0, i.Cg)([u.PA], ut));
        let ht = class extends d.Component {
          m_iIntervalDelayedStartup;
          m_iIntervalUpdateReconnectStatus;
          m_bRequestingNotificationPermission = !1;
          constructor(e) {
            super(e),
              (this.state = {
                bShouldRequestNotificationPermission: !0,
                bShowStartupDelayMessage: !1,
                bShowReconnectWaitMessage: !1,
                cReconnectWaitSeconds: 0,
              });
          }
          componentDidMount() {
            if (!r.xm.ready_to_render) {
              let e = performance.now() - r.xm.GetStartupTime();
              this.m_iIntervalDelayedStartup = window.setTimeout(() => {
                this.setState({ bShowStartupDelayMessage: !0 }),
                  (this.m_iIntervalDelayedStartup = void 0);
              }, 1500 - e);
            }
          }
          componentWillUnmount() {
            this.m_iIntervalDelayedStartup &&
              (window.clearTimeout(this.m_iIntervalDelayedStartup),
              (this.m_iIntervalDelayedStartup = void 0)),
              this.m_iIntervalUpdateReconnectStatus &&
                (window.clearInterval(this.m_iIntervalUpdateReconnectStatus),
                (this.m_iIntervalUpdateReconnectStatus = void 0));
          }
          IntervalUpdateReconnectWaitStatus() {
            let e = a.ZM.WebLogonManager;
            if (e.BIsWaitingToReconnect()) {
              let t = Math.ceil(e.GetMSUntilNextReconnectAttempt() / 1e3);
              t != this.state.cReconnectWaitSeconds &&
                this.setState({
                  bShowReconnectWaitMessage: !0,
                  cReconnectWaitSeconds: t,
                });
            } else
              window.clearInterval(this.m_iIntervalUpdateReconnectStatus),
                (this.m_iIntervalUpdateReconnectStatus = void 0),
                this.setState({
                  bShowReconnectWaitMessage: !1,
                  cReconnectWaitSeconds: 0,
                });
          }
          StartReconnectUpdateInterval() {
            this.m_iIntervalUpdateReconnectStatus ||
              (this.m_iIntervalUpdateReconnectStatus = window.setInterval(
                this.IntervalUpdateReconnectWaitStatus,
                250,
              ));
          }
          OnReconnectNowClick() {
            a.ZM.WebLogonManager.ReconnectNow();
          }
          OnLoginClick() {
            window.location.href = window.location.href;
          }
          render() {
            let e = a.ZM.WebLogonManager;
            if (
              ((0, S.w)(e, "No WebLogonManager in WebConnectionTroubleOverlay"),
              !e)
            )
              return null;
            let t = null,
              n = e.web_logon_state,
              i =
                !r.xm.NotificationManager.BNotificationsPermitted() &&
                this.state.bShouldRequestNotificationPermission;
            if (9 != n || i) {
              let o,
                a = "",
                s = !1,
                l = !1;
              if (9 != n)
                if (
                  r.xm.ready_to_render ||
                  this.state.bShowStartupDelayMessage ||
                  !e.BIsInInitialConnect()
                )
                  switch (n) {
                    case 1:
                    case 3:
                      (o = (0, A.we)("#ConnectionTrouble_Connecting")),
                        (l = !0);
                      break;
                    case 5:
                    case 7:
                      (o = (0, A.we)("#ConnectionTrouble_LoggingIn")), (l = !0);
                      break;
                    case 11:
                      (o = (0, A.we)("#ConnectionTrouble_RetrievingLogin")),
                        (l = !0);
                      break;
                    case 2:
                    case 4:
                    case 12:
                      o = (0, A.we)("#ConnectionTrouble_FailedToConnect");
                      break;
                    case 8:
                    case 6:
                      o = (0, A.we)("#ConnectionTrouble_FailedToLogIn");
                      break;
                    case 10:
                      o = (0, A.we)("#ConnectionTrouble_DisconnectedFinal");
                      break;
                    case 13:
                      (o = (0, A.we)("#ConnectionTrouble_LoginLost")), (s = !0);
                      break;
                    case 14:
                      (o = (0, A.we)("#ConnectionTrouble_LoginChanged")),
                        (s = !0);
                      break;
                    case 15:
                      o = (0, A.we)("#ConnectionTrouble_LoggedOnElsewhere");
                      break;
                    default:
                      (0, S.w)(!1, `No message for trouble state ${n}`);
                  }
                else a = "InitialConnect";
              else
                i &&
                  (this.m_bRequestingNotificationPermission ||
                    (r.xm.NotificationManager.RequestNotificationPermission().then(
                      () => {
                        (this.m_bRequestingNotificationPermission = !1),
                          this.setState({
                            bShouldRequestNotificationPermission: !1,
                          });
                      },
                    ),
                    (this.m_bRequestingNotificationPermission = !0)),
                  (a = "NotificationBrowserWarning"),
                  (o = (0, A.we)("#NotificationBrowserWarning")));
              let c = e.BIsWaitingToReconnect(),
                m = e.BWillAutoReconnect();
              !this.state.bShowReconnectWaitMessage &&
                m &&
                this.StartReconnectUpdateInterval(),
                (!o && r.xm.ready_to_render) ||
                  (t = d.createElement(
                    xe.M,
                    { classNames: "modalbg-anim", timeout: 300 },
                    (t) =>
                      d.createElement(
                        "div",
                        {
                          ref: t,
                          className:
                            "ConnectionTrouble WebConnectionTrouble" +
                            (r.xm.ready_to_render ? "" : " NotReadyToRender"),
                        },
                        d.createElement("div", { className: "" + a }),
                        d.createElement(
                          "div",
                          { className: "ConnectionTroubleContent" },
                          d.createElement(
                            "div",
                            { className: "ConnectionTroubleMessage " + a },
                            d.createElement(
                              "div",
                              { className: "errorMessageContainer" },
                              d.createElement(
                                "div",
                                {
                                  className:
                                    "connectionThrobber" +
                                    (l ? " showThrobber" : ""),
                                },
                                l && d.createElement(O.t, { size: "small" }),
                                " ",
                              ),
                              d.createElement(
                                "div",
                                null,
                                r.xm.ready_to_render
                                  ? o
                                  : (0, A.we)("#ConnectionTrouble_Connecting"),
                              ),
                            ),
                            c &&
                              m &&
                              d.createElement(
                                "div",
                                { className: "ReconnectWaitMessage" },
                                (0, A.Yp)(
                                  "#ConnectionTrouble_ReconnectingInSeconds",
                                  Math.ceil(
                                    e.GetMSUntilNextReconnectAttempt() / 1e3,
                                  ),
                                ),
                              ),
                            c &&
                              d.createElement(
                                "div",
                                {
                                  className:
                                    "ConnectionTroubleReconnectMessage",
                                },
                                d.createElement(
                                  "div",
                                  { className: "ReconnectNow" },
                                  d.createElement(
                                    "button",
                                    {
                                      type: "button",
                                      className: "DialogButton Primary",
                                      onClick: this.OnReconnectNowClick,
                                    },
                                    (0, A.we)(
                                      "#ConnectionTrouble_ReconnectNow",
                                    ),
                                  ),
                                ),
                              ),
                            s &&
                              d.createElement(
                                "div",
                                {
                                  className:
                                    "ConnectionTroubleReconnectMessage",
                                },
                                d.createElement(
                                  "div",
                                  { className: "ReconnectNow" },
                                  d.createElement(
                                    "button",
                                    {
                                      type: "button",
                                      className: "DialogButton Primary",
                                      onClick: this.OnLoginClick,
                                    },
                                    (0, A.we)(
                                      14 != n
                                        ? "#ConnectionTrouble_LoginAgain"
                                        : "#ConnectionTrouble_LoginChanged_Reload",
                                    ),
                                  ),
                                ),
                              ),
                          ),
                        ),
                      ),
                  ));
            }
            return d.createElement(Ce.A, null, t);
          }
        };
        (0, i.Cg)(
          [E.oI],
          ht.prototype,
          "IntervalUpdateReconnectWaitStatus",
          null,
        ),
          (0, i.Cg)([E.oI], ht.prototype, "OnReconnectNowClick", null),
          (0, i.Cg)([E.oI], ht.prototype, "OnLoginClick", null),
          (ht = (0, i.Cg)([u.PA], ht));
      },
      91466: (e, t, n) => {
        "use strict";
        n.d(t, {
          DH: () => c.W4,
          EO: () => g,
          EP: () => _,
          uU: () => u,
          xE: () => p,
        });
        var i = n(34629),
          o = n(78919),
          r = n(57382),
          a = n(41230),
          s = n(63696),
          l = n(31418),
          c = n(24803);
        function m(e) {
          return "currentTarget" in e
            ? e.currentTarget.ownerDocument.defaultView
            : e;
        }
        function d(e) {
          if (
            "undefined" != typeof SteamClient &&
            void 0 !== SteamClient.SharedConnection
          ) {
            return (0, o._k)(m(e)).m_unPID;
          }
          return 0;
        }
        function u(e) {
          let { bUseLinkFilter: t, href: n, bForceExternal: i } = e;
          return (
            t && n && ((n = (0, l.E)(n)), (i = !0)),
            s.createElement(c.uU, {
              ...e,
              href: n,
              bForceExternal: i,
              bUseLinkFilter: !1,
              getPIDFromEvent: d,
              onContextMenu: h,
            })
          );
        }
        function h(e) {
          let t = (0, o.CO)(e);
          return (0, c.AJ)(e, t.m_unPID);
        }
        function p(e, t) {
          let n = (0, o.CO)(e);
          return (0, c.xE)(e, t, n.m_unPID);
        }
        function _(e, t, n = !1) {
          let i = { bForceExternal: n, unPID: d(e) };
          return (0, c.EP)(m(e), t, i);
        }
        let g = class extends s.Component {
          render() {
            return s.createElement(
              s.Fragment,
              null,
              (0, r.j)(this.props.rtime, {
                bTimeOnly: this.props.bTimeOnly,
                bIncludeSeconds: this.props.bIncludeSeconds,
              }),
            );
          }
        };
        g = (0, i.Cg)([a.PA], g);
      },
      92089: (e, t, n) => {
        "use strict";
        n.d(t, {
          Hd: () => l,
          OJ: () => u,
          T4: () => m,
          Yj: () => g,
          js: () => _,
          mX: () => r,
          o0: () => h,
          wr: () => a,
        });
        var i = n(63696),
          o = n(77765);
        class r extends i.Component {
          GetArgument(e, t = !1) {
            return !e || (t && void 0 === this.props.args[e])
              ? this.props.args[""]
              : this.props.args[e];
          }
        }
        class a extends i.PureComponent {
          constructor(e) {
            super(e), (this.state = { failedToRender: !1 });
          }
          componentDidCatch(e, t) {
            this.setState({ failedToRender: !0 });
          }
          render() {
            if (this.state.failedToRender) return this.props.bbcode;
            {
              let e = this.props.bbcode;
              return (
                !0 !== this.props.bSkipTrimInput && (e = e.trim()),
                this.props.parser.ParseBBCode(e, this.props.context)
              );
            }
          }
        }
        function s(e, t, n = 0) {
          if (2 == t.type) {
            let e = t.text.indexOf("="),
              n = t.text.indexOf(" ");
            if ((-1 != n && (-1 == e || n < e) && (e = n), e > 0)) {
              t.tag = t.text.substr(0, e);
              let n = t.text.substr(e);
              t.args = (function (e) {
                if (!e || e.length < 1) return {};
                let t = {},
                  n = "",
                  i = "",
                  r = 0,
                  a = 0;
                "=" == e[0] && (r = 2);
                let s = !1;
                for (a++; a < e.length; a++) {
                  let l = e[a],
                    c = !0,
                    m = !1;
                  switch (r) {
                    case 0:
                      if ("=" == l) return {};
                      if (" " == l) continue;
                      r = 1;
                      break;
                    case 1:
                      ("=" != l && " " != l) ||
                        s ||
                        ((r = " " == l ? 0 : 2), (c = !1));
                      break;
                    case 2:
                      " " == l
                        ? ((r = 0), (c = !1), (m = !0))
                        : '"' == l
                          ? ((r = 4), (c = !1))
                          : (r = 3);
                      break;
                    case 3:
                    case 4:
                      ((" " == l && 4 != r && !s) ||
                        ('"' == l && 4 == r && !s)) &&
                        ((r = 0), (c = !1), (m = !0));
                  }
                  c &&
                    ("\\" != l || s
                      ? ((s = !1),
                        1 == r
                          ? (n += l)
                          : 3 == r || 4 == r
                            ? (i += l)
                            : (0, o.w)(
                                !1,
                                "Not expecting to accumulate buffer in state %u",
                                r,
                              ))
                      : (s = !0)),
                    m && ((t[n] = i), (n = ""), (i = ""));
                }
                0 != r && (t[n] = i);
                return t;
              })(n);
            } else (t.args = {}), (t.tag = t.text);
          }
          e.push(t);
          let i = new p();
          return (i.type = n), i;
        }
        function l(e) {
          let t = [],
            n = new p(),
            i = !1,
            o = !1;
          for (let r = 0; r < e.length; r++) {
            let a = e[r];
            switch (n.type) {
              case 0:
                "[" == a
                  ? ((n.type = 2), (o = !0))
                  : ((n.type = 1), "\\" == a ? (i = !i) : (n.text += a));
                break;
              case 2:
              case 3:
                "/" == a && o
                  ? ((n.type = 3), (n.text = ""), (o = !1))
                  : "[" != a || i
                    ? "]" != a || i
                      ? "\\" == a
                        ? ((n.text += a), (i = !i), (o = !1))
                        : ((n.text += a), (i = !1), (o = !1))
                      : (o && n.ConvertMalformedNodeToText(),
                        (n = s(t, n)),
                        (o = !1))
                    : (n.ConvertMalformedNodeToText(),
                      (n = s(t, n, 2)),
                      (o = !0));
                break;
              case 1:
                "[" != a || i
                  ? "\\" == a
                    ? (i && (n.text += a), (i = !i))
                    : ((n.text += a), (i = !1))
                  : ((n = s(t, n, 2)), (o = !0));
            }
          }
          return (
            0 != n.type &&
              ((2 != n.type && 3 != n.type) || n.ConvertMalformedNodeToText(),
              t.push(n)),
            t
          );
        }
        class c {
          m_dictComponents;
          constructor(e) {
            this.m_dictComponents = e;
          }
          dictComponents() {
            return this.m_dictComponents;
          }
        }
        class m extends c {
          constructor(e) {
            super(e);
          }
          ParseBBCode(e, t) {
            let n = l(e);
            return this.Parse_NotificationHandlers(n, t);
          }
          Parse_NotificationHandlers(e, t) {
            let n,
              i,
              o = this.dictComponents(),
              r = "";
            for (let t of e)
              if (2 == t.type) n || (n = []), n.push(t);
              else if (3 == t.type) {
                const e = n && n.pop();
                0 === n.length && e && e.tag == t.text && o[e.tag] && (i = e);
              } else 1 == t.type && (r += t.text);
            if (i)
              return o[i.tag]({
                context: t,
                tagname: i.tag,
                args: i.args,
                text: r,
              });
          }
        }
        class d {
          m_rctElements = [];
          AppendText(e, t, n) {
            e.length &&
              (t
                ? this.m_rctElements.push(
                    i.createElement(
                      "span",
                      {
                        "data-copytext": "",
                        "data-copystyle": "merge-adjacent",
                        "bbcode-text": e,
                      },
                      e,
                    ),
                  )
                : this.m_rctElements.push(e));
          }
          AppendNode(e, t) {
            this.m_rctElements.push(e);
          }
          GetElements(e) {
            return this.m_rctElements;
          }
        }
        class u extends d {
          AppendText(e, t, n) {
            let o = e,
              r = [];
            for (let e = o.indexOf("\n"); -1 !== e; e = o.indexOf("\n"))
              r.push(o.substr(0, e)),
                r.push(i.createElement("br")),
                (o = o.substr(e + 1));
            o.length && r.push(o),
              t
                ? this.m_rctElements.push(
                    i.createElement(
                      "span",
                      {
                        "data-copytext": "",
                        "data-copystyle": "merge-adjacent",
                        "bbcode-text": e,
                      },
                      ...r,
                    ),
                  )
                : this.m_rctElements.push(e);
          }
        }
        class h extends c {
          m_accumulatorType;
          constructor(e, t = d) {
            super(e), (this.m_accumulatorType = t);
          }
          ParseBBCode(e, t) {
            if (e.startsWith("[pre]"))
              return i.createElement(this.dictComponents().pre, null, g(e));
            if (e.startsWith("[code]"))
              return i.createElement(this.dictComponents().code, null, g(e));
            let n = l(e);
            return this.Parse_BuildReactComponents(n, t);
          }
          Parse_BuildReactComponents(e, t) {
            let n,
              o = new this.m_accumulatorType(),
              r = this.dictComponents();
            for (
              e.forEach((e, a) => {
                if (1 == e.type) o.AppendText(e.text, !n || 0 == n.length, t);
                else if (2 == e.type)
                  n || (n = []),
                    n.push({ accumulator: o, node: e }),
                    (o = new this.m_accumulatorType());
                else if (3 == e.type) {
                  let s = n && n.pop();
                  if (
                    s &&
                    s.node.tag === e.text &&
                    r.hasOwnProperty(s.node.tag) &&
                    r[s.node.tag]
                  ) {
                    const l = r[s.node.tag],
                      c = n.map((e) => e.node.tag),
                      m = {
                        context: t,
                        parentTags: c,
                        tagname: s.node.tag,
                        args: s.node.args,
                        key: `${e.tag}_${a}`,
                      },
                      d = i.createElement(l, m, ...o.GetElements(e));
                    (o = s.accumulator), o.AppendNode(d, e);
                  } else if (s) {
                    let n = s.accumulator;
                    n.AppendText("[" + s.node.text + "]", !1, t),
                      o.GetElements(e).forEach((e) => n.AppendNode(e)),
                      n.AppendText("[/" + e.text + "]", !1, t),
                      (o = n);
                  }
                }
              });
              n && n.length;
            ) {
              let e = n.pop(),
                i = e.accumulator;
              i.AppendText("[" + e.node.text + "]", !1, t),
                o.GetElements().forEach((e) => i.AppendNode(e)),
                (o = i);
            }
            let a = o.GetElements();
            return a.length > 1
              ? i.createElement(i.Fragment, null, ...a)
              : 1 == a.length
                ? a[0]
                : null;
          }
        }
        class p {
          type = 0;
          text = "";
          tag;
          args;
          ConvertMalformedNodeToText() {
            3 == this.type
              ? (this.text = "[/" + this.text)
              : 2 == this.type && (this.text = "[" + this.text),
              (this.type = 1);
          }
        }
        function _(e) {
          return e.replace(/[\[\\]/g, "\\$&");
        }
        function g(e) {
          let t = "",
            n = l(e.trim());
          for (let e of n) 1 == e.type && (t += e.text);
          return t;
        }
      },
      57382: (e, t, n) => {
        "use strict";
        n.d(t, { j: () => s });
        var i = n(58743),
          o = n(74002);
        let r = {
            TimeOfDay: new Intl.DateTimeFormat(o.pf.GetPreferredLocales(), {
              hour: "numeric",
              minute: "numeric",
            }),
            TimeOfDayWithSecs: new Intl.DateTimeFormat(
              o.pf.GetPreferredLocales(),
              { hour: "numeric", minute: "numeric", second: "numeric" },
            ),
            TimeInWeek: Intl.DateTimeFormat(o.pf.GetPreferredLocales(), {
              weekday: "long",
              hour: "numeric",
              minute: "numeric",
            }),
            FullTimestamp: Intl.DateTimeFormat(o.pf.GetPreferredLocales(), {
              weekday: "long",
              year: "numeric",
              month: "numeric",
              day: "numeric",
              hour: "numeric",
              minute: "numeric",
            }),
            FullTimestampNoWeekday: Intl.DateTimeFormat(
              o.pf.GetPreferredLocales(),
              {
                year: "numeric",
                month: "numeric",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
              },
            ),
          },
          a = {
            TimeOfDay: new Intl.DateTimeFormat(o.pf.GetPreferredLocales(), {
              hour: "numeric",
              minute: "numeric",
              hourCycle: "h23",
            }),
            TimeOfDayWithSecs: new Intl.DateTimeFormat(
              o.pf.GetPreferredLocales(),
              {
                hour: "numeric",
                minute: "numeric",
                second: "numeric",
                hourCycle: "h23",
              },
            ),
            TimeInWeek: Intl.DateTimeFormat(o.pf.GetPreferredLocales(), {
              weekday: "long",
              hour: "numeric",
              minute: "numeric",
              hourCycle: "h23",
            }),
            FullTimestamp: Intl.DateTimeFormat(o.pf.GetPreferredLocales(), {
              weekday: "long",
              year: "numeric",
              month: "numeric",
              day: "numeric",
              hour: "numeric",
              minute: "numeric",
              hourCycle: "h23",
            }),
            FullTimestampNoWeekday: Intl.DateTimeFormat(
              o.pf.GetPreferredLocales(),
              {
                year: "numeric",
                month: "numeric",
                day: "numeric",
                hour: "numeric",
                minute: "numeric",
                hourCycle: "h23",
              },
            ),
          };
        function s(e, t) {
          null == t.bIncludeWeekday && (t.bIncludeWeekday = !0),
            null == t.bRelativeDate && (t.bRelativeDate = !0);
          let n,
            s = i.xm.RTime32ToDate(e),
            l = i.xm.GetLocalMidnightInRTime32(),
            c = 86400,
            m = i.xm.SettingsStore.FriendsSettings.b24HourClock ? a : r,
            d = t.Format;
          null == d &&
            (d =
              t.bTimeOnly || e >= l - c
                ? t.bIncludeSeconds
                  ? m.TimeOfDayWithSecs
                  : m.TimeOfDay
                : t.bRelativeDate && e >= l - 432e3
                  ? m.TimeInWeek
                  : t.bIncludeWeekday
                    ? m.FullTimestamp
                    : m.FullTimestampNoWeekday);
          try {
            n = d.format(s);
          } catch (e) {
            n = (0, o.we)("#ChatRoom_Timestamp_InvalidDate");
          }
          return (
            !t.bTimeOnly &&
              t.bRelativeDate &&
              e >= l - c &&
              e < l &&
              (n = (0, o.we)("#ChatRoom_Timestamp_Yesterday", n)),
            n
          );
        }
      },
      50669: (e, t, n) => {
        "use strict";
        var i;
        function o(e) {
          return e === i.k_ESteamRealmChina;
        }
        n.d(t, { TU: () => i, nA: () => o }),
          (function (e) {
            (e[(e.k_ESteamRealmUnknown = 0)] = "k_ESteamRealmUnknown"),
              (e[(e.k_ESteamRealmGlobal = 1)] = "k_ESteamRealmGlobal"),
              (e[(e.k_ESteamRealmChina = 2)] = "k_ESteamRealmChina");
          })(i || (i = {}));
      },
      56132: (e, t, n) => {
        "use strict";
        function i(e) {
          return 3 == e || 6 == e;
        }
        function o(e) {
          return 5 == e || 6 == e;
        }
        n.d(t, {
          DO: () => I,
          ID: () => b,
          Iy: () => c,
          JP: () => u,
          Lg: () => S,
          ME: () => _,
          Rh: () => B,
          S$: () => i,
          TQ: () => g,
          aP: () => o,
          g5: () => m,
          iE: () => O,
          im: () => a,
          kF: () => p,
          ke: () => r,
          lm: () => d,
          sf: () => v,
          w1: () => s,
          wK: () => h,
          ww: () => C,
          x6: () => f,
          y4: () => l,
          zm: () => R,
        });
        const r = 1,
          a = 4,
          s = 7,
          l = 750,
          c = 799,
          m = 250820,
          d = 330050,
          u = 358510,
          h = 366490;
        const p = "18446744073709551615",
          _ = 0,
          g = 2147483647;
        function C(e, t = "en") {
          switch (e) {
            case 0:
              return "en";
            case 1:
              return "de";
            case 2:
              return "fr";
            case 3:
              return "it";
            case 4:
              return "ko";
            case 5:
              return "es";
            case 6:
              return "zh-cn";
            case 7:
              return "zh-tw";
            case 8:
              return "ru";
            case 9:
              return "th";
            case 10:
              return "ja";
            case 11:
              return "pt";
            case 12:
              return "pl";
            case 13:
              return "da";
            case 14:
              return "nl";
            case 15:
              return "fi";
            case 16:
              return "no";
            case 17:
              return "sv";
            case 18:
              return "hu";
            case 19:
              return "cs";
            case 20:
              return "ro";
            case 21:
              return "tr";
            case 25:
              return "ar";
            case 22:
              return "pt-br";
            case 23:
              return "bg";
            case 24:
              return "el";
            case 26:
              return "uk";
            case 27:
              return "es-419";
            case 28:
              return "vi";
            case 29:
              return "sc-sc";
            case 30:
              return "id";
            default:
              return t;
          }
        }
        const f = (e) => ("koreana" === e ? "korean" : e);
        function S(e, t = "") {
          switch (e) {
            case 0:
              return "english";
            case 1:
              return "german";
            case 2:
              return "french";
            case 3:
              return "italian";
            case 4:
              return "koreana";
            case 5:
              return "spanish";
            case 6:
              return "schinese";
            case 7:
              return "tchinese";
            case 8:
              return "russian";
            case 9:
              return "thai";
            case 10:
              return "japanese";
            case 11:
              return "portuguese";
            case 12:
              return "polish";
            case 13:
              return "danish";
            case 14:
              return "dutch";
            case 15:
              return "finnish";
            case 16:
              return "norwegian";
            case 17:
              return "swedish";
            case 18:
              return "hungarian";
            case 19:
              return "czech";
            case 20:
              return "romanian";
            case 21:
              return "turkish";
            case 25:
              return "arabic";
            case 22:
              return "brazilian";
            case 23:
              return "bulgarian";
            case 24:
              return "greek";
            case 26:
              return "ukrainian";
            case 27:
              return "latam";
            case 28:
              return "vietnamese";
            case 29:
              return "sc_schinese";
            case 30:
              return "indonesian";
            default:
              return t;
          }
        }
        function v(e, t = 0) {
          switch (e) {
            case "english":
              return 0;
            case "german":
              return 1;
            case "french":
              return 2;
            case "italian":
              return 3;
            case "korean":
            case "koreana":
              return 4;
            case "spanish":
              return 5;
            case "schinese":
              return 6;
            case "tchinese":
              return 7;
            case "russian":
              return 8;
            case "thai":
              return 9;
            case "japanese":
              return 10;
            case "portuguese":
              return 11;
            case "polish":
              return 12;
            case "danish":
              return 13;
            case "dutch":
              return 14;
            case "finnish":
              return 15;
            case "norwegian":
              return 16;
            case "swedish":
              return 17;
            case "hungarian":
              return 18;
            case "czech":
              return 19;
            case "romanian":
              return 20;
            case "turkish":
              return 21;
            case "arabic":
              return 25;
            case "brazilian":
              return 22;
            case "bulgarian":
              return 23;
            case "greek":
              return 24;
            case "ukrainian":
              return 26;
            case "latam":
              return 27;
            case "vietnamese":
              return 28;
            case "sc_schinese":
              return 29;
            case "indonesian":
              return 30;
            default:
              return t;
          }
        }
        function b(e) {
          switch (e) {
            default:
              break;
            case 4:
            case 1:
            case 7:
            case 8:
              return !0;
          }
          return !1;
        }
        function I(e) {
          switch (e) {
            default:
              break;
            case 4:
            case 1:
            case 8:
              return !0;
          }
          return !1;
        }
        var w, y, E, D, A, T, M, R, k, L, G, F, P, B, x, O;
        !(function (e) {
          (e[(e.k_EConnectivityTestResult_Unknown = 0)] =
            "k_EConnectivityTestResult_Unknown"),
            (e[(e.k_EConnectivityTestResult_Connected = 1)] =
              "k_EConnectivityTestResult_Connected"),
            (e[(e.k_EConnectivityTestResult_CaptivePortal = 2)] =
              "k_EConnectivityTestResult_CaptivePortal"),
            (e[(e.k_EConnectivityTestResult_TimedOut = 3)] =
              "k_EConnectivityTestResult_TimedOut"),
            (e[(e.k_EConnectivityTestResult_Failed = 4)] =
              "k_EConnectivityTestResult_Failed"),
            (e[(e.k_EConnectivityTestResult_WifiDisabled = 5)] =
              "k_EConnectivityTestResult_WifiDisabled"),
            (e[(e.k_EConnectivityTestResult_NoLAN = 6)] =
              "k_EConnectivityTestResult_NoLAN");
        })(w || (w = {})),
          (function (e) {
            (e[(e.k_ENetFakeLocalSystemState_Normal = 0)] =
              "k_ENetFakeLocalSystemState_Normal"),
              (e[(e.k_ENetFakeLocalSystemState_NoLAN = 1)] =
                "k_ENetFakeLocalSystemState_NoLAN"),
              (e[(e.k_ENetFakeLocalSystemState_CaptivePortal_Redirected = 2)] =
                "k_ENetFakeLocalSystemState_CaptivePortal_Redirected"),
              (e[(e.k_ENetFakeLocalSystemState_CaptivePortal_InPlace = 3)] =
                "k_ENetFakeLocalSystemState_CaptivePortal_InPlace"),
              (e[(e.k_ENetFakeLocalSystemState_NoInternet = 4)] =
                "k_ENetFakeLocalSystemState_NoInternet"),
              (e[(e.k_ENetFakeLocalSystemState_NoSteam = 5)] =
                "k_ENetFakeLocalSystemState_NoSteam");
          })(y || (y = {})),
          (function (e) {
            (e[(e.k_ESuspendResumeProgressState_Invalid = 0)] =
              "k_ESuspendResumeProgressState_Invalid"),
              (e[(e.k_ESuspendResumeProgressState_Complete = 1)] =
                "k_ESuspendResumeProgressState_Complete"),
              (e[(e.k_ESuspendResumeProgressState_CloudSync = 2)] =
                "k_ESuspendResumeProgressState_CloudSync"),
              (e[(e.k_ESuspendResumeProgressState_LoggingIn = 3)] =
                "k_ESuspendResumeProgressState_LoggingIn"),
              (e[(e.k_ESuspendResumeProgressState_WaitingForApp = 4)] =
                "k_ESuspendResumeProgressState_WaitingForApp"),
              (e[(e.k_ESuspendResumeProgressState_Working = 5)] =
                "k_ESuspendResumeProgressState_Working");
          })(E || (E = {})),
          (function (e) {
            (e[(e.k_EFloatingGamepadTextInputModeModeSingleLine = 0)] =
              "k_EFloatingGamepadTextInputModeModeSingleLine"),
              (e[(e.k_EFloatingGamepadTextInputModeModeMultipleLines = 1)] =
                "k_EFloatingGamepadTextInputModeModeMultipleLines"),
              (e[(e.k_EFloatingGamepadTextInputModeModeEmail = 2)] =
                "k_EFloatingGamepadTextInputModeModeEmail"),
              (e[(e.k_EFloatingGamepadTextInputModeModeNumeric = 3)] =
                "k_EFloatingGamepadTextInputModeModeNumeric");
          })(D || (D = {})),
          (function (e) {
            (e[(e.k_EAppUpdateContentType_Content = 0)] =
              "k_EAppUpdateContentType_Content"),
              (e[(e.k_EAppUpdateContentType_Workshop = 1)] =
                "k_EAppUpdateContentType_Workshop"),
              (e[(e.k_EAppUpdateContentType_Shader = 2)] =
                "k_EAppUpdateContentType_Shader"),
              (e[(e.k_EAppUpdateContentType_Max = 3)] =
                "k_EAppUpdateContentType_Max");
          })(A || (A = {})),
          (function (e) {
            (e[(e.k_EOverlayToStoreFlag_None = 0)] =
              "k_EOverlayToStoreFlag_None"),
              (e[(e.k_EOverlayToStoreFlag_AddToCart = 1)] =
                "k_EOverlayToStoreFlag_AddToCart"),
              (e[(e.k_EOverlayToStoreFlag_AddToCartAndShow = 2)] =
                "k_EOverlayToStoreFlag_AddToCartAndShow");
          })(T || (T = {})),
          (function (e) {
            (e[(e.k_EActivateGameOverlayToWebPageMode_Default = 0)] =
              "k_EActivateGameOverlayToWebPageMode_Default"),
              (e[(e.k_EActivateGameOverlayToWebPageMode_Modal = 1)] =
                "k_EActivateGameOverlayToWebPageMode_Modal");
          })(M || (M = {})),
          (function (e) {
            (e[(e.k_EGamingDeviceType_Unknown = 0)] =
              "k_EGamingDeviceType_Unknown"),
              (e[(e.k_EGamingDeviceType_StandardPC = 1)] =
                "k_EGamingDeviceType_StandardPC"),
              (e[(e.k_EGamingDeviceType_Console = 256)] =
                "k_EGamingDeviceType_Console"),
              (e[(e.k_EGamingDeviceType_PS3 = 272)] =
                "k_EGamingDeviceType_PS3"),
              (e[(e.k_EGamingDeviceType_Steambox = 288)] =
                "k_EGamingDeviceType_Steambox"),
              (e[(e.k_EGamingDeviceType_Tesla = 320)] =
                "k_EGamingDeviceType_Tesla"),
              (e[(e.k_EGamingDeviceType_Handheld = 512)] =
                "k_EGamingDeviceType_Handheld"),
              (e[(e.k_EGamingDeviceType_Phone = 528)] =
                "k_EGamingDeviceType_Phone"),
              (e[(e.k_EGamingDeviceType_SteamDeck = 544)] =
                "k_EGamingDeviceType_SteamDeck");
          })(R || (R = {})),
          (function (e) {
            (e[(e.k_ELoginUIStyleOld = 0)] = "k_ELoginUIStyleOld"),
              (e[(e.k_ELoginUIStyleNewWithoutQRCode = 1)] =
                "k_ELoginUIStyleNewWithoutQRCode"),
              (e[(e.k_ELoginUIStyleNew = 2)] = "k_ELoginUIStyleNew");
          })(k || (k = {})),
          (function (e) {
            (e[(e.k_ECommunityProfileItemProperty_ImageSmall = 0)] =
              "k_ECommunityProfileItemProperty_ImageSmall"),
              (e[(e.k_ECommunityProfileItemProperty_ImageLarge = 1)] =
                "k_ECommunityProfileItemProperty_ImageLarge"),
              (e[(e.k_ECommunityProfileItemProperty_InternalName = 2)] =
                "k_ECommunityProfileItemProperty_InternalName"),
              (e[(e.k_ECommunityProfileItemProperty_Title = 3)] =
                "k_ECommunityProfileItemProperty_Title"),
              (e[(e.k_ECommunityProfileItemProperty_Description = 4)] =
                "k_ECommunityProfileItemProperty_Description"),
              (e[(e.k_ECommunityProfileItemProperty_AppID = 5)] =
                "k_ECommunityProfileItemProperty_AppID"),
              (e[(e.k_ECommunityProfileItemProperty_TypeID = 6)] =
                "k_ECommunityProfileItemProperty_TypeID"),
              (e[(e.k_ECommunityProfileItemProperty_Class = 7)] =
                "k_ECommunityProfileItemProperty_Class"),
              (e[(e.k_ECommunityProfileItemProperty_MovieWebM = 8)] =
                "k_ECommunityProfileItemProperty_MovieWebM"),
              (e[(e.k_ECommunityProfileItemProperty_MovieMP4 = 9)] =
                "k_ECommunityProfileItemProperty_MovieMP4"),
              (e[(e.k_ECommunityProfileItemProperty_MovieWebMSmall = 10)] =
                "k_ECommunityProfileItemProperty_MovieWebMSmall"),
              (e[(e.k_ECommunityProfileItemProperty_MovieMP4Small = 11)] =
                "k_ECommunityProfileItemProperty_MovieMP4Small");
          })(L || (L = {})),
          (function (e) {
            (e[(e.k_ERaiseGameWindowResult_NotRunning = 1)] =
              "k_ERaiseGameWindowResult_NotRunning"),
              (e[(e.k_ERaiseGameWindowResult_Success = 2)] =
                "k_ERaiseGameWindowResult_Success"),
              (e[(e.k_ERaiseGameWindowResult_Failure = 3)] =
                "k_ERaiseGameWindowResult_Failure");
          })(G || (G = {})),
          (function (e) {
            (e[(e.k_EPositionInvalid = -1)] = "k_EPositionInvalid"),
              (e[(e.k_EPositionTopLeft = 0)] = "k_EPositionTopLeft"),
              (e[(e.k_EPositionTopRight = 1)] = "k_EPositionTopRight"),
              (e[(e.k_EPositionBottomLeft = 2)] = "k_EPositionBottomLeft"),
              (e[(e.k_EPositionBottomRight = 3)] = "k_EPositionBottomRight");
          })(F || (F = {})),
          (function (e) {
            (e[(e.k_EAppReleaseState_Unknown = 0)] =
              "k_EAppReleaseState_Unknown"),
              (e[(e.k_EAppReleaseState_Unavailable = 1)] =
                "k_EAppReleaseState_Unavailable"),
              (e[(e.k_EAppReleaseState_Prerelease = 2)] =
                "k_EAppReleaseState_Prerelease"),
              (e[(e.k_EAppReleaseState_PreloadOnly = 3)] =
                "k_EAppReleaseState_PreloadOnly"),
              (e[(e.k_EAppReleaseState_Released = 4)] =
                "k_EAppReleaseState_Released"),
              (e[(e.k_EAppReleaseState_Disabled = 5)] =
                "k_EAppReleaseState_Disabled");
          })(P || (P = {})),
          (function (e) {
            (e[(e.k_EGameIDTypeApp = 0)] = "k_EGameIDTypeApp"),
              (e[(e.k_EGameIDTypeGameMod = 1)] = "k_EGameIDTypeGameMod"),
              (e[(e.k_EGameIDTypeShortcut = 2)] = "k_EGameIDTypeShortcut"),
              (e[(e.k_EGameIDTypeP2P = 3)] = "k_EGameIDTypeP2P");
          })(B || (B = {})),
          (function (e) {
            (e[(e.k_EInstallMgrStateNone = 0)] = "k_EInstallMgrStateNone"),
              (e[(e.k_EInstallMgrStateSetup = 1)] = "k_EInstallMgrStateSetup"),
              (e[(e.k_EInstallMgrStateWaitLicense = 2)] =
                "k_EInstallMgrStateWaitLicense"),
              (e[(e.k_EInstallMgrStateFreeLicense = 3)] =
                "k_EInstallMgrStateFreeLicense"),
              (e[(e.k_EInstallMgrStateShowCDKey = 4)] =
                "k_EInstallMgrStateShowCDKey"),
              (e[(e.k_EInstallMgrStateWaitAppInfo = 5)] =
                "k_EInstallMgrStateWaitAppInfo"),
              (e[(e.k_EInstallMgrStateShowPassword = 6)] =
                "k_EInstallMgrStateShowPassword"),
              (e[(e.k_EInstallMgrStateShowConfig = 7)] =
                "k_EInstallMgrStateShowConfig"),
              (e[(e.k_EInstallMgrStateShowEULAs = 8)] =
                "k_EInstallMgrStateShowEULAs"),
              (e[(e.k_EInstallMgrStateCreateApps = 9)] =
                "k_EInstallMgrStateCreateApps"),
              (e[(e.k_EInstallMgrStateReadFromMedia = 10)] =
                "k_EInstallMgrStateReadFromMedia"),
              (e[(e.k_EInstallMgrStateShowChangeMedia = 11)] =
                "k_EInstallMgrStateShowChangeMedia"),
              (e[(e.k_EInstallMgrStateWaitLegacyCDKeys = 12)] =
                "k_EInstallMgrStateWaitLegacyCDKeys"),
              (e[(e.k_EInstallMgrStateShowSignup = 13)] =
                "k_EInstallMgrStateShowSignup"),
              (e[(e.k_EInstallMgrStateComplete = 14)] =
                "k_EInstallMgrStateComplete"),
              (e[(e.k_EInstallMgrStateFailed = 15)] =
                "k_EInstallMgrStateFailed"),
              (e[(e.k_EInstallMgrStateCanceled = 16)] =
                "k_EInstallMgrStateCanceled");
          })(x || (x = {})),
          (function (e) {
            (e[(e.k_EWindowBringToFrontInvalid = 0)] =
              "k_EWindowBringToFrontInvalid"),
              (e[(e.k_EWindowBringToFrontAndForceOS = 1)] =
                "k_EWindowBringToFrontAndForceOS"),
              (e[(e.k_EWindowBringToFrontWithoutForcingOS = 2)] =
                "k_EWindowBringToFrontWithoutForcingOS");
          })(O || (O = {}));
      },
      20045: (e, t, n) => {
        "use strict";
        n.d(t, { BK: () => s, W: () => i });
        var i, o, r, a;
        function s(e) {
          return (
            e == i.EBrowserType_OpenVROverlay ||
            e == i.EBrowserType_OpenVROverlay_Dashboard ||
            e == i.EBrowserType_OpenVROverlay_Subview
          );
        }
        !(function (e) {
          (e[(e.EBrowserType_OffScreen = 0)] = "EBrowserType_OffScreen"),
            (e[(e.EBrowserType_OpenVROverlay = 1)] =
              "EBrowserType_OpenVROverlay"),
            (e[(e.EBrowserType_OpenVROverlay_Dashboard = 2)] =
              "EBrowserType_OpenVROverlay_Dashboard"),
            (e[(e.EBrowserType_DirectHWND = 3)] = "EBrowserType_DirectHWND"),
            (e[(e.EBrowserType_DirectHWND_Borderless = 4)] =
              "EBrowserType_DirectHWND_Borderless"),
            (e[(e.EBrowserType_DirectHWND_Hidden = 5)] =
              "EBrowserType_DirectHWND_Hidden"),
            (e[(e.EBrowserType_ChildHWNDNative = 6)] =
              "EBrowserType_ChildHWNDNative"),
            (e[(e.EBrowserType_Offscreen_SteamUI = 12)] =
              "EBrowserType_Offscreen_SteamUI"),
            (e[(e.EBrowserType_OpenVROverlay_Subview = 13)] =
              "EBrowserType_OpenVROverlay_Subview");
        })(i || (i = {})),
          (function (e) {
            (e[(e.SystemKey0 = 0)] = "SystemKey0"),
              (e[(e.SystemKey1 = 1)] = "SystemKey1");
          })(o || (o = {})),
          (function (e) {
            (e[(e.Hidden = 0)] = "Hidden"),
              (e[(e.Notification = 1)] = "Notification"),
              (e[(e.Overlay = 2)] = "Overlay"),
              (e[(e.Opaque = 3)] = "Opaque"),
              (e[(e.OverlayKeyboard = 4)] = "OverlayKeyboard");
          })(r || (r = {})),
          (function (e) {
            (e[(e.MainGamepadUI = 0)] = "MainGamepadUI"),
              (e[(e.OverlayGamepadUI = 1)] = "OverlayGamepadUI"),
              (e[(e.Keyboard = 2)] = "Keyboard"),
              (e[(e.ControllerConfigurator = 3)] = "ControllerConfigurator"),
              (e[(e.VR = 4)] = "VR"),
              (e[(e.MainDesktopUI = 5)] = "MainDesktopUI"),
              (e[(e.DesktopLogin = 6)] = "DesktopLogin"),
              (e[(e.OverlayDesktopUI = 7)] = "OverlayDesktopUI"),
              (e[(e.SteamChinaReviewLauncher = 8)] =
                "SteamChinaReviewLauncher");
          })(a || (a = {}));
      },
      83749: (e, t, n) => {
        "use strict";
        n.d(t, { i_: () => o, vV: () => i });
        const i = {
          broadcastid: "0",
          nViewers: 0,
          nRequests: 0,
          bIsBroadcasting: !1,
          bIsRecordingDesktop: !1,
          bBroadcastCapable: !1,
        };
        var o;
        !(function (e) {
          (e[(e.k_EPending = 0)] = "k_EPending"),
            (e[(e.k_EAccepted = 1)] = "k_EAccepted"),
            (e[(e.k_ERejected = 2)] = "k_ERejected");
        })(o || (o = {}));
      },
      77522: (e, t, n) => {
        "use strict";
        var i;
        n.d(t, { l: () => i }),
          (function (e) {
            (e[(e.k_ERemoteClientLaunchOK = 1)] = "k_ERemoteClientLaunchOK"),
              (e[(e.k_ERemoteClientLaunchFail = 2)] =
                "k_ERemoteClientLaunchFail"),
              (e[(e.k_ERemoteClientLaunchRequiresUI = 3)] =
                "k_ERemoteClientLaunchRequiresUI"),
              (e[(e.k_ERemoteClientLaunchRequiresLaunchOption = 4)] =
                "k_ERemoteClientLaunchRequiresLaunchOption"),
              (e[(e.k_ERemoteClientLaunchRequiresEULA = 5)] =
                "k_ERemoteClientLaunchRequiresEULA"),
              (e[(e.k_ERemoteClientLaunchTimeout = 6)] =
                "k_ERemoteClientLaunchTimeout"),
              (e[(e.k_ERemoteClientLaunchStreamTimeout = 7)] =
                "k_ERemoteClientLaunchStreamTimeout"),
              (e[(e.k_ERemoteClientLaunchStreamClientFail = 8)] =
                "k_ERemoteClientLaunchStreamClientFail"),
              (e[(e.k_ERemoteClientLaunchOtherGameRunning = 9)] =
                "k_ERemoteClientLaunchOtherGameRunning"),
              (e[(e.k_ERemoteClientLaunchDownloadStarted = 10)] =
                "k_ERemoteClientLaunchDownloadStarted"),
              (e[(e.k_ERemoteClientLaunchDownloadNoSpace = 11)] =
                "k_ERemoteClientLaunchDownloadNoSpace"),
              (e[(e.k_ERemoteClientLaunchDownloadFiltered = 12)] =
                "k_ERemoteClientLaunchDownloadFiltered"),
              (e[(e.k_ERemoteClientLaunchDownloadRequiresUI = 13)] =
                "k_ERemoteClientLaunchDownloadRequiresUI"),
              (e[(e.k_ERemoteClientLaunchAccessDenied = 14)] =
                "k_ERemoteClientLaunchAccessDenied"),
              (e[(e.k_ERemoteClientLaunchNetworkError = 15)] =
                "k_ERemoteClientLaunchNetworkError"),
              (e[(e.k_ERemoteClientLaunchProgress = 16)] =
                "k_ERemoteClientLaunchProgress"),
              (e[(e.k_ERemoteClientLaunchParentalUnlockFailed = 17)] =
                "k_ERemoteClientLaunchParentalUnlockFailed"),
              (e[(e.k_ERemoteClientLaunchScreenLocked = 18)] =
                "k_ERemoteClientLaunchScreenLocked"),
              (e[(e.k_ERemoteClientLaunchUnsupported = 19)] =
                "k_ERemoteClientLaunchUnsupported"),
              (e[(e.k_ERemoteClientLaunchDisabledLocal = 20)] =
                "k_ERemoteClientLaunchDisabledLocal"),
              (e[(e.k_ERemoteClientLaunchDisabledRemote = 21)] =
                "k_ERemoteClientLaunchDisabledRemote"),
              (e[(e.k_ERemoteClientLaunchBroadcasting = 22)] =
                "k_ERemoteClientLaunchBroadcasting"),
              (e[(e.k_ERemoteClientLaunchBusy = 23)] =
                "k_ERemoteClientLaunchBusy"),
              (e[(e.k_ERemoteClientLaunchDriversNotInstalled = 24)] =
                "k_ERemoteClientLaunchDriversNotInstalled"),
              (e[(e.k_ERemoteClientLaunchTransportUnavailable = 25)] =
                "k_ERemoteClientLaunchTransportUnavailable"),
              (e[(e.k_ERemoteClientLaunchCanceled = 26)] =
                "k_ERemoteClientLaunchCanceled"),
              (e[(e.k_ERemoteClientLaunchInvisible = 27)] =
                "k_ERemoteClientLaunchInvisible"),
              (e[(e.k_ERemoteClientLaunchRestrictedCountry = 28)] =
                "k_ERemoteClientLaunchRestrictedCountry"),
              (e[(e.k_ERemoteClientLaunchUnauthorized = 29)] =
                "k_ERemoteClientLaunchUnauthorized");
          })(i || (i = {}));
      },
      32965: (e, t, n) => {
        "use strict";
        n.d(t, { u: () => i });
        function i() {
          return {
            bNotifications_ShowIngame: !0,
            bNotifications_ShowOnline: !1,
            bNotifications_ShowMessage: !0,
            bNotifications_EventsAndAnnouncements: !0,
            bSounds_PlayIngame: !1,
            bSounds_PlayOnline: !1,
            bSounds_PlayMessage: !0,
            bSounds_EventsAndAnnouncements: !1,
            bAlwaysNewChatWindow: !1,
            bForceAlphabeticFriendSorting: !1,
            nChatFlashMode: 0,
            bRememberOpenChats: !0,
            bCompactQuickAccess: !1,
            bCompactFriendsList: !1,
            bNotifications_ShowChatRoomNotification: !0,
            bSounds_PlayChatRoomNotification: !0,
            bHideOfflineFriendsInTagGroups: !1,
            bHideCategorizedFriends: !1,
            bCategorizeInGameFriendsByGame: !0,
            nChatFontSize: 2,
            b24HourClock: !1,
            bDoNotDisturbMode: !1,
            bDisableEmbedInlining: !1,
            bSignIntoFriends: !0,
            bDisableSpellcheck: !1,
            bDisableRoomEffects: !1,
            bAnimatedAvatars: !0,
            featuresEnabled: {},
          };
        }
      },
      48545: (e, t, n) => {
        "use strict";
        var i;
        n.d(t, { GQ: () => o, YI: () => r }),
          (function (e) {
            (e[(e.k_ELaunchOptionType_None = 0)] = "k_ELaunchOptionType_None"),
              (e[(e.k_ELaunchOptionType_Default = 1)] =
                "k_ELaunchOptionType_Default"),
              (e[(e.k_ELaunchOptionType_SafeMode = 2)] =
                "k_ELaunchOptionType_SafeMode"),
              (e[(e.k_ELaunchOptionType_Multiplayer = 3)] =
                "k_ELaunchOptionType_Multiplayer"),
              (e[(e.k_ELaunchOptionType_Config = 4)] =
                "k_ELaunchOptionType_Config"),
              (e[(e.k_ELaunchOptionType_OpenVR = 5)] =
                "k_ELaunchOptionType_OpenVR"),
              (e[(e.k_ELaunchOptionType_Server = 6)] =
                "k_ELaunchOptionType_Server"),
              (e[(e.k_ELaunchOptionType_Editor = 7)] =
                "k_ELaunchOptionType_Editor"),
              (e[(e.k_ELaunchOptionType_Manual = 8)] =
                "k_ELaunchOptionType_Manual"),
              (e[(e.k_ELaunchOptionType_Benchmark = 9)] =
                "k_ELaunchOptionType_Benchmark"),
              (e[(e.k_ELaunchOptionType_Option1 = 10)] =
                "k_ELaunchOptionType_Option1"),
              (e[(e.k_ELaunchOptionType_Option2 = 11)] =
                "k_ELaunchOptionType_Option2"),
              (e[(e.k_ELaunchOptionType_Option3 = 12)] =
                "k_ELaunchOptionType_Option3"),
              (e[(e.k_ELaunchOptionType_OculusVR = 13)] =
                "k_ELaunchOptionType_OculusVR"),
              (e[(e.k_ELaunchOptionType_OpenVROverlay = 14)] =
                "k_ELaunchOptionType_OpenVROverlay"),
              (e[(e.k_ELaunchOptionType_OSVR = 15)] =
                "k_ELaunchOptionType_OSVR"),
              (e[(e.k_ELaunchOptionType_OpenXR = 16)] =
                "k_ELaunchOptionType_OpenXR"),
              (e[(e.k_ELaunchOptionType_Dialog = 1e3)] =
                "k_ELaunchOptionType_Dialog");
          })(i || (i = {}));
        var o, r;
        !(function (e) {
          (e[(e.k_EComputerActiveStateInvalid = 0)] =
            "k_EComputerActiveStateInvalid"),
            (e[(e.k_EComputerActiveStateActive = 1)] =
              "k_EComputerActiveStateActive"),
            (e[(e.k_EComputerActiveStateIdle = 2)] =
              "k_EComputerActiveStateIdle");
        })(o || (o = {})),
          (function (e) {
            (e[(e.k_EClientUsedInputTypeKeyboard = 0)] =
              "k_EClientUsedInputTypeKeyboard"),
              (e[(e.k_EClientUsedInputTypeMouse = 1)] =
                "k_EClientUsedInputTypeMouse"),
              (e[(e.k_EClientUsedInputTypeController = 2)] =
                "k_EClientUsedInputTypeController"),
              (e[(e.k_EClientUsedInputTypeMax = 3)] =
                "k_EClientUsedInputTypeMax");
          })(r || (r = {}));
      },
      23812: (e, t, n) => {
        "use strict";
        n.d(t, {
          BA: () => c,
          Ii: () => l,
          b$: () => r,
          dO: () => m,
          fu: () => s,
          ml: () => a,
        });
        var i = n(63696),
          o = n(88796);
        function r() {
          return i.createRef();
        }
        const a = (0, o.HR)("div", { bDOMElementFocusByDefault: !1 }),
          s = (0, o.HR)("button", {
            bActivateByDefault: (e) => "submit" === e.type,
          }),
          l = (0, o.HR)("a", { bActivateByDefault: !0 }),
          c = (0, o.v0)("input"),
          m = (0, o.v0)("textarea");
        (0, o.HR)("img", { bDOMElementFocusByDefault: !1 }),
          (0, o.HR)("label", {
            bActivateByDefault: !0,
            bDOMElementFocusByDefault: !1,
          }),
          (0, o.HR)("section", { bFocusableByDefault: !1 }),
          (0, o.HR)("form", { bFocusableByDefault: !1 });
      },
      85562: (e, t, n) => {
        "use strict";
        n.d(t, { QI: () => s, Vu: () => a });
        var i = n(63696),
          o = n(8820);
        const r = i.createContext(void 0);
        function a() {
          return i.useContext(r);
        }
        function s() {
          return (0, o.gc)(a()?.GetShowDebugFocusRing()) ?? !1;
        }
      },
      60758: (e, t, n) => {
        "use strict";
        n.d(t, { bJ: () => a, nN: () => r });
        var i = n(63696);
        const o = i.createContext({ focusNavWindow: null, bSupportsFocus: !0 });
        function r() {
          return i.useContext(o)?.focusNavWindow;
        }
        function a(e = !0) {
          return i.useContext(o)?.bSupportsFocus ?? e;
        }
      },
      88796: (e, t, n) => {
        "use strict";
        n.d(t, {
          C7: () => y,
          sl: () => E,
          D0: () => A,
          sQ: () => I,
          HR: () => k,
          v0: () => L,
          TJ: () => b,
          qp: () => w,
        });
        var i = n(8820),
          o = n(63114),
          r = n(4452),
          a = n.n(r),
          s = n(63696),
          l = n(2377),
          c = n(50622),
          m = n(60758),
          d = n(23095),
          u = n(50115),
          h = n(87109),
          p = n(29588);
        const _ = s.createContext(function (e) {
          return {
            ShowVirtualKeyboard: () => {},
            ShowModalKeyboard: () => {},
            SetAsCurrentVirtualKeyboardTarget: () => {},
            HideVirtualKeyboard: () => {},
            DelayHideVirtualKeyboard: () => {},
            BIsActive: () => !1,
            BIsElementValidForInput: () => !1,
          };
        });
        function g(e, t) {
          const { onTextEntered: n, ...i } = e,
            r = s.useRef(null),
            a = s.useRef({});
          Object.assign(a.current, {
            ...i,
            BIsElementValidForInput: () =>
              r.current && document.activeElement == r.current,
          });
          const l = (function (e) {
              const t = s.useRef(),
                n = s.useContext(_);
              t.current || (t.current = n(e || {}));
              return t.current;
            })(a.current),
            c = s.useCallback(
              (e) => {
                (document.hasFocus() || document.activeElement != r.current) &&
                  (e.currentTarget == r.current
                    ? (l.BIsActive() || l.bInVR) && l.DelayHideVirtualKeyboard()
                    : console.warn(
                        "keyboard got blur event, but it's not the active element",
                      ));
              },
              [l],
            ),
            m = (0, o.QS)(
              (e) => {
                r.current = e;
                const t = [];
                return (
                  e &&
                    (e.addEventListener(
                      "focus",
                      l.SetAsCurrentVirtualKeyboardTarget,
                    ),
                    t.push(() =>
                      e.removeEventListener(
                        "focus",
                        l.SetAsCurrentVirtualKeyboardTarget,
                      ),
                    ),
                    e.addEventListener("click", l.ShowVirtualKeyboard),
                    t.push(() =>
                      e.removeEventListener("click", l.ShowVirtualKeyboard),
                    ),
                    t.push((0, u.VX)(e, l.ShowVirtualKeyboard)),
                    t.push((0, u.W1)(e, c))),
                  () => t.forEach((e) => e())
                );
              },
              [c, l],
            );
          return (
            s.useLayoutEffect(
              () => (
                (0, o.cZ)(t, {
                  TakeFocusAndShowKeyboard: () => {
                    const e = r.current;
                    e &&
                      (document.activeElement != e && e.focus(),
                      l.ShowVirtualKeyboard());
                  },
                  HideVirtualKeyboard: () => {
                    l.HideVirtualKeyboard();
                  },
                }),
                () => (0, o.cZ)(t, null)
              ),
              [l, t],
            ),
            m
          );
        }
        var C = n(85562);
        s.forwardRef(function (e, t) {
          const {
              navID: n,
              onActivated: i,
              onDeactivated: o,
              navTreeRef: r,
              enabled: a,
              modal: l,
              virtualFocus: c,
              parentEmbeddedNavTree: m,
              onGlobalButtonDown: d,
              disableFocusClasses: u,
              disabledRoot: h,
              "flow-children": p,
              ..._
            } = e,
            { elemProps: g, navOptions: C, gamepadEvents: S } = E(_);
          return s.createElement(
            f,
            {
              navID: n,
              onActivated: i,
              onDeactivated: o,
              navTreeRef: r,
              enabled: a,
              modal: l,
              virtualFocus: c,
              parentEmbeddedNavTree: m,
              onGlobalButtonDown: d,
              disableFocusClasses: u,
              disabledRoot: h,
              "flow-children": p,
              ...C,
              ...S,
            },
            s.createElement("div", { ...g, ref: t }),
          );
        });
        function f(e) {
          const {
              navID: t,
              onActivated: n,
              onDeactivated: r,
              navTreeRef: a,
              enabled: l = !0,
              modal: c = !1,
              virtualFocus: u = !1,
              children: h,
              parentEmbeddedNavTree: _,
              onGlobalButtonDown: g,
              disableFocusClasses: f = !1,
              disabledRoot: S = !1,
              "flow-children": I,
              ...w
            } = e,
            { elemProps: y, navOptions: D, gamepadEvents: A } = E(w),
            { refDiv: T, tree: M } = (function (e) {
              const {
                  navID: t,
                  virtualFocus: n,
                  parentEmbeddedNavTree: i,
                  disabledRoot: r,
                  enabled: a,
                  modal: l,
                  navTreeRef: c,
                  onGlobalButtonDown: d,
                } = e,
                u = (0, C.Vu)(),
                h = (0, m.nN)() || u.GetDefaultContext(),
                p = s.useContext(b),
                [_] = s.useState(() =>
                  u.NewGamepadNavigationTree(h, t, i ?? p?.Tree),
                );
              let g = s.useRef(null);
              return (
                _.SetUseVirtualFocus(n),
                _.SetModal(l),
                _.SetIsEmbeddedInLegacyTree(!!i),
                _.SetOnGlobalButtonDown(d),
                s.useEffect(
                  () => _.RegisterNavigationItem(_.Root, g.current),
                  [_, g],
                ),
                s.useEffect(() => {
                  _.SetIsEnabled(a);
                }, [_, a]),
                s.useEffect(() => {
                  if (!r)
                    return u.RegisterGamepadNavigationTree(
                      _,
                      g.current.ownerDocument.defaultView,
                    );
                }, [u, _, r]),
                s.useEffect(
                  () => ((0, o.cZ)(c, _), () => (0, o.cZ)(c, null)),
                  [c, _],
                ),
                { refDiv: g, tree: _ }
              );
            })({
              navID: t,
              virtualFocus: u,
              parentEmbeddedNavTree: _,
              disabledRoot: S,
              enabled: l,
              modal: c,
              onGlobalButtonDown: g,
              navTreeRef: a,
            });
          (0, i.hL)(M.OnActivateCallbacks, n),
            (0, i.hL)(M.OnDeactivateCallbacks, r),
            (0, d.KF)(A, T, M),
            s.useLayoutEffect(() => {
              const e = (0, p.O)(I);
              M.Root.SetProperties({ ...D, layout: e });
            });
          const R = (0, o.Ue)(T, h.ref);
          return s.createElement(
            v,
            { tree: S ? null : M, disableFocusClasses: f || S },
            s.createElement(
              b.Provider,
              { value: S ? null : M.Root },
              s.cloneElement(h, { id: t, "data-react-nav-root": t, ref: R }),
            ),
          );
        }
        const S = s.createContext({
          bActiveTree: !1,
          bActiveTreeWithinContext: !1,
          bDisableFocusClasses: !1,
        });
        function v(e) {
          const { tree: t, disableFocusClasses: n = !1, children: i } = e,
            [o, r] = s.useState(t?.BIsActive() || !1),
            [a, l] = s.useState(t?.BIsActiveWithinContext() || !1);
          s.useEffect(
            () =>
              t
                ? (r(t.BIsActive()),
                  l(t.BIsActiveWithinContext()),
                  t.OnActiveStateChangedCallbacks.Register(() => {
                    r(t.BIsActive()), l(t.BIsActiveWithinContext());
                  }).Unregister)
                : (r(!1), void l(!1)),
            [t],
          );
          const c = s.useMemo(
            () => ({
              bActiveTree: o,
              bActiveTreeWithinContext: a,
              bDisableFocusClasses: n,
            }),
            [o, n, a],
          );
          return s.createElement(S.Provider, { value: c }, i);
        }
        const b = s.createContext(null),
          I = s.createContext(h.CZ);
        function w(e) {
          const { navRef: t, ...n } = e,
            i = s.useRef(null),
            r = (0, s.useContext)(b),
            a = (0, s.useContext)(I),
            l = (function (e, t) {
              let n = s.useRef(null);
              return (
                !e ||
                  (n.current && n.current.m_Parent == e) ||
                  (n.current = e.Tree.CreateNode(e, t)),
                n.current
              );
            })(r, a);
          return (
            s.useLayoutEffect(() => {
              l && l.SetProperties(n);
            }),
            s.useLayoutEffect(() => {
              if (!r) return;
              const e = r.Tree.RegisterNavigationItem(l, i.current);
              return () => {
                e();
              };
            }, [r, l, i]),
            s.useLayoutEffect(() => {
              if (l && t)
                return (0, o.cZ)(t, l.CreateHandle()), () => (0, o.cZ)(t, null);
            }, [l, t]),
            { ref: i, node: l }
          );
        }
        function y(e) {
          const {
              onButtonDown: t,
              onButtonUp: n,
              onOKButton: i,
              onCancelButton: o,
              onSecondaryButton: r,
              onOptionsButton: a,
              onGamepadDirection: s,
              onGamepadFocus: l,
              onGamepadBlur: c,
              onMenuButton: m,
              onOKActionDescription: d,
              onCancelActionDescription: h,
              onSecondaryActionDescription: p,
              onOptionsActionDescription: _,
              onMenuActionDescription: g,
              actionDescriptionMap: C,
              ...f
            } = e,
            S = {};
          void 0 !== t && (S.onButtonDown = t),
            void 0 !== n && (S.onButtonUp = n),
            void 0 !== i && (S.onOKButton = i),
            void 0 !== o && (S.onCancelButton = o),
            void 0 !== r && (S.onSecondaryButton = r),
            void 0 !== a && (S.onOptionsButton = a),
            void 0 !== m && (S.onMenuButton = m),
            void 0 !== s && (S.onGamepadDirection = s),
            void 0 !== l && (S.onGamepadFocus = l),
            void 0 !== c && (S.onGamepadBlur = c);
          return {
            gamepadEvents: S,
            actionDescriptions: (0, u.Y3)({
              onOKActionDescription: d,
              onCancelActionDescription: h,
              onSecondaryActionDescription: p,
              onOptionsActionDescription: _,
              onMenuActionDescription: g,
              actionDescriptionMap: C,
            }),
            props: f,
          };
        }
        function E(e) {
          const {
              autoFocus: t,
              preferredFocus: n,
              disableNavSounds: i,
              fnCanTakeFocus: o,
              childFocusDisabled: r,
              retainFocus: a,
              onFocusWithin: s,
              navKey: l,
              noFocusRing: c,
              focusable: m,
              focusableIfNoChildren: d,
              navRef: u,
              actionDescriptionMap: h,
              onMoveUp: p,
              onMoveRight: _,
              onMoveDown: g,
              onMoveLeft: C,
              navEntryPreferPosition: f,
              scrollIntoViewWhenChildFocused: S,
              fnScrollIntoViewHandler: v,
              scrollIntoViewType: b,
              resetNavOnEntry: I,
              ...w
            } = e,
            { gamepadEvents: E, actionDescriptions: D, props: A } = y(w);
          return {
            elemProps: A,
            navOptions: {
              autoFocus: t,
              preferredFocus: n,
              disableNavSounds: i,
              fnCanTakeFocus: o,
              childFocusDisabled: r,
              retainFocus: a,
              onFocusWithin: s,
              navKey: l,
              noFocusRing: c,
              focusable: m,
              focusableIfNoChildren: d,
              navRef: u,
              onMoveUp: p,
              onMoveRight: _,
              onMoveDown: g,
              onMoveLeft: C,
              navEntryPreferPosition: f,
              scrollIntoViewWhenChildFocused: S,
              fnScrollIntoViewHandler: v,
              scrollIntoViewType: b,
              resetNavOnEntry: I,
              actionDescriptionMap: { ...h, ...D },
            },
            gamepadEvents: E,
          };
        }
        function D(e) {
          return function (t) {
            const {
                focusClassName: n,
                focusWithinClassName: o,
                bFocusableByDefault: r,
                className: l,
                divRef: c,
                node: d,
                tabIndex: u,
                children: h,
                ...p
              } = t,
              _ = (0, i.CH)(),
              g = (0, m.bJ)(),
              C = d.BHasFocus() && g,
              f = d.BFocusWithin() && g,
              {
                bActiveTree: v,
                bActiveTreeWithinContext: b,
                bDisableFocusClasses: I,
              } = s.useContext(S);
            (0, i.hL)(d.FocusCallbackList, _),
              (0, i.hL)(d.FocusWithinCallbackList, _);
            const w = v && !I,
              y = !b && (void 0 !== u || r);
            return s.createElement(
              e,
              {
                ...p,
                className: a()(l, C && w && n, f && w && o),
                tabIndex: y ? -1 : u,
                ref: c,
              },
              h,
            );
          };
        }
        const A = D("div");
        function T(e) {
          return (
            l.eZ.PlayNavSound(l.PN.DefaultOk),
            (0, c.kD)(e.currentTarget) && e.currentTarget.click(),
            !0
          );
        }
        const M = s.createContext(void 0);
        M.Provider;
        function R(e, t, n, i, r) {
          const {
              elemProps: {
                focusClassName: l,
                children: c,
                "flow-children": m,
                ...u
              },
              navOptions: h,
              gamepadEvents: _,
            } = E(n),
            {
              bFocusableByDefault: g = !0,
              bActivateByDefault: C = !1,
              bDOMElementFocusByDefault: f = g,
            } = r || {};
          void 0 === h.focusable && !u.disabled && g && (h.focusable = !0);
          const S = (0, p.O)(m),
            { ref: v, node: I } = w({ layout: S, ...h });
          _.onOKButton ||
            ((("onClick" in u && u.onClick) || (C && (!0 === C || C(u)))) &&
              (_.onOKButton = T)),
            h.focusable && !f
              ? (u.tabIndex = u.tabIndex || 0)
              : !h.focusable && f && (u.tabIndex = u.tabIndex ?? -1),
            (0, d.Ui)(_, v);
          const y = (0, o.Ue)(i, v),
            D = (0, s.useContext)(M)?.Component;
          if (!I)
            return s.createElement(
              e,
              { ...u, ref: y, className: a()(u.className, "Focusable") },
              c,
            );
          const A = {
            ...u,
            divRef: y,
            node: I,
            focusClassName: a()(l, "gpfocus"),
            focusWithinClassName: "gpfocuswithin",
            bFocusableByDefault: f,
            className: a()(u.className, "Focusable"),
          };
          return s.createElement(
            b.Provider,
            { value: I },
            D
              ? s.createElement(D, { ...A, Component: t }, c)
              : s.createElement(t, A, c),
          );
        }
        function k(e, t) {
          const n = D(e);
          return s.forwardRef(function (i, o) {
            return R(e, n, i, o, t);
          });
        }
        function L(e) {
          const t = D(e);
          return s.forwardRef(function (n, i) {
            const {
                virtualKeyboardProps: r,
                props: { refKeyboardHandle: a, ...s },
              } = (function (e) {
                const {
                  onEnterKeyPress: t,
                  strEnterKeyLabel: n,
                  onKeyboardNavOut: i,
                  onKeyboardShow: o,
                  onKeyboardFullyVisible: r,
                  onTextEntered: a,
                  BIsElementValidForInput: s,
                  ...l
                } = e;
                return {
                  virtualKeyboardProps: {
                    onEnterKeyPress: t,
                    strEnterKeyLabel: n,
                    onKeyboardNavOut: i,
                    onKeyboardShow: o,
                    onKeyboardFullyVisible: r,
                    onTextEntered: a,
                    BIsElementValidForInput: s,
                  },
                  props: l,
                };
              })(n),
              l = g(r, a),
              c = (0, o.Ue)(i, l);
            return R(e, t, s, c);
          });
        }
      },
      76482: (e, t, n) => {
        "use strict";
        n.d(t, { g: () => S, q: () => g });
        var i = n(63696),
          o = n(4452),
          r = n.n(o),
          a = n(8805),
          s = n(17070),
          l = n(87109),
          c = n(60758),
          m = n(85562),
          d = n(88796),
          u = n(13987),
          h = n.n(u),
          p = n(63114);
        const _ = new a.wd("FocusNavigation").Debug;
        function g(e) {
          const { children: t, ...n } = e,
            [o, r] = i.useState({
              bFocusWithin: !1,
              navTarget: null,
              prevTarget: null,
            }),
            a = i.useRef(null),
            s = i.useMemo(
              () => ({
                OnBlur: (e, t, n) => {
                  r({ bFocusWithin: !1, navTarget: null, prevTarget: null });
                },
                OnFocus: (e, t, n) => {
                  r({ bFocusWithin: !0, navTarget: t, prevTarget: null });
                },
                OnFocusChange: (e, t, n) => {
                  r({ bFocusWithin: !0, navTarget: n, prevTarget: t });
                },
                OnForceMeasureFocusRing: () => {
                  a.current?.MeasureElementAndUpdate();
                },
              }),
              [r],
            );
          return i.createElement(
            i.Fragment,
            null,
            i.createElement(C, { ...n, ...o, refMeasure: a }),
            i.createElement(d.sQ.Provider, { value: s }, t),
          );
        }
        function C(e) {
          const {
              rootClassName: t,
              className: n,
              bFocusWithin: o,
              navTarget: a,
              refMeasure: l,
            } = e,
            [d, u] = i.useState(null),
            p = (0, m.QI)(),
            _ = (0, s.Qn)(),
            g = (0, c.bJ)(!1);
          return _ || g
            ? i.createElement(
                "div",
                { className: r()(h().FocusRingRoot, t), ref: u },
                i.createElement(f, {
                  refMeasure: l,
                  className: r()(n, p && h().DebugFocusRing),
                  bFocusWithin: o && (g || p),
                  navTarget: a,
                  elContainer: d,
                  bDebug: p,
                }),
              )
            : null;
        }
        function f(e) {
          const {
              className: t,
              bFocusWithin: n,
              navTarget: o,
              elContainer: a,
              bDebug: s,
              refMeasure: l,
            } = e,
            [c, m] = i.useState(null),
            [d, u] = i.useReducer((e) => e + 1, 0),
            [g, C] = i.useReducer((e) => e + 1, 0);
          (0, p.D5)(
            l,
            i.useMemo(() => ({ MeasureElementAndUpdate: C }), []),
          );
          const f = (function (e, t) {
              const [n, o] = i.useState(!1);
              return (
                (0, i.useEffect)(() => {
                  if (e && t) {
                    let e = t.GetBoundingRect(),
                      n = t.Element;
                    const i = n.ownerDocument.defaultView,
                      r = (t) =>
                        "none" == i.getComputedStyle(t).display ||
                        (0 == e?.width &&
                          0 == e.height &&
                          0 == e.x &&
                          0 == e.y);
                    for (; r(n) && n?.parentElement; )
                      (n = n.parentElement), (e = n.getBoundingClientRect());
                    let a = t.Element != n;
                    o(
                      (e) => (
                        a &&
                          a != e &&
                          _(
                            "Focused on hidden item: ",
                            t.Element,
                            ". Closest visible ancestor: ",
                            n,
                          ),
                        a
                      ),
                    );
                  }
                }, [e, t]),
                n
              );
            })(s, o),
            S = i.useCallback(() => {
              if (!o || !o.BWantsFocusRing() || !a) return void m(null);
              let e = o.GetBoundingRect();
              const t = a.getBoundingClientRect(),
                n = {
                  left: e.x - t.x,
                  top: e.y - t.y,
                  height: e.height,
                  width: e.width,
                };
              m((e) =>
                e &&
                n.left == e.left &&
                n.top == e.top &&
                n.height == e.height &&
                n.width == e.width
                  ? e
                  : n,
              );
            }, [o, a]);
          i.useLayoutEffect(() => S(), [S]),
            i.useLayoutEffect(() => {
              u();
            }, [o]);
          let b = n;
          return (
            o && a && (o.BWantsFocusRing() || (b = !1)),
            i.useEffect(() => {
              if (!b) return;
              const e = performance.now();
              let t;
              const n = () => {
                S(),
                  performance.now() - e <= 500 &&
                    (t = requestAnimationFrame(n));
              };
              return n(), () => cancelAnimationFrame(t);
            }, [b, S, c, g]),
            b && c
              ? i.createElement(v, {
                  ...c,
                  key: d,
                  className: r()(t, f && h().FocusRingOnHiddenItem),
                  target: o,
                })
              : null
          );
        }
        function S(e) {
          const { children: t } = e;
          return (0, m.QI)()
            ? i.createElement(g, null, t)
            : i.createElement(d.sQ.Provider, { value: l.CZ }, t);
        }
        function v(e) {
          const {
              className: t,
              left: n,
              top: o,
              height: a,
              width: s,
              target: l,
            } = e,
            c = {
              left: (n ?? 0) - 0 + "px",
              top: (o ?? 0) - 0 + "px",
              height: a + "px",
              width: s + "px",
            };
          return i.createElement("div", {
            className: r()(h().FocusRing, t),
            style: c,
          });
        }
      },
      23095: (e, t, n) => {
        "use strict";
        n.d(t, { KF: () => c, Ui: () => s });
        var i = n(63696),
          o = n(8805),
          r = n(50115);
        const a = new o.wd("GamepadEvents").Debug;
        function s(e, t, n) {
          void 0 === n &&
            (n = [
              e.onButtonDown,
              e.onButtonUp,
              e.onOKButton,
              e.onCancelButton,
              e.onSecondaryButton,
              e.onOptionsButton,
              e.onMenuButton,
              e.onGamepadDirection,
              e.onGamepadFocus,
              e.onGamepadBlur,
            ]),
            i.useEffect(() => {
              let n = t.current;
              const i = [];
              return (
                n &&
                  (e.onButtonDown && i.push((0, r.nt)(n, e.onButtonDown)),
                  e.onButtonUp && i.push((0, r.SZ)(n, e.onButtonUp)),
                  e.onOKButton && i.push((0, r.VX)(n, e.onOKButton)),
                  e.onCancelButton && i.push((0, r.hr)(n, e.onCancelButton)),
                  e.onSecondaryButton &&
                    i.push((0, r.f)(n, e.onSecondaryButton)),
                  e.onOptionsButton && i.push((0, r.Ro)(n, e.onOptionsButton)),
                  e.onMenuButton && i.push((0, r.cR)(n, e.onMenuButton)),
                  e.onGamepadDirection &&
                    i.push((0, r.u8)(n, e.onGamepadDirection)),
                  e.onGamepadFocus && i.push((0, r.tV)(n, e.onGamepadFocus)),
                  e.onGamepadBlur && i.push((0, r.W1)(n, e.onGamepadBlur))),
                () => i.forEach((e) => e())
              );
            }, n);
        }
        function l(e) {
          return e.stopPropagation(), !1;
        }
        function c(e, t, n) {
          const { onButtonDown: o, ...r } = e,
            c = i.useCallback(
              (e) => {
                o && o(e),
                  a(
                    "Gamepad Event fired:",
                    e.detail.button,
                    ", handled:",
                    null != o,
                    ", propagation stopped:",
                    e.cancelBubble,
                  ),
                  e.cancelBubble || n.OnRootButtonDown(e);
              },
              [o, n],
            );
          s(r, t);
          s(
            {
              onButtonDown: c,
              onButtonUp: l,
              onOKButton: l,
              onCancelButton: l,
              onSecondaryButton: l,
              onOptionsButton: l,
              onMenuButton: l,
              onGamepadDirection: l,
              onGamepadFocus: l,
              onGamepadBlur: l,
            },
            t,
            [c],
          );
        }
      },
      69074: (e, t, n) => {
        "use strict";
        n.d(t, { Z: () => h });
        var i = n(63114),
          o = n(4452),
          r = n.n(o),
          a = n(63696),
          s = n(88796),
          l = n(7153),
          c = n(29588),
          m = n(60758),
          d = n(23095);
        const u = a.createContext({ Component: s.D0 });
        const h = a.forwardRef(function (e, t) {
          const {
              "flow-children": n,
              onActivate: o,
              onCancel: h,
              focusClassName: p,
              focusWithinClassName: _,
              ...g
            } = e,
            { elemProps: C, navOptions: f, gamepadEvents: S } = (0, s.sl)(g);
          let v = {};
          const b = (0, c.O)(n);
          b != l.xj.NONE && (v.layout = b),
            o &&
              ((C.onClick = C.onClick || o),
              (S.onOKButton = S.onOKButton || o)),
            S.onOKButton &&
              void 0 === f.focusable &&
              void 0 === f.focusableIfNoChildren &&
              (f.focusable = !0),
            h && (S.onCancelButton = S.onCancelButton || h);
          const { ref: I, node: w } = (0, s.qp)({ ...v, ...f }),
            y = (0, m.bJ)();
          (C.className = r()(C.className, "Panel", y && "Focusable")),
            (0, d.Ui)(S, I);
          const E = (0, i.Ue)(I, t);
          (!f.focusable && !f.focusableIfNoChildren) ||
            (w && w.Tree.BUseVirtualFocus()) ||
            (C.tabIndex = C.tabIndex || 0);
          const D = (0, a.useContext)(u).Component;
          return a.createElement(
            s.TJ.Provider,
            { value: w },
            w
              ? a.createElement(D, {
                  ...C,
                  divRef: E,
                  node: w,
                  focusClassName: r()(p, "gpfocus"),
                  focusWithinClassName: r()(_, "gpfocuswithin"),
                })
              : a.createElement("div", { ...C, ref: E }),
          );
        });
      },
      54829: (e, t, n) => {
        "use strict";
        n.d(t, { YZ: () => s });
        var i = n(63114),
          o = n(63696),
          r = n(69074),
          a = n(10853);
        const s = o.forwardRef(function (e, t) {
          const {
              onExplicitFocusLevelChanged: n,
              onOKButton: a,
              onCancelButton: s,
              navRef: c,
              focusable: m,
              ...d
            } = e,
            u = o.useRef(null),
            { fnOnOKButton: h, fnOnCancelButton: p } = l({
              navRefPanel: u,
              onOKButton: a,
              onCancelButton: s,
              onExplicitFocusLevelChanged: n,
            }),
            _ = (0, i.Ue)(c, u);
          return o.createElement(r.Z, {
            ...d,
            onOKButton: h,
            onCancelButton: p,
            navRef: _,
            ref: t,
            focusable: !1 !== m,
          });
        });
        o.forwardRef(function (e, t) {
          const {
              onOKButton: n,
              onCancelButton: r,
              navRef: s,
              focusable: c,
              ...m
            } = e,
            d = o.useRef(null),
            u = o.useRef(null),
            h = o.useCallback((e, t) => e.FocusVisibleChild(), []),
            { fnOnOKButton: p, fnOnCancelButton: _ } = l({
              navRefPanel: d,
              onOKButton: n,
              onCancelButton: r,
              fnFocusChildren: h,
            }),
            g = (0, i.Ue)(u, t),
            C = (0, i.Ue)(s, d);
          return o.createElement(a.Qg, {
            ...m,
            onOKButton: (e) => p?.(e),
            onCancelButton: _,
            navRef: C,
            ref: g,
            focusable: !1 !== c,
          });
        });
        function l(e) {
          let {
            navRefPanel: t,
            onOKButton: n,
            onCancelButton: i,
            onExplicitFocusLevelChanged: r,
            fnFocusChildren: a,
          } = e;
          a = a ?? c;
          return {
            fnOnOKButton: o.useCallback(
              (e) => {
                const i = t.current;
                return i?.BHasFocus() && a(i, e.detail.button)
                  ? (r && r(!0), !0)
                  : !!n && n(e);
              },
              [t, n, r, a],
            ),
            fnOnCancelButton: o.useCallback(
              (e) => {
                const n = t.current;
                return n?.BFocusWithin() &&
                  !n.BHasFocus() &&
                  n.TakeFocus(e.detail.button)
                  ? (r && r(!1), !0)
                  : !!i && i(e);
              },
              [t, i, r],
            ),
          };
        }
        function c(e, t) {
          return e.ChildTakeFocus(t);
        }
      },
      10853: (e, t, n) => {
        "use strict";
        n.d(t, { MS: () => S, Qg: () => v });
        var i = n(20270),
          o = n(63114),
          r = n(4452),
          a = n.n(r),
          s = n(63696),
          l = n(41659);
        function c(e, t, n) {
          const i = `${e}_HistoryValue`,
            o = (0, l.W6)(),
            r = (0, l.zy)(),
            a = (r.state && r.state[i]) ?? n,
            c = s.useRef(!1),
            m = s.useRef(),
            d = s.useRef(),
            u = s.useCallback(
              (e) => {
                if (c.current && ((m.current = e), !d.current)) {
                  const e = o.location.pathname;
                  d.current = window.setTimeout(() => {
                    o.location.pathname != e ||
                      (o.location.state && o.location.state[i] == m.current) ||
                      o.replace(o.location.pathname, {
                        ...(o.location.state || {}),
                        [i]: m.current,
                      }),
                      (d.current = void 0);
                  }, t);
                }
              },
              [o, i, t],
            );
          return (
            s.useEffect(() => {
              c.current = !0;
            }, []),
            [a, u]
          );
        }
        var m = n(7153),
          d = n(67520),
          u = n(84989),
          h = n(29359);
        function p(e, t = "smooth", n, i) {
          const o = (n ?? 30) / 100,
            r = s.useRef(void 0),
            a = s.useRef(void 0),
            l = s.useCallback(() => {
              (r.current = void 0), (a.current = void 0);
            }, []),
            c = (function (e, t) {
              const n = s.useRef();
              return s.useCallback(
                (i, o) => {
                  let r = "sine";
                  if (
                    (n.current && (n.current.Cancel(), (r = "linear")),
                    !e.current)
                  )
                    return;
                  void 0 === i && (i = e.current.scrollTop),
                    void 0 === o && (o = e.current.scrollLeft);
                  let a = Math.max(
                    Math.abs(e.current.scrollTop - i),
                    Math.abs(e.current.scrollLeft - o),
                  );
                  if (a > 0) {
                    let s = Math.max(Math.min((a / 1e3) * 200, 500), 300);
                    (n.current = new d.JV(
                      e.current,
                      { scrollTop: i, scrollLeft: o },
                      { msDuration: s, timing: r, onComplete: t },
                    )),
                      n.current.Start();
                  } else t && t();
                },
                [e, t],
              );
            })(e, l);
          return s.useCallback(
            (n) => {
              if (i && !i(n)) return !1;
              if (n.defaultPrevented) return !1;
              if (!e.current) return !1;
              const {
                  scrollTop: s,
                  scrollHeight: m,
                  clientHeight: d,
                  scrollLeft: u,
                  scrollWidth: p,
                  clientWidth: _,
                } = e.current,
                g = r.current ?? s,
                C = a.current ?? u;
              switch (n.detail.button) {
                case h.pR.DIR_UP:
                  if (g <= 2) return !1;
                  r.current = Math.max(0, g - d * o);
                  break;
                case h.pR.DIR_DOWN:
                  if (g >= m - d - 2) return !1;
                  r.current = Math.min(m - d, g + d * o);
                  break;
                case h.pR.DIR_LEFT:
                  if (C <= 2) return !1;
                  a.current = Math.max(0, C - _ * o);
                  break;
                case h.pR.DIR_RIGHT:
                  if (C >= p - _ - 2) return !1;
                  a.current = Math.min(p - _, C + _ * o);
                  break;
                default:
                  return !1;
              }
              return (
                t && "smooth" != t
                  ? (e.current.scrollTo({
                      top: r.current,
                      left: a.current,
                      behavior: "auto",
                    }),
                    l())
                  : c(r.current, a.current),
                !0
              );
            },
            [i, e, t, o, c, l],
          );
        }
        var _ = n(76482),
          g = n(69074),
          C = n(8804),
          f = n.n(C);
        const S = s.forwardRef(function (e, t) {
            const {
              scrollDirection: n,
              scrollPaddingTop: i,
              scrollPaddingRight: r,
              scrollPaddingBottom: l,
              scrollPaddingLeft: c,
              className: m,
              children: d,
              style: h,
              ...p
            } = e;
            let C;
            switch (n) {
              case "x":
                C = f().ScrollX;
                break;
              case "both":
                C = f().ScrollBoth;
                break;
              default:
                C = f().ScrollY;
            }
            let S = { ...h };
            (i || 0 === i) && (S.scrollPaddingTop = i),
              (r || 0 === r) && (S.scrollPaddingRight = r),
              (l || 0 === l) && (S.scrollPaddingBottom = l),
              (c || 0 === c) && (S.scrollPaddingLeft = c);
            const { ref: v, navRef: b } = (function () {
                const e = s.useRef(null),
                  t = s.useCallback(
                    (t) => {
                      window.requestAnimationFrame(() => {
                        e.current?.BFocusWithin() &&
                          e.current
                            .Node()
                            ?.GetLastFocusElement()
                            ?.scrollIntoView({
                              behavior: "auto",
                              block: "nearest",
                            });
                      });
                    },
                    [e],
                  );
                return { ref: (0, u.wY)(t), navRef: e };
              })(),
              I = (0, o.Ue)(b, p.navRef),
              w = (0, o.Ue)(v, t);
            return s.createElement(
              g.Z,
              {
                ...p,
                style: S,
                className: a()(m, f().ScrollPanel, C),
                ref: w,
                navRef: I,
              },
              s.createElement(_.q, null, d),
            );
          }),
          v = s.forwardRef(function (e, t) {
            const { scrollStepPercent: n, scrollBehavior: i, ...r } = e,
              a = s.useRef(null),
              l = p(
                a,
                i,
                n,
                s.useCallback((e) => e.currentTarget != e.target, []),
              ),
              c = (0, o.Ue)(a, t);
            return s.createElement(S, {
              ...r,
              onGamepadDirection: l,
              ref: c,
              scrollIntoViewType: m.Yo.NoTransformSparseContent,
            });
          });
        s.forwardRef(function (e, t) {
          const { name: n, msScrollRestoreDelay: i, onScroll: o, ...r } = e;
          return s.createElement(
            b,
            { name: n, msScrollRestoreDelay: i, parentOnScroll: o, refDiv: t },
            (e, t) => s.createElement(S, { ...r, onScroll: e, ref: t }),
          );
        }),
          s.forwardRef(function (e, t) {
            const { name: n, msScrollRestoreDelay: i, onScroll: o, ...r } = e;
            return s.createElement(
              b,
              {
                name: n,
                msScrollRestoreDelay: i,
                parentOnScroll: o,
                refDiv: t,
              },
              (e, t) => s.createElement(v, { ...r, onScroll: e, ref: t }),
            );
          });
        function b(e) {
          const {
              name: t,
              msScrollRestoreDelay: n,
              parentOnScroll: r,
              refDiv: a,
              children: l,
            } = e,
            [m, d] = c(`${t}ScrollTop`, 250, 0),
            [u, h] = c(`${t}ScrollLeft`, 250, 0),
            p = s.useRef(0),
            _ = s.useRef(0),
            g = s.useRef();
          let C = s.useCallback(
            (e) => {
              const { scrollTop: t, scrollLeft: n } = e.currentTarget;
              d(t), (p.current = t), h(n), (_.current = n), r && r(e);
            },
            [d, h, r],
          );
          s.useEffect(() => {
            const e = function () {
              g.current &&
                ((0, i.w)(
                  g.current.scrollHeight >= m,
                  `Element is ${g.current.scrollHeight} high but trying to restore scrollTop of ${m}, element may need more time to lay out.`,
                  g.current,
                ),
                (p.current = m),
                (_.current = u),
                g.current.scrollTo({ top: m, left: u, behavior: "auto" }),
                g.current.dispatchEvent(new UIEvent("scroll")));
            };
            (m == p.current && u == _.current) ||
              (n ? window.setTimeout(e, n) : e());
          }, [m, u, n]);
          const f = (0, o.Ue)(g, a);
          return s.useMemo(() => l(C, f), [C, f, l]);
        }
      },
      50115: (e, t, n) => {
        "use strict";
        n.d(t, {
          D$: () => i,
          Ro: () => d,
          SZ: () => s,
          VX: () => l,
          W1: () => _,
          Y3: () => C,
          cR: () => u,
          f: () => m,
          hr: () => c,
          nt: () => a,
          tV: () => p,
          u8: () => h,
        });
        var i,
          o = n(29359);
        !(function (e) {
          (e[(e.GAMEPAD = 0)] = "GAMEPAD"),
            (e[(e.KEYBOARD = 1)] = "KEYBOARD"),
            (e[(e.APPLICATION = 2)] = "APPLICATION"),
            (e[(e.BROWSER = 3)] = "BROWSER");
        })(i || (i = {}));
        o.pR.OK, o.pR.CANCEL, o.pR.SECONDARY, o.pR.OPTIONS, o.pR.START;
        function r(e, t, n) {
          return (
            e.addEventListener(t, n),
            () =>
              (function (e, t, n) {
                e.removeEventListener(t, n);
              })(e, t, n)
          );
        }
        function a(e, t) {
          return r(e, "vgp_onbuttondown", t);
        }
        function s(e, t) {
          return r(e, "vgp_onbuttonup", t);
        }
        function l(e, t) {
          return r(e, "vgp_onok", g(t));
        }
        function c(e, t) {
          return r(e, "vgp_oncancel", g(t));
        }
        function m(e, t) {
          return r(e, "vgp_onsecondaryaction", g(t));
        }
        function d(e, t) {
          return r(e, "vgp_onoptions", g(t));
        }
        function u(e, t) {
          return r(e, "vgp_onmenu", g(t));
        }
        function h(e, t) {
          return r(e, "vgp_ondirection", g(t));
        }
        function p(e, t) {
          return r(e, "vgp_onfocus", t);
        }
        function _(e, t) {
          return r(e, "vgp_onblur", t);
        }
        function g(e) {
          return (t) => {
            !1 !== e(t) && (t.stopPropagation(), t.preventDefault());
          };
        }
        function C(e) {
          const {
              onOKActionDescription: t,
              onCancelActionDescription: n,
              onSecondaryActionDescription: i,
              onOptionsActionDescription: r,
              onMenuActionDescription: a,
              actionDescriptionMap: s,
            } = e,
            l = { ...s };
          return (
            void 0 !== t && (l[o.pR.OK] = t),
            void 0 !== n && (l[o.pR.CANCEL] = n),
            void 0 !== i && (l[o.pR.SECONDARY] = i),
            void 0 !== r && (l[o.pR.OPTIONS] = r),
            void 0 !== a && (l[o.pR.START] = a),
            l
          );
        }
      },
      29359: (e, t, n) => {
        "use strict";
        var i, o;
        n.d(t, { pR: () => i }),
          (function (e) {
            (e[(e.INVALID = 0)] = "INVALID"),
              (e[(e.OK = 1)] = "OK"),
              (e[(e.CANCEL = 2)] = "CANCEL"),
              (e[(e.SECONDARY = 3)] = "SECONDARY"),
              (e[(e.OPTIONS = 4)] = "OPTIONS"),
              (e[(e.BUMPER_LEFT = 5)] = "BUMPER_LEFT"),
              (e[(e.BUMPER_RIGHT = 6)] = "BUMPER_RIGHT"),
              (e[(e.TRIGGER_LEFT = 7)] = "TRIGGER_LEFT"),
              (e[(e.TRIGGER_RIGHT = 8)] = "TRIGGER_RIGHT"),
              (e[(e.DIR_UP = 9)] = "DIR_UP"),
              (e[(e.DIR_DOWN = 10)] = "DIR_DOWN"),
              (e[(e.DIR_LEFT = 11)] = "DIR_LEFT"),
              (e[(e.DIR_RIGHT = 12)] = "DIR_RIGHT"),
              (e[(e.SELECT = 13)] = "SELECT"),
              (e[(e.START = 14)] = "START"),
              (e[(e.LSTICK_CLICK = 15)] = "LSTICK_CLICK"),
              (e[(e.RSTICK_CLICK = 16)] = "RSTICK_CLICK"),
              (e[(e.LSTICK_TOUCH = 17)] = "LSTICK_TOUCH"),
              (e[(e.RSTICK_TOUCH = 18)] = "RSTICK_TOUCH"),
              (e[(e.LPAD_TOUCH = 19)] = "LPAD_TOUCH"),
              (e[(e.LPAD_CLICK = 20)] = "LPAD_CLICK"),
              (e[(e.RPAD_TOUCH = 21)] = "RPAD_TOUCH"),
              (e[(e.RPAD_CLICK = 22)] = "RPAD_CLICK"),
              (e[(e.REAR_LEFT_UPPER = 23)] = "REAR_LEFT_UPPER"),
              (e[(e.REAR_LEFT_LOWER = 24)] = "REAR_LEFT_LOWER"),
              (e[(e.REAR_RIGHT_UPPER = 25)] = "REAR_RIGHT_UPPER"),
              (e[(e.REAR_RIGHT_LOWER = 26)] = "REAR_RIGHT_LOWER"),
              (e[(e.STEAM_GUIDE = 27)] = "STEAM_GUIDE"),
              (e[(e.STEAM_QUICK_MENU = 28)] = "STEAM_QUICK_MENU");
          })(i || (i = {})),
          (function (e) {
            (e[(e.UNKNOWN = 0)] = "UNKNOWN"),
              (e[(e.GAMEPAD = 1)] = "GAMEPAD"),
              (e[(e.KEYBOARD_SIMULATOR = 2)] = "KEYBOARD_SIMULATOR"),
              (e[(e.MOUSE = 3)] = "MOUSE"),
              (e[(e.TOUCH = 4)] = "TOUCH"),
              (e[(e.LPAD = 5)] = "LPAD"),
              (e[(e.RPAD = 6)] = "RPAD");
          })(o || (o = {}));
      },
      87109: (e, t, n) => {
        "use strict";
        n.d(t, {
          G4: () => C,
          UR: () => d,
          _V: () => h,
          kI: () => m,
          ko: () => g,
          xb: () => p,
          CZ: () => _,
          ix: () => u,
        });
        var i = n(29359),
          o = n(20270),
          r = n(50115);
        class a {
          m_root;
          constructor(e) {
            this.m_root = e;
          }
          static SerializeNavState(e, t = !0, n = !0) {
            return {
              root: a.SerializeNavNode(e, t, n),
              bHadFocus: e.BFocusWithin(),
            };
          }
          static SerializeNavNode(e, t = !0, n = !0) {
            let i = null;
            const [o, r] = e.GetChildren();
            return (
              o.length &&
                -1 != r &&
                t &&
                (i = o.map((e, t) => a.SerializeNavNode(e, t == r || n, n))),
              { sNavKey: e.NavKey, iActiveChild: r, rgChildren: i }
            );
          }
          static RestoreSerializedNavState(e, t, n = 0) {
            const { root: i, bHadFocus: o } = t;
            e.Tree.Controller.RestoreHistoryTransaction(() => {
              a.RestoreSerializedNavNode(e, i),
                (1 == n || (0 == n && o)) && e.BTakeFocus(r.D$.APPLICATION);
            });
          }
          static RestoreSerializedNavNode(e, t) {
            const { sNavKey: n, iActiveChild: i, rgChildren: r } = t;
            if (
              (n && (0, o.w)(n == e.NavKey, "navkey mismatch"),
              e.SetActiveChild(i),
              r && r.length)
            ) {
              const [t] = e.GetChildren();
              let n = new Map();
              t.forEach((e) => {
                e.NavKey && n.set(e.NavKey, e);
              });
              for (const e of r) {
                if (!e.sNavKey) continue;
                const t = n.get(e.sNavKey);
                t && a.RestoreSerializedNavNode(t, e);
              }
              if (-1 != i && r[i]?.sNavKey) {
                const o = n.get(r[i].sNavKey);
                o && e.SetActiveChild(t.indexOf(o));
              }
              let o = 0,
                s = 0;
              for (; o < t.length && s < r.length; ) {
                for (; o < t.length && t[o].NavKey; ) o++;
                for (; s < r.length && r[s].sNavKey; ) s++;
                if (o >= t.length || s >= r.length) break;
                a.RestoreSerializedNavNode(t[o], r[s]), o++, s++;
              }
            }
          }
        }
        class s extends a {
          m_rgHistory = [];
          PushState() {
            this.m_rgHistory.push(a.SerializeNavState(this.m_root));
          }
          PopState(e = 0) {
            this.m_rgHistory.length &&
              a.RestoreSerializedNavState(
                this.m_root,
                this.m_rgHistory.pop(),
                e,
              );
          }
        }
        class l extends a {
          m_mapHistory = new Map();
          SaveState(e) {
            this.m_mapHistory.set(e, a.SerializeNavState(this.m_root));
          }
          RestoreState(e, t = 0) {
            const n = this.m_mapHistory.get(e);
            return (
              !!n &&
              (console.log(`Restoring history for state ${e}`),
              a.RestoreSerializedNavState(this.m_root, n, t),
              !0)
            );
          }
        }
        var c = n(7153);
        class m {
          m_node;
          m_History;
          m_StateHistory;
          constructor(e) {
            this.m_node = e;
          }
          TakeFocus(e) {
            return this.m_node.BTakeFocus(
              e ? r.D$.GAMEPAD : r.D$.APPLICATION,
              e,
            );
          }
          ParentTakeFocus(e) {
            this.m_node.Parent?.BTakeFocus(
              e ? r.D$.GAMEPAD : r.D$.APPLICATION,
              e,
            );
          }
          ChildTakeFocus(e) {
            return this.m_node.BChildTakeFocus(
              e ? r.D$.GAMEPAD : r.D$.APPLICATION,
              e,
            );
          }
          FocusVisibleChild(e) {
            return this.m_node.BVisibleChildTakeFocus(e);
          }
          BHasFocus() {
            return this.m_node.BHasFocus();
          }
          BFocusWithin() {
            return this.m_node.BFocusWithin();
          }
          get NavKey() {
            return this.m_node.NavKey;
          }
          PushState() {
            this.m_History || (this.m_History = new s(this.m_node)),
              this.m_History.PushState();
          }
          PopState(e = 0) {
            this.m_History && this.m_History.PopState(e);
          }
          SaveState(e) {
            this.m_StateHistory || (this.m_StateHistory = new l(this.m_node)),
              this.m_StateHistory.SaveState(e);
          }
          RestoreState(e, t = 0) {
            return (
              !!this.m_StateHistory && this.m_StateHistory.RestoreState(e, t)
            );
          }
          GetFocusSnapshot() {
            return (e = this.m_node), a.SerializeNavState(e, !0, !1);
            var e;
          }
          RestoreFocusSnapshot(e, t = 0) {
            return (function (e, t, n = 0) {
              return a.RestoreSerializedNavState(e, t, n);
            })(this.m_node, e, t);
          }
          NavTree() {
            return this.m_node.Tree;
          }
          Node() {
            return this.m_node;
          }
        }
        function d(e, t, n, i = 0.001) {
          return "x" == e
            ? t.x + t.width > n.x + i && t.x + i < n.x + n.width
            : "y" == e
              ? t.y + t.height > n.y + i && t.y + i < n.y + n.height
              : ((0, o.w)(!1, `Invalid axis ${e}`), !1);
        }
        function u(e, t, n) {
          let i;
          return (
            "x" == e
              ? (i =
                  Math.min(t.x + t.width, n.x + n.width) - Math.max(t.x, n.x))
              : "y" == e
                ? (i =
                    Math.min(t.y + t.height, n.y + n.height) -
                    Math.max(t.y, n.y))
                : ((0, o.w)(!1, `Invalid axis ${e}`), (i = 0)),
            i < 0 ? 0 : i
          );
        }
        function h(e, t, n) {
          const i = t[e],
            o = (function (e, t) {
              return "x" == e
                ? { min: t.x, max: t.x + t.width }
                : { min: t.y, max: t.y + t.height };
            })(e, n);
          return i < o.min ? o.min - i : i > o.max ? i - o.max : 0;
        }
        function p(e) {
          return { x: e.x, y: e.y };
        }
        const _ = {
          OnBlur: () => {},
          OnFocus: () => {},
          OnFocusChange: () => {},
          OnForceMeasureFocusRing: () => {},
        };
        function g(e) {
          if (!e) return c.xj.NONE;
          const t = e.ownerDocument.defaultView,
            n = t.getComputedStyle(e);
          if ("flex" == n.display)
            switch (n.flexDirection) {
              case "row":
                return "wrap" == n.flexWrap ? c.xj.GRID : c.xj.ROW;
              case "row-reverse":
                return c.xj.ROW_REVERSE;
              case "column":
                return c.xj.COLUMN;
              case "column-reverse":
                return c.xj.COLUMN_REVERSE;
            }
          else {
            if ("grid" == n.display) return c.xj.GRID;
            if (e.childElementCount > 0) {
              const n = t.getComputedStyle(e.firstElementChild);
              if ("left" === n.float) return c.xj.ROW;
              if ("right" === n.float) return c.xj.ROW_REVERSE;
              if ("inline" === n.display || "inline-block" === n.display)
                return c.xj.GRID;
            }
          }
          return c.xj.COLUMN;
        }
        function C(e) {
          switch (e) {
            case i.pR.DIR_UP:
            case i.pR.DIR_DOWN:
              return "y";
            case i.pR.DIR_LEFT:
            case i.pR.DIR_RIGHT:
              return "x";
            default:
              return;
          }
        }
      },
      7153: (e, t, n) => {
        "use strict";
        n.d(t, { $C: () => z, xj: () => U, iU: () => H, Yo: () => W });
        var i = n(34629),
          o = n(29359),
          r = n(51860),
          a = n(20270),
          s = n(69450),
          l = n(10665),
          c = n(8805);
        var m = n(50115),
          d = n(87109),
          u = n(50622);
        function h(e, t, n) {
          const i = [],
            [o, r] = e.GetChildren(),
            a = e.GetActiveChild();
          let s;
          const l = a ? a.Element?.getBoundingClientRect() : null;
          if (a) {
            const e = g(a, t, n);
            if (
              e &&
              !e.offScreen &&
              ((s = p(a, e, e.overlap, n)), s && !s.visibility.offScreen)
            )
              return s;
            e && i.push({ child: a, visibility: e });
          }
          const c = n || l;
          for (let e = 0; e < o.length; e++) {
            const n = o[e];
            if (n == a) continue;
            const r = g(n, t, c ?? void 0);
            r && i.push({ child: n, visibility: r });
          }
          let m;
          i.sort(_);
          for (const e of i) {
            const { child: n, visibility: i } = e;
            if (i.offScreen && m) {
              if (!m.visibility.offScreen) break;
              if (i.distance && i.distance > m.visibility.distance) break;
            }
            const o = n == a ? s : p(n, i, i.overlap || t, c ?? void 0);
            o && (!m || _(o, m) < 0) && (m = o);
          }
          return m;
        }
        function p(e, t, n, i) {
          switch (e.GetFocusable()) {
            case "none":
              return;
            case "children":
              return h(e, t.overlap || n, i);
            case "self":
              return { child: e, visibility: t };
          }
        }
        function _(e, t) {
          const n = e.visibility,
            i = t.visibility;
          return n.offScreen
            ? i.offScreen
              ? n.distance - i.distance
              : 1
            : i.offScreen
              ? -1
              : n.distance - i.distance;
        }
        function g(e, t, n) {
          const i = e.Element?.getBoundingClientRect(),
            o = e.GetFocusable();
          let r;
          if ("none" == o || !i || !t) return null;
          if ("self" == o) {
            if (
              i.top < t.top ||
              i.right > t.right ||
              i.bottom > t.bottom ||
              i.left < t.left
            ) {
              const e = i.top + i.height / 2,
                n = i.left + i.width / 2;
              if (e < t.top) return { offScreen: "top", distance: t.top - e };
              if (n > t.right)
                return { offScreen: "right", distance: n - t.right };
              if (e > t.bottom)
                return { offScreen: "bottom", distance: e - t.bottom };
              if (n < t.left)
                return { offScreen: "left", distance: t.left - n };
            }
            n && (r = (0, u.bZ)(i, n));
          } else if ("children" == o) {
            const n = e.Element;
            if (!n) return null;
            if (n.scrollHeight > i.height || n.scrollWidth > i.width) {
              const e = n.ownerDocument.defaultView.getComputedStyle(n);
              if ("visible" == e.overflowX || "visible" == e.overflowY)
                return { overlap: t };
            }
            if (i.bottom < t.top)
              return { offScreen: "top", distance: t.top - i.bottom };
            if (i.left > t.right)
              return { offScreen: "right", distance: i.left - t.right };
            if (i.top > t.bottom)
              return { offScreen: "bottom", distance: i.top - t.bottom };
            if (i.right < t.left)
              return { offScreen: "left", distance: t.left - i.right };
          }
          return {
            overlap: {
              top: Math.max(i.top, t.top),
              right: Math.min(i.right, t.right),
              bottom: Math.min(i.bottom, t.bottom),
              left: Math.max(i.left, t.left),
            },
            distance: r,
          };
        }
        function C(e, t, n) {
          return null == e || isNaN(e) ? e : Math.max(t, Math.min(n, e));
        }
        function f(e) {
          return null != e && void 0 !== e.focus;
        }
        function S(e) {
          let t;
          return e && (t = e.ownerDocument.defaultView), t;
        }
        function v(e, t) {
          let n = e?.parentElement;
          for (; n; ) {
            if (f(n)) {
              if (!t || "x" == t) {
                const e = window.getComputedStyle(n);
                if (
                  "scroll" == e.overflowX ||
                  "auto" == e.overflowX ||
                  "fixed" == e.position
                )
                  break;
              }
              if (!t || "y" == t) {
                const e = window.getComputedStyle(n);
                if (
                  "scroll" == e.overflowY ||
                  "auto" == e.overflowY ||
                  "fixed" == e.position
                )
                  break;
              }
            }
            n = n.parentElement;
          }
          return f(n) ? n : null;
        }
        function b(e, t) {
          if (!("ownerDocument" in e)) return !0;
          const n = e.ownerDocument.defaultView.getComputedStyle(e),
            i = "x" === t ? n.overflowX : n.overflowY;
          return "auto" === i || "scroll" === i;
        }
        class I {
          m_options;
          m_msStart;
          m_msEnd;
          m_bActive = !1;
          m_fnBoundAnimationFunc = void 0;
          m_window;
          constructor(e, t) {
            (this.m_window = e), (this.m_options = { timing: "sine", ...t });
          }
          Start() {
            let e;
            switch (
              ((this.m_msStart = performance.now()),
              (this.m_msEnd = this.m_msStart + this.m_options.msDuration),
              this.m_options.timing)
            ) {
              case "linear":
                e = function (e) {
                  return e;
                };
                break;
              case "cubic-in-out":
                e = function (e) {
                  return e < 0.5
                    ? 4 * e * e * e
                    : (e - 1) * (2 * e - 2) * (2 * e - 2) + 1;
                };
                break;
              default:
                e = function (e) {
                  return 0.5 - Math.cos(e * Math.PI) / 2;
                };
            }
            (this.m_bActive = !0),
              (this.m_fnBoundAnimationFunc = this.OnInterval.bind(this, e)),
              this.m_window.requestAnimationFrame(this.m_fnBoundAnimationFunc);
          }
          BIsActive() {
            return this.m_bActive;
          }
          End() {
            if (this.m_bActive) {
              try {
                this.Update(1);
              } catch {}
              this.ClearInterval(), this.FireOnComplete();
            }
          }
          FireOnComplete() {
            this.m_options.onComplete && this.m_options.onComplete();
          }
          Cancel() {
            this.m_bActive = !1;
          }
          OnInterval(e) {
            if (!this.m_bActive) return;
            let t = performance.now() - this.m_msStart;
            if (t >= this.m_options.msDuration) return void this.End();
            let n = t / this.m_options.msDuration;
            try {
              this.Update(e(n));
            } catch {}
            this.m_window.requestAnimationFrame(this.m_fnBoundAnimationFunc);
          }
          ClearInterval() {
            this.m_bActive = !1;
          }
        }
        class w extends I {
          m_fnCallback;
          constructor(e, t, n) {
            super(e, t), (this.m_fnCallback = n);
          }
          Update(e) {
            this.m_fnCallback(e);
          }
        }
        class y extends I {
          m_object;
          m_propTargets;
          m_props = {};
          constructor(e, t, n) {
            super("ownerDocument" in e ? S(e) : e, n),
              (this.m_object = e),
              (this.m_propTargets = t);
          }
          Start() {
            this.m_props = {};
            for (let e in this.m_propTargets) {
              let t = parseFloat(this.m_object[e]) || 0,
                n = this.m_propTargets[e];
              t != n && (this.m_props[e] = { start: t, end: n });
            }
            super.Start();
          }
          Update(e) {
            for (let t in this.m_props) {
              let n = this.m_props[t],
                i = n.start + (n.end - n.start) * e;
              this.m_object[t] = i;
            }
          }
        }
        const E = new c.wd("ScrollSnap").Debug;
        let D = !1;
        let A;
        function T(e) {
          if (!e) return { left: 0, top: 0, right: 0, bottom: 0 };
          if (!("ownerDocument" in e))
            return {
              left: 0,
              right: e.innerWidth,
              top: 0,
              bottom: e.innerHeight,
            };
          let t = 0,
            n = 0,
            i = e;
          for (; i; ) {
            if (
              ((t += i.offsetTop), (n += i.offsetLeft), "ownerDocument" in i)
            ) {
              if ("fixed" === window.getComputedStyle(i).position) break;
            }
            i = i.offsetParent;
          }
          for (i = e?.parentElement; i; ) {
            const { scrollTop: e, scrollLeft: o } = N(i);
            if (((t -= e), (n -= o), "ownerDocument" in i)) {
              if ("fixed" === window.getComputedStyle(i).position) break;
            }
            i = i.parentElement;
          }
          return {
            left: n,
            top: t,
            right: n + e.offsetWidth,
            bottom: t + e.offsetHeight,
          };
        }
        function M(e, t) {
          return "x" == t
            ? [e.left, e.right, e.right - e.left]
            : [e.top, e.bottom, e.bottom - e.top];
        }
        function R(e, t, n, i) {
          let [o, r, a] = M(e, i),
            [s, l, c] = M(t, i),
            [m, d] = M(n, i);
          return o < s && r > l
            ? 0
            : (o < s && a <= c) || (r > l && a > c)
              ? o - s - m
              : (o < s && a > c) || (r > l && a <= c)
                ? r - l + d
                : 0;
        }
        function k(e) {
          return "auto" == e
            ? 0
            : e.endsWith("px")
              ? parseInt(e)
              : (console.log("Unsupported length", e), 0);
        }
        function L(e) {
          if (!("ownerDocument" in e))
            return { left: 0, right: 0, top: 0, bottom: 0 };
          const t = e.ownerDocument.defaultView.getComputedStyle(e);
          return {
            left: k(t.scrollMarginLeft),
            right: k(t.scrollMarginRight),
            top: k(t.scrollMarginTop),
            bottom: k(t.scrollMarginBottom),
          };
        }
        function G(e, t) {
          let n = (function (e) {
            let t;
            return (
              (t =
                "ownerDocument" in e
                  ? e.ownerDocument.defaultView.getComputedStyle(e)
                  : e.document.defaultView.getComputedStyle(
                      window.document.documentElement,
                    )),
              {
                left: k(t.scrollPaddingLeft),
                right: k(t.scrollPaddingRight),
                top: k(t.scrollPaddingTop),
                bottom: k(t.scrollPaddingBottom),
              }
            );
          })(e);
          return {
            left: Math.max(0, t.left + n.left),
            right: Math.max(0, t.right - n.right),
            top: Math.max(0, t.top + n.top),
            bottom: Math.max(0, t.bottom - n.bottom),
          };
        }
        function F(e) {
          return e > -1 && e < 1;
        }
        function P(e, t, n, i, o) {
          E(
            "----------------------------------------------------------------------------------",
          ),
            E("Scrolling Into View:", t);
          let r = [],
            a = t,
            s = T(t),
            l = o ?? Number.MAX_VALUE;
          for (; a; ) {
            let e = v(a);
            e || (e = S(a));
            let t = L(a),
              n = G(e, T(e)),
              c = O(e),
              m = { element: e, left: 0, top: 0 };
            if (
              (E(
                "Checking scroll div",
                e,
                `scroll y:${c.scrollTop} of ${c.MaxScrollTop()}, x:${c.scrollLeft} of ${c.MaxScrollLeft()}, adjusted =>`,
                n,
                "target => ",
                s,
              ),
              (i && "y" != i) ||
                !b(e, "y") ||
                ((m.top = R(s, n, t, "y")),
                (m.top = C(
                  m.top,
                  -c.scrollTop,
                  c.MaxScrollTop() - c.scrollTop,
                )),
                o &&
                  ((m.top =
                    Math.min(l, Math.abs(m.top)) * (m.top < 0 ? -1 : 1)),
                  (l -= Math.abs(m.top))),
                E(`- checked y: ${m.top}`)),
              (i && "x" != i) ||
                !b(e, "x") ||
                ((m.left = R(s, n, t, "x")),
                (m.left = C(
                  m.left,
                  -c.scrollLeft,
                  c.MaxScrollLeft() - c.scrollLeft,
                )),
                o &&
                  ((m.left =
                    Math.min(l, Math.abs(m.left)) * (m.left < 0 ? -1 : 1)),
                  (l -= Math.abs(m.left))),
                E(`- checked x: ${m.left}`)),
              r.push(m),
              o && !l)
            )
              break;
            if (!("ownerDocument" in e)) break;
            const d = window.getComputedStyle(e);
            if ("fixed" === d.position || "sticky" === d.position) break;
            (a = e),
              (s = {
                top: s.top - m.top,
                right: s.right - m.left,
                bottom: s.bottom - m.top,
                left: s.left - m.left,
              });
          }
          let c = !1;
          for (let e of r) {
            if (F(e.left) && F(e.top)) continue;
            let t = O(e.element),
              i = t.scrollTop + e.top,
              o = t.scrollLeft + e.left;
            (o = C(o, 0, t.MaxScrollLeft())),
              (i = C(i, 0, t.MaxScrollTop())),
              (F(t.scrollLeft - o) && F(t.scrollTop - i)) ||
                (t.scrollTo({ left: o, top: i, behavior: n }),
                c || (E("Scrolling:"), (c = !0)),
                E(
                  `- ${e.top},${e.left} => ${i}, ${o}, behavior: ${n}`,
                  e.element,
                ));
          }
        }
        class B {
          m_element;
          m_fnOriginalScrollTo;
          m_window;
          m_scrollTopTarget = void 0;
          m_scrollLeftTarget = void 0;
          m_animation = void 0;
          constructor(e) {
            "ownerDocument" in e
              ? ((this.m_element = e),
                (this.m_fnOriginalScrollTo = e.scrollTo),
                (this.m_element.scrollTo = (e, t) => {
                  "number" == typeof e
                    ? this.scrollTo({ left: e, top: t })
                    : this.scrollTo(e);
                }))
              : ((this.m_window = e),
                (this.m_element = e.document.documentElement));
          }
          ResetScrollState() {
            (this.m_scrollTopTarget = void 0),
              (this.m_scrollLeftTarget = void 0),
              this.m_window || (this.m_element.style.scrollSnapType = "");
          }
          scrollTo(e) {
            if ("smooth" != e?.behavior)
              this.m_animation &&
                (this.m_animation.Cancel(), (this.m_animation = void 0)),
                this.m_window
                  ? this.m_window.scrollTo(e)
                  : this.m_fnOriginalScrollTo?.apply(this.m_element, [e]),
                this.ResetScrollState();
            else {
              const t = e.left ?? this.scrollLeft,
                n = e.top ?? this.scrollTop;
              let i = "sine";
              this.m_animation && (this.m_animation.Cancel(), (i = "linear"));
              if (
                Math.max(
                  Math.abs(this.currentScrollTop - n),
                  Math.abs(this.currentScrollLeft - t),
                ) > 0
              ) {
                const e = {
                  msDuration: 200,
                  timing: i,
                  onComplete: this.ResetScrollState,
                };
                if (this.m_window) {
                  const i = this.currentScrollLeft,
                    o = this.currentScrollTop;
                  this.m_animation = new w(this.m_window, e, (e) => {
                    this.m_window?.scrollTo({
                      left: i + (t - i) * e,
                      top: o + (n - o) * e,
                      behavior: "auto",
                    });
                  });
                } else
                  (this.m_element.style.scrollSnapType = "initial"),
                    (this.m_animation = new y(
                      this.m_element,
                      { scrollTop: n, scrollLeft: t },
                      e,
                    ));
                (this.m_scrollLeftTarget = t),
                  (this.m_scrollTopTarget = n),
                  this.m_animation.Start();
              }
            }
          }
          get clientWidth() {
            return this.m_window
              ? this.m_window.innerWidth
              : this.m_element.clientWidth;
          }
          get clientHeight() {
            return this.m_window
              ? this.m_window.innerHeight
              : this.m_element.clientHeight;
          }
          get currentScrollLeft() {
            return this.m_window
              ? this.m_window.scrollX
              : this.m_element.scrollLeft;
          }
          get currentScrollTop() {
            return this.m_window
              ? this.m_window.scrollY
              : this.m_element.scrollTop;
          }
          get scrollLeft() {
            return this.m_scrollLeftTarget ?? this.currentScrollLeft;
          }
          get scrollTop() {
            return this.m_scrollTopTarget ?? this.currentScrollTop;
          }
          get scrollWidth() {
            return this.m_element.scrollWidth;
          }
          get scrollHeight() {
            return this.m_element.scrollHeight;
          }
          MaxScrollTop() {
            return this.scrollHeight - this.clientHeight;
          }
          MaxScrollLeft() {
            return this.scrollWidth - this.clientWidth;
          }
        }
        (0, i.Cg)([s.o], B.prototype, "ResetScrollState", null);
        const x = new WeakMap();
        function O(e) {
          let t = x.get(e);
          return t || ((t = new B(e)), x.set(e, t)), t;
        }
        function N(e) {
          const t = x.get(e);
          return t
            ? { scrollLeft: t.scrollLeft, scrollTop: t.scrollTop }
            : { scrollLeft: e.scrollLeft, scrollTop: e.scrollTop };
        }
        const V = new c.wd("FocusNavigationMovement").Debug;
        var U, H, W, z;
        !(function (e) {
          (e[(e.NONE = 0)] = "NONE"),
            (e[(e.COLUMN = 1)] = "COLUMN"),
            (e[(e.ROW = 2)] = "ROW"),
            (e[(e.COLUMN_REVERSE = 3)] = "COLUMN_REVERSE"),
            (e[(e.ROW_REVERSE = 4)] = "ROW_REVERSE"),
            (e[(e.GRID = 5)] = "GRID"),
            (e[(e.GEOMETRIC = 6)] = "GEOMETRIC");
        })(U || (U = {})),
          (function (e) {
            (e[(e.FIRST = 0)] = "FIRST"),
              (e[(e.LAST = 1)] = "LAST"),
              (e[(e.MAINTAIN_X = 2)] = "MAINTAIN_X"),
              (e[(e.MAINTAIN_Y = 3)] = "MAINTAIN_Y"),
              (e[(e.PREFERRED_CHILD = 4)] = "PREFERRED_CHILD");
          })(H || (H = {})),
          (function (e) {
            (e[(e.Standard = 0)] = "Standard"),
              (e[(e.NoTransform = 1)] = "NoTransform"),
              (e[(e.NoTransformSparseContent = 2)] =
                "NoTransformSparseContent");
          })(W || (W = {})),
          (function (e) {
            (e[(e.INVALID = 0)] = "INVALID"),
              (e[(e.FORWARD = 1)] = "FORWARD"),
              (e[(e.BACKWARD = 2)] = "BACKWARD");
          })(z || (z = {}));
        class j {
          m_Tree;
          m_Parent;
          m_rgChildren = [];
          m_ActiveChild;
          m_iLastActiveChildIndex = -1;
          m_Properties;
          m_element;
          m_FocusRing;
          m_bChildrenSorted = !1;
          m_bAutoFocusChild = !1;
          m_bMounted = !1;
          m_nDepth;
          m_bFocused = !1;
          m_FocusCallbackList = new l.l();
          m_bFocusWithin = !1;
          m_FocusWithinCallbackList = new l.l();
          m_ActionDescriptionsChangedCallbackList = new l.l();
          m_RetainFocusParent = null;
          m_rgNavigationHandlers = [];
          m_rgFocusHandlers = [];
          constructor(e, t, n) {
            (this.m_Tree = e),
              (this.m_Parent = t),
              (this.m_FocusRing = n),
              (this.m_nDepth = t ? t.m_nDepth + 1 : 0);
          }
          CreateHandle() {
            return new d.kI(this);
          }
          get Tree() {
            return this.m_Tree;
          }
          get NavKey() {
            return this.m_Properties?.navKey
              ? this.m_Properties.navKey
              : this.m_element?.id
                ? this.m_element.id
                : void 0;
          }
          get Element() {
            return this.m_element;
          }
          get Parent() {
            return this.m_Parent;
          }
          SetProperties(e) {
            const t =
              ((n = this.m_Properties?.actionDescriptionMap),
              (i = e?.actionDescriptionMap),
              !(null == n || null == i
                ? n === i
                : "object" == typeof n &&
                  "object" == typeof i &&
                  Object.keys(n).length === Object.keys(i).length &&
                  Object.keys(n).every(
                    (e) => i.hasOwnProperty(e) && n[e] === i[e],
                  )));
            var n, i;
            const o = this.m_Properties?.retainFocus,
              r = this.m_Properties?.noFocusRing;
            (this.m_Properties = e || {}),
              t && this.m_ActionDescriptionsChangedCallbackList.Dispatch(),
              this.m_Properties.retainFocus && !o
                ? this.PropagateRetainFocusParentToChildren(this)
                : !this.m_Properties.retainFocus &&
                  o &&
                  this.PropagateRetainFocusParentToChildren(
                    this.m_RetainFocusParent,
                  ),
              this.m_Properties.noFocusRing && !r && this.BHasFocus()
                ? this.m_FocusRing?.OnBlur(m.D$.APPLICATION, this, this)
                : !this.m_Properties.noFocusRing &&
                  r &&
                  this.BHasFocus() &&
                  this.m_FocusRing?.OnFocus(m.D$.APPLICATION, this, this),
              this.m_element && this.RegisterDOMEvents();
          }
          BWantsAutoFocus() {
            return this.m_Properties?.autoFocus || this.m_bAutoFocusChild;
          }
          BWantsPreferredFocus() {
            return this.m_Properties?.preferredFocus;
          }
          BWantsFocusRing() {
            return (
              !this.m_Properties?.noFocusRing ||
              this.m_Tree.Controller.GetShowDebugFocusRing().Value
            );
          }
          GetBoundingRect() {
            return this.m_element && this.m_element.getBoundingClientRect();
          }
          SetHasFocus(e) {
            e != this.m_bFocused &&
              ((this.m_bFocused = e),
              this.m_FocusCallbackList.Dispatch(this.m_bFocused));
          }
          SetFocusWithin(e) {
            e != this.m_bFocusWithin &&
              ((this.m_bFocusWithin = e),
              this.m_FocusWithinCallbackList.Dispatch(this.m_bFocusWithin),
              this.m_Properties?.onFocusWithin &&
                this.m_Properties.onFocusWithin(this.m_bFocusWithin));
          }
          BHasFocus() {
            return this.m_bFocused;
          }
          BFocusWithin() {
            return this.m_bFocusWithin;
          }
          get FocusCallbackList() {
            return this.m_FocusCallbackList;
          }
          get FocusWithinCallbackList() {
            return this.m_FocusWithinCallbackList;
          }
          ForceMeasureFocusRing() {
            this.m_FocusRing?.OnForceMeasureFocusRing();
          }
          get ActionDescriptionChangedCallbackList() {
            return this.m_ActionDescriptionsChangedCallbackList;
          }
          GetActiveActionDescriptions() {
            return this.BuildConsolidatedActionDescriptionMap({});
          }
          BuildConsolidatedActionDescriptionMap(e) {
            const t = this.m_Properties?.actionDescriptionMap;
            if (t)
              for (const n in t) {
                const i = n;
                void 0 === e[i] && (e[i] = t[i]);
              }
            return this.m_Parent
              ? this.m_Parent.BuildConsolidatedActionDescriptionMap(e)
              : e;
          }
          AddChild(e) {
            this.m_rgChildren.push(e),
              (this.m_bChildrenSorted = !1),
              this.m_element && this.RegisterDOMEvents(),
              this.m_Properties?.retainFocus
                ? e.SetRetainFocusParent(this)
                : this.m_RetainFocusParent &&
                  e.SetRetainFocusParent(this.m_RetainFocusParent),
              this.m_bMounted &&
                e.BFocusWithin() &&
                ((0, a.w)(
                  !this.m_ActiveChild && this.BFocusWithin(),
                  "Invalid focus state in AddChild",
                ),
                this.SetActiveChild(this.m_rgChildren.length - 1));
          }
          OnMount(e) {
            (this.m_element = e),
              this.m_Parent
                ? this.m_Parent.AddChild(this)
                : (0, a.w)(
                    this == this.m_Tree.Root,
                    "Only root should have no parent",
                  ),
              (this.m_bMounted = !0),
              this.RegisterDOMEvents();
            const t =
                this.m_RetainFocusParent &&
                this.m_RetainFocusParent.BHasFocus(),
              n = this.m_Properties?.autoFocus || t;
            if (this.BWantsAutoFocus() || n) {
              let e = -1;
              this.m_rgChildren.length &&
                (this.EnsureChildrenSorted(),
                (e = this.m_rgChildren.findIndex((e) => e.BWantsAutoFocus()))),
                (this.m_Properties?.autoFocus || n || -1 !== e) &&
                  (this.SetActiveChild(e),
                  !this.m_Parent || this.m_Parent.m_element
                    ? t
                      ? this.m_Tree.DeferredFocus.BHasQueuedFocusNode() ||
                        this.m_Tree.DeferredFocus.RequestFocus(
                          this.m_RetainFocusParent,
                          { bFocusDescendant: !0 },
                        )
                      : this.Tree.DeferredFocus.RequestFocus(this)
                    : (this.m_Parent.m_bAutoFocusChild = !0));
            } else if (this.m_rgChildren.length) {
              const e = this.m_rgChildren.findIndex((e) => e.BFocusWithin());
              -1 != e &&
                (this.SetActiveChild(e),
                (0, a.w)(
                  this.m_bFocusWithin,
                  "Child has focus, we should be m_bFocusWithin",
                ));
            }
          }
          DEV_SetDebugPropsOnElement() {}
          OnUnmount() {
            this.m_Properties?.retainFocus &&
              this.PropagateRetainFocusParentToChildren(
                this.m_RetainFocusParent,
              ),
              (this.m_bMounted = !1);
            const e = this.Tree.DeferredFocus.BIsQueuedFocusNode(this);
            (this.m_bFocused || e) &&
              (V(
                `The focused node is unmounting, ${this.m_RetainFocusParent ? "will transfer to retain focus ancestor" : "will blur"}.`,
              ),
              e && this.Tree.DeferredFocus.RequestFocus(null),
              this.m_RetainFocusParent
                ? this.m_RetainFocusParent.OnFocusedDecendantRemoved(this)
                : this.m_bFocused &&
                  this.m_Tree.TransferFocus(m.D$.APPLICATION, null)),
              this.UnregisterDOMEvents(),
              this.m_Parent
                ? this.m_Parent.RemoveChild(this)
                : (0, a.w)(
                    this == this.m_Tree.Root,
                    "Only root should have no parent",
                  );
          }
          RegisterDOMEvents() {
            !this.m_rgNavigationHandlers.length &&
              this.m_element &&
              (this.m_rgChildren.length >= 2 ||
                this.m_Properties?.layout != U.NONE ||
                this.m_Properties.onMoveUp ||
                this.m_Properties.onMoveRight ||
                this.m_Properties.onMoveDown ||
                this.m_Properties.onMoveLeft) &&
              this.m_rgNavigationHandlers.push(
                (0, m.u8)(this.m_element, this.OnNavigationEvent),
              ),
              (this.m_Properties?.focusable ||
                this.m_Properties?.focusableIfNoChildren ||
                0 == this.m_rgChildren.length) &&
                (this.m_rgFocusHandlers.length ||
                  (this.m_element?.addEventListener("focus", this.OnDOMFocus),
                  this.m_element?.addEventListener("blur", this.OnDOMBlur),
                  this.m_rgFocusHandlers.push(() => {
                    this.m_element?.removeEventListener(
                      "focus",
                      this.OnDOMFocus,
                    ),
                      this.m_element?.removeEventListener(
                        "blur",
                        this.OnDOMBlur,
                      );
                  })));
          }
          RemoveChild(e) {
            let t = this.m_rgChildren.indexOf(e);
            (0, a.w)(-1 !== t, "Child was not found to remove"),
              -1 !== t &&
                (this.m_ActiveChild == e && (this.m_ActiveChild = void 0),
                this.m_rgChildren.splice(t, 1));
          }
          UnregisterDOMEvents() {
            this.m_rgNavigationHandlers.forEach((e) => e()),
              (this.m_rgNavigationHandlers = []),
              this.m_rgFocusHandlers.forEach((e) => e()),
              (this.m_rgFocusHandlers = []);
          }
          GetActiveDescendant() {
            const e = this.GetActiveChild();
            return e ? e.GetActiveDescendant() : this;
          }
          IsValidChildIndex(e) {
            return e >= 0 && e < this.m_rgChildren.length;
          }
          GetActiveChild() {
            return this.m_ActiveChild
              ? this.m_ActiveChild
              : (this.EnsureChildrenSorted(),
                this.IsValidChildIndex(this.m_iLastActiveChildIndex)
                  ? this.m_rgChildren[this.m_iLastActiveChildIndex]
                  : null);
          }
          GetActiveChildIndex() {
            if (this.m_ActiveChild) {
              if (
                this.IsValidChildIndex(this.m_iLastActiveChildIndex) &&
                this.m_rgChildren[this.m_iLastActiveChildIndex] ==
                  this.m_ActiveChild
              )
                return this.m_iLastActiveChildIndex;
              this.m_iLastActiveChildIndex = this.m_rgChildren.indexOf(
                this.m_ActiveChild,
              );
            }
            return this.m_iLastActiveChildIndex;
          }
          EnsureChildrenSorted(e = !1) {
            (this.m_bChildrenSorted && !e) ||
              (this.m_rgChildren.sort((e, t) => {
                const n = e.m_element,
                  i = t.m_element;
                if (!n) return i ? 1 : 0;
                if (!i) return -1;
                const o = n.compareDocumentPosition(i);
                return o & Node.DOCUMENT_POSITION_PRECEDING
                  ? 1
                  : o & Node.DOCUMENT_POSITION_FOLLOWING
                    ? -1
                    : 0;
              }),
              this.m_ActiveChild &&
                (this.m_iLastActiveChildIndex = this.m_rgChildren.indexOf(
                  this.m_ActiveChild,
                )),
              (this.m_bChildrenSorted = !0));
          }
          GetLastFocusElement() {
            const e = this.GetActiveChild();
            return e ? e.GetLastFocusElement() : this.m_element;
          }
          OnDOMFocus(e) {
            if (!this.m_bFocused) {
              if ("children" == this.GetFocusable()) {
                const e = this.FindFocusableDescendant();
                if (e && e !== this)
                  return (
                    V(
                      "Browser gave node focus but we are marked focusableIfNoChildren, transfering focus to descendant.",
                      this.m_element,
                      e.m_element,
                    ),
                    void this.m_Tree.TransferFocus(m.D$.BROWSER, e)
                  );
              }
              this.m_Tree.TransferFocus(m.D$.BROWSER, this);
            }
          }
          OnDOMBlur(e) {
            this.m_bFocused &&
              this.m_element?.ownerDocument.hasFocus() &&
              this.m_Tree.TransferFocus(m.D$.BROWSER, null);
          }
          UpdateParentActiveChild() {
            this.m_Parent &&
              (this.m_Parent.SetActiveChild(this),
              this.m_Parent.UpdateParentActiveChild());
          }
          GetFocusable() {
            const {
              focusable: e,
              focusableIfNoChildren: t,
              childFocusDisabled: n,
              fnCanTakeFocus: i,
            } = this.m_Properties;
            return this.m_bMounted
              ? i && !i(this)
                ? "none"
                : e || (t && (n || 0 == this.m_rgChildren.length))
                  ? "self"
                  : !n && this.m_rgChildren.length
                    ? "children"
                    : "none"
              : "none";
          }
          BTakeFocus(e, t) {
            const n = this.FindFocusableNode(t);
            return this.InternalFocusDescendant(n, e, t);
          }
          FindFocusableNode(e, t) {
            switch (this.GetFocusable()) {
              case "none":
                return null;
              case "self":
                return this;
              case "children":
                return this.FindFocusableDescendant(e, t);
            }
          }
          BChildTakeFocus(e, t) {
            const n = this.FindFocusableDescendant(t);
            return this.InternalFocusDescendant(n, e, t);
          }
          BFocusFirstChild(e) {
            const t = this.FindNextFocusableChildInDirection(
              -1,
              z.FORWARD,
              o.pR.INVALID,
            );
            return this.InternalFocusDescendant(t, e);
          }
          BFocusLastChild(e) {
            const t = this.FindNextFocusableChildInDirection(
              this.m_rgChildren.length,
              z.BACKWARD,
              o.pR.INVALID,
            );
            return this.InternalFocusDescendant(t, e);
          }
          FindFocusableDescendant(e, t) {
            const n = (0, d.G4)(e),
              { focusableIfNoChildren: i, childFocusDisabled: o } =
                this.m_Properties ?? {};
            if (o) return null;
            if (this.m_rgChildren.length) {
              this.EnsureChildrenSorted();
              const { navEntryPreferPosition: o, resetNavOnEntry: a } =
                this.m_Properties ?? {};
              let s,
                l = this.GetActiveChildIndex();
              if ((a && void 0 !== e && (l = -1), !this.IsValidChildIndex(l))) {
                const e = this.GetLayout();
                l =
                  l >= this.m_rgChildren.length ||
                  e == U.ROW_REVERSE ||
                  e == U.COLUMN_REVERSE ||
                  o == H.LAST
                    ? this.m_rgChildren.length - 1
                    : 0;
              }
              if ((o == H.MAINTAIN_X || o == H.MAINTAIN_Y || t) && n) {
                let i, a;
                o == H.MAINTAIN_X ? (i = "x") : o == H.MAINTAIN_Y && (i = "y"),
                  i == r.xr[n] &&
                    (a =
                      this.m_Tree.GetLastFocusedMovementRect(r.xr[n]) ??
                      this.m_Tree.GetLastFocusedNode()?.GetBoundingRect()),
                  V(
                    `Taking focus while preserving ${o && H[o]} preserved: ${i} movement: ${n}, node:`,
                    a || t,
                  );
                const l = this.ComputeRelativeDirection(e, U.GRID);
                if (a || t) {
                  const o = l == z.BACKWARD ? this.m_rgChildren.length - 1 : 0;
                  s = this.FindClosestChildInNextAxiallyAlignedSet(
                    i || r.xr[n],
                    l,
                    e,
                    a || t,
                    o,
                    this.m_rgChildren[o].GetBoundingRect(),
                  );
                } else if (i != r.xr[n]) {
                  const t = l == z.BACKWARD ? this.m_rgChildren.length : -1;
                  s = this.FindNextFocusableChildInDirection(t, l, e);
                }
              } else if (o == H.PREFERRED_CHILD) {
                for (const t of this.m_rgChildren)
                  if (
                    ((s = t.BWantsPreferredFocus()
                      ? t.FindFocusableNode(e)
                      : void 0),
                    s)
                  )
                    return s;
              } else
                o == H.LAST &&
                  (s = this.FindNextFocusableChildInDirection(
                    l + 1,
                    z.BACKWARD,
                    e,
                  ));
              return (
                s ||
                  (s = this.FindNextFocusableChildInDirection(
                    l - 1,
                    z.FORWARD,
                    e,
                  )),
                s ||
                  (s = this.FindNextFocusableChildInDirection(
                    l,
                    z.BACKWARD,
                    e,
                  )),
                s || (i ? this : null)
              );
            }
            return null;
          }
          BVisibleChildTakeFocus(e) {
            const t = this.Element?.ownerDocument?.defaultView ?? window,
              n = h(this, {
                top: 0,
                left: 0,
                right: t.innerWidth,
                bottom: t.innerHeight,
              });
            return (
              V(
                `Focusing visible child, best child match is ${n?.child?.Element?.className} - ${JSON.stringify(n?.visibility)}`,
              ),
              !!n && n.child.BTakeFocus(e)
            );
          }
          GetLayout() {
            if (this.m_Properties?.layout) return this.m_Properties.layout;
            if (this.m_rgChildren.length < 2) return U.NONE;
            return (0, d.ko)(this.m_element);
          }
          OnNavigationEvent(e) {
            const t = e.detail.button;
            if (this.BTryInternalNavigation(t, e.detail.is_repeat ?? !1))
              return !0;
            const {
              onMoveUp: n,
              onMoveRight: i,
              onMoveDown: r,
              onMoveLeft: a,
            } = this.m_Properties ?? {};
            let s = !1;
            switch (t) {
              case o.pR.DIR_UP:
                n && (s = n(e.detail, this));
                break;
              case o.pR.DIR_RIGHT:
                i && (s = i(e.detail, this));
                break;
              case o.pR.DIR_DOWN:
                r && (s = r(e.detail, this));
                break;
              case o.pR.DIR_LEFT:
                a && (s = a(e.detail, this));
            }
            return s;
          }
          InternalFocusDescendant(e, t, n) {
            return !!e && (this.m_Tree.TransferFocus(t, e, (0, d.G4)(n)), !0);
          }
          BTryInternalNavigation(e, t) {
            const n = this.GetLayout();
            let i,
              r = this.ComputeRelativeDirection(e, n);
            if (
              (V(
                `Handling navigation event ${o.pR[e]} - ${U[n]} - ${z[r]}`,
                this.m_element,
              ),
              r == z.INVALID)
            )
              return !1;
            if (this.m_Properties?.focusable && this.m_bFocused)
              return V("Skipping navigation within focused element"), !1;
            if ((this.EnsureChildrenSorted(!0), n == U.GRID))
              i = this.FindNextFocusableChildInGrid(
                this.GetActiveChildIndex(),
                r,
                e,
              );
            else {
              let t = this.GetActiveChildIndex();
              this.IsValidChildIndex(t) ||
                (t = r == z.FORWARD ? -1 : this.m_rgChildren.length),
                (i = this.FindNextFocusableChildInDirection(t, r, e));
            }
            if (i) {
              const n = (0, d.G4)(e);
              if (this.GetScrollIntoViewType() == W.NoTransformSparseContent) {
                const e = i.Element?.ownerDocument.defaultView;
                if (e) {
                  const o =
                      ("y" == n ? e.innerHeight : e.innerWidth) /
                      (t ? 4.5 : 3.33),
                    r = T(i.Element);
                  if (
                    (r.top > e.innerHeight && r.bottom > e.innerHeight + o) ||
                    (r.bottom < 0 && r.top < -o) ||
                    (r.left > e.innerWidth && r.right > e.innerWidth + o) ||
                    (r.right < 0 && r.left < -o)
                  )
                    return (
                      V(`Element too far away, scrolling ${o} on ${n} axis `),
                      P(i.Element, i.Element, "smooth", n, o),
                      !0
                    );
                }
              }
              return this.m_Tree.TransferFocus(m.D$.GAMEPAD, i, n), !0;
            }
            return !1;
          }
          GetScrollIntoViewType() {
            return this.m_Properties?.scrollIntoViewType
              ? this.m_Properties.scrollIntoViewType
              : this.m_Parent
                ? this.m_Parent.GetScrollIntoViewType()
                : W.Standard;
          }
          GetRelativeDirection(e) {
            return this.ComputeRelativeDirection(e, this.GetLayout());
          }
          ComputeRelativeDirection(e, t) {
            let n = t == U.ROW_REVERSE || t == U.COLUMN_REVERSE;
            switch (t) {
              case U.ROW:
              case U.ROW_REVERSE:
                switch (e) {
                  case o.pR.DIR_LEFT:
                    return n ? z.FORWARD : z.BACKWARD;
                  case o.pR.DIR_RIGHT:
                    return n ? z.BACKWARD : z.FORWARD;
                  default:
                    return z.INVALID;
                }
              case U.COLUMN:
              case U.COLUMN_REVERSE:
                switch (e) {
                  case o.pR.DIR_UP:
                    return n ? z.FORWARD : z.BACKWARD;
                  case o.pR.DIR_DOWN:
                    return n ? z.BACKWARD : z.FORWARD;
                  default:
                    return z.INVALID;
                }
              case U.GRID:
                switch (e) {
                  case o.pR.DIR_LEFT:
                  case o.pR.DIR_UP:
                    return n ? z.FORWARD : z.BACKWARD;
                  case o.pR.DIR_RIGHT:
                  case o.pR.DIR_DOWN:
                    return n ? z.BACKWARD : z.FORWARD;
                  default:
                    return z.INVALID;
                }
              default:
                return z.INVALID;
            }
          }
          AdvanceIndex(e, t) {
            return e + (t == z.FORWARD ? 1 : -1);
          }
          FindNextFocusableChildInDirection(e, t, n) {
            let i = t == z.FORWARD ? 1 : -1;
            for (
              let t = e + i;
              t >= 0 && t < this.m_rgChildren.length;
              t += i
            ) {
              const e = this.m_rgChildren[t].FindFocusableNode(n);
              if (e) return e;
            }
            return null;
          }
          ScanChildren(e, t, n) {
            let i = t == z.FORWARD ? 1 : -1;
            for (let t = e; t >= 0 && t < this.m_rgChildren.length; t += i)
              if (n(this.m_rgChildren[t], t)) return t;
            return -1;
          }
          FindNextFocusableChildInGrid(e, t, n) {
            const i = n == o.pR.DIR_UP || n == o.pR.DIR_DOWN,
              r = this.GetLastFocusElement();
            if (!r || r == this.m_element)
              return (
                (0, a.w)(
                  !1,
                  "No active child for grid navigation",
                  this.m_iLastActiveChildIndex,
                  this.m_rgChildren.length,
                  r,
                ),
                this.FindFocusableDescendant(n)
              );
            const s = this.GetActiveDescendant().GetBoundingRect();
            if (n == o.pR.DIR_UP || n == o.pR.DIR_DOWN) {
              const e =
                this.m_Tree.GetLastFocusedMovementRect("x") ??
                this.m_Tree.GetLastFocusedNode()?.GetBoundingRect();
              e && ((s.x = e.x), (s.width = e.width));
            }
            if (i) {
              let i = e;
              for (; -1 != i; ) {
                const e = this.ScanChildren(
                  this.AdvanceIndex(i, t),
                  t,
                  (e) => !(0, d.UR)("y", s, e.GetBoundingRect()),
                );
                if (-1 != e) {
                  const i = this.m_rgChildren[e].GetBoundingRect(),
                    o = this.FindClosestChildInNextAxiallyAlignedSet(
                      "x",
                      t,
                      n,
                      s,
                      e,
                      i,
                    );
                  if (o) return o;
                }
                i = e;
              }
            } else {
              let i = t == z.FORWARD ? 1 : -1;
              for (
                let o = this.AdvanceIndex(e, t);
                o >= 0 && o < this.m_rgChildren.length;
                o += i
              ) {
                const e = this.m_rgChildren[o];
                if (!(0, d.UR)("y", s, e.GetBoundingRect())) return null;
                let t = e.FindFocusableNode(n);
                if (t) return t;
              }
            }
            return null;
          }
          FindClosestChildInNextAxiallyAlignedSet(e, t, n, i, o, a) {
            (!o || o < 0) && (o = 0);
            let s = [];
            if (!i) return null;
            const l = (0, d.xb)(i);
            this.ScanChildren(o, t, (t) => {
              const n = t.GetBoundingRect();
              return (
                !!n &&
                (!(!a || (0, d.UR)(r.xr[e], a, n)) ||
                  (s.push({
                    child: t,
                    overlap: (0, d.ix)(e, i, n),
                    dist: (0, d._V)(e, l, n),
                  }),
                  !1))
              );
            }),
              t == z.BACKWARD && s.reverse(),
              s.sort((e, t) => {
                const n = t.overlap - e.overlap;
                return 0 != n ? n : e.dist - t.dist;
              });
            for (const { child: e } of s) {
              const t = e.FindFocusableNode(n, i);
              if (t) return t;
            }
            return null;
          }
          GetChildren() {
            return (
              this.EnsureChildrenSorted(),
              [this.m_rgChildren, this.m_iLastActiveChildIndex]
            );
          }
          SetActiveChild(e) {
            e instanceof j
              ? (this.EnsureChildrenSorted(),
                (this.m_ActiveChild = e),
                (this.m_iLastActiveChildIndex = this.m_rgChildren.indexOf(e)))
              : (this.IsValidChildIndex(e) &&
                  (this.m_ActiveChild = this.m_rgChildren[e]),
                (this.m_iLastActiveChildIndex = e));
          }
          GetDepth() {
            return this.m_nDepth;
          }
          SetRetainFocusParent(e) {
            (this.m_RetainFocusParent = e),
              this.m_Properties?.retainFocus ||
                this.PropagateRetainFocusParentToChildren(e);
          }
          PropagateRetainFocusParentToChildren(e) {
            for (let t = 0; t < this.m_rgChildren.length; t++)
              this.m_rgChildren[t].SetRetainFocusParent(e);
          }
          OnFocusedDecendantRemoved(e) {
            this.m_Tree.DeferredFocus.RequestFocus(this, {
              bFocusDescendant: !0,
            });
          }
          SetDOMFocusAndScroll(e, t) {
            this.UpdateParentActiveChild(),
              this.m_Tree.BIsActiveFocus()
                ? ((0, a.w)(
                    !this.m_Tree.BUseVirtualFocus(),
                    "Virtual focus tree should not have browser focus",
                  ),
                  this.m_element?.focus({ preventScroll: !0 }))
                : this.m_Tree.BUseVirtualFocus() ||
                  V(
                    `Didn't move focus to element as tree ${this.m_Tree.id} is not active focus tree`,
                  ),
              (function (e, t) {
                const n = e.Element;
                if (!n) return;
                let i = [e];
                for (let t = e.Parent; t; t = t.Parent) {
                  const e = t.m_Properties?.scrollIntoViewWhenChildFocused;
                  "force" === e ? (i = [t]) : e && i.push(t);
                }
                for (; i.length; ) {
                  let n = i.pop(),
                    o = 0 == i.length,
                    r = n?.m_Properties?.scrollIntoViewType;
                  if (
                    (void 0 === r && (r = D ? W.NoTransform : W.Standard),
                    n?.m_Properties?.fnScrollIntoViewHandler &&
                      !1 !== n.m_Properties.fnScrollIntoViewHandler(e, t, n))
                  )
                    continue;
                  const a = n.m_element,
                    s =
                      r == W.NoTransform ||
                      r == W.NoTransformSparseContent ||
                      !o;
                  if (t) {
                    const t = s ? T(a) : a.getBoundingClientRect();
                    let n = !1;
                    const i = Math.max(1.4 * (t.bottom - t.top), 40);
                    ((A && performance.now() - A < 500) ||
                      t.bottom < -i ||
                      t.top > window.innerHeight + i) &&
                      (n = !0);
                    let o = n ? "auto" : "smooth";
                    n && (A = performance.now()),
                      e.Tree.Controller.BIsRestoringHistory() && (o = "auto"),
                      s
                        ? P(0, a, o)
                        : a.scrollIntoView({ behavior: o, block: "nearest" });
                  } else
                    s
                      ? P(0, a, "auto")
                      : a?.scrollIntoView({
                          behavior: "auto",
                          block: "nearest",
                          inline: "nearest",
                        });
                }
              })(this, t),
              this.m_Tree.OnChildActivated(e);
          }
        }
        (0, i.Cg)([s.o], j.prototype, "OnDOMFocus", null),
          (0, i.Cg)([s.o], j.prototype, "OnDOMBlur", null),
          (0, i.Cg)([s.o], j.prototype, "OnNavigationEvent", null);
      },
      29588: (e, t, n) => {
        "use strict";
        n.d(t, { O: () => o });
        var i = n(7153);
        function o(e) {
          switch (e) {
            case "column":
              return i.xj.COLUMN;
            case "column-reverse":
              return i.xj.COLUMN_REVERSE;
            case "row":
              return i.xj.ROW;
            case "row-reverse":
              return i.xj.ROW_REVERSE;
            case "grid":
              return i.xj.GRID;
            default:
              return i.xj.NONE;
          }
        }
      },
      41491: (e, t, n) => {
        "use strict";
        n.d(t, { _k: () => s, s1: () => a });
        var i = n(50115),
          o = n(29359),
          r = n(7153);
        function a(e) {
          return (t) => {
            if (t.currentTarget == t.target) return !1;
            switch (t.detail.button) {
              case o.pR.DIR_UP:
                return !!e.bPreventMovementUp;
              case o.pR.DIR_RIGHT:
                return !!e.bPreventMovementRight;
              case o.pR.DIR_DOWN:
                return !!e.bPreventMovementDown;
              case o.pR.DIR_LEFT:
                return !!e.bPreventMovementLeft;
              default:
                return !1;
            }
          };
        }
        const s = Object.seal({ onMoveUp: l, onMoveDown: l });
        Object.seal({ onMoveRight: l, onMoveLeft: l });
        function l(e, t) {
          if (e.is_repeat) return !1;
          const n = t.GetRelativeDirection(e.button);
          return n == r.$C.FORWARD
            ? t.BFocusFirstChild(i.D$.GAMEPAD)
            : n == r.$C.BACKWARD && t.BFocusLastChild(i.D$.GAMEPAD);
        }
      },
      59889: (e, t, n) => {
        "use strict";
        n.d(t, {
          Fc: () => S,
          Gb: () => g,
          Ks: () => m,
          RV: () => u,
          Sm: () => C,
          WQ: () => _,
          YM: () => f,
          Z9: () => l,
          c5: () => p,
          dd: () => v,
          gu: () => I,
          i3: () => b,
          pw: () => d,
          r6: () => w,
          uX: () => h,
        });
        var i = n(63696),
          o = n(90095),
          r = n(89193),
          a = n(30248);
        function s() {
          return window.g_GRS;
        }
        async function l(e, t, i) {
          if (!s()) {
            const [{ CGameRecordingStore: o }] = await Promise.all([
              Promise.all([n.e(9489), n.e(5430), n.e(6736)]).then(
                n.bind(n, 76736),
              ),
            ]);
            i && (0, a.V)(i);
            let r = new o();
            await r.Init(e, t), (window.g_GRS = r);
          }
        }
        function c() {
          if (null != s()) {
            const e = s();
            return {
              bLoading: e.BLoadingAppsWithBackgroundVideo(),
              rgApps: e.GetAppsWithBackgroundVideo(),
            };
          }
          return { bLoading: !1, rgApps: [] };
        }
        function m(e) {
          const { bLoading: t, rgApps: n } = (function () {
            const [e, t] = (0, i.useState)(c());
            return (0, i.useEffect)(() => (0, r.mJ)(c, t), []), e;
          })();
          return {
            bLoading: t,
            app: (0, i.useMemo)(() => n.find((t) => t.game_id === e), [n, e]),
          };
        }
        function d(e) {
          return s().GetTimelineLoaderForSharedClip(e);
        }
        function u(e) {
          return (null != s() && e && s().GetClipSummariesForGame(e)) || [];
        }
        function h(e) {
          return (0, o.q3)(() => s()?.GetClipSummary(e));
        }
        function p(e, t, n, i, o, r) {
          return null != s()
            ? s().LoadThumbnails(e, t, n, i, o, r ?? !0)
            : null;
        }
        function _() {
          return null != s() ? { fnSaveClip: s().SaveClip } : {};
        }
        function g() {
          return null != s() ? { fnDeleteClip: s().DeleteClip } : {};
        }
        function C() {
          return null != s() ? { fnUploadClip: s().UploadClip } : {};
        }
        function f(e, t, n) {
          return null != s() ? s().TakeScreenshot(e, t, n.valMS) : null;
        }
        function S() {
          return null != s()
            ? {
                fnCreateUserTimelineMarkers: s().CreateUserTimelineMarkers,
                fnUpdateUserTimelineMarkers: s().UpdateUserTimelineMarkers,
                fnRemoveUserTimelineMarker: s().RemoveUserTimelineMarker,
              }
            : null;
        }
        function v(e, t) {
          return (0, o.q3)(() => {
            if (null != s()) return s().GetAchievementInfo(e, t);
          });
        }
        function b() {
          return (0, o.q3)(() => {
            if (null != s()) return s().GetLastClip();
          });
        }
        function I(e, t, n, i, o) {
          return s().ReportClipRange(e, t, n, i, o);
        }
        function w() {
          return (0, o.q3)(() => {
            if (null != s()) return !s().BEnoughDiskSpace();
          });
        }
      },
      37779: (e, t, n) => {
        "use strict";
        function i(e, t = 0) {
          if (e?.length > 1) {
            let n = t > 0 ? Math.min(t, e.length) : e.length;
            for (; 0 !== n; ) {
              const t = Math.floor(Math.random() * n);
              n -= 1;
              const i = e[n];
              (e[n] = e[t]), (e[t] = i);
            }
          }
        }
        function o(e, t, n) {
          t < 0 ||
            n < 0 ||
            (n >= e.length && (e[n] = void 0),
            e.splice(n, 0, e.splice(t, 1)[0]));
        }
        function r(e, t) {
          return a(e, (e) => t == e);
        }
        function a(e, t) {
          const n = e.findIndex(t);
          return n >= 0 && (e.splice(n, 1), !0);
        }
        function s(e, t) {
          return e.reduce((e, n, i, o) => e + (t(n, i, o) ? 1 : 0), 0);
        }
        function l(e, t) {
          return e.filter((e) => t !== e);
        }
        function c(e, t) {
          let n = 0,
            i = e.length - 1;
          for (; n <= i; ) {
            const o = Math.floor((n + i) / 2),
              r = t(e[o]);
            if (r > 0) n = o + 1;
            else if (r < 0) i = o - 1;
            else {
              if (i == o) return o;
              if (o == n) return i > o && t(e[o + 1]) < 0 ? o : o + 1;
              n = o;
            }
          }
          return i;
        }
        function m(e, t, n) {
          const i = c(e, (e) => n(t, e));
          e.splice(i + 1, 0, t);
        }
        function d(e, t, n) {
          return (
            e ||
              console.error(
                "array should be defined for us to fill in the missing indexes",
              ),
            e.length < t ? e.concat(Array(t - e.length).fill(n)) : e
          );
        }
        function u(e) {
          const t = new Set();
          return e.forEach((e) => t.add(e)), Array.from(t);
        }
        n.d(t, {
          $D: () => s,
          $Y: () => d,
          Ew: () => u,
          Wp: () => a,
          Xr: () => m,
          fW: () => i,
          il: () => l,
          rJ: () => c,
          x9: () => r,
          yY: () => o,
        });
      },
      20270: (e, t, n) => {
        "use strict";
        function i(e, t, ...n) {
          console.assert
            ? 0 == n.length
              ? console.assert(!!e, t)
              : console.assert(!!e, t, ...n)
            : e || console.warn(t, ...n);
        }
        function o(e, t, ...n) {
          i(!1, t, ...n);
        }
        n.d(t, { w: () => i, z: () => o });
      },
      69450: (e, t, n) => {
        "use strict";
        function i(e, t, n) {
          return {
            get() {
              let e = n.value.bind(this);
              return (
                Object.prototype.hasOwnProperty.call(this, t) ||
                  Object.defineProperty(this, t, { value: e }),
                e
              );
            },
          };
        }
        n.d(t, { o: () => i });
      },
      10665: (e, t, n) => {
        "use strict";
        n.d(t, { l: () => o });
        var i = n(37779);
        class o {
          m_vecCallbacks = [];
          Register(e) {
            this.m_vecCallbacks.push(e);
            return {
              Unregister: () => {
                i.x9(this.m_vecCallbacks, e);
              },
            };
          }
          Dispatch(...e) {
            for (const t of Array.from(this.m_vecCallbacks)) t(...e);
          }
          ClearAllCallbacks() {
            this.m_vecCallbacks = [];
          }
          CountRegistered() {
            return this.m_vecCallbacks.length;
          }
        }
      },
      45518: (e, t, n) => {
        "use strict";
        n.d(t, { I8: () => l, lI: () => a, w: () => s });
        var i = n(58663),
          o = (n(8649), n(81868)),
          r = n(67033);
        n(38464);
        class a {
          static sm_ErrorReportingStore;
          static InstallErrorReportingStore(e) {
            this.sm_ErrorReportingStore = e;
          }
          static InitHeaderFromPacket(e) {
            return new a(void 0, e);
          }
          m_eMsg;
          m_bValid;
          m_netPacket;
          m_cubHeader;
          m_header;
          m_body;
          constructor(e, t, n, r, a, s) {
            if (r)
              (this.m_eMsg = r.m_eMsg),
                (this.m_bValid = r.m_bValid),
                this.m_bValid &&
                  ((this.m_netPacket = r.m_netPacket),
                  (this.m_cubHeader = r.m_cubHeader),
                  (this.m_header = r.m_header),
                  this.InitForType(n));
            else {
              if (((this.m_header = new o.LH(null)), (this.m_bValid = !0), t))
                if (
                  ((this.m_netPacket = t),
                  this.m_netPacket.SeekGetHead(),
                  (this.m_eMsg = this.m_netPacket.GetUint32()),
                  2147483648 & this.m_eMsg)
                ) {
                  (this.m_eMsg = 2147483647 & this.m_eMsg),
                    (this.m_cubHeader = this.m_netPacket.GetUint32());
                  try {
                    o.LH.deserializeBinaryFromReader(
                      this.m_header,
                      new i.BinaryReader(
                        this.m_netPacket.GetPacket(),
                        this.m_netPacket.TellGet(),
                        this.m_cubHeader,
                      ),
                    ),
                      this.m_netPacket.SeekGetCurrent(this.m_cubHeader),
                      n && this.InitForType(n);
                  } catch (e) {
                    console.error("Exception deserializing protobuf", e),
                      (this.m_bValid = !1);
                  }
                } else this.m_bValid = !1;
              else
                e && (this.m_eMsg = e),
                  s && n
                    ? (this.m_body = n.fromObject(s))
                    : n && (this.m_body = new n());
              a && this.m_header.set_jobid_target(a.Hdr().jobid_target());
            }
          }
          InitForType(e) {
            (this.m_body = new e()),
              this.m_netPacket &&
                (this.m_netPacket.SeekGetHead(8 + this.m_cubHeader),
                this.ReadBodyFromBuffer(e, this.m_netPacket));
          }
          ReadBodyFromBuffer(e, t) {
            try {
              e.deserializeBinaryFromReader(
                this.m_body,
                new i.BinaryReader(
                  t.GetPacket(),
                  t.TellGet(),
                  t.GetCountBytesRemaining(),
                ),
              );
            } catch (e) {
              this.m_bValid = !1;
              const t = a.sm_ErrorReportingStore,
                n = `Exception parsing protobuf message body of type ${this.m_eMsg}.  Definitions may be out of sync with server version.`;
              t &&
                t.ReportError(new Error(n), {
                  bIncludeMessageInIdentifier: !0,
                }),
                console.warn(n),
                console.log(e.stack || e);
            }
          }
          BIsValid() {
            return this.m_bValid;
          }
          Body() {
            return this.m_body;
          }
          SetBodyJSON(e) {
            (e.toObject = () => e), (this.m_body = e);
          }
          Hdr() {
            return this.m_header;
          }
          GetEMsg() {
            return this.m_eMsg;
          }
          SetEMsg(e) {
            this.m_eMsg = e;
          }
          GetEResult() {
            return this.Hdr().eresult();
          }
          BSuccess() {
            return 1 == this.Hdr().eresult();
          }
          GetErrorMessage() {
            return this.Hdr().error_message()
              ? this.Hdr().error_message()
              : `eresult ${this.Hdr().eresult()}`;
          }
          Serialize() {
            const e = this.m_header.serializeBinary(),
              t = this.m_body.serializeBinary(),
              n = 2147483648 | this.m_eMsg,
              i = new Uint8Array(8 + e.length + t.length),
              o = new r.pV(i);
            return (
              o.PutUint32(n),
              o.PutUint32(e.length),
              o.PutBytes(e),
              o.PutBytes(t),
              i
            );
          }
          SerializeBody() {
            const e = this.m_body.serializeBinary(),
              t = new Uint8Array(e.length);
            return new r.pV(t).PutBytes(e), t;
          }
          DEBUG_ToObject() {
            return {};
          }
          DEBUG_LogToConsole() {
            0;
          }
        }
        class s extends a {
          constructor(e, t = 0, n, i, o) {
            super(t, n, e, i, void 0, o);
          }
          static InitFromPacket(e, t) {
            return new s(e, 0, t);
          }
          static InitFromMsg(e, t) {
            return new s(e, void 0, void 0, t);
          }
          static Init(e, t) {
            return new s(e, t);
          }
          static InitFromObject(e, t) {
            return new s(e, void 0, void 0, void 0, t);
          }
          Body() {
            return super.Body();
          }
          SetBodyFields(e) {
            for (const t in e)
              Array.isArray(e[t])
                ? this.Body()[`add_${t}`] &&
                  e[t].forEach((e) => {
                    this.Body()[`add_${t}`](e);
                  })
                : this.Body()[`set_${t}`] && this.Body()[`set_${t}`](e[t]);
          }
        }
        function l(e, t) {
          return t instanceof s ? t : s.InitFromObject(e, t);
        }
      },
      92125: (e, t, n) => {
        "use strict";
        n.d(t, {
          BT: () => l,
          Sg: () => d,
          Uq: () => s,
          gp: () => r,
          i0: () => m,
          qM: () => o,
          w0: () => a,
          zj: () => c,
        });
        var i = n(58663);
        const o = i.BinaryReader.prototype,
          r = i.BinaryWriter.prototype;
        function a(e) {
          const t = {},
            { fields: n } = e;
          for (const e in n) {
            const i = n[e];
            t[i.n] = i;
          }
          return t;
        }
        function s(e, t) {
          const { proto: n, fields: o } = e,
            r = new n();
          if (null == t) return r;
          for (const e in o) {
            const { n, c: a, r: s, d: l, q: c } = o[e];
            if (!Object.prototype.hasOwnProperty.call(t, e)) continue;
            const m = t[e];
            a
              ? s
                ? i.Message.setRepeatedWrapperField(
                    r,
                    n,
                    Array.isArray(m) ? m.map((e) => a.fromObject(e)) : [],
                  )
                : i.Message.setWrapperField(r, n, a.fromObject(m))
              : i.Message.setField(r, n, m);
          }
          return r;
        }
        function l(e, t, n) {
          const { proto: o, fields: r } = e,
            a = {};
          for (const e in r) {
            const { n: o, c: s, r: l, d: c, q: m } = r[e];
            if (s)
              if (l)
                a[e] = i.Message.toObjectList(
                  i.Message.getRepeatedWrapperField(n, s, o),
                  s.toObject,
                  t,
                );
              else {
                const r = i.Message.getWrapperField(n, s, o, m ? 1 : 0);
                r && (a[e] = s.toObject(t, r));
              }
            else {
              const t = i.Message.getFieldWithDefault(
                n,
                o,
                void 0 !== c ? c : null,
              );
              (null !== t || m) && (a[e] = t);
            }
          }
          return t && (a.$jspbMessageInstance = n), a;
        }
        function c(e, t, n) {
          for (; n.nextField() && !n.isEndGroup(); ) {
            const o = e[n.getFieldNumber()];
            if (o) {
              const { n: e, c: r, r: a, d: s, q: l, br: c } = o;
              if (r) {
                const o = new r();
                n.readMessage(o, r.deserializeBinaryFromReader),
                  a
                    ? i.Message.addToRepeatedWrapperField(t, e, o, r)
                    : i.Message.setWrapperField(t, e, o);
              } else if (c) {
                const o = c.call(n);
                a
                  ? i.Message.addToRepeatedField(t, e, o)
                  : i.Message.setField(t, e, o);
              } else
                console.assert(
                  !!c,
                  `Reader func not set for field number ${e} in class ${r}`,
                ),
                  n.skipField();
            } else n.skipField();
          }
          return t;
        }
        function m(e, t, n) {
          const { fields: o } = e;
          for (const e in o) {
            const { n: r, c: a, r: s, d: l, q: c, bw: m } = o[e];
            if (a)
              if (s) {
                const e = i.Message.getRepeatedWrapperField(t, a, r);
                ((e && e.length) || c) &&
                  n.writeRepeatedMessage(r, e, a.serializeBinaryToWriter);
              } else {
                const e = i.Message.getWrapperField(t, a, r, c ? 1 : 0);
                e && n.writeMessage(r, e, a.serializeBinaryToWriter);
              }
            else if (m) {
              const e = i.Message.getField(t, r);
              void 0 !== e && m.call(n, r, e);
            } else
              console.assert(
                !!m,
                `Writer func not set for field number ${r} in class ${a}`,
              );
          }
        }
        function d(e) {
          const t = e.proto;
          for (const n in e.fields) {
            const o = e.fields[n],
              { n: r, c: a, r: s, d: l, q: c } = o;
            Object.prototype.hasOwnProperty.call(o, "d")
              ? (t.prototype[n] = u(i.Message.getFieldWithDefault, r, l))
              : (t.prototype[n] = a
                  ? s
                    ? u(i.Message.getRepeatedWrapperField, a, r)
                    : h(a, r)
                  : u(i.Message.getField, r)),
              (t.prototype[`set_${n}`] = p(
                a
                  ? s
                    ? i.Message.setRepeatedWrapperField
                    : i.Message.setWrapperField
                  : i.Message.setField,
                r,
              )),
              s && (t.prototype[`add_${n}`] = _(r, a));
          }
        }
        function u(e, ...t) {
          return function () {
            return e(this, ...t);
          };
        }
        function h(e, t) {
          return function (n = !0) {
            return i.Message.getWrapperField(this, e, t, n ? 1 : 0);
          };
        }
        function p(e, t) {
          return function (n) {
            return e(this, t, n);
          };
        }
        function _(e, t) {
          return t
            ? function (n, o) {
                return i.Message.addToRepeatedWrapperField(this, e, n, t, o);
              }
            : function (t, n) {
                i.Message.addToRepeatedField(this, e, t, n);
              };
        }
      },
      67033: (e, t, n) => {
        "use strict";
        n.d(t, { Kx: () => r, pV: () => i, w: () => a });
        class i {
          m_nOffset;
          m_nLength;
          m_viewPacket;
          m_rgubPacket;
          m_iGet;
          m_iPut;
          constructor(e, t = 0, n) {
            (this.m_nOffset = t || 0),
              e instanceof Uint8Array || e instanceof DataView
                ? ((this.m_nLength = n || e.byteLength - this.m_nOffset),
                  (this.m_nOffset += e.byteOffset),
                  (this.m_viewPacket = new DataView(
                    e.buffer,
                    this.m_nOffset,
                    this.m_nLength,
                  )))
                : ((this.m_nLength = n || e.byteLength - this.m_nOffset),
                  (this.m_viewPacket = new DataView(
                    e,
                    this.m_nOffset,
                    this.m_nLength,
                  ))),
              (this.m_rgubPacket = new Uint8Array(
                this.m_viewPacket.buffer,
                this.m_viewPacket.byteOffset,
                this.m_viewPacket.byteLength,
              )),
              (this.m_iGet = 0),
              (this.m_iPut = 0);
          }
          TellGet() {
            return this.m_iGet + this.m_viewPacket.byteOffset;
          }
          GetPacket() {
            return this.m_viewPacket.buffer;
          }
          GetUint8() {
            return this.m_viewPacket.getUint8(this.m_iGet++);
          }
          GetUint32(e = !0) {
            const t = this.m_viewPacket.getUint32(this.m_iGet, e);
            return (this.m_iGet += 4), t;
          }
          SeekGetHead(e = 0) {
            this.m_iGet = e || 0;
          }
          SeekGetCurrent(e) {
            this.m_iGet += e;
          }
          TellPut() {
            return this.m_iPut + this.m_viewPacket.byteOffset;
          }
          TellMaxPut() {
            return this.m_viewPacket.byteLength;
          }
          PutUint8(e) {
            this.m_viewPacket.setUint8(this.m_iPut++, e);
          }
          PutUint32(e, t = !0) {
            this.m_viewPacket.setUint32(this.m_iPut, e, t), (this.m_iPut += 4);
          }
          PutBytes(e) {
            this.m_rgubPacket.set(e, this.m_iPut), (this.m_iPut += e.length);
          }
          SeekPut(e) {
            this.m_iPut += e;
          }
          GetCountBytesRemaining() {
            return this.m_viewPacket.byteLength - this.m_iGet;
          }
        }
        const o = [
          "0",
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "a",
          "b",
          "c",
          "d",
          "e",
          "f",
        ];
        function r(e) {
          let t = "";
          for (let n = 0; n < e.length; n++) {
            const i = e[n];
            t += o[i >>> 4] + o[15 & i];
          }
          return t;
        }
        function a(e) {
          const t = new Uint8Array(e.length / 2);
          for (let n = 0; n < e.length - 1; n += 2)
            t[n / 2] = parseInt(e.substr(n, 2), 16);
          return t;
        }
      },
      6861: (e, t, n) => {
        "use strict";
        n.d(t, { OI: () => o });
        const i = new (class {
          m_transport = null;
          m_registry = null;
          SetDefaultTransport(e) {
            null != this.m_transport &&
              console.error(
                "Multiple attempts to set a default WebUI transport: overriding previous",
              ),
              (this.m_transport = e);
          }
          GetDefaultTransport() {
            return this.m_transport;
          }
          SetDefaultHandlerRegistry(e) {
            null != this.m_registry &&
              console.error(
                "Multiple attempts to set a default WebUI message handler registry: overriding previous",
              ),
              (this.m_registry = e);
          }
          GetDefaultHandlerRegistry() {
            return this.m_registry;
          }
        })();
        function o() {
          return i;
        }
      },
      8820: (e, t, n) => {
        "use strict";
        n.d(t, {
          CH: () => a,
          DF: () => _,
          Qi: () => m,
          _g: () => s,
          bs: () => g,
          gc: () => u,
          hL: () => d,
          l6: () => c,
          uH: () => p,
          uN: () => h,
          vJ: () => r,
          xA: () => l,
        });
        var i = n(63696),
          o = n(63114);
        function r(e, t, n) {
          const [o, r] = i.useState(n);
          return (
            i.useEffect(() => {
              let t = !0;
              const n = e();
              return (
                n &&
                  n.then((e) => {
                    t && r(e);
                  }),
                () => {
                  t = !1;
                }
              );
            }, t),
            o
          );
        }
        function a() {
          const [, e] = i.useState(0);
          return i.useCallback(() => e((e) => e + 1), []);
        }
        function s(e) {
          const t = i.useRef({
            flLastExecutionTimeMs: 0,
            fnLatestCallback: null,
            nTimeoutHandle: 0,
            fnExecuteLatestCallback() {
              null != this.fnLatestCallback &&
                (this.fnLatestCallback(),
                (this.fnLatestCallback = null),
                (this.flLastExecutionTimeMs = Date.now())),
                window.clearTimeout(this.nTimeoutHandle),
                (this.nTimeoutHandle = 0);
            },
          });
          return (
            i.useEffect(() => {
              const e = t.current;
              return () => e.fnExecuteLatestCallback();
            }, []),
            i.useCallback(
              (n) => {
                const i = t.current;
                i.fnLatestCallback = n;
                const o = Date.now() - i.flLastExecutionTimeMs,
                  r = Math.max(e - o, 0);
                window.clearTimeout(i.nTimeoutHandle),
                  (i.nTimeoutHandle = window.setTimeout(
                    () => i.fnExecuteLatestCallback(),
                    r,
                  ));
              },
              [e],
            )
          );
        }
        function l(e, t, n) {
          return (0, o.QS)(
            (i) => {
              if (i && t)
                return (
                  i.addEventListener(e, t, n), () => i.removeEventListener(e, t)
                );
            },
            [e, t],
          );
        }
        function c(e, t, n, o) {
          i.useEffect(() => {
            if (e && n)
              return (
                e.addEventListener(t, n, o),
                () => e.removeEventListener(t, n, o)
              );
          }, [e, t, n]);
        }
        function m(e, t, n, i) {
          return c(
            e,
            "message",
            function (e) {
              t.includes(e.data) && n(this, e);
            },
            i,
          );
        }
        function d(e, t) {
          i.useLayoutEffect(() => {
            if (!t || !e) return;
            const n = e.Register(t);
            return () => n.Unregister();
          }, [e, t]);
        }
        function u(e) {
          const [t, n] = i.useState(e?.Value);
          return (
            i.useEffect(() => {
              if (null == e) return;
              const t = e.Subscribe(n);
              return n(e.Value), t?.Unsubscribe;
            }, [e]),
            t
          );
        }
        function h(e, t, n = 1e3) {
          const o = i.useRef(t);
          o.current = t;
          const [r, a] = i.useState(e),
            [s, l] = i.useState(!1),
            c = i.useCallback(() => {
              a(e), l(!1);
            }, [e, a]),
            { fnStopTimer: m, fnRestartTimer: d } = (function (
              e,
              t,
              n = !0,
              o = !1,
            ) {
              const r = i.useRef(t);
              r.current = t;
              const [a, s] = i.useState(!1),
                l = i.useRef(0),
                c = i.useCallback(() => {
                  s(!0), r.current && r.current();
                }, []),
                m = i.useCallback(() => {
                  window.clearTimeout(l.current);
                }, []),
                d = i.useCallback(() => {
                  s(!1), m(), (l.current = window.setTimeout(c, e));
                }, [m, e, c]),
                u = i.useCallback(() => {
                  n && d();
                }, [n, d]);
              return (
                i.useEffect(u, [e, u]),
                i.useEffect(() => m, [m]),
                i.useEffect(() => {
                  a && o && d();
                }, [a, o, d]),
                { bTimerCompleted: a, fnStopTimer: m, fnRestartTimer: d }
              );
            })(n, c, !1),
            u = i.useCallback(
              (e) => {
                d(), a(e), l(!0), o.current && o.current(e);
              },
              [a, d],
            );
          return [s ? r : e, u, c];
        }
        function p(e, t) {
          const [n, o] = i.useState(e);
          return (
            i.useEffect(() => {
              if (!e) {
                const e = window.setTimeout(() => o(!1), t);
                return () => window.clearTimeout(e);
              }
              o(!0);
            }, [e, t]),
            n
          );
        }
        function _(e, t) {
          return p(e, t) || e;
        }
        function g(e) {
          const t = i.useRef();
          return i.useCallback(
            () => (
              (t.current && t.current.factory == e) ||
                (t.current = { value: e(), factory: e }),
              t.current.value
            ),
            [e],
          );
        }
      },
      63114: (e, t, n) => {
        "use strict";
        n.d(t, {
          D5: () => c,
          QS: () => s,
          RY: () => l,
          Ue: () => r,
          XB: () => a,
          cZ: () => o,
        });
        var i = n(63696);
        function o(e, t) {
          null != e &&
            ("function" == typeof e ? e(t) : "current" in e && (e.current = t));
        }
        function r(...e) {
          return i.useCallback((t) => {
            for (const n of e) o(n, t);
          }, e);
        }
        function a(...e) {
          if (e && 0 !== e.length)
            return 1 === e.length
              ? e[0]
              : (t) =>
                  e.forEach((e) => {
                    e && ("function" == typeof e ? e(t) : (e.current = t));
                  });
        }
        function s(e, t) {
          const n = i.useRef();
          return i.useCallback((t) => {
            n.current && n.current(), (n.current = e(t));
          }, t);
        }
        function l(e) {
          const t = i.useRef(null);
          return { refWithValue: t, refForElement: r(e, t) };
        }
        function c(e, t) {
          const n = i.useRef(!1);
          i.useLayoutEffect(
            () => () => {
              n.current && o(e, void 0);
            },
            [e],
          ),
            i.useLayoutEffect(() => {
              (t || n.current) && (o(e, t), (n.current = !!t));
            }, [e, t]);
        }
      },
      7884: (e, t, n) => {
        "use strict";
        n.d(t, { YJ: () => o, TS: () => r });
        var i = n(26721);
        function o(e) {
          return e;
        }
        const r = window.Config ?? i.TS,
          a = window.UserConfig ?? i.iA;
        window.Config && Object.assign(i.TS, window.Config),
          window.UserConfig && Object.assign(a, window.UserConfig);
      },
      58881: (e, t, n) => {
        "use strict";
        n.d(t, { LH: () => a, Rh: () => r });
        var i = n(63696);
        const o = (0, i.createContext)(void 0),
          r = o.Provider;
        function a() {
          const e = (0, i.useContext)(o);
          if (!e)
            throw new Error(
              "called useActiveAccount outside of ActiveAccountProvider",
            );
          return e.useActiveAccount();
        }
      },
      12744: (e, t, n) => {
        "use strict";
        n.d(t, {
          KV: () => c,
          TR: () => u,
          VQ: () => l,
          rW: () => m,
          rX: () => d,
          zv: () => h,
        });
        var i = n(63696),
          o = n(20270);
        const r = i.createContext(void 0),
          a = r.Provider,
          s = () => {
            const e = i.useContext(r);
            if (!e)
              throw new Error(
                "called useActiveServiceTransportContext outside of ServiceTransportProvider",
              );
            return e;
          };
        function l(e) {
          const { useStorage: t, children: n } = e;
          let r, s;
          if ("useActiveCMInterface" in e) s = r = e.useActiveCMInterface;
          else {
            if (!("useActiveSteamInterface" in e))
              return (
                (0, o.z)(
                  e,
                  "neither useActiveCMInterface nor useActiveSteamInterface were provided",
                ),
                n
              );
            s = e.useActiveSteamInterface;
          }
          const l = i.useMemo(
            () => ({
              useActiveSteamInterface: s,
              useActiveCMInterface: r,
              useStorage: t,
            }),
            [s, r, t],
          );
          return i.createElement(a, { value: l }, n);
        }
        const c = () => s().useActiveSteamInterface().GetServiceTransport(),
          m = () =>
            s().useActiveSteamInterface().GetAnonymousServiceTransport(),
          d = () => s().useStorage(),
          u = () => s().useActiveSteamInterface(),
          h = () => {
            const { useActiveCMInterface: e } = s();
            if (!e)
              throw new Error(
                "called useActiveCMInterface outside of ServiceTransportRoot",
              );
            return e();
          };
      },
      38464: (e, t, n) => {
        "use strict";
        var i;
        n.d(t, { b2: () => a }),
          (function (e) {
            (e[(e.k_EAccountFlagNormalUser = 0)] = "k_EAccountFlagNormalUser"),
              (e[(e.k_EAccountFlagPersonaNameSet = 1)] =
                "k_EAccountFlagPersonaNameSet"),
              (e[(e.k_EAccountFlagUnbannable = 2)] =
                "k_EAccountFlagUnbannable"),
              (e[(e.k_EAccountFlagPasswordSet = 4)] =
                "k_EAccountFlagPasswordSet"),
              (e[(e.k_EAccountFlagSupport = 8)] = "k_EAccountFlagSupport"),
              (e[(e.k_EAccountFlagAdmin = 16)] = "k_EAccountFlagAdmin"),
              (e[(e.k_EAccountFlagSupervisor = 32)] =
                "k_EAccountFlagSupervisor"),
              (e[(e.k_EAccountFlagAppEditor = 64)] = "k_EAccountFlagAppEditor"),
              (e[(e.k_EAccountFlagHWIDSet = 128)] = "k_EAccountFlagHWIDSet"),
              (e[(e.k_EAccountFlagVacBeta = 512)] = "k_EAccountFlagVacBeta"),
              (e[(e.k_EAccountFlagDebug = 1024)] = "k_EAccountFlagDebug"),
              (e[(e.k_EAccountFlagDisabled = 2048)] = "k_EAccountFlagDisabled"),
              (e[(e.k_EAccountFlagLimitedUser = 4096)] =
                "k_EAccountFlagLimitedUser"),
              (e[(e.k_EAccountFlagLimitedUserForce = 8192)] =
                "k_EAccountFlagLimitedUserForce"),
              (e[(e.k_EAccountFlagEmailValidated = 16384)] =
                "k_EAccountFlagEmailValidated"),
              (e[(e.k_EAccountFlagForcePasswordChange = 131072)] =
                "k_EAccountFlagForcePasswordChange"),
              (e[(e.k_EAccountFlagLogonExtraSecurity = 524288)] =
                "k_EAccountFlagLogonExtraSecurity"),
              (e[(e.k_EAccountFlagLogonExtraSecurityDisabled = 1048576)] =
                "k_EAccountFlagLogonExtraSecurityDisabled"),
              (e[(e.k_EAccountFlagSteam2MigrationComplete = 2097152)] =
                "k_EAccountFlagSteam2MigrationComplete"),
              (e[(e.k_EAccountFlagNeedLogs = 4194304)] =
                "k_EAccountFlagNeedLogs"),
              (e[(e.k_EAccountFlagLockdown = 8388608)] =
                "k_EAccountFlagLockdown"),
              (e[(e.k_EAccountFlagMasterAppEditor = 16777216)] =
                "k_EAccountFlagMasterAppEditor"),
              (e[(e.k_EAccountFlagBannedFromWebAPI = 33554432)] =
                "k_EAccountFlagBannedFromWebAPI"),
              (e[(e.k_EAccountFlagPartnerMember = 67108864)] =
                "k_EAccountFlagPartnerMember"),
              (e[(e.k_EAccountFlagGlobalModerator = 134217728)] =
                "k_EAccountFlagGlobalModerator"),
              (e[(e.k_EAccountFlagParentalSettings = 268435456)] =
                "k_EAccountFlagParentalSettings"),
              (e[(e.k_EAccountFlagThirdPartySupport = 536870912)] =
                "k_EAccountFlagThirdPartySupport"),
              (e[(e.k_EAccountFlagNeedsSSANextSteamLogon = 1073741824)] =
                "k_EAccountFlagNeedsSSANextSteamLogon");
          })(i || (i = {}));
        i.k_EAccountFlagAdmin,
          i.k_EAccountFlagSupervisor,
          i.k_EAccountFlagSupport,
          i.k_EAccountFlagAdmin,
          i.k_EAccountFlagSupervisor;
        var o = n(56132),
          r = n(37976);
        class a {
          m_ulSteamID = r.A.UZERO;
          constructor(e = 0, t, n, i) {
            e instanceof a
              ? (this.m_ulSteamID = e.m_ulSteamID)
              : "string" == typeof e
                ? (this.m_ulSteamID = r.A.fromString(e, !0))
                : t && n && void 0 !== i
                  ? this.SetFromComponents(e, i, n, t)
                  : (this.m_ulSteamID = e ? r.A.fromNumber(e, !0) : r.A.UZERO);
          }
          static InitFromAccountID(e, t) {
            return new a(Number(e), t, 1, o.ke);
          }
          static InitFromClanID(e, t) {
            return new a(Number(e), t, 7, 0);
          }
          GetAccountID() {
            return this.m_ulSteamID.getLowBitsUnsigned();
          }
          GetInstance() {
            return 1048575 & this.m_ulSteamID.getHighBitsUnsigned();
          }
          GetAccountType() {
            return (this.m_ulSteamID.getHighBitsUnsigned() >> 20) & 15;
          }
          GetUniverse() {
            return (this.m_ulSteamID.getHighBitsUnsigned() >> 24) & 255;
          }
          ConvertTo64BitString() {
            return this.m_ulSteamID.toString();
          }
          Render() {
            switch (this.GetAccountType()) {
              case 0:
                return (
                  "[I:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 7:
                return (
                  "[g:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 4:
                return (
                  "[A:" +
                  this.GetUniverse() +
                  ":" +
                  this.GetAccountID() +
                  ":" +
                  this.GetInstance() +
                  "]"
                );
              case 3:
                return (
                  "[G:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 2:
                return (
                  "[M:" +
                  this.GetUniverse() +
                  ":" +
                  this.GetAccountID() +
                  ":" +
                  this.GetInstance() +
                  "]"
                );
              case 5:
                return (
                  "[P:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 6:
                return (
                  "[C:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              default:
                return (
                  "[U:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
            }
          }
          static InitFromString(e) {
            let t = new a();
            try {
              let [n, i, o, r, a] =
                  e.match(/\[([I|g|A|G|M|P|C|U]):(\d+):(\d+):?(\d+)?\]/) || [],
                s = Number(o),
                l = Number(r),
                c = a ? Number(a) : 1;
              switch (i) {
                case "I":
                  t.SetFromComponents(l, c, 0, s);
                  break;
                case "g":
                  t.SetFromComponents(l, 0, 7, s);
                  break;
                case "A":
                  t.SetFromComponents(l, c, 4, s);
                  break;
                case "G":
                  t.SetFromComponents(l, c, 3, s);
                  break;
                case "M":
                  t.SetFromComponents(l, c, 2, s);
                  break;
                case "P":
                  t.SetFromComponents(l, c, 5, s);
                  break;
                case "C":
                  t.SetFromComponents(l, c, 6, s);
                  break;
                case "U":
                  t.SetFromComponents(l, c, 1, s);
              }
            } catch (e) {}
            return t;
          }
          BIsValid() {
            let e = this.GetAccountType();
            if (e <= 0 || e >= 11) return !1;
            let t = this.GetUniverse();
            if (t <= 0 || t >= 5) return !1;
            if (1 == e) {
              if (0 == this.GetAccountID() || this.GetInstance() > o.im)
                return !1;
            } else if (7 == e) {
              if (0 == this.GetAccountID() || 0 != this.GetInstance())
                return !1;
            } else if (3 == e && 0 == this.GetAccountID()) return !1;
            return !0;
          }
          BIsIndividualAccount() {
            return 1 == this.GetAccountType();
          }
          BIsClanAccount() {
            return 7 == this.GetAccountType();
          }
          SetAccountID(e) {
            this.m_ulSteamID = new r.A(
              e,
              this.m_ulSteamID.getHighBitsUnsigned(),
              !0,
            );
          }
          SetInstance(e) {
            this.SetFromComponents(
              this.GetAccountID(),
              e,
              this.GetAccountType(),
              this.GetUniverse(),
            );
          }
          SetAccountType(e) {
            this.SetFromComponents(
              this.GetAccountID(),
              this.GetInstance(),
              e,
              this.GetUniverse(),
            );
          }
          SetUniverse(e) {
            this.SetFromComponents(
              this.GetAccountID(),
              this.GetInstance(),
              this.GetAccountType(),
              e,
            );
          }
          SetFromComponents(e, t, n, i) {
            let o = ((255 & i) << 24) + ((15 & n) << 20) + (1048575 & t),
              a = 4294967295 & e;
            this.m_ulSteamID = new r.A(a, o, !0);
          }
        }
      },
      22794: (e, t, n) => {
        "use strict";
        n.d(t, { A: () => r });
        const i = /^(steam|ftp|https?):\/\//;
        const o = JSON.parse(
          '{"unknown":0,"store.steampowered.com":1,"steamcommunity.com":2,"global":3,"default":4,"application":5,"subscription":6,"search":7,"cart":8,"app":9,"global-nav":10,"global-account":11,"storemenu":12,"search-suggestion":13,"about":14,"suggest":15,"dlc":16,"storemenu-recommendedtags":17,"creator":18,"footer-genre-dropdown":20,"footer-category-dropdown":21,"footer-about-dropdown":22,"footer-help-dropdown":23,"footer-publisher-catalogs":24,"wishlist":25,"spotlight":40,"message":41,"marketing-message":42,"daily-deal":43,"footer":44,"header":45,"name":46,"more-details":47,"notification":48,"category":49,"steamdeck":50,"login":60,"prompt":61,"join-steam":62,"successful-login":63,"successful-joinsteam":64,"main-cluster":100,"featured-win-games":101,"featured-mac-games":102,"tab-NewReleases":103,"tab-TopSellers":104,"tab-ComingSoon":105,"tab-Discounts":106,"smallcap-videos":107,"smallcap-demos":108,"home-headlines":109,"community-activity":110,"home-underten":111,"home-specials":112,"home-partners":113,"home-steam-install":114,"community-activity-recentlyplayed":115,"community-activity-recentlybought":116,"promo-banner":117,"promo-takeover":118,"featured-linux-games":119,"updated-games":120,"featured-updated-games":121,"discovery-queue":122,"new-on-steam":123,"curated-app":124,"home-gutter":125,"upcoming-queue":126,"home-specials-under10":127,"main-cluster-recommended":128,"main-cluster-topseller":129,"main-cluster-newonsteam":130,"recommended-spotlight":131,"hardware-promo":132,"popular-new-on-steam":133,"main-cluster-recommended-byfriends":134,"main-cluster-recommended-bycurators":135,"main-cluster-recenttopseller":136,"home-under10":137,"friends-trending":138,"spotlight-specials":139,"curator-recommended":140,"best-selling-vr":141,"creator-recommendations":142,"live-broadcast":143,"main-cluster-followed-creator":144,"tab-PopularNewReleases":145,"home-big-blue-buttons":146,"home-banner":147,"top-new-releases":148,"curated-main-app":149,"search-results":150,"query":151,"search-share":152,"genre":200,"large-cluster":201,"find-more":202,"friend-activity":203,"specials":2300,"breadcrumbs":205,"freestuff":220,"demos":1900,"tab-NewDemos":222,"tab-TopDemos":223,"browse-demos":224,"videos":100002,"popular-videos":226,"tab-NewVideos":227,"browse":230,"mac":231,"under10":232,"under5":233,"publisher":234,"publishers":235,"publisher-listing":236,"tag":237,"gettaggames":238,"explore":239,"browse-tags":240,"tags":241,"content-hub-carousel":242,"Action":250,"Adventure":251,"Strategy":252,"RPG":253,"Indie":254,"Massively Multiplayer":255,"Casual":256,"Family":257,"Simulation":258,"Racing":259,"Sports":260,"recommended":300,"recommendation-main":301,"friend-recommendations":302,"recommended-friendplaytime":303,"recommended-recentlyviewed":304,"recommended-morerecentlyviewed":305,"recommended-genrehighlights":306,"morelike":307,"morelike-mainitem":308,"friendactivity.js":309,"friendactivity-wishlist-spotlight":310,"friendactivity-purchases":311,"friendactivity-playedandwanted":312,"byafriend":313,"friend-recommendation":314,"ajaxgetfriendactivity":315,"recommend-franchise":316,"more-from-franchise":317,"wishlist-capsule":318,"game-highlights":400,"recommend-game":401,"view-own-recommendation":402,"game-purchase":403,"game-purchase-guide":404,"game-purchase-dlc":405,"game-friend-recommendations":406,"game-add-to-wishlist":407,"game-details":408,"game-highlight-tags":409,"game-tags-dialog":410,"game-tags-yours":411,"bundle-component-preview":412,"dlc-parent-app-link":413,"similar-recent-apps":414,"package-purchase":420,"package-contents":421,"package-details":422,"category-list":423,"bundle":430,"bundle-contents":431,"cart-remove-item":500,"cart-items":501,"cart-continue-shopping":502,"cart-purchase":503,"checkout-logo-abandon":504,"checkout-success":505,"checkout":506,"gift":507,"self":508,"checkout-complete-return":509,"checkout-complete-logo":510,"purchaserequest":511,"display":512,"initial":513,"gifts":514,"upsell-recommended":520,"upsell-specials":521,"external-site":550,"facebook":551,"twitter":552,"referral":553,"summersale":600,"prizebooth":610,"activity-game-link":611,"activity-game-discount":612,"prize-info":613,"promotion":614,"sale":615,"sale-item":616,"sale-dailydeals":617,"sale-publishers":618,"sale-genres":619,"email":620,"cart-icon":621,"sale-category-links":622,"sale-notification-callout":623,"sale-yesterdaydeals":624,"sale-flashsales":625,"sale-fromyourwishlist":626,"closed-beta-access":627,"sale-tag-bucket":628,"sale-hero":629,"sale-franchises":630,"sale-dlcforyou":631,"sale-recommended-by-steam-labs":632,"sale-recommended-by-deep-dive":633,"sale-dailydeals-tier2":634,"sale-deep-discounts":635,"sale-deck-mostplayed":636,"home-chart-deckmostplayed":637,"home-deck-banner":638,"sale-tag-bucket-top":639,"sale-dailydeals-none":640,"sale-dailydeals-tags":641,"sale-dailydeals-ir":642,"sale-dailydeals-tier2-none":645,"sale-dailydeals-tier2-tags":646,"sale-dailydeals-tier2-ir":647,"sale-hero-none":650,"sale-hero-tags":651,"sale-hero-ir":652,"autumnsale":660,"wintersale":661,"yearinreview":662,"springsale":663,"mobileapp":700,"summary":701,"mobilestorefront":702,"home":703,"winter2012-today-square":800,"winter2012-today-square-button":801,"winter2012-hires":802,"winter2012-hires-button":803,"winter2012-yesterday-square":804,"winter2012-yesterday-square-button":805,"winter2012-flash":806,"winter2012-flash-button":807,"winter2012-pack":808,"winter2012-pack-button":809,"winter2012-topsellers":810,"winter2012-topsellers-button":811,"winter2012-vote-winner":812,"winter2012-vote-winner-button":821,"winter2012-vote-option-voting":813,"winter2012-vote-option-voted":814,"winter2012-nav":815,"winter2012-500-callout":816,"winter2012-500-callout-button":820,"winter2012-featured":817,"winter2012-lower-nav":822,"winter2012-vote-option-vote-results":823,"fall2014-48":850,"fall2014-24":851,"fall2014-TopSellers":852,"fall2014-Upcoming":853,"fall2014-Under10":854,"fall2014-Under5":855,"fall2014-PopularNewReleases":856,"fall2014-specials-more":857,"fall2014-recommend-wishlist":858,"fall2014-recommend-contentforyourgames":859,"renderspecials":860,"recommend":861,"recommended-ranked-played":862,"redeem-wallet-complete-return":900,"redeem-wallet-complete-return-app":901,"updated":1000,"curators":1050,"curatorrecommendations":1051,"ajaxgetcuratorrecommendations":1052,"curatorscombinedrecommendations":1053,"ajaxgetcombinedrecommendations":1054,"curatorlist":1055,"curator":1056,"curatorfeaturedlist":1057,"curator_featured_list":1057,"mycuratorsreviewing":1058,"creatorfeaturedrecs":1059,"new_dlc":1060,"browse-dlc":1061,"curatorlistcapsule":1062,"widget":1100,"appvisibilitystats":1101,"render":1200,"recommendationfeed-single-friends":1210,"recommendationfeed-single-curators":1211,"recommendationfeed-single-recent":1212,"recommendationfeed-single-wishlist":1213,"recommendationfeed-single-played":1214,"recommendationfeed-two":1250,"recommendationfeed-four":1251,"winter2014-featured":1300,"winter2014-yesterday":1301,"winter2014-flash":1302,"winter2014-flash2":1303,"winter2014-vote":1304,"winter2014-specials-more":1305,"winter2014-recommend-wishlist":1306,"winter2014-frontpage-wishlist":1307,"winter2014-TopSellers":1308,"winter2014-Upcoming":1309,"winter2014-Under10":1310,"winter2014-Under5":1311,"winter2014-PopularNewReleases":1312,"winter2017-FeaturedBanner":1313,"summer2018-standardview-curated":1314,"summer2018-standardview-recommend-basic":1315,"summer2018-standardview-recommend-neural":1316,"summer2018-mergedview-curated":1317,"summer2018-mergedview-recommend-neural":1318,"summer2018-salien-giveaway":1319,"summer2018-creator-recommend":1320,"summer2018-live-stream":1321,"sale-vr":1322,"sale-moddable":1323,"discovery-queue-0":1324,"wishlist-onsale":1400,"wishlist-newrelease":1401,"greenlight-newrelease":1402,"sales-event-enhanced":1403,"creator-newrelease":1404,"generic-onsale":1405,"topsellers-onsale":1406,"recommended-onsale":1407,"demo-newrelease":1408,"Free to Play":1420,"tab-mostplayednewreleases":1421,"tab-mostplayed":1422,"tab-comingsoon":1423,"tab-discounts":1424,"tab-ConcurrentUsers":1454,"vr":1453,"hub-vr-recommended":1455,"hub-vr-specials":1459,"hub-vr-featured":1463,"hub-vr-takeover":1467,"games":1452,"hub-games-recommended":1456,"hub-games-specials":1460,"hub-games-featured":1464,"hub-games-takeover":1468,"software":1451,"hub-software-recommended":1457,"hub-software-specials":1461,"hub-software-featured":1465,"hub-software-takeover":1469,"hub-videos-recommended":1458,"hub-videos-specials":1462,"hub-videos-featured":1466,"hub-videos-takeover":1470,"macos":1480,"hub-macos-recommended":1481,"hub-macos-specials":1482,"hub-macos-featured":1483,"hub-macos-takeover":1484,"linux":1490,"hub-linux-recommended":1491,"hub-linux-specials":1492,"hub-linux-featured":1493,"hub-linux-takeover":1494,"controller":1500,"hub-controller-recommended":1501,"hub-controller-specials":1502,"hub-controller-featured":1503,"hub-controller-takeover":1504,"freetoplay":1510,"hub-freetoplay-recommended":1511,"hub-freetoplay-specials":1512,"hub-freetoplay-featured":1513,"hub-freetoplay-takeover":1514,"earlyaccess":1520,"hub-earlyaccess-recommended":1521,"hub-earlyaccess-specials":1522,"hub-earlyaccess-featured":1523,"hub-earlyaccess-takeover":1524,"pccafe":1530,"hub-pccafe-recommended":1531,"hub-pccafe-specials":1532,"hub-pccafe-featured":1533,"hub-pccafe-takeover":1534,"remoteplayphone":1540,"hub-remoteplayphone-recommended":1541,"hub-remoteplayphone-specials":1542,"hub-remoteplayphone-featured":1543,"hub-remoteplayphone-takeover":1544,"remoteplaytablet":1550,"hub-remoteplaytablet-recommended":1551,"hub-remoteplaytablet-specials":1552,"hub-remoteplaytablet-featured":1553,"hub-remoteplaytablet-takeover":1554,"remoteplaytv":1560,"hub-remoteplaytv-recommended":1561,"hub-remoteplaytv-specials":1562,"hub-remoteplaytv-featured":1563,"hub-remoteplaytv-takeover":1564,"remoteplaytogether":1570,"hub-remoteplaytogether-recommended":1571,"hub-remoteplaytogether-specials":1572,"hub-remoteplaytogether-featured":1573,"hub-remoteplaytogether-takeover":1574,"remote-play-about":1580,"remoteplay":1581,"turnbasedrpg":1582,"arcaderhythm":1583,"greatondeck":1584,"remoteplaylanding":1585,"fightingmartialarts":1586,"actionfps":1587,"hackandslash":1588,"actionrunjump":1589,"shmup":1590,"adventure":1591,"action":1592,"adventurerpg":1593,"hiddenobject":1594,"metroidvania":1595,"puzzlematching":1596,"storyrich":1597,"visualnovel":1598,"casual":1559,"querypaginated":1600,"n_section":1601,"rpgjrpg":1602,"rpgpartybased":1603,"roguelikeroguelite":1604,"rpgaction":1605,"rpg":1606,"rpgstrategytactics":1607,"rpgturnbased":1608,"simulation":1609,"simbuildingautomation":1610,"simdating":1611,"simfarmingcrafting":1612,"simhobbysim":1613,"simlife":1614,"simphysicssandbox":1615,"simspaceflight":1616,"strategy":1617,"strategycardboard":1618,"strategycitiessettlements":1619,"soundtracks":1620,"hub-soundtracks-recommended":1621,"hub-soundtracks-specials":1622,"hub-soundtracks-featured":1623,"hub-soundtracks-takeover":1624,"strategygrand4x":1625,"strategymilitary":1626,"strategyrealtime":1627,"towerdefense":1628,"strategyturnbased":1629,"sportsandracing":1630,"sports":1631,"sportsfishinghunting":1632,"sportsindividual":1633,"racing":1634,"racingsim":1635,"sportssim":1636,"sportsteam":1637,"anime":1638,"horror":1639,"mysterydetective":1640,"explorationopenworld":1641,"sciencefiction":1642,"space":1643,"survival":1644,"multiplayercoop":1645,"multiplayerlan":1646,"multiplayerlocalparty":1647,"multiplayermmo":1648,"multiplayer":1649,"multiplayeronlinecompetitive":1650,"singleplayer":1651,"upcoming":1700,"comingsoon-recommendedcomingsoon":1701,"comingsoon-popularwishlist":1702,"comingsoon-newdlc":1703,"comingsoon-followedcreator":1704,"comingsoon-mywishlist":1705,"comingsoon-largecap":1706,"tab-PopularUpcoming":1707,"tab-AllUpcoming":1708,"in-library-game-event-update":1800,"on-wishlist-game-event-update":1801,"in-library-game-remind-me":1802,"hub-demos-recommended":1901,"hub-demos-specials":1902,"hub-demos-featured":1903,"hub-demos-takeover":1904,"creator-home-product-page":2000,"franchise-home-link":2001,"ajaxgetappinfoforcap":2100,"partner-events":2101,"library-partner-events":2102,"store-partner-events":2103,"steamtv-partner-events":2104,"community-partner-events":2105,"partnerweb-partner-events":2106,"store-calendar-partner-events":2107,"events":2108,"subscriptions":2109,"ea":2110,"subscriptionplansea":2111,"download_event":2112,"reminder":2113,"steamtv":2200,"hub-specials-recommended":2301,"hub-specials-specials":2302,"hub-specials-featured":2303,"hub-specials-takeover":2304,"recommender":2400,"recommended-by-steam-labs":2401,"labs":2500,"automaticshow":2501,"microtrailers":2502,"now-playing":2503,"deepdive":2504,"game-add-to-wishlist-deepdive":2505,"dbdetailsmulti":2506,"dbgetlinkparam":2507,"recommended-by-deep-dive":2508,"recommended-by-deep-dive-carousel":2509,"recommended-by-deep-dive-carousel_default":2510,"recommended-by-deep-dive-carousel_cluster_recent":2511,"recommended-by-deep-dive-carousel_cluster_games":2512,"recommended-by-deep-dive-carousel_cluster_playtime":2513,"recommended-by-deep-dive-carousel-default":2514,"recommended-by-deep-dive-carousel-cluster-recent":2515,"recommended-by-deep-dive-carousel-cluster-games":2516,"recommended-by-deep-dive-carousel-cluster-playtime":2517,"trendingreviews":2600,"ajaxgetrecentreviews":2601,"community-recommendations":2602,"lunarnewyear2020":2700,"lunarnewyear":2701,"lunarnewyearmarket":2702,"steam-logo":2750,"sale-banner":2751,"sale-button-top":2752,"sale-button-bottom":2753,"wishlist-button-bottom":2754,"footer-steam-logo":2755,"steamclient":5000,"library":5100,"friendsui":5200,"friendcontextmenu":5201,"nextfest":6000,"topsellers":7000,"steamcharts":7001,"weeklytopsellers":7002,"topchartlist":7003,"overview":7004,"mostplayed":7005,"salesmartdailyactiveuserdemo":7006,"salesmartmostplayeddemo":7007,"salesmartdecktopplayed":7008,"salesmartcategory":7009,"vrhardwarelanding":7010,"apphome":100000,"images":100001,"allnews":100003,"news":100004,"announcements":100005,"discussions":100006,"reporteddiscussions":100007,"tradingforum":100008,"guides":100009,"reviews":100010,"positivereviews":100011,"negativereviews":100012,"workshop":100013,"broadcasts":100014,"eventcomments":100015,"sharedfiles":100100,"filedetails":100101,"screenshot":100102,"workshopitem":100103,"mtxitem":100104,"collection":100105,"guide":100106,"integratedguide":100107,"merch":100108,"artwork":100109,"video":100110,"topicsearch":100201,"singletopic":100202,"profiles":100300,"review":100301,"profileshowcase":100302,"broadcast":100400,"watch":100401,"friendactivityfeed":100500,"announcement":100501,"curatorreview":100502,"friendpurchase":100503,"workshopitempublished":100504,"artworkpublished":100505,"screenshotpublished":100506,"guidepublished":100507,"collectionpublished":100508,"itemfavorited":100509,"userreviewpublished":100510,"partner.steamgames.com":100600,"help.steampowered.com":100601,"salecreatorhome":100700,"saleitembrowse":100701,"salefacetbrowse":100702,"salesection":100703,"saletabsection":100704,"salebroadcast":100705,"salecuratorrec":100706,"saleeventsched":100707,"salesubscription":100708,"saleitemsearch":100709,"salesmartwishlist":100710,"salesmartir":100711,"salesmartdlc":100712,"salesmarttagrec":100713,"salebrowsetopwishlisted":100714,"salebrowsetrendingwishlisted":100715,"salebrowsepopularcomingsoon":100716,"salebrowsemostplayeddemo":100717,"salebrowsedailyactiveuserdemo":100718,"salebrowseplayednowdemo":100719,"salebrowserecentlyreleased":100720,"salebrowsepopularpurchased":100721,"salebrowsepopularpurchaseddiscounted":100722,"salebrowsediscounted":100723,"salebrowseprice":100724,"salebrowsenewandtrending":100725,"salebrowsetopsellers":100726,"salebrowsetoprated":100727,"discoveryqueue2022":100728,"saleeventsection":100729,"salesectionlinks":100730,"salesectionrewards":100731,"salesectiontext":100732,"salesectioneventschedule":100733,"salesmartpersonalizedcarousel":100734,"promo-takeunder":100735,"salesmartwr":100736,"salesmartwishlist_allsale":100737,"salesmartir_allsale":100738,"autopopulatetag":100739,"autopopulatecategory":100740,"salesmartrecentevents":100741,"seasonpassproductpage":100742,"itemcollections":100743,"crosspromotesalepage":100744}',
        );
        class r {
          static InstrumentLink(e, t, n = null) {
            const i = r.GetLinkParam(t, n);
            return r.AddNavParamToURL(e, i);
          }
          static ParseSNR(e) {
            const t = e.split("_") || [];
            return {
              domain: r.DecodeEventComponent(t[0]),
              controller: r.DecodeEventComponent(t[1]),
              method: r.DecodeEventComponent(t[2]),
              submethod: r.DecodeEventComponent(t[3]),
              feature: r.DecodeEventComponent(t[4]),
              depth: t[5] ? Number(t[5]) : void 0,
            };
          }
          static GetLinkParam(e, t = null) {
            let n = r.ComputeLinkPrefix(
              e.domain,
              e.controller,
              e.method,
              e.submethod,
            );
            t = t ?? e.depth ?? null;
            const i = r.EncodeEventComponent(e.feature);
            return i && ((n += "_" + i), t && (n += "_" + t)), n;
          }
          static AddNavParamToURL(e, t) {
            try {
              const n = new URL(
                  (function (e) {
                    return i.test(e) ? e : "https://" + e;
                  })(e),
                ),
                o = new URLSearchParams(n.search);
              return (
                o.set("snr", encodeURIComponent(t ?? "")),
                n.origin + n.pathname + "?" + o.toString() + n.hash
              );
            } catch (t) {
              return console.error(e, t), e;
            }
          }
          static ComputeLinkPrefix(e, t, n, i) {
            let o = "";
            return (
              (o += r.EncodeEventComponent(e)),
              (o += "_"),
              (o += r.EncodeEventComponent(t)),
              (o += "_"),
              (o += r.EncodeEventComponent(n)),
              (o += "_"),
              (o += r.EncodeEventComponent(i)),
              o
            );
          }
          static EncodeEventComponent(e) {
            return e
              ? e in o
                ? "" + o[e]
                : (e.match(/^[0-9]+$/) || (e = e.replace(/^[0-9]+/, "")),
                  e.replace(/[^a-zA-Z0-9\- ]+/g, ""))
              : "";
          }
          static DecodeEventComponent(e) {
            const t = e && parseInt(e);
            if (t && o) for (const e in o) if (o[e] == t) return e;
            return r.SanitizeEventComponent(e);
          }
          static SanitizeEventComponent(e) {
            return e && e.match(/^[a-zA-Z0-9\-.]*$/) ? e : "";
          }
        }
      },
      55697: (e, t, n) => {
        "use strict";
        n.d(t, { n9: () => s, pn: () => l, ru: () => c });
        var i = n(63696),
          o = n(22794),
          r = n(7884);
        const a = i.createContext({});
        i.createContext(void 0);
        function s() {
          return i.useContext(a);
        }
        function l(e, t, n) {
          return {
            ...e,
            feature: t || e.feature,
            depth: n || e.depth,
            countrycode: r.TS.COUNTRY,
            is_client: r.TS.IN_CLIENT,
          };
        }
        function c(e, t) {
          const n = s();
          return i.useMemo(
            () => o.A.GetLinkParam({ ...n, feature: e || n.feature }, t),
            [n, e, t],
          );
        }
      },
      61142: (e, t, n) => {
        "use strict";
        n.d(t, { W4: () => ye, _D: () => Ee, j$: () => De, UT: () => ke });
        var i = n(95606),
          o = n.n(i),
          r = n(56132),
          a = n(23812),
          s = n(69074),
          l = n(55697),
          c = n(37322),
          m = n(63696),
          d = n(31418),
          u = n(20074),
          h = n(72751),
          p = n(63497),
          _ = n(34629),
          g = n(83957),
          C = n.n(g),
          f = n(89193),
          S = n(17070);
        class v {
          constructor() {
            (0, f.Gn)(this);
          }
          m_mapYouTubeVideo = new Map();
          m_mapSharedFile = new Map();
          async LoadYouTubeDynamicData(e, t) {
            let n = new Array(),
              i = "";
            if (
              (e.forEach((e, t) => {
                this.m_mapYouTubeVideo.has(e)
                  ? n.push(this.m_mapYouTubeVideo.get(e))
                  : (i.length > 0 && (i += ","), (i += e));
              }),
              0 == i.length)
            )
              return n;
            let o = { youtubevideoids: i },
              r = null;
            return (
              (r = await C().get(
                S.TS.STORE_BASE_URL + "/events/ajaxgetdynamiceventmetadata",
                { params: o, cancelToken: t.token },
              )),
              r &&
                r.data &&
                r.data.youtube &&
                (0, f.h5)(() => {
                  r.data.youtube.forEach((e, t) => {
                    this.m_mapYouTubeVideo.set(e.videoid, e), n.push(e);
                  });
                }),
              n
            );
          }
          async LoadSharedFileDynamicData(e, t) {
            let n = new Array(),
              i = "";
            if (
              (e.forEach((e, t) => {
                this.m_mapSharedFile.has(e)
                  ? n.push(this.m_mapSharedFile.get(e))
                  : (i.length > 0 && (i += ","), (i += e));
              }),
              0 == i.length)
            )
              return n;
            let o = { sharedfileids: i },
              r = null;
            return (
              (r = await C().get(
                S.TS.STORE_BASE_URL + "/events/ajaxgetdynamiceventmetadata",
                { params: o, cancelToken: t.token },
              )),
              r &&
                r.data &&
                r.data.sharedfiles &&
                (0, f.h5)(() => {
                  r.data.sharedfiles.forEach((e, t) => {
                    this.m_mapSharedFile.set(e.sharedfileid, e), n.push(e);
                  });
                }),
              n
            );
          }
        }
        (0, _.Cg)([f.sH], v.prototype, "m_mapYouTubeVideo", void 0),
          (0, _.Cg)([f.sH], v.prototype, "m_mapSharedFile", void 0);
        const b = new v();
        var I,
          w = n(74977),
          y = n(61305),
          E = n(10672),
          D = n(77171),
          A = n(74002),
          T = n(80354),
          M = n(6e3),
          R = n(64409),
          k = n.n(R);
        function L(e) {
          const {
              videoID: t,
              bShowVideoImmediately: n,
              bAutoPlay: i,
              nStartSeconds: o,
              classNameSize: r,
              classNameAlign: a,
            } = e,
            [s, l] = (0, m.useState)(!n),
            [c, d] = (0, m.useState)(!1),
            u = (0, y.m)("YouTubeInlineSnippet"),
            [h, p] = (0, m.useState)({
              title: (0, A.we)("#Loading"),
              description: "",
              videoid: t,
              views: "0",
            });
          (0, m.useEffect)(() => {
            s &&
              b
                .LoadYouTubeDynamicData([t], u)
                .then((e) => {
                  !u.token.reason && e.length > 0 && (p(e[0]), d(!0));
                })
                .catch((e) =>
                  console.error(
                    "YouTubeInlineSnippet: " + (0, E.H)(e).strErrorMsg,
                  ),
                );
          }, [s, u, t]);
          const _ = !1;
          if (
            (m.useEffect(() => {
              n && (0, M.o)(() => {});
            }, [n, _]),
            s)
          ) {
            const e = h.title,
              n = h.views,
              i = h.description;
            return m.createElement(
              "div",
              { className: k().DynamicLinkBox, onClick: () => l(!1) },
              m.createElement("img", {
                className: k().DynamicLink_Preview,
                src: "https://img.youtube.com/vi/" + t + "/0.jpg",
              }),
              m.createElement(
                "div",
                { className: k().DynamicLink_Content },
                m.createElement(
                  "div",
                  { className: k().DynamicLink_Name },
                  (0, A.we)("#EventEditor_YouTubeVideoTitle", e),
                ),
                m.createElement(
                  "div",
                  { className: k().DynamicLink_YoutubeViews },
                  (0, A.we)(
                    "#EventEditor_YouTubeVideoViews",
                    (0, T.Dq)(Number(n)),
                  ),
                ),
                m.createElement(
                  "div",
                  { className: k().Dynamiclink_Content },
                  c && i,
                  !c && m.createElement(w.t, { size: "medium" }),
                ),
              ),
            );
          }
          return m.createElement(
            "div",
            { className: (0, D.A)(k().PreviewYouTubeVideo, r, a), id: t },
            m.createElement("img", {
              className: k().PlaceholderImg,
              src:
                S.TS.COMMUNITY_CDN_URL +
                "public/shared/images/responsive/youtube_16x9_placeholder.gif",
            }),
            m.createElement(M.N, {
              video: t,
              autoplay: i ?? !1,
              startSeconds: o,
              controls: !0,
              playsInline: !0,
              autopause: !0,
              showFullscreenBtn: !0,
            }),
          );
        }
        function G(e) {
          return {
            sizeStr: e == I.full ? R.sizeFull : R.sizeThumb,
            alignStr:
              e == I.full ? "" : e == I.left ? R.floatLeft : R.floatRight,
          };
        }
        !(function (e) {
          (e.left = "leftthumb"),
            (e.right = "rightthumb"),
            (e.full = "full"),
            (e.summary = "summary");
        })(I || (I = {}));
        var F = n(41230),
          P = n(42689),
          B = n(94762),
          x = n(23117),
          O = n(45365),
          N = n(91581),
          V = n(74750),
          U = n(18849),
          H = n(63297);
        class W {
          constructor() {
            (0, f.Gn)(this);
          }
          m_bValidatedEmail = !1;
          m_nMobileDeviceCount = 0;
          m_bIsLoaded = !1;
          m_promise;
          m_bLoadedFromConfig = !1;
          LazyInit() {
            if (!this.m_bLoadedFromConfig) {
              let e = (0, S.Fd)("notificationstore", "application_config");
              this.ValidateStoreDefault(e) &&
                (0, f.h5)(() => {
                  (this.m_bIsLoaded = !0),
                    (this.m_bValidatedEmail = e.email_validated),
                    (this.m_nMobileDeviceCount = e.mobile_device_count);
                }),
                (this.m_bLoadedFromConfig = !0);
            }
          }
          ValidateStoreDefault(e) {
            return (
              e &&
              "object" == typeof e &&
              "number" == typeof e.mobile_device_count
            );
          }
          BIsLoaded() {
            return this.m_bIsLoaded;
          }
          BHasValidatedEmail() {
            return this.m_bValidatedEmail;
          }
          BHasPushNotification() {
            return this.m_nMobileDeviceCount > 0;
          }
          async HintLoad() {
            return (
              this.LazyInit(),
              this.m_bIsLoaded
                ? 1
                : S.iA.logged_in
                  ? (this.m_promise || (this.m_promise = this.InternalLoad()),
                    this.m_promise)
                  : 1
            );
          }
          async InternalLoad() {
            const e = S.TS.STORE_BASE_URL + "notification/ajaxusersettings",
              t = await C().get(e, { withCredentials: !0 });
            return (
              1 == t.data.success &&
                (0, f.h5)(() => {
                  (this.m_bIsLoaded = !0),
                    (this.m_bValidatedEmail = t.data.email_validated),
                    (this.m_nMobileDeviceCount = t.data.mobile_device_count);
                }),
              t.data.success
            );
          }
        }
        (0, _.Cg)([f.sH], W.prototype, "m_bValidatedEmail", void 0),
          (0, _.Cg)([f.sH], W.prototype, "m_nMobileDeviceCount", void 0);
        let z = new W();
        var j = n(26765),
          q = n(89021),
          K = n(97229),
          Z = n(28574),
          Q = n(90170),
          $ = n.n(Q);
        const X = n(18339);
        function Y(e, t) {
          const n = X.tz.guess(),
            i = X.unix(e).tz(n),
            o = (0, A.l4)();
          return (
            o && i.locale(o),
            m.createElement(
              m.Fragment,
              null,
              i.format("LT"),
              t
                ? m.createElement(
                    K.Gq,
                    { toolTipContent: i.format("Z") + ", " + n },
                    m.createElement("span", null, " ", i.zoneAbbr()),
                  )
                : null,
            )
          );
        }
        const J = (0, F.PA)((e) => {
            const {
                dateAndTime: t,
                bSingleLine: n,
                bOnlyTime: i,
                bOnlyDate: o,
              } = e,
              r = !i && Boolean(t),
              a = !o && Boolean(t),
              s = r && (0, A.TW)(t),
              l = e.stylesmodule ? { ...$(), ...e.stylesmodule } : $();
            return n
              ? m.createElement(
                  "span",
                  { className: i || o ? l.DateAndTimeInline : l.DateAndTime },
                  r && s,
                  r && a ? m.createElement("span", null, " ") : void 0,
                  Boolean(t && a) && Y(t, a),
                )
              : m.createElement(
                  "div",
                  { className: l.DateAndTime },
                  r &&
                    m.createElement(
                      m.Fragment,
                      null,
                      m.createElement("div", { className: l.LocalizedDate }, s),
                      " ",
                      m.createElement("span", { className: l.At }, "@"),
                    ),
                  m.createElement(
                    "div",
                    { className: l.LocalizedTime },
                    Boolean(t && a) && Y(t, a),
                  ),
                );
          }),
          ee = (e) => {
            const t = m.createElement(
              "div",
              { className: e.stylesmodule.DateToolTip },
              m.createElement(J, {
                dateAndTime: e.rtFullDate,
                bSingleLine: !0,
                stylesmodule: e.stylesmodule,
              }),
            );
            return m.createElement(
              K.m9,
              {
                toolTipContent: t,
                direction: "top",
                className: e.className,
                bTopmost: !0,
              },
              e.children,
            );
          };
        let te = class extends m.Component {
          render() {
            const { startDateAndTime: e, endDateAndTime: t } = this.props,
              n = this.props.stylesmodule
                ? { ...$(), ...this.props.stylesmodule }
                : $();
            let i =
              this.props.bHideEndTime ||
              null == this.props.endDateAndTime ||
              this.props.endDateAndTime < 1;
            if (null == e || 0 == e)
              return m.createElement(
                "div",
                { className: n.DateAndTime },
                m.createElement(
                  "span",
                  { className: n.RightSideTitles },
                  (0, A.we)("#EventDisplay_TimeRange"),
                ),
                (0, A.we)("#EventDisplay_TimeDisplayNone"),
              );
            let o = U.HD.GetTimeNowWithOverride();
            if (i)
              return m.createElement(
                "div",
                { className: n.StartDate },
                m.createElement(
                  "div",
                  { className: n.RightSideTitles },
                  (0, A.we)(
                    e < o
                      ? "#EventDisplay_TimeInPast"
                      : "#EventDisplay_TimeUpcoming",
                  ),
                  " ",
                ),
                m.createElement(J, { stylesmodule: n, dateAndTime: e }),
              );
            let r = e <= o && o <= t;
            const a = (0, Z.JD)(new Date(1e3 * e), new Date(1e3 * t));
            return m.createElement(
              "div",
              { className: n.MultiDateAndTime },
              m.createElement(
                "div",
                { className: n.StartDate },
                m.createElement(
                  "span",
                  { className: n.RightSideTitles },
                  (0, A.we)(
                    e >= o
                      ? "#EventDisplay_TimeBeginsOn"
                      : t >= o
                        ? "#EventDisplay_TimeBeginsOn_Past"
                        : "#EventDisplay_TimeBeginsOn_StartAndEnd_Past",
                  ),
                ),
                m.createElement(J, {
                  stylesmodule: n,
                  bSingleLine: !0,
                  dateAndTime: e,
                }),
              ),
              m.createElement(
                "div",
                { className: n.EndDate },
                m.createElement(
                  "span",
                  { className: n.RightSideTitles },
                  (0, A.we)(
                    t < o
                      ? "#EventDisplay_TimeEndsOn_Past"
                      : "#EventDisplay_TimeEndsOn",
                  ),
                ),
                m.createElement(J, {
                  stylesmodule: n,
                  bSingleLine: !0,
                  bOnlyTime: a,
                  dateAndTime: t,
                }),
              ),
              r &&
                m.createElement(
                  "span",
                  { className: n.ActiveEvent },
                  m.createElement(
                    "span",
                    {
                      className: (0, D.A)(
                        n.RightSideTitles,
                        n.ActiveEventCallOut,
                      ),
                    },
                    (0, A.we)("#Time_Now"),
                  ),
                ),
            );
          }
        };
        te = (0, _.Cg)([F.PA], te);
        let ne = class extends m.Component {
          render() {
            const {
                startDateAndTime: e,
                endDateAndTime: t,
                bHideEndTime: n,
              } = this.props,
              i = this.props.stylesmodule
                ? { ...$(), ...this.props.stylesmodule }
                : $();
            if (null == e || 0 == e)
              return m.createElement(
                "div",
                { className: i.DateAndTime },
                m.createElement(
                  "span",
                  { className: i.RightSideTitles },
                  (0, A.we)("#EventDisplay_TimeRange"),
                ),
                (0, A.we)("#EventDisplay_TimeDisplayNone"),
              );
            const o = U.HD.GetTimeNowWithOverrideAsDate(),
              r = U.HD.GetTimeNowWithOverride(),
              a = (0, Z.Ct)(new Date(1e3 * e), o),
              s = m.createElement(
                "div",
                { className: i.ShortDateAndTime },
                (0, A.TW)(e, a),
              );
            let l = m.createElement(
              ee,
              { rtFullDate: e, stylesmodule: i },
              m.createElement(
                "div",
                { className: i.RightSideTitles },
                (0, A.we)(
                  e < r
                    ? "#EventDisplay_TimeInPast"
                    : "#EventDisplay_TimeUpcoming",
                ),
              ),
              s,
            );
            if (
              (r < e &&
                e < r + Z.Kp.PerWeek &&
                (l = m.createElement(
                  ee,
                  { rtFullDate: e, stylesmodule: i },
                  m.createElement(
                    "div",
                    { className: i.RightSideTitles },
                    (0, A.PP)(
                      "#EventDisplay_EventUpcoming_WithDateAndTime",
                      s,
                      m.createElement(
                        "div",
                        { className: i.ShortDateAndTime },
                        Y(e),
                        " ",
                      ),
                    ),
                  ),
                )),
              n || null == t || t < 1)
            )
              return l;
            const c = e <= r && r <= t;
            c &&
              (l = m.createElement(
                ee,
                { rtFullDate: e, className: i.ActiveEvent, stylesmodule: i },
                m.createElement(
                  "span",
                  { className: i.ActiveEventCallOut },
                  (0, A.we)("#Time_Now"),
                ),
              ));
            let d = null;
            const u = c ? t - r : t - e;
            if (u <= Z.Kp.PerDay) {
              const e = m.createElement(
                "div",
                { className: i.ShortDateAndTime },
                (0, A.Hq)(u, !0),
              );
              d =
                t < r
                  ? m.createElement(
                      "div",
                      { className: i.RightSideTitles },
                      (0, A.we)("#EventDisplay_TimeEndsOn_Ran"),
                      e,
                    )
                  : m.createElement(
                      "div",
                      { className: i.RightSideTitles },
                      (0, A.PP)(
                        c
                          ? "#EventDisplay_TimeLeft"
                          : "#EventDisplay_RunsForDuration",
                        e,
                      ),
                    );
            } else {
              const e = o.getFullYear() == new Date(1e3 * t).getFullYear();
              d = m.createElement(
                m.Fragment,
                null,
                m.createElement(
                  "div",
                  { className: i.RightSideTitles },
                  (0, A.we)(
                    t < r
                      ? "#EventDisplay_TimeEndsOn_Past"
                      : "#EventDisplay_TimeEndsOn",
                  ),
                ),
                m.createElement(
                  "div",
                  { className: i.ShortDateAndTime },
                  (0, A.TW)(t, e),
                ),
              );
            }
            const h = m.createElement(
              ee,
              { rtFullDate: t, stylesmodule: i },
              d,
            );
            return m.createElement(
              "div",
              { className: i.ShortDateRange },
              l,
              h,
            );
          }
        };
        ne = (0, _.Cg)([F.PA], ne);
        var ie = n(25444),
          oe = n(14355),
          re = n(81734),
          ae = n(82924),
          se = n(89481),
          le = n(82211),
          ce = n.n(le),
          me = n(15320),
          de = n(13527),
          ue = n(23568),
          he = n(32776),
          pe = n(49517);
        let _e = class extends m.Component {
          m_iMenuInstance;
          m_elDropDownRef = m.createRef();
          m_bLoadWasCancelled = !1;
          state = {
            bIsOpen: !1,
            bIsLoadingNotificationSettings: !z.BIsLoaded(),
          };
          componentDidMount() {
            this.state.bIsLoadingNotificationSettings &&
              z
                .HintLoad()
                .catch(
                  (e) => (
                    console.error(
                      "EventReminderWidget load fail: " +
                        (0, E.H)(e).strErrorMsg,
                    ),
                    2
                  ),
                )
                .then((e) => {
                  1 != e ||
                    this.m_bLoadWasCancelled ||
                    this.setState({ bIsLoadingNotificationSettings: !1 });
                }),
              !this.props.eventModel.appid &&
                this.props.eventModel.clanSteamID &&
                N.ac.LoadClanInfoForClanSteamID(
                  this.props.eventModel.clanSteamID,
                );
          }
          componentWillUnmount() {
            this.m_bLoadWasCancelled = !0;
          }
          ToggleMenu(e) {
            const t = H.KN.Get().BIsUserLoggedIn();
            t || S.TS.IN_CLIENT
              ? (!t &&
                  S.TS.IN_CLIENT &&
                  console.log(
                    "EventReminderWidget: In Client: Cannot use login widget. We expect to be already logged in.",
                  ),
                this.state.bIsOpen ? this.HideMenu() : this.ShowMenu(),
                e.stopPropagation(),
                e.preventDefault())
              : (0, oe.pg)(
                  m.createElement(ie.o0, {
                    strTitle: (0, A.we)("#EventDisplay_Share_NotLoggedIn"),
                    strDescription: (0, A.we)(
                      "#EventDisplay_Share_NotLoggedIn_Description",
                    ),
                    strOKButtonText: (0, A.we)("#MobileLogin_SignIn"),
                    onOK: () => (0, he.vg)(),
                  }),
                  window,
                );
          }
          ShowMenu() {
            let e = m.createElement(fe, {
                ...this.props,
                fnHasReminderSet: (e) => this.BHasSomeNotificationSetting(e),
                fnHidePanel: this.HideMenu,
              }),
              t = {
                bOverlapHorizontal: !0,
                bOverlapVertical: !0,
                bDisablePopTop: !0,
                bMatchWidth: !0,
                strClassName: (0, D.A)(
                  de.ReminderDialog,
                  de.ReminderOptions,
                  j.contextMenu,
                ),
              };
            (this.m_iMenuInstance = (0, B.lX)(
              e,
              this.m_elDropDownRef.current,
              t,
            )),
              this.m_iMenuInstance.SetOnHideCallback(this.HideMenu),
              this.setState({ bIsOpen: !0 }),
              V.V.RecordAppInteractionEvent(
                this.props.eventModel.appid,
                V.E.k_eReminder_Opened,
              );
          }
          HideMenu() {
            this.m_iMenuInstance && this.m_iMenuInstance.Hide(),
              this.setState({ bIsOpen: !1 });
          }
          BHasSomeNotificationSetting(e) {
            const t = e.GID;
            return (
              (z.BHasValidatedEmail() &&
                H.KN.Get().BFollowsEventAndNotifiedBy(
                  e.clanSteamID,
                  t,
                  H.Nh.k_ENotifyFlagByEmail,
                )) ||
              (z.BHasPushNotification() &&
                H.KN.Get().BFollowsEventAndNotifiedBy(
                  e.clanSteamID,
                  t,
                  H.Nh.k_ENotifyFlagByPush,
                ))
            );
          }
          render() {
            const e = this.props.bOnlyShowIcon && !this.state.bIsOpen,
              t = this.BHasSomeNotificationSetting(this.props.eventModel),
              n = (0, U.sB)();
            return this.props.eventModel.startTime < n ||
              this.props.eventModel.BIsUnlistedEvent()
              ? null
              : m.createElement(
                  "div",
                  {
                    className: (0, D.A)({
                      [de.ReminderCheckBox]: !0,
                      [ce().ReminderCtn]: !0,
                      [de.IconMode]: e,
                      [de.TextMode]: !e,
                      ReminderSet: t,
                      RemindMeWidget: !0,
                    }),
                    onClick: this.ToggleMenu,
                    ref: this.m_elDropDownRef,
                  },
                  t &&
                    m.createElement(
                      "div",
                      { className: de.RemindCheck },
                      m.createElement(re.Jlk, null),
                    ),
                  e &&
                    m.createElement(
                      "div",
                      { className: de.RemindBell },
                      m.createElement(re.IrQ, null),
                    ),
                  m.createElement(
                    "div",
                    { className: de.ReminderDefault },
                    (0, A.we)("#EventDisplay_Reminder_SetReminder"),
                  ),
                  m.createElement("div", { className: de.ReminderOptions }),
                );
          }
        };
        function ge(e) {
          const { bPreviewMode: t, eventGID: n, ...i } = e,
            o = (0, O.RR)(n);
          if (!o)
            return t
              ? m.createElement(
                  "div",
                  { className: pe.ErrorDiv },
                  (0, A.we)("#EventDidplay_Reminder_EventNotVisible", n),
                )
              : null;
          const a = (0, r.sf)(S.TS.LANGUAGE);
          return m.createElement(_e, { lang: a, ...i, eventModel: o });
        }
        function Ce(e) {
          return P.unix(e).utc().format("YYYYMMDD[T]HHmmss[Z]");
        }
        (0, _.Cg)([ae.oI], _e.prototype, "ToggleMenu", null),
          (0, _.Cg)([ae.oI], _e.prototype, "ShowMenu", null),
          (0, _.Cg)([ae.oI], _e.prototype, "HideMenu", null),
          (_e = (0, _.Cg)([F.PA], _e));
        let fe = class extends m.Component {
          state = { bIsRequestInFlight: !1 };
          async OnChangeFollowOrIgnore(e, t, n) {
            const { eventModel: i } = this.props,
              o = i?.GID;
            if (o && o != r.kF) {
              this.setState({ bIsRequestInFlight: !0 });
              try {
                await H.KN.Get().SetFollowOrUnfollowEvent(
                  !e,
                  t,
                  i.clanSteamID,
                  o,
                  n,
                ),
                  e &&
                    (n === H.Nh.k_ENotifyFlagByEmail
                      ? this.TrackEventAction(V.E.k_eReminder_Email)
                      : n === H.Nh.k_ENotifyFlagByPush &&
                        this.TrackEventAction(V.E.k_eReminder_MobilePush));
              } catch (e) {
                (0, oe.HT)(
                  m.createElement(
                    ie.KG,
                    {
                      strTitle: (0, A.we)(
                        t
                          ? "#EventDisplay_Reminder_IgnoreEvent_Error"
                          : "#EventDisplay_Reminder_FollowEvent_Error",
                      ),
                      strDescription: (0, A.we)(
                        t
                          ? "#EventDisplay_Reminder_IgnoreEvent_ErrorDesc"
                          : "#EventDisplay_Reminder_FollowEvent_ErrorDesc",
                      ),
                    },
                    (0, E.H)(e).strErrorMsg,
                  ),
                  window,
                );
              }
              this.setState({ bIsRequestInFlight: !1 });
            }
          }
          OnChangeFollowByEmail(e) {
            this.OnChangeFollowOrIgnore(e, !1, H.Nh.k_ENotifyFlagByEmail);
          }
          OnChangeFollowByPush(e) {
            this.OnChangeFollowOrIgnore(e, !1, H.Nh.k_ENotifyFlagByPush);
          }
          GetExternalCalendarEventTitle() {
            const { eventModel: e, lang: t } = this.props,
              n = e.GetNameWithFallback(t);
            if (
              x.NK.BHasEntityNameForID(e.appid, e.clanSteamID.GetAccountID())
            ) {
              return `${x.NK.GetEntityNameForID(e.appid, e.clanSteamID.GetAccountID())}: ${n}`;
            }
            return n;
          }
          TrackEventAction(e) {
            const { eventModel: t } = this.props;
            V.V.RecordAppInteractionEvent(t.appid, e);
          }
          GetExternalCalendarEventBody() {
            const { eventModel: e, lang: t } = this.props;
            let n = e.GetSubTitleWithLanguageFallback(t);
            n = n ? `${n}\n\n\n` : "";
            const i = e.GetSummaryWithFallback(t),
              o = e.jsondata.bSaleEnabled
                ? me.PH.k_eStoreSalePage
                : me.PH.k_eStoreView;
            return `${n}${i}\n\n${(0, me.qT)(e, o, "forceAbsolute")}`;
          }
          GetGoogleCalendarLink() {
            const { eventModel: e } = this.props,
              t = encodeURIComponent(this.GetExternalCalendarEventTitle()),
              n = encodeURIComponent(this.GetExternalCalendarEventBody()),
              i = e.GetStartTimeAndDateUnixSeconds(),
              o = Ce(i),
              r = Ce(e.GetEndTimeAndDateUnixSeconds() || i + Z.Kp.PerHour),
              a =
                (S.TS.IN_CLIENT ? "steam://openurl_external/" : "") +
                `https://calendar.google.com/calendar/r/eventedit?text=${t}&details=${n}&dates=${o}/${r}`;
            return (0, se.k2)(a);
          }
          GetICSDownloadLink(e) {
            const { eventModel: t, lang: n } = this.props,
              i = t.appid
                ? "app/" + t.appid
                : "group/" + t.clanSteamID.GetAccountID(),
              o = "l=" + (0, r.Lg)(n);
            return `${S.TS.STORE_BASE_URL}${(0, me.LJ)()}/download/${i}/${e}/${t.GID}?${o}`;
          }
          render() {
            const {
                eventModel: e,
                bShowStartTime: t,
                bExpandLeft: n,
                bOnlyShowIcon: i,
                fnHasReminderSet: o,
                fnHidePanel: r,
              } = this.props,
              a = z.BHasValidatedEmail(),
              s = z.BHasPushNotification(),
              l = t && e.GetStartTimeAndDateUnixSeconds();
            return m.createElement(
              "div",
              null,
              m.createElement(
                "div",
                {
                  className: (0, D.A)(
                    de.ReminderCheckBox,
                    i ? de.IconMode : de.TextMode,
                    "RemindMeWidget",
                  ),
                  onClick: r,
                },
                o(this.props.eventModel) &&
                  m.createElement(
                    "div",
                    { className: de.RemindCheck },
                    m.createElement(re.Jlk, null),
                  ),
                i &&
                  m.createElement(
                    "div",
                    { className: de.RemindBell },
                    m.createElement(re.IrQ, null),
                  ),
                m.createElement(
                  "div",
                  { className: de.ReminderDefault },
                  (0, A.we)("#EventDisplay_Reminder_SetReminder"),
                ),
                m.createElement("div", {
                  className: de.ReminderOpennedOptions,
                }),
              ),
              m.createElement(
                "div",
                {
                  className: (0, D.A)(
                    de.FlexColumnContainer,
                    de.ReminderBackground,
                    n && de.ReminderExpandsLeft,
                  ),
                },
                this.state.bIsRequestInFlight &&
                  m.createElement(w.t, {
                    className: de.RpcThrobber,
                    size: "xlarge",
                    position: "center",
                  }),
                l &&
                  m.createElement(
                    "div",
                    { className: de.FullStartTime },
                    (0, A.PP)(
                      "#EventDisplay_EventUpcoming_WithDateAndTime",
                      (0, A.TW)(
                        l,
                        (0, Z.Ct)(
                          new Date(1e3 * l),
                          U.HD.GetTimeNowWithOverrideAsDate(),
                        ),
                      ),
                      Y(l, !0),
                    ),
                  ),
                m.createElement(
                  "div",
                  { className: de.ReminderOptionsHeader },
                  (0, A.we)("#EventDisplay_Reminder_GetNotification_Via"),
                ),
                m.createElement(
                  "div",
                  {
                    className: (0, D.A)(de.ReminderOption, !a && de.Unverified),
                  },
                  m.createElement(
                    K.he,
                    {
                      className: de.CheckboxWrapper,
                      bTopmost: !0,
                      toolTipContent: (0, A.we)(
                        a
                          ? "#EventReminder_NotifyByEmail_ttip"
                          : "#EventReminder_NotifyByEmail_Missing",
                      ),
                    },
                    m.createElement(q.Yh, {
                      label: (0, A.we)("#EventDisplay_Reminder_ViaEmail"),
                      disabled: !a,
                      checked: H.KN.Get().BFollowsEventAndNotifiedBy(
                        e.clanSteamID,
                        e.GID,
                        H.Nh.k_ENotifyFlagByEmail,
                      ),
                      onChange: this.OnChangeFollowByEmail,
                    }),
                  ),
                  !a &&
                    m.createElement(
                      "div",
                      { className: ue.FlexColumnContainer },
                      m.createElement(
                        "a",
                        {
                          href: S.TS.STORE_BASE_URL + "account/",
                          target: S.TS.IN_CLIENT ? void 0 : "_blank",
                          onClick: () =>
                            this.TrackEventAction(
                              V.E.k_eReminder_EmailUnverified,
                            ),
                        },
                        (0, A.we)("#EventReminder_NotifyByEmail_Missing_Add"),
                      ),
                    ),
                ),
                m.createElement(
                  "div",
                  {
                    className: (0, D.A)(de.ReminderOption, !s && de.Unverified),
                  },
                  m.createElement(
                    K.he,
                    {
                      className: de.CheckboxWrapper,
                      bTopmost: !0,
                      toolTipContent: (0, A.we)(
                        s
                          ? "#EventReminder_NotifyByMobile_ttip"
                          : "#EventReminder_NotifyByMobile_Missing",
                      ),
                    },
                    m.createElement(q.Yh, {
                      label: (0, A.we)("#EventDisplay_Reminder_ViaMobileApp"),
                      disabled: !s,
                      checked: H.KN.Get().BFollowsEventAndNotifiedBy(
                        e.clanSteamID,
                        e.GID,
                        H.Nh.k_ENotifyFlagByPush,
                      ),
                      onChange: this.OnChangeFollowByPush,
                    }),
                  ),
                  !s &&
                    m.createElement(
                      "div",
                      { className: ue.FlexColumnContainer },
                      m.createElement(
                        "a",
                        {
                          href: S.TS.STORE_BASE_URL + "mobile/?show=steamapp",
                          target: S.TS.IN_CLIENT ? void 0 : "_blank",
                          onClick: () =>
                            this.TrackEventAction(
                              V.E.k_eReminder_MobilePushMissing,
                            ),
                        },
                        (0, A.we)("#EventReminder_NotifyByMobile_Install"),
                      ),
                    ),
                ),
                m.createElement(
                  m.Fragment,
                  null,
                  m.createElement(
                    "div",
                    { className: de.ReminderOptionsHeader },
                    (0, A.we)("#EventDisplay_Reminder_AddToCalendar"),
                  ),
                  m.createElement(
                    "div",
                    { className: de.ReminderCalendarOptions },
                    m.createElement(
                      "a",
                      {
                        className: de.ReminderOption,
                        href: this.GetICSDownloadLink("ics"),
                        onClick: () =>
                          this.TrackEventAction(V.E.k_eReminder_CalendarApple),
                      },
                      (0, A.we)("#EventDisplay_Reminder_AppleCalendar_Short"),
                    ),
                    m.createElement(
                      "a",
                      {
                        className: de.ReminderOption,
                        target: S.TS.IN_CLIENT ? void 0 : "_blank",
                        href: this.GetGoogleCalendarLink(),
                        onClick: () =>
                          this.TrackEventAction(V.E.k_eReminder_CalendarGoogle),
                      },
                      (0, A.we)("#EventDisplay_Reminder_GoogleCalendar_Short"),
                    ),
                    m.createElement(
                      "a",
                      {
                        className: de.ReminderOption,
                        href: this.GetICSDownloadLink("outlook"),
                        onClick: () =>
                          this.TrackEventAction(
                            V.E.k_eReminder_CalendarOutlook,
                          ),
                      },
                      (0, A.we)("#EventDisplay_Reminder_OutlookCalendar_Short"),
                    ),
                  ),
                ),
                !1,
              ),
            );
          }
        };
        (0, _.Cg)([ae.oI], fe.prototype, "OnChangeFollowByEmail", null),
          (0, _.Cg)([ae.oI], fe.prototype, "OnChangeFollowByPush", null),
          (0, _.Cg)([ae.oI], fe.prototype, "TrackEventAction", null),
          (fe = (0, _.Cg)([F.PA], fe));
        var Se = n(50669);
        class ve {
          m_bUserHasVolumePreference = !1;
          m_flVolumePreference = 0;
          BUserHasVolumePreference() {
            return this.m_bUserHasVolumePreference;
          }
          SetVolumePreference(e) {
            (this.m_flVolumePreference = e),
              (this.m_bUserHasVolumePreference = !0);
          }
          GetVolumePreference() {
            return this.m_flVolumePreference;
          }
          BVolumePreferenceMuted() {
            return this.m_flVolumePreference < 0.001;
          }
          static s_Singleton;
          static Get() {
            return (
              ve.s_Singleton || (ve.s_Singleton = new ve()), ve.s_Singleton
            );
          }
        }
        (0, _.Cg)([ae.oI], ve.prototype, "BUserHasVolumePreference", null),
          (0, _.Cg)([ae.oI], ve.prototype, "SetVolumePreference", null);
        const be = (0, m.forwardRef)(function (e, t) {
          const {
              video: n,
              bAutoPlay: i,
              bControls: o,
              bLoop: a,
              bMuted: s,
            } = e,
            l = (0, m.useMemo)(
              () =>
                Boolean(
                  n.rgVideoTracks?.some(
                    (e) => "subtitles" == e.sKind || "captions" == e.sKind,
                  ),
                ),
              [n.rgVideoTracks],
            ),
            [c, d] = m.useState(!1);
          if (!n.rgVideoSources || !n.rgVideoSources.length) return null;
          const u = (e) => {
              const t = new URL(e);
              return (
                (t.search =
                  (t.search ? t.search + "&" : "?") + "origin=" + (0, S.xv)()),
                t.toString()
              );
            },
            h = n.rgVideoSources
              .filter((e) => Boolean(e.sURL))
              .map((e) =>
                m.createElement("source", {
                  key: e.sURL,
                  src: u(e.sURL),
                  type: e.sFormat,
                }),
              ),
            p = n.rgVideoTracks
              ? n.rgVideoTracks.map((e) => {
                  let t = e.eLanguage;
                  if ((0, S.Y2)())
                    if (
                      A.A0.IsELanguageValidInRealm(t, Se.TU.k_ESteamRealmChina)
                    )
                      t = A.A0.GetELanguageFallback(t);
                    else {
                      if (6 !== t) return null;
                      if (
                        n.rgVideoTracks.find(
                          (e) => A.A0.GetELanguageFallback(e.eLanguage) === t,
                        )
                      )
                        return null;
                    }
                  else if (
                    !A.A0.IsELanguageValidInRealm(t, Se.TU.k_ESteamRealmGlobal)
                  )
                    return null;
                  return m.createElement("track", {
                    key: e.sURL + t,
                    src: u(e.sURL),
                    kind: e.sKind,
                    default: e.bDefault,
                    srcLang: (0, r.ww)(t),
                    label: (0, A.we)("#language_selection_" + (0, r.Lg)(t)),
                  });
                })
              : null,
            _ = (function (e) {
              return !(
                !(0, se.ZF)(e.sPoster) ||
                (e.rgVideoSources &&
                  e.rgVideoSources.some((e) => !(0, se.ZF)(e.sURL))) ||
                (e.rgVideoTracks &&
                  e.rgVideoTracks.some((e) => !(0, se.ZF)(e.sURL)))
              );
            })(n);
          let g;
          (!_ || (l && "public" == S.TS.WEB_UNIVERSE)) && (g = "anonymous");
          const C = s || (i && ve.Get().BVolumePreferenceMuted()),
            f = n.sPoster ? u(n.sPoster) : "";
          return m.createElement(
            "video",
            {
              width: "100%",
              height: "auto",
              autoPlay: i,
              muted: C,
              playsInline: !0,
              controls: o,
              poster: f,
              loop: a,
              crossOrigin: g,
              onVolumeChange: (e) => {
                const t = e.target,
                  n = t.muted ? 0 : t.volume;
                c && ve.Get().SetVolumePreference(n);
              },
              onPlay: (e) => {
                const t = e.target,
                  n = 0 == t.currentTime,
                  o = ve.Get().BUserHasVolumePreference();
                if ((d(!0), n))
                  if (o || i)
                    o &&
                      ((t.volume = ve.Get().GetVolumePreference()),
                      (t.muted = ve.Get().BVolumePreferenceMuted()));
                  else {
                    const e = t.muted ? 0 : t.volume;
                    ve.Get().SetVolumePreference(e);
                  }
              },
              ref: t,
            },
            h,
            p,
          );
        });
        var Ie = n(26721),
          we = n(71380);
        const ye = new Map([
          [
            "b",
            {
              Constructor: function (e) {
                return m.createElement(
                  "b",
                  { className: o().Bold },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "i",
            {
              Constructor: function (e) {
                return m.createElement(
                  "i",
                  { className: (0, D.A)(o().Italic, "BB_Italic") },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "h1",
            {
              Constructor: function (e) {
                return Ae("h1", e, (0, D.A)(o().Header1, "BB_Header1"));
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
          [
            "h2",
            {
              Constructor: function (e) {
                return Ae("h2", e, (0, D.A)(o().Header2, "BB_Header2"));
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
          [
            "h3",
            {
              Constructor: function (e) {
                return Ae("h3", e, (0, D.A)(o().Header3, "BB_Header3"));
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
          [
            "h4",
            {
              Constructor: function (e) {
                return Ae("h4", e, (0, D.A)(o().Header4, "BB_Header4"));
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
          [
            "h5",
            {
              Constructor: function (e) {
                return Ae("h5", e, (0, D.A)(o().Header5, "BB_Header5"));
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
          [
            "center",
            {
              Constructor: function (e) {
                let t = De(e.args, "id");
                t &&
                  "string" == typeof t &&
                  t.length > 0 &&
                  "#" === t[0] &&
                  (t = t.substring(1));
                return m.createElement(
                  "span",
                  {
                    id: t || void 0,
                    className: (0, D.A)(o().CenterSpan, "BB_Center"),
                  },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "smalltext",
            {
              Constructor: function (e) {
                return Ae("div", e, (0, D.A)(o().SmallText, "BB_SmallText"));
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
          [
            "u",
            {
              Constructor: function (e) {
                return m.createElement(
                  "u",
                  { className: o().Underline },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "strike",
            {
              Constructor: function (e) {
                return m.createElement(
                  "s",
                  { className: o().Strike },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "spoiler",
            {
              Constructor: function (e) {
                let [t, n] = m.useState(!1),
                  i = m.useCallback(() => {
                    n(!t);
                  }, [t]);
                return m.createElement(
                  s.Z,
                  {
                    className: (0, D.A)(o().Spoiler, t && o().Revealed),
                    focusable: !0,
                    onActivate: i,
                    onOKActionDescription: (0, A.we)(
                      t ? "#Bbcode_Spoiler_Hide" : "#Bbcode_Spoiler_Show",
                    ),
                  },
                  m.createElement(
                    "span",
                    { className: o().SpoilerText },
                    e.children,
                  ),
                );
              },
              autocloses: !1,
            },
          ],
          [
            "hr",
            {
              Constructor: function (e) {
                return m.createElement("hr", { className: o().HR });
              },
              autocloses: !1,
            },
          ],
          [
            "noparse",
            {
              Constructor: function (e) {
                return e.children;
              },
              autocloses: !1,
            },
          ],
          [
            "url",
            {
              Constructor: function (e) {
                let t = De(e.args);
                if (!t) {
                  const n = e.children;
                  "string" == typeof n &&
                    (n.startsWith("http://") || n.startsWith("https://")) &&
                    (t = n);
                }
                const n =
                  "button" == De(e.args, "style") ? o().LinkButton : null;
                let i = De(e.args, "id");
                i &&
                  "string" == typeof i &&
                  i.length > 0 &&
                  "#" === i[0] &&
                  (i = i.substring(1));
                if (void 0 === t && !i) return e.children || "";
                if (
                  void 0 === t ||
                  ("string" == typeof t && t.length > 0 && "#" == t[0])
                )
                  return m.createElement(
                    "a",
                    { href: t ?? null, id: i },
                    e.children,
                  );
                return m.createElement(
                  Te,
                  { className: n, href: t, id: i },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "quote",
            {
              Constructor: function (e) {
                const t = De(e.args, "author");
                return m.createElement(
                  "blockquote",
                  { className: (0, D.A)(o().BlockQuote, e.className) },
                  !!t &&
                    m.createElement(
                      "div",
                      { className: o().QuoteAuthor },
                      (0, A.we)("#Bbcode_Originally_Posted_By") + " ",
                      " ",
                      m.createElement("b", null, t + ":"),
                    ),
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "pullquote",
            {
              Constructor: function (e) {
                return m.createElement(
                  "div",
                  { className: o().PullQuote },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "code",
            {
              Constructor: function (e) {
                return m.createElement(
                  "code",
                  { className: o().CodeBlock },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "c",
            {
              Constructor: function (e) {
                return m.createElement(
                  "code",
                  { className: o().Code },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "list",
            {
              Constructor: function (e) {
                return m.createElement(
                  "ul",
                  { className: (0, D.A)(o().List, "bullets") },
                  e.children,
                );
              },
              autocloses: !1,
              skipInternalNewline: !0,
            },
          ],
          [
            "olist",
            {
              Constructor: function (e) {
                return m.createElement(
                  "ol",
                  { className: o().OrderedList },
                  e.children,
                );
              },
              autocloses: !1,
              skipInternalNewline: !0,
            },
          ],
          [
            "*",
            {
              Constructor: function (e) {
                let t = De(e.args, "id");
                t &&
                  "string" == typeof t &&
                  t.length > 0 &&
                  "#" === t[0] &&
                  (t = t.substring(1));
                return m.createElement(
                  "li",
                  { className: o().ListItem, id: t || void 0 },
                  e.children,
                );
              },
              autocloses: !0,
              skipInternalNewline: !0,
            },
          ],
          [
            "table",
            {
              Constructor: function (e) {
                const t = De(e.args, "noborder"),
                  n = De(e.args, "equalcells"),
                  i = De(e.args, "colwidth");
                return m.createElement(
                  "table",
                  {
                    className: (0, D.A)(
                      o().Table,
                      "BB_Table",
                      t && o().NoBorder,
                      n && o().EqualCells,
                    ),
                  },
                  i &&
                    m.createElement(
                      "colgroup",
                      null,
                      i
                        .split(",")
                        .map((e, t) =>
                          m.createElement("col", {
                            key: t,
                            style: e ? { width: `${e}px` } : void 0,
                          }),
                        ),
                    ),
                  m.createElement("tbody", null, e.children),
                );
              },
              autocloses: !1,
              skipInternalNewline: !0,
            },
          ],
          [
            "tr",
            {
              Constructor: function (e) {
                return m.createElement(
                  "tr",
                  { className: (0, D.A)(o().TableRow, "BB_TableRow") },
                  e.children,
                );
              },
              autocloses: !1,
              skipInternalNewline: !0,
              skipFollowingNewline: !0,
            },
          ],
          [
            "th",
            {
              Constructor: function (e) {
                return Me("th", e);
              },
              autocloses: !1,
              skipInternalNewline: !0,
              skipFollowingNewline: !0,
            },
          ],
          [
            "td",
            {
              Constructor: function (e) {
                return Me("td", e);
              },
              autocloses: !1,
              skipInternalNewline: !0,
              skipFollowingNewline: !0,
            },
          ],
          [
            "expand",
            {
              Constructor: function (e) {
                const t = Boolean(De(e.args, "expanded")),
                  [n, i] = m.useState(t),
                  r = De(e.args, "title"),
                  a = De(e.args, "collapsed_str"),
                  s = De(e.args, "expanded_str"),
                  l = (function (e, t, n, i) {
                    switch (e) {
                      case "details":
                        return {
                          collapsed: "#Bbcode_Expand_Details_Collapsed",
                          expanded: "#Bbcode_Expand_Details_Expanded",
                          style: o().ExpandSection_Details,
                        };
                      case "spoiler":
                        return {
                          collapsed: "#Bbcode_Expand_Spoiler_Collapsed",
                          expanded: "#Bbcode_Expand_Spoiler_Expanded",
                          style: o().ExpandSection_Spoiler,
                        };
                      case "title":
                        return {
                          collapsed:
                            t || n || "#Bbcode_Expand_ShowMore_Collapsed",
                          expanded:
                            t || i || "#Bbcode_Expand_ShowMore_Expanded",
                          style: o().ExpandSection_WithTitle,
                        };
                      default:
                        return {
                          collapsed: "#Bbcode_Expand_ShowMore_Collapsed",
                          expanded: "#Bbcode_Expand_ShowMore_Expanded",
                          style: o().ExpandSection_ShowMore,
                        };
                    }
                  })(De(e.args, "type"), r, a, s);
                return m.createElement(
                  "div",
                  {
                    className: (0, D.A)({
                      [o().ExpandSectionBlock]: !0,
                      [l.style]: !0,
                      [o().ExpandSectionExpanded]: n,
                      [o().ExpandSectionCollapsed]: !n,
                      BBCodeExpanded: n,
                      BBCodeCollapsed: !n,
                    }),
                  },
                  m.createElement(
                    "div",
                    {
                      className: o().ExpandSectionHeader,
                      onClick: () => i(!n),
                    },
                    (0, A.we)(n ? l.expanded : l.collapsed),
                    m.createElement(
                      "div",
                      { className: o().EmbedArrow },
                      m.createElement(re.DK4, { angle: n ? 180 : 0 }),
                    ),
                  ),
                  n &&
                    m.createElement(
                      "div",
                      { className: o().ExpandSectionBody },
                      e.children,
                    ),
                );
              },
              autocloses: !1,
              skipInternalNewline: !0,
              allowWrapTextForCopying: !0,
            },
          ],
          [
            "remindme",
            {
              Constructor: function (e) {
                const { event: t, showErrorInfo: n } = e.context,
                  i = De(e.args);
                if (i)
                  return m.createElement(ge, { eventGID: i, bPreviewMode: n });
                if (t) {
                  const e = (0, r.sf)(Ie.TS.LANGUAGE);
                  return m.createElement(_e, { eventModel: t, lang: e });
                }
                return null;
              },
              autocloses: !1,
            },
          ],
          [
            "calendarevent",
            {
              Constructor: function (e) {
                const t = De(e.args, "title"),
                  n = De(e.args, "start") ?? De(e.args, "datetime"),
                  i = De(e.args, "end") ?? De(e.args, "datetime"),
                  r = De(e.args, "body") ?? null,
                  a = De(e.args, "location") ?? null,
                  s = De(e.args, "id") ?? "",
                  l = new Date(n),
                  d = l.getUTCFullYear(),
                  u = ("0" + (l.getUTCMonth() + 1)).slice(-2),
                  h = ("0" + l.getUTCDate()).slice(-2),
                  p = ("0" + l.getUTCHours()).slice(-2),
                  _ = ("0" + l.getUTCMinutes()).slice(-2),
                  g = `${d}${u}${h}T${p}${_}00Z`,
                  C = new Date(i),
                  f = C.getUTCFullYear(),
                  S = ("0" + (C.getUTCMonth() + 1)).slice(-2),
                  v = ("0" + C.getUTCDate()).slice(-2),
                  b = ("0" + C.getUTCHours()).slice(-2),
                  I = ("0" + C.getUTCMinutes()).slice(-2),
                  w = `${f}${S}${v}T${b}${I}00Z`;
                let y;
                try {
                  let e = "BEGIN:VCALENDAR\r\n";
                  (e += "VERSION:2.0\r\n"),
                    (e += "BEGIN:VEVENT\r\n"),
                    (e += `DTSTART:${g}\r\n`),
                    (e += `DTEND:${w}\r\n`),
                    (e += `SUMMARY:${t.replace("\n", "\\n")}\r\n`),
                    r && (e += `DESCRIPTION:${r.replace("\n", "\\n")}\r\n`),
                    a && (e += `LOCATION:${a.replace("\n", "\\n")}\r\n`),
                    (e += "END:VEVENT\r\n"),
                    (e += "END:VCALENDAR\r\n"),
                    (y = `data:text/calendar;charset=utf-8;base64,${c.iI(new TextEncoder().encode(e))}`);
                } catch (e) {
                  console.error(e);
                }
                let E =
                  "https://calendar.google.com/calendar/render?action=TEMPLATE";
                (E += `&text=${encodeURI(t)}`),
                  (E += `&details=${encodeURI(r)}`),
                  (E += `&dates=${encodeURI(g + "/" + w)}`);
                const A = (e) => {
                  if ("ReactNativeWebView" in window) {
                    const n = window.ReactNativeWebView,
                      i = {
                        event_name: "addcalendarevent",
                        tsStart: l.getTime(),
                        tsEnd: C.getTime(),
                        strTitle: t,
                        strNotes: r,
                        strLocation: a,
                      };
                    n.postMessage(JSON.stringify(i)), e.preventDefault();
                  }
                };
                return m.createElement(
                  "div",
                  {
                    className: (0, D.A)(
                      "SaleSectionCalendarEventContainer",
                      o().CalendarEventContainer,
                    ),
                    id: s,
                  },
                  y &&
                    m.createElement(
                      "a",
                      {
                        className: (0, D.A)(
                          "SaleSectionCalendarEventLink",
                          o().CalendarEventLink,
                        ),
                        href: y,
                        onClick: A,
                        download: "steam_deck_white_release.ics",
                      },
                      "Apple",
                    ),
                  m.createElement(
                    "a",
                    {
                      className: (0, D.A)(
                        "SaleSectionCalendarEventLink",
                        o().CalendarEventLink,
                      ),
                      href: E,
                    },
                    "Google",
                  ),
                  y &&
                    m.createElement(
                      "a",
                      {
                        className: (0, D.A)(
                          "SaleSectionCalendarEventLink",
                          o().CalendarEventLink,
                        ),
                        href: y,
                        onClick: A,
                        download: "steam_deck_white_release.ics",
                      },
                      "Outlook",
                    ),
                );
              },
              autocloses: !0,
            },
          ],
          [
            "doclink",
            {
              Constructor: function (e) {
                const t = De(e.args),
                  n = "button" == De(e.args, "style") ? o().LinkButton : null;
                return m.createElement(
                  Te,
                  { className: n, href: `${Ie.TS.PARTNER_BASE_URL}doc/${t}` },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "color",
            {
              Constructor: function (e) {
                const t = De(e.args);
                return m.createElement(
                  "span",
                  { style: { color: t } },
                  e.children,
                );
              },
              autocloses: !1,
            },
          ],
          [
            "p",
            {
              Constructor: function (e) {
                return m.createElement(
                  "p",
                  { className: o().Paragraph },
                  e.children,
                  m.createElement("wbr", null),
                );
              },
              autocloses: !1,
              skipFollowingNewline: !0,
            },
          ],
        ]);
        new Map([
          [
            "looping_media",
            {
              Constructor: function (e) {
                const t = Re(e);
                return m.createElement(be, {
                  video: t,
                  bAutoPlay: !0,
                  bControls: !1,
                  bLoop: !0,
                });
              },
              autocloses: !1,
            },
          ],
          ["video", { Constructor: ke, autocloses: !1 }],
          [
            "youtubeorvideo",
            {
              Constructor: function (e) {
                if ((0, S.Y2)() || "CN" == S.TS.COUNTRY.toLocaleUpperCase())
                  return ke(e);
                const t = De(e.args, "youtubeid"),
                  n = De(e.args, "size"),
                  i = De(e.args, "seconds"),
                  { sizeStr: o, alignStr: r } = G(n);
                return m.createElement(L, {
                  videoID: t,
                  nStartSeconds: i ? Number.parseInt(i) : void 0,
                  classNameAlign: r,
                  classNameSize: o,
                  bShowVideoImmediately: !0,
                });
              },
              autocloses: !1,
            },
          ],
          [
            "previewyoutube",
            {
              Constructor: function (e) {
                if ((0, S.Y2)()) return null;
                let t = De(e.args);
                if (t) {
                  let e = t.split(";");
                  if (2 == e.length) {
                    let t = e[0],
                      n = e[1].toLocaleLowerCase();
                    const { sizeStr: i, alignStr: o } = G(n);
                    return m.createElement(L, {
                      videoID: t,
                      classNameAlign: o,
                      classNameSize: i,
                      bShowVideoImmediately: !0,
                    });
                  }
                }
                return m.createElement(m.Fragment, null);
              },
              autocloses: !1,
            },
          ],
        ]);
        function Ee(e, t, n = 0) {
          if (e?.startsWith(we.lw)) return (0, h.v6)(e);
          if (e?.startsWith(we.eg)) {
            const i = new Array(),
              o = (0, h.mJ)(),
              a = e.substring(we.eg.length + 1),
              s = p.i6.GetHashFromHashAndExt(a),
              l = p.i6.GetExtensionStringFromHashAndExt(a);
            if (null != t) {
              let e = (0, r.Lg)(t);
              i.push(o + s + "/" + e + l + "?t=" + n),
                4 == t &&
                  ((e = (0, r.x6)((0, r.Lg)(t))),
                  i.push(o + s + "/" + e + l + "?t=" + n));
            }
            return i.push(o + a), i;
          }
          return e;
        }
        function De(e, t) {
          return void 0 === t ? e[""] : e[t];
        }
        function Ae(e, t, n) {
          let i = De(t.args, "id");
          return (
            i || (i = De(t.args)),
            i &&
              "string" == typeof i &&
              i.length > 0 &&
              "#" === i[0] &&
              (i = i.substring(1)),
            m.createElement(
              e,
              { id: i || void 0, className: (0, D.A)(n, t.className) },
              t.children,
            )
          );
        }
        const Te = (e) => {
          const { href: t, ...n } = e,
            i = (0, l.n9)();
          let o,
            r = (0, u.VZ)(t, i);
          (0, d.p)(r)
            ? ((r =
                (Ie.TS.IN_CLIENT ? "steam://openurl_external/" : "") +
                (0, d.E)(r)),
              (o = "noopener nofollow"))
            : (r = (0, se.NT)(r));
          const s =
            "string" == typeof e.children &&
            e.children.length > 0 &&
            t &&
            !t.startsWith("steam://")
              ? (0, se.Qz)(t)
              : void 0;
          return m.createElement(
            K.Gq,
            { toolTipContent: s, direction: "top" },
            m.createElement(a.Ii, { ...n, href: r, rel: o }, e.children),
          );
        };
        function Me(e, t) {
          const n = De(t.args, "width"),
            i = De(t.args, "colspan"),
            r = De(t.args, "rowspan"),
            a = {};
          return (
            i && parseInt(i) > 1 && (a.colSpan = parseInt(i)),
            r && parseInt(r) > 1 && (a.rowSpan = parseInt(r)),
            m.createElement(
              e,
              {
                className: (0, D.A)(o().TableCell, "td" == e && "BB_TableData"),
                ...a,
                style: n && { width: n },
              },
              t.children,
            )
          );
        }
        function Re(e) {
          let t = De(e.args, "poster");
          t && (t = (0, se.L$)(t));
          const n = new Array();
          {
            const t = De(e.args, "mp4");
            t && n.push({ sURL: (0, se.L$)(t), sFormat: "video/mp4" });
            const i = De(e.args, "webm");
            i && n.push({ sURL: (0, se.L$)(i), sFormat: "video/webm" });
          }
          const i = (0, r.sf)(Ie.TS.LANGUAGE),
            o = 0 != i,
            a = new Array();
          for (let t = 0; t < 31; t++) {
            const n = De(e.args, "sub_" + (0, r.ww)(t));
            n &&
              a.push({
                sURL: (0, se.L$)(n),
                eLanguage: t,
                sKind: "subtitles",
                bDefault: o && t == i,
              });
            const s = De(e.args, "cap_" + (0, r.ww)(t));
            s &&
              a.push({
                sURL: (0, se.L$)(s),
                eLanguage: t,
                sKind: "captions",
                bDefault: o && t == i,
              });
          }
          return { sPoster: t, rgVideoSources: n, rgVideoTracks: a };
        }
        function ke(e) {
          const t = Re(e),
            n = e.children ? e.children.toString() : void 0;
          n &&
            n.startsWith("http") &&
            t.rgVideoSources.push({
              sURL: (0, se.L$)(n),
              sFormat: "video/webm",
            });
          const i = De(e.args, "autoplay"),
            o = "0" !== i && "off" !== i && "false" !== i,
            r = De(e.args, "controls"),
            a = "0" !== r && "off" !== r && "false" !== r,
            s = De(e.args, "loop"),
            l = "0" !== r && "off" !== r && "false" !== r;
          return m.createElement(be, {
            video: t,
            bAutoPlay: o,
            bControls: a,
            bLoop: s ? l : o,
          });
        }
      },
      71380: (e, t, n) => {
        "use strict";
        n.d(t, { eg: () => o, lw: () => i });
        const i = "{STEAM_CLAN_IMAGE}",
          o = "{STEAM_CLAN_LOC_IMAGE}";
      },
      56517: (e, t, n) => {
        "use strict";
        n.d(t, { I: () => De });
        var i = n(34629),
          o = n(89193),
          r = n(41230),
          a = n(90095),
          s = n(63696),
          l = n(94762),
          c = n(83957),
          m = n.n(c),
          d = n(60956),
          u = n(45518),
          h = n(55244),
          p = n(38012),
          _ = n(77631),
          g = n(14024),
          C = n(9887),
          f = n(69450),
          S = n(9907),
          v = n(74002),
          b = n(17070),
          I = n(55157);
        class w {
          m_mapChats = new Map();
          GetChat(e, t) {
            return this.m_mapChats.get(e) || this.m_mapChats.get(t);
          }
          GetOrCreateChat(e, t) {
            let n = this.GetChat(e, t);
            return n || ((n = new y()), this.m_mapChats.set(e || t, n)), n;
          }
          static s_Singleton;
          static Get() {
            return (
              w.s_Singleton ||
                ((w.s_Singleton = new w()),
                "dev" == b.TS.WEB_UNIVERSE &&
                  (window.g_BroadcastChatStore = w.s_Singleton)),
              w.s_Singleton
            );
          }
          constructor() {
            (0, o.Gn)(this);
          }
        }
        (0, i.Cg)([o.sH], w.prototype, "m_mapChats", void 0);
        class y {
          m_ulBroadcastChannelID = "";
          m_ulChatID = "";
          m_strFlairGroupID = "";
          m_bAutoScroll = !0;
          m_ulBroadcastID = "";
          m_ulBroadcastSteamID = "";
          m_tsFirstRequest = null;
          m_nFromFirstRequestMS = 0;
          m_nNextChatTS = 0;
          m_cConsecutiveErrors = 0;
          m_nNudgeFactorMS = 0;
          m_nLastSleepMS = 0;
          m_bReconnecting = !1;
          m_strChatURL;
          m_webApiToken;
          m_unInstanceID = Math.floor(4294967296 * Math.random());
          m_strUserSteamID = "";
          m_regexUserEmoticons = null;
          m_chatScheduledFunc = null;
          m_webAPIInterface = null;
          m_textFilterStore = null;
          m_bHasAddedWelcomeChat = !1;
          m_mapMutedUsers = {};
          m_mapChannelModeratorUsers = new Map();
          m_mapBroadcastModeratorUsers = new Map();
          m_nRateLimitSeconds = 0;
          m_bRateLimited = !1;
          m_rgChatMessages = [];
          m_rgAnnouncements = [];
          m_latestAnnouncement = null;
          constructor() {
            (0, o.Gn)(this),
              (this.m_webAPIInterface = new p.D(
                b.TS.WEBAPI_BASE_URL,
                b.iA.webapi_token,
              ));
          }
          InitTextFilter() {
            this.m_textFilterStore = new I.s({ BIsFriend: (0, I.Q)() });
            let e = 0;
            if ("" !== b.iA.steamid) {
              e = new _.b(b.iA.steamid).GetAccountID();
            }
            this.m_textFilterStore.Init(e, null, new h.A());
          }
          get TextFilterStore() {
            return this.m_textFilterStore;
          }
          GetBroadcastSteamID() {
            return this.m_ulBroadcastSteamID;
          }
          GetUserSteamID() {
            return this.m_strUserSteamID;
          }
          StartForSteamID(e, t) {
            (this.m_webAPIInterface = new p.D(
              b.TS.WEBAPI_BASE_URL,
              b.iA.webapi_token,
            )),
              (this.m_ulBroadcastSteamID = e),
              (this.m_ulBroadcastID = t),
              this.InitTextFilter(),
              this.RequestChatInfo();
          }
          StartForChannel(e) {
            (this.m_webAPIInterface = new p.D(
              b.TS.WEBAPI_BASE_URL,
              b.iA.webapi_token,
            )),
              (this.m_ulBroadcastChannelID = e),
              (this.m_strUserSteamID = b.iA.steamid),
              this.InitTextFilter(),
              this.JoinChannelChat();
          }
          Stop() {
            this.m_chatScheduledFunc && this.m_chatScheduledFunc.Cancel();
          }
          async SendMessage(e) {
            const t = e.trim();
            if (0 != t.length)
              try {
                let e, n, i;
                if (this.m_webApiToken) {
                  const e = new FormData();
                  e.append("chat_id", this.m_ulChatID),
                    e.append("message", t),
                    e.append("instance_id", this.m_unInstanceID.toString()),
                    (n = await m().post(
                      `${b.TS.WEBAPI_BASE_URL}IBroadcastService/PostChatMessage/v0001?access_token=${this.m_webApiToken}`,
                      e,
                    )),
                    (i = n.data && n.data.response);
                } else {
                  const n = u.w.Init(g.Lw);
                  n.SetBodyFields({
                    chat_id: this.m_ulChatID,
                    message: t,
                    instance_id: this.m_unInstanceID.toString(),
                  }),
                    (e = await g.DK.PostChatMessage(
                      this.m_webAPIInterface.GetServiceTransport(),
                      n,
                    )),
                    (i = {
                      result: e.GetEResult(),
                      cooldown_time_seconds: e.Body().cooldown_time_seconds(),
                      in_game: e.Body().in_game(),
                      persona_name: e.Body().persona_name(),
                    });
                }
                if (i && i.result && 1 != i.result) {
                  let e = "";
                  return (
                    (e =
                      17 == i.result
                        ? (0, v.we)("#BroadcastChat_YouMuted")
                        : 84 == i.result
                          ? (0, v.we)(
                              "#BroadcastChat_Cooldown",
                              i.cooldown_time_seconds,
                            )
                          : (0, v.we)("#BroadcastChat_FailedToSendMsg", t)),
                    void this.m_rgChatMessages.push({
                      type: d.X8.Error,
                      msg: e,
                      client_ts: Number(new Date()),
                      instance_id: this.m_unInstanceID,
                      in_game: i.in_game,
                      persona_name: i.persona_name,
                      steamid: "",
                    })
                  );
                }
                this.m_nRateLimitSeconds ||
                  (this.m_nRateLimitSeconds = i.cooldown_time_seconds),
                  this.m_nRateLimitSeconds &&
                    ((this.m_bRateLimited = !0),
                    setTimeout(
                      () => (this.m_bRateLimited = !1),
                      1e3 * this.m_nRateLimitSeconds,
                    ));
              } catch {
                this.m_rgChatMessages.push({
                  type: d.X8.Error,
                  msg: (0, v.we)("#BroadcastChat_FailedToSendMsg", t),
                  client_ts: Number(new Date()),
                  instance_id: this.m_unInstanceID,
                  in_game: !1,
                  persona_name: "",
                  steamid: "",
                });
              }
          }
          async RequestChatInfo(e) {
            (this.m_cConsecutiveErrors = 0), (this.m_bReconnecting = !1);
            try {
              const t = {
                  steamid: this.m_ulBroadcastSteamID,
                  broadcastid: this.m_ulBroadcastID,
                  sessionid: b.TS.SESSIONID,
                },
                n = await m().get(
                  `${b.TS.CHAT_BASE_URL}broadcast/getchatinfo`,
                  { params: t, withCredentials: !0, cancelToken: e?.token },
                );
              (e && e.token.reason) ||
                (0, o.h5)(() => {
                  const e = n.data;
                  (this.m_strChatURL = e.view_url_template),
                    (this.m_ulChatID = e.chat_id),
                    (this.m_strFlairGroupID =
                      e.flair_group_ids && e.flair_group_ids[0]),
                    e.blocked && console.log("User is blocked from chat"),
                    e.steamid && (this.m_strUserSteamID = e.steamid),
                    e.token && (this.m_webApiToken = e.token),
                    e.emoticons && this.SetOwnedEmoticons(e.emoticons),
                    this.m_bHasAddedWelcomeChat ||
                      (this.m_rgChatMessages.push({
                        type: d.X8.Notification,
                        msg: (0, v.we)("#BroadcastChat_DefaultMessage"),
                        client_ts: Number(new Date()),
                        instance_id: this.m_unInstanceID,
                        in_game: !1,
                        persona_name: "",
                        steamid: "",
                      }),
                      (this.m_bHasAddedWelcomeChat = !0)),
                    this.m_mapBroadcastModeratorUsers.clear(),
                    e.moderators_steamid &&
                      e.moderators_steamid.forEach((e) =>
                        this.m_mapBroadcastModeratorUsers.set(e, !0),
                      ),
                    (this.m_chatScheduledFunc = new S.LU()),
                    this.m_chatScheduledFunc.Schedule(0, this.RequestLoop);
                });
            } catch (e) {
              console.error(e), console.log("Failed to get chat info!");
            }
          }
          async JoinChannelChat() {
            try {
              const e = u.w.Init(C.rf);
              e.SetBodyFields({
                broadcast_channel_id: this.m_ulBroadcastChannelID,
              });
              let t = await C.cH.JoinChat(
                this.m_webAPIInterface.GetServiceTransport(),
                e,
              );
              if (!t.Body().chat_id || !t.Body().view_url_template)
                return void console.log("Failed to join channel chat");
              (this.m_strChatURL = t.Body().view_url_template()),
                (this.m_ulChatID = t.Body().chat_id()),
                (this.m_strFlairGroupID =
                  t.Body().flair_group_ids() && t.Body().flair_group_ids()[0]),
                this.FetchChatModerators(),
                (this.m_rgChatMessages = []),
                this.m_rgChatMessages.push({
                  type: d.X8.Notification,
                  msg: (0, v.we)("#BroadcastChat_DefaultMessage"),
                  client_ts: Number(new Date()),
                  instance_id: this.m_unInstanceID,
                  in_game: !1,
                  persona_name: "",
                  steamid: "",
                }),
                (this.m_bHasAddedWelcomeChat = !0),
                (this.m_chatScheduledFunc = new S.LU()),
                this.m_chatScheduledFunc.Schedule(0, this.RequestLoop);
            } catch (e) {
              console.error(e), console.log("Failed to join chat!");
            }
          }
          async FetchChatModerators() {
            const e = u.w.Init(C.dT);
            e.SetBodyFields({
              broadcast_channel_id: this.m_ulBroadcastChannelID,
            });
            const t = (
                await C.cH.GetChatModerators(
                  this.m_webAPIInterface.GetServiceTransport(),
                  e,
                )
              )
                .Body()
                .results(),
              n = new Map();
            t.forEach((e) => {
              n.set(e.steamid(), !0);
            }),
              (this.m_mapChannelModeratorUsers = n);
          }
          ReplaceChatAnnouncementIfAny(e) {
            e.announcements?.length > 0
              ? ((this.m_rgAnnouncements = e.announcements.reverse()),
                (this.m_latestAnnouncement &&
                  JSON.stringify(this.m_latestAnnouncement) ==
                    JSON.stringify(
                      this.m_rgAnnouncements[this.m_rgAnnouncements.length - 1],
                    )) ||
                  (this.m_latestAnnouncement =
                    this.m_rgAnnouncements[this.m_rgAnnouncements.length - 1]))
              : this.m_rgAnnouncements.length > 0 &&
                ((this.m_rgAnnouncements = []),
                (this.m_latestAnnouncement = null));
          }
          async RequestLoop() {
            const e = {},
              t = this.m_strChatURL.replace(
                "{0}",
                this.m_nNextChatTS.toString(),
              );
            t == this.m_strChatURL &&
              this.m_nNextChatTS > 0 &&
              (e.t = this.m_nNextChatTS);
            try {
              const n = (await m().get(t, { params: e })).data;
              this.m_cConsecutiveErrors = 0;
              const i = n.messages
                .map((e) => ({
                  ...e,
                  type: d.X8.Chat,
                  client_ts: Number(new Date()),
                }))
                .filter((e) => !this.IsUserMutedLocally(e.steamid));
              this.m_rgChatMessages.push(...i),
                this.ReplaceChatAnnouncementIfAny(n);
              const o = this.m_bAutoScroll ? 150 : 300;
              if (
                (this.m_rgChatMessages.length > o &&
                  this.m_rgChatMessages.splice(
                    0,
                    this.m_rgChatMessages.length - o,
                  ),
                n.muted)
              )
                for (const e of n.muted) {
                  const t =
                    e.muted == this.m_strUserSteamID
                      ? (0, v.we)("#BroadcastChat_YouMuted", e.persona_name)
                      : (0, v.we)("#BroadcastChat_UserMuted", e.persona_name);
                  this.m_rgChatMessages.push({
                    type: d.X8.Notification,
                    msg: t,
                    client_ts: Number(new Date()),
                    instance_id: this.m_unInstanceID,
                    in_game: !1,
                    persona_name: "",
                    steamid: "",
                  });
                }
              if (n.remove_msgs)
                for (const e of n.remove_msgs)
                  this.RemoveUserMessagesLocal(e.steamid);
              let r = 0;
              if (
                null == this.m_tsFirstRequest ||
                0 == this.m_nNextChatTS ||
                n.initial_delay
              ) {
                if ("undefined" === n.initial_delay)
                  return void console.log(
                    "Need initial_delay to know when to request first chat message",
                  );
                (this.m_tsFirstRequest = performance.now() + n.initial_delay),
                  (this.m_nFromFirstRequestMS = 0),
                  (this.m_nNextChatTS = n.next_request),
                  (r = n.initial_delay);
              } else {
                if (n.next_request < this.m_nNextChatTS)
                  return void console.log("Next request in past");
                (this.m_nFromFirstRequestMS +=
                  n.next_request - this.m_nNextChatTS),
                  (this.m_nNextChatTS = n.next_request),
                  (r =
                    this.m_tsFirstRequest +
                    this.m_nFromFirstRequestMS -
                    performance.now() +
                    this.m_nNudgeFactorMS);
              }
              this.m_bReconnecting && (this.m_bReconnecting = !1),
                (this.m_nLastSleepMS = r),
                r < 0 && (r = 0),
                this.m_chatScheduledFunc.Schedule(r, this.RequestLoop);
            } catch {
              if (
                (console.log(
                  "Failed to get chat messages. Previous sleep set to: " +
                    this.m_nLastSleepMS +
                    " firstReq: " +
                    this.m_tsFirstRequest +
                    " firstFromRequest: " +
                    this.m_nFromFirstRequestMS +
                    " nudge: " +
                    this.m_nNudgeFactorMS,
                ),
                this.m_cConsecutiveErrors++,
                (this.m_nNudgeFactorMS += 10),
                this.m_cConsecutiveErrors >= 4)
              ) {
                if (null == this.m_tsFirstRequest)
                  return void this.m_rgChatMessages.push({
                    type: d.X8.Error,
                    msg: (0, v.we)("#BroadcastChat_UnableToJoinChat"),
                    client_ts: Number(new Date()),
                    instance_id: this.m_unInstanceID,
                    in_game: !1,
                    persona_name: "",
                    steamid: "",
                  });
                (this.m_cConsecutiveErrors = 0),
                  (this.m_bReconnecting = !0),
                  this.SyncChat();
              }
              this.m_chatScheduledFunc.Schedule(500, this.RequestLoop);
            }
          }
          GetUserEmoticons() {
            return this.m_regexUserEmoticons;
          }
          SetOwnedEmoticons(e) {
            let t = [];
            for (let n = 0; n < e.length; n++) {
              let i = e[n];
              i.length >= 2 && ":" == i[0]
                ? t.push(i.substr(1, i.length - 2))
                : t.push(i);
            }
            let n = ":(" + t.join("|") + "):";
            this.m_regexUserEmoticons = new RegExp(n, "g");
          }
          async UpdateBroadcastChatModerator(e, t, n) {
            {
              const i = new FormData();
              i.append("broadcaststeamid", this.m_ulBroadcastSteamID),
                i.append("moderatorsteamid", e),
                i.append("bAdd", t ? "1" : "0"),
                i.append("sessionid", b.TS.SESSIONID);
              try {
                await m().post(
                  `${b.TS.CHAT_BASE_URL}broadcast/ajaxupdatechannelmod`,
                  i,
                ),
                  this.m_mapBroadcastModeratorUsers.set(e, t);
                const o = (0, v.we)(
                  t
                    ? "#BroadcastChat_AddedModerator"
                    : "#BroadcastChat_RemovedModerator",
                  n,
                );
                this.m_rgChatMessages.push({ type: d.X8.Notification, msg: o });
              } catch {
                const e = (0, v.we)(
                  t
                    ? "#BroadcastChat_AddModeratorFailed"
                    : "#BroadcastChat_RemoveModeratorFailed",
                  n,
                );
                this.m_rgChatMessages.push({ type: d.X8.Error, msg: e });
              }
            }
          }
          async UpdateUserChatBan(e, t, n, i, o, r) {
            const a = this.m_ulBroadcastSteamID,
              s = this.m_strUserSteamID;
            if (this.m_ulBroadcastChannelID) {
              const t = u.w.Init(C.zv);
              t.SetBodyFields({
                broadcast_channel_id: this.m_ulBroadcastChannelID,
                chatter_steamid: e,
                duration: 3600 * n,
                permanent: i,
                undo: r,
              }),
                await C.cH.AddChatBan(
                  this.m_webAPIInterface.GetServiceTransport(),
                  t,
                );
            } else {
              const r = new FormData();
              r.append("broadcaststeamid", a),
                r.append("issuersteamid", s),
                r.append("chattersteamid", e),
                r.append("bantype", t),
                r.append("duration", n.toString()),
                r.append("perm", i ? "1" : "0"),
                r.append("sessionid", b.TS.SESSIONID);
              try {
                await m().post(
                  `${b.TS.CHAT_BASE_URL}broadcast/ajaxupdateusermute`,
                  r,
                ),
                  0 == t
                    ? delete this.m_mapMutedUsers[e]
                    : (this.m_mapMutedUsers[e] = o);
              } catch {
                console.log("Failed to update mute for " + o);
              }
            }
          }
          async MuteUserForSession(e, t) {
            if (e == this.m_strUserSteamID) return;
            if (this.m_ulBroadcastSteamID == e) return;
            let n = this.m_ulBroadcastSteamID == this.m_strUserSteamID;
            if (!this.m_mapMutedUsers[e]) {
              this.m_mapMutedUsers[e] = t;
              try {
                if (this.m_webApiToken) {
                  const t = new FormData();
                  t.append("chat_id", this.m_ulChatID),
                    t.append("user_steamid", e),
                    t.append("muted", "1"),
                    await m().post(
                      `${b.TS.WEBAPI_BASE_URL}IBroadcastService/MuteBroadcastChatUser/v0001/?access_token=${this.m_webApiToken}`,
                      t,
                    );
                } else {
                  const t = u.w.Init(g.hW);
                  t.SetBodyFields({
                    chat_id: this.m_ulChatID,
                    user_steamid: e,
                    muted: !0,
                  }),
                    await g.DK.MuteBroadcastChatUser(
                      this.m_webAPIInterface.GetServiceTransport(),
                      t,
                    );
                }
              } catch {
                n &&
                  (this.m_rgChatMessages.push({
                    type: d.X8.Error,
                    msg: (0, v.we)("#BroadcastChat_UserMuteFailed", t),
                    client_ts: Number(new Date()),
                    instance_id: this.m_unInstanceID,
                    in_game: !1,
                    persona_name: "",
                    steamid: "",
                  }),
                  delete this.m_mapMutedUsers[e]);
              }
            }
            n ||
              this.m_rgChatMessages.push({
                type: d.X8.Notification,
                msg: (0, v.we)("#BroadcastChat_UserMutedLocal", t),
                client_ts: Number(new Date()),
                instance_id: this.m_unInstanceID,
                in_game: !1,
                persona_name: "",
                steamid: "",
              });
          }
          async UnmuteUserForSession(e, t) {
            if (e == this.m_strUserSteamID) return;
            if (
              (this.m_mapMutedUsers[e] && delete this.m_mapMutedUsers[e],
              this.m_ulBroadcastSteamID == this.m_strUserSteamID)
            )
              try {
                if (this.m_webApiToken) {
                  const t = new FormData();
                  t.append("chat_id", this.m_ulChatID),
                    t.append("user_steamid", e),
                    t.append("muted", "0"),
                    await m().post(
                      `${b.TS.WEBAPI_BASE_URL}IBroadcastService/MuteBroadcastChatUser/v0001/?access_token=${this.m_webApiToken}`,
                      t,
                    );
                } else {
                  const t = u.w.Init(g.hW);
                  t.SetBodyFields({
                    chat_id: this.m_ulChatID,
                    user_steamid: e,
                    muted: !1,
                  }),
                    await g.DK.MuteBroadcastChatUser(
                      this.m_webAPIInterface.GetServiceTransport(),
                      t,
                    );
                }
                this.m_rgChatMessages.push({
                  type: d.X8.Notification,
                  msg: (0, v.we)("#BroadcastChat_UserUnmutedLocal", t),
                  client_ts: Number(new Date()),
                  instance_id: this.m_unInstanceID,
                  in_game: !1,
                  persona_name: "",
                  steamid: "",
                });
              } catch {
                this.m_rgChatMessages.push({
                  type: d.X8.Error,
                  msg: (0, v.we)("#BroadcastChat_UserUnmuteFailed", t),
                  client_ts: Number(new Date()),
                  instance_id: this.m_unInstanceID,
                  in_game: !1,
                  persona_name: "",
                  steamid: "",
                });
              }
            else
              this.m_rgChatMessages.push({
                type: d.X8.Notification,
                msg: (0, v.we)("#BroadcastChat_UserUnmutedLocal", t),
                client_ts: Number(new Date()),
                instance_id: this.m_unInstanceID,
                in_game: !1,
                persona_name: "",
                steamid: "",
              });
          }
          RemoveUserMessagesLocal(e) {
            this.m_rgChatMessages = this.m_rgChatMessages.filter(
              (t) => t.steamid !== e,
            );
          }
          async RemoveUserMessagesServer(e, t) {
            if (e != this.m_strUserSteamID)
              try {
                if (this.m_webApiToken) {
                  const t = new FormData();
                  t.append("chat_id", this.m_ulChatID),
                    t.append("user_steamid", e),
                    await m().post(
                      `${b.TS.WEBAPI_BASE_URL}IBroadcastService/RemoveUserChatText/v0001/?access_token=${this.m_webApiToken}`,
                      t,
                    );
                } else {
                  const t = u.w.Init(g.ku);
                  t.SetBodyFields({
                    chat_id: this.m_ulChatID,
                    user_steamid: e,
                  }),
                    await g.DK.RemoveUserChatText(
                      this.m_webAPIInterface.GetServiceTransport(),
                      t,
                    );
                }
              } catch {
                this.m_rgChatMessages.push({
                  type: d.X8.Error,
                  msg: (0, v.we)("#BroadcastChat_RemoveMessagesFailed", t),
                  client_ts: Number(new Date()),
                  instance_id: this.m_unInstanceID,
                  in_game: !1,
                  persona_name: "",
                  steamid: "",
                });
              }
          }
          async UpdateChatMessageFlair(e) {
            if (this.m_webApiToken) {
              const t = new FormData();
              t.append("chat_id", this.m_ulChatID),
                t.append("flair", `^${this.m_strFlairGroupID}^:${e}:`),
                await m().post(
                  `${b.TS.WEBAPI_BASE_URL}IBroadcastService/UpdateChatMessageFlair/v0001/?access_token=${this.m_webApiToken}`,
                  t,
                );
            } else {
              const t = u.w.Init(g.Mn);
              t.SetBodyFields({
                chat_id: this.m_ulChatID,
                flair: `^${this.m_strFlairGroupID}^:${e}:`,
              }),
                await g.DK.UpdateChatMessageFlair(
                  this.m_webAPIInterface.GetServiceTransport(),
                  t,
                );
            }
          }
          IsUserMutedLocally(e) {
            return Boolean(this.m_mapMutedUsers[e]);
          }
          BIsUserBroadcastModerator(e) {
            return this.m_mapBroadcastModeratorUsers.has(e);
          }
          IsUserBroadcaster(e) {
            return e === this.m_ulBroadcastSteamID;
          }
          SyncChat() {
            (this.m_tsFirstRequest = null),
              (this.m_nFromFirstRequestMS = 0),
              (this.m_nNextChatTS = 0),
              (this.m_rgChatMessages = []);
          }
        }
        (0, i.Cg)([o.sH], y.prototype, "m_mapChannelModeratorUsers", void 0),
          (0, i.Cg)(
            [o.sH],
            y.prototype,
            "m_mapBroadcastModeratorUsers",
            void 0,
          ),
          (0, i.Cg)([o.sH], y.prototype, "m_nRateLimitSeconds", void 0),
          (0, i.Cg)([o.sH], y.prototype, "m_bRateLimited", void 0),
          (0, i.Cg)([o.sH], y.prototype, "m_rgChatMessages", void 0),
          (0, i.Cg)([o.sH], y.prototype, "m_latestAnnouncement", void 0),
          (0, i.Cg)([f.o], y.prototype, "FetchChatModerators", null),
          (0, i.Cg)([f.o], y.prototype, "RequestLoop", null),
          (0, i.Cg)([f.o], y.prototype, "MuteUserForSession", null);
        var E = n(18849),
          D = n(59105);
        class A {
          constructor() {
            (0, o.Gn)(this);
          }
          m_mapBroadcasterSteamIDToEvents = new Map();
          m_mapBroadcasterSteamIDData = new Map();
          static GetBBCodeParam(e, t, n = "") {
            const i = new RegExp(`\\W${t}\\W*=\\W*\\"(.*?)\\"`, "gmi").exec(e);
            return i ? i[1] : n;
          }
          static ParseCalendarEventPresentersFromText(e) {
            const t =
                /\[\W*speaker(\W[\s\S]*?)\]([\s\S]*?)\[\W*\/speaker\W*\]/gi,
              n = new Array();
            for (;;) {
              const i = t.exec(e);
              if (null === i) break;
              const o = i[1],
                r = i[2],
                a = A.GetBBCodeParam(o, "steamid"),
                s = {
                  steamID: a ? new _.b(a) : void 0,
                  name: A.GetBBCodeParam(o, "name"),
                  title: A.GetBBCodeParam(o, "title"),
                  company: A.GetBBCodeParam(o, "company"),
                  photo: A.GetBBCodeParam(o, "photo"),
                  bio: r,
                };
              n.push(s);
            }
            return n;
          }
          static ParseEventModelPresenters(e, t) {
            const n = e.GetDescriptionWithFallback(t);
            return A.ParseCalendarEventPresentersFromText(n);
          }
          static ParseEventAppReferencesFromText(e) {
            const t = /\/\/store\.steampowered\.com\/app\/(\d+)/gi,
              n = new Set();
            for (;;) {
              const i = t.exec(e);
              if (null === i) break;
              const o = i[1];
              n.add(Number(o));
            }
            return n;
          }
          static ParseEventModelAppReferences(e, t) {
            const n = e.GetDescriptionWithFallback(t),
              i = A.ParseEventAppReferencesFromText(n);
            if (e.jsondata?.referenced_appids)
              for (const t of e.jsondata.referenced_appids) i.add(t);
            return i;
          }
          async BuildBroadcasterSteamIDToActiveEventMap(e) {
            const t = E.HD.GetTimeNowWithOverride(),
              n = e.GetCalendarItemsInTimeRange(t - 3600, t);
            for (const e of n.rgCalendarItems)
              D.O3.QueueLoadPartnerEvent(e.clanid, e.unique_id);
            const i = n.rgCalendarItems.map((e) =>
                D.O3.LoadPartnerEventFromClanEventGIDAndClanSteamID(
                  _.b.InitFromClanID(e.clanid),
                  e.unique_id,
                  0,
                ),
              ),
              o = await Promise.all(i),
              r = new Map();
            for (const e of o)
              if (e && !(e.endTime && e.endTime < t))
                for (const t of e.GetBroadcastWhitelistAsSteamIDs())
                  r.has(t) ? r.get(t).push(e) : r.set(t, [e]);
            return r;
          }
          IsBroadcasterAlreadyBound(e, t) {
            const n = this.m_mapBroadcasterSteamIDToEvents.get(e),
              i = n ? n.length : 0;
            if ((t ? t.length : 0) != i) return !1;
            for (let e = 0; e < i; e++) if (n[e] != t[e].GID) return !1;
            return !0;
          }
          static BuildSteamIDToPresenterMapFromEventList(e, t) {
            let n = new Map();
            for (const i of e) {
              if (!i) continue;
              const e = A.ParseEventModelPresenters(i, t);
              for (const t of e)
                t.steamID && n.set(t.steamID.ConvertTo64BitString(), t);
            }
            return n;
          }
          RemoveCachedDataIfNotInMap(e) {
            const t = new Array();
            this.m_mapBroadcasterSteamIDToEvents.forEach((n, i) => {
              e.has(i) || t.push(i);
            }),
              t.forEach((e) => {
                this.m_mapBroadcasterSteamIDData.delete(e),
                  this.m_mapBroadcasterSteamIDToEvents.delete(e);
              });
          }
          static BuildAppIDRefsForEventList(e, t) {
            const n = new Set();
            for (const i of e) {
              A.ParseEventModelAppReferences(i, t).forEach((e) => n.add(e));
            }
            return Array.from(n);
          }
          UpdateCachedDataFromEvents(e, t) {
            e.forEach((e, n) => {
              if (this.IsBroadcasterAlreadyBound(n, e)) return;
              const i = {
                m_mapPresenters: A.BuildSteamIDToPresenterMapFromEventList(
                  e,
                  t,
                ),
                m_rgAppIDs: A.BuildAppIDRefsForEventList(e, t),
              };
              this.m_mapBroadcasterSteamIDData.set(n, i),
                this.m_mapBroadcasterSteamIDToEvents.set(
                  n,
                  e.map((e) => e.GID),
                );
            });
          }
          async SynchronizeEventsWithBroadcasts(e, t) {
            const n = await this.BuildBroadcasterSteamIDToActiveEventMap(e);
            this.RemoveCachedDataIfNotInMap(n),
              this.UpdateCachedDataFromEvents(n, t);
          }
          GetPresenterMapForBroadcasterSteamID(e) {
            return this.m_mapBroadcasterSteamIDData.get(e)?.m_mapPresenters;
          }
          GetAppIDListForBroadcasterSteamID(e) {
            return this.m_mapBroadcasterSteamIDData.get(e)?.m_rgAppIDs;
          }
        }
        (0, i.Cg)([o.sH], A.prototype, "m_mapBroadcasterSteamIDData", void 0);
        const T = new A();
        var M = n(31594),
          R = n(80611),
          k = n.n(R),
          L = n(27816),
          G = n(89021),
          F = n(61632),
          P = n(66378),
          B = n(32776),
          x = n(61142),
          O = n(56132),
          N = n(16280),
          V = n(77889),
          U = n(97229),
          H = n(82924),
          W = n(20270);
        class z {
          reactNodes = [];
          AppendText(e, t = !1) {
            e.length &&
              (t
                ? this.reactNodes.push(
                    s.createElement(
                      "span",
                      {
                        "data-copytext": "",
                        "data-copystyle": "merge-adjacent",
                        "bbcode-text": e,
                      },
                      e,
                    ),
                  )
                : this.reactNodes.push(e));
          }
          AppendNode(e) {
            this.reactNodes.push(e);
          }
          GetElements() {
            return this.reactNodes;
          }
        }
        class j {
          m_decoratedAccumulator;
          constructor(e) {
            (0, W.w)(e, "decorated accumulator cannot be null"),
              (this.m_decoratedAccumulator = e);
          }
          AppendText(e, t = !1) {
            this.m_decoratedAccumulator.AppendText(e, t);
          }
          AppendNode(e) {
            this.m_decoratedAccumulator.AppendNode(e);
          }
          GetElements() {
            return this.m_decoratedAccumulator.GetElements();
          }
        }
        class q extends j {
          m_nStartCursor = 1;
          constructor(e, t, n) {
            super(e), (this.m_nStartCursor = void 0 !== t ? t : 1);
          }
          AppendText(e) {
            let t = e;
            const n = [];
            for (
              let e = t.indexOf("\n", this.m_nStartCursor);
              -1 !== e;
              e = t.indexOf("\n")
            )
              n.push(t.substr(0, e)),
                n.push(s.createElement("br")),
                (t = t.substr(e + 1));
            t.length && n.push(t),
              n.forEach((e) => {
                super.AppendNode(e);
              });
          }
        }
        class K {
          type = 0;
          text = "";
          tag;
          args;
          ConvertMalformedNodeToText() {
            3 == this.type
              ? (this.text = "[/" + this.text)
              : 2 == this.type && (this.text = "[" + this.text),
              (this.type = 1);
          }
        }
        class Z {
          m_fnAccumulatorFactory;
          m_dictComponents;
          constructor(e, t) {
            (this.m_dictComponents = e), (this.m_fnAccumulatorFactory = t);
          }
          Parse(e, t, n = !1) {
            const i = (function (e, t) {
              const n = [];
              let i = new K(),
                o = !1,
                r = !1,
                a = !1;
              for (let s = 0; s < e.length; s++) {
                const l = e[s];
                switch (i.type) {
                  case 0:
                    "[" == l
                      ? ((i.type = 2), (r = !0))
                      : ((i.type = 1),
                        "\\" == l && t ? (o = !o) : (i.text += l));
                    break;
                  case 2:
                  case 3:
                    if ("/" == l && r) (i.type = 3), (i.text = ""), (r = !1);
                    else if ("[" != l || o)
                      if ("]" != l || o)
                        "\\" == l && t
                          ? ((i.text += l), (o = !o), (r = !1))
                          : ((i.text += l), (o = !1), (r = !1));
                      else {
                        const e =
                            2 == i.type &&
                            "noparse" == i.text.toLocaleLowerCase(),
                          t =
                            3 == i.type &&
                            "noparse" == i.text.toLocaleLowerCase();
                        r || (a && !t)
                          ? (i.ConvertMalformedNodeToText(), (i.text += l))
                          : e
                            ? (a = !0)
                            : t && (a = !1),
                          (i = Q(n, i)),
                          (r = !1);
                      }
                    else
                      i.ConvertMalformedNodeToText(),
                        (i = Q(n, i, 2)),
                        (r = !0);
                    break;
                  case 1:
                    "[" != l || o
                      ? "\\" == l && t
                        ? (o && (i.text += l), (o = !o))
                        : ((i.text += l), (o = !1))
                      : ((i = Q(n, i, 2)), (r = !0));
                }
              }
              0 != i.type &&
                ((2 != i.type && 3 != i.type) || i.ConvertMalformedNodeToText(),
                n.push(i));
              return n;
            })(e || "", n);
            return this.Parse_BuildElements(i, t);
          }
          Parse_BuildElements(e, t) {
            let n = this.m_fnAccumulatorFactory(void 0);
            const i = [],
              o = () => (i.length < 1 ? void 0 : i[i.length - 1]),
              r = this.m_dictComponents,
              a = (e) => !(!e.tag || !r.get(e.tag)?.autocloses);
            let s = !1,
              l = !0;
            const c = (e, o) => {
              if (e && e.node.tag === o.text && r.get(e.node.tag)) {
                const o = r.get(e.node.tag),
                  a = i.map((e) => e.node.tag),
                  c = { parentTags: a, tagname: e.node.tag, args: e.node.args },
                  m = t(o.Constructor, c, ...n.GetElements());
                (n = e.accumulator),
                  Array.isArray(m)
                    ? m.forEach((e) => n.AppendNode(e))
                    : n.AppendNode(m),
                  (s = !!o.skipFollowingNewline),
                  (l = e.bWrapTextForCopying);
              } else if (e) {
                const t = e.accumulator;
                t.AppendText("[" + e.node.text + "]", !1),
                  n.GetElements().forEach((e) => t.AppendNode(e)),
                  t.AppendText("[/" + o.text + "]", !1),
                  (n = t),
                  (l = e.bWrapTextForCopying);
              }
            };
            for (
              e.forEach((e, t) => {
                if (1 == e.type) {
                  const t = s ? e.text.replace(/^[\t\r ]*\n/g, "") : e.text;
                  n.AppendText(t, l), (s = !1);
                } else if (2 == e.type) {
                  const t = r.get(e.tag);
                  if (t) {
                    const a = o();
                    if (void 0 !== a) {
                      const t = r.get(a.node.tag);
                      t &&
                        t.autocloses &&
                        e.tag === a.node.tag &&
                        c(i.pop(), a.node);
                    }
                    i.push({ accumulator: n, node: e, bWrapTextForCopying: l }),
                      (n = this.m_fnAccumulatorFactory(e)),
                      (s = !!t.skipInternalNewline),
                      (l = t.allowWrapTextForCopying ?? !1);
                  } else n.AppendText("[" + e.text + "]", 0 == i.length);
                } else if (3 == e.type) {
                  for (; o() && o().node.tag !== e.text && a(o().node); ) {
                    const e = i.pop();
                    c(e, e.node);
                  }
                  if (o()?.node.tag == e.text) {
                    const t = i.pop();
                    c(t, e);
                  } else n.AppendText("[/" + e.text + "]", 0 == i.length);
                }
              });
              i.length > 0;
            ) {
              const e = i.pop();
              c(e, e.node);
            }
            return n.GetElements();
          }
        }
        function Q(e, t, n = 0) {
          if (2 == t.type) {
            let e = t.text.indexOf("=");
            const n = t.text.indexOf(" ");
            if ((-1 != n && (-1 == e || n < e) && (e = n), e > 0)) {
              t.tag = t.text.substr(0, e).toLocaleLowerCase();
              const n = t.text.substr(e);
              t.args = (function (e) {
                if (!e || e.length < 1) return {};
                const t = {};
                let n = "",
                  i = "",
                  o = 0,
                  r = 0;
                "=" == e[0] && (o = 2);
                let a = !1;
                for (r++; r < e.length; r++) {
                  const s = e[r];
                  let l = !0,
                    c = !1;
                  switch (o) {
                    case 0:
                      if ("=" == s) return {};
                      if (" " == s) continue;
                      o = 1;
                      break;
                    case 1:
                      ("=" != s && " " != s) ||
                        a ||
                        (" " == s ? ((o = 0), (c = !0)) : (o = 2), (l = !1));
                      break;
                    case 2:
                      " " == s
                        ? ((o = 0), (l = !1), (c = !0))
                        : '"' == s
                          ? ((o = 4), (l = !1))
                          : (o = 3);
                      break;
                    case 3:
                    case 4:
                      ((" " == s && 4 != o && !a) ||
                        ('"' == s && 4 == o && !a)) &&
                        ((o = 0), (l = !1), (c = !0));
                  }
                  if (l)
                    if ("\\" != s || a)
                      if (((a = !1), 1 == o)) n += s;
                      else {
                        if (3 != o && 4 != o)
                          throw new Error(
                            "Not expecting to accumulate buffer in state " + o,
                          );
                        i += s;
                      }
                    else a = !0;
                  c && ((t[n] = i), (n = ""), (i = ""));
                }
                0 != o && (t[n] = i);
                return t;
              })(n);
            } else (t.args = {}), (t.tag = t.text.toLocaleLowerCase());
          }
          e.push(t);
          const i = new K();
          return (i.type = n), i;
        }
        class $ extends Z {
          m_renderingLanguage;
          constructor(e, t, n) {
            super(e, t ?? (() => new z())),
              (this.m_renderingLanguage =
                "string" == typeof n ? (0, O.sf)(n) : n);
          }
          UpdateOverrideLanguage(e) {
            this.m_renderingLanguage = e;
          }
          ParseBBCode(e, t, n = !1) {
            let i = 0;
            const o = this.Parse(
              e,
              (e, n, ...o) =>
                s.createElement(
                  e,
                  {
                    ...n,
                    context: t,
                    language: this.m_renderingLanguage,
                    key: "bbnode_" + i++,
                  },
                  ...o,
                ),
              n,
            );
            return o.length > 1
              ? s.createElement(s.Fragment, null, ...o)
              : 1 == o.length
                ? o[0]
                : null;
          }
        }
        function X(e) {
          return new q(new z(), 0);
        }
        function Y(e) {
          const { text: t, languageOverride: n } = e,
            [i] = (0, s.useState)(
              new $(new Map([...Array.from(x.W4.entries())]), X, n),
            );
          return s.createElement(s.Fragment, null, i.ParseBBCode(t, {}));
        }
        var J = n(14729),
          ee = n.n(J);
        const te = (0, r.PA)((e) => {
          const t = e.photo
              ? (0, x._D)(e.photo, (0, O.sf)(b.TS.LANGUAGE))
              : null,
            n = e.photo ? ("string" == typeof t ? t : t[1]) : null,
            i = Boolean(e.title),
            o = Boolean(e.company);
          return s.createElement(
            "div",
            { className: ee().SpeakerPopup, onMouseLeave: e.fnClose },
            s.createElement(
              "div",
              { className: ee().SpeakerInfoOuter },
              e.photo && s.createElement("img", { src: n }),
              s.createElement(
                "div",
                { className: ee().SpeakerInfoInner },
                s.createElement("div", null, e.name),
                (i || o) &&
                  s.createElement(
                    "div",
                    null,
                    i &&
                      s.createElement(
                        "span",
                        { className: ee().SpeakerTitle },
                        e.title,
                      ),
                    i && o && s.createElement("span", null, ", "),
                    o && s.createElement("span", null, e.company),
                  ),
              ),
            ),
            e.bio &&
              s.createElement(
                "div",
                { className: ee().SpeakerBio },
                e.bio,
                e.bioString && s.createElement(Y, { text: e.bioString }),
              ),
          );
        });
        class ne extends s.Component {
          static sm_embeddedElements = new N.MX(
            "presenter-hover-source-elements",
          );
          m_refAnchor = s.createRef();
          m_fnHidePopup;
          m_nScrollPosAtHoverStart;
          ClosePopup() {
            this.m_fnHidePopup &&
              (this.m_fnHidePopup(),
              (this.m_fnHidePopup = null),
              window.removeEventListener("scroll", this.OnScroll));
          }
          componentWillUnmount() {
            this.ClosePopup();
          }
          OnScroll() {
            Math.abs(window.scrollY - this.m_nScrollPosAtHoverStart) > 50 &&
              this.ClosePopup();
          }
          OnHover(e) {
            const t = this.m_refAnchor.current;
            if (!t) return;
            const n = {
                direction: "right",
                bEnablePointerEvents: !0,
                style: { maxWidth: 640, minHeight: t.clientHeight },
                target: t,
              },
              i = "presenter-hover-" + Math.floor(1e8 * Math.random());
            (this.m_fnHidePopup = () =>
              ne.sm_embeddedElements.HideElement(t.ownerDocument, i)),
              window.addEventListener("scroll", this.OnScroll),
              (this.m_nScrollPosAtHoverStart = window.scrollY);
            ne.sm_embeddedElements.ShowElementDelayed(
              t.ownerDocument,
              150,
              s.createElement(
                V.g,
                { ...n },
                s.createElement(te, { ...this.props, fnClose: this.OnLeave }),
              ),
              i,
            );
          }
          OnLeave(e) {
            this.ClosePopup();
          }
          render() {
            return s.createElement(
              "div",
              {
                className: ee().SpeakerHover,
                ref: this.m_refAnchor,
                onMouseEnter: this.OnHover,
                onFocus: this.OnHover,
                onMouseLeave: this.OnLeave,
                onBlur: this.OnLeave,
              },
              this.props.children,
            );
          }
        }
        (0, i.Cg)([H.oI], ne.prototype, "ClosePopup", null),
          (0, i.Cg)([H.oI], ne.prototype, "OnScroll", null),
          (0, i.Cg)([H.oI], ne.prototype, "OnHover", null),
          (0, i.Cg)([H.oI], ne.prototype, "OnLeave", null);
        s.Component;
        var ie = n(11315),
          oe = n(81734),
          re = n(77171),
          ae = n(63437),
          se = n.n(ae),
          le = (n(65281), n(72751));
        class ce {
          constructor() {
            (0, o.Gn)(this);
          }
          giveaway_id = void 0;
          seconds_until_drawing = void 0;
          rtime_start = void 0;
          rtime_end = void 0;
          closed = void 0;
          winner_count = void 0;
          BIsValid() {
            return void 0 !== this.giveaway_id && null !== this.giveaway_id;
          }
          BStarted() {
            return (
              this.BIsValid() &&
              (this.seconds_until_drawing >= 0 || this.winner_count > 0)
            );
          }
          clone() {
            const e = new ce();
            return (
              (e.giveaway_id = this.giveaway_id),
              (e.seconds_until_drawing = this.seconds_until_drawing),
              (e.rtime_start = this.rtime_start),
              (e.rtime_end = this.rtime_end),
              (e.closed = this.closed),
              (e.winner_count = this.winner_count),
              e
            );
          }
        }
        (0, i.Cg)([o.sH], ce.prototype, "giveaway_id", void 0),
          (0, i.Cg)([o.sH], ce.prototype, "seconds_until_drawing", void 0),
          (0, i.Cg)([o.sH], ce.prototype, "rtime_start", void 0),
          (0, i.Cg)([o.sH], ce.prototype, "rtime_end", void 0),
          (0, i.Cg)([o.sH], ce.prototype, "closed", void 0),
          (0, i.Cg)([o.sH], ce.prototype, "winner_count", void 0);
        class me {
          constructor() {
            (0, o.Gn)(this);
          }
          m_mapGiveawayIDToNextDrawInfo = new Map();
          m_mapGiveawayIDAndInstanceToNextDrawInfo = new Map();
          m_bLoadedFromConfig = !1;
          m_mapNextDrawChangeCallback = new Map();
          GetKey(e, t) {
            return e + "_" + t;
          }
          GetInfoByInstance(e, t) {
            return this.m_mapGiveawayIDAndInstanceToNextDrawInfo.get(
              this.GetKey(e, t),
            );
          }
          GetNextDrawChangeCallback(e) {
            return (
              this.m_mapNextDrawChangeCallback.has(e) ||
                this.m_mapNextDrawChangeCallback.set(e, new S.lu()),
              this.m_mapNextDrawChangeCallback.get(e)
            );
          }
          CopyToGiveaway(e, t) {
            t.closed != e.closed && (t.closed = e.closed),
              t.giveaway_id != e.giveaway_id && (t.giveaway_id = e.giveaway_id),
              t.rtime_start != e.rtime_start && (t.rtime_start = e.rtime_start),
              t.rtime_end != e.rtime_end && (t.rtime_end = e.rtime_end),
              t.winner_count != e.winner_count &&
                (t.winner_count = e.winner_count),
              t.seconds_until_drawing != e.seconds_until_drawing &&
                (t.seconds_until_drawing = e.seconds_until_drawing);
          }
          async ReloadGiveaway(e, t) {
            if (!e) return null;
            let n = b.TS.STORE_BASE_URL + "prizes/nextdraw/" + e,
              i = null,
              r = { origin: self.origin };
            return (
              (i = await m().get(n, { params: r })),
              (0, o.h5)(() => {
                if (
                  (this.m_mapGiveawayIDToNextDrawInfo.has(e) ||
                    this.m_mapGiveawayIDToNextDrawInfo.set(e, new ce()),
                  this.CopyToGiveaway(
                    i.data,
                    this.m_mapGiveawayIDToNextDrawInfo.get(e),
                  ),
                  void 0 !== t)
                ) {
                  const n = this.GetKey(e, t);
                  this.m_mapGiveawayIDAndInstanceToNextDrawInfo.has(n) ||
                    this.m_mapGiveawayIDAndInstanceToNextDrawInfo.set(
                      n,
                      new ce(),
                    ),
                    this.CopyToGiveaway(
                      i.data,
                      this.m_mapGiveawayIDAndInstanceToNextDrawInfo.get(n),
                    );
                }
              }),
              this.GetNextDrawChangeCallback(e).Dispatch(
                this.m_mapGiveawayIDToNextDrawInfo.get(e),
              ),
              this.m_mapGiveawayIDToNextDrawInfo.get(e)
            );
          }
          static s_Singleton;
          static Get() {
            return (
              me.s_Singleton ||
                ((me.s_Singleton = new me()),
                me.s_Singleton.Init(),
                "dev" == b.TS.WEB_UNIVERSE &&
                  (window.g_GiveawayStore = me.s_Singleton)),
              me.s_Singleton
            );
          }
          Init() {
            if (!this.m_bLoadedFromConfig) {
              let e = (0, b.Tc)("giveawaynextdraw", "application_config");
              if (e && e.giveaway_id) {
                let t = new ce();
                this.CopyToGiveaway(e, t),
                  this.m_mapGiveawayIDToNextDrawInfo.set(e.giveaway_id, t);
              }
              this.m_bLoadedFromConfig = !0;
            }
          }
        }
        (0, i.Cg)(
          [o.sH],
          me.prototype,
          "m_mapGiveawayIDToNextDrawInfo",
          void 0,
        ),
          (0, i.Cg)([o.XI], me.prototype, "CopyToGiveaway", null);
        class de {
          m_intervalID;
          m_intervalCountDownID;
          static s_GlobalInstance = 0;
          m_myInstanceNumber = 0;
          constructor() {
            (this.m_myInstanceNumber = de.s_GlobalInstance),
              (de.s_GlobalInstance += 1);
          }
          ClearRefreshInterval() {
            this.m_intervalID &&
              (window.clearInterval(this.m_intervalID),
              (this.m_intervalID = void 0));
          }
          ClearCountDown() {
            this.m_intervalCountDownID &&
              (window.clearInterval(this.m_intervalCountDownID),
              (this.m_intervalCountDownID = void 0));
          }
          SetupRefreshDataInterval(e, t) {
            if ((this.ClearRefreshInterval(), !e.closed)) {
              let n =
                e.seconds_until_drawing <= 0 && 0 == e.winner_count ? 6e4 : 5e3;
              this.m_intervalID = window.setInterval(t, n);
            }
          }
          SetupCountDown(e, t) {
            e > 0 && (this.m_intervalCountDownID = window.setInterval(t, 1e3));
          }
        }
        function ue(e, t) {
          const n = me.Get().GetInfoByInstance(e, t.m_myInstanceNumber);
          (n.seconds_until_drawing -= 1),
            0 == n.seconds_until_drawing && t.ClearCountDown();
        }
        function he(e) {
          const [t] = (0, s.useState)(new de()),
            n = (0, H.CH)();
          (0, s.useEffect)(
            () => (
              me
                .Get()
                .ReloadGiveaway(e, t.m_myInstanceNumber)
                .then((i) => {
                  t.SetupRefreshDataInterval(i, () =>
                    (function (e, t) {
                      const n = me
                        .Get()
                        .GetInfoByInstance(e, t.m_myInstanceNumber);
                      n &&
                        n.BIsValid() &&
                        n.seconds_until_drawing <= 0 &&
                        !n.closed &&
                        (t.ClearCountDown(),
                        me
                          .Get()
                          .ReloadGiveaway(e, t.m_myInstanceNumber)
                          .then((n) => {
                            t.SetupCountDown(n.seconds_until_drawing, () =>
                              ue(e, t),
                            );
                          }));
                    })(e, t),
                  ),
                    t.SetupCountDown(i.seconds_until_drawing, () => ue(e, t)),
                    n();
                }),
              () => {
                t.ClearRefreshInterval(), t.ClearCountDown();
              }
            ),
            [t, e, n],
          );
          const i = me.Get().GetInfoByInstance(e, t.m_myInstanceNumber),
            [o, r, l] = (0, a.q3)(() => [
              i?.winner_count,
              i?.closed,
              i?.seconds_until_drawing,
            ]);
          return {
            bLoadingGiveawayInfo:
              !i || null == i.giveaway_id || !i.BStarted() || void 0 === o,
            winner_count: o,
            closed: r,
            seconds_until_drawing: l,
          };
        }
        (0, i.Cg)([f.o], de.prototype, "ClearRefreshInterval", null),
          (0, i.Cg)([f.o], de.prototype, "ClearCountDown", null),
          (0, i.Cg)([f.o], de.prototype, "SetupRefreshDataInterval", null),
          (0, i.Cg)([f.o], de.prototype, "SetupCountDown", null);
        var pe = n(10672);
        class _e {
          m_mapRegistrations = new Map();
          m_mapLoadPromises = new Map();
          m_mapCreatePromises = new Map();
          m_listChangeCallback = new Map();
          GetRegistration(e) {
            return this.m_mapRegistrations.get(e);
          }
          GetRegistrationChangeCallback(e) {
            return (
              this.m_listChangeCallback.has(e) ||
                this.m_listChangeCallback.set(e, new S.lu()),
              this.m_listChangeCallback.get(e)
            );
          }
          async LoadRegistration(e) {
            return (
              this.m_mapLoadPromises.has(e) ||
                this.m_mapLoadPromises.set(e, this.InternalLoadRegistration(e)),
              this.m_mapLoadPromises.get(e)
            );
          }
          async InternalLoadRegistration(e) {
            let t = null;
            try {
              const n =
                  b.TS.STORE_BASE_URL +
                  "saleaction/ajaxgetusergiveawayregistration",
                i = { giveaway_name: e, sessionid: b.TS.SESSIONID },
                o = await m().get(n, { params: i, withCredentials: !0 });
              if (
                200 == o?.status &&
                1 == o?.data?.success &&
                o?.data?.registration
              )
                return (
                  this.m_mapRegistrations.set(e, o?.data?.registration),
                  this.GetRegistrationChangeCallback(e).Dispatch(
                    o?.data?.registration,
                  ),
                  o?.data?.registration
                );
              t = (0, pe.H)(o);
            } catch (e) {
              t = (0, pe.H)(e);
            }
            return (
              console.error(
                "CGiveawayRegistrationStore.InternalLoadRegistration failed: on giveawayName " +
                  e +
                  " error: " +
                  t?.strErrorMsg,
                t,
              ),
              { registered: !1 }
            );
          }
          CreateRegistration(e) {
            return (
              this.m_mapCreatePromises.has(e) ||
                this.m_mapCreatePromises.set(
                  e,
                  this.InternalCreateRegistration(e),
                ),
              this.m_mapCreatePromises.get(e)
            );
          }
          async InternalCreateRegistration(e) {
            let t = null;
            try {
              const n =
                  b.TS.STORE_BASE_URL +
                  "saleaction/ajaxupdateusergiveawayregistration",
                i = { giveaway_name: e, sessionid: b.TS.SESSIONID },
                o = await m().get(n, { params: i, withCredentials: !0 });
              if (
                200 == o?.status &&
                1 == o?.data?.success &&
                o?.data?.registration
              )
                return (
                  this.m_mapRegistrations.set(e, o?.data?.registration),
                  this.GetRegistrationChangeCallback(e).Dispatch(
                    o?.data?.registration,
                  ),
                  o?.data?.registration
                );
              t = (0, pe.H)(o);
            } catch (e) {
              t = (0, pe.H)(e);
            }
            return (
              console.error(
                "CGiveawayRegistrationStore.InternalCreateRegistration failed: on giveawayName " +
                  e +
                  " error: " +
                  t?.strErrorMsg,
                t,
              ),
              { registered: !1 }
            );
          }
          static s_Singleton;
          static Get() {
            return (
              _e.s_Singleton ||
                ((_e.s_Singleton = new _e()),
                _e.s_Singleton.Init(),
                "dev" == b.TS.WEB_UNIVERSE &&
                  (window.g_SaleMiniGameItemDefStore = _e.s_Singleton)),
              _e.s_Singleton
            );
          }
          constructor() {}
          Init() {}
        }
        (0, i.Cg)([H.oI], _e.prototype, "CreateRegistration", null);
        var ge = n(24803),
          Ce = n(89481),
          fe = n(16910),
          Se = n.n(fe);
        function ve(e) {
          const { latestAnnouncement: t } = e;
          return "giveaway_draw" == t?.type
            ? s.createElement(be, { latestWinner: t })
            : null;
        }
        function be(e) {
          const {
              latestWinner: t,
              className: n,
              strActionButton: i,
              strActionClassname: o,
            } = e,
            r = t.winners_info?.length > 0 ? t.winners_info[0].accountid : 0,
            [a, l] = s.useState(r),
            c = (0, Ce.L$)(
              `${(0, le.mJ)()}4/080b1f163b02a9810fa78f0b32b9396fab012aef.gif`,
            ),
            m = (0, Ce.L$)(
              `${(0, le.mJ)()}4/56521811317a8298a7aff4a914be964b67dd0325.png`,
            ),
            d = he(t.giveaway_gid);
          let u =
            d.bLoadingGiveawayInfo || d.closed ? null : d.seconds_until_drawing;
          const h = r === b.iA.accountid;
          s.useEffect(() => {
            a != r && setTimeout(() => l(r), 1500);
          }, [r, a]);
          const p =
            t.winners_info?.length > 0 && Boolean(t.winners_info[0].persona)
              ? t.winners_info[0].persona
              : (0, v.we)("#GA2022_UnknownPersonaName");
          return s.createElement(
            ge.uU,
            {
              href: "https://store.steampowered.com/sale/thegameawardssteamdeckdrop2022",
              className: n,
            },
            s.createElement(
              "div",
              {
                className: (0, re.A)({
                  [Se().GiveawayWinnerBox]: !0,
                  [Se().GiveawayWinnerAnnounced]: a === r,
                }),
              },
              s.createElement(
                "div",
                { className: Se().GiveawayWinnerBoxLeft },
                s.createElement("img", {
                  className: Se().GiveawayWinnerArt,
                  src: c,
                }),
              ),
              s.createElement(
                "div",
                { className: Se().GiveawayWinnerBoxRight },
                Boolean(a !== r) &&
                  s.createElement(
                    "div",
                    { className: (0, re.A)(Se().GiveawayWinnerText) },
                    (0, v.PP)(
                      "#GA2022_Congrats_Deck_Unknown",
                      s.createElement("br", null),
                    ),
                  ),
                Boolean(a === r) &&
                  s.createElement(
                    "div",
                    {
                      className: (0, re.A)(
                        Se().GiveawayWinnerText,
                        Se().GiveawayWinnerAnnounced,
                      ),
                    },
                    (0, v.PP)(
                      h
                        ? "#GA2022_Congrats_Deck_Me"
                        : "#GA2022_Congrats_Deck_OTher",
                      p,
                      s.createElement("br", null),
                    ),
                  ),
                Boolean(u > 0) &&
                  s.createElement(
                    "div",
                    { className: Se().GiveawayWinnerCountdown },
                    (0, v.PP)("#GA2022_Congrats_NextDraw", u),
                  ),
              ),
              s.createElement("img", {
                className: Se().GiveawayWinnerQuestion,
                src: m,
              }),
              Boolean(i) &&
                s.createElement(
                  "div",
                  { className: o },
                  h ? (0, v.we)("#GA2022_YouWonNextSteps") : i,
                ),
            ),
          );
        }
        const Ie = new RegExp("ː([^ː]*)ː", "g"),
          we = new RegExp(
            "^https?://(?:[^/?#]+?\\.)?(?:valvesoftware|steamcommunity|steampowered)\\.com(?:/?#|$)",
            "i",
          );
        const ye = (e) => {
            const { userType: t, msg: n, presenterInfo: i } = e;
            if ("presenter" === t)
              return s.createElement(
                "span",
                null,
                s.createElement(
                  ne,
                  {
                    name: i.name,
                    title: i.title,
                    photo: i.photo,
                    company: i.company,
                    bioString: i.bio,
                  },
                  s.createElement(
                    "a",
                    {
                      className: (0, re.A)(
                        se().MessageName,
                        se().MessagePresenter,
                      ),
                      href: b.TS.COMMUNITY_BASE_URL + "profiles/" + n.steamid,
                      target: "_blank",
                      rel: "noopener noreferrer",
                    },
                    n.persona_name,
                  ),
                ),
              );
            {
              let e = null;
              return (
                "broadcaster" === t
                  ? (e = se().MessageBroadcaster)
                  : "moderator" === t && (e = se().MessageModerator),
                s.createElement(
                  "span",
                  null,
                  s.createElement(
                    "a",
                    {
                      className: (0, re.A)(se().MessageName, e),
                      href: b.TS.COMMUNITY_BASE_URL + "profiles/" + n.steamid,
                      "data-miniprofile": "s" + n.steamid,
                      target: "_blank",
                      rel: "noopener noreferrer",
                    },
                    n.persona_name,
                  ),
                )
              );
            }
          },
          Ee = (e) => {
            switch (e.userType) {
              case "presenter":
                return s.createElement(
                  U.Gq,
                  {
                    toolTipContent: (0, v.we)(
                      "#BroadcastChat_Role_Presenter_ttip",
                    ),
                  },
                  s.createElement(
                    "span",
                    { className: se().RoleFlairContainer },
                    s.createElement(oe.NCC, null),
                  ),
                );
              case "moderator":
                return s.createElement(
                  U.Gq,
                  {
                    toolTipContent: (0, v.we)(
                      "#BroadcastChat_Role_Moderatorr_ttip",
                    ),
                  },
                  s.createElement(
                    "span",
                    { className: se().RoleFlairContainer },
                    s.createElement(oe.$4X, null),
                  ),
                );
              case "broadcaster":
                return s.createElement(
                  U.Gq,
                  {
                    toolTipContent: (0, v.we)(
                      "#BroadcastChat_Role_Broadcaster_ttip",
                    ),
                  },
                  s.createElement(
                    "span",
                    { className: se().RoleFlairContainer },
                    s.createElement(oe.Gkr, null),
                  ),
                );
              default:
                return null;
            }
          };
        let De = class extends s.Component {
          constructor(e) {
            super(e), (0, o.Gn)(this);
          }
          m_chat = null;
          messagesContainer = s.createRef();
          componentDidMount() {
            this.StartChat();
          }
          componentDidUpdate(e) {
            this.m_chat &&
              this.m_chat.m_bAutoScroll &&
              this.ScrollToNewestMessages(),
              (this.props.steamID === e.steamID &&
                this.props.broadcastID === e.broadcastID &&
                this.props.broadcastChannelID === e.broadcastChannelID) ||
                this.StartChat();
          }
          componentWillUnmount() {
            this.m_chat && this.m_chat.Stop();
          }
          StartChat() {
            if (
              (this.m_chat && this.m_chat.Stop(),
              (this.m_chat = w
                .Get()
                .GetOrCreateChat(
                  this.props.broadcastChannelID,
                  this.props.steamID,
                )),
              this.props.broadcastChannelID)
            )
              this.m_chat.StartForChannel(this.props.broadcastChannelID);
            else if (
              this.props.steamID &&
              this.props.steamID &&
              (this.props.broadcastID || this.props.globalChat)
            ) {
              let e = this.props.broadcastID || "0";
              this.m_chat.StartForSteamID(this.props.steamID, e),
                this.ScrollToNewestMessages();
            }
          }
          IsTrustedDomain(e) {
            return !!e.match(we);
          }
          AddLinksEmoticons(e, t) {
            let n = Ie;
            t && (n = this.m_chat.GetUserEmoticons());
            let i = e.split(Ie);
            const o = [];
            for (let e = 0; e < i.length; e += 1)
              e % 2 == 1
                ? o.push(
                    s.createElement(F.nl, {
                      emoticonHoverStore: M.s,
                      key: e,
                      emoticon: i[e],
                      large: !0,
                    }),
                  )
                : o.push(i[e]);
            return o;
          }
          HandleScroll(e) {
            const t = this.props.bInvertLayout
              ? e.currentTarget.scrollTop < 6
              : e.currentTarget.scrollTop + e.currentTarget.clientHeight >=
                e.currentTarget.scrollHeight - 6;
            this.m_chat && (this.m_chat.m_bAutoScroll = t);
          }
          ScrollToNewestMessages() {
            this.messagesContainer &&
              this.messagesContainer.current &&
              (this.messagesContainer.current.scrollTop = this.props
                .bInvertLayout
                ? 0
                : this.messagesContainer.current.scrollHeight);
          }
          OnContextMenu(e, t) {
            if (t.type !== d.X8.Chat) return null;
            const n = [],
              i = this.m_chat.IsUserBroadcaster(this.m_chat.GetUserSteamID()),
              o = this.m_chat.BIsUserBroadcastModerator(
                this.m_chat.GetUserSteamID(),
              );
            if (
              ((b.iA && b.iA.is_support) || i || o
                ? n.push(
                    s.createElement(
                      L.kt,
                      {
                        key: "remove",
                        onSelected: () =>
                          this.m_chat.RemoveUserMessagesServer(
                            t.steamid,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_RemoveMessages"),
                    ),
                    s.createElement(
                      L.kt,
                      {
                        key: "updatebanh",
                        onSelected: () =>
                          this.m_chat.UpdateUserChatBan(
                            t.steamid,
                            1,
                            12,
                            !1,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_half_Mute"),
                    ),
                    s.createElement(
                      L.kt,
                      {
                        key: "updateband",
                        onSelected: () =>
                          this.m_chat.UpdateUserChatBan(
                            t.steamid,
                            1,
                            24,
                            !1,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_day_Mute"),
                    ),
                    s.createElement(
                      L.kt,
                      {
                        key: "updatebanw",
                        onSelected: () =>
                          this.m_chat.UpdateUserChatBan(
                            t.steamid,
                            1,
                            168,
                            !1,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_week_Mute"),
                    ),
                    s.createElement(
                      L.kt,
                      {
                        key: "updatebanp",
                        onSelected: () =>
                          this.m_chat.UpdateUserChatBan(
                            t.steamid,
                            1,
                            0,
                            !0,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_perm_Mute"),
                    ),
                    s.createElement(
                      L.kt,
                      {
                        key: "removeban",
                        onSelected: () =>
                          this.m_chat.UpdateUserChatBan(
                            t.steamid,
                            0,
                            0,
                            !1,
                            t.persona_name,
                            !0,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_Unmute"),
                    ),
                  )
                : this.m_chat.IsUserMutedLocally(t.steamid)
                  ? n.push(
                      s.createElement(
                        L.kt,
                        {
                          key: "unmuteuser",
                          onSelected: () =>
                            this.m_chat.UnmuteUserForSession(
                              t.steamid,
                              t.persona_name,
                            ),
                        },
                        (0, v.we)("#BroadcastChat_UnmuteLocal"),
                      ),
                    )
                  : n.push(
                      s.createElement(
                        L.kt,
                        {
                          key: "muteuser",
                          onSelected: () =>
                            this.m_chat.MuteUserForSession(
                              t.steamid,
                              t.persona_name,
                            ),
                        },
                        (0, v.we)("#BroadcastChat_MuteLocal"),
                      ),
                    ),
              ((b.iA && b.iA.is_support) ||
                this.m_chat.IsUserBroadcaster(this.m_chat.GetUserSteamID())) &&
                t.steamid)
            ) {
              this.m_chat.BIsUserBroadcastModerator(t.steamid)
                ? n.push(
                    s.createElement(
                      L.kt,
                      {
                        key: "removemod",
                        onSelected: () =>
                          this.m_chat.UpdateBroadcastChatModerator(
                            t.steamid,
                            !1,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_Remove_Moderator"),
                    ),
                  )
                : n.push(
                    s.createElement(
                      L.kt,
                      {
                        key: "addmod",
                        onSelected: () =>
                          this.m_chat.UpdateBroadcastChatModerator(
                            t.steamid,
                            !0,
                            t.persona_name,
                          ),
                      },
                      (0, v.we)("#BroadcastChat_Add_Moderator"),
                    ),
                  );
            }
            return n.length
              ? (0, l.lX)(
                  s.createElement(
                    L.tz,
                    null,
                    s.createElement(
                      "div",
                      { className: se().SelectedUserNameCtn },
                      (0, v.we)("#BroadcastChat_User"),
                      s.createElement("br", null),
                      s.createElement(
                        "span",
                        { className: se().SelectedUserName },
                        t.persona_name,
                      ),
                    ),
                    n,
                  ),
                  e,
                )
              : null;
          }
          GetTypeClassName(e) {
            return e.type === d.X8.Notification
              ? se().MessageNotification
              : e.type === d.X8.Error
                ? se().MessageError
                : se().MessageChat;
          }
          FormatMessage(e, t) {
            if (e.type === d.X8.Chat) {
              let n = t ? t.FilterText(e.steamid, e.msg) : e.msg;
              return this.AddLinksEmoticons(n, !1);
            }
            return e.msg;
          }
          RenderUserChatLine(e, t, n) {
            let i = n ? n.get(e.steamid) : void 0;
            const o =
              e.type === d.X8.Chat
                ? (function (e, t, n) {
                    return n
                      ? "presenter"
                      : t.GetBroadcastSteamID() === e
                        ? "broadcaster"
                        : t.BIsUserBroadcastModerator(e)
                          ? "moderator"
                          : "";
                  })(e.steamid, this.m_chat, i)
                : "";
            return s.createElement(
              "div",
              {
                key: e.instance_id + "_" + e.client_ts + "_" + t,
                className: this.GetTypeClassName(e),
                onContextMenu: (t) => this.OnContextMenu(t, e),
              },
              e.type === d.X8.Chat && s.createElement(Ee, { userType: o }),
              e.flair &&
                s.createElement(
                  "span",
                  { className: se().FlairContainer },
                  this.AddLinksEmoticons(e.flair, !1),
                ),
              e.type === d.X8.Chat &&
                s.createElement(ye, { userType: o, msg: e, presenterInfo: i }),
              e.type === d.X8.Chat &&
                this.m_chat.GetBroadcastSteamID() === e.steamid &&
                s.createElement(
                  "span",
                  {
                    className: `${se().MessageNotification} ${se().MessageContents}`,
                  },
                  ` (${(0, v.we)("#BroadcastChat_Broadcaster")})`,
                ),
              e.type === d.X8.Chat &&
                this.m_chat.m_mapChannelModeratorUsers.get(e.steamid) &&
                s.createElement(
                  "span",
                  {
                    className: `${se().MessageNotification} ${se().MessageContents}`,
                  },
                  ` (${(0, v.we)("#BroadcastChat_Moderator")})`,
                ),
              s.createElement(
                "span",
                {
                  className: `${se().MessageContents} ${this.AddLinksEmoticons(e.msg, !1).filter((e) => e && "string" == typeof e).length ? "" : se().EmoticonsOnly}`,
                },
                e.type === d.X8.Chat ? " : " : "",
                this.FormatMessage(e, this.m_chat.TextFilterStore),
              ),
            );
          }
          render() {
            const {
                hidden: e,
                bPartnerMemberOnlyChat: t,
                bInvertLayout: n,
              } = this.props,
              i = this.m_chat ? this.m_chat.m_rgChatMessages : [],
              o = n ? i.reverse() : i,
              r = this.m_chat
                ? T.GetPresenterMapForBroadcasterSteamID(
                    this.m_chat.GetBroadcastSteamID(),
                  )
                : void 0,
              a = this.m_chat ? this.m_chat.m_latestAnnouncement : null;
            return s.createElement(
              "div",
              {
                className: (0, re.A)(se().ChatPanel, "ChatPanel"),
                style: e ? { display: "none" } : void 0,
              },
              s.createElement(ve, { latestAnnouncement: a }),
              n &&
                !!this.m_chat &&
                s.createElement(Ae, {
                  oChat: this.m_chat,
                  emoticonStore: this.props.emoticonStore,
                  bPartnerMemberOnlyChat: t,
                }),
              s.createElement(ie.H, null),
              s.createElement(
                "div",
                {
                  className: (0, re.A)(
                    `${se().ChatMessages} ${k().minHeightZero}`,
                    "ChatMessages",
                  ),
                  onScroll: this.HandleScroll,
                  ref: this.messagesContainer,
                },
                o.map((e, t) => this.RenderUserChatLine(e, t, r)),
              ),
              s.createElement(ie.P, null),
              !n &&
                !!this.m_chat &&
                s.createElement(Ae, {
                  oChat: this.m_chat,
                  emoticonStore: this.props.emoticonStore,
                  bPartnerMemberOnlyChat: t,
                }),
            );
          }
        };
        function Ae(e) {
          const { oChat: t, emoticonStore: n, bPartnerMemberOnlyChat: i } = e;
          return !i || (b.iA?.logged_in && b.iA?.is_partner_member)
            ? b.iA?.logged_in
              ? s.createElement(Te, { oChat: t, emoticonStore: n })
              : null
            : s.createElement(ke, null);
        }
        function Te(e) {
          const { oChat: t, emoticonStore: n } = e,
            [i, o] = s.useState(""),
            r = s.useRef(),
            l = (0, a.q3)(() => t.m_bRateLimited),
            c = s.useCallback(
              (e) => {
                !!e.shiftKey ||
                  13 !== e.charCode ||
                  (t.m_bRateLimited || (t.SendMessage(i), o("")),
                  e.preventDefault());
              },
              [t, i],
            ),
            m = s.useCallback(
              (e, t = !1) => {
                o(i + `ː${e}ː`), r?.current && r.current.focus();
              },
              [i, r],
            );
          let d = l || 0 == i.trim().length,
            u = (0, re.A)(k().chatSubmitButton, 0 == i.length && k().disabled);
          return s.createElement(
            "div",
            { className: (0, re.A)(se().ChatEntryCtn, "ChatEntryCtn") },
            s.createElement(
              "div",
              { className: (0, re.A)(se().ChatEntry, "ChatEntry") },
              s.createElement(
                "form",
                { className: `${k().chatEntryControls}` },
                s.createElement("textarea", {
                  className: k().chatTextarea,
                  placeholder: (0, v.we)("#BroadcastChat_EnterResponse"),
                  onKeyPress: c,
                  onChange: (e) => o(e.target.value),
                  value: i,
                  ref: r,
                }),
                l &&
                  s.createElement(Re, {
                    nSeconds: t.m_nRateLimitSeconds,
                    bRateLimited: t.m_bRateLimited,
                  }),
                s.createElement(
                  "button",
                  {
                    className: u,
                    title: (0, v.we)("#ChatEntryButton_Submit"),
                    disabled: d,
                    onClick: () => {
                      t.SendMessage(i), o("");
                    },
                  },
                  s.createElement(oe.XTb, null),
                ),
              ),
              s.createElement(
                "div",
                {
                  style: { height: "50px" },
                  className: `${k().chatEntryActionsContainer}`,
                },
                s.createElement(
                  "div",
                  { className: k().chatEntryActionsGroup },
                  s.createElement(P.A, {
                    disabled: !1,
                    OnEmoticonSelected: m,
                    rtLastAckedNewEmoticons: Number.MAX_VALUE,
                    emoticonStore: n,
                    emoticonHoverStore: M.s,
                  }),
                  s.createElement(Me, { ...e, textInputRef: r }),
                ),
              ),
            ),
          );
        }
        function Me(e) {
          const { oChat: t, emoticonStore: n, textInputRef: i } = e;
          return t.m_strFlairGroupID &&
            n.flair_list &&
            n.GetFlairListByGroupID(t.m_strFlairGroupID)?.length
            ? s.createElement(P.A, {
                disabled: !1,
                OnEmoticonSelected: (e) => {
                  t.UpdateChatMessageFlair(e), i?.current && i.current.focus();
                },
                rtLastAckedNewEmoticons: Number.MAX_VALUE,
                emoticonStore: n,
                emoticonHoverStore: M.s,
                strFlairGroupID: t.m_strFlairGroupID,
                title: (0, v.we)("#ChatEntryButton_Flair"),
                buttonIcon: s.createElement(oe.P7r, null),
              })
            : null;
        }
        (0, i.Cg)([o.sH], De.prototype, "m_chat", void 0),
          (0, i.Cg)([H.oI], De.prototype, "StartChat", null),
          (0, i.Cg)([H.oI], De.prototype, "HandleScroll", null),
          (0, i.Cg)([H.oI], De.prototype, "OnContextMenu", null),
          (0, i.Cg)([H.oI], De.prototype, "RenderUserChatLine", null),
          (De = (0, i.Cg)([r.PA], De));
        class Re extends s.Component {
          render() {
            return s.createElement(
              "div",
              { className: se().TimedProgressBarContainer },
              s.createElement(
                "div",
                { className: se().wrapper },
                s.createElement("div", {
                  className: `${se().spinner} ${se().pie}`,
                  style: { animationDuration: `${this.props.nSeconds || 0}s` },
                }),
                s.createElement("div", {
                  className: `${se().filler} ${se().pie}`,
                  style: { animationDuration: `${this.props.nSeconds || 0}s` },
                }),
                s.createElement("div", {
                  className: se().mask,
                  style: { animationDuration: `${this.props.nSeconds || 0}s` },
                }),
              ),
            );
          }
        }
        function ke(e) {
          return s.createElement(
            "div",
            { className: se().Description },
            s.createElement(
              "div",
              { className: se().LogInPrompt },
              (0, v.we)("#Broadcast_PartnerChat_Login"),
            ),
            !b.iA.logged_in &&
              s.createElement(
                G.$n,
                { onClick: B.vg, className: (0, re.A)(se().SignInButton) },
                (0, v.we)("#Login_SignIn"),
              ),
          );
        }
      },
      45112: (e, t, n) => {
        "use strict";
        n.d(t, { dP: () => c, td: () => l });
        var i = n(34629),
          o = n(89193),
          r = n(17070);
        r.TS.CHAT_BASE_URL;
        const a = r.TS.CHAT_BASE_URL + "public/images/broadcast/yule_30x30.png";
        class s {
          bValid = !1;
          stream = { 0: "#Broadcast_EnglishMain" };
          name = "";
          appName = "";
          appID = 0;
          link = "";
          linkName = "";
          tabIcon = "";
          offlineImage = "";
          gidEvent = "";
          constructor(e) {
            (0, o.Gn)(this), this.init(e);
          }
          init(e) {
            (this.bValid = e.bValid),
              (this.stream = e.stream),
              (this.name = e.name),
              (this.appName = e.appName),
              (this.appID = e.appID),
              (this.link = e.link),
              (this.linkName = e.linkName),
              (this.tabIcon = e.tabIcon),
              (this.offlineImage = e.offlineImage),
              (this.gidEvent = e.gidEvent);
          }
        }
        (0, i.Cg)([o.sH], s.prototype, "bValid", void 0),
          (0, i.Cg)([o.sH], s.prototype, "stream", void 0),
          (0, i.Cg)([o.sH], s.prototype, "name", void 0),
          (0, i.Cg)([o.sH], s.prototype, "appName", void 0),
          (0, i.Cg)([o.sH], s.prototype, "appID", void 0),
          (0, i.Cg)([o.sH], s.prototype, "link", void 0),
          (0, i.Cg)([o.sH], s.prototype, "linkName", void 0),
          (0, i.Cg)([o.sH], s.prototype, "tabIcon", void 0),
          (0, i.Cg)([o.sH], s.prototype, "offlineImage", void 0),
          (0, i.Cg)([o.sH], s.prototype, "gidEvent", void 0);
        let l = new s({
          bValid: !1,
          stream: { 0: "#Broadcast_EnglishMain" },
          name: "",
          appName: "",
          appID: 0,
          link: "",
          linkName: "",
          tabIcon: "",
          offlineImage: "",
        });
        function c(e) {
          ("76561198115731852" != e &&
            "76561198115800463" != e &&
            "76561199804619576" != e &&
            "76561199781903331" != e) ||
            l.init({
              bValid: !0,
              stream: {
                "76561198115731852": "#Broadcast_Stream1",
                "76561198115800463": "#Broadcast_Stream2",
                "76561199804619576": "#Broadcast_Stream3",
                "76561199781903331": "#Broadcast_Stream4",
              },
              name: "Shanghai Major 2024",
              appID: 730,
              link: "https://store.steampowered.com/app/730/CounterStrike_2/",
              linkName: "Counter-Strike 2 on Steam",
              tabIcon:
                r.TS.CHAT_BASE_URL +
                "public/images/broadcast/cs2_major2024_sha_icon.png",
              offlineImage: "public/images/broadcast/cs2_major2024_sha.png",
            }),
            "76561197960266962" == e &&
              l.init({
                bValid: !0,
                stream: {},
                appName: "Winter Sale 2019",
                name: "Yule Log",
                appID: 0,
                link: "https://store.steampowered.com/",
                linkName: "View Sale Info Here!",
                tabIcon: a,
                offlineImage: "public/images/broadcast/winter_sale_2019.png",
              });
        }
      },
      60956: (e, t, n) => {
        "use strict";
        var i, o;
        n.d(t, { J8: () => r, X8: () => o }),
          (function (e) {
            (e[(e.Hover = 0)] = "Hover"),
              (e[(e.ClickPopup = 1)] = "ClickPopup"),
              (e[(e.ClickSurroundingRegion = 2)] = "ClickSurroundingRegion");
          })(i || (i = {})),
          (function (e) {
            (e[(e.Chat = 0)] = "Chat"),
              (e[(e.Notification = 1)] = "Notification"),
              (e[(e.Error = 2)] = "Error");
          })(o || (o = {}));
        class r {}
      },
      1785: (e, t, n) => {
        "use strict";
        n.d(t, { Mc: () => a, aM: () => s, ap: () => r, q_: () => o });
        const i = new (n(8805).wd)("video"),
          o = (i.Info, i.Debug);
        i.Error, i.Warning;
        function r(e) {
          let t = Math.floor(e / 3600),
            n = Math.floor(e / 60) % 60,
            i = Math.floor(e) % 60,
            o = i.toString();
          i < 10 && (o = "0" + o);
          let r = n.toString();
          return (
            n < 10 && t > 0 && (r = "0" + r),
            (t > 0 ? t + ":" : "") + r + ":" + o
          );
        }
        function a() {
          let e = !1;
          try {
            e = MediaSource.isTypeSupported(
              'video/mp4;codecs="avc1.4d4032,mp4a.40.2"',
            );
          } catch (e) {}
          return e;
        }
        function s() {
          let e = document
            .createElement("video")
            .canPlayType(
              'application/vnd.apple.mpegurl;codecs="avc1.64001f,mp4a.40.02"',
            );
          return "probably" === e || "maybe" === e;
        }
      },
      99374: (e, t, n) => {
        "use strict";
        n.d(t, { Zn: () => U, N_: () => N, lU: () => V, Br: () => B });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(56132),
          l = (n(37779), n(77765)),
          c = n(9907),
          m = n(74002),
          d = n(49912),
          u = n(69450),
          h = n(28574),
          p = n(17070),
          _ = n(1785),
          g = n(43669);
        function C(e, t) {
          let n = e.getElementsByTagName("MPD");
          return n && 1 == n.length ? n[0] : null;
        }
        function f(e, t) {
          for (let n = 0; n < e.children.length; n++) {
            let i = e.children[n];
            if (i.tagName == t) return i;
          }
          return null;
        }
        function S(e, t) {
          let n = e.getAttribute(t);
          if (!n) return null;
          let i = new Date(n);
          return "[object Date]" === Object.prototype.toString.call(i)
            ? i
            : null;
        }
        function v(e, t) {
          let n = e.getAttribute(t);
          if (!n) return null;
          let i = 0,
            o = n.match(/(\d*)H/);
          return (
            o && (i += 60 * parseFloat(o[1]) * 60),
            (o = n.match(/(\d*)M/)),
            o && (i += 60 * parseFloat(o[1])),
            (o = n.match(/(\d*\.?\d*)S/)),
            o && (i += parseFloat(o[1])),
            i
          );
        }
        function b(e, t) {
          let n = e.getAttribute(t);
          return n
            ? ((n = n.toLowerCase()), "true" == n || ("false" != n && null))
            : null;
        }
        function I(e, t) {
          let n = e.getAttribute(t);
          return n ? parseInt(n) : null;
        }
        function w(e, t) {
          let n = e.getAttribute(t);
          return n || "";
        }
        function y(e, t, n) {
          let i = {
            nTimeScale: I(e, "timescale"),
            nDuration: I(e, "duration"),
            nStartNumber: I(e, "startNumber"),
            strMedia: w(e, "media"),
            strInitialization: "",
          };
          return (
            t.bContainsGame
              ? (i.strInitialization = i.strMedia)
              : (i.strInitialization = w(e, "initialization")),
            i.nTimeScale &&
            i.nDuration &&
            i.nStartNumber &&
            i.strMedia &&
            i.strInitialization
              ? ((i.strMedia = T(i.strMedia, n)),
                (i.strInitialization = T(i.strInitialization, n)),
                i)
              : null
          );
        }
        function E(e, t, n) {
          return (e = (e = (e = e.replace("$RepresentationID$", t)).replace(
            "$Number$",
            n.toString(),
          )).replace(
            /\$Number%(\d+)d\$/g,
            (e, t) => (
              (t = Number.parseInt(t)),
              (Array(t).join("0") + n.toString()).slice(-t)
            ),
          ));
        }
        function D(e) {
          return e.startsWith("http://") || e.startsWith("https://");
        }
        function A(e, t) {
          let n = e;
          n.endsWith("/") || (n += "/");
          let i = t.startsWith("/") ? 1 : 0;
          return n + t.substring(i);
        }
        function T(e, t) {
          return D(e) || !D(t) ? e : A(t, e);
        }
        function M(e) {
          return (
            0 == e.rgRoles.length ||
            e.rgRoles.findIndex((e) => "main" == e) >= 0
          );
        }
        function R(e) {
          if (!e) return 0;
          let t = e.segmentTemplate;
          return 1e3 == t.nTimeScale
            ? t.nDuration
            : (t.nDuration / t.nTimeScale) * 1e3;
        }
        function k(e, t, n) {
          let i = R(t),
            o = n + ((1e3 * e.GetStartTime()) % i);
          return Math.floor(o / i) + t.segmentTemplate.nStartNumber;
        }
        function L(e) {
          return E(e.segmentTemplate.strInitialization, e.strID, 0);
        }
        class G {
          m_strType = void 0;
          m_nMinBufferTime = 0;
          m_dtAvailabilityStartTime = null;
          m_dtPublishTime = null;
          m_nMinimumUpdatePeriod = 0;
          m_nTimeShiftBufferDepth = 0;
          m_nMediaPresentationDuration = 0;
          m_strBaseURL = "";
          m_strStatsLink = "";
          m_strStalledLink = "";
          m_strEventLogLink = "";
          m_rgPeriods = null;
          m_tsLiveContentStart = 0;
          GetType() {
            return this.m_strType;
          }
          GetMinimumUpdatePeriod() {
            return this.m_nMinimumUpdatePeriod;
          }
          GetAvailabilityStartTime() {
            return this.m_dtAvailabilityStartTime;
          }
          GetPeriods() {
            return this.m_rgPeriods;
          }
          GetBaseURL() {
            return this.m_strBaseURL;
          }
          GetTimeShiftBufferDepth() {
            return this.m_nTimeShiftBufferDepth;
          }
          GetMinBufferTime() {
            return this.m_nMinBufferTime;
          }
          GetTimedTextAdaptionSet(e) {
            return e < 0 || e > this.m_rgPeriods.length
              ? []
              : this.m_rgPeriods[e].rgAdaptationSets.filter(
                  (e) => e.bIsTimedText,
                );
          }
          IsLiveContent() {
            return "dynamic" == this.GetType();
          }
          GetAdaptationByTrackID(e) {
            if (!this.m_rgPeriods || 0 == this.m_rgPeriods.length) return null;
            let t = this.m_rgPeriods[0];
            for (let n of t.rgAdaptationSets) if (e == n.strID) return n;
            return null;
          }
          GetVideoAdaption() {
            let e = this.m_rgPeriods[0];
            for (let t of e.rgAdaptationSets) if (t.bContainsVideo) return t;
            return null;
          }
          GetStartTime() {
            return !this.IsLiveContent() && this.m_rgPeriods.length > 0
              ? this.m_rgPeriods[0].nStart
              : 0;
          }
          GetEndTime() {
            if (!this.IsLiveContent()) {
              if (this.m_rgPeriods.length > 0 && this.m_rgPeriods[0].nDuration)
                return this.GetStartTime() + this.m_rgPeriods[0].nDuration;
              if (this.m_nMediaPresentationDuration > 0)
                return this.GetStartTime() + this.m_nMediaPresentationDuration;
            }
            return Number.MAX_VALUE;
          }
          GetLowestRepresentation(e) {
            let t = this.GetAdaptationByTrackID(e);
            if (!t) return null;
            let n = t.rgRepresentations[0];
            for (let e of t.rgRepresentations)
              e.nBandwidth < n.nBandwidth && (n = e);
            return n;
          }
          GetStatsLink() {
            return this.m_strStatsLink;
          }
          GetStalledLink() {
            return this.m_strStalledLink;
          }
          GetEventLink() {
            return this.m_strEventLogLink;
          }
          StartLiveContentNow(e) {
            this.m_tsLiveContentStart = performance.now() - e;
          }
          GetDurationSinceStarted() {
            return performance.now() - this.m_tsLiveContentStart;
          }
          ParseRepresentation(e, t, n, i) {
            const o = t;
            let r = {
                strID: w(e, "id"),
                strMimeType: w(e, "mimeType"),
                strCodecs: w(e, "codecs"),
                nBandwidth: I(e, "bandwidth"),
                segmentTemplate: null,
              },
              a = f(e, "SegmentTemplate");
            if (a) {
              let e = y(a, t, i);
              e && (r.segmentTemplate = e);
            } else r.segmentTemplate = { ...n };
            if (!r.segmentTemplate)
              return (
                (0, _.q_)("MPD - No segment template for representation"), null
              );
            if (o.bContainsVideo) {
              if (
                ((r.nWidth = I(e, "width")),
                (r.nHeight = I(e, "height")),
                (r.nFrameRate = I(e, "frameRate")),
                (0, _.q_)(
                  `representation: ${r.nWidth}w x ${r.nHeight}h x ${r.nFrameRate} fps`,
                ),
                !(r.strID && r.strMimeType && r.strCodecs && r.nBandwidth))
              )
                return (
                  (0, _.q_)("MPD - Representation Video Data Missing"), null
                );
            } else if (o.bContainsAudio) {
              r.nAudioSamplingRate = I(e, "audioSamplingRate");
              let t = f(e, "AudioChannelConfiguration");
              if (
                (t && (r.nAudioChannels = I(t, "value")),
                r.nAudioChannels || (r.nAudioChannels = 2),
                !(
                  r.strID &&
                  r.strMimeType &&
                  r.strCodecs &&
                  r.nAudioSamplingRate &&
                  r.nAudioChannels
                ))
              )
                return (
                  (0, _.q_)("MPD - Representation Audio Data Missing"), null
                );
            }
            return r;
          }
          BParse(e, t) {
            let n = new DOMParser().parseFromString(e, "application/xml"),
              i = C(n);
            if (!i) return !1;
            let o = i.getAttribute("type");
            if (
              ((this.m_nMinBufferTime = v(i, "minBufferTime")), "dynamic" == o)
            ) {
              if (
                ((this.m_strType = "dynamic"),
                (this.m_dtAvailabilityStartTime = S(
                  i,
                  "availabilityStartTime",
                )),
                (this.m_dtPublishTime = S(i, "publishTime")),
                (this.m_nMinimumUpdatePeriod = v(i, "minimumUpdatePeriod")),
                (this.m_nTimeShiftBufferDepth =
                  v(i, "timeShiftBufferDepth") || 0),
                !this.m_dtAvailabilityStartTime ||
                  !this.m_dtPublishTime ||
                  !this.m_nMinimumUpdatePeriod ||
                  null === this.m_nMinBufferTime)
              )
                return !1;
            } else {
              if ("static" != o) return (0, _.q_)("MPD - Unknown type"), !1;
              if (
                ((this.m_strType = "static"),
                (this.m_nMediaPresentationDuration = v(
                  i,
                  "mediaPresentationDuration",
                )),
                !this.m_nMinBufferTime || !this.m_nMediaPresentationDuration)
              )
                return (
                  (0, _.q_)(
                    "MPD - Missing Buffer Time or Presentation Duration",
                  ),
                  !1
                );
            }
            let r = f(i, "BaseURL");
            this.m_strBaseURL = r
              ? r.textContent
              : (function (e) {
                  if (!D(e)) return "";
                  let t = new URL(e),
                    n = t.pathname;
                  return (
                    (n.indexOf(".mpd") >= 0 || n.endsWith("/")) &&
                      (n = n.substring(0, n.lastIndexOf("/"))),
                    A(t.origin, n) + "/"
                  );
                })(t);
            let a = f(i, "Analytics");
            a &&
              ((this.m_strStatsLink = w(a, "statslink")),
              (this.m_strStalledLink = w(a, "stalledlink")),
              (this.m_strEventLogLink = w(a, "eventlink")));
            let s = n.getElementsByTagName("Period");
            if (0 == s.length) return !1;
            let l = s[0],
              c = {
                strID: w(l, "id"),
                nStart: v(l, "start"),
                nDuration: v(l, "duration"),
                rgAdaptationSets: [],
              };
            if (!c.strID || null === c.nStart)
              return (0, _.q_)("MPD - Missing Period Information."), !1;
            (this.m_rgPeriods = []), this.m_rgPeriods.push(c);
            let m = l.getElementsByTagName("AdaptationSet");
            for (let e = 0; e < m.length; e++) {
              let t = m[e],
                n = w(t, "description"),
                i = w(t, "lang"),
                o = {
                  bSegmentAlignment: b(t, "segmentAlignment"),
                  bIsTimedText: "text/vtt" == w(t, "mimeType"),
                  strLanguage: w(t, "lang"),
                  bContainsVideo: !1,
                  bContainsAudio: !1,
                  bContainsGame: !1,
                  strDescription: n || i,
                  strForceSub: w(t, "forceSub"),
                  strID: w(t, "id"),
                  rgRoles: [],
                  rgRepresentations: [],
                  thumbnails: null,
                };
              if ((c.rgAdaptationSets.push(o), o.bIsTimedText)) {
                o.rgRoles.push("subtitle");
                let e = t.getElementsByTagName("Role");
                for (let t = 0; t < e.length; t++) {
                  let n = w(e[t], "value");
                  n && "subtitle" != n && o.rgRoles.push(n);
                }
                let n = t.getElementsByTagName("Representation");
                for (let e = 0; e < n.length; e++) {
                  let t = n[e],
                    i = {
                      strID: w(t, "id"),
                      nBandwidth: I(t, "bandwidth"),
                      strClosedCaptionFile: "",
                    },
                    r = f(t, "BaseURL"),
                    a = r ? r.textContent : "";
                  if (!a) {
                    (0, _.q_)(
                      "Closed Caption File has no BaseURL for (id): " + i.strID,
                    );
                    continue;
                  }
                  (i.strClosedCaptionFile = E(a, i.strID, 0)),
                    i.strClosedCaptionFile.startsWith("http") ||
                      (i.strClosedCaptionFile =
                        this.m_strBaseURL + i.strClosedCaptionFile);
                  if ("store" == (0, p.yK)() || "dev" == p.TS.WEB_UNIVERSE) {
                    const e = new URL(i.strClosedCaptionFile).pathname.split(
                      "/video/",
                    )[1];
                    i.strClosedCaptionFile = e
                      ? p.TS.STORE_BASE_URL + "vtt/video/" + e
                      : null;
                  }
                  i.strClosedCaptionFile && o.rgRepresentations.push(i);
                }
                continue;
              }
              if (!o.bSegmentAlignment)
                return (
                  (0, _.q_)(
                    "MPD - Only segment aligned dash manifests is supported",
                  ),
                  !1
                );
              let r = t.getElementsByTagName("ContentComponent");
              for (let e = 0; e < r.length; e++) {
                let t = w(r[e], "contentType");
                "video" == t && (o.bContainsVideo = !0),
                  "audio" == t && (o.bContainsAudio = !0),
                  "game" == t && (o.bContainsGame = !0);
              }
              if (0 == r.length) {
                let e = w(t, "contentType");
                "video" == e && (o.bContainsVideo = !0),
                  "audio" == e && (o.bContainsAudio = !0);
              }
              if (o.bContainsVideo) {
                let e = f(t, "Thumbnails");
                if (e) {
                  let t = I(e, "sheet"),
                    n = I(e, "period");
                  o.thumbnails = {
                    nPeriod: n,
                    strTemplate: w(e, "template"),
                    nSheet: t,
                    nSheetSeconds: t * n,
                  };
                }
              }
              let a = t.getElementsByTagName("Role");
              for (let e = 0; e < a.length; e++) {
                let t = w(a[e], "value");
                t && o.rgRoles.push(t);
              }
              let s = null,
                l = f(t, "SegmentTemplate");
              if (l) {
                let e = y(l, o, this.m_strBaseURL);
                if (!e)
                  return (
                    (0, _.q_)(
                      "MPD - Failed to parse found Adaptation template",
                    ),
                    !1
                  );
                s = e;
              }
              let d = t.getElementsByTagName("Representation");
              for (let e = 0; e < d.length; e++) {
                let t = d[e],
                  n = this.ParseRepresentation(t, o, s, this.m_strBaseURL);
                if (!n) return !1;
                o.rgRepresentations.push(n);
              }
            }
            return !0;
          }
          BUpdate(e) {
            let t = new DOMParser().parseFromString(e, "application/xml"),
              n = C(t);
            if (!n) return !1;
            if (this.IsLiveContent()) {
              switch (w(n, "type")) {
                case "dynamic":
                  break;
                case "static":
                  (0, _.q_)("Converting MPD from dynamic to static"),
                    (this.m_strType = "static"),
                    (this.m_nMediaPresentationDuration = v(
                      n,
                      "mediaPresentationDuration",
                    )),
                    (this.m_nMinBufferTime = v(n, "minBufferTime")),
                    (this.m_dtAvailabilityStartTime = null),
                    (this.m_dtPublishTime = null);
              }
              let e = t.getElementsByTagName("Period");
              if (0 == e.length) return !1;
              let i = e[0].getElementsByTagName("AdaptationSet");
              for (let e = 0; e < i.length; e++) {
                let t = i[e],
                  n = w(t, "id"),
                  o = this.GetAdaptationByTrackID(n);
                if (o) {
                  let e = null,
                    n = f(t, "SegmentTemplate");
                  if (n) {
                    let t = y(n, o, this.m_strBaseURL);
                    if (!t)
                      return (
                        (0, _.q_)(
                          "MPD - Failed to parse found Adaptation template",
                        ),
                        !1
                      );
                    e = t;
                  }
                  let i = t.getElementsByTagName("Representation");
                  if (i.length > 1)
                    for (let t = 0; t < i.length; t++) {
                      let n = i[t],
                        r = this.ParseRepresentation(
                          n,
                          o,
                          e,
                          this.m_strBaseURL,
                        );
                      if (!r)
                        return (
                          (0, _.q_)("MPD - Failed to parse representation"), !1
                        );
                      let a = null;
                      for (let e of o.rgRepresentations)
                        if (r.strID == e.strID) {
                          a = e;
                          break;
                        }
                      a
                        ? (a.segmentTemplate.strMedia =
                            r.segmentTemplate.strMedia)
                        : o.rgRepresentations.push(r);
                    }
                  break;
                }
              }
            }
            let i = f(n, "Analytics");
            return (
              i &&
                ((this.m_strStatsLink = w(i, "statslink")),
                (this.m_strStalledLink = w(i, "stalledlink")),
                (this.m_strEventLogLink = w(i, "eventlink"))),
              !0
            );
          }
        }
        var F;
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.Append = 1)] = "Append"),
            (e[(e.Remove = 2)] = "Remove");
        })(F || (F = {}));
        class P {
          m_callbacks = null;
          m_mpd = null;
          m_adaptation = null;
          m_mediaSource = null;
          m_sourceBuffer = null;
          m_nTrackBufferMS = 0;
          m_representation = null;
          m_eBufferUpdate = F.None;
          m_rgBufferedSegments = [];
          m_bNeedInitSegment = !0;
          m_nNextSegment = 0;
          m_bRemoveBufferState = !1;
          m_bSeekInProgress = !1;
          m_tsLastBufferRemove = 0;
          m_schNextDownload = new c.LU();
          m_xhrDownload = null;
          m_listeners = new c.Ji();
          m_rgDownloadLog = [];
          m_nCurDownloadProgress = 0;
          m_nCurDownloadBitrate = 0;
          m_stats;
          m_nNumConsecutiveDownloadGones = 0;
          m_rgGameDataFrames = [];
          m_statsGameData = null;
          constructor(e, t, n, i) {
            (this.m_callbacks = e),
              (this.m_mpd = t),
              (this.m_adaptation = n),
              (this.m_stats = i);
          }
          SetMediaSource(e) {
            this.m_mediaSource = e;
          }
          SetBufferMS(e) {
            this.m_nTrackBufferMS = e;
          }
          GetRepresentationsCount() {
            return this.m_adaptation.rgRepresentations.length;
          }
          GetRepresentationByID(e) {
            for (let t of this.m_adaptation.rgRepresentations)
              if (t.strID == e) return t;
            return null;
          }
          GetNumConsecutiveDownloadGones() {
            return this.m_nNumConsecutiveDownloadGones;
          }
          ContainsVideo() {
            return this.m_adaptation.bContainsVideo;
          }
          ContainsAudio() {
            return this.m_adaptation.bContainsAudio;
          }
          ContainsGame() {
            return this.m_adaptation.bContainsGame;
          }
          GetAdaptation() {
            return this.m_adaptation;
          }
          GetBandwidthRequired() {
            return this.m_representation.nBandwidth;
          }
          GetCurrentSegmentDurationMS() {
            return R(this.m_representation);
          }
          GetCurrentSegmentInitializationURL() {
            return L(this.m_representation);
          }
          BIsCurrentRepresentation(e) {
            return e && e.strID == this.m_representation.strID;
          }
          GetSourceBufferTimeRanges() {
            return this.m_sourceBuffer.buffered;
          }
          GetEstimatedAudioRate() {
            return this.m_representation && this.ContainsAudio()
              ? this.m_representation.nBandwidth
              : 0;
          }
          GetDebugName() {
            let e = [];
            return (
              this.ContainsVideo()
                ? e.push("Video")
                : this.ContainsAudio()
                  ? e.push("Audio")
                  : this.ContainsGame() && e.push("Game"),
              e.join(" & ") +
                ":" +
                this.m_callbacks.GetCurrentPlayTime().toFixed(3).toString()
            );
          }
          GetMaxSegment() {
            if (this.m_mpd.IsLiveContent()) return Number.MAX_VALUE;
            {
              let e = this.m_mpd.GetEndTime() - this.m_mpd.GetStartTime();
              return k(this.m_mpd, this.m_representation, 1e3 * e);
            }
          }
          GetAmountBufferedInPlayerMS(e) {
            if (!this.m_sourceBuffer) return 0;
            let t = this.m_sourceBuffer.buffered;
            if (0 == t.length) return 0;
            e < t.start(0) && (e = t.start(0)), e > t.end(0) && (e = t.end(0));
            let n = t.end(0) - e;
            return Math.floor(1e3 * n);
          }
          GetAmountBufferedMS(e) {
            let t = this.GetAmountBufferedInPlayerMS(e);
            for (let e of this.m_rgBufferedSegments) t += e.nDurationMS;
            return t;
          }
          ChangeRepresentation(e) {
            if (this.m_adaptation.rgRepresentations.indexOf(e) < 0) return null;
            if (this.m_representation == e) return null;
            if (
              (this.ContainsVideo() &&
                (0, _.q_)(
                  `${this.GetDebugName()} changing representation to ${e.nHeight || 0}p at ${Math.ceil(e.nBandwidth / 1e3)}KB for segment ${this.m_nNextSegment}`,
                ),
              (this.m_representation = e),
              (this.m_bNeedInitSegment = !this.ContainsGame()),
              this.m_stats.SetRepresentation(e),
              this.ContainsGame())
            )
              return e;
            if (!this.m_sourceBuffer) {
              const t = e.strMimeType + ";codecs=" + e.strCodecs;
              try {
                (this.m_sourceBuffer = this.m_mediaSource.addSourceBuffer(t)),
                  (0, _.q_)(t),
                  this.m_listeners.AddEventListener(
                    this.m_sourceBuffer,
                    "updateend",
                    this.OnSourceBufferUpdateEnd,
                  ),
                  this.m_listeners.AddEventListener(
                    this.m_sourceBuffer,
                    "error",
                    this.OnSourceBufferError,
                  ),
                  this.m_listeners.AddEventListener(
                    this.m_sourceBuffer,
                    "abort",
                    this.OnSourceBufferAbort,
                  );
              } catch (e) {
                if (
                  !(e instanceof DOMException && "NotSupportedError" === e.name)
                )
                  throw e;
                this.OnMediaUnsupportedError(t);
              }
            }
            return e;
          }
          Close() {
            this.m_listeners.Unregister(),
              (this.m_sourceBuffer = null),
              this.ForceStopDownloads(),
              (this.m_eBufferUpdate = F.None),
              (this.m_bRemoveBufferState = !1),
              (this.m_callbacks = null),
              (this.m_mpd = null),
              (this.m_adaptation = null),
              (this.m_mediaSource = null),
              (this.m_nTrackBufferMS = 0),
              (this.m_representation = null),
              (this.m_rgBufferedSegments = []),
              (this.m_bNeedInitSegment = !0),
              (this.m_nNextSegment = 0),
              (this.m_bSeekInProgress = !1),
              (this.m_tsLastBufferRemove = 0),
              (this.m_rgDownloadLog = []),
              (this.m_stats = null),
              (this.m_rgGameDataFrames = []),
              (this.m_statsGameData = null);
          }
          GetActiveDownloads() {
            return this.m_xhrDownload ? 1 : 0;
          }
          GetActiveDownloadProgress() {
            return this.GetActiveDownloads() ? this.m_nCurDownloadProgress : 0;
          }
          OnSourceBufferUpdateEnd(e) {
            let t = this.m_callbacks.GetCurrentPlayTime(),
              n = this.GetAmountBufferedInPlayerMS(t);
            (0, _.q_)(
              `${this.GetDebugName()} OnSourceBufferUpdateEnd: [playback=${t}][buffered=${n}][start=${this.GetBufferedStart()}][end=${this.GetBufferedEnd()}]`,
            );
            let i = this.m_eBufferUpdate;
            (this.m_eBufferUpdate = F.None),
              i == F.Append && this.m_callbacks.OnSegmentDownloaded(this),
              this.m_bSeekInProgress &&
                i == F.Remove &&
                !this.m_bRemoveBufferState &&
                this.ContinueSeek(),
              this.UpdateBuffer();
          }
          OnMediaUnsupportedError(e) {
            console.log("OnMediaUnsupportedError", this.GetDebugName(), e),
              this.m_callbacks &&
                this.m_callbacks.OnMediaUnsupportedError(this, e);
          }
          OnSourceBufferError(e) {
            console.log("OnSourceBufferError", this.GetDebugName(), e),
              this.m_callbacks && this.m_callbacks.OnMediaSourceError(this);
          }
          OnSourceBufferAbort(e) {
            console.log("OnSourceBufferAbort", this.GetDebugName(), e);
          }
          ScheduleNextDownload() {
            if (this.m_bNeedInitSegment) return void this.DownloadNextSegment();
            if ((this.m_schNextDownload.Cancel(), this.m_xhrDownload))
              return void (0, _.q_)(
                `${this.GetDebugName()} ScheduleNextDownload - download already going`,
              );
            if (this.m_bSeekInProgress)
              return void (0, _.q_)(
                `${this.GetDebugName()} ScheduleNextDownload - seeking`,
              );
            if (this.m_nNextSegment > this.GetMaxSegment())
              return void (0, _.q_)(
                `${this.GetDebugName()} ScheduleNextDownload - reached max segment`,
              );
            let e = this.m_callbacks.GetCurrentPlayTime(),
              t = this.m_callbacks.GetPlaybackRate(),
              n = (function (e, t, n) {
                if (!e.IsLiveContent()) return 0;
                let i = R(t);
                return (
                  (n - t.segmentTemplate.nStartNumber + 1) * i -
                  e.GetDurationSinceStarted()
                );
              })(this.m_mpd, this.m_representation, this.m_nNextSegment);
            if (n > 0)
              return (
                (0, _.q_)(
                  `${this.GetDebugName()} ScheduleNextDownload - segment in future`,
                ),
                void this.m_schNextDownload.Schedule(
                  n,
                  this.ScheduleNextDownload,
                )
              );
            let i = this.GetAmountBufferedMS(e);
            if ((t > 1 && (i /= t), i < 4e4))
              return (
                (0, _.q_)(
                  `${this.GetDebugName()} ScheduleNextDownload - have ${i} buffered, desire 40000 - downloading now`,
                ),
                void this.DownloadNextSegment()
              );
            let o = 1.1 * R(this.m_representation),
              r = this.GetAmountBufferedInPlayerMS(
                this.m_callbacks.GetCurrentPlayTime(),
              );
            (0, _.q_)(
              `${this.GetDebugName()} ScheduleNextDownload - buffered, schedule later [sleep=${o}ms][buffer=${r}]`,
            ),
              this.m_schNextDownload.Schedule(o, this.ScheduleNextDownload);
          }
          DownloadNextSegment() {
            this.m_schNextDownload.Cancel();
            let e = "",
              t = 0,
              n = !1;
            if (this.m_bNeedInitSegment)
              (e = L(this.m_representation)), (t = 0), (n = !0);
            else {
              if (this.m_nNextSegment < 0)
                return void console.error(
                  "Attempting to download negative segment:",
                  this.m_nNextSegment,
                );
              (i = this.m_representation),
                (o = this.m_nNextSegment),
                (e = E(i.segmentTemplate.strMedia, i.strID, o)),
                (t = R(this.m_representation)),
                this.m_nNextSegment++;
            }
            var i, o;
            this.DownloadSegment(this.m_representation.strID, n, e, t);
          }
          async DownloadSegment(e, t, n, i, o = performance.now()) {
            (0, l.w)(
              null === this.m_xhrDownload,
              "Trying to download another segment while a download is already in flight",
            ),
              this.m_schNextDownload.Cancel();
            const a = this.m_callbacks.GetCDNAuthURLParameter();
            a && (n += a),
              (0, _.q_)(`${this.GetDebugName()} Downloading: ` + n);
            let s,
              c = null,
              m = performance.now(),
              d = r().CancelToken.source();
            try {
              (this.m_nCurDownloadProgress = 0), (this.m_xhrDownload = d);
              let e = {
                cancelToken: this.m_xhrDownload.token,
                timeout: 15e3,
                responseType: "arraybuffer",
                onDownloadProgress: (e) => {
                  (this.m_nCurDownloadProgress = e.loaded / e.total),
                    (this.m_nCurDownloadBitrate =
                      (8 * e.loaded * 1e3) /
                      Math.max(1, performance.now() - m));
                },
              };
              this.ContainsGame() && (e.responseType = "json"),
                (c = await r().get(n, e));
            } catch (e) {
              (s = e), (c = e.response);
            }
            if (!this.m_xhrDownload || this.m_xhrDownload != d)
              return void (0, _.q_)(`Throwing away cancelled download: ${n}`);
            s &&
              (0, _.q_)(
                `${this.GetDebugName()} Failed to download segment: ${n}`,
                s,
              );
            let u = performance.now(),
              h = Math.floor(performance.now() - m),
              p = c ? c.status : 0;
            if (((this.m_xhrDownload = null), this.m_bSeekInProgress))
              return (
                (0, _.q_)(
                  `${this.GetDebugName()} Throwing away download due to seek: ${n}`,
                ),
                void this.ContinueSeek()
              );
            if (!c || 200 != c.status)
              return this.ContainsGame()
                ? void this.ScheduleNextDownload()
                : (this.m_stats.LogSegmentDownloadFailure(
                    h,
                    c ? c.status : 444,
                  ),
                  u - o > 9e3
                    ? ((0, _.q_)(
                        `${this.GetDebugName()} HTTP download failed.. stopping loader: ${u - o}ms`,
                      ),
                      void this.DownloadFailed())
                    : 410 == p
                      ? ((this.m_nNumConsecutiveDownloadGones += 1),
                        (0, _.q_)(
                          `${this.GetDebugName()} HTTP download gone.. informing the player: ${u - o}ms`,
                        ),
                        void this.DownloadGone())
                      : void this.m_schNextDownload.Schedule(500, () =>
                          this.DownloadSegment(e, t, n, i, o),
                        ));
            if (
              ((this.m_nNumConsecutiveDownloadGones = 0),
              t && (this.m_bNeedInitSegment = !1),
              this.ContainsGame())
            ) {
              let e = c.data;
              this.m_rgGameDataFrames || (this.m_rgGameDataFrames = []);
              let t = Number.MIN_VALUE,
                n = Number.MIN_VALUE;
              this.m_rgGameDataFrames.length > 0 &&
                ((t =
                  this.m_rgGameDataFrames[this.m_rgGameDataFrames.length - 1]
                    .pts),
                (n =
                  this.m_rgGameDataFrames[this.m_rgGameDataFrames.length - 1]
                    .gdi));
              const i = e.frame;
              i &&
                (i.pts && i.gamedata && i.gdi
                  ? i.pts <= t
                    ? (0, _.q_)("Invalid game pts")
                    : i.gdi != n && this.m_rgGameDataFrames.push(i)
                  : (0, _.q_)("Invalid game data")),
                this.TrimGameDataIfNecessary(),
                (this.m_statsGameData = {
                  nAppID: e.appid,
                  ulBroadcastRelayID: e.broadcastrelayid,
                  nSegmentID: e.segmentid,
                });
            } else {
              let t = new Uint8Array(c.data);
              this.m_rgBufferedSegments.push({
                nDurationMS: i,
                data: t,
                representationStrID: e,
              }),
                this.LogDownload(m, t.length),
                this.UpdateBuffer(),
                (0, _.q_)(
                  `HTTP ${p} (${h}ms, ${Math.floor(t.length / 1e3)}k): ${n}`,
                );
            }
            this.ScheduleNextDownload();
          }
          DownloadFailed() {
            this.m_callbacks.OnSegmentDownloadFailed(this);
          }
          DownloadGone() {
            this.m_callbacks.OnSegmentDownloadGone(this);
          }
          TrimGameDataIfNecessary() {}
          UpdateBuffer() {
            if (this.m_eBufferUpdate != F.None) return;
            if (this.m_bRemoveBufferState) return void this.RemoveAllBuffers();
            if (!this.m_sourceBuffer)
              return void (0, _.q_)("No source buffer?");
            if (this.m_rgBufferedSegments.length > 0) {
              try {
                this.m_eBufferUpdate = F.Append;
                let e = this.m_rgBufferedSegments[0];
                this.m_sourceBuffer.appendBuffer(e.data),
                  this.m_rgBufferedSegments.splice(0, 1);
              } catch (e) {
                "QuotaExceededError" === e.name
                  ? ((this.m_eBufferUpdate = F.None),
                    (0, _.q_)(
                      `${this.GetDebugName()} Buffer - QuotaExceededError`,
                    ))
                  : (0, _.q_)(`${this.GetDebugName()} Buffer - Exception`, e);
              }
              return;
            }
            let e = performance.now();
            if (
              !this.m_bSeekInProgress &&
              e - this.m_tsLastBufferRemove > 1e4
            ) {
              let t = this.GetBufferedStart(),
                n = this.m_callbacks.GetCurrentPlayTime() - 40;
              if (t < n) {
                let i = Math.min(this.GetBufferedEnd(), n);
                return void (
                  i != t &&
                  ((this.m_eBufferUpdate = F.Remove),
                  this.m_sourceBuffer.remove(t, i),
                  (this.m_tsLastBufferRemove = e))
                );
              }
            }
          }
          RemoveAllBuffers() {
            this.m_rgBufferedSegments = [];
            let e = 0;
            if (this.m_sourceBuffer) {
              let t = this.m_sourceBuffer.buffered;
              for (let n = 0; n < t.length; n++) e < t.end(n) && (e = t.end(n));
            }
            (this.m_bRemoveBufferState = !1),
              (this.m_eBufferUpdate = F.Remove),
              0 != e
                ? this.m_sourceBuffer.remove(0, e + 1)
                : this.OnSourceBufferUpdateEnd(null);
          }
          GetBufferedStart() {
            return this.m_sourceBuffer &&
              this.m_sourceBuffer.buffered &&
              0 != this.m_sourceBuffer.buffered.length
              ? this.m_sourceBuffer.buffered.start(0)
              : 0;
          }
          GetBufferedEnd() {
            return this.m_sourceBuffer &&
              this.m_sourceBuffer.buffered &&
              0 != this.m_sourceBuffer.buffered.length
              ? this.m_sourceBuffer.buffered.end(0)
              : 0;
          }
          ForceStopDownloads() {
            this.m_schNextDownload.Cancel(),
              this.m_xhrDownload &&
                (this.m_xhrDownload.cancel(), (this.m_xhrDownload = null));
          }
          ForceRestartDownload() {
            this.ForceStopDownloads(), this.ScheduleNextDownload();
          }
          Seek(e) {
            let t = this.GetBufferedStart(),
              n = this.GetBufferedEnd(),
              i = e < t || e > n;
            if (
              (0 == t && 0 == n && (i = !0),
              (0, _.q_)(
                `${this.GetDebugName()} making an ${i ? "unbuffered" : "buffered"} seek to ${e}`,
              ),
              !this.m_bSeekInProgress && !i && !this.m_bNeedInitSegment)
            )
              return void this.ScheduleNextDownload();
            (this.m_bSeekInProgress = !0), this.ForceStopDownloads();
            const o = e - this.m_mpd.GetStartTime();
            let r = k(this.m_mpd, this.m_representation, 1e3 * o);
            if (
              ((this.m_nNextSegment = Math.min(r, this.GetMaxSegment())),
              (0, _.q_)(
                "Seek To Next Segment: " +
                  this.m_nNextSegment +
                  " at approx. " +
                  (0, _.ap)(
                    ((this.m_nNextSegment - 1) *
                      this.GetCurrentSegmentDurationMS()) /
                      1e3,
                  ) +
                  " seconds.",
              ),
              this.ContainsGame())
            )
              return (
                (this.m_bSeekInProgress = !1),
                (this.m_rgGameDataFrames = []),
                void this.ScheduleNextDownload()
              );
            (this.m_bRemoveBufferState = !0), this.UpdateBuffer();
          }
          ContinueSeek() {
            this.m_bSeekInProgress &&
              (this.m_eBufferUpdate == F.Remove ||
                this.m_bRemoveBufferState ||
                ((this.m_bSeekInProgress = !1), this.ScheduleNextDownload()));
          }
          BHasEnoughBuffered(e) {
            if (this.m_bSeekInProgress) return !1;
            if (this.ContainsGame()) return !0;
            let t =
              !this.m_xhrDownload &&
              !this.m_schNextDownload.IsScheduled() &&
              this.m_nNextSegment > this.GetMaxSegment();
            return (
              this.GetAmountBufferedInPlayerMS(e) >= this.m_nTrackBufferMS || t
            );
          }
          LogDownload(e, t) {
            this.m_rgDownloadLog.length >= 4 && this.m_rgDownloadLog.shift();
            let n = performance.now() - e;
            n <= 0 ||
              (this.m_rgDownloadLog.push({ cubData: t, nDownloadMS: n }),
              this.m_stats.LogDownload(t, n));
          }
          GetDownloadHistory() {
            return this.m_rgDownloadLog;
          }
          GetAvgDownloadRate() {
            let e = 0,
              t = 0;
            for (let n of this.m_rgDownloadLog)
              (e += n.nDownloadMS), (t += n.cubData);
            return e <= 0
              ? this.m_nCurDownloadBitrate && this.GetActiveDownloads() > 0
                ? this.m_nCurDownloadBitrate
                : 0
              : (8 * t * 1e3) / e;
          }
          GetGameDataFrames() {
            return this.m_rgGameDataFrames;
          }
          GetLatestGameDataFrameAppID() {
            return this.m_statsGameData && this.m_statsGameData.nAppID
              ? this.m_statsGameData.nAppID
              : 0;
          }
        }
        (0, i.Cg)([u.o], P.prototype, "OnSourceBufferUpdateEnd", null),
          (0, i.Cg)([u.o], P.prototype, "OnMediaUnsupportedError", null),
          (0, i.Cg)([u.o], P.prototype, "OnSourceBufferError", null),
          (0, i.Cg)([u.o], P.prototype, "OnSourceBufferAbort", null),
          (0, i.Cg)([u.o], P.prototype, "ScheduleNextDownload", null),
          (0, i.Cg)([u.o], P.prototype, "DownloadNextSegment", null),
          (0, i.Cg)([u.o], P.prototype, "DownloadFailed", null),
          (0, i.Cg)([u.o], P.prototype, "DownloadGone", null);
        const B = 5,
          x = "auto";
        var O, N, V;
        !(function (e) {
          (e[(e.HAVE_NOTHING = 0)] = "HAVE_NOTHING"),
            (e[(e.HAVE_METADATA = 1)] = "HAVE_METADATA"),
            (e[(e.HAVE_CURRENT_DATA = 2)] = "HAVE_CURRENT_DATA"),
            (e[(e.HAVE_FUTURE_DATA = 3)] = "HAVE_FUTURE_DATA"),
            (e[(e.HAVE_ENOUGH_DATA = 4)] = "HAVE_ENOUGH_DATA");
        })(O || (O = {})),
          (function (e) {
            (e[(e.Invalid = 0)] = "Invalid"),
              (e[(e.StreamGone = 1)] = "StreamGone");
          })(N || (N = {})),
          (function (e) {
            (e[(e.Absolute = 0)] = "Absolute"),
              (e[(e.FromAvailableStart = 1)] = "FromAvailableStart");
          })(V || (V = {}));
        class U {
          m_elVideo = null;
          m_strMPD = "";
          m_strHLS = "";
          m_strCDNAuthURLParameters = null;
          m_schUpdateMPD = new c.LU();
          m_xhrUpdateMPD;
          m_mpd;
          m_bUseHLSManifest = !1;
          m_strVideoAdaptationID = "";
          m_strAudioAdaptationID = "";
          m_strGameAdaptationID = "";
          m_rgLoaders = [];
          m_mediaSource = null;
          m_nTrackBufferMS = 0;
          m_nLimitFPS = 0;
          m_bIsBuffering = !0;
          m_seekingToTime = null;
          m_listeners = new c.Ji();
          m_bFirstPlay = !0;
          m_bPlaybackStarted = !1;
          m_nTimedText = 0;
          m_schGameDataEventTrigger = new c.LU();
          m_schReportPlayerTrigger = new c.LU();
          m_nGameDataLastFramePTS = -1;
          m_bStatsViewVisible = !1;
          m_schCaptureDisplayStatsTrigger = new c.LU();
          m_videoRepSelected = null;
          m_timedTextRepSelected = null;
          m_stats = new g._L();
          m_bClosing = !1;
          m_hlsTimeOffset = 0;
          m_bUserPlayChoice = !0;
          m_bUserLiveEdgeChoice = !0;
          m_schFirstFrameThrottler = new c.LU();
          m_bookMarkAdapter = null;
          m_schBookmarkUpdater = new c.LU();
          constructor(e, t = !1) {
            (0, a.Gn)(this),
              (this.m_elVideo = e),
              this.m_schReportPlayerTrigger.Schedule(
                3e4,
                this.ReportPlayerStats,
              ),
              (this.m_bUseHLSManifest = t);
          }
          CalcVideoStartRelativeToSystemClock(e) {
            let t =
              (e ? new Date(e).getTime() : Date.now()) -
              this.m_mpd.GetAvailabilityStartTime().getTime();
            this.m_mpd.StartLiveContentNow(t), (0, _.q_)("server time: " + e);
          }
          GetMPDURL() {
            return this.m_strMPD;
          }
          async PlayMPD(e, t, n, i) {
            (this.m_strMPD = e),
              (this.m_strHLS = n),
              (this.m_strCDNAuthURLParameters = t);
            let o = await this.DownloadMPD();
            if (o)
              if (((this.m_mpd = new G()), this.m_mpd.BParse(o.data, e))) {
                if (
                  (this.IsLiveContent() &&
                    (this.m_mpd.GetMinimumUpdatePeriod() > 0 &&
                      this.m_schUpdateMPD.Schedule(
                        1e3 * this.m_mpd.GetMinimumUpdatePeriod(),
                        this.UpdateMPD,
                      ),
                    this.CalcVideoStartRelativeToSystemClock(o.headers.date)),
                  this.m_bUseHLSManifest)
                )
                  return (
                    (this.m_elVideo.src = this.m_strHLS),
                    this.m_elVideo.addEventListener("loadedmetadata", () => {
                      (this.m_bIsBuffering = !1), this.BeginPlayback();
                    }),
                    void document.addEventListener(
                      "visibilitychange",
                      this.OnVisibilityChange,
                    )
                  );
                this.BCreateLoaders()
                  ? (this.InitVideoControl(), this.InitTimedText(i))
                  : this.CloseWithError(
                      "playbackerror",
                      "Failed to create segment loaders",
                    );
              } else
                this.CloseWithError(
                  "playbackerror",
                  "Failed to parse MPD file",
                  this.m_strMPD,
                );
          }
          InitTimedText(e) {
            (this.m_nTimedText = 0),
              this.m_mpd.GetTimedTextAdaptionSet(0).forEach((t) => {
                let n = (0, s.sf)(p.TS.LANGUAGE);
                if (
                  t.rgRepresentations.length > 0 &&
                  t.rgRepresentations[0].strClosedCaptionFile &&
                  t.strLanguage in m.bi
                ) {
                  const i = document.createElement("track");
                  (i.kind = "subtitles"),
                    (i.label = (0, m.we)(
                      "#Language_" + (0, s.Lg)(m.bi[t.strLanguage]),
                    )),
                    (i.srclang = t.strLanguage),
                    (i.src = t.rgRepresentations[0].strClosedCaptionFile),
                    (this.m_nTimedText += 1),
                    (!e && 0 == n) ||
                      m.bi[t.strLanguage] != n ||
                      ((i.default = !0),
                      (this.m_timedTextRepSelected = t.rgRepresentations[0])),
                    this.m_elVideo.appendChild(i);
                }
              });
          }
          SetSubtitles(e) {
            let t = null;
            for (let n = 0; n < this.m_elVideo.textTracks.length; n++) {
              const i = this.m_elVideo.textTracks[n];
              if (m.bi[i.language] == e) {
                let e = this.GetTimeTextAdaptions(0).filter(
                  (e) => e.strLanguage == i.language,
                );
                e &&
                  e.length > 0 &&
                  e[0].rgRepresentations &&
                  (t = e[0].rgRepresentations[0]),
                  (i.mode = "showing");
              } else i.mode = "disabled";
            }
            this.m_timedTextRepSelected = t;
          }
          PlayWebRTC(e, t, n, i, o) {}
          OnVisibilityChange() {
            "visible" === document.visibilityState &&
              (this.m_elVideo.src = this.m_strHLS);
          }
          Close() {
            if (
              ((this.m_bClosing = !0),
              this.m_listeners.Unregister(),
              this.m_bUseHLSManifest &&
                document.removeEventListener(
                  "visibilitychange",
                  this.OnVisibilityChange,
                ),
              this.StopDownloads(),
              this.m_elVideo && this.m_elVideo.pause(),
              this.m_mediaSource)
            ) {
              try {
                "closed" != this.m_mediaSource.readyState &&
                  this.m_mediaSource.endOfStream();
              } catch (e) {}
              this.m_mediaSource = null;
            }
            (this.m_bIsBuffering = !0),
              (this.m_elVideo = null),
              (this.m_strMPD = ""),
              (this.m_mpd = null),
              (this.m_bUseHLSManifest = !1),
              (this.m_strVideoAdaptationID = ""),
              (this.m_strAudioAdaptationID = ""),
              (this.m_strGameAdaptationID = ""),
              (this.m_nTrackBufferMS = 0),
              (this.m_nLimitFPS = 0),
              (this.m_seekingToTime = null),
              (this.m_nGameDataLastFramePTS = -1),
              (this.m_bStatsViewVisible = !1),
              (this.m_videoRepSelected = null),
              this.m_stats && this.m_stats.GetFPSMonitor().Close(),
              (this.m_stats = null),
              (this.m_bFirstPlay = !0),
              (this.m_bPlaybackStarted = !1);
          }
          StopDownloads() {
            this.m_xhrUpdateMPD &&
              (this.m_xhrUpdateMPD.cancel(), (this.m_xhrUpdateMPD = null)),
              this.m_schUpdateMPD.Cancel(),
              this.m_schGameDataEventTrigger.Cancel(),
              this.m_schReportPlayerTrigger.Cancel(),
              this.m_schCaptureDisplayStatsTrigger.Cancel(),
              this.m_schFirstFrameThrottler.Cancel(),
              this.m_schBookmarkUpdater.Cancel(),
              this.m_elVideo &&
                1 != this.m_elVideo.playbackRate &&
                (this.m_elVideo.playbackRate = 1);
            for (let e of this.m_rgLoaders) e.Close();
            (this.m_rgLoaders = []), (this.m_bIsBuffering = !0);
          }
          IsBuffering() {
            return this.m_bIsBuffering;
          }
          IsLiveContent() {
            return !!this.m_mpd && this.m_mpd.IsLiveContent();
          }
          async DownloadMPD() {
            if (this.m_xhrUpdateMPD)
              return (0, l.w)(!1, "Multiple MPD download requests"), null;
            let e = performance.now();
            for (; performance.now() - e < 3e4; ) {
              let e = null;
              try {
                this.m_xhrUpdateMPD = r().CancelToken.source();
                const t =
                  this.m_strMPD +
                  (this.m_strCDNAuthURLParameters
                    ? this.m_strCDNAuthURLParameters
                    : "");
                e = await r().get(t, {
                  cancelToken: this.m_xhrUpdateMPD.token,
                });
              } catch (e) {}
              if (((this.m_xhrUpdateMPD = null), this.m_bClosing)) return null;
              if (e && 200 == e.status) return e;
              if (e && 410 == e.status)
                return (
                  this.CloseWithError(
                    "playbackerror",
                    "Failed to download MPD: 410 Gone",
                  ),
                  null
                );
              (0, _.q_)("Failed to download, will retry: " + this.m_strMPD),
                await (0, h.IP)(200);
            }
            return (0, _.q_)("Failed to download: " + this.m_strMPD), null;
          }
          async UpdateMPD() {
            (0, _.q_)("Updating MPD in player from: " + this.m_strMPD);
            let e = await this.DownloadMPD();
            e &&
              (this.m_mpd.BUpdate(e.data)
                ? (this.IsLiveContent() &&
                    this.CalcVideoStartRelativeToSystemClock(e.headers.date),
                  this.m_stats.SetAnalyticLinks(
                    this.m_mpd.GetStatsLink(),
                    this.m_mpd.GetStalledLink(),
                    this.m_mpd.GetEventLink(),
                  ),
                  this.m_mpd.GetMinimumUpdatePeriod() > 0 &&
                    this.m_schUpdateMPD.Schedule(
                      1e3 * this.m_mpd.GetMinimumUpdatePeriod(),
                      this.UpdateMPD,
                    ))
                : this.CloseWithError(
                    "playbackerror",
                    "Failed to parse on Update the MPD file",
                  ));
          }
          CloseWithError(e, ...t) {
            this.Close(), (0, _.q_)(...t);
          }
          BCreateLoaders() {
            let e = this.m_mpd.GetPeriods();
            if (0 == e.length) return !1;
            let t = e[0];
            (this.m_strVideoAdaptationID = ""),
              (this.m_strAudioAdaptationID = ""),
              (this.m_strGameAdaptationID = "");
            for (let e of t.rgAdaptationSets) {
              let t = null;
              if (
                (!this.m_strVideoAdaptationID &&
                  e.bContainsVideo &&
                  M(e) &&
                  ((t = e), (this.m_strVideoAdaptationID = e.strID)),
                !this.m_strAudioAdaptationID &&
                  e.bContainsAudio &&
                  M(e) &&
                  ((t = e), (this.m_strAudioAdaptationID = e.strID)),
                !this.m_strGameAdaptationID &&
                  e.bContainsGame &&
                  ((t = e), (this.m_strGameAdaptationID = e.strID)),
                t)
              ) {
                let e = new P(this, this.m_mpd, t, this.m_stats);
                this.m_rgLoaders.push(e);
              }
            }
            return this.m_strVideoAdaptationID.length > 0;
          }
          InitVideoControl() {
            let e = new MediaSource(),
              t = URL.createObjectURL(e);
            this.m_elVideo.pause(),
              (this.m_elVideo.srcObject = null),
              (this.m_elVideo.src = t),
              (this.m_mediaSource = e),
              this.m_listeners.AddEventListener(
                e,
                "sourceopen",
                this.OnMediaSourceOpen,
              ),
              this.m_listeners.AddEventListener(
                e,
                "sourceended",
                this.OnMediaSourceEnded,
              ),
              this.m_listeners.AddEventListener(
                e,
                "sourceclose",
                this.OnMediaSourceClose,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "waiting",
                this.OnVideoWaiting,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "error",
                this.OnVideoError,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "canplay",
                this.OnVideoCanPlay,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "pause",
                this.OnVideoPause,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "resize",
                this.OnVideoResize,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-bufferupdate",
                this.OnVideoTimeUpdate,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "timeupdate",
                this.OnVideoTimeUpdate,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "play",
                this.OnPlayAction,
              );
          }
          OnMediaSourceOpen(e) {
            (0, _.q_)("OnMediaSourceOpen");
            for (let e of this.m_rgLoaders)
              e.SetMediaSource(this.m_mediaSource);
            this.BeginPlayback();
          }
          HandleMediaSourceError(e) {
            this.m_bClosing ||
              e.target != this.m_mediaSource ||
              this.StopDownloads();
          }
          OnMediaSourceEnded(e) {
            (0, _.q_)("OnMediaSourceEnded", e), this.HandleMediaSourceError(e);
          }
          OnMediaSourceClose(e) {
            (0, _.q_)("OnMediaSourceClose", e), this.HandleMediaSourceError(e);
          }
          OnVideoWaiting(e) {
            if (
              !this.IsLiveContent() &&
              this.m_mpd &&
              this.m_mpd.GetEndTime() - this.GetCurrentPlayTime() < 1
            )
              return (
                (0, _.q_)(
                  `pausing playback due to OnVideoWaiting (endTime=${this.m_mpd.GetEndTime()}, currentPlaytime=${this.GetCurrentPlayTime()} )`,
                ),
                void this.Pause()
              );
            if (
              !this.BIsPlayerBufferedBetween(
                this.m_elVideo.currentTime,
                this.m_elVideo.currentTime + 0.5,
              ) &&
              !this.m_seekingToTime
            ) {
              if (this.m_elVideo && this.m_elVideo.buffered.length > 1) {
                let e = this.m_elVideo.currentTime,
                  t = this.m_elVideo.buffered;
                for (let n = 0; n < t.length; ++n)
                  if (
                    ((0, _.q_)(
                      "OnVideoWaiting buffer " +
                        n +
                        " start:" +
                        t.start(n) +
                        " end: " +
                        t.end(n) +
                        " playerTime: " +
                        e,
                    ),
                    t.start(n) <= e && e <= t.end(n))
                  )
                    return (
                      (0, _.q_)(
                        "OnVideoWaiting - time splitting, jumping to buffer " +
                          n,
                      ),
                      void this.Seek(t.start(n))
                    );
              }
              if (
                (this.m_stats.ReportVideoStalled(
                  this.m_rgLoaders,
                  this.m_elVideo,
                ),
                null === this.m_videoRepSelected)
              ) {
                let e = !0,
                  t = this.GetVideoLoader();
                if (t) {
                  let n = this.m_mpd.GetLowestRepresentation(
                    this.GetCurrentVideoAdaptation().strID,
                  );
                  n &&
                    !t.BIsCurrentRepresentation(n) &&
                    (t.ChangeRepresentation(n),
                    (0, _.q_)(
                      "OnVideoWaiting - Stalled, forced restart download at resolution: " +
                        n.nWidth +
                        "x" +
                        n.nHeight +
                        "@" +
                        n.nFrameRate +
                        " instead",
                    ),
                    (e = !1)),
                    this.Seek(this.m_elVideo.currentTime);
                }
                e &&
                  (0, _.q_)(
                    "OnVideoWaiting - Stalled, already at lowest resolution. No action taken. BHasLoader: " +
                      (null != t),
                  );
              } else
                (0, _.q_)(
                  "OnVideoWaiting - Stalled, user explicitly chose a resolution: " +
                    this.m_videoRepSelected.nWidth +
                    "x" +
                    this.m_videoRepSelected.nHeight +
                    "@" +
                    this.m_videoRepSelected.nFrameRate,
                );
            }
          }
          OnVideoPause(e) {
            this.OnVideoBufferProgress(),
              this.m_stats.GetFPSMonitor().Close(),
              this.SendUpdateToBookmarkServiceIfNeeded();
          }
          OnVideoResize(e) {
            this.m_stats.GetFPSMonitor().SetWindowResized();
          }
          OnDebugPrintEventInfoAndAvailableBuffer(e) {
            let t = -1,
              n = this.GetVideoLoader();
            this.m_elVideo &&
              n &&
              (t = n.GetAmountBufferedInPlayerMS(this.m_elVideo.currentTime)),
              (0, _.q_)(
                "DebugMessage - Stats: " + e.type + " BufferedMS: " + t,
              );
          }
          OnVideoError(e) {
            (0, _.q_)("OnVideoError");
          }
          OnVideoCanPlay(e) {
            this.m_bIsBuffering ||
              (this.m_bUserPlayChoice && this.PlayOnElement(),
              this.m_stats.LogVideoOnCanPlay(e));
          }
          GetCurrentPlayTime() {
            if (this.m_seekingToTime) {
              if (
                !this.m_bPlaybackStarted &&
                this.m_seekingToTime.eSeekType == V.FromAvailableStart
              )
                return 0;
              let e =
                this.m_seekingToTime.eSeekType == V.FromAvailableStart
                  ? this.GetAvailableVideoStartTime()
                  : 0;
              return this.m_seekingToTime.nTime + e;
            }
            return this.m_bUseHLSManifest && this.m_mpd
              ? (this.m_elVideo.currentTime > 0 &&
                  0 === this.m_hlsTimeOffset &&
                  (this.m_hlsTimeOffset =
                    this.GetBufferedLiveEdgeTime() -
                    this.m_elVideo.currentTime),
                this.m_elVideo.currentTime + this.m_hlsTimeOffset)
              : this.m_elVideo.currentTime;
          }
          OnVideoTimeUpdate() {
            if (this?.m_elVideo)
              if (this.m_bUserLiveEdgeChoice && this.IsLiveContent()) {
                let e = this.GetBufferedLiveEdgeTime();
                if (
                  1 == this.m_elVideo.playbackRate &&
                  this.m_elVideo.currentTime <= e - 4.5 &&
                  this.BIsPlayerBufferedBetween(this.m_elVideo.currentTime, e)
                ) {
                  let t = e - this.m_elVideo.currentTime;
                  (this.m_elVideo.playbackRate = 1.1),
                    (0, _.q_)(
                      "User is behind by " +
                        t.toFixed(2) +
                        " seconds, increasing playback speed to catch-up to live edge.",
                    );
                } else
                  1.1 == this.m_elVideo.playbackRate &&
                    this.m_elVideo.currentTime >= e - 1 &&
                    ((this.m_elVideo.playbackRate = 1),
                    (0, _.q_)(
                      "User is caught up, returning to normal playrate",
                    ));
              } else {
                const e = this.GetAvailableVideoStartTime(),
                  t = this.GetBufferedLiveEdgeTime() - e;
                this.GetCurrentPlayTime() - e >= t && this.Pause();
              }
          }
          SetBookmarkAdapter(e) {
            this.m_bookMarkAdapter = e;
          }
          SendUpdateToBookmarkServiceIfNeeded() {
            if (this.m_bookMarkAdapter) {
              let e = this.m_elVideo.currentTime,
                t = this.GetCurrentVideoAdaptation(),
                n = t && t.strID ? t.strID : null,
                i = this.GetCurrentAudioAdaptationfunction(),
                o = i && i.strID ? i.strID : null,
                r = this.GetCurrentTimedTextRepresentation(),
                a = r && r.strID ? r.strID : null;
              this.m_bookMarkAdapter.SetBookmark(e >= 0 ? e : 0, n, o, a),
                this.IsPaused()
                  ? this.m_schBookmarkUpdater.Cancel()
                  : this.m_schBookmarkUpdater.Schedule(
                      6e4,
                      this.SendUpdateToBookmarkServiceIfNeeded,
                    );
            }
          }
          GetCurrentTimedTextRepresentation() {
            return this.m_timedTextRepSelected;
          }
          OnPlayAction() {
            this.SendUpdateToBookmarkServiceIfNeeded();
          }
          BIsPlayerBufferedBetween(e, t) {
            return (
              this.m_elVideo.buffered.length > 0 &&
              e >= this.m_elVideo.buffered.start(0) &&
              t <= this.m_elVideo.buffered.end(0)
            );
          }
          GetLiveContentStartTime() {
            return this.m_mpd.GetAvailabilityStartTime();
          }
          GetTimeTextAdaptions(e) {
            return this.m_mpd ? this.m_mpd.GetTimedTextAdaptionSet(e) : [];
          }
          GetAvailableVideoStartTime() {
            if (!this.m_mpd) return 0;
            let e = 0;
            if (this.IsLiveContent()) {
              let t = Math.floor(this.m_mpd.GetDurationSinceStarted() / 1e3),
                n = this.GetBufferedLiveEdgeTime(),
                i = this.m_mpd.GetTimeShiftBufferDepth();
              (e = i ? t - i + 10 : 0), (e = d.OQ(e, 0, n));
            } else e = this.m_mpd.GetStartTime();
            return e;
          }
          GetBufferedLiveEdgeTime() {
            if (!this.m_mpd) return 0;
            let e = 0;
            return (
              (e = this.IsLiveContent()
                ? Math.floor(
                    (this.m_mpd.GetDurationSinceStarted() -
                      this.m_nTrackBufferMS) /
                      1e3,
                  )
                : this.m_mpd.GetEndTime()),
              e
            );
          }
          IsPaused() {
            return !this.m_bUserPlayChoice;
          }
          SetUserPlayChoice(e) {
            (this.m_bUserPlayChoice = e),
              this.DispatchEvent("valve-userpausechange");
          }
          Play() {
            this.SetUserPlayChoice(!0), this.Seek(this.GetCurrentPlayTime());
          }
          Pause() {
            (this.m_bUserLiveEdgeChoice = !1),
              1.1 == this.m_elVideo?.playbackRate &&
                (this.m_elVideo.playbackRate = 1),
              this.SetUserPlayChoice(!1),
              this.m_elVideo?.pause();
          }
          GetPlaybackRate() {
            return this.m_elVideo.paused ? 0 : this.m_elVideo.playbackRate;
          }
          GetCDNAuthURLParameter() {
            return this.m_strCDNAuthURLParameters;
          }
          OnSegmentDownloaded(e) {
            (0, _.q_)(e.GetDebugName() + " OnSegmentDownloaded"),
              this.UpdateVideoRepresentation(this.m_videoRepSelected),
              this.OnVideoBufferProgress(),
              e == this.GetVideoLoader() &&
                this.m_stats.SetCurrentVideoBandwidth(e.GetAvgDownloadRate());
          }
          async PlayOnElement() {
            const e = this.m_bFirstPlay;
            this.m_bFirstPlay = !1;
            let t = !1;
            const n = () => {
              (t = !0),
                this.m_stats
                  .GetFPSMonitor()
                  .StartTracking(() =>
                    this.m_stats.ExtractFrameInfo(this.m_elVideo),
                  );
            };
            try {
              await this.m_elVideo.play(), n();
            } catch (e) {
              if ("NotAllowedError" === e.name && this.BHasTimedText()) {
                (this.m_elVideo.muted = !0),
                  this.SetSubtitles((0, s.sf)(p.TS.LANGUAGE));
                try {
                  await this.m_elVideo.play(), n();
                } catch (e) {}
              }
            }
            !t && e && this.DispatchEvent("valve-userinputneeded");
          }
          OnVideoBufferProgress() {
            if (!this.IsBuffering()) return;
            let e = this.m_rgLoaders.length > 0,
              t = this.GetPlaybackStartTime(0);
            for (let n of this.m_rgLoaders) {
              if (!n.BHasEnoughBuffered(t)) {
                e = !1;
                break;
              }
              t = Math.max(t, n.GetBufferedStart());
            }
            e &&
              ((this.m_bIsBuffering = !1),
              (this.m_seekingToTime = null),
              this.m_elVideo.currentTime != t
                ? (this.m_elVideo.currentTime = t)
                : this.m_elVideo.paused &&
                  this.m_bUserPlayChoice &&
                  this.PlayOnElement(),
              this.DispatchEvent("valve-bufferupdate"));
          }
          OnSegmentDownloadFailed(e, t) {
            this.StopDownloads(), this.DispatchEvent("valve-downloadfailed", t);
          }
          OnSegmentDownloadGone(e) {
            this.m_bIsBuffering && e.GetNumConsecutiveDownloadGones() <= 3
              ? this.Seek(
                  this.GetCurrentPlayTime() +
                    e.GetCurrentSegmentDurationMS() / 1e3,
                )
              : ((0, _.q_)(
                  "OnSegmentDownloadGone: too many consecutive 'gone', erroring the download: " +
                    e.GetNumConsecutiveDownloadGones(),
                ),
                this.OnSegmentDownloadFailed(e, N.StreamGone));
          }
          OnMediaUnsupportedError(e, t) {
            this.DispatchEvent("valve-typeerror", t);
          }
          OnMediaSourceError(e) {
            this.DispatchEvent("valve-playbackerror");
          }
          GetCurrentAudioAdaptationfunction() {
            return this.m_mpd
              ? this.m_mpd.GetAdaptationByTrackID(this.m_strAudioAdaptationID)
              : null;
          }
          GetCurrentVideoAdaptation() {
            return this.m_mpd
              ? this.m_mpd.GetAdaptationByTrackID(this.m_strVideoAdaptationID)
              : null;
          }
          GetVideoLoader() {
            for (let e of this.m_rgLoaders) if (e.ContainsVideo()) return e;
            return null;
          }
          GetAudioLoader() {
            for (let e of this.m_rgLoaders) if (e.ContainsAudio()) return e;
            return null;
          }
          GetGameLoader() {
            for (let e of this.m_rgLoaders) if (e.ContainsGame()) return e;
            return null;
          }
          SetTrackBufferMS(e) {
            this.m_nTrackBufferMS = e;
            for (let t of this.m_rgLoaders) t.SetBufferMS(e);
          }
          BeginPlayback() {
            if (!this.m_bUseHLSManifest) {
              let e = this.PickStartingVideoRepresentation();
              for (let t of this.m_rgLoaders)
                if (t.ContainsVideo()) {
                  t.ChangeRepresentation(e);
                  let n = t.GetCurrentSegmentDurationMS();
                  this.m_schFirstFrameThrottler.Schedule(
                    n / 2,
                    this.VerifyFirstSegmentDownloadProgress,
                  );
                } else if (t.ContainsAudio() || t.ContainsGame()) {
                  let e =
                    t.GetAdaptation().rgRepresentations.length > 0
                      ? t.GetAdaptation().rgRepresentations[0]
                      : null;
                  t.ChangeRepresentation(e);
                }
            }
            this.m_bPlaybackStarted = !0;
            let e = 0;
            if (this.IsLiveContent()) {
              let t = this.GetVideoLoader().GetCurrentSegmentDurationMS(),
                n = 1e3 * this.m_mpd.GetMinBufferTime(),
                i = Math.max(t, n);
              this.SetTrackBufferMS(i);
              let o = this.GetBufferedLiveEdgeTime();
              (e = this.GetPlaybackStartTime(o)),
                (0, _.q_)(
                  `Begin playback of live content [this.buffer=${this.m_nTrackBufferMS}][nStartTime=${e}][nLiveEdge=${o}]`,
                );
            } else
              this.SetTrackBufferMS(8e3),
                (e = this.GetPlaybackStartTime(0)),
                this.m_bookMarkAdapter &&
                  ((e = this.m_bookMarkAdapter.GetBeginPlaytime()),
                  this.m_mpd.GetEndTime() - e < 5 && (e = 0)),
                (0, _.q_)(
                  `Begin playback of non-live content [this.buffer=${this.m_nTrackBufferMS}][nStartTime=${e}]`,
                );
            (this.m_seekingToTime = null),
              (0, _.q_)("Starting playback at " + e),
              this.m_stats.SetSegmentDurationMS(
                this.GetVideoLoader().GetCurrentSegmentDurationMS(),
              ),
              this.m_stats.SetAnalyticLinks(
                this.m_mpd.GetStatsLink(),
                this.m_mpd.GetStalledLink(),
                this.m_mpd.GetEventLink(),
              ),
              this.m_stats.SetVideoInitializationURL(
                this.GetVideoLoader().GetCurrentSegmentInitializationURL(),
              ),
              this.Seek(e),
              this.GetGameLoader() &&
                this.m_schGameDataEventTrigger.Schedule(
                  500,
                  this.GameDataEventTrigger,
                );
          }
          VerifyFirstSegmentDownloadProgress() {
            let e = this.GetVideoLoader();
            if (
              null === this.m_videoRepSelected &&
              e &&
              e.GetDownloadHistory().length <= 1 &&
              e.GetActiveDownloads() > 0 &&
              e.GetActiveDownloadProgress() < 0.55
            ) {
              let t = this.DetermineBestVideoRepresentation();
              t &&
                !e.BIsCurrentRepresentation(t) &&
                (e.ChangeRepresentation(t),
                e.ForceRestartDownload(),
                (0, _.q_)(
                  "Video download progressing too slowly, choosing " +
                    t.nWidth +
                    "x" +
                    t.nHeight +
                    "@" +
                    t.nFrameRate +
                    " instead",
                ));
            }
          }
          PickStartingVideoRepresentation() {
            let e = this.GetVideoLoader();
            if (!e) return null;
            let t = e.GetAdaptation(),
              n = null;
            for (let i = e.GetRepresentationsCount() - 1; i >= 0; i--) {
              let e = t.rgRepresentations[i],
                o = e.nFrameRate ? e.nFrameRate : 0;
              if (
                !(this.m_nLimitFPS > 0 && o > this.m_nLimitFPS) &&
                ((n = e), this.GetVideoPlayerHeight() <= e.nHeight)
              )
                break;
            }
            return n;
          }
          DetermineBestVideoRepresentation() {
            let e = this.GetVideoLoader(),
              t = this.GetAudioLoader(),
              n = t && t != e ? t.GetEstimatedAudioRate() : 0,
              i = this.GetAvgLoaderDownloadRate(),
              o = e.GetRepresentationsCount() - 1,
              r = e.GetAdaptation().rgRepresentations[o];
            for (let t = o - 1; t >= 0; t--) {
              let o = e.GetAdaptation().rgRepresentations[t],
                a = (o.nBandwidth + n) * this.m_elVideo.playbackRate * 1.15;
              if (i < a) {
                (0, _.q_)(
                  `Video select: Skipping ${t} due to rate: [avg=${i}][required=${a}]`,
                );
                continue;
              }
              let s = o.nFrameRate || 0;
              if (this.IsLiveContent() && s > 30) {
                let e = this.m_stats.GetFPSMonitor();
                if (
                  e.BIsDroppingFrames() ||
                  (e.BHasCurrentFPS() && Math.ceil(e.GetCurrentFPS()) < 29)
                ) {
                  (0, _.q_)(
                    `Video select: Skipping ${t} due to dropping frames and high FPS representation: [fps:${s}]`,
                  );
                  continue;
                }
              }
              if (this.m_nLimitFPS > 0 && s > this.m_nLimitFPS) {
                (0, _.q_)(
                  `Video select: Skipping ${t} due to frame rate limit`,
                );
                continue;
              }
              let l = r.nHeight || 0,
                c = o.nHeight || 0,
                m = this.GetVideoPlayerHeight();
              if (m > 0 && l > 0) {
                if (c > H(m)) break;
              }
              r = o;
            }
            return r;
          }
          UpdateVideoRepresentation(e) {
            if (e && this.m_videoRepSelected == e) return null;
            let t = this.GetVideoLoader();
            if (!t) return null;
            if (this.IsBuffering()) return null;
            let n = this.DetermineBestVideoRepresentation();
            return (this.m_videoRepSelected = null), t.ChangeRepresentation(n);
          }
          GetPlaybackStartTime(e) {
            if (!this.m_seekingToTime) return e;
            (0, l.w)(
              this.m_bPlaybackStarted,
              "Missing mpd info to calculate seek time",
            );
            let t =
              this.m_seekingToTime.eSeekType == V.FromAvailableStart
                ? this.GetAvailableVideoStartTime()
                : 0;
            return this.m_seekingToTime.nTime + t;
          }
          CanSeek() {
            return !0;
          }
          SeekAndPlay(e) {
            return this.SetUserPlayChoice(!0), this.Seek(e);
          }
          Seek(e, t = V.Absolute) {
            if (!this.m_bPlaybackStarted)
              return (this.m_seekingToTime = { nTime: e, eSeekType: t }), e;
            t == V.FromAvailableStart &&
              (e += this.GetAvailableVideoStartTime());
            let n = this.GetAvailableVideoStartTime(),
              i = this.GetBufferedLiveEdgeTime();
            const o = e;
            (e = d.OQ(e, n, i)) != o &&
              (0, _.q_)(`Seek time ${o} was clamped to the range ${n} to ${i}`),
              (this.m_bUserLiveEdgeChoice = e >= i - B);
            let r = this.m_elVideo.paused;
            if ((r || this.m_elVideo.pause(), this.m_bUseHLSManifest))
              (this.m_elVideo.currentTime = e - this.m_hlsTimeOffset),
                this.m_elVideo.play();
            else {
              (this.m_bIsBuffering = !0),
                (this.m_seekingToTime = { nTime: e, eSeekType: V.Absolute });
              for (let t of this.m_rgLoaders)
                t.ContainsGame() && (e = this.GetBufferedLiveEdgeTime()),
                  t.Seek(e);
              this.DispatchEvent("valve-bufferupdate"),
                r && this.OnVideoBufferProgress();
            }
            return e;
          }
          JumpTime(e) {
            return (e += this.GetCurrentPlayTime()), this.Seek(e);
          }
          GetVideoPlayerHeight() {
            return this.m_elVideo.clientHeight;
          }
          GetAvgLoaderDownloadRate() {
            let e = 0,
              t = 0,
              n = [this.GetVideoLoader()];
            for (let i of n) i && ((e += i.GetAvgDownloadRate()), t++);
            return 0 == t ? 0 : e / t;
          }
          GameDataEventTrigger() {
            let e = this.GetGameLoader();
            if (!e) return;
            let t = e.GetGameDataFrames(),
              n = -1;
            if (((n = t.length - 1), n >= 0)) {
              let i = t[n];
              i.pts != this.m_nGameDataLastFramePTS &&
                ((this.m_nGameDataLastFramePTS = i.pts),
                (i.gamedata.appid = e.GetLatestGameDataFrameAppID()),
                this.DispatchEvent("valve-gamedataupdate", i));
            }
            this.m_schGameDataEventTrigger.Schedule(
              500,
              this.GameDataEventTrigger,
            );
          }
          DispatchEvent(e, t = null) {
            let n = new CustomEvent(e, {
              cancelable: !0,
              bubbles: !0,
              detail: t,
            });
            this.m_elVideo
              ? this.m_elVideo.dispatchEvent(n)
              : console.error(
                  `dashplayer: attempting to fire ${e} when elVideo not set`,
                  t,
                );
          }
          IsMuted() {
            return this.m_elVideo.muted;
          }
          SetMuted(e) {
            this.m_elVideo.muted = e;
          }
          SetVolume(e) {
            (e = d.OQ(e, 0, 1)), (this.m_elVideo.volume = e);
          }
          GetVolume() {
            return this.m_elVideo.volume;
          }
          GetDASHPlayerStats() {
            return this.m_stats;
          }
          ReportPlayerStats() {
            this.m_stats.ReportPlayerStats(this.m_rgLoaders, this.m_elVideo),
              this.m_schReportPlayerTrigger.Schedule(
                3e5,
                this.ReportPlayerStats,
              );
          }
          SetStatsViewIsVisible(e) {
            e && !this.m_bStatsViewVisible
              ? (this.CaptureStatsForDisplay(),
                this.m_schCaptureDisplayStatsTrigger.Schedule(
                  250,
                  this.CaptureStatsForDisplay,
                ))
              : !e &&
                this.m_bStatsViewVisible &&
                this.m_schCaptureDisplayStatsTrigger.Cancel(),
              (this.m_bStatsViewVisible = e);
          }
          CaptureStatsForDisplay() {
            this.m_stats.SetHTMLVideoPlayerDisplay(
              this.m_elVideo.videoWidth,
              this.m_elVideo.videoHeight,
              this.m_elVideo.clientWidth,
              this.m_elVideo.clientHeight,
            ),
              this.m_stats.CaptureFrequentlyUpdatingInformation(
                this.m_elVideo,
                this.m_rgLoaders,
              ),
              this.m_schCaptureDisplayStatsTrigger.Schedule(
                250,
                this.CaptureStatsForDisplay,
              );
          }
          GetVideoRepresentations() {
            let e = [];
            if (
              (e.push({
                id: x,
                displayName: "Auto",
                selected: null === this.m_videoRepSelected,
              }),
              this.m_bUseHLSManifest)
            )
              return e;
            let t = this.GetCurrentVideoAdaptation();
            if (t)
              for (let n of t.rgRepresentations) {
                let t =
                    this.m_videoRepSelected &&
                    this.m_videoRepSelected.strID == n.strID,
                  i = n.nFrameRate;
                i > 50 && n.nFrameRate < 70
                  ? (i = 60)
                  : i > 25 && i < 35 && (i = 30);
                let o = `${n.nWidth}x${n.nHeight} @ ${i}fps`;
                e.push({
                  id: n.strID,
                  displayName: o,
                  selected: t,
                  width: n.nWidth,
                  fps: i,
                });
              }
            return (
              e.sort((e, t) =>
                e.width === t.width ? t.fps - e.fps : t.width - e.width,
              ),
              e
            );
          }
          SetVideoRepresentation(e) {
            let t = !0,
              n = this.GetVideoLoader();
            if (e && e.id != x) {
              let i = n.GetRepresentationByID(e.id);
              i &&
                ((t = !1),
                (null !== this.m_videoRepSelected &&
                  this.m_videoRepSelected.strID == i.strID) ||
                  ((this.m_videoRepSelected = i),
                  n.ChangeRepresentation(i),
                  this.Seek(this.GetCurrentPlayTime())));
            }
            t && (this.m_videoRepSelected = null);
          }
          GetThumbnailForTimestamp(e) {
            return "";
          }
          BHasTimedText() {
            return this.m_nTimedText > 0;
          }
        }
        function H(e) {
          return e < 360 ? 480 : e < 480 ? 720 : 4320;
        }
        (0, i.Cg)([a.sH], U.prototype, "m_nTimedText", void 0),
          (0, i.Cg)([a.XI], U.prototype, "InitTimedText", null),
          (0, i.Cg)([u.o], U.prototype, "OnVisibilityChange", null),
          (0, i.Cg)([u.o], U.prototype, "UpdateMPD", null),
          (0, i.Cg)([u.o], U.prototype, "OnMediaSourceOpen", null),
          (0, i.Cg)([u.o], U.prototype, "HandleMediaSourceError", null),
          (0, i.Cg)([u.o], U.prototype, "OnMediaSourceEnded", null),
          (0, i.Cg)([u.o], U.prototype, "OnMediaSourceClose", null),
          (0, i.Cg)([u.o], U.prototype, "OnVideoWaiting", null),
          (0, i.Cg)([u.o], U.prototype, "OnVideoPause", null),
          (0, i.Cg)([u.o], U.prototype, "OnVideoResize", null),
          (0, i.Cg)(
            [u.o],
            U.prototype,
            "OnDebugPrintEventInfoAndAvailableBuffer",
            null,
          ),
          (0, i.Cg)([u.o], U.prototype, "OnVideoError", null),
          (0, i.Cg)([u.o], U.prototype, "OnVideoCanPlay", null),
          (0, i.Cg)([u.o], U.prototype, "GetCurrentPlayTime", null),
          (0, i.Cg)([u.o], U.prototype, "OnVideoTimeUpdate", null),
          (0, i.Cg)(
            [u.o],
            U.prototype,
            "SendUpdateToBookmarkServiceIfNeeded",
            null,
          ),
          (0, i.Cg)([u.o], U.prototype, "OnPlayAction", null),
          (0, i.Cg)([u.o], U.prototype, "GetPlaybackRate", null),
          (0, i.Cg)([u.o], U.prototype, "GetCDNAuthURLParameter", null),
          (0, i.Cg)([u.o], U.prototype, "OnSegmentDownloaded", null),
          (0, i.Cg)([u.o], U.prototype, "PlayOnElement", null),
          (0, i.Cg)([u.o], U.prototype, "OnSegmentDownloadFailed", null),
          (0, i.Cg)([u.o], U.prototype, "OnSegmentDownloadGone", null),
          (0, i.Cg)([u.o], U.prototype, "OnMediaUnsupportedError", null),
          (0, i.Cg)([u.o], U.prototype, "OnMediaSourceError", null),
          (0, i.Cg)(
            [u.o],
            U.prototype,
            "VerifyFirstSegmentDownloadProgress",
            null,
          ),
          (0, i.Cg)([u.o], U.prototype, "GameDataEventTrigger", null),
          (0, i.Cg)([u.o], U.prototype, "ReportPlayerStats", null),
          (0, i.Cg)([a.XI.bound], U.prototype, "CaptureStatsForDisplay", null);
      },
      43669: (e, t, n) => {
        "use strict";
        n.d(t, { _L: () => C });
        var i = n(34629),
          o = n(89193),
          r = n(83957),
          a = n.n(r),
          s = n(77631),
          l = n(1785),
          c = n(17070),
          m = n(9907),
          d = n(74002),
          u = n(80354);
        const h = 1e6;
        class p {
          steamid;
          host;
          playback_position;
          playback_speed = 1;
          video_res;
          audio_rate;
          audio_ch;
          bw_avg;
          bw_required;
          broadcast_accountid;
          useragent;
          sessionid;
          broadcast_origin;
        }
        class _ extends p {
          video_buffer;
          audio_buffer;
          seconds_delta;
          bytes_received;
          frames_dropped;
          frames_decoded;
          failed_segments;
          bw_min;
          bw_max;
          seg_time_avg;
          seg_time_min;
          seg_time_max;
          initial_vid_res;
          ttff;
          seg_duration;
        }
        class g extends p {
          last_segment_response;
          audio_stalled;
          active_downloads;
          vid_down_progress;
          segment_stalled;
          segment1_bytes;
          segment1_time;
          segment2_bytes;
          segment2_time;
          segment3_bytes;
          segment3_time;
        }
        class C {
          m_steamIDBroadcast = "";
          m_steamIDViewer = "";
          m_broadcastID = "";
          m_ulViewerToken = "";
          m_strCDNAuthUrlParameters = void 0;
          m_host = "";
          m_strBroadcastOrigin = "";
          m_strStatsLink = "";
          m_strStalledLink = "";
          m_strEventLogLink = "";
          m_allTimeSnapshot = new f(0);
          m_rgSnapShots = new Array(new f(0));
          m_videoResolution = 0;
          m_audioRate = 0;
          m_audioChannel = 0;
          m_frameRate = 0;
          m_strBufferingVideoResolution = "0x0@0";
          m_nPlaybackVideoResolution = 0;
          m_strPlaybackVideoResolution = "0x0";
          m_htmlVideoResolution = 0;
          m_strHtmlVideoDisplay = "";
          m_nAudioBandwidth = 0;
          m_nVideoBandwidth = 0;
          m_nBandwidthRequired = 0;
          m_nCurBandwidthVideo = 0;
          m_nAudioBufferedMS = 0;
          m_nVideoBufferedMS = 0;
          m_nActiveDownloads = 0;
          m_nVideoDownloadProgress = 0;
          m_videoBufferedRanges = null;
          m_audioBufferedRanges = null;
          m_nSegmentDurationMS = 0;
          m_nPlaybackRate = 0;
          m_nTimeToFirstFrameMS = -1;
          m_fpsMonitor = new v();
          constructor() {
            (0, o.Gn)(this);
          }
          GetBytesReceivedToDisplay() {
            return (0, u.dm)(this.m_allTimeSnapshot.m_nBytesReceived, 1);
          }
          GetBufferingResolutionToDisplay() {
            return this.m_strBufferingVideoResolution;
          }
          GetPlaybackResolutionToDisplay() {
            return this.m_strPlaybackVideoResolution;
          }
          GetHTMLVideoResolutionToDisplay() {
            return this.m_strHtmlVideoDisplay;
          }
          GetDroppedFramesToDisplay() {
            return (
              this.m_allTimeSnapshot.m_nFramesDropped +
              "/" +
              this.m_allTimeSnapshot.m_nFramesDecoded
            );
          }
          GetStalledEventsToDisplay() {
            return String(this.m_allTimeSnapshot.m_nStallEvents);
          }
          GetFailedDownloadsToDisplay() {
            return String(this.m_allTimeSnapshot.m_nFailedSegments);
          }
          GetNumBufferedVideoRanges() {
            return this.m_videoBufferedRanges
              ? this.m_videoBufferedRanges.length
              : 0;
          }
          GetNumBufferedAudioRanges() {
            return this.m_audioBufferedRanges
              ? this.m_audioBufferedRanges.length
              : 0;
          }
          GetBufferedVideoSegmentForDisplay(e) {
            return this.m_videoBufferedRanges &&
              e < this.m_videoBufferedRanges.length
              ? (0, l.ap)(this.m_videoBufferedRanges.start(e)) +
                  " - " +
                  (0, l.ap)(this.m_videoBufferedRanges.end(e))
              : (0, d.we)("#DASHPlayerStats_VideoNoRangeInformation");
          }
          GetBufferedAudioSegmentForDisplay(e) {
            return this.m_audioBufferedRanges &&
              e < this.m_audioBufferedRanges.length
              ? (0, l.ap)(this.m_audioBufferedRanges.start(e)) +
                  " - " +
                  (0, l.ap)(this.m_audioBufferedRanges.end(e))
              : (0, d.we)("#DASHPlayerStats_AudioNoRangeInformation");
          }
          GetBandwidthStatsToDisplay() {
            if (this.m_rgSnapShots.length < 2)
              return (
                (this.m_allTimeSnapshot.m_nBandwidthMin / h).toFixed(3) +
                " / " +
                (this.m_allTimeSnapshot.m_nBandwidthMax / h).toFixed(3) +
                " / " +
                (this.m_allTimeSnapshot.GetAverageBandwidth() / h).toFixed(3)
              );
            {
              let e = this.m_rgSnapShots[this.m_rgSnapShots.length - 2],
                t = this.m_rgSnapShots[this.m_rgSnapShots.length - 1];
              return (
                (
                  (0 == t.m_nBandwidthMin
                    ? e.m_nBandwidthMin
                    : Math.min(e.m_nBandwidthMin, t.m_nBandwidthMin)) / h
                ).toFixed(3) +
                " / " +
                (Math.max(e.m_nBandwidthMax, t.m_nBandwidthMax) / h).toFixed(
                  3,
                ) +
                " / " +
                (e.GetAverageBandwidthFromTwo(t) / h).toFixed(3)
              );
            }
          }
          GetDownloadTimeStatsToDisplay() {
            if (this.m_rgSnapShots.length < 2)
              return (
                (
                  this.m_allTimeSnapshot.m_nSegmentDownloadTimeMinMS / 1e3
                ).toFixed(3) +
                " / " +
                (
                  this.m_allTimeSnapshot.m_nSegmentDownloadTimeMaxMS / 1e3
                ).toFixed(3) +
                " / " +
                (this.m_allTimeSnapshot.GetAverageDownloadTime() / 1e3).toFixed(
                  3,
                )
              );
            {
              let e = this.m_rgSnapShots[this.m_rgSnapShots.length - 2],
                t = this.m_rgSnapShots[this.m_rgSnapShots.length - 1];
              return (
                (
                  (0 == t.m_nSegmentDownloadTimeMinMS
                    ? e.m_nSegmentDownloadTimeMinMS
                    : Math.min(
                        e.m_nSegmentDownloadTimeMinMS,
                        t.m_nSegmentDownloadTimeMinMS,
                      )) / 1e3
                ).toFixed(3) +
                " / " +
                (
                  Math.max(
                    e.m_nSegmentDownloadTimeMaxMS,
                    t.m_nSegmentDownloadTimeMaxMS,
                  ) / 1e3
                ).toFixed(3) +
                " / " +
                (e.GetAverageDownloadTimeFromTwo(t) / 1e3).toFixed(3)
              );
            }
          }
          BHasFrameInformation() {
            return this.m_allTimeSnapshot.m_nFramesDecoded > 0;
          }
          GetBandwidthRequiredToDisplay() {
            return (this.m_nBandwidthRequired / h).toFixed(3);
          }
          GetBandwithVideoToDisplay() {
            return (this.m_nCurBandwidthVideo / h).toFixed(3);
          }
          GetContentServerToDisplay() {
            return this.m_host;
          }
          GetVideoBufferedToDisplay() {
            return (this.m_nVideoBufferedMS / 1e3).toFixed(3);
          }
          GetAudioBufferedToDisplay() {
            return (this.m_nAudioBufferedMS / 1e3).toFixed(3);
          }
          GetActiveDownloadsToDisplay() {
            return String(this.m_nActiveDownloads);
          }
          GetVideoDownloadProgressToDisplay() {
            return this.m_nVideoDownloadProgress
              ? String(Math.round(100 * this.m_nVideoDownloadProgress)) + "%"
              : "100%";
          }
          GetTimeToFirstFrameToDisplay() {
            return -1 == this.m_nTimeToFirstFrameMS
              ? "Unknown"
              : String(this.m_nTimeToFirstFrameMS);
          }
          GetPersistentFrameDropsForDisplay() {
            return String(this.m_fpsMonitor.BIsDroppingFrames());
          }
          GetCurrentFPSForDisplay() {
            return this.m_fpsMonitor.BHasCurrentFPS()
              ? this.m_fpsMonitor.GetCurrentFPS().toFixed(1)
              : (0, d.we)("#DASHPlayerStats_Tracking");
          }
          GetPlaybackRateForDisplay() {
            return this.m_nPlaybackRate.toFixed(1) + "x";
          }
          GetFPSMonitor() {
            return this.m_fpsMonitor;
          }
          SetHTMLVideoPlayerDisplay(e, t, n, i) {
            this.m_htmlVideoResolution != i &&
              ((this.m_htmlVideoResolution = i),
              (this.m_strHtmlVideoDisplay = n + "x" + i)),
              this.m_nPlaybackVideoResolution != t &&
                ((this.m_nPlaybackVideoResolution = t),
                (this.m_strPlaybackVideoResolution = e + "x" + t));
          }
          SetVideoPlaybackResolution(e, t, n) {
            0 == this.m_videoResolution &&
              ((this.m_allTimeSnapshot.m_nInitialVideoResolution = t),
              (this.m_rgSnapShots[
                this.m_rgSnapShots.length - 1
              ].m_nInitialVideoResolution = t)),
              (this.m_strBufferingVideoResolution = e + "x" + t + "@" + n),
              (this.m_videoResolution = t),
              (this.m_frameRate = n);
          }
          SetRepresentation(e) {
            e &&
              (e.nAudioSamplingRate
                ? ((this.m_audioRate = Math.round(e.nBandwidth / 1e3)),
                  (this.m_audioChannel = e.nAudioChannels),
                  (this.m_nAudioBandwidth = e.nBandwidth))
                : e.nFrameRate &&
                  (this.SetVideoPlaybackResolution(
                    e.nWidth,
                    e.nHeight,
                    e.nFrameRate,
                  ),
                  (this.m_nVideoBandwidth = e.nBandwidth)),
              (this.m_nBandwidthRequired =
                this.m_nAudioBandwidth + this.m_nVideoBandwidth));
          }
          SetCurrentVideoBandwidth(e) {
            this.m_nCurBandwidthVideo = e;
          }
          SetSegmentDurationMS(e) {
            this.m_nSegmentDurationMS = e;
          }
          SetBroadcasterAndViewerInfo(e, t, n, i, o) {
            (this.m_steamIDBroadcast = e),
              (this.m_steamIDViewer = t),
              (this.m_broadcastID = n),
              (this.m_ulViewerToken = i),
              (this.m_strCDNAuthUrlParameters = o);
          }
          SetAnalyticLinks(e, t, n) {
            (this.m_strStatsLink = e),
              (this.m_strStalledLink = t),
              (this.m_strEventLogLink = n);
          }
          SetVideoInitializationURL(e) {
            let t = new URL(e);
            (this.m_host = t.hostname),
              (this.m_strBroadcastOrigin =
                t.searchParams.get("broadcast_origin") || "");
            let n = this.m_strBroadcastOrigin.indexOf(":");
            -1 !== n &&
              (this.m_strBroadcastOrigin = this.m_strBroadcastOrigin.substr(
                0,
                n,
              ));
          }
          SetAudioRate(e) {
            this.m_audioRate = e;
          }
          CaptureFrequentlyUpdatingInformation(e, t) {
            let n = this.ExtractFrameInfo(e);
            this.LogFrameInfo(n), this.LogBufferDuration(t, e);
          }
          LogDownload(e, t) {
            this.m_allTimeSnapshot.SegmentReceived(e, t),
              this.m_rgSnapShots[this.m_rgSnapShots.length - 1].SegmentReceived(
                e,
                t,
              );
          }
          LogSegmentDownloadFailure(e, t) {
            (this.m_allTimeSnapshot.m_nFailedSegments += 1),
              (this.m_rgSnapShots[
                this.m_rgSnapShots.length - 1
              ].m_nFailedSegments += 1),
              (this.m_allTimeSnapshot.m_nLastSegementDownloadStatus = t),
              (this.m_rgSnapShots[
                this.m_rgSnapShots.length - 1
              ].m_nLastSegementDownloadStatus = t),
              this.LogDownload(0, e);
          }
          LogVideoError(e) {}
          LogVideoOnCanPlay(e) {
            -1 === this.m_nTimeToFirstFrameMS &&
              (this.m_nTimeToFirstFrameMS =
                Date.now() - this.m_allTimeSnapshot.m_timeMS);
          }
          LogErrorEvent(e, t) {}
          ReportVideoStalled(e, t) {
            if (0 == this.m_strStalledLink.length) return;
            let n = this.FindBehindSegmentLoader(e, t);
            if (!n)
              return void (0, l.q_)(
                "DASHStats: Did not find any audio or video loaders",
              );
            (this.m_allTimeSnapshot.m_nStallEvents += 1),
              (this.m_rgSnapShots[
                this.m_rgSnapShots.length - 1
              ].m_nStallEvents += 1);
            let i = new g();
            this.GatherCommonStats(
              i,
              t,
              n.GetBandwidthRequired(),
              n.GetAvgDownloadRate(),
            ),
              (i.last_segment_response =
                this.m_rgSnapShots[
                  this.m_rgSnapShots.length - 1
                ].m_nLastSegementDownloadStatus),
              (i.audio_stalled = n.ContainsAudio()),
              this.CaptureActiveDownloads(e),
              (i.active_downloads = this.m_nActiveDownloads),
              (i.vid_down_progress = this.m_nVideoDownloadProgress);
            let o = n.GetDownloadHistory(),
              r = 0;
            for (let e = o.length - 1; e >= 0 && r < 3; --e)
              ++r,
                (i["segment" + r + "_bytes"] = o[e].cubData),
                (i["segment" + r + "_time"] =
                  Math.round(o[e].nDownloadMS) / 1e3);
            this.SendReportToServer(i, this.m_strStalledLink);
          }
          FindBehindSegmentLoader(e, t) {
            let n = !1,
              i = !1,
              o = t.currentTime,
              r = null,
              a = null;
            for (let t of e)
              (a = t.ContainsAudio() ? t : a),
                (r = t.ContainsVideo() ? t : a),
                t.BHasEnoughBuffered(o) &&
                  ((i = i || t.ContainsAudio()), (n = n || t.ContainsVideo()));
            return (i = i || null == a), !n || (n && i) ? r : a;
          }
          ExtractFrameInfo(e) {
            let t = 0,
              n = 0;
            if (e.getVideoPlaybackQuality)
              try {
                let i = e.getVideoPlaybackQuality();
                (n = i.totalVideoFrames), (t = i.droppedVideoFrames);
              } catch (e) {
                (0, l.q_)(
                  "Browser does not support HTMLVideoElement.getVideoPlaybackQuality()",
                  e.message,
                );
              }
            else
              e.webkitDecodedFrames
                ? ((n = e.webkitDecodedFrames), (t = e.webkitDroppedFrames))
                : e.webkitDecodedFrameCount &&
                  ((n = e.webkitDecodedFrameCount),
                  (t = e.webkitDroppedFrameCount));
            return { framesDecoded: n, framesDropped: t };
          }
          LogFrameInfo(e) {
            (this.m_allTimeSnapshot.m_nFramesDecoded = e.framesDecoded),
              (this.m_allTimeSnapshot.m_nFramesDropped = e.framesDropped);
            let t = this.m_rgSnapShots[this.m_rgSnapShots.length - 1];
            if (1 == this.m_rgSnapShots.length)
              (t.m_nFramesDecoded = e.framesDecoded),
                (t.m_nFramesDropped = e.framesDropped);
            else {
              let n = this.m_rgSnapShots[this.m_rgSnapShots.length - 2];
              (t.m_nFramesDecoded = e.framesDecoded - n.m_nFramesDecoded),
                (t.m_nFramesDropped = e.framesDropped - n.m_nFramesDropped);
            }
          }
          LogBufferDuration(e, t) {
            this.m_nActiveDownloads = 0;
            for (let n of e)
              n.ContainsAudio()
                ? ((this.m_nAudioBufferedMS = n.GetAmountBufferedMS(
                    t.currentTime,
                  )),
                  (this.m_audioBufferedRanges = n.GetSourceBufferTimeRanges()))
                : n.ContainsVideo() &&
                  ((this.m_nVideoBufferedMS = n.GetAmountBufferedMS(
                    t.currentTime,
                  )),
                  (this.m_videoBufferedRanges = n.GetSourceBufferTimeRanges())),
                (this.m_nActiveDownloads += n.GetActiveDownloads()),
                n.ContainsVideo() &&
                  (this.m_nVideoDownloadProgress =
                    n.GetActiveDownloadProgress());
            this.m_nPlaybackRate = t.playbackRate;
          }
          CaptureActiveDownloads(e) {
            this.m_nActiveDownloads = 0;
            for (let t of e)
              (this.m_nActiveDownloads += t.GetActiveDownloads()),
                t.ContainsVideo() &&
                  (this.m_nVideoDownloadProgress =
                    t.GetActiveDownloadProgress());
          }
          ReportPlayerStats(e, t) {
            if (0 == this.m_strStatsLink.length) return;
            let n = this.ExtractFrameInfo(t);
            if (
              n.framesDecoded == this.m_allTimeSnapshot.m_nFramesDecoded &&
              0 ==
                this.m_rgSnapShots[this.m_rgSnapShots.length - 1]
                  .m_nBytesReceived
            )
              return void this.CreateNewEmptySnapshot(t.videoHeight);
            this.LogFrameInfo(n), this.LogBufferDuration(e, t);
            let i = new _(),
              o = this.m_rgSnapShots[this.m_rgSnapShots.length - 1];
            (i.frames_decoded = o.m_nFramesDecoded),
              (i.frames_dropped = o.m_nFramesDropped),
              (i.bytes_received = o.m_nBytesReceived),
              (i.seconds_delta = Math.round((Date.now() - o.m_timeMS) / 1e3)),
              (i.failed_segments = o.m_nFailedSegments),
              (i.bw_min = o.m_nBandwidthMin),
              (i.bw_max = o.m_nBandwidthMax),
              (i.audio_buffer = Math.round(this.m_nAudioBufferedMS / 1e3)),
              (i.video_buffer = Math.round(this.m_nVideoBufferedMS / 1e3)),
              (i.seg_time_avg = Math.round(o.GetAverageDownloadTime()) / 1e3),
              (i.seg_time_min =
                Math.round(o.m_nSegmentDownloadTimeMinMS) / 1e3),
              (i.seg_time_max =
                Math.round(o.m_nSegmentDownloadTimeMaxMS) / 1e3),
              (i.initial_vid_res = o.m_nInitialVideoResolution),
              (i.ttff = this.m_nTimeToFirstFrameMS),
              (i.seg_duration = this.m_nSegmentDurationMS),
              this.GatherCommonStats(
                i,
                t,
                this.m_nBandwidthRequired,
                o.GetAverageBandwidth(),
              ),
              this.CreateNewEmptySnapshot(t.videoHeight),
              this.SendReportToServer(i, this.m_strStatsLink);
          }
          async SendReportToServer(e, t) {
            let n = new URL(t),
              i = new FormData();
            for (let t of Object.keys(e)) i.append(t, e[t]);
            i.append("l", n.searchParams.get("l")),
              i.append("e", n.searchParams.get("e")),
              i.append("h", n.searchParams.get("h")),
              (0, l.q_)("CDASHStats Sending Report to Server", e),
              a()
                .post(t, i)
                .catch((e) => {
                  (0, l.q_)("Failed to upload stats: ", e);
                });
          }
          CreateNewEmptySnapshot(e) {
            this.m_rgSnapShots.length >= 5 && this.m_rgSnapShots.shift(),
              this.m_rgSnapShots.push(new f(e));
          }
          GatherCommonStats(e, t, n, i) {
            (e.steamid = this.m_steamIDViewer),
              (e.host = this.m_host),
              (e.playback_position = Math.round(t.currentTime)),
              (e.video_res = this.m_videoResolution),
              (e.audio_rate = this.m_audioRate),
              (e.audio_ch = this.m_audioChannel),
              (e.bw_required = n),
              (e.bw_avg = Math.round(i)),
              (e.broadcast_accountid = this.m_steamIDBroadcast
                ? new s.b(this.m_steamIDBroadcast).GetAccountID()
                : 0),
              (e.useragent = window.navigator.userAgent),
              (e.sessionid = c.TS.SESSIONID),
              (e.broadcast_origin = this.m_strBroadcastOrigin);
          }
        }
        (0, i.Cg)([o.sH], C.prototype, "m_allTimeSnapshot", void 0),
          (0, i.Cg)(
            [o.sH],
            C.prototype,
            "m_strBufferingVideoResolution",
            void 0,
          ),
          (0, i.Cg)(
            [o.sH],
            C.prototype,
            "m_strPlaybackVideoResolution",
            void 0,
          ),
          (0, i.Cg)([o.sH], C.prototype, "m_strHtmlVideoDisplay", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nBandwidthRequired", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nCurBandwidthVideo", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nAudioBufferedMS", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nVideoBufferedMS", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nActiveDownloads", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nVideoDownloadProgress", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_videoBufferedRanges", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_audioBufferedRanges", void 0),
          (0, i.Cg)([o.sH], C.prototype, "m_nPlaybackRate", void 0),
          (0, i.Cg)([o.XI], C.prototype, "SetVideoPlaybackResolution", null),
          (0, i.Cg)([o.XI], C.prototype, "SetRepresentation", null),
          (0, i.Cg)([o.XI], C.prototype, "SetCurrentVideoBandwidth", null),
          (0, i.Cg)(
            [o.XI],
            C.prototype,
            "CaptureFrequentlyUpdatingInformation",
            null,
          ),
          (0, i.Cg)([o.XI], C.prototype, "LogDownload", null),
          (0, i.Cg)([o.XI], C.prototype, "LogSegmentDownloadFailure", null),
          (0, i.Cg)([o.XI], C.prototype, "LogFrameInfo", null),
          (0, i.Cg)([o.XI], C.prototype, "LogBufferDuration", null);
        class f {
          m_timeMS = Date.now();
          m_nBytesReceived = 0;
          m_nInitialVideoResolution = 0;
          m_nFailedSegments = 0;
          m_nStallEvents = 0;
          m_nEntries = 0;
          m_nSegmentDownloadTimeTotalMS = 0;
          m_nSegmentDownloadTimeMaxMS = 0;
          m_nSegmentDownloadTimeMinMS = 0;
          m_nBandwidthTotal = 0;
          m_nBandwidthMin = 0;
          m_nBandwidthMax = 0;
          m_nLastSegementDownloadStatus = 200;
          m_nFramesDecoded = 0;
          m_nFramesDropped = 0;
          constructor(e) {
            (0, o.Gn)(this), (this.m_nInitialVideoResolution = e);
          }
          GetAverageBandwidth() {
            return this.m_nBandwidthTotal / Math.max(1, this.m_nEntries);
          }
          GetAverageDownloadTime() {
            return (
              this.m_nSegmentDownloadTimeTotalMS / Math.max(1, this.m_nEntries)
            );
          }
          GetAverageBandwidthFromTwo(e) {
            return (
              (e.m_nBandwidthTotal + this.m_nBandwidthTotal) /
              Math.max(1, e.m_nEntries + this.m_nEntries)
            );
          }
          GetAverageDownloadTimeFromTwo(e) {
            return (
              (e.m_nSegmentDownloadTimeTotalMS +
                this.m_nSegmentDownloadTimeTotalMS) /
              Math.max(1, e.m_nEntries + this.m_nEntries)
            );
          }
          SegmentReceived(e, t) {
            if (((this.m_nBytesReceived += e), e < 1024)) return;
            let n = Math.round((8 * e * 1e3) / Math.max(t, 1));
            0 == this.m_nEntries
              ? ((this.m_nSegmentDownloadTimeMinMS = t),
                (this.m_nBandwidthMin = n))
              : ((this.m_nSegmentDownloadTimeMinMS = Math.min(
                  t,
                  this.m_nSegmentDownloadTimeMinMS,
                )),
                (this.m_nBandwidthMin = Math.min(n, this.m_nBandwidthMin))),
              (this.m_nBandwidthMax = Math.max(n, this.m_nBandwidthMax)),
              (this.m_nSegmentDownloadTimeMaxMS = Math.max(
                t,
                this.m_nSegmentDownloadTimeMaxMS,
              )),
              (this.m_nBandwidthTotal += n),
              (this.m_nSegmentDownloadTimeTotalMS += t),
              (this.m_nEntries += 1);
          }
        }
        (0, i.Cg)([o.sH], f.prototype, "m_nBytesReceived", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nFailedSegments", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nStallEvents", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nSegmentDownloadTimeMaxMS", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nSegmentDownloadTimeMinMS", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nBandwidthMin", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nBandwidthMax", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nFramesDecoded", void 0),
          (0, i.Cg)([o.sH], f.prototype, "m_nFramesDropped", void 0),
          (0, i.Cg)([o.XI], f.prototype, "SegmentReceived", null);
        class S {
          bDropReading;
          nTotalDecodedFrames;
          reset(e, t) {
            (this.bDropReading = e), (this.nTotalDecodedFrames = t);
          }
        }
        class v {
          constructor() {
            (0, o.Gn)(this);
          }
          k_nTestFrequencyMS = 1e3;
          k_nSlidingWindow = 6;
          k_nDroppedFramesThreshold = 1;
          k_nFailThreshold = 3;
          k_nIgnoreReadingAroundResizeMS = 2e3;
          m_schTracker = new m.LU();
          m_rgResultsWindow = [];
          m_nLastResizeMS = 0;
          m_lastFrameInfo;
          m_bDroppingFrameDetected = !1;
          m_nCurrentFPS = 0;
          m_fnRequestDecoded;
          StartTracking(e) {
            this.m_schTracker.Schedule(
              this.k_nTestFrequencyMS,
              this.TakeReading,
            ),
              (this.m_fnRequestDecoded = e),
              (this.m_lastFrameInfo = this.m_fnRequestDecoded()),
              (this.m_bDroppingFrameDetected = !1);
          }
          BHasCurrentFPS() {
            return 0 != this.m_nCurrentFPS;
          }
          GetCurrentFPS() {
            return this.m_nCurrentFPS;
          }
          BIsDroppingFrames() {
            return this.m_bDroppingFrameDetected;
          }
          SetWindowResized() {
            this.m_nLastResizeMS = Date.now();
          }
          BIsInResizeTimeWindow() {
            return (
              this.m_nLastResizeMS &&
              Date.now() - this.m_nLastResizeMS <
                this.k_nIgnoreReadingAroundResizeMS
            );
          }
          Close() {
            this.m_schTracker.Cancel(),
              (this.m_rgResultsWindow = []),
              (this.m_bDroppingFrameDetected = !1);
          }
          LogResizeAction() {
            this.m_nLastResizeMS = Date.now();
          }
          TakeReading() {
            this.m_schTracker.Schedule(
              this.k_nTestFrequencyMS,
              this.TakeReading,
            );
            let e = !1,
              t = this.m_fnRequestDecoded();
            this.BIsInResizeTimeWindow() ||
              (e =
                this.m_lastFrameInfo.framesDropped > 0 &&
                t.framesDropped - this.m_lastFrameInfo.framesDropped >
                  this.k_nDroppedFramesThreshold),
              this.AppendReading(e, t.framesDecoded),
              (this.m_bDroppingFrameDetected = this.ComputeDroppingFrames()),
              (this.m_nCurrentFPS =
                t.framesDecoded -
                this.m_lastFrameInfo.framesDecoded -
                (t.framesDropped - this.m_lastFrameInfo.framesDropped)),
              (this.m_lastFrameInfo = t);
          }
          ComputeDroppingFrames() {
            return (
              this.m_rgResultsWindow.length == this.k_nSlidingWindow &&
              this.m_rgResultsWindow.filter((e) => e.bDropReading).length >=
                this.k_nFailThreshold
            );
          }
          AppendReading(e, t) {
            let n;
            (n =
              this.m_rgResultsWindow.length >= this.k_nSlidingWindow
                ? this.m_rgResultsWindow.shift()
                : new S()),
              n.reset(e, t),
              this.m_rgResultsWindow.push(n);
          }
        }
        (0, i.Cg)([o.sH], v.prototype, "m_bDroppingFrameDetected", void 0),
          (0, i.Cg)([o.sH], v.prototype, "m_nCurrentFPS", void 0),
          (0, i.Cg)([o.XI.bound], v.prototype, "TakeReading", null);
      },
      78278: (e, t, n) => {
        "use strict";
        n.d(t, { P: () => i });
        class i {
          async GetObject(e, t) {
            try {
              const n = await this.GetString(e);
              return n ? JSON.parse(n, t) : null;
            } catch {
              return null;
            }
          }
          async StoreObject(e, t) {
            return this.StoreString(e, JSON.stringify(t));
          }
        }
      },
      55244: (e, t, n) => {
        "use strict";
        n.d(t, { A: () => o });
        var i = n(78278);
        class o extends i.P {
          GetString(e) {
            return Promise.resolve(localStorage.getItem(e));
          }
          StoreString(e, t) {
            return localStorage.setItem(e, t), Promise.resolve();
          }
          RemoveObject(e) {
            return localStorage.removeItem(e), Promise.resolve();
          }
        }
      },
      34879: (e, t, n) => {
        "use strict";
        function i(e, t) {
          return e.m_unPID == t.m_unPID && e.m_nBrowserID == t.m_nBrowserID;
        }
        n.d(t, { m: () => o, u: () => i });
        const o = { m_unPID: 0, m_nBrowserID: -1 };
      },
      94762: (e, t, n) => {
        "use strict";
        n.d(t, { XX: () => r, lX: () => a });
        n(14337);
        var i = n(28915),
          o = n(77765);
        const r = new (class {
          m_mapManagers = new WeakMap();
          GetContextMenuManagerFromWindow(e) {
            let t = e?.ownerDocument?.defaultView || window;
            return this.GetContextMenuManager(t);
          }
          GetContextMenuManager(e) {
            let t = this.m_mapManagers.get(e);
            if (!t) {
              let n = e;
              for (; !t && n.opener; )
                (n = n.opener), (t = this.m_mapManagers.get(n));
            }
            return t || ((t = new i.z()), this.m_mapManagers.set(e, t)), t;
          }
          SetMenuManager(e, t) {
            (0, o.w)(
              void 0 === this.m_mapManagers.get(e) || !t || e == window,
              `Stomping CContextMenuManager for ${e.document.title}!`,
            ),
              this.m_mapManagers.set(e, t);
          }
          RegisterChildWindow(e, t) {
            return (
              this.m_mapManagers.set(t, this.GetContextMenuManager(e)),
              () => this.m_mapManagers.delete(t)
            );
          }
        })();
        function a(e, t, n) {
          let i,
            o,
            a,
            s = t;
          if (s?.preventDefault && s?.stopPropagation) {
            if (s.shiftKey || (s.altKey && !n?.bRootContextMenu)) return null;
            s.preventDefault(),
              s.stopPropagation(),
              (a = s.currentTarget),
              (i = s.clientX),
              (o = s.clientY);
          } else a = t;
          let l = r
            .GetContextMenuManagerFromWindow(a)
            .CreateContextMenuInstance(e, a, i, o, n);
          return l.Show(), n?.bCreateHidden && l.Hide(), l;
        }
      },
      14337: (e, t, n) => {
        "use strict";
        n.d(t, { HP: () => l });
        var i = n(34629),
          o = n(89193),
          r = n(50622),
          a = (n(27816), n(56132));
        class s {
          static s_nNextKeyValue = 1;
          m_nKey = null;
          m_ContextMenuManager;
          m_bVisible = !1;
          m_fnTakeFocus;
          m_element;
          m_rctElement;
          m_rctLabel = void 0;
          m_popupContextMenu;
          m_timerHideMenu = 0;
          m_options;
          m_position;
          m_submenu;
          m_parentInstance;
          m_elSubmenuItem = null;
          m_timerHideSubMenu = 0;
          m_fnOnHideCallback;
          constructor(e, t) {
            (0, o.Gn)(this),
              (this.m_ContextMenuManager = e),
              (this.m_rctElement = t);
          }
          get Manager() {
            return this.m_ContextMenuManager;
          }
          get key() {
            return (
              null == this.m_nKey &&
                ((this.m_nKey = s.s_nNextKeyValue), s.s_nNextKeyValue++),
              this.m_nKey
            );
          }
          SetElement(e) {
            this.m_element = e;
          }
          SetPopup(e) {
            this.m_popupContextMenu = e;
          }
          get ReactElement() {
            return this.m_rctElement;
          }
          get label() {
            return this.m_rctLabel;
          }
          get submenu() {
            return this.m_submenu;
          }
          get visible() {
            return this.m_bVisible;
          }
          get options() {
            return this.m_options;
          }
          get position() {
            return this.m_position;
          }
          SetOnHideCallback(e) {
            this.m_fnOnHideCallback = e;
          }
          Show() {
            this.CancelHideMenuTimer(),
              (this.m_bVisible = !0),
              this.m_ContextMenuManager.ShowMenu(this);
          }
          OnCancel(e = 0) {
            this.options?.onCancel && this.options.onCancel(), this.Hide(e);
          }
          Hide(e = 0) {
            e > 0
              ? (this.m_timerHideMenu = window.setTimeout(() => {
                  (this.m_timerHideMenu = 0), this.InternalHide();
                }, e))
              : this.InternalHide();
          }
          CancelHideMenuTimer() {
            this.m_timerHideMenu > 0 &&
              (clearTimeout(this.m_timerHideMenu), (this.m_timerHideMenu = 0));
          }
          SetPosition(e, t, n) {
            (this.m_options = { ...this.m_options, ...n }),
              (this.m_position.clientX = e),
              (this.m_position.clientY = t),
              (this.m_position.options = this.m_options);
          }
          ForceHide() {
            this.InternalHide();
          }
          HideIfNotInFocus() {
            this.BHasFocus() || this.BIsFocusInChildHierarchy() || this.Hide();
          }
          InternalHide() {
            this.CancelHideMenuTimer(),
              this.m_bVisible &&
                ((this.m_bVisible = !1),
                this.InternalHideSubMenu(),
                this.m_fnOnHideCallback && this.m_fnOnHideCallback(),
                this.m_ContextMenuManager.HideMenu(this));
          }
          SetTakeFocus(e) {
            this.m_fnTakeFocus = e;
          }
          ShowSubMenu(e, t) {
            return this.m_elSubmenuItem == e
              ? (this.CancelHideSubMenuTimer(),
                this.m_submenu?.TakeFocus(),
                null)
              : (this.InternalHideSubMenu(),
                (this.m_elSubmenuItem = e),
                (this.m_submenu = new c(
                  this,
                  t(),
                  e,
                  this.m_options.bForcePopup,
                )),
                this.m_submenu.Show(),
                this.m_submenu);
          }
          CancelHideSubMenuTimer() {
            this.m_timerHideSubMenu > 0 &&
              (clearTimeout(this.m_timerHideSubMenu),
              (this.m_timerHideSubMenu = 0));
          }
          HideSubMenu() {
            if (!this.m_submenu) return void this.CancelHideSubMenuTimer();
            if (this.m_timerHideSubMenu > 0) return;
            this.m_timerHideSubMenu = window.setTimeout(() => {
              this.InternalHideSubMenu(), (this.m_timerHideSubMenu = 0);
            }, 150);
          }
          OnSubMenuDismissed(e) {
            this.m_submenu == e && this.InternalHideSubMenu();
          }
          HideSelf() {
            this.m_parentInstance
              ? this.m_parentInstance.OnSubMenuDismissed(this)
              : this.InternalHide();
          }
          InternalHideSubMenu() {
            this.CancelHideSubMenuTimer(),
              this.m_submenu &&
                (this.m_submenu.m_element &&
                  this.BIsFocusInChildHierarchy() &&
                  this.TakeFocus(a.iE.k_EWindowBringToFrontAndForceOS),
                (this.m_elSubmenuItem = null),
                this.m_submenu.InternalHide(),
                (this.m_submenu = void 0));
          }
          TakeFocus(e = a.iE.k_EWindowBringToFrontAndForceOS) {
            this.m_popupContextMenu && this.m_popupContextMenu.Focus(e),
              this.m_fnTakeFocus && this.m_fnTakeFocus();
          }
          BInternalElementInParentHierarchy(e) {
            return (
              null != this.m_parentInstance &&
              (this.m_parentInstance.BIsChildElement(e) ||
                this.m_parentInstance.BInternalElementInParentHierarchy(e))
            );
          }
          BInternalElementInChildHierarchy(e) {
            return (
              null != this.m_submenu &&
              (this.m_submenu.BIsChildElement(e) ||
                this.m_submenu.BInternalElementInChildHierarchy(e))
            );
          }
          BIsChildElement(e) {
            return this.m_element
              ? r.id(this.m_element, e)
              : r.id(this.m_popupContextMenu?.root_element, e);
          }
          BHasFocus() {
            return this.m_popupContextMenu
              ? this.m_popupContextMenu.focused
              : r.id(
                  this.m_element,
                  this.m_element?.ownerDocument.activeElement,
                );
          }
          BIsFocusInChildHierarchy() {
            return (
              null != this.m_submenu &&
              (this.m_submenu.BHasFocus() ||
                this.m_submenu.BIsFocusInChildHierarchy())
            );
          }
          BIsElementInMenuHierarchy(e) {
            return (
              this.BInternalElementInParentHierarchy(e) ||
              this.BInternalElementInChildHierarchy(e)
            );
          }
          BIsSubMenuVisible() {
            return !!this.m_submenu;
          }
          SetLabel(e) {
            this.m_rctLabel = e;
          }
        }
        (0, i.Cg)([o.sH], s.prototype, "m_bVisible", void 0),
          (0, i.Cg)([o.sH.ref], s.prototype, "m_rctLabel", void 0);
        class l extends s {
          constructor(e, t, n, i, o, r) {
            super(e, t),
              (this.m_options = r || {}),
              (this.m_position = {
                element: n,
                clientX: i,
                clientY: o,
                instance: this,
                options: this.m_options,
                fnOnMenuItemSelected: () => {
                  this.Hide();
                },
              });
          }
          Show() {
            super.Show();
          }
          Hide(e = 0) {
            super.Hide(e);
          }
          ForceHide() {
            super.ForceHide();
          }
          BIsSubMenu() {
            return !1;
          }
        }
        class c extends s {
          constructor(e, t, n, i) {
            super(e.Manager, t),
              (this.m_parentInstance = e),
              (this.m_options = {
                bOverlapVertical: !0,
                strClassName: e.options.strClassName,
                bFitToWindow: e.options.bFitToWindow,
                bShiftToFitWindow: e.options.bShiftToFitWindow,
                bForcePopup: i,
              }),
              (this.m_position = {
                element: n,
                clientX: void 0,
                clientY: void 0,
                instance: this,
                options: this.m_options,
                fnOnMenuItemSelected: () => {
                  this.Hide();
                },
                bSubmenu: !0,
              });
          }
          Hide() {
            this.m_popupContextMenu
              ? window.setTimeout(() => {
                  this.m_parentInstance?.HideIfNotInFocus();
                }, 10)
              : this.m_parentInstance?.Hide();
          }
          ForceHide() {
            this.m_parentInstance?.ForceHide();
          }
          BIsSubMenu() {
            return !0;
          }
        }
      },
      28915: (e, t, n) => {
        "use strict";
        n.d(t, { z: () => s });
        var i = n(14337),
          o = n(77765),
          r = n(9907),
          a = n(37779);
        class s {
          m_callbacksMenusChanged = new r.lu();
          m_ActiveMenu;
          m_rgActiveSubmenus = [];
          m_setHiddenMenus = new Set();
          constructor() {}
          CreateContextMenuInstance(e, t, n, o, r) {
            const a = new i.HP(this, e, t, n, o, r);
            return (
              r?.bCreateHidden &&
                (this.m_setHiddenMenus.add(a),
                this.m_callbacksMenusChanged.Dispatch()),
              a
            );
          }
          get OnMenusChanged() {
            return this.m_callbacksMenusChanged;
          }
          HideActiveMenu() {
            this.m_ActiveMenu?.options.bRetainOnHide
              ? this.m_setHiddenMenus.add(this.m_ActiveMenu)
              : this.m_rgActiveSubmenus.length &&
                (this.m_rgActiveSubmenus = []),
              (this.m_ActiveMenu = void 0);
          }
          get ActiveMenu() {
            return this.m_ActiveMenu;
          }
          GetVisibleMenus() {
            return this.m_ActiveMenu
              ? [this.m_ActiveMenu, ...this.m_rgActiveSubmenus]
              : [];
          }
          GetHiddenMenus() {
            return Array.from(this.m_setHiddenMenus);
          }
          GetAllMenus() {
            let e;
            return (
              (e = this.m_ActiveMenu
                ? [
                    this.m_ActiveMenu,
                    ...this.m_rgActiveSubmenus,
                    ...Array.from(this.m_setHiddenMenus),
                  ]
                : [
                    ...this.m_rgActiveSubmenus,
                    ...Array.from(this.m_setHiddenMenus),
                  ]),
              e.sort((e, t) => e.key - t.key)
            );
          }
          BShouldRenderMouseOverlay() {
            return (
              this.m_ActiveMenu &&
              !this.m_ActiveMenu.options.bDisableMouseOverlay
            );
          }
          ShowMenu(e) {
            if (e.BIsSubMenu()) this.m_rgActiveSubmenus.push(e);
            else {
              if (e == this.m_ActiveMenu) return;
              this.m_ActiveMenu &&
                (this.m_ActiveMenu.options.bRetainOnHide &&
                  this.m_setHiddenMenus.add(this.m_ActiveMenu),
                this.m_ActiveMenu.Hide()),
                (this.m_ActiveMenu = e),
                this.m_setHiddenMenus.delete(e);
            }
            this.m_callbacksMenusChanged.Dispatch();
          }
          HideMenu(e) {
            e.BIsSubMenu()
              ? a.x9(this.m_rgActiveSubmenus, e) &&
                this.m_callbacksMenusChanged.Dispatch()
              : ((0, o.w)(e == this.m_ActiveMenu, "Call to hide inactive menu"),
                e == this.m_ActiveMenu &&
                  (this.HideActiveMenu(),
                  this.m_callbacksMenusChanged.Dispatch()));
          }
          ReleaseHiddenMenu(e) {
            this.m_setHiddenMenus.delete(e);
          }
        }
      },
      16280: (e, t, n) => {
        "use strict";
        n.d(t, { MX: () => s });
        var i = n(7470),
          o = n(50622);
        class r {
          activeObject;
          instance;
          constructor(e) {
            this.instance = new a(e, !1);
          }
        }
        class a {
          m_parent;
          m_window;
          m_container = null;
          iIntervalShow;
          m_bRemoveOnHide;
          m_reactRoot;
          constructor(e, t = !0) {
            (this.m_parent = e),
              (this.m_window = e.ownerDocument.defaultView),
              (this.m_bRemoveOnHide = t);
          }
          Show(e, t) {
            return (
              this.CancelShowInterval(),
              t
                ? new Promise((n, i) => {
                    this.iIntervalShow = this.m_window.setTimeout(() => {
                      let t = this.m_parent.ownerDocument;
                      t.defaultView &&
                        !t.defaultView.closed &&
                        (this.InternalShow(e), n());
                    }, t);
                  })
                : (this.InternalShow(e), Promise.resolve())
            );
          }
          InternalShow(e) {
            this.m_container ||
              ((this.m_container =
                this.m_parent.ownerDocument.createElement("div")),
              this.m_parent.appendChild(this.m_container)),
              this.m_reactRoot || (this.m_reactRoot = i.H(this.m_container)),
              this.m_reactRoot.render(e);
          }
          Hide(e) {
            this.CancelShowInterval(),
              e
                ? (this.iIntervalShow = this.m_window.setTimeout(() => {
                    this.InternalHide();
                  }, e))
                : this.InternalHide();
          }
          InternalHide() {
            this.m_reactRoot &&
              (this.m_reactRoot.unmount(), (this.m_reactRoot = void 0)),
              this.m_container &&
                this.m_bRemoveOnHide &&
                (this.m_parent.removeChild(this.m_container),
                (this.m_container = null));
          }
          CancelShowInterval() {
            void 0 !== this.iIntervalShow &&
              (this.m_window.clearInterval(this.iIntervalShow),
              (this.iIntervalShow = void 0));
          }
          BIsChildElement(e) {
            return this.m_container && o.id(this.m_container, e);
          }
        }
        class s {
          m_strUniqueID;
          m_mapEmbeddedHovers = new WeakMap();
          constructor(e) {
            this.m_strUniqueID = e;
          }
          ShowElementDelayed(e, t, n, i) {
            let o = this.GetEmbeddedElement(e);
            return (o.activeObject = i), o.instance.Show(n, t);
          }
          ShowElement(e, t, n) {
            let i = this.GetEmbeddedElement(e);
            (i.activeObject = n), i.instance.Show(t);
          }
          HideElement(e, t, n) {
            let i = this.GetEmbeddedElement(e);
            i.activeObject == t &&
              ((i.activeObject = void 0), i.instance.Hide(n));
          }
          GetEmbeddedElement(e) {
            let t = this.m_mapEmbeddedHovers.get(e);
            return (
              t || ((t = new r(e.body)), this.m_mapEmbeddedHovers.set(e, t)), t
            );
          }
        }
      },
      69168: (e, t, n) => {
        "use strict";
        n.d(t, {
          gs: () => w,
          kc: () => E,
          Ad: () => D,
          K9: () => A,
          Wf: () => i,
          Dr: () => o,
          yq: () => b,
          Of: () => M,
          R7: () => y,
          k5: () => I,
        });
        var i,
          o,
          r = n(34629),
          a = n(56132),
          s = n(20045),
          l = n(89193),
          c = n(63696),
          m = n(34879),
          d = n(42674),
          u = n(77765),
          h = n(7105),
          p = n(50622),
          _ = n(74002),
          g = (n(82924), n(17070)),
          C = n(69450),
          f = n(37779);
        class S {
          m_fnRender;
          m_rgLoadingLinks = [];
          constructor(e, t, n) {
            if (((this.m_rgLoadingLinks = []), n))
              for (let e = 0; e < n.length; e++) this.AddLink(n[e], !0);
            else {
              let t = e.getElementsByTagName("link");
              for (let e = 0; e < t.length; e++) {
                let n = t[e];
                this.AddLink(n, !1);
              }
            }
          }
          AddLink(e, t) {
            if (t) {
              let t = !1;
              try {
                (e.sheet && e.sheet.cssRules && 0 != e.sheet.cssRules.length) ||
                  (t = !0);
              } catch (e) {}
              t &&
                (e.addEventListener("load", this.OnLinkLoad),
                this.m_rgLoadingLinks.push(e));
            } else
              e.addEventListener("load", this.OnLinkLoad),
                this.m_rgLoadingLinks.push(e);
          }
          SetTarget(e) {
            (this.m_fnRender = e),
              0 == this.m_rgLoadingLinks.length &&
                (this.m_fnRender(), (this.m_fnRender = void 0));
          }
          OnLinkLoad(e) {
            e.currentTarget.removeEventListener("load", this.OnLinkLoad),
              f.x9(this.m_rgLoadingLinks, e.currentTarget),
              0 == this.m_rgLoadingLinks.length &&
                (this.m_fnRender?.(), (this.m_fnRender = void 0));
          }
        }
        function v() {
          return (0, g.td)() ? i.Composited : i.None;
        }
        function b(e) {
          let t = i.None;
          switch (e) {
            case o.Overlay:
              return (
                (t |= i.AlwaysOnTop),
                (t |= i.NoTaskbarIcon),
                (t |= i.NotFocusable),
                (t |= i.TransparentParentWindow),
                t
              );
            case o.Notification:
              return (
                (t |= b(o.Overlay)),
                (t |= i.NoWindowShadow),
                (t |= i.NoRoundedCorners),
                (t |= i.OverrideRedirect),
                t
              );
            case o.Tooltip:
              return (
                (t |= b(o.Overlay)),
                (t |= i.NoRoundedCorners),
                (t |= i.NoWindowShadow),
                (t |= i.TooltipHint),
                (t |= v()),
                t
              );
            case o.PopupContextMenu:
              return (
                (t |= i.NoTaskbarIcon),
                (t |= i.NoRoundedCorners),
                (t |= i.NoWindowShadow),
                (t |= i.PopUpMenuHint),
                (t |= i.TransparentParentWindow),
                (t |= v()),
                t
              );
            case o.StandaloneContextMenu:
              return (
                (t = i.NoTaskbarIcon),
                (t |= i.NoRoundedCorners),
                (t |= i.NoWindowShadow),
                (t |= i.OverrideRedirect),
                (t |= i.TransparentParentWindow),
                (t |= v()),
                t
              );
          }
        }
        function I() {
          const { ownerWindow: e } = y(),
            t = M.GetPopupForWindow(e);
          return t?.browser_info || m.m;
        }
        (0, r.Cg)([C.o], S.prototype, "OnLinkLoad", null),
          (function (e) {
            (e[(e.None = 0)] = "None"),
              (e[(e.Minimized = 1)] = "Minimized"),
              (e[(e.Hidden = 2)] = "Hidden"),
              (e[(e.TooltipHint = 4)] = "TooltipHint"),
              (e[(e.NoTaskbarIcon = 8)] = "NoTaskbarIcon"),
              (e[(e.Resizable = 16)] = "Resizable"),
              (e[(e.ScalePosition = 32)] = "ScalePosition"),
              (e[(e.ScaleSize = 64)] = "ScaleSize"),
              (e[(e.Maximized = 128)] = "Maximized"),
              (e[(e.Composited = 256)] = "Composited"),
              (e[(e.NotFocusable = 512)] = "NotFocusable"),
              (e[(e.FullScreen = 1024)] = "FullScreen"),
              (e[(e.Fullscreen_Exclusive = 2048)] = "Fullscreen_Exclusive"),
              (e[(e.ApplyBrowserScaleToDimensions = 4096)] =
                "ApplyBrowserScaleToDimensions"),
              (e[(e.AlwaysOnTop = 8192)] = "AlwaysOnTop"),
              (e[(e.NoWindowShadow = 16384)] = "NoWindowShadow"),
              (e[(e.NoMinimize = 32768)] = "NoMinimize"),
              (e[(e.PopUpMenuHint = 65536)] = "PopUpMenuHint"),
              (e[(e.IgnoreSavedSize = 131072)] = "IgnoreSavedSize"),
              (e[(e.NoRoundedCorners = 262144)] = "NoRoundedCorners"),
              (e[(e.ForceRoundedCorners = 524288)] = "ForceRoundedCorners"),
              (e[(e.OverrideRedirect = 1048576)] = "OverrideRedirect"),
              (e[(e.IgnoreSteamDisplayScale = 2097152)] =
                "IgnoreSteamDisplayScale"),
              (e[(e.TransparentParentWindow = 4194304)] =
                "TransparentParentWindow"),
              (e[(e.DisableDPIScale = 8388608)] = "DisableDPIScale");
          })(i || (i = {})),
          (function (e) {
            (e[(e.Overlay = 0)] = "Overlay"),
              (e[(e.Notification = 1)] = "Notification"),
              (e[(e.Tooltip = 2)] = "Tooltip"),
              (e[(e.PopupContextMenu = 3)] = "PopupContextMenu"),
              (e[(e.StandaloneContextMenu = 4)] = "StandaloneContextMenu");
          })(o || (o = {}));
        const w = c.createContext({ ownerWindow: window }),
          y = () => c.useContext(w);
        function E(e) {
          const { ownerWindow: t, children: n } = e,
            i = c.useMemo(() => ({ ownerWindow: t }), [t]);
          return c.createElement(w.Provider, { value: i }, n);
        }
        class D {
          m_strName;
          m_strTitle;
          m_rgParams;
          m_popup;
          m_element;
          m_renderWhenReady;
          m_bCreateHidden;
          m_bCreated = !1;
          m_onCreateRender = null;
          m_bFocused = !1;
          constructor(e, t) {
            (0, l.Gn)(this),
              (0, u.w)(
                e,
                "Name is required.  This is an internal name, different from title.",
              ),
              (this.m_strName = e);
            const { title: n, eCreationFlags: o, ...r } = t;
            (this.m_rgParams = { ...r, eCreationFlags: o ?? 0 }),
              this.m_rgParams.target_browser &&
                (this.m_strName +=
                  "_uid" + this.m_rgParams.target_browser.m_unPID),
              (this.m_bCreateHidden = !!(
                this.m_rgParams.eCreationFlags & i.Hidden
              )),
              (this.m_strTitle = n);
          }
          UpdateParamsBeforeShow(e) {
            return e;
          }
          OnDrop(e) {
            console.log("Ignoring drop onto toplevel window", e),
              e.preventDefault(),
              e.stopPropagation();
          }
          OnDragOver(e) {
            e.preventDefault(),
              (e.dataTransfer.dropEffect = "none"),
              e.stopPropagation();
          }
          OnMessage(e) {
            "window_moved" == e.data && this.OnResize(),
              "popup-created" == e.data && this.OnCreateInternal();
          }
          Show(e = a.iE.k_EWindowBringToFrontAndForceOS) {
            let t;
            (t =
              "boolean" == typeof e
                ? e
                  ? a.iE.k_EWindowBringToFrontAndForceOS
                  : a.iE.k_EWindowBringToFrontInvalid
                : e),
              window.SteamClient &&
                (this.m_rgParams.eCreationFlags |= i.Hidden),
              this.m_rgParams.eCreationFlags & i.NotFocusable &&
                (t = a.iE.k_EWindowBringToFrontInvalid),
              this.BIsValid() &&
                (this.BIsClosed()
                  ? ((this.m_popup = void 0), (this.m_element = void 0))
                  : t != a.iE.k_EWindowBringToFrontInvalid && this.Focus(t));
            let n,
              o,
              r,
              s = M.GetExistingPopup(this.m_strName);
            (s && !this.m_rgParams.replace_existing_popup) ||
              ((this.m_rgParams = this.UpdateParamsBeforeShow(this.m_rgParams)),
              s
                ? ((o = s.m_element),
                  (n = s.m_popup),
                  s.ReleasePopup(),
                  (r = s.m_renderWhenReady),
                  M.RemoveTrackedPopup(s),
                  n?.removeEventListener("beforeunload", s.OnBeforeUnloadEvent),
                  n?.removeEventListener("unload", s.OnUnload),
                  n?.removeEventListener("resize", s.OnResizeEvent),
                  n?.removeEventListener("focus", this.OnFocusInternal),
                  n?.removeEventListener("blur", this.OnBlurInternal),
                  n?.removeEventListener("drop", s.OnDrop),
                  n?.removeEventListener("dragover", s.OnDragOver),
                  n?.removeEventListener("message", this.OnMessage))
                : (({ popup: n, element: o } = T.CreatePopup(this.m_strName, {
                    ...this.m_rgParams,
                    title: this.m_strTitle,
                  })),
                  (r = new S(n.document, o))),
              n &&
                o &&
                ((n.document.title = this.m_strTitle),
                n.addEventListener("beforeunload", this.OnBeforeUnloadEvent),
                n.addEventListener("unload", this.OnUnload),
                n.addEventListener("resize", this.OnResizeEvent),
                n.addEventListener("focus", this.OnFocusInternal),
                n.addEventListener("blur", this.OnBlurInternal),
                n.addEventListener("drop", this.OnDrop),
                n.addEventListener("dragover", this.OnDragOver),
                n.addEventListener("message", this.OnMessage),
                g.TS.LANGUAGE &&
                  n.document.documentElement.setAttribute(
                    "lang",
                    (0, _.l4)() ?? "",
                  ),
                (this.m_popup = n),
                (this.m_element = o),
                (this.m_renderWhenReady = r),
                this.m_renderWhenReady?.SetTarget(() => {
                  this.m_popup &&
                    this.m_element &&
                    this.RenderInternal(this.m_popup, this.m_element, t);
                })),
              M.AddTrackedPopup(this),
              s &&
                (this.OnCreateInternal(),
                t != a.iE.k_EWindowBringToFrontInvalid && this.Focus(t)));
          }
          RemoveEventListeners() {
            this.window?.removeEventListener(
              "beforeunload",
              this.OnBeforeUnloadEvent,
            ),
              this.window?.removeEventListener("unload", this.OnUnload),
              this.window?.removeEventListener("resize", this.OnResizeEvent),
              this.window?.removeEventListener("focus", this.OnFocusInternal),
              this.window?.removeEventListener("blur", this.OnBlurInternal),
              this.window?.removeEventListener("drop", this.OnDrop),
              this.window?.removeEventListener("dragover", this.OnDragOver),
              this.window?.removeEventListener("message", this.OnMessage);
          }
          RenderInternal(e, t, n) {
            this.m_bCreated
              ? (this.browser_info &&
                  (0, s.BK)(this.browser_info.m_eBrowserType) &&
                  (t.ownerDocument.body.className += " VR"),
                this.Render(e, t),
                this.OnLoad(),
                e?.SteamClient &&
                  !this.m_bCreateHidden &&
                  (n != a.iE.k_EWindowBringToFrontInvalid
                    ? e.SteamClient.Window.BringToFront(n)
                    : e.SteamClient.Window.ShowWindow()))
              : (this.m_onCreateRender = () => this.RenderInternal(e, t, n));
          }
          OnCreateInternal() {
            this.m_bCreated ||
              ((this.m_bCreated = !0),
              this.OnCreate(),
              this.m_onCreateRender &&
                (this.m_onCreateRender(), (this.m_onCreateRender = null)));
          }
          OnCreate() {}
          OnResizeEvent() {
            this.OnResize();
          }
          OnBeforeUnloadEvent() {
            this.OnBeforeUnload();
          }
          OnUnload(e) {
            this.RemoveEventListeners(),
              M.RemoveTrackedPopup(this),
              this.OnClose(),
              (this.m_popup = void 0);
          }
          get browser_info() {
            return this.m_rgParams.target_browser;
          }
          get window() {
            return this.m_popup;
          }
          get root_element() {
            return this.m_element;
          }
          get title() {
            return this.m_strTitle;
          }
          set title(e) {
            (this.m_strTitle = e),
              this.m_popup && (this.m_popup.document.title = this.m_strTitle);
          }
          get params() {
            return this.m_rgParams;
          }
          Focus(e = a.iE.k_EWindowBringToFrontAndForceOS) {
            e != a.iE.k_EWindowBringToFrontInvalid &&
              (this.m_popup &&
              void 0 !== this.m_popup.SteamClient &&
              void 0 !== this.m_popup.SteamClient.Window
                ? this.m_popup.SteamClient.Window.BringToFront(e)
                : this.m_popup && this.m_popup.focus());
          }
          Close() {
            this.m_popup &&
              ((0, d.Fj)(this.m_popup.window, "Window.Close")
                ? this.m_popup.window.SteamClient.Window.Close()
                : this.m_popup.window.close());
          }
          GetName() {
            return this.m_strName;
          }
          BIsValid() {
            return !!this.m_popup;
          }
          BIsClosed() {
            return !this.m_popup || this.m_popup.closed;
          }
          BIsVisible() {
            return !(
              !this.m_popup ||
              this.m_popup.closed ||
              "visible" != this.m_popup.document.visibilityState
            );
          }
          BIsFocused() {
            return this.BIsVisible() && !!this.m_popup?.document.hasFocus();
          }
          OnFocusInternal() {
            this.m_popup &&
              this.m_popup.document.body.classList.add("WindowFocus"),
              (this.m_bFocused = !0),
              this.OnFocus();
          }
          OnBlurInternal() {
            this.m_popup &&
              this.m_popup.document.body.classList.remove("WindowFocus"),
              (this.m_bFocused = !1),
              this.OnBlur();
          }
          get focused() {
            return this.m_bFocused;
          }
          GetWindowRestoreDetails() {
            return (0, d.Fj)(this.m_popup, "Window.GetWindowRestoreDetails") &&
              !this.m_popup.closed
              ? this.m_popup.SteamClient.Window.GetWindowRestoreDetails()
              : Promise.resolve("");
          }
          IsMinimized() {
            return (0, d.Fj)(this.m_popup, "Window.IsWindowMinimized") &&
              !this.m_popup.closed
              ? this.m_popup.SteamClient.Window.IsWindowMinimized()
              : Promise.resolve(!1);
          }
          IsMaximized() {
            return (0, d.Fj)(this.m_popup, "Window.IsWindowMaximized") &&
              !this.m_popup.closed
              ? this.m_popup.SteamClient.Window.IsWindowMaximized()
              : Promise.resolve(!1);
          }
          ReleasePopup() {
            this.OnClose(), (this.m_popup = null);
          }
          OnResize() {
            this.IsMaximized().then((e) => {
              e
                ? this.m_popup?.document.body.classList.add("Maximized")
                : this.m_popup?.document.body.classList.remove("Maximized");
            });
          }
          OnBeforeUnload() {}
          OnFocus() {}
          OnBlur() {}
        }
        (0, r.Cg)([l.sH], D.prototype, "m_bFocused", void 0),
          (0, r.Cg)([C.o], D.prototype, "OnMessage", null),
          (0, r.Cg)([C.o], D.prototype, "RenderInternal", null),
          (0, r.Cg)([C.o], D.prototype, "OnCreateInternal", null),
          (0, r.Cg)([C.o], D.prototype, "OnResizeEvent", null),
          (0, r.Cg)([C.o], D.prototype, "OnBeforeUnloadEvent", null),
          (0, r.Cg)([C.o], D.prototype, "OnUnload", null),
          (0, r.Cg)([C.o], D.prototype, "OnFocusInternal", null),
          (0, r.Cg)([C.o], D.prototype, "OnBlurInternal", null);
        class A extends D {
          m_strSavedDimensionsKey;
          m_strInitialSavedDimensionsKey;
          m_strInitialRestoreDetails;
          m_bExpires;
          constructor(e, t, n, i) {
            super(e, n), this.SetSavedDimensionsKey(t), (this.m_bExpires = i);
          }
          BIsInOverlay() {
            return (
              this.browser_info &&
              0 != this.browser_info.m_unPID &&
              -1 != this.browser_info.m_nBrowserID
            );
          }
          SetSavedDimensionsKey(e) {
            this.m_strSavedDimensionsKey = e;
          }
          UpdateParamsBeforeShow(e) {
            return (
              !this.m_strSavedDimensionsKey ||
              e.bIgnoreSavedDimensions ||
              e.strRestoreDetails
                ? e.strRestoreDetails &&
                  ((this.m_strInitialSavedDimensionsKey =
                    this.GetSavedDimensionsKey()),
                  M.SetRestoreDetails(
                    this.m_strInitialSavedDimensionsKey,
                    e.strRestoreDetails,
                    this.m_bExpires,
                  ))
                : ((this.m_strInitialSavedDimensionsKey =
                    this.GetSavedDimensionsKey()),
                  (e.strRestoreDetails = M.GetRestoreDetails(
                    this.m_strInitialSavedDimensionsKey,
                  ))),
              e
            );
          }
          OnLoad() {
            this.GetWindowRestoreDetails().then((e) => {
              (this.m_strInitialRestoreDetails = e), this.OnResizeComplete(e);
            });
          }
          OnResize() {
            super.OnResize(), this.QueryAndStoreWindowPosition();
          }
          OnResizeComplete(e) {}
          QueryAndStoreWindowPosition() {
            if (this.m_strInitialRestoreDetails) {
              let e = this.GetSavedDimensionsKey();
              this.m_popup?.setTimeout(() => {
                this.GetWindowRestoreDetails().then((t) => {
                  let n =
                    this.m_rgParams.strRestoreDetails == t &&
                    e == this.m_strInitialSavedDimensionsKey;
                  this.m_popup &&
                    this.m_strSavedDimensionsKey &&
                    t &&
                    !n &&
                    (M.SetRestoreDetails(e, t, this.m_bExpires),
                    (this.m_rgParams.strRestoreDetails = t),
                    (this.m_strInitialSavedDimensionsKey = e),
                    this.OnResizeComplete(t));
                });
              }, 30);
            }
          }
          OnBeforeUnload() {
            this.QueryAndStoreWindowPosition(), super.OnBeforeUnload();
          }
          OnClose() {}
          SaveWindowPosition(e) {
            M.SetRestoreDetails(this.GetSavedDimensionsKey(), e, !1),
              (this.m_rgParams.strRestoreDetails = e);
          }
        }
        (0, r.Cg)([C.o], A.prototype, "QueryAndStoreWindowPosition", null);
        class T {
          m_bShuttingDown = !1;
          m_mapPopups = l.sH.map([], { deep: !1 });
          m_rgShutdownCallbacks = [];
          m_rgPopupCreatedCallbacks = [];
          m_unCurrentAccountID = 0;
          m_mapRestoreDetails = new Map();
          m_bSaveRequired = !1;
          m_DynamicCSSObserver;
          constructor() {
            if (
              !{
                NODE_ENV: "production",
                STEAM_BUILD: "buildbot",
                VALVE_BUILD: "false",
              }.MOBILE_BUILD &&
              "addEventListener" in window
            ) {
              window.addEventListener("beforeunload", (e) => {
                this.m_bShuttingDown = !0;
                for (let e of this.m_rgShutdownCallbacks) e();
                let t = [];
                this.m_mapPopups.forEach((e) => {
                  e.BIsValid() && !e.BIsClosed() && t.push(e);
                });
                for (let e of t)
                  e.window?.SteamClient.Browser
                    ?.SetShouldExitSteamOnBrowserClosed &&
                    e.window.SteamClient.Browser.SetShouldExitSteamOnBrowserClosed(
                      !1,
                    ),
                    e.window?.SteamClient.Window.SetHideOnClose &&
                      e.window?.SteamClient.Window.SetHideOnClose(!1),
                    e.Close();
                this.m_bSaveRequired && this.SaveSavedDimensionStore(),
                  this.m_mapPopups.clear();
              });
              let e = document.querySelector("head");
              (0, u.w)(e, "Couldn't find head element"),
                e &&
                  ((this.m_DynamicCSSObserver = new MutationObserver(() => {
                    const e = p.yU();
                    this.m_mapPopups.forEach((t) => {
                      p.lc(t.window.document, e, !1);
                    });
                  })),
                  this.m_DynamicCSSObserver.observe(e, { childList: !0 }));
            }
          }
          BAnyPopupHasFocus() {
            for (const e of this.m_mapPopups.values()) if (e.focused) return !0;
            return !1;
          }
          BAnyMenuHasFocus() {
            for (const e of this.m_mapPopups.values())
              if (e.focused && (e.params.eCreationFlags ?? 0) & i.NoTaskbarIcon)
                return !0;
            return !1;
          }
          SetCurrentLoggedInAccountID(e) {
            this.m_unCurrentAccountID != e &&
              ((this.m_unCurrentAccountID = e),
              e
                ? this.LoadSavedDimensionStore()
                : this.ClearSavedDimensionStore());
          }
          AddShutdownCallback(e) {
            this.m_rgShutdownCallbacks.push(e);
          }
          AddPopupCreatedCallback(e) {
            this.m_rgPopupCreatedCallbacks.push(e);
          }
          AddTrackedPopup(e) {
            this.m_mapPopups.set(e.GetName(), e);
            for (let t of this.m_rgPopupCreatedCallbacks) t(e);
          }
          RemoveTrackedPopup(e) {
            this.m_mapPopups.delete(e.GetName());
          }
          GetExistingPopup(e) {
            return this.m_mapPopups.get(e);
          }
          GetPopups() {
            return this.m_mapPopups.values();
          }
          GetPopupForWindow(e) {
            for (const t of this.m_mapPopups.values())
              if (t.window === e) return t;
          }
          ClosePopupsOwnedByBrowser(e) {
            this.m_mapPopups.forEach((t) => {
              t.browser_info &&
                t.browser_info.m_nBrowserID == e.m_nBrowserID &&
                t.browser_info.m_unPID == e.m_unPID &&
                t.Close();
            });
          }
          static CreatePopup(e, t) {
            let n = t.dimensions || {},
              i = n.width || 300,
              o = n.height || 300,
              r = t.title,
              a = "width=" + i + ",height=" + o;
            void 0 !== n.left && (a += ",left=" + n.left),
              void 0 !== n.top && (a += ",top=" + n.top),
              (a += ",resizeable,status=0,toolbar=0,menubar=0,location=0");
            let s = "about:blank",
              l = [];
            l.push("createflags=" + t.eCreationFlags),
              t.minWidth && l.push("minwidth=" + t.minWidth),
              t.minHeight && l.push("minheight=" + t.minHeight),
              t.maxWidth &&
                t.maxWidth != 1 / 0 &&
                l.push("maxwidth=" + t.maxWidth),
              t.maxHeight &&
                t.maxHeight != 1 / 0 &&
                l.push("maxheight=" + t.maxHeight),
              t.target_browser
                ? (l.push("pid=" + t.target_browser.m_unPID),
                  l.push("browser=" + t.target_browser.m_nBrowserID),
                  t.target_browser.m_eBrowserType
                    ? l.push("browserType=" + t.target_browser.m_eBrowserType)
                    : t.browserType && l.push("browserType=" + t.browserType),
                  t.availscreenwidth &&
                    t.availscreenheight &&
                    (l.push("screenavailwidth=" + t.availscreenwidth),
                    l.push("screenavailheight=" + t.availscreenheight)))
                : t.browserType && l.push("browserType=" + t.browserType),
              t.strVROverlayKey && l.push("vrOverlayKey=" + t.strVROverlayKey),
              t.strRestoreDetails &&
                l.push("restoredetails=" + t.strRestoreDetails),
              t.window_opener_id && l.push("openerid=" + t.window_opener_id),
              t.parent_container_popup_id &&
                l.push("parentcontainerpopupid=" + t.parent_container_popup_id),
              t.center_on_window &&
                void 0 === n.left &&
                void 0 === n.top &&
                l.push(
                  "centerOnBrowserID=" +
                    t.center_on_window.SteamClient.Browser.GetBrowserID(),
                ),
              t.strUserAgent && l.push("useragent=" + t.strUserAgent),
              t.hwndParent && l.push("hwndParent=" + t.hwndParent),
              t.bPinned && l.push("pinned=true"),
              t.bModal && l.push("modal=true"),
              l && (s += "?" + l.join("&"));
            let c = (t.owner_window || window).open(s, e, a);
            if (!c)
              return (
                console.error(
                  `Failed to create popup, browser/CEF may be blocking popups for "${window.location.origin}"`,
                ),
                {}
              );
            let m = "";
            t.html_class && (m = `class="${t.html_class}"`);
            let d = "";
            t.body_class && (d = `class="${t.body_class}"`);
            let u = "";
            t.popup_class && (u = `class="${t.popup_class}"`);
            let h = `<!DOCTYPE html><html ${m}><head><title></title></head><body ${d}><div id="popup_target" ${u}></div></body></html>`;
            return (
              c.document.write(h),
              (c.document.title = r),
              p.Oe(c, p.yU()),
              { popup: c, element: c.document.getElementById("popup_target") }
            );
          }
          BShuttingDown() {
            return this.m_bShuttingDown;
          }
          GetLocalStorageKey() {
            return "PopupSavedDimensions_" + this.m_unCurrentAccountID;
          }
          LoadSavedDimensionStore() {
            if (!this.m_unCurrentAccountID) return;
            let e = this.GetLocalStorageKey();
            this.m_mapRestoreDetails.clear();
            let t = window.localStorage.getItem(e);
            if (t)
              try {
                let e = JSON.parse(t);
                this.m_mapRestoreDetails = new Map(e);
              } catch (e) {}
          }
          SaveSavedDimensionStore() {
            if (!this.m_unCurrentAccountID || !this.m_bSaveRequired) return;
            let e = this.GetLocalStorageKey(),
              t = JSON.stringify(Array.from(this.m_mapRestoreDetails));
            try {
              window.localStorage.setItem(e, t), (this.m_bSaveRequired = !1);
            } catch (n) {
              if ("name" in n && "QuotaExceededError" == n.name) {
                console.log("Quota exceeded");
                for (let t of Object.keys(window.localStorage))
                  t.startsWith("PopupSavedDimensions_") &&
                    t != e &&
                    window.localStorage.removeItem(t);
                window.localStorage.setItem(e, t), (this.m_bSaveRequired = !1);
              }
            }
          }
          DebouncedSaveSavedDimensionStore() {
            this.SaveSavedDimensionStore();
          }
          ClearSavedDimensionStore() {
            this.m_mapRestoreDetails?.clear(), (this.m_bSaveRequired = !1);
          }
          GetRestoreDetails(e) {
            if (!this.m_mapRestoreDetails?.has(e)) return "";
            let t = this.m_mapRestoreDetails.get(e);
            return (
              (t.last_used = Date.now()),
              (this.m_bSaveRequired = !0),
              t.strRestoreDetails
            );
          }
          SetRestoreDetails(e, t, n) {
            if (e) {
              if (t) {
                if (this.m_mapRestoreDetails.size > 50) {
                  let e = null,
                    t = Date.now();
                  for (let n of Array.from(this.m_mapRestoreDetails.keys())) {
                    let i = this.m_mapRestoreDetails.get(n);
                    i.last_used < t &&
                      i.bExpires &&
                      ((t = i.last_used), (e = n));
                  }
                  e && this.m_mapRestoreDetails.delete(e);
                }
                let i = {
                  strRestoreDetails: t,
                  last_used: Date.now(),
                  bExpires: n,
                };
                this.m_mapRestoreDetails.set(e, i);
              } else this.m_mapRestoreDetails.delete(e);
              (this.m_bSaveRequired = !0),
                this.m_bShuttingDown
                  ? this.SaveSavedDimensionStore()
                  : this.DebouncedSaveSavedDimensionStore();
            }
          }
        }
        (0, r.Cg)(
          [C.o, (0, h.s)(100)],
          T.prototype,
          "DebouncedSaveSavedDimensionStore",
          null,
        );
        const M = new T();
        window.g_PopupManager = M;
      },
      8246: (e, t, n) => {
        "use strict";
        n.d(t, { W: () => a, p: () => s });
        var i = n(63696),
          o = n(37779);
        const r = i.createContext({ body_class: "" });
        function a() {
          return i.useContext(r);
        }
        function s(e) {
          const { body_class: t, children: n } = e,
            o = a(),
            s = i.useMemo(() => ({ body_class: l(o.body_class, t) }), [o, t]);
          return i.createElement(r.Provider, { value: s }, n);
        }
        function l(e, t) {
          const n = e ? e.split(/\s/) : [];
          return n.push(...(t ? t.split(/\s/) : [])), o.Ew(n).join(" ");
        }
      },
      22433: (e, t, n) => {
        "use strict";
        n.d(t, { OJ: () => m, h3: () => u });
        var i = n(63696),
          o = n(69168),
          r = n(8246),
          a = n(56132),
          s = n(77171),
          l = n(58881),
          c = n(38464);
        function m(e, t, n) {
          const o = i.useRef(void 0),
            [l, c] = i.useState(void 0),
            m = (0, r.W)();
          return (
            o.current ||
              (o.current = new d(
                e,
                (function (e, t) {
                  return {
                    ...e,
                    body_class: (0, s.A)(e.body_class, t.body_class),
                  };
                })(t, m),
                c,
              )),
            (o.current.m_callbacks = n),
            i.useEffect(() => {
              if (!o.current?.params.bNoInitialShow) {
                let e = o.current?.params.bNoFocusOnShow
                  ? a.iE.k_EWindowBringToFrontWithoutForcingOS
                  : a.iE.k_EWindowBringToFrontAndForceOS;
                o.current?.Show(e);
              }
              return () => {
                (o.current.m_callbacks = void 0),
                  o.current.window?.SteamClient.Window.SetHideOnClose &&
                    o.current.window?.SteamClient.Window.SetHideOnClose(!1),
                  o.current.Close();
              };
            }, []),
            i.useEffect(() => {
              o.current.window?.SteamClient.Window.SetHideOnClose &&
                o.current.window?.SteamClient.Window.SetHideOnClose(
                  !!t.bHideOnClose,
                );
            }, [t.bHideOnClose]),
            { popup: o.current.window, element: l, popupObj: o.current }
          );
        }
        class d extends o.Ad {
          m_callbacks;
          m_fnReadyToRender;
          constructor(e, t, n) {
            super(e, t), (this.m_fnReadyToRender = n);
          }
          DoCallback(e) {
            this.m_callbacks?.[e]?.(this.m_popup, this.m_element);
          }
          UpdateParamsBeforeShow(e) {
            return this.m_callbacks?.updateParamsBeforeShow
              ? this.m_callbacks.updateParamsBeforeShow(e)
              : e;
          }
          OnCreate() {
            this.m_callbacks?.onCreate &&
              this.m_callbacks.onCreate(this.m_popup, this.m_element);
          }
          OnBlur() {
            this.DoCallback("onBlur");
          }
          OnFocus() {
            this.DoCallback("onFocus");
          }
          OnLoad() {
            this.DoCallback("onLoad");
          }
          OnResize() {
            this.DoCallback("onResize");
          }
          OnClose() {
            this.DoCallback("onClose");
          }
          Render(e, t) {
            this.m_fnReadyToRender(t);
          }
        }
        function u(e) {
          let t = (0, l.LH)();
          i.useEffect(() => {
            let e = new c.b2(t);
            o.Of.SetCurrentLoggedInAccountID(e.GetAccountID());
          }, [t]);
          const n = i.useRef(),
            r = i.useCallback(
              (t) => (
                t.bIgnoreSavedDimensions || t.strRestoreDetails
                  ? t.strRestoreDetails &&
                    o.Of.SetRestoreDetails(e, t.strRestoreDetails, !1)
                  : (t.strRestoreDetails = o.Of.GetRestoreDetails(e)),
                t
              ),
              [e],
            ),
            a = i.useCallback(
              (t, i, r) => {
                n.current &&
                  t.setTimeout(() => {
                    t.SteamClient.Window.GetWindowRestoreDetails().then((i) => {
                      let a = n.current != i;
                      t &&
                        i &&
                        (a || r) &&
                        (o.Of.SetRestoreDetails(e, i, !1), (n.current = i));
                    });
                  }, 30);
              },
              [e],
            ),
            s = i.useCallback(
              (e, t) => {
                e.SteamClient.Window.GetWindowRestoreDetails().then((i) => {
                  (n.current = i), a(e, t, !0);
                });
              },
              [a],
            );
          return e
            ? { updateParamsBeforeShow: r, onResize: a, onLoad: s }
            : null;
        }
      },
      71465: (e, t, n) => {
        "use strict";
        n.d(t, { JT: () => m, Uy: () => c });
        var i = n(45518),
          o = n(51525),
          r = n(61416),
          a = n(12744),
          s = n(26721);
        function l() {
          const e = (0, a.KV)();
          return (0, r.I)({
            queryKey: ["AccountPrivateApps"],
            queryFn: async () => {
              const t = i.w.Init(o.Fn),
                n = await o.c4.GetPrivateAppList(e, t);
              return new Set(n.Body().private_apps(!0).appids());
            },
            enabled: !!s.iA.accountid,
          });
        }
        function c(e) {
          const { data: t } = l();
          return !!s.iA.accountid && !!e && (t ? t.has(e) : void 0);
        }
        function m(e, t) {
          e.setQueryData(["AccountPrivateApps"], () => new Set(t));
        }
      },
      23117: (e, t, n) => {
        "use strict";
        n.d(t, { NK: () => s, bK: () => i, dF: () => l, w2: () => c });
        var i,
          o = n(69756),
          r = n(91581),
          a = n(74002);
        !(function (e) {
          (e[(e.k_eLibrary = 1)] = "k_eLibrary"),
            (e[(e.k_eWishlist = 2)] = "k_eWishlist"),
            (e[(e.k_eFollowing = 4)] = "k_eFollowing"),
            (e[(e.k_eRecommended = 8)] = "k_eRecommended"),
            (e[(e.k_eSteam = 16)] = "k_eSteam"),
            (e[(e.k_eRequired = 32)] = "k_eRequired"),
            (e[(e.k_eFeatured = 64)] = "k_eFeatured"),
            (e[(e.k_eCurator = 128)] = "k_eCurator"),
            (e[(e.k_eReposted = 256)] = "k_eReposted");
        })(i || (i = {}));
        class s {
          clanid;
          unique_id;
          event_type;
          appid;
          start_time;
          appInfo;
          clanInfo;
          score;
          GetSource() {
            return this.appInfo ? this.appInfo.source : this.clanInfo.source;
          }
          static GetEntityNameForID(e, t) {
            if (e) return o.A.Get().GetApp(e)?.GetName();
            if (t) {
              const e = r.ac.GetClanInfoByClanAccountID(t);
              if (e) return e.group_name;
            }
            return (0, a.we)("#EventCalendar_MuteApp_Unknown");
          }
          static BHasEntityNameForID(e, t) {
            return e
              ? Boolean(o.A.Get().GetApp(e)?.GetName())
              : !!t && !!r.ac.GetClanInfoByClanAccountID(t)?.group_name;
          }
          GetEntityName() {
            return s.GetEntityNameForID(this.appid, this.clanid);
          }
          GetGameCapsule() {
            if (this.appInfo)
              return o.A.Get()
                .GetApp(this.appInfo.appid)
                ?.GetAssets()
                ?.GetMainCapsuleURL();
            if (this.clanInfo) {
              let e = r.ac.GetClanInfoByClanAccountID(this.clanInfo.clanid);
              if (e) return e.avatar_full_url;
            }
            return (0, a.we)("#EventCalendar_MuteApp_Unknown");
          }
          GetGameIcon() {
            if (this.appInfo)
              return o.A.Get()
                .GetApp(this.appInfo.appid)
                ?.GetAssets()
                ?.GetCommunityIconURL();
            if (this.clanInfo) {
              let e = r.ac.GetClanInfoByClanAccountID(this.clanInfo.clanid);
              if (e) return e.avatar_full_url;
            }
            return (0, a.we)("#EventCalendar_MuteApp_Unknown");
          }
        }
        class l {
          appid;
          source;
          playtime;
          last_played;
          wishlist_added;
        }
        class c {
          clanid;
          source;
        }
      },
      45365: (e, t, n) => {
        "use strict";
        n.d(t, { RR: () => a });
        var i = n(63696),
          o = n(59105),
          r = n(61305);
        n(77631), n(17070), n(70169);
        function a(e) {
          const [t, n] = (0, i.useState)(() => o.O3.GetClanEventModel(e)),
            a = (0, r.m)("usePartnerEventByEventGID");
          return (
            (0, i.useEffect)(() => {
              e &&
                t?.GID != e &&
                (o.O3.Init(),
                o.O3.LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs(
                  [e],
                  [],
                  a,
                ).then((t) => {
                  1 != t?.length || t[0].GID != e || a.token.reason || n(t[0]);
                }));
            }, [e, t, a]),
            t
          );
        }
      },
      38012: (e, t, n) => {
        "use strict";
        n.d(t, { D: () => g });
        var i = n(34629),
          o = n(37322),
          r = n(58663),
          a = n(45518),
          s = n(69450),
          l = n(83957),
          c = n.n(l),
          m = n(67033),
          d = n(77631),
          u = n(63689);
        function h(e) {
          try {
            if (!e || "string" != typeof e) return null;
            const t = e.split(".");
            if (3 !== t.length) return null;
            const [n, i] = t,
              o = (0, u.he)(n),
              r = (0, u.he)(i);
            return o && r
              ? { header: JSON.parse(o), body: JSON.parse(r) }
              : null;
          } catch (e) {
            return (
              console.error(
                `Exception while attempting to decode token: "${e}"`,
              ),
              null
            );
          }
        }
        function p(e) {
          return e ? e.body.exp : 0;
        }
        var _ = n(90556);
        class g {
          m_ServiceTransport;
          m_AnonymousServiceTransport;
          m_strWebAPIBaseURL;
          m_webApiAccessToken = "";
          m_bJsonMode = !1;
          m_strSpoofedSteamID = "";
          m_bJWTToken = !1;
          m_fnRequestNewAccessToken;
          m_refreshAccessTokenPromise;
          m_dtLastExpireCheck = 0;
          constructor(e, t, n = !1, i) {
            (this.m_strWebAPIBaseURL = e),
              (this.m_webApiAccessToken = t),
              (this.m_bJsonMode = n),
              (this.m_fnRequestNewAccessToken = i),
              (this.m_bJWTToken = null != h(t)),
              (this.m_ServiceTransport = {
                SendMsg: this.SendMsgAndAwaitResponse.bind(this, {
                  bSendAuth: !0,
                }),
                SendNotification: this.SendNotification.bind(this, {
                  bSendAuth: !0,
                }),
                MakeReady: this.MakeReady.bind(this),
              }),
              (this.m_AnonymousServiceTransport = {
                SendMsg: this.SendMsgAndAwaitResponse.bind(this, {
                  bSendAuth: !1,
                }),
                SendNotification: this.SendNotification.bind(this, {
                  bSendAuth: !1,
                }),
                MakeReady: this.MakeReady.bind(this),
              });
            const o = (0, _.VY)("steamLoginSpoofSteamID");
            o && /[0-9]+/g.test(o) && (this.m_strSpoofedSteamID = o);
          }
          WaitUntilLoggedOn() {
            return Promise.resolve();
          }
          GetServerRTime32() {
            return Number(new Date());
          }
          get steamid() {
            return new d.b();
          }
          RTime32ToDate(e) {
            return new Date(1e3 * e);
          }
          MakeReady() {
            return Promise.resolve({ result: 1, message: "ready" });
          }
          GetServiceTransport() {
            return this.m_ServiceTransport;
          }
          GetWebAPIAccessToken() {
            return this.m_webApiAccessToken;
          }
          GetAnonymousServiceTransport() {
            return this.m_AnonymousServiceTransport;
          }
          async SendMsgAndAwaitResponse(e, t, n, i, o) {
            let s = null;
            try {
              if (this.m_bJWTToken && e.bSendAuth) {
                const e = Date.now() / 1e3;
                if (this.m_refreshAccessTokenPromise)
                  await this.m_refreshAccessTokenPromise;
                else if (
                  this.m_fnRequestNewAccessToken &&
                  e - this.m_dtLastExpireCheck > 60
                ) {
                  this.m_dtLastExpireCheck = e;
                  const t = h(this.m_webApiAccessToken);
                  t &&
                    (function (e) {
                      const t = p(e),
                        n = (function (e) {
                          return e ? e.body.nbf || e.body.iat : 0;
                        })(e);
                      let i = 900;
                      const o = t - n;
                      return (
                        o < 1350 && (i = o <= 60 ? 0 : 60),
                        p(e) - i < Date.now() / 1e3
                      );
                    })(t) &&
                    ((this.m_refreshAccessTokenPromise =
                      this.m_fnRequestNewAccessToken()),
                    (this.m_webApiAccessToken =
                      await this.m_refreshAccessTokenPromise),
                    (this.m_refreshAccessTokenPromise = void 0));
                }
              }
              let l = await this.Send(e, t, n, o);
              if (200 != l.status || !l.data) throw new Error("Request Error");
              if (
                ((s = a.w.Init(i, 147)),
                l.headers &&
                  (l.headers["x-eresult"] &&
                    s.Hdr().set_eresult(parseInt(l.headers["x-eresult"])),
                  l.headers["x-error_message"] &&
                    s.Hdr().set_error_message(l.headers["x-error_message"])),
                this.m_bJsonMode)
              )
                s.SetBodyJSON(l.data.response);
              else {
                let e = new m.pV(l.data),
                  t = new r.BinaryReader(
                    e.GetPacket(),
                    e.TellGet(),
                    e.GetCountBytesRemaining(),
                  );
                i.deserializeBinaryFromReader(s.Body(), t);
              }
              0;
            } catch (t) {
              const n =
                  t &&
                  "object" == typeof t &&
                  "response" in t &&
                  401 === t?.response?.status,
                o = n ? "Unauthorized" : null;
              (s = this.CreateFailedMsgProtobuf(i, 3, o)),
                n &&
                  !this.m_refreshAccessTokenPromise &&
                  this.m_bJWTToken &&
                  e.bSendAuth &&
                  this.m_fnRequestNewAccessToken &&
                  ((this.m_refreshAccessTokenPromise =
                    this.m_fnRequestNewAccessToken()),
                  (this.m_webApiAccessToken =
                    await this.m_refreshAccessTokenPromise),
                  (this.m_refreshAccessTokenPromise = void 0));
            }
            return s;
          }
          SendNotification(e, t, n, i) {
            return this.Send(e, t, n, i), !0;
          }
          Send(e, t, n, i) {
            let r = this.CreateWebAPIURL(t);
            if (!r) throw "Couldn't find service name " + t;
            let a = n.SerializeBody(),
              s = o.iI(a);
            const l = i?.eWebAPIKeyRequirement;
            let m = 0 == i?.ePrivilege && 1 == l,
              d = {
                responseType: this.m_bJsonMode ? "json" : "arraybuffer",
                params: {},
                headers: i?.bConstMethod
                  ? {}
                  : { "Content-Type": "multipart/form-data" },
              };
            e.bSendAuth ||
              1 == l ||
              console.error(
                `Attempting to invoke service ${t} without auth, but auth is required.`,
              ),
              this.m_webApiAccessToken &&
                e.bSendAuth &&
                !m &&
                ((d.params.access_token = this.m_webApiAccessToken),
                (d.params.spoof_steamid = this.m_strSpoofedSteamID));
            let u = i?.bConstMethod;
            if (u)
              return (
                (d.params.origin = self.origin),
                this.m_bJsonMode
                  ? (d.params.input_json = JSON.stringify(n.Body().toObject()))
                  : (d.params.input_protobuf_encoded = s),
                c().get(r, d)
              );
            {
              const e = new FormData();
              return (
                this.m_bJsonMode
                  ? e.append("input_json", JSON.stringify(n.Body().toObject()))
                  : e.append("input_protobuf_encoded", s),
                c().post(r, e, d)
              );
            }
          }
          CreateWebAPIURL(e) {
            let t = e.match(/([^\.]+)\.(.+)#(\d+)/);
            return t && 4 == t.length
              ? `${this.m_strWebAPIBaseURL}I${t[1]}Service/${t[2]}/v${t[3]}`
              : null;
          }
          CreateFailedMsgProtobuf(e, t, n) {
            let i = a.w.Init(e);
            return (
              i.Hdr().set_eresult(2),
              i.Hdr().set_transport_error(t),
              n && i.Hdr().set_error_message(n),
              i
            );
          }
        }
        (0, i.Cg)([s.o], g.prototype, "SendMsgAndAwaitResponse", null),
          (0, i.Cg)([s.o], g.prototype, "SendNotification", null),
          (0, i.Cg)([s.o], g.prototype, "Send", null);
      },
      70169: (e, t, n) => {
        "use strict";
        n.d(t, { IU: () => l, by: () => c, sc: () => a });
        var i = n(17070),
          o = n(48325),
          r = n(77765);
        const a = 0,
          s = "061818254b2c99ac49e6626adb128ed1282a392f",
          l = 120;
        class c {
          m_unAppID;
          m_bInitialized = !1;
          m_strName;
          m_strIconURL;
          m_dtUpdatedFromServer;
          m_eAppType;
          constructor(e) {
            this.m_unAppID = e;
          }
          get appid() {
            return this.m_unAppID;
          }
          get is_initialized() {
            return this.m_bInitialized;
          }
          get is_valid() {
            return this.m_bInitialized && !!this.m_strName;
          }
          get name() {
            return this.m_strName;
          }
          get icon_url_no_default() {
            return this.m_strIconURL && this.BuildAppURL(this.m_strIconURL, s);
          }
          get icon_url() {
            return this.BuildAppURL(this.m_strIconURL, s);
          }
          get time_updated_from_server() {
            return this.m_dtUpdatedFromServer;
          }
          get apptype() {
            return this.m_eAppType;
          }
          BIsApplicationOrTool() {
            return 4 == this.apptype || 2 == this.apptype;
          }
          BuildAppURL(e, t) {
            return e
              ? i.TS.MEDIA_CDN_COMMUNITY_URL +
                  "images/apps/" +
                  this.appid +
                  "/" +
                  e +
                  ".jpg"
              : (0, o.t)(t);
          }
          DeserializeFromMessage(e) {
            (this.m_bInitialized = !0),
              (this.m_strName = e.name()),
              (this.m_strIconURL = e.icon()),
              (this.m_dtUpdatedFromServer = new Date()),
              (this.m_eAppType = e.app_type());
          }
          DeserializeFromAppOverview(e) {
            e.icon_hash() && 1073741824 != e.app_type()
              ? ((this.m_bInitialized = !0),
                (this.m_strName = e.display_name()),
                (this.m_strIconURL = e.icon_hash()),
                (this.m_dtUpdatedFromServer = new Date()),
                (this.m_eAppType = e.app_type()))
              : (this.m_bInitialized = !1);
          }
          DeserializeFromCacheObject(e) {
            try {
              (this.m_strName = e.strName),
                (this.m_strIconURL = e.strIconURL),
                (this.m_dtUpdatedFromServer = new Date(e.strUpdatedFromServer)),
                (this.m_eAppType = e.eAppType),
                (this.m_bInitialized = !0);
            } catch {}
          }
          SerializeToCacheObject() {
            return (
              (0, r.w)(
                this.m_bInitialized,
                "Attempting to serialize an uninitialized AppInfo object for caching!",
              ),
              this.m_bInitialized
                ? {
                    strName: this.m_strName,
                    strIconURL: this.m_strIconURL,
                    strUpdatedFromServer: this.m_dtUpdatedFromServer.toJSON(),
                    eAppType: this.m_eAppType,
                  }
                : null
            );
          }
        }
      },
      2836: (e, t, n) => {
        "use strict";
        n.d(t, { Vw: () => C });
        var i = n(34629),
          o = n(89193),
          r = n(56132),
          a = n(45518),
          s = n(70169),
          l = n(17070);
        class c {
          m_nLastUpdated = 0;
          m_mapLanguages = o.sH.map();
          m_appid;
          m_fetching = null;
          constructor(e) {
            this.m_appid = e;
          }
          GetAppID() {
            return this.m_appid;
          }
          GetTokenList(e) {
            return this.m_mapLanguages.has(e)
              ? this.m_mapLanguages.get(e)
              : null;
          }
          Localize(e, t) {
            let n = l.TS.LANGUAGE;
            return m(
              e,
              this.GetTokenList(n),
              "english" != n ? this.GetTokenList("english") : null,
              this.m_appid,
              t,
            );
          }
          SubstituteParams(e, t) {
            let n = l.TS.LANGUAGE;
            return d(
              e,
              this.GetTokenList(n),
              "english" != n ? this.GetTokenList("english") : null,
              this.m_appid,
              t,
            );
          }
        }
        function m(e, t, n, i, o) {
          if (!e.startsWith("#"))
            return (
              console.log(
                "Token doesn't start with #:",
                e,
                "appid",
                i,
                "tokens",
                t,
              ),
              ""
            );
          let r = e;
          e = e.toLowerCase();
          let a = "";
          if (
            (t && t.has(e) && (a = t.get(e)),
            !a && n && n.has(e) && (a = n.get(e)),
            a)
          )
            a = d(a, t, n, i, o);
          else if (
            ((t || n) &&
              console.log(
                "No loc found for appid",
                i,
                r,
                "Tokens:",
                t,
                "Fallback:",
                n,
              ),
            t && 1 != l.TS.EUNIVERSE)
          )
            return e;
          return a;
        }
        function d(e, t, n, i, o) {
          let r = e.match(/{[A-za-z0-9_%#:]+}/g);
          if (r)
            for (let a of r) {
              let r = m(u(a.slice(1, -1), o), t, n, i, o);
              if (!r) return "";
              e = e.replace(a, r);
            }
          return (e = u(e, o));
        }
        function u(e, t) {
          let n = e.match(/%[A-Za-z0-9_:]+%/g);
          if (n)
            for (let i of n) {
              let n = i.slice(1, -1).toLowerCase(),
                o = t.get(n);
              null == o
                ? console.log("No rich presence found for", n)
                : (e = e.replace(i, o));
            }
          return e;
        }
        var h = n(48446),
          p = n(77765),
          _ = n(9907);
        class g {
          m_CMInterface;
          m_mapAppInfo = o.sH.map();
          m_mapRichPresenceLoc = o.sH.map();
          m_cAppInfoRequestsInFlight = 0;
          m_setPendingAppInfo = new Set();
          m_PendingAppInfoPromise;
          m_PendingAppInfoResolve;
          m_CacheStorage = null;
          m_fnCallbackOnAppInfoLoaded = new _.lu();
          constructor() {
            (0, o.Gn)(this);
          }
          Init(e) {
            this.m_CMInterface = e;
          }
          BHavePendingAppInfoRequests() {
            return (
              this.m_setPendingAppInfo.size > 0 ||
              this.m_cAppInfoRequestsInFlight > 0
            );
          }
          get CMInterface() {
            return this.m_CMInterface;
          }
          RegisterCallbackOnLoad(e) {
            if (!this.BHavePendingAppInfoRequests())
              return (
                (0, p.w)(
                  !1,
                  "Registering for callback on appinfo load, but nothing queued",
                ),
                void e()
              );
            this.m_fnCallbackOnAppInfoLoaded.Register(e);
          }
          IsLoadingAppID(e) {
            return this.m_setPendingAppInfo.has(e);
          }
          GetAppInfo(e) {
            if (
              ((0, p.w)(
                this.m_CMInterface,
                "CAppInfoStore.GetAppInfo called before Init",
              ),
              !this.m_mapAppInfo.has(e))
            ) {
              let t = new s.by(e);
              this.m_mapAppInfo.set(e, t), this.QueueAppInfoRequest(e);
            }
            return this.m_mapAppInfo.get(e);
          }
          QueueAppInfoRequest(e) {
            return e
              ? (this.m_setPendingAppInfo.size ||
                  ((this.m_PendingAppInfoPromise = new Promise(
                    (e) => (this.m_PendingAppInfoResolve = e),
                  )),
                  window.setTimeout(() => this.FlushPendingAppInfo(), 25)),
                this.m_setPendingAppInfo.add(e),
                this.m_PendingAppInfoPromise)
              : Promise.resolve();
          }
          async FlushPendingAppInfo() {
            const e = this.m_PendingAppInfoResolve,
              t = Array.from(this.m_setPendingAppInfo);
            (this.m_PendingAppInfoPromise = void 0),
              (this.m_PendingAppInfoResolve = void 0),
              this.m_setPendingAppInfo.clear(),
              await this.LoadAppInfoBatch(t),
              e?.();
          }
          async LoadAppInfoBatch(e) {
            this.m_cAppInfoRequestsInFlight++;
            let t = await this.LoadAppInfoBatchFromLocalCache(e);
            if (t.length) {
              console.log("Loading batch of App Info from Steam: ", t),
                await this.m_CMInterface?.WaitUntilLoggedOn();
              let e = a.w.Init(h._z);
              e.Body().set_language((0, r.sf)(l.TS.LANGUAGE));
              const n = 50;
              for (; t.length > 0; ) {
                const i = Math.min(n, t.length),
                  o = t.slice(0, i);
                (t = t.slice(i)), e.Body().set_appids(o);
                const r = await h.BE.GetApps(
                  this.m_CMInterface.GetServiceTransport(),
                  e,
                );
                1 == r.GetEResult()
                  ? this.OnGetAppsResponse(r)
                  : console.error(
                      `Error when calling CommunityService.GetApps: EResult=${r.GetEResult()}, AppIDs:`,
                      o,
                    );
              }
            }
            0 == --this.m_cAppInfoRequestsInFlight &&
              0 == this.m_setPendingAppInfo.size &&
              (this.m_fnCallbackOnAppInfoLoaded.Dispatch(),
              this.m_fnCallbackOnAppInfoLoaded.ClearAllCallbacks());
          }
          OnGetAppsResponse(e) {
            let t = [];
            for (let n of e.Body().apps()) {
              let e = this.m_mapAppInfo.get(n.appid());
              (0, p.w)(
                e,
                `Got AppInfo response for unrequested AppID: ${n.appid()}`,
              ),
                e &&
                  ((e = new s.by(n.appid())),
                  e.DeserializeFromMessage(n),
                  this.m_mapAppInfo.set(n.appid(), e),
                  t.push(e));
            }
            this.SaveAppInfoBatchToLocalCache(t);
          }
          OnAppOverviewChange(e) {
            for (let t of e) {
              const e = new s.by(t.appid());
              e.DeserializeFromAppOverview(t),
                e.is_initialized && this.m_mapAppInfo.set(t.appid(), e);
            }
          }
          async EnsureAppInfoForAppIDs(e) {
            let t = !1;
            return (
              e.forEach((e) => {
                let n = this.m_mapAppInfo.get(e);
                n
                  ? n.is_valid || (t = !0)
                  : ((n = new s.by(e)),
                    this.m_mapAppInfo.set(e, n),
                    this.QueueAppInfoRequest(e),
                    (t = !0));
              }),
              t && void 0 !== this.m_PendingAppInfoPromise
                ? this.m_PendingAppInfoPromise
                : Promise.resolve()
            );
          }
          SetCacheStorage(e) {
            this.m_CacheStorage = e;
          }
          GetCacheKeyForAppID(e) {
            return "APPINFO_" + e;
          }
          async LoadAppInfoBatchFromLocalCache(e) {
            if (!this.m_CacheStorage) return e;
            console.log("Loading batch of App Info from Local Cache: ", e);
            const t = new Date(new Date().getTime() - 12096e5),
              n = async (e) => {
                const n = await this.m_CacheStorage?.GetObject(
                  this.GetCacheKeyForAppID(e),
                );
                if (!n) return e;
                let i = this.m_mapAppInfo.get(e);
                return (
                  (0, p.w)(
                    i,
                    "Didn't find AppInfo in our map when loading from cache but it should've been there?",
                  ),
                  i
                    ? ((i = new s.by(e)),
                      i.DeserializeFromCacheObject(n),
                      i.is_initialized
                        ? (this.m_mapAppInfo.set(e, i),
                          i.time_updated_from_server < t ? e : null)
                        : (console.warn(
                            "Failed to deserialize cached App Info: ",
                            e,
                            n,
                          ),
                          e))
                    : e
                );
              };
            let i = e.map((e) => n(e));
            return (await Promise.all(i)).filter((e) => null !== e);
          }
          async SaveAppInfoBatchToLocalCache(e) {
            if (this.m_CacheStorage) {
              console.log(
                "Saving batch of App Info to Local Cache: ",
                e.map((e) => e.appid),
              );
              for (const t of e) {
                const e = t.SerializeToCacheObject();
                e &&
                  this.m_CacheStorage.StoreObject(
                    this.GetCacheKeyForAppID(t.appid),
                    e,
                  );
              }
            }
          }
          Localize(e, t, n) {
            const i = this.GetRichPresenceLoc(e);
            return i
              ? i.Localize(t, n)
              : 1 != l.TS.EUNIVERSE
                ? (console.log(
                    `Unable to find app localization information for app ${e} token ${t}, this may not have had a chance to load yet`,
                  ),
                  t)
                : "";
          }
          GetRichPresenceLoc(e) {
            if (this.m_mapRichPresenceLoc.has(e.toString())) {
              let t = this.m_mapRichPresenceLoc.get(e.toString());
              return (
                t.m_nLastUpdated + 6e4 * s.IU < Date.now() &&
                  this.QueueRichPresenceLocRequest(t),
                t
              );
            }
            let t = new c(e);
            return (
              this.m_mapRichPresenceLoc.set(e.toString(), t),
              this.QueueRichPresenceLocRequest(t),
              t
            );
          }
          GetRichPresenceLocAsync(e) {
            let t = this.GetRichPresenceLoc(e);
            return t.m_nLastUpdated ? Promise.resolve(t) : t.m_fetching;
          }
          OnRichPresenceLocUpdate(e, t) {
            e.m_nLastUpdated = Date.now();
            for (let n of t) {
              let t = n.language(),
                i = e.m_mapLanguages.get(t);
              i
                ? i.clear()
                : (e.m_mapLanguages.set(t, new Map()),
                  (i = e.m_mapLanguages.get(t)));
              for (let e of n.tokens())
                i?.set(e.name().toLowerCase(), e.value());
            }
          }
          QueueRichPresenceLocRequest(e) {
            return (
              e.m_fetching ||
                ((e.m_fetching = this.m_CMInterface
                  .WaitUntilLoggedOn()
                  .then(() => {
                    let t = a.w.Init(h.zQ);
                    return (
                      t.Body().set_appid(e.GetAppID()),
                      t.Body().set_language(l.TS.LANGUAGE),
                      h.BE.GetAppRichPresenceLocalization(
                        this.m_CMInterface.GetServiceTransport(),
                        t,
                      )
                    );
                  })
                  .then(
                    (t) => (
                      (e.m_fetching = null),
                      1 != t.GetEResult()
                        ? Promise.reject()
                        : (this.OnRichPresenceLocUpdate(
                            e,
                            t.Body().token_lists(),
                          ),
                          Promise.resolve(e))
                    ),
                  )),
                e.m_fetching.catch(() => {
                  e.m_fetching = null;
                })),
              e.m_fetching
            );
          }
        }
        (0, i.Cg)([o.XI], g.prototype, "OnGetAppsResponse", null),
          (0, i.Cg)([o.XI], g.prototype, "OnRichPresenceLocUpdate", null);
        const C = new g();
      },
      49106: (e, t, n) => {
        "use strict";
        n.d(t, { _: () => l, k: () => c });
        var i = n(58940),
          o = n(45518),
          r = n(63696),
          a = n(9907),
          s = n(82924);
        class l {
          m_cm;
          m_CookiePreferences;
          m_PromiseLoading;
          m_CookiePreferencesChangedCallbacks = new a.lu();
          constructor(e) {
            this.m_cm = e;
          }
          GetCookiePreferences() {
            return this.EnsureLoaded(), this.m_CookiePreferences;
          }
          get PreferencesChangedCallbacks() {
            return this.m_CookiePreferencesChangedCallbacks;
          }
          CheckThirdPartyCookiePreference(e, t) {
            switch (e.preference_state) {
              case 0:
              case 1:
                return !0;
              case 2:
                return !1;
              default:
                switch (t) {
                  case "youtube":
                    return e.third_party_content?.youtube;
                  case "vimeo":
                    return e.third_party_content?.vimeo;
                  case "sketchfab":
                    return e.third_party_content?.sketchfab;
                  case "generic":
                    return !1;
                }
            }
          }
          async LoadCookiePreferences() {
            const e = o.w.Init(i.ar);
            try {
              let t = await i.T4.GetCookiePreferences(
                this.m_cm.GetServiceTransport(),
                e,
              );
              1 == t.GetEResult() &&
                (this.m_CookiePreferences = t.Body().preferences().toObject());
            } catch (e) {}
            return (
              (this.m_CookiePreferences && this.m_CookiePreferences.version) ||
                (this.m_CookiePreferences = {
                  version: 1,
                  preference_state: 0,
                }),
              this.m_CookiePreferencesChangedCallbacks.Dispatch(
                this.m_CookiePreferences,
              ),
              this.m_CookiePreferences
            );
          }
          EnsureLoaded() {
            this.m_PromiseLoading ||
              (this.m_PromiseLoading = this.LoadCookiePreferences());
          }
        }
        function c(e) {
          let [t, n] = r.useState(e.GetCookiePreferences());
          return (0, s.hL)(e.PreferencesChangedCallbacks, n), t;
        }
      },
      62218: (e, t, n) => {
        "use strict";
        n.d(t, { p: () => c });
        var i = n(34629),
          o = n(63696),
          r = n(41230),
          a = n(77171),
          s = n(97931),
          l = n.n(s);
        let c = class extends o.Component {
          static get hoverClass() {
            return l().hoverParent;
          }
          render() {
            const {
              persona: e,
              animating: t,
              className: n,
              size: i,
              dim: r,
              ...s
            } = this.props;
            let c = "";
            return (
              "medium" == i
                ? (c = l().Medium)
                : "large" == i && (c = l().Large),
              o.createElement(
                "div",
                {
                  className: (0, a.A)(
                    l().SnoozeContainer,
                    e.online_state,
                    n,
                    t && l().animating,
                    c,
                    r && l().Dim,
                  ),
                  ...s,
                },
                o.createElement(
                  "div",
                  {
                    "data-text": "Z",
                    className: (0, a.A)(l().SnoozeZ, l().Z1),
                  },
                  "Z",
                ),
                o.createElement(
                  "div",
                  {
                    "data-text": "Z",
                    className: (0, a.A)(l().SnoozeZ, l().Z2),
                  },
                  "Z",
                ),
                o.createElement(
                  "div",
                  {
                    "data-text": "Z",
                    className: (0, a.A)(l().SnoozeZ, l().Z3),
                  },
                  "Z",
                ),
              )
            );
          }
        };
        c = (0, i.Cg)([r.PA], c);
      },
      20366: (e, t, n) => {
        "use strict";
        var i;
        n.d(t, { H: () => i, r: () => o }),
          (function (e) {
            (e[(e.k_ENoiseGateLevel_Off = 0)] = "k_ENoiseGateLevel_Off"),
              (e[(e.k_ENoiseGateLevel_Low = 1)] = "k_ENoiseGateLevel_Low"),
              (e[(e.k_ENoiseGateLevel_Medium = 2)] =
                "k_ENoiseGateLevel_Medium"),
              (e[(e.k_ENoiseGateLevel_High = 3)] = "k_ENoiseGateLevel_High");
          })(i || (i = {}));
        const o = 5;
      },
      77889: (e, t, n) => {
        "use strict";
        n.d(t, { g: () => d });
        var i = n(34629),
          o = n(41230),
          r = n(63696),
          a = n(9907),
          s = n(77171),
          l = n(82924),
          c = n(85326),
          m = n.n(c);
        let d = class extends r.Component {
          m_elHover;
          m_listeners = new a.Ji();
          m_bNoSpace = !1;
          static defaultProps = {
            direction: "right",
            nBodyAlignment: 0.5,
            nAllowOffscreenPx: 10,
            nBodyDistance: 8,
            nMaxLateralMoveOnScreen: void 0,
          };
          state = { x: void 0, y: void 0, hoverPositionReady: !1 };
          bindHover(e) {
            (this.m_elHover = e || void 0), this.positionHover();
          }
          componentDidMount() {
            this.m_listeners.AddEventListener(
              window,
              "blur",
              this.OnWindowBlur,
            );
          }
          componentDidUpdate() {
            this.positionHover();
          }
          componentWillUnmount() {
            this.m_listeners.Unregister();
          }
          OnWindowBlur(e) {
            this.props.onWindowBlur && this.props.onWindowBlur(e);
          }
          render() {
            const {
              target: e,
              visibilityObserver: t,
              className: n,
              style: i,
              bEnablePointerEvents: o,
              direction: a,
              nBodyAlignment: l,
              nBodyDistance: c,
              nAllowOffscreenPx: d,
              nMaxLateralMoveOnScreen: u,
              children: h,
              onNoSpace: p,
              onWindowBlur: _,
              bTopmost: g,
              ...C
            } = this.props;
            let f = Object.assign({ left: this.state.x, top: this.state.y }, i),
              S = !t || t.visible;
            return r.createElement(
              "div",
              {
                className: (0, s.A)(
                  m().HoverPositionOuter,
                  g && m().HoverAboveModal,
                ),
              },
              r.createElement(
                "div",
                {
                  ...C,
                  className: (0, s.A)(
                    m().HoverPosition,
                    S && this.state.hoverPositionReady && m().Ready,
                    this.m_bNoSpace && m().NoSpace,
                    o && m().EnablePointerEvents,
                    n,
                  ),
                  style: f,
                  ref: this.bindHover,
                },
                h,
              ),
            );
          }
          positionHover() {
            let e = this.m_elHover,
              t = this.props.target;
            if (!e || !t) return;
            if (
              this.state.hoverPositionReady &&
              this.props.visibilityObserver &&
              !this.props.visibilityObserver.visible
            )
              return;
            let n = t.ownerDocument.defaultView;
            if (!n || n.closed) return;
            const i = e.querySelector(".hover_arrow.left"),
              o = e.querySelector(".hover_arrow.right"),
              r = e.querySelector(".hover_arrow.top"),
              a = e.querySelector(".hover_arrow.bottom"),
              s = t.getBoundingClientRect(),
              l = e.getBoundingClientRect(),
              c =
                "overlay" == this.props.direction ||
                "overlay-center" == this.props.direction;
            i && i.setAttribute("style", "display: none;"),
              o && o.setAttribute("style", "display: none;"),
              r && r.setAttribute("style", "display: none;"),
              a && a.setAttribute("style", "display: none;");
            let {
                nBodyDistance: m = 8,
                direction: d = "right",
                nBodyAlignment: h = 0.5,
              } = this.props,
              {
                nLeft: p,
                nTop: _,
                nOverflow: g,
                nLateralOverflow: C,
              } = u(d, h, m, s, l, n.innerWidth, n.innerHeight);
            if (g > (this.props.nAllowOffscreenPx ?? 10) && !c) {
              const t = (function (e) {
                  switch (e) {
                    case "right":
                      return "left";
                    case "left":
                      return "right";
                    case "bottom":
                      return "top";
                    case "top":
                      return "bottom";
                    case "overlay":
                      return "overlay";
                    case "overlay-center":
                      return "overlay-center";
                  }
                })(this.props.direction ?? "right"),
                {
                  nLeft: i,
                  nTop: o,
                  nOverflow: r,
                  nLateralOverflow: a,
                } = u(t, h, m, s, l, n.innerWidth, n.innerHeight);
              if (
                (r < g && ((d = t), (p = i), (_ = o), (g = r), (C = a)),
                g > (this.props.nAllowOffscreenPx ?? 10))
              )
                return (
                  console.log(
                    "Not showing hover because it didn't fit in the main or alt direction",
                  ),
                  e.setAttribute("style", "display: none;"),
                  (this.m_bNoSpace = !0),
                  void (this.props.onNoSpace && this.props.onNoSpace())
                );
            }
            0 === this.props.nMaxLateralMoveOnScreen ||
              c ||
              ([_, p] = (function (e, t, n, i, o) {
                let r = Math.max(t[0], t[1]);
                void 0 !== e && (r = Math.min(e, r));
                r = Math.max(0, r);
                const a = t[0] > t[1] ? r : -r;
                "left" === n || "right" === n ? (i += a) : (o += a);
                return [i, o];
              })(this.props.nMaxLateralMoveOnScreen, C, d ?? "right", _, p));
            let f = null;
            switch (d) {
              case "left":
                f = o;
                break;
              case "right":
                f = i;
                break;
              case "top":
                f = a;
                break;
              case "bottom":
                f = r;
            }
            f && f.setAttribute("style", ""),
              p != this.state.x && this.setState({ x: p }),
              _ != this.state.y && this.setState({ y: _ }),
              this.state.hoverPositionReady ||
                this.setState({ hoverPositionReady: !0 });
          }
        };
        function u(e, t, n, i, o, r, a) {
          const s = r,
            l = a;
          let c, m, d, u;
          switch (e) {
            case "right":
              (c = i.right + n),
                (m = h(i.top, i.height, o.height, t)),
                (d = Math.max(0, c + o.width - s)),
                (u = [Math.max(0, 0 - m), Math.max(0, m + o.height - l)]);
              break;
            case "left":
              (c = i.left - n - o.width),
                (m = h(i.top, i.height, o.height, t)),
                (d = Math.max(0, 0 - c)),
                (u = [Math.max(0, 0 - m), Math.max(0, m + o.height - l)]);
              break;
            case "bottom":
              (c = h(i.left, i.width, o.width, t)),
                (m = i.bottom + n),
                (d = Math.max(0, m + o.height - l)),
                (u = [Math.max(0, 0 - c), Math.max(0, c + o.width - s)]);
              break;
            case "top":
              (c = h(i.left, i.width, o.width, t)),
                (m = i.top - n - o.height),
                (d = Math.max(0, 0 - m)),
                (u = [Math.max(0, 0 - c), Math.max(0, c + o.width - s)]);
              break;
            case "overlay":
              (c = i.left), (m = i.top), (d = 0), (u = [0, 0]);
              break;
            case "overlay-center":
              (c = i.left + 0.5 * i.width - 0.5 * o.width),
                (m = i.top + 0.5 * i.height - 0.5 * o.height),
                (d = 0),
                (u = [0, 0]);
          }
          return { nLeft: c, nTop: m, nOverflow: d, nLateralOverflow: u };
        }
        function h(e, t, n, i) {
          return Math.max(0, Math.min(1, i)) * (t - n) + e;
        }
        (0, i.Cg)([l.oI], d.prototype, "bindHover", null),
          (0, i.Cg)([l.oI], d.prototype, "OnWindowBlur", null),
          (d = (0, i.Cg)([o.PA], d));
      },
      66651: (e, t, n) => {
        "use strict";
        n.d(t, { q: () => r });
        var i = n(17070),
          o = n(56132);
        function r() {
          return i.TS.IN_CLIENT && (0, o.DO)(i.TS.LAUNCHER_TYPE);
        }
      },
      31418: (e, t, n) => {
        "use strict";
        n.d(t, { E: () => r, p: () => a });
        var i = n(89481),
          o = n(26721);
        function r(e) {
          return (
            o.TS.COMMUNITY_BASE_URL + "linkfilter/?u=" + encodeURIComponent(e)
          );
        }
        function a(e, t) {
          if (e.startsWith("steam://")) return !1;
          if (e.startsWith("/")) return !1;
          const n = (0, i.wm)(e).toLowerCase(),
            r = (0, i.wm)(o.TS.COMMUNITY_BASE_URL).toLowerCase(),
            a = (0, i.wm)(o.TS.STORE_BASE_URL).toLowerCase(),
            s = (0, i.wm)(o.TS.HELP_BASE_URL).toLowerCase(),
            l = (0, i.wm)(o.TS.PARTNER_BASE_URL || "").toLowerCase();
          return (
            n !== r &&
            n !== a &&
            n !== s &&
            "support.steampowered.com" !== n &&
            n !== l &&
            "www.dota2.com" !== n &&
            (!t || 0 == t.filter((e) => n == e).length)
          );
        }
      },
      93637: (e, t, n) => {
        "use strict";
        n.d(t, { n: () => m });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(28574),
          l = n(17070);
        const c = s.Kp.PerMinute;
        class m {
          m_accountid;
          m_bLoadingData = !1;
          m_rtLastLoad = 0;
          m_communityData = void 0;
          constructor(e) {
            (0, a.Gn)(this), (this.m_accountid = e);
          }
          get community_data() {
            return this.m_communityData;
          }
          get community_data_ready() {
            return void 0 !== this.m_communityData;
          }
          get player_level() {
            return this.m_communityData && this.m_communityData.level;
          }
          get player_level_class() {
            return this.m_communityData && this.m_communityData.level_class;
          }
          get player_badge() {
            return this.m_communityData && this.m_communityData.favorite_badge;
          }
          get profile_background() {
            return (
              this.m_communityData && this.m_communityData.profile_background
            );
          }
          Reload() {
            (this.m_rtLastLoad = 0), this.EnsureCommunityDataLoaded();
          }
          EnsureCommunityDataLoaded() {
            const e = this.m_communityData || this.m_bLoadingData,
              t = Date.now() > this.m_rtLastLoad + 1e3 * c;
            (!e || (t && !this.m_bLoadingData)) &&
              ((this.m_bLoadingData = !0),
              r()
                .get(
                  l.TS.CHAT_BASE_URL +
                    "miniprofile/" +
                    this.m_accountid +
                    "/json/?origin=" +
                    (0, l.xv)(),
                )
                .then((e) => {
                  let t = e.data;
                  "number" == typeof t.level &&
                    "string" == typeof t.level_class &&
                    (this.m_communityData = t),
                    (this.m_bLoadingData = !1),
                    (this.m_rtLastLoad = Date.now());
                })
                .catch((e) => {
                  this.m_bLoadingData = !1;
                }));
          }
        }
        (0, i.Cg)([a.sH], m.prototype, "m_communityData", void 0);
      },
      52434: (e, t, n) => {
        "use strict";
        n.d(t, { Z: () => d, dV: () => c.d, rO: () => m, tp: () => c.t });
        var i = n(34629),
          o = n(89193),
          r = n(59351),
          a = n(2836),
          s = n(74002),
          l = n(17070),
          c = n(48325);
        function m(e) {
          let t = "offline";
          return (
            e &&
              (e.is_ingame
                ? (t = "ingame")
                : e.m_broadcastAccountId
                  ? (t = "watchingbroadcast")
                  : e.is_online && (t = "online"),
              e.is_awayOrSnooze && (t += " awayOrSnooze")),
            t
          );
        }
        class d {
          m_steamid;
          m_bInitialized = !1;
          m_ePersonaState = 0;
          m_unGamePlayedAppID = 0;
          m_gameid = "0";
          m_unPersonaStateFlags = 0;
          m_strPlayerName = "";
          m_strAvatarHash = c.d;
          m_strAccountName = "";
          m_rtLastSeenOnline = 0;
          m_strGameExtraInfo = "";
          m_unGameServerIP = 0;
          m_unGameServerPort = 0;
          m_game_lobby_id = "";
          m_bPlayerNamePending = !1;
          m_bAvatarPending = !1;
          m_broadcastId = void 0;
          m_broadcastAccountId = void 0;
          m_broadcastAppId = void 0;
          m_broadcastViewerCount = void 0;
          m_strBroadcastTitle = void 0;
          m_bCommunityBanned = void 0;
          m_bOnSteamDeck = !1;
          m_mapRichPresence = o.sH.map();
          m_bNameInitialized = !1;
          m_bStatusInitialized = !1;
          m_strProfileURL = void 0;
          constructor(e) {
            (0, o.Gn)(this), (this.m_steamid = e);
          }
          Reset() {
            (this.m_ePersonaState = 0),
              (this.m_unGamePlayedAppID = 0),
              (this.m_gameid = "0"),
              (this.m_strGameExtraInfo = ""),
              (this.m_unGameServerIP = 0),
              (this.m_unGameServerPort = 0),
              (this.m_game_lobby_id = ""),
              this.m_mapRichPresence.clear(),
              (this.m_broadcastId = void 0),
              (this.m_broadcastAccountId = void 0),
              (this.m_broadcastAppId = void 0),
              (this.m_broadcastViewerCount = void 0),
              (this.m_strBroadcastTitle = void 0),
              (this.m_bOnSteamDeck = !1);
          }
          GetAccountID() {
            return this.m_steamid.GetAccountID();
          }
          get is_online() {
            return 0 != this.m_ePersonaState && 7 != this.m_ePersonaState;
          }
          get is_ingame() {
            return (
              this.is_online &&
              (0 != this.m_unGamePlayedAppID || "0" != this.m_gameid)
            );
          }
          get is_watchingbroadcast() {
            return !!this.m_broadcastAccountId;
          }
          get is_in_nonsteam_game() {
            return 0 == this.m_unGamePlayedAppID && "0" != this.m_gameid;
          }
          get is_in_joinable_game() {
            return (
              this.has_joinable_game_flag ||
              this.is_in_valid_lobby ||
              this.has_server_ip
            );
          }
          get has_joinable_game_flag() {
            return 0 != (2 & (this.m_unPersonaStateFlags ?? 0));
          }
          get connect_string() {
            return this.m_mapRichPresence.get("connect");
          }
          get is_in_valid_lobby() {
            return null != this.m_game_lobby_id && "0" != this.m_game_lobby_id;
          }
          get has_server_ip() {
            return 0 != this.m_unGameServerIP;
          }
          get is_awayOrSnooze() {
            return 3 == this.m_ePersonaState || 4 == this.m_ePersonaState;
          }
          HasStateFlag(e) {
            return 0 != ((this.m_unPersonaStateFlags ?? 0) & e);
          }
          get last_seen_online() {
            return this.m_rtLastSeenOnline;
          }
          ClearStateOnDisconnect() {
            0 != this.m_ePersonaState && this.Reset();
          }
          get is_golden() {
            return this.HasStateFlag(4);
          }
          IsOnSteamDeck() {
            return this.m_bOnSteamDeck;
          }
          GetCurrentGameName() {
            return this.m_strGameExtraInfo
              ? this.m_strGameExtraInfo
              : this.m_unGamePlayedAppID
                ? a.Vw.GetAppInfo(this.m_unGamePlayedAppID).name
                : "";
          }
          GetCurrentGameIconURL() {
            return this.m_unGamePlayedAppID
              ? a.Vw.GetAppInfo(this.m_unGamePlayedAppID).icon_url
              : "";
          }
          BIsAppInfoReady() {
            return (
              !this.m_unGamePlayedAppID ||
              a.Vw.GetAppInfo(this.m_unGamePlayedAppID).is_initialized
            );
          }
          HasCurrentGameRichPresence() {
            return this.m_mapRichPresence.has("steam_display");
          }
          HasRichPresenceForViewGameInfo() {
            return !!(
              this.m_mapRichPresence.has("status") ||
              this.m_mapRichPresence.has("connect") ||
              this.m_mapRichPresence.has("connect_private")
            );
          }
          GetCurrentGameRichPresence() {
            if (this.HasCurrentGameRichPresence()) {
              let e = a.Vw.GetRichPresenceLoc(this.m_unGamePlayedAppID);
              if (e) {
                let t = this.m_mapRichPresence.get("steam_display");
                return e.Localize(t, this.m_mapRichPresence);
              }
            } else if (this.HasStateFlag(8))
              return (0, s.we)("#PersonaStateRemotePlayTogether");
            return "";
          }
          GetOfflineStatusUpdateRate() {
            if (0 == this.last_seen_online) return 3e4;
            const e = 3600;
            let t = 1e3;
            const n =
              a.Vw.CMInterface.GetServerRTime32() - this.last_seen_online;
            return (t *= n > 86400 ? e : n > 7200 ? 60 : 15), t;
          }
          GetOfflineStatusTime() {
            if (0 == this.last_seen_online)
              return (0, s.we)("#PersonaStateOffline");
            let e = this.GetOfflineStatusUpdateRate();
            (!l.TS.IN_MOBILE || e <= 60) && (0, r.tB)(e);
            let t = a.Vw.CMInterface.GetServerRTime32() - this.last_seen_online;
            return t < 60
              ? (0, s.we)("#PersonaStateLastSeen_JustNow")
              : (0, s.we)("#PersonaStateLastSeen", (0, s.Hq)(t));
          }
          GetLocalizedOnlineStatus() {
            switch (this.m_ePersonaState) {
              case 0:
              case 7:
                return this.GetOfflineStatusTime();
              case 1:
                return (0, s.we)("#PersonaStateOnline");
              case 2:
                return (0, s.we)("#PersonaStateBusy");
              case 3:
                return (0, s.we)("#PersonaStateAway");
              case 4:
                return (0, s.we)("#PersonaStateSnooze");
              case 5:
                return (0, s.we)("#PersonaStateLookingToTrade");
              case 6:
                return (0, s.we)("#PersonaStateLookingToPlay");
              default:
                return "";
            }
          }
          get has_public_party_beacon() {
            return this.m_mapRichPresence.has("__beacon") && this.is_ingame;
          }
          get player_group() {
            return this.m_mapRichPresence.has("steam_player_group")
              ? this.m_mapRichPresence.get("steam_player_group")
              : "";
          }
          get player_group_size() {
            return this.m_mapRichPresence.has("steam_player_group_size")
              ? Number.parseInt(
                  this.m_mapRichPresence.get("steam_player_group_size"),
                )
              : 0;
          }
          get online_state() {
            return this.is_online
              ? this.is_ingame
                ? "in-game"
                : this.m_broadcastAccountId
                  ? "watchingbroadcast"
                  : "online"
              : "offline";
          }
          BHasAvatarSet() {
            return this.m_strAvatarHash != c.d;
          }
          get avatar_url() {
            return (0, c.t)(this.m_strAvatarHash);
          }
          get avatar_url_medium() {
            return (0, c.t)(this.m_strAvatarHash, "medium");
          }
          get avatar_url_full() {
            return (0, c.t)(this.m_strAvatarHash, "full");
          }
          static SortStatusComparator(e, t, n) {
            if (t.has_public_party_beacon) {
              if (!n.has_public_party_beacon) return -1;
            } else {
              if (n.has_public_party_beacon) return 1;
              if (t.is_ingame) {
                if (!n.is_ingame) return -1;
                if (!e) return 0;
                if (t.is_awayOrSnooze) {
                  if (!n.is_awayOrSnooze) return 1;
                } else if (n.is_awayOrSnooze) return -1;
              } else if (n.is_ingame) return 1;
            }
            if (t.is_online) {
              if (!n.is_online) return -1;
            } else if (n.is_online) return 1;
            if (e)
              if (t.is_awayOrSnooze) {
                if (!n.is_awayOrSnooze) return 1;
              } else if (n.is_awayOrSnooze) return -1;
            return 0;
          }
          GetCommunityProfileURL() {
            return this.m_strProfileURL
              ? `${l.TS.COMMUNITY_BASE_URL}id/${this.m_strProfileURL}/`
              : `${l.TS.COMMUNITY_BASE_URL}profiles/${this.m_steamid.ConvertTo64BitString()}/`;
          }
        }
        (0, i.Cg)([o.sH], d.prototype, "m_bInitialized", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_ePersonaState", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_unGamePlayedAppID", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_gameid", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_unPersonaStateFlags", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_strPlayerName", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_strAvatarHash", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_strAccountName", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_rtLastSeenOnline", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_strGameExtraInfo", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_unGameServerIP", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_unGameServerPort", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_game_lobby_id", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_bPlayerNamePending", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_bAvatarPending", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_broadcastId", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_broadcastAccountId", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_broadcastAppId", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_broadcastViewerCount", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_strBroadcastTitle", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_bCommunityBanned", void 0),
          (0, i.Cg)([o.sH], d.prototype, "m_bOnSteamDeck", void 0);
      },
      94958: (e, t, n) => {
        "use strict";
        n.d(t, { D: () => C });
        var i = n(34629),
          o = n(63696),
          r = n(41230),
          a = n(74002),
          s = n(56132),
          l = n(52434),
          c = n(62218),
          m = n(3360),
          d = n(81734),
          u = n(77171),
          h = n(88903),
          p = n.n(h),
          _ = n(17070);
        function g(e) {
          return o.createElement(
            o.Fragment,
            null,
            o.createElement(
              "span",
              { className: p().partyBeaconJoin },
              (0, a.we)("#User_WantsToPlay"),
            ),
            " – ",
            e.persona.GetCurrentGameName(),
          );
        }
        let C = class extends o.Component {
          render() {
            const {
              className: e,
              onContextMenu: t,
              persona: n,
              eFriendRelationship: i,
              bIsSelf: r,
              bParenthesizeNicknames: h,
              strNickname: C,
              bCompactView: f,
              bHideGameName: S,
              bHideEnhancedRichPresenceLabel: v,
              bHideSnooze: b,
              bHideStatus: I,
              renderStatus: w,
              renderRichPresence: y,
              bHidePersona: E,
              bDNDSet: D,
              bHasPartyBeacon: A,
              bHasGamePrivacy: T,
              bNoMask: M,
              ...R
            } = this.props;
            let k = null,
              L = null,
              G = null,
              F = [
                e,
                p().personaNameAndStatusLabel,
                (0, l.rO)(n),
                f && p().compactView,
                M && p().NoMask,
              ];
            A || n.has_public_party_beacon
              ? (L = o.createElement(g, { persona: n }))
              : (0, s.aP)(i)
                ? ((L = (0, a.we)("#PersonaStateBlocked")), F.push(p().blocked))
                : n.is_ingame
                  ? ((L =
                      !n.is_in_nonsteam_game || r || (0, s.S$)(i)
                        ? n.GetCurrentGameName()
                        : (0, a.we)("#PersonaStateInNonSteamGame")),
                    r || E
                      ? r &&
                        n.is_awayOrSnooze &&
                        (G = (0, a.we)("#PersonaStateAway"))
                      : (G = n.GetCurrentGameRichPresence()))
                  : n.m_broadcastAccountId &&
                    (L = (0, a.we)("#PersonaStateWatchingBroadcast")),
              L || (L = n.GetLocalizedOnlineStatus()),
              w && (L = w());
            let P = !E && !b;
            !1 === b && (P = !0),
              n.is_awayOrSnooze &&
                P &&
                (k = o.createElement(c.p, { persona: n }));
            let B = null;
            t
              ? (B = o.createElement(
                  "div",
                  { className: "ContextMenuButton", onClick: t },
                  o.createElement(d.GB9, null),
                ))
              : F.push(p().noContextMenu),
              E && F.push(p().hidePersona),
              y && (G = y()),
              (!S && G) || F.push(p().twoLine);
            const x = !n.is_ingame && !I,
              O = !v && G,
              N = L && (!S || !O),
              V = (0, s.ID)(_.TS.LAUNCHER_TYPE);
            let U = C && !h,
              H = U ? C : n.m_strPlayerName,
              W = !E && (N || x) && O;
            return o.createElement(
              "div",
              { ...R, className: (0, u.A)(...F), onContextMenu: t },
              o.createElement(
                "div",
                { className: (0, u.A)(p().statusAndName, W && p().threeLines) },
                o.createElement(
                  "div",
                  { className: p().playerName },
                  H || " ",
                  h &&
                    C &&
                    o.createElement(
                      "span",
                      { className: p().playerNickname },
                      "(",
                      C,
                      ")",
                    ),
                ),
                D &&
                  o.createElement(
                    "div",
                    {
                      className: p().DNDContainer,
                      title: (0, a.we)("#User_ToggleDoNotDisturb"),
                    },
                    o.createElement(d.Aj0, null),
                  ),
                U &&
                  o.createElement(
                    "span",
                    {
                      className: p().playerNicknameBracket,
                      title: (0, a.we)("#isNickname"),
                    },
                    " *",
                  ),
                o.createElement(m.X, { persona: n }),
                k,
                (n.m_bPlayerNamePending || n.m_bAvatarPending) &&
                  V &&
                  o.createElement(
                    "div",
                    {
                      className: p().PendingPersona,
                      title: (0, a.we)("#SteamChina_PendingPersonaName"),
                    },
                    o.createElement(d.zD7, null),
                  ),
                B,
              ),
              !E &&
                o.createElement(
                  "div",
                  { className: p().richPresenceContainer },
                  (N || x) &&
                    o.createElement(
                      "div",
                      {
                        className: (0, u.A)(
                          p().gameName,
                          W && p().threeLines,
                          p().richPresenceLabel,
                          "no-drag",
                        ),
                      },
                      T &&
                        o.createElement(
                          "div",
                          {
                            className: p().gameIsPrivateIcon,
                            title: (0, a.we)("#User_GameInfoHidden"),
                          },
                          o.createElement(d.jZl, null),
                        ),
                      L,
                    ),
                  O &&
                    o.createElement(
                      "div",
                      { className: (0, u.A)(p().richPresenceLabel, "no-drag") },
                      G,
                      " ",
                    ),
                ),
            );
          }
        };
        C = (0, i.Cg)([r.PA], C);
        (0, r.PA)((e) => {
          const {
            persona: t,
            bParenthesizeNicknames: n,
            strNickname: i,
            bIgnorePersonaStatus: r,
            bDisableColoring: a,
            className: s,
            ...c
          } = e;
          let m = i && !n ? i : t.m_strPlayerName;
          return o.createElement(
            "span",
            {
              ...c,
              className: (0, u.A)(
                s,
                a && p().DisableColoring,
                !r && (0, l.rO)(t),
              ),
            },
            o.createElement(
              "span",
              { className: p().playerName },
              m || " ",
              n &&
                i &&
                o.createElement(
                  "span",
                  { className: p().playerNickname },
                  "(",
                  i,
                  ")",
                ),
            ),
          );
        });
      },
      3360: (e, t, n) => {
        "use strict";
        n.d(t, { X: () => u });
        var i = n(63696),
          o = n(41230),
          r = n(74002),
          a = n(52434),
          s = n(77171),
          l = n(81734),
          c = n(17089),
          m = n.n(c),
          d = n(84791);
        const u = (0, o.PA)((e) => {
          const { persona: t, className: n, ...o } = e;
          if (!t) return null;
          if (!t.is_online) return null;
          const c = t.HasStateFlag(512),
            u = t.HasStateFlag(2048),
            h = t.IsOnSteamDeck(),
            p = !h && !u && t.HasStateFlag(1024);
          return i.createElement(
            i.Fragment,
            null,
            c &&
              i.createElement(
                "div",
                {
                  className: (0, s.A)(
                    n,
                    m().PersonaStatusIcon,
                    m().MobilePhoneIcon,
                    (0, a.rO)(t),
                  ),
                  title: (0, r.we)("#Platform_Hint_Mobile"),
                  ...o,
                },
                i.createElement(d.rf, null),
              ),
            u &&
              i.createElement(
                "div",
                {
                  className: (0, s.A)(
                    n,
                    m().PersonaStatusIcon,
                    m().VRIcon,
                    (0, a.rO)(t),
                  ),
                  title: (0, r.we)("#Platform_Hint_VR"),
                  ...o,
                },
                i.createElement(l.MUh, null),
              ),
            p &&
              i.createElement(
                "div",
                {
                  className: (0, s.A)(
                    n,
                    m().PersonaStatusIcon,
                    m().BigPictureIcon,
                    (0, a.rO)(t),
                  ),
                  title: (0, r.we)("#Platform_Hint_BigPicture"),
                  ...o,
                },
                i.createElement(l.bPr, null),
              ),
            h &&
              i.createElement(
                "div",
                {
                  className: (0, s.A)(
                    n,
                    m().PersonaStatusIcon,
                    m().SteamDeckIcon,
                    (0, a.rO)(t),
                  ),
                  title: (0, r.we)("#Platform_Hint_SteamDeck"),
                  ...o,
                },
                i.createElement(l.DQe, null),
              ),
          );
        });
      },
      48325: (e, t, n) => {
        "use strict";
        n.d(t, { d: () => o, t: () => r });
        var i = n(17070);
        const o = "fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb";
        function r(e, t) {
          let n = ".jpg";
          (e && "0000000000000000000000000000000000000000" !== e) || (e = o),
            44 == e.length && ((n = e.substr(-4)), (e = e.substr(0, 40)));
          let r = i.TS.AVATAR_BASE_URL;
          return (
            r ||
              ((r = i.TS.MEDIA_CDN_COMMUNITY_URL + "images/avatars/"),
              (r += e.substr(0, 2) + "/")),
            (r += e),
            t && "small" != t && (r += "_" + t),
            (r += n),
            r
          );
        }
      },
      63887: (e, t, n) => {
        "use strict";
        n.d(t, { Ul: () => _, xz: () => f, i8: () => g });
        var i = n(34629),
          o = n(63696),
          r = n(41230),
          a = n(52434),
          s = n(77171),
          l = n(17070),
          c = n(82924);
        class m extends o.Component {
          m_refImage = o.createRef();
          constructor(e) {
            super(e), (this.state = { nImage: 0 });
          }
          componentDidUpdate(e) {
            JSON.stringify(this.props.rgSources) !=
              JSON.stringify(e.rgSources) && this.setState({ nImage: 0 });
          }
          get src() {
            let e = "";
            return (
              this.props.rgSources &&
                this.props.rgSources.length > this.state.nImage &&
                (e = this.props.rgSources[this.state.nImage]),
              e ||
                (console.warn(
                  "MultiSourceImage created with no image src",
                  this.props,
                  this.state.nImage,
                ),
                (e =
                  "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=")),
              e
            );
          }
          get imgRef() {
            return this.m_refImage;
          }
          OnImageError(e) {
            this.props.onIncrementalError &&
              this.props.onIncrementalError(
                e,
                this.props.rgSources[this.state.nImage],
                this.state.nImage,
              );
            let t = this.state.nImage + 1;
            t >= this.props.rgSources.length &&
              this.props.onError &&
              this.props.onError(e),
              t < this.props.rgSources.length && this.setState({ nImage: t });
          }
          render() {
            const {
                rgSources: e,
                onIncrementalError: t,
                onError: n,
                ...i
              } = this.props,
              r = this.src;
            return o.createElement("img", {
              ref: this.m_refImage,
              ...i,
              src: r,
              onError: this.OnImageError,
            });
          }
        }
        (0, i.Cg)([c.oI], m.prototype, "OnImageError", null);
        const d =
          "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAQABAAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8Inmk8+T94/3j/EfWmedJ/z0f/vo0T/6+T/eP86ZQA/zpP8Ano//AH0aPOk/56P/AN9GmVo6Loeq65M0Wj6ddXrr94QRF9v1I6fjQBR86T/no/8A30aPOk/56P8A99GtHW/Dus6GV/tjS7yyD8K00RVW+h6GsugB/nSf89H/AO+jT4JpPPj/AHj/AHh/EfWoafB/r4/94fzoAJ/9fJ/vH+dMp8/+vk/3j/OmUAXdE099W1mw06Jgsl3PHApPYswUH9a+qPF3iHSPhF4S0+003TxK0hMcEAbZvIA3SO2OvIz6k18nW88ttcRz28jxTRMHSRGKsrA5BBHQg1b1TWdT1fy/7V1G8vfLzs+0TNJtz1xknHQUAfUXw+8c6Z8UdN1HS9V0xIpUTM1s7eYkiE43KcAgg/lxg180+NtEHhzxZqmkqxdLWcojHqUPK598EV9CfBbwpF4G8J3fiLxA4trm5hEsnmceRCOQD/tHqR9B1r568a63/wAJH4r1TVghRLqYuinqE6KD74AoAxafB/r4/wDeH86ZT4P9fH/vD+dABP8A6+T/AHj/ADplPn/18n+8f50ygArt/gtpltq/xK0e2vYxJArPMUYZDFEZhn2yBXEV0/w203VNX8YWdloOoHTtQkWQx3IZl2gISeV55AI/GgD1H9pvxPdi/s/DcDGOz8pbqfHWRizBQfYbc/U+1eD12PxW0fWtE8Tpa+I9UOqXpt0cTl2bCEthctz1B/OuOoAKfB/r4/8AeH86ZT4P9fH/ALw/nQAT/wCvk/3j/OmVNPDJ58n7t/vH+E+tM8mT/nm//fJoAZV7Q9Xv9C1KLUNJuGtryMEJIoBIyCD1BHQmqnkyf883/wC+TR5Mn/PN/wDvk0AaHiHXtT8RX4vdau2u7oIIxIygHaCSBwB6msyn+TJ/zzf/AL5NHkyf883/AO+TQAynwf6+P/eH86PJk/55v/3yafBDJ58f7t/vD+E+tAH/2Q==";
        var u = n(47814),
          h = n.n(u),
          p = n(20270);
        const _ = o.memo(function (e) {
          const {
              strAvatarURL: t,
              size: n = "Medium",
              className: i,
              statusStyle: r,
              statusPosition: a,
              children: l,
              ...c
            } = e,
            u = o.useMemo(() => {
              const e = [];
              return (
                t && e.push(t),
                e.push(
                  (function (e) {
                    switch (e) {
                      case "X-Small":
                      case "Small":
                        return "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAIAAgAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/P4mW5nmllmeSR3LMzMSSc1a07R73V72KzsILi9u5TiOC2RpJHPoFGSarQ/ef6n+de4fAn9oaL4D+DfGX9i6Uf8AhO9XSKDT9eZY3WxiDZcBGByTkn0JCZBxQB41qeiX+iXslnqNtdWF3H9+3uo2jkX6q2CKpgy208MsUzxyI4ZWViCDmvsr9rrUdT1j9nb4T6h8RBbH4qXUs0zMsSxXJ04hivnKoAU5MPGBg7uM7q+NpvvJ9R/OgAh+8/1P867T4POI/iz4Mc6U+u7NZtG/suPbuu8TKfKG4hct93njnmuKIltp5opYXjkRyrKykEHNWbDVbvSr63vbKaezvLeRZYbi3ZkkidTlWVhyCCMgjpQB6l+1F411nx58dPFWpa5a3mnXaXP2ZNOvXVpLKNBhYflJUY5PB5JJ6k15LN95PqP51a1PWr7WtQnvtRuLm/vrhzJNc3TtJLIx6lmbJJ9zVQCW5nhiiheSR3CqqqSSc0Af/9k=";
                      case "Medium":
                      case "MediumLarge":
                        return d;
                      case "Large":
                      case "X-Large":
                      case "FillArea":
                        return "data:image/jpeg;base64, ";
                      default:
                        return (0, p.z)(e, `Unhandled size ${e}`), d;
                    }
                  })(n),
                ),
                e
              );
            }, [t, n]);
          return o.createElement(
            "div",
            {
              className: (0, s.A)(
                h().avatarHolder,
                "avatarHolder",
                "no-drag",
                n,
                i,
              ),
              ...c,
            },
            o.createElement("div", {
              className: (0, s.A)(h().avatarStatus, "avatarStatus", a),
              style: r,
            }),
            o.createElement(m, {
              className: (0, s.A)(h().avatar, "avatar"),
              rgSources: u,
              draggable: !1,
            }),
            l,
          );
        });
        let g = class extends o.Component {
          render() {
            const {
              persona: e,
              size: t = "Medium",
              animatedAvatar: n,
              className: i,
              ...r
            } = this.props;
            let c = "";
            return (
              n && n.image_small && 0 != n.image_small.length
                ? (c = l.TS.MEDIA_CDN_COMMUNITY_URL + "images/" + n.image_small)
                : e &&
                  ((c = e.avatar_url_medium),
                  "Small" == t || "X-Small" == t
                    ? (c = e.avatar_url)
                    : ("Large" != t && "X-Large" != t && "FillArea" != t) ||
                      (c = e.avatar_url_full)),
              o.createElement(_, {
                strAvatarURL: c,
                size: t,
                className: (0, s.A)((0, a.rO)(e), i),
                ...r,
              })
            );
          }
        };
        g = (0, i.Cg)([r.PA], g);
        const C = (0, r.PA)((e) => {
          const {
            profileItem: t,
            className: n,
            bDisableAnimation: i,
            ...r
          } = e;
          if (!t || !t.image_small || 0 == t.image_small.length) return null;
          let a = i ? t.image_large : t.image_small;
          return (
            a || (a = t.image_small),
            a.startsWith("https://") ||
              (a = l.TS.MEDIA_CDN_COMMUNITY_URL + "images/" + a),
            o.createElement(
              "div",
              { className: (0, s.A)(h().avatarFrame, n, "avatarFrame"), ...r },
              o.createElement("img", { className: h().avatarFrameImg, src: a }),
            )
          );
        });
        let f = class extends o.Component {
          m_timer;
          constructor(e) {
            super(e),
              (this.state = { bAnimate: "None" != this.props.loopDuration }),
              (this.m_timer = 0);
          }
          componentDidMount() {
            this.props.bParentHovered || this.SetupAnimationTimer();
          }
          SetupAnimationTimer() {
            let e = 0;
            switch (this.props.loopDuration) {
              case "Short":
                e = 2500;
                break;
              case "Medium":
                e = 5e3;
                break;
              case "Long":
                e = 1e4;
            }
            0 != e &&
              (this.setState({ bAnimate: "None" != this.props.loopDuration }),
              (this.m_timer = window.setTimeout(
                () => this.setState({ bAnimate: !1 }),
                e,
              )));
          }
          StopAnimationTimer() {
            this.m_timer &&
              (window.clearTimeout(this.m_timer), (this.m_timer = 0));
          }
          onHover() {
            this.SetupAnimationTimer();
          }
          componentWillUnmount() {
            this.StopAnimationTimer();
          }
          componentDidUpdate(e) {
            this.props.loopDuration != e.loopDuration &&
              ("None" == this.props.loopDuration
                ? (this.setState({ bAnimate: !1 }), this.StopAnimationTimer())
                : "Infinite" == this.props.loopDuration
                  ? (this.setState({ bAnimate: !0 }), this.StopAnimationTimer())
                  : (this.setState({ bAnimate: !0 }),
                    this.SetupAnimationTimer())),
              this.props.bParentHovered != e.bParentHovered &&
                (this.props.bParentHovered &&
                "None" != this.props.loopDuration &&
                "Infinite" != this.props.loopDuration
                  ? (this.setState({ bAnimate: !0 }), this.StopAnimationTimer())
                  : this.state.bAnimate && this.SetupAnimationTimer());
          }
          render() {
            let {
              loopDuration: e,
              animatedAvatar: t,
              avatarFrame: n,
              children: i,
              style: r,
              bLimitProfileFrameAnimationTime: a,
              bParentHovered: s,
              ...l
            } = this.props;
            return (
              l.onClick && (r = { ...r, cursor: "pointer" }),
              this.state.bAnimate || (t = null),
              o.createElement(
                "div",
                {
                  onMouseEnter: () =>
                    this.setState({
                      bAnimate: "None" != this.props.loopDuration,
                    }),
                  onMouseLeave: () => this.SetupAnimationTimer(),
                },
                o.createElement(
                  g,
                  { animatedAvatar: t, ...l },
                  i,
                  o.createElement(C, {
                    profileItem: n,
                    bDisableAnimation: a && !this.state.bAnimate,
                  }),
                ),
              )
            );
          }
        };
        f = (0, i.Cg)([r.PA], f);
      },
      77631: (e, t, n) => {
        "use strict";
        n.d(t, { b: () => a });
        var i = n(37976),
          o = n(56132),
          r = n(17070);
        class a {
          m_ulSteamID;
          constructor(e = 0, t, n, o) {
            e instanceof a
              ? (this.m_ulSteamID = e.m_ulSteamID)
              : "string" == typeof e
                ? (this.m_ulSteamID = i.A.fromString(e, !0))
                : t && n && void 0 !== o
                  ? this.SetFromComponents(e ?? 0, o, n, t)
                  : (this.m_ulSteamID = e ? i.A.fromNumber(e, !0) : i.A.UZERO);
          }
          static InitFromAccountID(e) {
            return new a(Number(e), r.TS.EUNIVERSE, 1, o.ke);
          }
          static InitFromClanID(e) {
            return new a(Number(e), r.TS.EUNIVERSE, 7, 0);
          }
          GetAccountID() {
            return this.m_ulSteamID.getLowBitsUnsigned();
          }
          GetInstance() {
            return 1048575 & this.m_ulSteamID.getHighBitsUnsigned();
          }
          GetAccountType() {
            return (this.m_ulSteamID.getHighBitsUnsigned() >> 20) & 15;
          }
          GetUniverse() {
            return (this.m_ulSteamID.getHighBitsUnsigned() >> 24) & 255;
          }
          ConvertTo64BitString() {
            return this.m_ulSteamID.toString();
          }
          Render() {
            switch (this.GetAccountType()) {
              case 0:
                return (
                  "[I:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 7:
                return (
                  "[g:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 4:
                return (
                  "[A:" +
                  this.GetUniverse() +
                  ":" +
                  this.GetAccountID() +
                  ":" +
                  this.GetInstance() +
                  "]"
                );
              case 3:
                return (
                  "[G:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 2:
                return (
                  "[M:" +
                  this.GetUniverse() +
                  ":" +
                  this.GetAccountID() +
                  ":" +
                  this.GetInstance() +
                  "]"
                );
              case 5:
                return (
                  "[P:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              case 6:
                return (
                  "[C:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
              default:
                return (
                  "[U:" + this.GetUniverse() + ":" + this.GetAccountID() + "]"
                );
            }
          }
          static InitFromString(e) {
            let t = new a();
            try {
              let [n, i, o, r, a] =
                  e.match(/\[([I|g|A|G|M|P|C|U]):(\d+):(\d+):?(\d+)?\]/) || [],
                s = Number(o),
                l = Number(r),
                c = a ? Number(a) : 1;
              switch (i) {
                case "I":
                  t.SetFromComponents(l, c, 0, s);
                case "g":
                  t.SetFromComponents(l, 0, 7, s);
                case "A":
                  t.SetFromComponents(l, c, 4, s);
                case "G":
                  t.SetFromComponents(l, c, 3, s);
                case "M":
                  t.SetFromComponents(l, c, 2, s);
                case "P":
                  t.SetFromComponents(l, c, 5, s);
                case "C":
                  t.SetFromComponents(l, c, 6, s);
                case "U":
                  t.SetFromComponents(l, c, 1, s);
              }
            } catch (e) {}
            return t;
          }
          BIsValid() {
            let e = this.GetAccountType();
            if (e <= 0 || e >= 11) return !1;
            let t = this.GetUniverse();
            if (t <= 0 || t >= 5) return !1;
            if (1 == e) {
              if (0 == this.GetAccountID() || this.GetInstance() > o.im)
                return !1;
            } else if (7 == e) {
              if (0 == this.GetAccountID() || 0 != this.GetInstance())
                return !1;
            } else if (3 == e && 0 == this.GetAccountID()) return !1;
            return !0;
          }
          BIsIndividualAccount() {
            return 1 == this.GetAccountType();
          }
          BIsClanAccount() {
            return 7 == this.GetAccountType();
          }
          SetAccountID(e) {
            this.m_ulSteamID = new i.A(
              e,
              this.m_ulSteamID.getHighBitsUnsigned(),
              !0,
            );
          }
          SetInstance(e) {
            this.SetFromComponents(
              this.GetAccountID(),
              e,
              this.GetAccountType(),
              this.GetUniverse(),
            );
          }
          SetAccountType(e) {
            this.SetFromComponents(
              this.GetAccountID(),
              this.GetInstance(),
              e,
              this.GetUniverse(),
            );
          }
          SetUniverse(e) {
            this.SetFromComponents(
              this.GetAccountID(),
              this.GetInstance(),
              this.GetAccountType(),
              e,
            );
          }
          SetFromComponents(e, t, n, o) {
            let r = ((255 & o) << 24) + ((15 & n) << 20) + (1048575 & t),
              a = 4294967295 & e;
            this.m_ulSteamID = new i.A(a, r, !0);
          }
        }
      },
      20074: (e, t, n) => {
        "use strict";
        n.d(t, {
          Ay: () => u,
          Dn: () => d,
          L3: () => m,
          VZ: () => l,
          k2: () => s,
          wJ: () => c,
        });
        var i = n(22794),
          o = n(77765),
          r = n(89481),
          a = n(26721);
        function s(e, t = "", n = null) {
          return u.InstrumentLink(e, t, n);
        }
        function l(e, t, n = null) {
          const i = (0, r.wm)(e).toLowerCase(),
            o = (0, r.wm)(a.TS.COMMUNITY_BASE_URL).toLowerCase(),
            s = (0, r.wm)(a.TS.STORE_BASE_URL).toLowerCase();
          return i === o || i === s ? c(e, t, n) : e;
        }
        function c(e, t, n = null) {
          const o = m(t, n);
          return i.A.AddNavParamToURL(e, o);
        }
        function m(e, t = null) {
          return e?.domain ? u.GetLinkParam(e, t) : a.TS.SNR;
        }
        function d(e, t = "", n = null) {
          return s(`${a.TS.STORE_BASE_URL}app/${e}`, t, n);
        }
        class u {
          static sm_strDomain;
          static sm_strController;
          static sm_strMethod;
          static sm_strSubmethod;
          static sm_strComputedLinkPrefix;
          static SetNavEventParams(e, t, n = null, i = null) {
            (u.sm_strDomain = e),
              (u.sm_strController = t),
              (u.sm_strMethod = n),
              (u.sm_strSubmethod = i),
              (u.sm_strComputedLinkPrefix = null);
          }
          static GetDefaultParams() {
            let e = { domain: u.sm_strDomain, controller: u.sm_strController };
            return (
              u.sm_strMethod && (e.method = u.sm_strMethod),
              u.sm_strSubmethod && (e.submethod = u.sm_strSubmethod),
              e
            );
          }
          static InstrumentLink(e, t, n = null) {
            const o = u.GetLinkParam(t, n);
            return i.A.AddNavParamToURL(e, o);
          }
          static GetLinkParam(e, t = null) {
            let n, o;
            if ("string" != typeof e) {
              if (e.domain) return i.A.GetLinkParam(e, t);
              n = e.feature || "";
            }
            if (!u.sm_strComputedLinkPrefix && !u.ComputeStaticLinkPrefix())
              return null;
            o = u.sm_strComputedLinkPrefix;
            let r = i.A.EncodeEventComponent(n);
            return r && ((o += "_" + r), t && (o += "_" + t)), o;
          }
          static ComputeStaticLinkPrefix() {
            return u.sm_strDomain
              ? ((u.sm_strComputedLinkPrefix = i.A.ComputeLinkPrefix(
                  u.sm_strDomain,
                  u.sm_strController,
                  u.sm_strMethod,
                  u.sm_strSubmethod,
                )),
                !0)
              : ((0, o.w)(
                  !1,
                  "CStoreNavEvents::SetNavEventParams was not called before calling InstrumentLink!",
                ),
                !1);
          }
        }
      },
      42674: (e, t, n) => {
        "use strict";
        function i(e, t) {
          return !!e && "object" == typeof e.SteamClient && t in e.SteamClient;
        }
        function o(e, t) {
          if (!e) return !1;
          const [n, o] = t.split(".", 2);
          return n && o && i(e, n) && o in e.SteamClient[n];
        }
        function r(e) {
          return o(window, e);
        }
        n.d(t, { Dp: () => r, Fj: () => o });
      },
      46014: (e, t, n) => {
        "use strict";
        n.d(t, { W: () => a });
        var i = n(26721);
        let o = { success: !0, result: 1 };
        class r {
          m_mapWaitingCallbacks = new Map();
          m_socket;
          m_iCallSeq = 1;
          m_bReady = !1;
          m_bClientConnectionFailed = !1;
          m_bSecurityException = !1;
          m_promiseConnect;
          m_ClientInfo = {
            ulVersion: "",
            bFriendsUIEnabled: !1,
            unAccountID: 0,
            rgSupportedMessages: [],
          };
          constructor() {}
          get ClientInfo() {
            return this.m_ClientInfo;
          }
          get ready() {
            return this.m_bReady;
          }
          get browser_supported() {
            return !this.m_bSecurityException;
          }
          get connected_to_client() {
            return (
              !!this.m_socket && this.m_socket.readyState == WebSocket.OPEN
            );
          }
          SendMsgAndAwaitResponse(e) {
            return new Promise((t, n) => {
              let i = this.m_iCallSeq++;
              this.BSendMsg(e, i)
                ? this.m_mapWaitingCallbacks.set(i, {
                    iSeq: i,
                    fnCallback: t,
                    fnError: n,
                  })
                : n();
            });
          }
          BSendMsg(e, t) {
            if (!this.m_socket || this.m_socket.readyState != WebSocket.OPEN)
              return !1;
            let n = Object.assign({}, e, {
              universe: i.TS.EUNIVERSE,
              accountid: i.iA.accountid,
            });
            void 0 !== t && (n.sequenceid = t);
            try {
              return this.m_socket.send(JSON.stringify(n)), !0;
            } catch (e) {
              return !1;
            }
          }
          OnSocketMessage(e) {
            try {
              let t = JSON.parse(e.data);
              if (t.sequenceid) {
                let e = this.m_mapWaitingCallbacks.get(t.sequenceid);
                if (e)
                  return (
                    this.m_mapWaitingCallbacks.delete(t.sequenceid),
                    void e.fnCallback(t)
                  );
              }
            } catch (e) {
              console.error("exception parsing response", e);
            }
          }
          Connect() {
            if (this.m_bReady && this.m_socket?.readyState === WebSocket.OPEN)
              return Promise.resolve();
            if (this.m_promiseConnect) return this.m_promiseConnect;
            let e = new Promise((e, t) => {
              try {
                this.m_socket = new WebSocket(
                  "ws://127.0.0.1:27060/clientsocket/",
                );
              } catch (e) {
                return (this.m_bSecurityException = !0), void t(e);
              }
              (this.m_socket.onerror = (e) => {
                t();
              }),
                (this.m_socket.onmessage = this.OnSocketMessage.bind(this)),
                (this.m_socket.onopen = () => {
                  this.SendMsgAndAwaitResponse({ message: "GetClientInfo" })
                    .then((n) => {
                      1 == n.success
                        ? ((this.m_ClientInfo.ulVersion = n.clientversion),
                          (this.m_ClientInfo.bFriendsUIEnabled = !!n.friendsui),
                          (this.m_ClientInfo.unAccountID = n.accountid),
                          n.supported_messages &&
                            (this.m_ClientInfo.rgSupportedMessages =
                              n.supported_messages),
                          e())
                        : t();
                    })
                    .catch(t);
                });
            });
            return (
              (this.m_promiseConnect = e),
              this.m_promiseConnect
                .then(() => {
                  (this.m_bReady = !0), (this.m_promiseConnect = void 0);
                })
                .catch(() => {
                  (this.m_bClientConnectionFailed = !0),
                    (this.m_promiseConnect = void 0);
                }),
              this.m_promiseConnect
            );
          }
        }
        let a = new (class {
          m_connection = new r();
          FailureResult(e = 2) {
            let t = { success: !1, result: e };
            return (
              this.m_connection &&
                !this.m_connection.browser_supported &&
                (t.browser_unsupported = !0),
              this.m_connection &&
                !this.m_connection.connected_to_client &&
                (t.connect_failed = !0),
              7 == e && (t.call_unsupported = !0),
              t
            );
          }
          BClientConnected() {
            return this.m_connection.Connect().then(
              () => o,
              () => this.FailureResult(),
            );
          }
          BClientConnectedAndSupportsMessage(e) {
            return this.m_connection
              .Connect()
              .then(() => this.BClientSupportsMessage(e))
              .catch(() => !1);
          }
          BClientSupportsMessage(e) {
            return (
              !(
                !this.m_connection.connected_to_client ||
                !this.m_connection.ready
              ) &&
              -1 !== this.m_connection.ClientInfo.rgSupportedMessages.indexOf(e)
            );
          }
          OpenFriendChatDialog(e) {
            let t = { message: "ShowFriendChatDialog", steamid: e };
            return this.GenericEResultCall(t);
          }
          OpenChatRoomGroupDialog(e, t) {
            let n = { message: "ShowChatRoomGroupDialog", chat_group_id: e };
            return t && (n.chat_room_id = t), this.GenericEResultCall(n);
          }
          ShowChatRoomGroupInvite(e, t = !0) {
            let n = { message: "ShowChatRoomGroupInvite", invite_code: e };
            return this.GenericEResultCall(n, t);
          }
          m_mapCacheSubscribedApp = new Map();
          BIsSubscribedApp(e) {
            if (this.m_mapCacheSubscribedApp.has(e))
              return Promise.resolve(this.m_mapCacheSubscribedApp.get(e));
            let t = { message: "IsSubscribedApp", appid: e };
            return this.GenericEResultCall(t, !0).then((t) => {
              if (t.connect_failed) return;
              let n = 1 == t.result;
              return this.m_mapCacheSubscribedApp.set(e, n), n;
            });
          }
          OpenFriendsDialog() {
            return this.GenericEResultCall({ message: "OpenFriendsDialog" });
          }
          OpenSteamURL(e, t = !1) {
            let n = { message: "OpenSteamURL", url: e };
            return this.GenericEResultCall(n, t);
          }
          BClientAccountMatches() {
            return (
              !i.iA.logged_in ||
              i.iA.accountid == this.m_connection.ClientInfo.unAccountID
            );
          }
          GenericEResultCall(e, t = !1) {
            return this.m_connection
              .Connect()
              .then(() =>
                t && !this.BClientAccountMatches()
                  ? { success: !1, result: 19, account_mismatch: !0 }
                  : this.m_connection
                      .SendMsgAndAwaitResponse(e)
                      .then((e) =>
                        1 === e.success ? o : this.FailureResult(e.success),
                      ),
              )
              .catch(() => this.FailureResult());
          }
        })();
        window.ClientConnectionAPI = a;
      },
      57695: (e, t, n) => {
        "use strict";
        n.d(t, { $: () => a });
        var i = n(34629),
          o = n(45518),
          r = (n(8649), n(89193));
        class a {
          constructor() {
            (0, r.Gn)(this);
          }
          m_mapCallbacks = new Map();
          m_rgRegisteredEMsgs = [];
          m_mapServiceMethodHandlers = new Map();
          m_rgRegisteredServiceMethodHandlers = [];
          m_ErrorReportingStore;
          InstallErrorReportingStore(e) {
            this.m_ErrorReportingStore = e;
          }
          DispatchMsgToHandlers(e, t) {
            let n = e.GetEMsg();
            if (146 == n) {
              let n = e.Hdr().target_job_name();
              if (n) {
                let i = this.m_mapServiceMethodHandlers.get(n);
                if (i) {
                  this.DEBUG_LogMessageDispatch(e, i[0]);
                  for (let o of i)
                    try {
                      o.invoke(e, t);
                    } catch (e) {
                      e instanceof Error && this.m_ErrorReportingStore
                        ? this.m_ErrorReportingStore.ReportError(e)
                        : console.error(
                            `MessageHandlers failed to dispatch message to handler (${n}): `,
                            e,
                          );
                    }
                  return !0;
                }
              }
            } else {
              let t = this.m_mapCallbacks.get(n);
              if (t) {
                this.DEBUG_LogMessageDispatch(e, t[0]);
                for (let n of t)
                  try {
                    n.invoke(e);
                  } catch (e) {
                    e instanceof Error && this.m_ErrorReportingStore
                      ? this.m_ErrorReportingStore.ReportError(e)
                      : console.error(
                          "MessageHandlers failed to dispatch message to handler: ",
                          e,
                        );
                  }
                return !0;
              }
            }
            return !1;
          }
          DEBUG_LogMessageDispatch(e, t) {
            0;
          }
          get emsg_list() {
            return this.m_rgRegisteredEMsgs;
          }
          get servicemethod_list() {
            return this.m_rgRegisteredServiceMethodHandlers;
          }
          AddCallback(e, t, n) {
            let i = this.m_mapCallbacks.get(e);
            return (
              i ||
                ((i = []),
                this.m_mapCallbacks.set(e, i),
                this.m_rgRegisteredEMsgs.push(e)),
              i.push({ invoke: n, msgClass: t }),
              {
                invoke: n,
                unregister: () => {
                  let t = this.m_mapCallbacks.get(e);
                  if (t)
                    for (let e = 0; e < t.length; e++)
                      t[e].invoke == n && (t.splice(e, 1), e--);
                },
              }
            );
          }
          AddServiceMethodHandler(e, t) {
            let n = (n, i) => {
              let r = o.w.InitFromMsg(e.request, n),
                a = o.w.Init(e.response, 147),
                s = t(r, a),
                l = (e) => {
                  a.Hdr().set_eresult(e), i(a);
                };
              s instanceof Promise
                ? s.then(l).catch(() => {
                    l(2);
                  })
                : l(s);
            };
            return (
              this.m_mapServiceMethodHandlers.has(e.name)
                ? console.error("Duplicate registration for method " + e.name)
                : (this.m_mapServiceMethodHandlers.set(e.name, [
                    { invoke: n, msgClass: e.request },
                  ]),
                  this.m_rgRegisteredServiceMethodHandlers.push(e.name)),
              {
                invoke: n,
                unregister: () => {
                  let t = this.m_mapServiceMethodHandlers.get(e.name);
                  if (t)
                    for (let e = 0; e < t.length; e++)
                      t[e].invoke == n && (t.splice(e, 1), e--);
                },
              }
            );
          }
          AddServiceNotificationHandler(e, t) {
            let n = (n, i) => {
                let r = o.w.InitFromMsg(e.request, n);
                t(r);
              },
              i = this.m_mapServiceMethodHandlers.get(e.name);
            return (
              i ||
                ((i = []),
                this.m_mapServiceMethodHandlers.set(e.name, i),
                this.m_rgRegisteredServiceMethodHandlers.push(e.name)),
              i.push({ invoke: n, msgClass: e.request }),
              {
                invoke: n,
                unregister: () => {
                  let t = this.m_mapServiceMethodHandlers.get(e.name);
                  if (t)
                    for (let e = 0; e < t.length; e++)
                      t[e].invoke == n && (t.splice(e, 1), e--);
                },
              }
            );
          }
          RegisterBaseEMessageHandler(e, t) {
            return this.AddCallback(e, void 0, t);
          }
          RegisterEMessageHandler(e, t, n) {
            return this.AddCallback(e, t, (e) => {
              n(o.w.InitFromMsg(t, e));
            });
          }
          RegisterEMessageAction(e, t, n) {
            return this.AddCallback(e, t, (e) => {
              (0, r.h5)(() => {
                n(o.w.InitFromMsg(t, e));
              });
            });
          }
          RegisterServiceNotificationHandler(e, t) {
            return this.AddServiceNotificationHandler(e, t);
          }
          RegisterServiceNotificationHandlerAction(e, t) {
            return this.AddServiceNotificationHandler(e, (e) => {
              let n;
              return (
                (0, r.h5)(() => {
                  n = t(e);
                }),
                n
              );
            });
          }
          RegisterServiceMethodHandler(e, t) {
            return this.AddServiceMethodHandler(e, t);
          }
          RegisterServiceMethodHandlerAction(e, t) {
            return this.AddServiceMethodHandler(e, (e, n) => {
              let i;
              return (
                (0, r.h5)(() => {
                  i = t(e, n);
                }),
                i
              );
            });
          }
        }
        (0, i.Cg)([r.sH], a.prototype, "m_rgRegisteredEMsgs", void 0),
          (0, i.Cg)(
            [r.sH],
            a.prototype,
            "m_rgRegisteredServiceMethodHandlers",
            void 0,
          );
      },
      2377: (e, t, n) => {
        "use strict";
        n.d(t, { PN: () => i, eZ: () => r });
        var i,
          o = n(9907);
        !(function (e) {
          (e[(e.LaunchGame = 0)] = "LaunchGame"),
            (e[(e.FriendMessage = 1)] = "FriendMessage"),
            (e[(e.ChatMention = 2)] = "ChatMention"),
            (e[(e.ChatMessage = 3)] = "ChatMessage"),
            (e[(e.ToastMessage = 4)] = "ToastMessage"),
            (e[(e.ToastAchievement = 5)] = "ToastAchievement"),
            (e[(e.ToastMisc = 6)] = "ToastMisc"),
            (e[(e.ToastMiscShort = 7)] = "ToastMiscShort"),
            (e[(e.FriendOnline = 8)] = "FriendOnline"),
            (e[(e.FriendInGame = 9)] = "FriendInGame"),
            (e[(e.VolSound = 10)] = "VolSound"),
            (e[(e.ShowModal = 11)] = "ShowModal"),
            (e[(e.HideModal = 12)] = "HideModal"),
            (e[(e.IntoGameDetail = 13)] = "IntoGameDetail"),
            (e[(e.OutOfGameDetail = 14)] = "OutOfGameDetail"),
            (e[(e.PagedNavigation = 15)] = "PagedNavigation"),
            (e[(e.ToggleOn = 16)] = "ToggleOn"),
            (e[(e.ToggleOff = 17)] = "ToggleOff"),
            (e[(e.SliderUp = 18)] = "SliderUp"),
            (e[(e.SliderDown = 19)] = "SliderDown"),
            (e[(e.ChangeTabs = 20)] = "ChangeTabs"),
            (e[(e.DefaultOk = 21)] = "DefaultOk"),
            (e[(e.OpenSideMenu = 22)] = "OpenSideMenu"),
            (e[(e.CloseSideMenu = 23)] = "CloseSideMenu"),
            (e[(e.BasicNav = 24)] = "BasicNav"),
            (e[(e.FailedNav = 25)] = "FailedNav"),
            (e[(e.Typing = 26)] = "Typing"),
            (e[(e.TimerExpired = 27)] = "TimerExpired"),
            (e[(e.Screenshot = 28)] = "Screenshot");
        })(i || (i = {}));
        const r = new (class {
          m_fnCallbackOnPlaySound = new o.lu();
          RegisterCallbackOnPlaySound(e) {
            return this.m_fnCallbackOnPlaySound.Register(e);
          }
          PlayNavSound(e, t) {
            this.m_fnCallbackOnPlaySound.Dispatch(e, t);
          }
        })();
      },
      65281: (e, t, n) => {
        "use strict";
        n.d(t, {
          BroadcastWatchStore: () => H,
          fK: () => L,
          a0: () => G,
          fO: () => k,
        });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(45112),
          l = n(60956);
        function c(e, t, n) {
          return [e, t, n];
        }
        class m extends Error {}
        class d extends l.J8 {
          m_appid;
          constructor(e) {
            super(), (this.m_appid = e || 0);
          }
          GetAppID() {
            return this.m_appid;
          }
          parseColor(e) {
            if ("string" != typeof e || !e.match(/^#[0-9a-fA-F]{6}$/))
              throw new m("expected color string");
            return [
              parseInt(e.substring(1, 3), 16),
              parseInt(e.substring(3, 5), 16),
              parseInt(e.substring(5, 7), 16),
            ];
          }
          parseString(e) {
            if ("string" == typeof e) return e;
            throw new m("expected string");
          }
          parseNumber(e) {
            if ("number" == typeof e) return e;
            throw new m("expected number");
          }
          parseDate(e) {
            if ("number" == typeof e) return new Date(e);
            throw new m("expected timestamp");
          }
          parseArray(e, t) {
            let n = [];
            if ("object" != typeof e || !Array.isArray(e))
              throw new m("expected array");
            let i = e.length;
            for (let o = 0; o < i; ++o)
              try {
                n.push(t(e[o]));
              } catch (e) {
                throw (
                  ((e.message += "\n...while parsing array element " + o), e)
                );
              }
            return n;
          }
          parseDict(e, t) {
            let n = new Map();
            if ("object" != typeof e || Array.isArray(e))
              throw new m("expected object");
            for (let i in e)
              try {
                n.set(i, t(e[i]));
              } catch (e) {
                throw (
                  ((e.message += "\n...while parsing dictionary element " + i),
                  e)
                );
              }
            return n;
          }
          parseBracket(e) {
            let t = {
              name: this.parseString(e.name),
              start: this.parseDate(e.start),
              color: [255, 0, 255],
            };
            return (
              "params" in e &&
                (t.params = this.parseDict(
                  e.params,
                  this.parseString.bind(this),
                )),
              "end" in e && (t.end = this.parseDate(e.end)),
              "color" in e && (t.color = this.parseColor(e.color)),
              t
            );
          }
          parseMarker(e) {
            let t = { time: this.parseDate(e.time), color: [0, 255, 255] };
            return (
              "name" in e && (t.name = this.parseString(e.name)),
              "params" in e &&
                (t.params = this.parseDict(
                  e.params,
                  this.parseString.bind(this),
                )),
              "color" in e && (t.color = this.parseColor(e.color)),
              t
            );
          }
          parseSoundTrack(e) {
            let t = {};
            return (
              "song_title" in e &&
                (t.song_title = this.parseString(e.song_title)),
              "appid" in e && (t.appid = this.parseNumber(e.appid)),
              "song_index" in e &&
                (t.song_index = this.parseNumber(e.song_index)),
              t
            );
          }
          parseBroadcastGameData(e) {
            let t = { appid: 0, brackets: [], markers: [] };
            return (
              "appid" in e && (t.appid = this.parseNumber(e.appid)),
              "brackets" in e &&
                (t.brackets = this.parseArray(
                  e.brackets,
                  this.parseBracket.bind(this),
                )),
              "markers" in e &&
                (t.markers = this.parseArray(
                  e.markers,
                  this.parseMarker.bind(this),
                )),
              "soundtrack" in e &&
                (t.soundtrack = this.parseSoundTrack(e.soundtrack)),
              t
            );
          }
          convertTime(e, t) {
            return e - t / 1e3;
          }
          UpdateMarkers(e, t) {
            let n = [],
              i = [];
            for (const o of e)
              o.persistent
                ? (i.length > 0 &&
                    (i[i.length - 1].nTimeEnd = this.convertTime(
                      o.Timestamp,
                      t,
                    )),
                  o.name.length > 0 &&
                    i.push({
                      strTemplateName: o.name,
                      nTimeStart: this.convertTime(o.Timestamp, t),
                      nTimeEnd: -1,
                      color: c(o.color_r, o.color_g, o.color_b),
                    }))
                : n.push({
                    strTemplateName: o.name,
                    nTime: this.convertTime(o.Timestamp, t),
                    color: c(o.color_r, o.color_g, o.color_b),
                  });
            return { rgMarkers: n, rgSegments: i };
          }
          UpdateRegions(e) {
            let t = [];
            for (const n of e)
              t.push({
                strTemplateName: n.name,
                min: { x: n.min_x, y: n.min_y },
                max: { x: n.max_x, y: n.max_y },
                behavior: n.behavior,
              });
            return t;
          }
          UpdateSoundtrack(e, t) {}
        }
        var u = n(1785),
          h = n(99374),
          p = n(49912),
          _ = n(17070),
          g = n(69450),
          C = n(43669),
          f = n(9907);
        class S {
          m_elVideo = null;
          m_peerConnection = null;
          m_strBroadcastSteamID = void 0;
          m_ulWebRTCSessionID = void 0;
          m_schCandidateTimer = new f.LU();
          m_nHostCandidateGeneration = void 0;
          m_nCandidateUpdateIntervalMS = void 0;
          m_listeners = new f.Ji();
          m_bFirstPlay = !0;
          m_bStatsViewVisible = !1;
          m_schCaptureDisplayStatsTrigger = new f.LU();
          m_stats = new C._L();
          constructor(e) {
            (0, a.Gn)(this), (this.m_elVideo = e);
          }
          async PlayMPD(e) {}
          async PlayWebRTC(e, t, n, i, o) {
            (this.m_strBroadcastSteamID = e),
              (this.m_ulWebRTCSessionID = n),
              (this.m_nHostCandidateGeneration = 0),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "pause",
                this.OnVideoPause,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "resize",
                this.OnVideoResize,
              );
            let a = {
              iceServers: [
                { urls: ["stun:" + i] },
                { urls: ["turn:" + i], username: t, credential: n },
              ],
              iceTransportPolicy: "relay",
            };
            (this.m_peerConnection = new RTCPeerConnection(a)),
              (this.m_peerConnection.oniceconnectionstatechange = ((e) => {
                this.m_peerConnection &&
                  (console.log(
                    "BroadcastWebRTC: ICE connection state changed to " +
                      this.m_peerConnection.iceConnectionState,
                  ),
                  "failed" === this.m_peerConnection.iceConnectionState
                    ? this.OnWebRTCConnectionFailed()
                    : "disconnected" ===
                        this.m_peerConnection.iceConnectionState &&
                      this.OnWebRTCConnectionRetry());
              }).bind(this)),
              (this.m_peerConnection.onicecandidate = ((e) => {
                if (e.candidate) {
                  const t = new FormData();
                  t.append("broadcaststeamid", this.m_strBroadcastSteamID),
                    t.append("webrtc_session_id", this.m_ulWebRTCSessionID),
                    t.append("sdp_mid", e.candidate.sdpMid),
                    t.append(
                      "sdp_mline_index",
                      String(e.candidate.sdpMLineIndex),
                    ),
                    t.append("candidate", e.candidate.candidate),
                    r()
                      .post(
                        `${_.TS.CHAT_BASE_URL}broadcast/addbroadcastwebrtccandidate`,
                        t,
                      )
                      .then((e) => {
                        const t = e.data;
                        (t.success && 1 == t.success) ||
                          console.log(
                            "Failed to add a WebRTC session ICE candidate: " +
                              String(t.success),
                          );
                      })
                      .catch((e) =>
                        console.log(
                          "Failed to add a WebRTC session ICE candidate" + e,
                        ),
                      );
                }
              }).bind(this)),
              (this.m_peerConnection.ontrack = ((e) => {
                "video" === e.track.kind &&
                  ((this.m_elVideo.src = null),
                  (this.m_elVideo.srcObject = e.streams[0]),
                  this.Play());
              }).bind(this)),
              this.m_peerConnection
                .setRemoteDescription({ type: "offer", sdp: o })
                .then(async () => {
                  await this.m_peerConnection.setLocalDescription(
                    await this.m_peerConnection.createAnswer(),
                  );
                  const e = new FormData();
                  e.append("broadcaststeamid", this.m_strBroadcastSteamID),
                    e.append("webrtc_session_id", this.m_ulWebRTCSessionID),
                    e.append(
                      "answer",
                      this.m_peerConnection.localDescription.sdp,
                    );
                  try {
                    await r()
                      .post(
                        `${_.TS.CHAT_BASE_URL}broadcast/setbroadcastwebrtcanswer`,
                        e,
                      )
                      .then((e) => {
                        const t = e.data;
                        if (!t.success || 1 != t.success)
                          throw new Error(String(t.success));
                      });
                  } catch (e) {
                    return (
                      console.log(
                        "Failed to set the WebRTC session answer: " + e,
                      ),
                      void this.OnWebRTCConnectionRetry()
                    );
                  }
                  (this.m_nCandidateUpdateIntervalMS = 250),
                    this.m_schCandidateTimer.Schedule(
                      this.m_nCandidateUpdateIntervalMS,
                      () => this.GetHostCandidates(),
                    );
                });
          }
          async GetHostCandidates() {
            const e = new FormData();
            e.append("broadcaststeamid", this.m_strBroadcastSteamID),
              e.append("webrtc_session_id", this.m_ulWebRTCSessionID),
              e.append(
                "candidate_generation",
                String(this.m_nHostCandidateGeneration),
              );
            try {
              await r()
                .post(
                  `${_.TS.CHAT_BASE_URL}broadcast/getbroadcastwebrtccandidates`,
                  e,
                )
                .then((e) => {
                  const t = e.data,
                    n = t.data;
                  if (!t.success || 1 != t.success)
                    throw new Error(String(t.success));
                  n.candidate_generation > this.m_nHostCandidateGeneration
                    ? (n.candidates.forEach((e) => {
                        const t = new RTCIceCandidate({
                          sdpMid: e.sdp_mid,
                          sdpMLineIndex: e.sdp_mline_index,
                          candidate: e.candidate,
                        });
                        this.m_peerConnection
                          .addIceCandidate(t)
                          .catch((e) => console.error(e));
                      }),
                      (this.m_nHostCandidateGeneration =
                        n.candidate_generation))
                    : this.m_nHostCandidateGeneration > 0 &&
                      (this.m_nCandidateUpdateIntervalMS *= 2);
                });
            } catch (e) {
              return (
                console.log("Failed to get WebRTC session ICE candidates" + e),
                void this.OnWebRTCConnectionRetry()
              );
            }
            this.m_schCandidateTimer.Schedule(
              this.m_nCandidateUpdateIntervalMS,
              () => this.GetHostCandidates(),
            );
          }
          DispatchEvent(e, t = null) {
            let n = new CustomEvent(e, {
              cancelable: !0,
              bubbles: !0,
              detail: t,
            });
            this.m_elVideo.dispatchEvent(n);
          }
          OnWebRTCConnectionRetry() {
            this.DispatchEvent("valve-webrtcretry");
          }
          OnWebRTCConnectionFailed() {
            this.DispatchEvent("valve-webrtcfailed");
          }
          Close() {
            this.m_listeners.Unregister(),
              this.m_schCandidateTimer.Cancel(),
              this.m_schCaptureDisplayStatsTrigger.Cancel(),
              this.m_peerConnection &&
                (this.m_peerConnection.close(), (this.m_peerConnection = null)),
              this.m_elVideo.pause(),
              (this.m_elVideo.srcObject = null),
              this.m_stats &&
                (this.m_stats.GetFPSMonitor().Close(), (this.m_stats = null)),
              (this.m_bFirstPlay = !0);
          }
          IsBuffering() {
            return !1;
          }
          GetCurrentPlayTime() {
            return 0;
          }
          GetLiveContentStartTime() {
            return null;
          }
          GetAvailableVideoStartTime() {
            return 0;
          }
          GetBufferedLiveEdgeTime() {
            return 0;
          }
          IsPaused() {
            return this.m_elVideo.paused;
          }
          async Play() {
            const e = this.m_bFirstPlay;
            this.m_bFirstPlay = !1;
            let t = !1;
            const n = () => {
              (t = !0),
                this.m_stats
                  .GetFPSMonitor()
                  .StartTracking(() =>
                    this.m_stats.ExtractFrameInfo(this.m_elVideo),
                  );
            };
            try {
              await this.m_elVideo.play(), n();
            } catch (e) {
              e.name;
            }
            !t && e && this.DispatchEvent("valve-userinputneeded");
          }
          Pause() {
            this.m_elVideo.pause();
          }
          CanSeek() {
            return !1;
          }
          SeekAndPlay(e) {
            return this.Play(), 0;
          }
          Seek(e) {
            return 0;
          }
          JumpTime(e) {
            return 0;
          }
          IsMuted() {
            return this.m_elVideo.muted;
          }
          SetMuted(e) {
            this.m_elVideo.muted = e;
          }
          SetVolume(e) {
            (e = p.OQ(e, 0, 1)), (this.m_elVideo.volume = e);
          }
          GetVolume() {
            return this.m_elVideo.volume;
          }
          GetDASHPlayerStats() {
            return this.m_stats;
          }
          SetStatsViewIsVisible(e) {
            e && !this.m_bStatsViewVisible
              ? (this.CaptureStatsForDisplay(),
                this.m_schCaptureDisplayStatsTrigger.Schedule(
                  250,
                  this.CaptureStatsForDisplay,
                ))
              : !e &&
                this.m_bStatsViewVisible &&
                this.m_schCaptureDisplayStatsTrigger.Cancel(),
              (this.m_bStatsViewVisible = e);
          }
          CaptureStatsForDisplay() {
            this.m_stats.SetHTMLVideoPlayerDisplay(
              this.m_elVideo.videoWidth,
              this.m_elVideo.videoHeight,
              this.m_elVideo.clientWidth,
              this.m_elVideo.clientHeight,
            ),
              this.m_schCaptureDisplayStatsTrigger.Schedule(
                250,
                this.CaptureStatsForDisplay,
              );
          }
          OnVideoPause(e) {
            this.m_stats.GetFPSMonitor().Close();
          }
          OnVideoResize(e) {
            this.m_stats.GetFPSMonitor().SetWindowResized();
          }
          GetVideoRepresentations() {
            let e = [];
            return e.push({ id: "auto", displayName: "Auto", selected: !0 }), e;
          }
          SetVideoRepresentation(e) {}
          IsLiveContent() {
            return !0;
          }
          GetThumbnailForTimestamp(e) {
            return "";
          }
          BHasTimedText() {
            return !1;
          }
        }
        (0, i.Cg)([g.o], S.prototype, "PlayWebRTC", null),
          (0, i.Cg)([a.XI.bound], S.prototype, "CaptureStatsForDisplay", null),
          (0, i.Cg)([g.o], S.prototype, "OnVideoPause", null),
          (0, i.Cg)([g.o], S.prototype, "OnVideoResize", null);
        var v = n(37779),
          b = n(77765),
          I = n(74002),
          w = n(10672),
          y = n(45518),
          E = n(38012),
          D = n(63628);
        class A {
          static s_VODStore;
          m_LoadingOAuth = null;
          m_transport;
          m_mapBookmarks = new Map();
          SetBookmarkForApp(e, t) {
            this.ValidateBookmarkData(t)
              ? this.m_mapBookmarks.set(e, D.s3.fromObject(t))
              : this.InitializeBookmarkForApp(e);
          }
          ValidateBookmarkData(e) {
            const t = e;
            return (
              "object" == typeof t &&
              Number.isInteger(t.playback_position_in_seconds) &&
              Number.isInteger(t.app_id)
            );
          }
          InitializeBookmarkForApp(e) {
            if (!this.m_mapBookmarks.has(e)) {
              let t = {
                app_id: e,
                playback_position_in_seconds: 0,
                video_track_id: "0",
                audio_track_id: "0",
                timedtext_track_id: "0",
                hide_from_watch_history: !1,
                hide_from_library: !1,
              };
              this.m_mapBookmarks.set(e, new D.s3(t));
            }
          }
          GetBookmarkPlayTimeInSeconds(e) {
            if (this.m_mapBookmarks.has(e)) {
              let t = this.m_mapBookmarks.get(e).playback_position_in_seconds();
              if (Number.isInteger(t)) return t;
            }
            return 0;
          }
          async SendBookMarkedTimeToServer(e, t, n, i, o) {
            if (!_.iA.logged_in) return;
            if (
              !this.m_transport &&
              (await this.m_LoadingOAuth, !this.m_transport)
            )
              return void console.warn(
                "CVideoBookmarkStore:SetBookMark no auth token / transport",
              );
            const r = y.w.Init(D.DB);
            if (this.m_mapBookmarks.has(e)) {
              let a = this.m_mapBookmarks.get(e),
                s = !1;
              a.app_id() != e && ((s = !0), a.set_app_id(e)),
                a.playback_position_in_seconds() != t &&
                  ((s = !0), a.set_playback_position_in_seconds(t)),
                (n = n || "0"),
                a.video_track_id() != n && (a.set_video_track_id(n), (s = !0)),
                (i = i || "0"),
                a.audio_track_id() != i && (a.set_audio_track_id(i), (s = !0)),
                (o = o || "0") != a.timedtext_track_id() &&
                  (a.set_timedtext_track_id(o), (s = !0)),
                s &&
                  (r.Body().add_bookmarks(a),
                  D.rs.SetVideoBookmark(this.m_transport, r));
            }
          }
          static Get() {
            return (
              A.s_VODStore || ((A.s_VODStore = new A()), A.s_VODStore.Init()),
              A.s_VODStore
            );
          }
          Init() {
            _.iA.logged_in && this.LoadWatchVideoOAuthToken();
          }
          async LoadWatchVideoOAuthToken() {
            const e =
                "community" == (0, _.yK)()
                  ? _.TS.COMMUNITY_BASE_URL + "actions/ajaxgetwatchvodtoken"
                  : _.TS.STORE_BASE_URL + "actions/ajaxgetwatchvodtoken",
              t = {};
            try {
              let n = await r().get(e, { params: t, withCredentials: !0 });
              if (
                n &&
                200 == n.status &&
                n.data &&
                1 == n.data.success &&
                n.data.webapi_token
              )
                return (
                  (this.m_transport = new E.D(
                    _.TS.WEBAPI_BASE_URL,
                    n.data.webapi_token,
                  ).GetServiceTransport()),
                  this.m_transport
                );
            } catch (e) {
              let t = (0, w.H)(e);
              console.error(
                "CVideoBookmarkStore:LoadWatchVideoOAuthToken: Failed " +
                  t.strErrorMsg,
                t,
              );
            }
            return null;
          }
        }
        class T {
          m_appid;
          constructor(e) {
            this.m_appid = e;
          }
          async SetBookmark(e, t, n, i) {
            _.iA.logged_in &&
              A.Get().SendBookMarkedTimeToServer(
                this.m_appid,
                Math.floor(e),
                t,
                n,
                i,
              );
          }
          GetBeginPlaytime() {
            return _.iA.logged_in
              ? A.Get().GetBookmarkPlayTimeInSeconds(this.m_appid)
              : 0;
          }
        }
        class M {
          static s_VODStore;
          m_mapAppToVOD = new Map();
          GetVODForAppID(e) {
            return this.m_mapAppToVOD.get(e);
          }
          async LoadVODForAppID(e, t) {
            if (this.m_mapAppToVOD.has(e)) return this.m_mapAppToVOD.get(e);
            const n = _.TS.STORE_BASE_URL + "video/details/" + e + "/0",
              i = {};
            try {
              let o = await r().get(n, {
                params: i,
                withCredentials: !0,
                cancelToken: t ? t.token : void 0,
              });
              if (t && t.token.reason) return null;
              if (
                o &&
                200 == o.status &&
                o.data &&
                (1 == o.data.success || "ready" == o.data.success)
              ) {
                let t = (0, a.sH)({
                  appid: e,
                  video_url: o.data.video_url,
                  bookmark: o.data.bookmark,
                });
                return (
                  o.data.bookmark
                    ? A.Get().SetBookmarkForApp(e, o.data.bookmark)
                    : A.Get().InitializeBookmarkForApp(e),
                  this.m_mapAppToVOD.set(e, t),
                  t
                );
              }
            } catch (e) {
              let t = (0, w.H)(e);
              console.error(
                "CVideoOnDemandStore:LoadVODForAppID: Failed " + t.strErrorMsg,
                t,
              );
            }
            return null;
          }
          static Get() {
            return (
              M.s_VODStore || ((M.s_VODStore = new M()), M.s_VODStore.Init()),
              M.s_VODStore
            );
          }
          Init() {}
        }
        var R = n(42674);
        const k = 7;
        var L, G;
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.Unlocking = 1)] = "Unlocking"),
            (e[(e.Loading = 2)] = "Loading"),
            (e[(e.Ready = 3)] = "Ready"),
            (e[(e.Error = 4)] = "Error");
        })(L || (L = {}));
        class F {
          m_rtUnlockTime = 0;
          m_schUnlockTimeout = new f.LU();
          m_broadcast;
          m_video;
          UnlockH264(e, t) {
            this.BCanUnlockH264()
              ? (e.SetState(L.Unlocking, ""),
                console.log("Unlocking H.264 for broadcast video playback"),
                this.RequestUnlockH264(),
                (this.m_broadcast = e),
                (this.m_video = t),
                (this.m_rtUnlockTime = Date.now()),
                this.m_schUnlockTimeout.Schedule(100, () =>
                  this.CheckUnlockState(),
                ))
              : e.SetState(L.Error, (0, I.we)("#BroadcastWatch_MinBrowser"));
          }
          BCanUnlockH264() {
            return (0, R.Dp)("RemotePlay.UnlockH264")
              ? (console.log("Client supports direct H.264 unlock"), !0)
              : (0, R.Dp)("BrowserView.PostMessageToParent")
                ? (console.log("Client supports browserview H.264 unlock"), !0)
                : (console.log("Client does not support H.264 unlock"), !1);
          }
          RequestUnlockH264() {
            (0, R.Dp)("RemotePlay.UnlockH264")
              ? (console.log("Requesting direct H.264 unlock"),
                SteamClient.RemotePlay.UnlockH264())
              : (0, R.Dp)("BrowserView.PostMessageToParent")
                ? (console.log("Requesting browserview unlock"),
                  SteamClient.BrowserView.PostMessageToParent(
                    "UnlockH264Request",
                    "CUnlockH264Helper",
                  ))
                : console.log(
                    "Failed to request H.264 unlock: no method supported",
                  );
          }
          CheckUnlockState() {
            if (this.m_broadcast.m_eWatchState != L.Unlocking) return;
            if ((0, u.Mc)() || (0, u.aM)())
              return (
                console.log("Unlocking H.264 successful"),
                this.m_broadcast.SetState(L.None, ""),
                void this.m_video.Restart()
              );
            Date.now() - this.m_rtUnlockTime > 6e3
              ? (console.log(
                  "Unlocking H.264 timed out (Steam client or servers offline?)",
                ),
                this.m_broadcast.SetState(
                  L.Error,
                  (0, I.we)("#BroadcastWatch_MinBrowser"),
                ))
              : this.m_schUnlockTimeout.Schedule(100, () =>
                  this.CheckUnlockState(),
                );
          }
        }
        class P {
          constructor() {
            (0, a.Gn)(this);
          }
          m_steamIDBroadcast = "";
          m_ulBroadcastID = "";
          m_ulViewerToken = "";
          m_strCDNAuthUrlParameters = void 0;
          m_bWebRTC = !1;
          m_data;
          m_eWatchState = L.None;
          m_strStateDescription = "";
          m_rgVideos = [];
          m_schManifestTimeout = new f.LU();
          m_schHeartbeatTimeout = new f.LU();
          SetState(e, t = "") {
            (this.m_eWatchState = e),
              (this.m_strStateDescription = t),
              e == L.Error && console.log(this.m_strStateDescription);
          }
        }
        (0, i.Cg)([a.sH], P.prototype, "m_ulBroadcastID", void 0),
          (0, i.Cg)([a.sH], P.prototype, "m_eWatchState", void 0),
          (0, i.Cg)([a.sH], P.prototype, "m_strStateDescription", void 0),
          (0, i.Cg)([a.XI], P.prototype, "SetState", null);
        class B {
          m_steamIDBroadcast = "";
          m_bInitialized = !1;
          m_strTitle = "";
          m_strAppId = "" + k;
          m_nAppID = k;
          m_strAppTitle = "";
          m_strThumbnailUrl = "";
          m_nViewerCount = 0;
          m_bIsOnline = !1;
          m_schUpdateTimeout = new f.LU();
          m_nRefCount = 0;
          constructor(e) {
            (0, a.Gn)(this), (this.m_steamIDBroadcast = e);
          }
        }
        (0, i.Cg)([a.sH], B.prototype, "m_bInitialized", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_strTitle", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_strAppId", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_nAppID", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_strAppTitle", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_strThumbnailUrl", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_nViewerCount", void 0),
          (0, i.Cg)([a.sH], B.prototype, "m_bIsOnline", void 0);
        class x {
          constructor() {
            (0, a.Gn)(this);
          }
          m_eWatchState = L.None;
          m_strStateDescription = "";
          m_rgVideos = [];
          SetState(e, t = "") {
            (this.m_eWatchState = e),
              (this.m_strStateDescription = t),
              e == L.Error && console.log(this.m_strStateDescription);
          }
        }
        (0, i.Cg)([a.sH], x.prototype, "m_eWatchState", void 0),
          (0, i.Cg)([a.sH], x.prototype, "m_strStateDescription", void 0),
          (0, i.Cg)([a.XI], x.prototype, "SetState", null);
        class O extends x {
          m_clipID;
          m_data;
        }
        class N extends x {
          m_nAppIDVOD;
          m_manifestURL;
        }
        class V {
          m_mapBroadcasts = new Map();
          m_mapClips = new Map();
          m_mapVODs = new Map();
          m_activeVideo = null;
          m_broadcastSettings = { nVolume: 1, bMuted: !1, ulViewerToken: "0" };
          m_schSaveSettings = new f.LU();
          m_broadcastInfos = {};
          constructor() {
            (0, a.Gn)(this), this.LoadBroadcastSettings();
          }
          GetBroadcastState(e) {
            if (e.IsBroadcastClip()) {
              let t = this.m_mapClips.get(e.GetBroadcastClipID());
              return t ? t.m_eWatchState : L.None;
            }
            if (e.IsBroadcastVOD()) {
              const t = this.m_mapVODs.get(e.GetBroadcastAppIDVOD());
              return t ? t.m_eWatchState : L.None;
            }
            {
              let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
              return t ? t.m_eWatchState : L.None;
            }
          }
          GetBroadcastStateDescription(e) {
            if (e.IsBroadcastClip()) {
              let t = this.m_mapClips.get(e.GetBroadcastClipID());
              return t ? t.m_strStateDescription : "";
            }
            if (e.IsBroadcastVOD()) {
              const t = this.m_mapVODs.get(e.GetBroadcastAppIDVOD());
              return t ? t.m_strStateDescription : "";
            }
            {
              let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
              return t ? t.m_strStateDescription : "";
            }
          }
          CreateBroadcastVideo(e, t, n, i) {
            let o = this.GetOrCreateBroadcast(t),
              { nVolume: r, bMuted: a } = this.m_broadcastSettings,
              s = new U(e, r, a, n);
            if (
              (s.SetBroadcastSteamID(t),
              o.m_rgVideos.push(s),
              (o.m_bWebRTC = i),
              !(0, u.Mc)() && !(0, u.aM)())
            ) {
              return new F().UnlockH264(o, s), s;
            }
            return s;
          }
          CreateClipVideo(e, t, n) {
            let i = this.GetOrCreateClip(t),
              { nVolume: o, bMuted: r } = this.m_broadcastSettings,
              a = new U(e, o, r, n);
            if (
              (a.SetBroadcastClipID(t),
              i.m_rgVideos.push(a),
              !(0, u.Mc)() && !(0, u.aM)())
            ) {
              return new F().UnlockH264(i, a), a;
            }
            return a;
          }
          CreateVODVideo(e, t, n) {
            let i = this.GetOrCreateVOD(t),
              { nVolume: o, bMuted: r } = this.m_broadcastSettings,
              a = new U(e, o, r, n);
            if (
              (a.SetBroadcastAppIDVOD(t),
              i.m_rgVideos.push(a),
              !(0, u.Mc)() && !(0, u.aM)())
            ) {
              return new F().UnlockH264(i, a), a;
            }
            return a;
          }
          StartVideo(e) {
            if (e.IsBroadcastClip()) {
              console.log(`Starting clip for ${e.GetBroadcastClipID()}`);
              let t = this.m_mapClips.get(e.GetBroadcastClipID());
              if (!t) return;
              this.SetActiveVideo(e),
                t.m_eWatchState == L.None
                  ? this.GetClipManifest(t, e.GetWatchLocation())
                  : t.m_eWatchState == L.Ready && e.StartClip(t);
            } else if (e.IsBroadcastVOD()) {
              console.log(`Starting VOD for ${e.GetBroadcastAppIDVOD()}`);
              let t = this.m_mapVODs.get(e.GetBroadcastAppIDVOD());
              if (!t) return;
              this.SetActiveVideo(e),
                t.m_eWatchState == L.None
                  ? this.GetVODManifest(t, e.GetWatchLocation())
                  : t.m_eWatchState == L.Ready && e.StartVOD(t);
            } else {
              let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
              if (!t) return;
              this.SetActiveVideo(e),
                t.m_eWatchState == L.None
                  ? this.GetBroadcastManifest(t, e.GetWatchLocation())
                  : t.m_eWatchState == L.Ready && e.StartBroadcast(t);
            }
          }
          SetActiveVideo(e) {
            this.m_mapBroadcasts.forEach((t) => {
              for (let n of t.m_rgVideos)
                n != e && n.StopPlaybackTillUserInput();
            }),
              this.m_mapClips.forEach((t) => {
                for (let n of t.m_rgVideos)
                  n != e && n.StopPlaybackTillUserInput();
              }),
              (this.m_activeVideo = e);
          }
          PauseAllVideo() {
            this.m_mapBroadcasts.forEach((e) => {
              for (let t of e.m_rgVideos) t.StopPlaybackTillUserInput();
            });
          }
          async StopVideo(e) {
            let t = e.GetBroadcastSteamID(),
              n = this.m_mapBroadcasts.get(t);
            e.Stop(),
              n &&
                (n.m_ulBroadcastID &&
                  (async function (e, t, n) {
                    if (!t) return;
                    let i = new FormData();
                    i.append("steamid", e),
                      i.append("broadcastid", t),
                      i.append("viewertoken", n);
                    try {
                      await r().post(
                        _.TS.CHAT_BASE_URL + "broadcast/stopwatching",
                        i,
                      );
                    } catch {}
                  })(
                    t,
                    n.m_ulBroadcastID,
                    this.m_broadcastSettings.ulViewerToken,
                  ),
                v.Wp(n.m_rgVideos, (t) => t == e),
                this.RemoveBroadcastIfUnused(n));
          }
          StartInfo(e) {
            const t = this.GetOrCreateBroadcastInfo(e);
            return (
              t.m_nRefCount++,
              (t.m_bInitialized && t.m_schUpdateTimeout.IsScheduled()) ||
                this.LoadBroadcastInfo(t),
              t
            );
          }
          StopInfo(e) {
            e.m_nRefCount--;
          }
          GetOrCreateBroadcastInfo(e) {
            if (!e) {
              return new B("");
            }
            if (!this.m_broadcastInfos[e]) {
              const t = (0, a.sH)(new B(e));
              this.m_broadcastInfos[e] = t;
            }
            return this.m_broadcastInfos[e];
          }
          GetOrCreateBroadcast(e) {
            let t = this.m_mapBroadcasts.get(e);
            return (
              t ||
              ((t = new P()),
              (t.m_steamIDBroadcast = e),
              (t.m_eWatchState = L.None),
              this.m_mapBroadcasts.set(e, t),
              t)
            );
          }
          GetBroadcast(e) {
            return this.m_mapBroadcasts.get(e);
          }
          GetBroadcastClip(e) {
            return this.m_mapClips.get(e);
          }
          GetBroadcastVOD(e) {
            return this.m_mapVODs.get(e);
          }
          RemoveBroadcastIfUnused(e) {
            e.m_rgVideos.length ||
              (e.m_schHeartbeatTimeout.Cancel(),
              e.m_schManifestTimeout.Cancel(),
              this.m_mapBroadcasts.delete(e.m_steamIDBroadcast));
          }
          GetOrCreateClip(e) {
            let t = this.m_mapClips.get(e);
            return (
              t ||
              ((t = new O()),
              (t.m_clipID = e),
              (t.m_eWatchState = L.None),
              this.m_mapClips.set(e, t),
              t)
            );
          }
          GetOrCreateVOD(e) {
            let t = this.m_mapVODs.get(e);
            return (
              t ||
              ((t = new N()),
              (t.m_nAppIDVOD = e),
              (t.m_eWatchState = L.None),
              this.m_mapVODs.set(e, t),
              t)
            );
          }
          async LoadBroadcastInfo(e) {
            let t = "0",
              n = this.m_mapBroadcasts.get(e.m_steamIDBroadcast);
            if ((n && (t = n.m_ulBroadcastID), 0 == e.m_nRefCount)) return;
            const i = {
              steamid: e.m_steamIDBroadcast,
              broadcastid: t,
              location:
                n &&
                n.m_rgVideos &&
                n.m_rgVideos[0] &&
                n.m_rgVideos[0].GetWatchLocation(),
            };
            try {
              const t = await r().get(
                `${_.TS.CHAT_BASE_URL}broadcast/getbroadcastinfo/`,
                { params: i },
              );
              if (!t || !t.data || !t.data.success || 1 != t.data.success)
                return void (e.m_bInitialized = !0);
              const n = t.data;
              (0, a.h5)(() => {
                (e.m_bInitialized = !0),
                  (e.m_strTitle = n.title),
                  (e.m_strAppId = n.appid),
                  (e.m_nAppID = Number.parseInt(n.appid)),
                  (e.m_strAppTitle = n.app_title),
                  (e.m_strThumbnailUrl = n.thumbnail_url),
                  (e.m_nViewerCount = n.viewer_count),
                  (e.m_bIsOnline = n.is_online),
                  !e.m_strTitle &&
                    s.td &&
                    ((e.m_strTitle = s.td.name),
                    (e.m_strAppTitle = s.td.appName || s.td.name));
                const t = n.update_interval;
                t &&
                  "number" == typeof t &&
                  e.m_schUpdateTimeout.Schedule(1e3 * t, () =>
                    this.LoadBroadcastInfo(e),
                  );
              });
            } catch (e) {
              console.error(e);
            }
          }
          DelayedGetBroadcastManifest(e, t, n = Date.now()) {
            e.m_schManifestTimeout.Schedule(5e3, () =>
              this.GetBroadcastManifest(e, t, n),
            );
          }
          async GetBroadcastManifest(e, t, n = Date.now()) {
            e.SetState(L.Loading, "");
            let i = {
                steamid: e.m_steamIDBroadcast,
                broadcastid: 0,
                viewertoken: this.m_broadcastSettings.ulViewerToken,
                watchlocation: t,
                sessionid: _.TS.SESSIONID,
                is_webrtc: e.m_bWebRTC,
              },
              o = null;
            try {
              o = await r().get(
                _.TS.CHAT_BASE_URL + "broadcast/getbroadcastmpd/",
                { params: i, withCredentials: !0 },
              );
            } catch (e) {
              let t = (0, w.H)(e);
              console.error(
                "Failed to get broadcast manifest!" + t.strErrorMsg,
                t,
              );
            }
            if (!o || 200 != o.status)
              return void e.SetState(
                L.Error,
                (0, I.we)("#BroadcastWatch_RequestFailed"),
              );
            let a = o.data;
            a.viewertoken && this.SetViewerToken(a.viewertoken);
            let s = a.success;
            if ("ready" == s)
              e.SetState(L.Ready),
                (e.m_ulBroadcastID = a.broadcastid),
                (e.m_ulViewerToken = this.m_broadcastSettings.ulViewerToken),
                (e.m_strCDNAuthUrlParameters = a.cdn_auth_url_parameters),
                (e.m_bWebRTC = a.is_webrtc),
                (e.m_data = a),
                this.LoadBroadcast(e),
                setTimeout(() => {
                  e.m_schHeartbeatTimeout.Schedule(
                    1e3 * e.m_data.heartbeat_interval,
                    () => this.HeartbeatBroadcast(e),
                  );
                }, 3e4 * Math.random());
            else if ("waiting" == s) {
              e.SetState(
                L.Loading,
                (0, I.we)("#BroadcastWatch_WaitingForResponse"),
              );
              let i = Date.now() - n;
              if (i > 6e4)
                return void e.SetState(
                  L.Error,
                  (0, I.we)("#BroadcastWatch_NotAvailable"),
                );
              let o = i > 3e4 ? a.retry : 5e3;
              e.m_schManifestTimeout.Schedule(o, () =>
                this.GetBroadcastManifest(e, t, n),
              );
            } else
              "waiting_for_start" == s
                ? (e.SetState(
                    L.Loading,
                    (0, I.we)("#BroadcastWatch_WaitingForStart"),
                  ),
                  e.m_schManifestTimeout.Schedule(a.retry, () =>
                    this.GetBroadcastManifest(e, t, n),
                  ))
                : "waiting_for_reconnect" == s
                  ? (e.SetState(
                      L.Loading,
                      (0, I.we)("#BroadcastWatch_WaitingForReconnect"),
                    ),
                    e.m_schManifestTimeout.Schedule(a.retry, () =>
                      this.GetBroadcastManifest(e, t, n),
                    ))
                  : "end" == s
                    ? e.SetState(
                        L.Error,
                        (0, I.we)("#BroadcastWatch_NotAvailable"),
                      )
                    : "too_many_broadcasts" == s
                      ? e.SetState(
                          L.Error,
                          (0, I.we)("#BroadcastWatch_TooManyBroadcasts"),
                        )
                      : "system_not_supported" == s
                        ? e.SetState(
                            L.Error,
                            (0, I.we)("#BroadcastWatch_SystemNotSupported"),
                          )
                        : "user_restricted" == s
                          ? e.SetState(
                              L.Error,
                              (0, I.we)("#BroadcastWatch_UserRestricted"),
                            )
                          : "poor_upload_quality" == s
                            ? e.SetState(
                                L.Error,
                                (0, I.we)("#BroadcastWatch_PoorUploadQuality"),
                              )
                            : "request_failed" == s
                              ? e.SetState(
                                  L.Error,
                                  (0, I.we)("#BroadcastWatch_RequestFailed"),
                                )
                              : "too_many_viewers" == s
                                ? e.SetState(
                                    L.Error,
                                    (0, I.we)("#BroadcastWatch_TooManyViewers"),
                                  )
                                : e.SetState(
                                    L.Error,
                                    (0, I.we)("#BroadcastWatch_NotAvailable"),
                                  );
          }
          async GetClipManifest(e, t) {
            e.SetState(L.Loading, "");
            let n = {
                clipid: e.m_clipID,
                watchlocation: t,
                sessionid: _.TS.SESSIONID,
              },
              i = null;
            try {
              i = await r().get(
                _.TS.CHAT_BASE_URL + "broadcast/getclipdetails",
                { params: n, withCredentials: !0 },
              );
            } catch (e) {
              console.error(e), console.log("Failed to get clip manifest!");
            }
            if (!i || 200 != i.status)
              return void e.SetState(
                L.Error,
                (0, I.we)("#BroadcastWatch_RequestFailed"),
              );
            let o = i.data;
            1 == o.success
              ? (e.SetState(L.Ready), (e.m_data = o), this.LoadClip(e))
              : e.SetState(L.Error, (0, I.we)("#BroadcastWatch_RequestFailed"));
          }
          async GetVODManifest(e, t) {
            e.SetState(L.Loading, "");
            let n = await M.Get().LoadVODForAppID(e.m_nAppIDVOD);
            n
              ? (e.SetState(L.Ready),
                (e.m_manifestURL = n.video_url),
                this.LoadVOD(e))
              : e.SetState(L.Error, (0, I.we)("#BroadcastWatch_RequestFailed"));
          }
          async HeartbeatBroadcast(e) {
            let t = new FormData();
            t.append("steamid", e.m_steamIDBroadcast),
              t.append("broadcastid", e.m_ulBroadcastID),
              t.append("viewertoken", this.m_broadcastSettings.ulViewerToken),
              r().post(_.TS.CHAT_BASE_URL + "broadcast/heartbeat/", t),
              e.m_schHeartbeatTimeout.Schedule(
                1e3 * e.m_data.heartbeat_interval,
                () => this.HeartbeatBroadcast(e),
              );
          }
          LoadBroadcast(e) {
            e.m_rgVideos.findIndex((e) => e == this.m_activeVideo) >= 0 &&
              this.m_activeVideo.StartBroadcast(e);
          }
          LoadClip(e) {
            e.m_rgVideos.findIndex((e) => e == this.m_activeVideo) >= 0 &&
              this.m_activeVideo.StartClip(e);
          }
          LoadVOD(e) {
            e.m_rgVideos.findIndex((e) => e == this.m_activeVideo) >= 0 &&
              this.m_activeVideo.StartVOD(e);
          }
          BroadcastDownloadFailed(e, t = !0, n = h.N_.Invalid) {
            e.Stop();
            let i = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
            i &&
              i.m_eWatchState != L.Loading &&
              (i.m_bWebRTC && t && (i.m_bWebRTC = !1),
              n == h.N_.StreamGone
                ? this.DelayedGetBroadcastManifest(i, e.GetWatchLocation())
                : this.GetBroadcastManifest(i, e.GetWatchLocation()));
          }
          UserInputClickVideo(e) {
            if (
              this.m_activeVideo != e &&
              (this.PauseAllVideo(),
              (this.m_activeVideo = e),
              !e.IsBroadcastClip() && !e.IsBroadcastVOD())
            ) {
              let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
              this.GetBroadcastManifest(t, e.GetWatchLocation());
            }
            e.UserInputClick();
          }
          LoadBroadcastSettings() {
            if (!window.localStorage) return;
            let e = window.localStorage.getItem("broadcastSettings");
            if (!e) return;
            let t = JSON.parse(e);
            if (!t) return;
            Object.assign(this.m_broadcastSettings, t);
            let n = this.m_broadcastSettings;
            (n.bMuted = !!n.bMuted),
              (n.nVolume = p.OQ(n.nVolume, 0, 1)),
              "string" != typeof n.ulViewerToken && (n.ulViewerToken = "0");
          }
          SaveBroadcastSettings() {
            window.localStorage &&
              this.m_schSaveSettings.Schedule(1e3, () => {
                try {
                  window.localStorage.setItem(
                    "broadcastSettings",
                    JSON.stringify(this.m_broadcastSettings),
                  );
                } catch (e) {}
              });
          }
          SetViewerToken(e) {
            this.m_broadcastSettings.ulViewerToken != e &&
              ((this.m_broadcastSettings.ulViewerToken = e),
              this.SaveBroadcastSettings());
          }
          GetViewerToken() {
            return this.m_broadcastSettings.ulViewerToken;
          }
          SaveVolumeChange(e, t) {
            (this.m_broadcastSettings.nVolume == e &&
              this.m_broadcastSettings.bMuted == t) ||
              ((this.m_broadcastSettings.nVolume = e),
              (this.m_broadcastSettings.bMuted = t),
              this.SaveBroadcastSettings());
          }
        }
        (0, i.Cg)([a.sH], V.prototype, "m_mapBroadcasts", void 0),
          (function (e) {
            (e[(e.Timeline = 1)] = "Timeline"),
              (e[(e.Minimap = 2)] = "Minimap");
          })(G || (G = {}));
        class U {
          m_elVideo = null;
          m_player = null;
          m_listeners = new f.Ji();
          m_gameDataParser = null;
          m_eWatchLocation = 0;
          m_bStartWithSubtitles = !1;
          m_steamIDBroadcast = null;
          m_BroadcastInfo = null;
          m_broadcastClipID = null;
          m_nBroadcastAppIDVOD = null;
          m_bPaused = !1;
          m_nPlaybackTime = 0;
          m_bBuffering = !1;
          m_bOnLiveEdge = !1;
          m_nVolume = 0;
          m_bMuted = !1;
          m_bUserInputNeeded = !1;
          m_bIsReplay = !1;
          m_nTimelineDuration = 1800;
          m_nVideoStartPos = 0;
          m_nVideoEndPos = 0;
          m_editorStartTime = 0;
          m_editorEndTime = 0;
          m_rgMarkers = a.sH.array();
          m_rgSegments = a.sH.array();
          m_rgRegions = a.sH.array();
          m_fnOnVideoEnd;
          m_videoEndingTimer;
          constructor(e, t, n, i) {
            (0, a.Gn)(this),
              (this.m_elVideo = e),
              (this.m_nVolume = t),
              (this.m_bMuted = n),
              (this.m_eWatchLocation = i);
          }
          SetBroadcastSteamID(e) {
            this.m_steamIDBroadcast = e;
          }
          GetBroadcastSteamID() {
            return this.m_steamIDBroadcast;
          }
          GetWatchLocation() {
            return this.m_eWatchLocation;
          }
          IsPaused() {
            return this.m_bPaused;
          }
          GetPlaybackTime() {
            return this.m_nPlaybackTime;
          }
          SetStatsViewIsVisible(e) {
            this.m_player && this.m_player.SetStatsViewIsVisible(e);
          }
          GetDASHPlayerStats() {
            return this.m_player.GetDASHPlayerStats();
          }
          BHasDASHStats() {
            return null != this.m_player;
          }
          IsTimelineMapActive() {
            return !1;
          }
          CanSeek() {
            return this.m_player && this.m_player.CanSeek();
          }
          IsBuffering() {
            return this.m_bBuffering;
          }
          IsOnLiveEdge() {
            return this.m_bOnLiveEdge;
          }
          GetVideoAvailableStartTime() {
            return this.m_nVideoStartPos;
          }
          GetVolume() {
            return this.m_nVolume;
          }
          GetUserInputNeeded() {
            return this.m_bUserInputNeeded;
          }
          IsReplay() {
            return this.m_bIsReplay;
          }
          IsBroadcastClip() {
            return null != this.m_broadcastClipID;
          }
          SetBroadcastClipID(e) {
            this.m_broadcastClipID = e;
          }
          GetBroadcastClipID() {
            return this.m_broadcastClipID;
          }
          IsBroadcastVOD() {
            return null != this.m_nBroadcastAppIDVOD;
          }
          SetBroadcastAppIDVOD(e) {
            this.m_nBroadcastAppIDVOD = e;
          }
          GetBroadcastAppIDVOD() {
            return this.m_nBroadcastAppIDVOD;
          }
          GetVideoRepresentations() {
            return this.m_player ? this.m_player.GetVideoRepresentations() : [];
          }
          SetVideoRepresentation(e) {
            this.m_player.SetVideoRepresentation(e);
          }
          GetBroadcastInfo() {
            return this.m_BroadcastInfo;
          }
          BHasTimedText() {
            return this.m_player?.BHasTimedText();
          }
          BHasPlayer() {
            return Boolean(this.m_player);
          }
          ListSubtitles() {
            return this.m_elVideo.textTracks;
          }
          GetSubtitles() {
            for (let e = 0; e < this.m_elVideo.textTracks.length; e++) {
              const t = this.m_elVideo.textTracks[e];
              if ("showing" === t.mode) return t;
            }
            return null;
          }
          SetSubtitles(e) {
            let t = e ? I.bi[e] : -1;
            this.m_player.SetSubtitles(t);
          }
          SetStartWithSubtitles(e) {
            this.m_bStartWithSubtitles = e;
          }
          GetBroadcastState() {
            return H.GetBroadcastState(this);
          }
          GetBroadcastStateDescription() {
            return H.GetBroadcastStateDescription(this);
          }
          SetOnVideoCallback(e) {
            this.m_fnOnVideoEnd = e;
          }
          InitPlayer() {
            (0, b.w)(!this.m_player, "Initialized twice?"),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "playing",
                this.OnVideoPlaying,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "pause",
                this.OnVideoPause,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "timeupdate",
                this.OnVideoTimeUpdate,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "volumechange",
                this.OnVolumeUpdated,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-bufferupdate",
                this.OnVideoTimeUpdate,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-gamedataupdate",
                this.OnGameDataUpdate,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-downloadfailed",
                this.OnDownloadFailed,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-webrtcretry",
                this.OnWebRTCRetry,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-webrtcfailed",
                this.OnWebRTCFailed,
              ),
              this.m_listeners.AddEventListener(
                this.m_elVideo,
                "valve-userinputneeded",
                this.OnUserInputNeeded,
              ),
              (this.m_bPaused = !1),
              (this.m_nPlaybackTime = 0),
              (this.m_bBuffering = !1),
              (this.m_nTimelineDuration = 1800),
              (this.m_nVideoStartPos = 0),
              (this.m_nVideoEndPos = 0),
              this.m_rgMarkers.clear(),
              this.m_rgSegments.clear(),
              (this.m_bUserInputNeeded = !1),
              (this.m_bIsReplay = !1);
          }
          Restart() {
            this.IsMuted() ||
              this.IsPaused() ||
              this.GetUserInputNeeded() ||
              this.Play();
          }
          StartBroadcast(e) {
            this.InitPlayer(),
              e.m_data.url
                ? ((this.m_player = new h.Zn(
                    this.m_elVideo,
                    !(0, u.Mc)() && (0, u.aM)(),
                  )),
                  this.m_player.PlayMPD(
                    e.m_data.url,
                    e.m_strCDNAuthUrlParameters,
                    e.m_data.hls_url,
                    this.m_bStartWithSubtitles,
                  ))
                : ((this.m_player = new S(this.m_elVideo)),
                  this.m_player.PlayWebRTC(
                    this.m_steamIDBroadcast,
                    e.m_ulViewerToken,
                    e.m_data.webrtc_session_id,
                    e.m_data.webrtc_turn_server,
                    e.m_data.webrtc_offer_sdp,
                  )),
              this.SetVolume(this.m_nVolume),
              this.m_player.SetMuted(this.m_bMuted);
            let t = this.m_player.GetDASHPlayerStats();
            t &&
              t.SetBroadcasterAndViewerInfo(
                this.m_steamIDBroadcast,
                _.iA.steamid,
                e.m_ulBroadcastID,
                e.m_ulViewerToken,
                e.m_strCDNAuthUrlParameters,
              ),
              (this.m_BroadcastInfo = H.StartInfo(this.m_steamIDBroadcast));
          }
          StartClip(e) {
            this.InitPlayer(),
              (this.m_player = new h.Zn(this.m_elVideo)),
              this.m_player.PlayMPD(
                e.m_data.clip_url,
                null,
                null,
                this.m_bStartWithSubtitles,
              ),
              this.SetVolume(this.m_nVolume),
              this.m_player.SetMuted(this.m_bMuted);
          }
          StartVOD(e) {
            this.InitPlayer();
            let t = new h.Zn(this.m_elVideo, !(0, u.Mc)() && (0, u.aM)());
            (this.m_player = t),
              _.iA.logged_in &&
                e.m_nAppIDVOD &&
                t.SetBookmarkAdapter(new T(e.m_nAppIDVOD)),
              this.m_player.PlayMPD(
                e.m_manifestURL,
                null,
                null,
                this.m_bStartWithSubtitles,
              ),
              this.SetVolume(this.m_nVolume),
              this.m_player.SetMuted(this.m_bMuted);
          }
          Stop() {
            this.m_listeners.Unregister(),
              this.m_BroadcastInfo &&
                (H.StopInfo(this.m_BroadcastInfo),
                (this.m_BroadcastInfo = null)),
              (this.m_gameDataParser = null),
              this.m_player && (this.m_player.Close(), (this.m_player = null));
          }
          TogglePlayPause() {
            !this.m_player || this.m_player.IsPaused()
              ? this.Play()
              : this.Pause();
          }
          Play() {
            const e = this.GetBroadcastState();
            e == L.None || this.IsBroadcastClip()
              ? H.StartVideo(this)
              : e == L.Ready &&
                (H.SetActiveVideo(this),
                this.m_player
                  ? this.m_player.Play()
                  : this.IsBroadcastVOD()
                    ? this.StartVOD(
                        H.GetBroadcastVOD(this.m_nBroadcastAppIDVOD),
                      )
                    : this.StartBroadcast(
                        H.GetBroadcast(this.m_steamIDBroadcast),
                      ));
          }
          Pause() {
            console.log(
              "Pause ",
              this.m_steamIDBroadcast,
              this.m_nBroadcastAppIDVOD,
              this.m_broadcastClipID,
            ),
              this.m_player && this.m_player.Pause();
          }
          JumpTime(e) {
            this.m_player.JumpTime(e);
          }
          Seek(e) {
            this.m_player?.Seek(e);
          }
          SeekAndPlay(e) {
            this.m_player.SeekAndPlay(e);
          }
          JumpToLiveEdge() {
            this.m_player.IsLiveContent()
              ? this.SeekAndPlay(this.m_player.GetBufferedLiveEdgeTime())
              : this.SeekAndPlay(this.m_player.GetAvailableVideoStartTime());
          }
          SetVolume(e) {
            this.m_player && this.m_player.SetVolume(e),
              (this.m_nVolume = this.m_player.GetVolume()),
              H.SaveVolumeChange(e, this.m_bMuted);
          }
          SetMute(e) {
            this.m_player && this.m_player.SetMuted(e),
              (this.m_bMuted = e),
              H.SaveVolumeChange(this.m_nVolume, e);
          }
          IsMuted() {
            return this.m_bMuted;
          }
          OnVideoPlaying() {
            (this.m_bPaused = !1),
              0 === this.m_editorStartTime &&
                0 === this.m_editorEndTime &&
                ((this.m_editorStartTime = this.GetVideoAvailableStartTime()),
                (this.m_editorEndTime =
                  this.GetVideoAvailableStartTime() +
                  this.GetTimelineDuration()));
          }
          OnVideoPause() {
            this.m_bPaused = !0;
          }
          OnVideoTimeUpdate() {
            if (
              (window.clearTimeout(this.m_videoEndingTimer),
              this.IsBroadcastClip())
            )
              (this.m_nPlaybackTime = this.m_player.GetCurrentPlayTime()),
                (this.m_nVideoStartPos =
                  this.m_player.GetAvailableVideoStartTime()),
                (this.m_nVideoEndPos = this.m_player.GetBufferedLiveEdgeTime()),
                (this.m_nTimelineDuration =
                  this.m_nVideoEndPos - this.m_nVideoStartPos),
                (this.m_bOnLiveEdge = !1),
                (this.m_bBuffering = this.m_player.IsBuffering());
            else {
              if (
                ((this.m_nPlaybackTime = this.m_player.GetCurrentPlayTime()),
                (this.m_nVideoStartPos =
                  this.m_player.GetAvailableVideoStartTime()),
                (this.m_nVideoEndPos = Math.max(
                  this.m_player.GetBufferedLiveEdgeTime(),
                  this.m_nPlaybackTime,
                )),
                this.IsBroadcastVOD() &&
                  ((this.m_nTimelineDuration = this.m_nVideoEndPos),
                  this.m_fnOnVideoEnd &&
                    this.m_nVideoEndPos - this.m_nPlaybackTime < h.Br))
              ) {
                const e = 400;
                this.m_videoEndingTimer = window.setTimeout(() => {
                  this.m_fnOnVideoEnd();
                }, e);
              }
              (this.m_bBuffering = this.m_player.IsBuffering()),
                (this.m_bOnLiveEdge =
                  this.m_nVideoEndPos - this.m_nPlaybackTime < h.Br),
                this.m_player.IsPaused() && (this.m_bOnLiveEdge = !1);
            }
          }
          OnVolumeUpdated() {
            (this.m_nVolume = this.m_player.GetVolume()),
              (this.m_bMuted = this.m_player.IsMuted());
          }
          OnGameDataUpdate(e) {
            let t = e.detail;
            if (!t || "object" != typeof t.gamedata) return;
            (this.m_gameDataParser &&
              this.m_gameDataParser.GetAppID() == t.gamedata.__appid) ||
              (this.m_gameDataParser = new d(t.gamedata.__appid));
            const n = this.m_player.GetLiveContentStartTime().getTime();
            if ("timelinemarkers" in t.gamedata) {
              const e = this.m_gameDataParser.UpdateMarkers(
                t.gamedata.__timelinemarkers,
                n,
              );
              e &&
                (this.m_rgMarkers.replace(e.rgMarkers || []),
                this.m_rgSegments.replace(e.rgSegments || []));
              const i = this.m_gameDataParser.UpdateRegions(
                t.gamedata.__regions,
              );
              i && this.m_rgRegions.replace(i);
            } else
              "soundtrack" in t.gamedata &&
                this.m_gameDataParser.UpdateSoundtrack(
                  this.m_steamIDBroadcast,
                  t.gamedata.soundtrack,
                );
          }
          OnDownloadFailed(e) {
            let t = e.detail || h.N_.Invalid;
            H.BroadcastDownloadFailed(this, !0, t);
          }
          OnWebRTCRetry() {
            H.BroadcastDownloadFailed(this, !1);
          }
          OnWebRTCFailed() {
            H.BroadcastDownloadFailed(this, !0);
          }
          OnUserInputNeeded() {
            this.m_bUserInputNeeded = !0;
          }
          UserInputClick() {
            (this.m_bUserInputNeeded = !1),
              this.m_player ? this.JumpToLiveEdge() : this.Play();
          }
          StopPlaybackTillUserInput() {
            this.Stop(), this.OnUserInputNeeded();
          }
          GetTimelineStartPos() {
            return this.m_nVideoEndPos - this.m_nTimelineDuration;
          }
          GetTimelineDuration() {
            return this.m_nTimelineDuration;
          }
          GetTimeAtMousePosition(e, t, n, i) {
            let o = p.Fu(e, t.left, t.right, n, i);
            return Math.floor(o + 0.5);
          }
          GetPercentOffsetFromTime(e, t) {
            let n = 0,
              i = 0;
            return (
              t == G.Timeline
                ? ((i = this.m_nVideoEndPos),
                  (n = i - this.m_nTimelineDuration))
                : ((n = 0), (i = 0)),
              p.Fu(e, n, i, 0, 100)
            );
          }
          GetTimelineMarkers() {
            return this.m_rgMarkers;
          }
          GetTimelineSegments() {
            return this.m_rgSegments;
          }
          GetGameDataRegions() {
            return this.m_rgRegions;
          }
          BHasMarkersOrSegments() {
            return this.has_segments || this.has_markers;
          }
          GetThumbnailForTimestamp(e) {
            return this.m_player.GetThumbnailForTimestamp(e);
          }
          get has_markers() {
            return this.m_rgMarkers.length > 0;
          }
          get has_segments() {
            return this.m_rgSegments.length > 0;
          }
        }
        (0, i.Cg)([a.sH], U.prototype, "m_player", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_bPaused", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_nPlaybackTime", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_bBuffering", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_bOnLiveEdge", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_nVolume", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_bMuted", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_bUserInputNeeded", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_bIsReplay", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_nTimelineDuration", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_nVideoStartPos", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_nVideoEndPos", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_editorStartTime", void 0),
          (0, i.Cg)([a.sH], U.prototype, "m_editorEndTime", void 0),
          (0, i.Cg)([a.XI.bound], U.prototype, "StartBroadcast", null),
          (0, i.Cg)([a.XI.bound], U.prototype, "StartClip", null),
          (0, i.Cg)([a.XI.bound], U.prototype, "StartVOD", null),
          (0, i.Cg)([g.o], U.prototype, "OnVideoPlaying", null),
          (0, i.Cg)([g.o], U.prototype, "OnVideoPause", null),
          (0, i.Cg)([a.XI.bound], U.prototype, "OnVideoTimeUpdate", null),
          (0, i.Cg)([g.o], U.prototype, "OnVolumeUpdated", null),
          (0, i.Cg)([a.XI.bound], U.prototype, "OnGameDataUpdate", null),
          (0, i.Cg)([g.o], U.prototype, "OnDownloadFailed", null),
          (0, i.Cg)([g.o], U.prototype, "OnWebRTCRetry", null),
          (0, i.Cg)([g.o], U.prototype, "OnWebRTCFailed", null),
          (0, i.Cg)([g.o], U.prototype, "OnUserInputNeeded", null);
        const H = new V();
        window.uiBroadcastWatchStore = H;
      },
      72751: (e, t, n) => {
        "use strict";
        n.d(t, { TL: () => s, mJ: () => r, v6: () => a });
        var i = n(71380),
          o = n(26721);
        function r() {
          return `${o.TS.CLAN_CDN_ASSET_URL}images/`;
        }
        function a(e) {
          return (e = e.replace(i.lw, r())).replace("http://", "https://");
        }
        function s(e) {
          return e.replace(/{STEAM_CLAN_IMAGE}/g, r());
        }
      },
      63497: (e, t, n) => {
        "use strict";
        n.d(t, {
          i6: () => U,
          AS: () => N,
          wI: () => O,
          pU: () => H,
          pb: () => V,
        });
        var i = n(34629),
          o = n(56132),
          r = n(83957),
          a = n.n(r),
          s = n(89193);
        n(63696);
        const l = [1, 3, 2],
          c = [1, 3],
          m = {
            capsule: { width: 800, height: 450, rgAcceptableTypes: c },
            marketingmessage_art_2_eventcapsule: {
              width: 800,
              height: 450,
              rgAcceptableTypes: c,
            },
            marketingmessage_art_eventcapsule: {
              width: 800,
              height: 450,
              rgAcceptableTypes: c,
            },
            spotlight: { width: 2108, height: 460, rgAcceptableTypes: c },
            localized_store_app_spotlight: {
              width: 1100,
              height: 240,
              rgAcceptableTypes: c,
            },
            localized_store_app_spotlight_mobile: {
              width: 500,
              height: 160,
              rgAcceptableTypes: c,
            },
            localized_title_image: {
              width: 1920,
              height: 622,
              rgAcceptableTypes: c,
            },
            background: { width: 1920, height: 622, rgAcceptableTypes: c },
            hero: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: c,
            },
            email_full: { width: 800, height: 300, rgAcceptableTypes: c },
            email_centered: { width: 644, height: 300, rgAcceptableTypes: c },
            broadcast_left: { width: 155, height: 337, rgAcceptableTypes: c },
            broadcast_right: { width: 155, height: 337, rgAcceptableTypes: c },
            sale_header: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: l,
            },
            sale_overlay: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: l,
            },
            localized_image_group: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: c,
            },
            localized_background_art: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: c,
            },
            sale_section_background: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: l,
            },
            sale_section_title: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: l,
            },
            link_capsule: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: c,
            },
            product_banner: { width: 1100, height: 160, rgAcceptableTypes: c },
            product_mobile_banner: {
              width: 500,
              height: 160,
              rgAcceptableTypes: c,
            },
            product_banner_override: {
              width: 1100,
              height: 160,
              rgAcceptableTypes: c,
            },
            product_mobile_banner_override: {
              width: 500,
              height: 160,
              rgAcceptableTypes: c,
            },
            schedule_track_art: {
              width: 196,
              height: 92,
              rgAcceptableTypes: c,
            },
            tab_bar_background: {
              width: 1500,
              height: 100,
              rgAcceptableTypes: c,
            },
            sale_logo: { width: 940, height: 460, rgAcceptableTypes: c },
            bestofyear_banner: {
              width: 1100,
              height: 160,
              rgAcceptableTypes: l,
            },
            bestofyear_banner_mobile: {
              width: 500,
              height: 160,
              rgAcceptableTypes: l,
            },
            localized_marketing_message: {
              width: 570,
              height: 600,
              rgAcceptableTypes: [1, 3, 2, 10],
            },
            localized_optin_banner: {
              width: 1e3,
              height: 150,
              rgAcceptableTypes: c,
            },
            localized_marketingmessage_webm: {
              width: 570,
              height: 600,
              rgAcceptableTypes: [5],
            },
            localized_marketingmessage_mp4: {
              width: 570,
              height: 600,
              rgAcceptableTypes: [4],
            },
            localized_partnerevent_webm: {
              width: 800,
              height: 450,
              rgAcceptableTypes: [5],
            },
            localized_partnerevent_mp4: {
              width: 800,
              height: 450,
              rgAcceptableTypes: [4],
            },
            localized_subtitles: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: [6, 7],
            },
            localized_marketingmessage_poster: {
              width: 528,
              height: 297,
              rgAcceptableTypes: [1, 3],
            },
            localized_marketingmessage_background: {
              width: 570,
              height: 600,
              rgAcceptableTypes: c,
            },
            localized_email_image: {
              width: 0,
              height: 0,
              bDisableEnforceDimensions: !0,
              rgAcceptableTypes: c,
            },
            spotlight_art: { width: 306, height: 260, rgAcceptableTypes: l },
            old_spotlight_art: {
              width: 306,
              height: 350,
              rgAcceptableTypes: l,
            },
            marketingmessage_art: {
              width: 570,
              height: 600,
              rgAcceptableTypes: l,
            },
            marketingmessage_art_2: {
              width: 570,
              height: 600,
              rgAcceptableTypes: l,
            },
            takeover_art: { width: 1850, height: 450, rgAcceptableTypes: l },
            takeover_webm_art: {
              width: 1850,
              height: 450,
              rgAcceptableTypes: [5],
            },
            takeover_mp4_art: {
              width: 1850,
              height: 450,
              rgAcceptableTypes: [4],
            },
            takeover_mobile_art: {
              width: 500,
              height: 350,
              rgAcceptableTypes: l,
            },
            takeover_webm_mobile_art: {
              width: 500,
              height: 350,
              rgAcceptableTypes: [5],
            },
            takeover_mp4_mobile_art: {
              width: 500,
              height: 350,
              rgAcceptableTypes: [4],
            },
            takeunder_art: { width: 940, height: 150, rgAcceptableTypes: l },
            takeunder_mobile_art: {
              width: 500,
              height: 160,
              rgAcceptableTypes: l,
            },
            app_header_capsule: {
              width: 920,
              height: 430,
              rgAcceptableTypes: c,
            },
            app_main_capsule: {
              width: 1232,
              height: 706,
              rgAcceptableTypes: c,
            },
          };
        function d(e, t, n) {
          const i = m[n];
          return (
            !!i &&
            !i.bDisableEnforceDimensions && e === i.width &&
            t === i.height
          );
        }
        function u(e, t, n) {
          const i = m[n];
          return (
            !!i &&
            (!!i.bDisableEnforceDimensions || !(e < i.width || t < i.height))
          );
        }
        function h(e, t) {
          return t.filter((t) =>
            (function (e, t) {
              return m[t].rgAcceptableTypes.includes(e);
            })(e, t),
          );
        }
        var p = n(77631),
          _ = n(50669),
          g = n(10672),
          C = n(69450),
          f = n(9907),
          S = n(50622),
          v = n(74002),
          b = n(17070);
        class I {
          dataUrl = void 0;
          width = void 0;
          height = void 0;
          type = void 0;
          status = void 0;
          message = void 0;
          language;
          file;
          uploadTime;
          fileType = 0;
          constructor(e, t, n, i, o, r) {
            if (
              ((0, s.Gn)(this),
              (this.file = e),
              (this.fileType = U.GetExtensionTypeFromURL(e.name)),
              (this.language = t),
              (this.uploadTime = Date.now()),
              (this.status = "pending"),
              n)
            ) {
              const e = h(this.fileType, n);
              let t = N(o, r, e, !1);
              void 0 === t && (t = N(o, r, e, !0)), (this.type = t || n[0]);
            }
            (this.height = r), (this.width = o), (this.dataUrl = i);
          }
          IsValidAssetType(e, t, n) {
            let i = 0,
              o = 0,
              r = !1,
              a = !e || 0 === e.length || e.includes(this.type);
            if (t) (i = t.width), (o = t.height), (r = !0);
            else if (this.type) {
              const e = m[this.type];
              e &&
                ((i = e.width),
                (o = e.height),
                (r = !e.bDisableEnforceDimensions));
            }
            const s = this.width >= i && this.height >= o,
              l = r ? this.width === i && this.height === o : s,
              c = n && n != this.fileType,
              d =
                !!(e && e.length > 0) && 0 == h(this.fileType, e || []).length,
              u = Boolean(A(this.fileType));
            let p = "",
              _ = !1;
            return (
              a
                ? d
                  ? (p = (0, v.we)("#ImageUpload_InvalidFileType"))
                  : c
                    ? (p = (0, v.we)(
                        "#ImageUpload_InvalidFormat",
                        U.GetExtensionStringForFileType(n),
                      ))
                    : l || u
                      ? s
                        ? !l &&
                          u &&
                          ((p = (0, v.we)(
                            "#ImageUpload_InvalidDimensions",
                            i,
                            o,
                          )),
                          (_ = !0))
                        : (p = (0, v.we)("#ImageUpload_TooSmall", i, o))
                      : (p = (0, v.we)("#ImageUpload_InvalidResolution", i, o))
                : (p = (0, v.we)("#ImageUpload_InvalidFormatSelected")),
              { error: p, needsCrop: _, match: this.type }
            );
          }
        }
        (0, i.Cg)([s.sH], I.prototype, "dataUrl", void 0),
          (0, i.Cg)([s.sH], I.prototype, "width", void 0),
          (0, i.Cg)([s.sH], I.prototype, "height", void 0),
          (0, i.Cg)([s.sH], I.prototype, "type", void 0),
          (0, i.Cg)([s.sH], I.prototype, "status", void 0),
          (0, i.Cg)([s.sH], I.prototype, "message", void 0);
        class w extends I {
          video;
          constructor(e, t, n, i) {
            super(e, t, i, n.src, n.videoWidth, n.videoHeight),
              (this.video = n);
          }
          BIsOriginalMinimumDimensions(e) {
            return u(this.video.videoWidth, this.video.videoHeight, e);
          }
          GetResizeDimension() {}
        }
        class y extends I {
          constructor(e, t, n) {
            super(e, t, n, URL.createObjectURL(e), 0, 0);
          }
          BIsOriginalMinimumDimensions(e) {
            return (function (e) {
              const t = m[e];
              return (
                t.rgAcceptableTypes.includes(6) ||
                t.rgAcceptableTypes.includes(7)
              );
            })(e);
          }
          GetResizeDimension() {}
        }
        function E(e) {
          const t = e.split(".").pop().toLocaleLowerCase();
          return "webm" == t || "mp4" == t;
        }
        class D extends I {
          bCropped = !1;
          localizedImageGroupPrimaryImage;
          media;
          constructor(e, t, n, i, o) {
            super(
              e,
              t,
              i,
              n.src,
              E(e.name) ? n.videoWidth : n.width,
              E(e.name) ? n.videoHeight : n.height,
            ),
              (0, s.Gn)(this),
              (this.media = n),
              (this.localizedImageGroupPrimaryImage = o);
          }
          ResetImage() {
            (this.height = this.media.height),
              (this.width = this.media.width),
              (this.dataUrl = this.media.src);
          }
          async CropImage(e, t, n, i, o, r, a) {
            return new Promise((s, l) => {
              const c = A(a);
              if (!c) return void l("Invalid format provided");
              const m = document.createElement("canvas");
              (m.width = o), (m.height = r);
              m.getContext("2d").drawImage(this.media, e, t, n, i, 0, 0, o, r),
                m.toBlob((e) => {
                  const t = m.toDataURL(c);
                  3 !== a && t.startsWith("data:image/png")
                    ? l("Unable to encode into the requested file format")
                    : ((this.file = (0, S.pE)(e, this.file.name)),
                      (this.width = o),
                      (this.height = r),
                      (this.dataUrl = t),
                      (this.uploadTime = Date.now()),
                      (this.bCropped = !0),
                      s());
                });
            });
          }
          BIsOriginalMinimumDimensions(e) {
            return u(this.media.width, this.media.height, e);
          }
          GetResizeDimension() {
            return (function (e) {
              if ("background" === e)
                return [
                  { width: 960, height: 311 },
                  { width: 480, height: 156 },
                ];
              if ("capsule" === e)
                return [{ width: m[e].width / 2, height: m[e].height / 2 }];
              if ("spotlight" === e)
                return [{ width: m[e].width / 2, height: m[e].height / 2 }];
              return;
            })(this.type);
          }
        }
        function A(e) {
          switch (e) {
            case 3:
              return "image/png";
            case 1:
              return "image/jpeg";
          }
        }
        function T(e, t, n) {
          if (((null != e && null != e) || (e = t), !n || 0 === n.length))
            return e;
          for (const t of n) if (v.A0.IsELanguageValidInRealm(e, t)) return e;
          for (const e of n) if (v.A0.IsELanguageValidInRealm(t, e)) return t;
          return n.includes(_.TU.k_ESteamRealmGlobal) ? 0 : 29;
        }
        (0, i.Cg)([s.sH], D.prototype, "bCropped", void 0);
        class M {
          m_filesToUpload = s.sH.array();
          m_filesCompleted = [];
          m_clanSteamID;
          m_allCancelTokens = new Array();
          m_lastError = void 0;
          m_fnSetImageURL = null;
          constructor(e) {
            (0, s.Gn)(this), (this.m_clanSteamID = e);
          }
          GetClanSteamID() {
            return this.m_clanSteamID;
          }
          SetImageAllUrlFunction(e) {
            this.m_fnSetImageURL = e;
          }
          async AddImage(e, t = 0, n, i) {
            const r = (function (e, t = 0) {
              let n = e.lastIndexOf(".");
              -1 != n && (e = e.slice(0, n).toLowerCase());
              let i = null,
                r = 0;
              e.endsWith("korean") && ((i = 4), (r = 6));
              for (let t = 0; t < 31; ++t) {
                const n = (0, o.Lg)(t);
                n.length <= r || (e.endsWith(n) && ((i = t), (r = n.length)));
              }
              return i || t;
            })(e.name, t);
            return this.AddImageForLanguage(e, r, n, i);
          }
          async AddImageForLanguage(e, t, n, i) {
            let o = !1;
            return (
              await new Promise((r) => {
                const a = new FileReader();
                (a.onload = () => {
                  const s = e.name.split(".").pop().toLowerCase();
                  let l = null;
                  !b.iA.is_support || ("webm" != s && "mp4" != s)
                    ? ((l = new Image()),
                      (l.onload = () => {
                        const a = new D(e, t, l, n, i);
                        (this.m_filesToUpload = [...this.m_filesToUpload, a]),
                          (o = !0),
                          r();
                      }))
                    : ((l = document.createElement("video")),
                      (l.onloadeddata = () => {
                        const a = new D(e, t, l, n, i);
                        (this.m_filesToUpload = [...this.m_filesToUpload, a]),
                          (o = !0),
                          r();
                      })),
                    (l.onerror = (e) => {
                      console.error(
                        "CClanImageUploader failed to load the image, details",
                        e,
                      ),
                        (o = !1),
                        r();
                    }),
                    (l.src = a.result.toString());
                }),
                  a.readAsDataURL(e);
              }),
              o
            );
          }
          async AddExistingClanImage(e, t = 0, n, i) {
            let o = U.GetHashAndExt(e),
              r = U.GenerateEditableArtworkURLFromHashAndExtension(
                this.m_clanSteamID,
                o,
              ),
              s = await a()({ url: r, method: "GET", responseType: "blob" }),
              l = (0, S.pE)(s.data, e.file_name);
            return await this.AddImage(l, t, n, i);
          }
          DeleteUploadImageByIndex(e) {
            this.m_filesToUpload.splice(e, 1),
              (this.m_filesToUpload = [...this.m_filesToUpload]);
          }
          DeleteUploadImage(e) {
            let t = this.m_filesToUpload.findIndex(
              (t) => e.file == t.file && e.uploadTime == t.uploadTime,
            );
            t >= 0 && this.DeleteUploadImageByIndex(t);
          }
          ClearImages() {
            this.m_filesToUpload = s.sH.array();
          }
          GetFilesUploaded() {
            return this.m_filesCompleted;
          }
          GetLastErrorFile() {
            return this.m_lastError;
          }
          GetCompletedFiles() {
            return this.m_filesCompleted.length;
          }
          GetTotalFiles() {
            return this.m_filesToUpload.length;
          }
          GetFilesToUpload() {
            return this.m_filesToUpload.map((e) => e.file);
          }
          GetUploadImages() {
            return this.m_filesToUpload;
          }
          BHasError() {
            return null != this.m_lastError;
          }
          BAllDone() {
            return (
              this.m_filesCompleted.length > 0 &&
              this.m_filesCompleted.length == this.m_filesToUpload.length
            );
          }
          BIsFileCompleted(e) {
            return -1 != this.m_filesCompleted.indexOf(e);
          }
          async UploadAllImages(e, t, n, i, o) {
            const r = {};
            for (let e of this.m_filesToUpload)
              if (!this.BIsFileCompleted(e.file)) {
                const t = e.IsValidAssetType(n, i, o);
                if (t.error || t.needsCrop)
                  t.error &&
                    (this.m_lastError = {
                      file: e.file,
                      message: t.error,
                      status: 401,
                    });
                else {
                  e.status = "uploading";
                  r[`${e.uploadTime}/${e.file.name}`] = this.UploadFile({
                    uploadFile: e.file,
                    filename: e.file.name,
                    artworkType: t.match,
                    resizeRequests: e.GetResizeDimension(),
                    primaryLocalizeImage: e.localizedImageGroupPrimaryImage,
                    lang: e.language,
                    width: e.width,
                    height: e.height,
                  });
                }
              }
            const a = await (0, f.RR)(r);
            return (
              Object.keys(a).forEach((n) => {
                const i = a[n],
                  o = this.m_filesToUpload.find(
                    (e) => `${e.uploadTime}/${e.file.name}` === n,
                  );
                if (o)
                  if (1 !== i.success)
                    (o.status = "failed"), (o.message = i.message);
                  else if (((o.status = "success"), this.m_fnSetImageURL))
                    if (i.origimagehash) {
                      const n = T(i.language, t, e);
                      H.AddLocalizeImageUploaded(i.origimagehash, n);
                    } else {
                      const n = H.GetClanImageByImageHash(
                        this.m_clanSteamID,
                        i.image_hash,
                      );
                      if (n) {
                        const i = T(o.language, t, e);
                        this.m_fnSetImageURL(o.type, n, i);
                      }
                    }
              }),
              a
            );
          }
          CancelAllUploads() {
            for (let e of this.m_allCancelTokens)
              e.cancel((0, v.we)("#ImageUpload_CancelRequest"));
            this.m_allCancelTokens = new Array();
          }
          RetryAllFailedUploads() {
            this.CancelAllUploads(),
              this.UploadAllImages([_.TU.k_ESteamRealmGlobal], 0);
          }
          async handleUploadRefresh(e) {
            await H.LoadClanImages(this.m_clanSteamID, !0, e);
          }
          async UploadFile(e) {
            const {
              uploadFile: t,
              filename: n,
              artworkType: i,
              resizeRequests: o,
              primaryLocalizeImage: r,
              lang: s,
              width: l,
              height: c,
            } = e;
            let m = null;
            const d = new FormData();
            d.append("clanimage", t, n),
              d.append("sessionid", b.TS.SESSIONID),
              i && d.append("arttype", i),
              o &&
                o.length > 0 &&
                d.append(
                  "resize",
                  o.map((e) => e.width + "x" + e.height).join(","),
                );
            let u = "/uploadimage/";
            r &&
              ((u = "/ajaxuploadlocalizedimage/"),
              d.append("origimagehash", r.image_hash),
              d.append("thumbhash", r.thumbnail_hash),
              d.append("extension", "" + r.file_type),
              d.append("language", "" + s));
            const h = n.split(".").pop().toLocaleLowerCase();
            ("webm" != h && "mp4" != h) ||
              (d.append("video_width", "" + l),
              d.append("video_height", "" + c));
            const p = a().CancelToken.source();
            this.m_allCancelTokens.push(p);
            let _ =
                b.TS.COMMUNITY_BASE_URL +
                "/gid/" +
                this.m_clanSteamID.ConvertTo64BitString() +
                u,
              C = {
                cancelToken: p.token,
                withCredentials: !0,
                headers: { "Content-Type": "multipart/form-data" },
              };
            try {
              (m = await a().post(_, d, C)), this.m_filesCompleted.push(t);
            } catch (e) {
              (this.m_lastError = {
                file: t,
                status: e.response ? e.response.status : 500,
                message: (0, g.H)(e).strErrorMsg,
              }),
                (m = e.response);
            }
            return r || (await this.handleUploadRefresh(p)), m.data;
          }
          static async SendResizeRequest(e, t, n, i, o) {
            let r =
                b.TS.COMMUNITY_BASE_URL +
                "/gid/" +
                t.ConvertTo64BitString() +
                "/resizeimage/",
              s = new FormData();
            return (
              s.append("imagehash", n),
              s.append("extension", i),
              s.append(
                "resize",
                o.map((e) => e.width + "x" + e.height).join(","),
              ),
              s.append("sessionid", b.TS.SESSIONID),
              (await a().post(r, s, { cancelToken: e.token })).data.count
            );
          }
        }
        (0, i.Cg)([s.sH], M.prototype, "m_filesToUpload", void 0),
          (0, i.Cg)([s.sH], M.prototype, "m_filesCompleted", void 0),
          (0, i.Cg)([s.sH], M.prototype, "m_lastError", void 0),
          (0, i.Cg)([C.o], M.prototype, "AddImage", null),
          (0, i.Cg)([C.o], M.prototype, "AddExistingClanImage", null),
          (0, i.Cg)([C.o], M.prototype, "DeleteUploadImageByIndex", null),
          (0, i.Cg)([C.o], M.prototype, "DeleteUploadImage", null),
          (0, i.Cg)([C.o], M.prototype, "ClearImages", null);
        n(61305);
        var R = n(37779),
          k = n(77765),
          L = (n(82924), n(28574)),
          G = n(72751),
          F = n(75282),
          P = n(26721);
        class B {
          m_filesToUpload = s.sH.array();
          m_strUploadPath = null;
          m_fnUploadSuccessCallback = null;
          constructor(e, t) {
            (0, s.Gn)(this),
              (this.m_strUploadPath = e),
              (this.m_fnUploadSuccessCallback = t);
          }
          GetFnOnUploadSuccess() {
            return this.m_fnUploadSuccessCallback;
          }
          SetFnOnUploadSuccess(e) {
            this.m_fnUploadSuccessCallback = e;
          }
          GetUploadPath() {
            return this.m_strUploadPath;
          }
          SetUploadPath(e) {
            this.m_strUploadPath = e;
          }
          GetUploadImages() {
            return this.m_filesToUpload;
          }
          ClearImages() {
            this.m_filesToUpload = s.sH.array();
          }
          DeleteUploadImage(e) {
            const t = this.m_filesToUpload.findIndex(
              (t) => e.file == t.file && e.uploadTime == t.uploadTime,
            );
            t >= 0 &&
              (this.m_filesToUpload.splice(t, 1),
              (this.m_filesToUpload = [...this.m_filesToUpload]));
          }
          isImageFile(e) {
            return e.type.startsWith("image/");
          }
          isVideoFile(e) {
            return e.type.startsWith("video/");
          }
          isSubtitleTextFile(e) {
            return (
              e.type.startsWith("text/") ||
              ("" == e.type && e.name.split("?")[0].endsWith(".vtt")) ||
              ("" == e.type && e.name.split("?")[0].endsWith(".srt"))
            );
          }
          async AddImageForLanguage(e, t, n, i) {
            let o = !1;
            return (
              await new Promise((r) => {
                if (this.isImageFile(e)) {
                  const a = new FileReader();
                  (a.onload = () => {
                    const s = new Image();
                    (s.onload = () => {
                      const a = new D(e, t, s, n, i);
                      (this.m_filesToUpload = [...this.m_filesToUpload, a]),
                        (o = !0),
                        r();
                    }),
                      (s.onerror = (e) => {
                        console.error(
                          "CCloudImageUploader failed to load the image, details",
                          e,
                        ),
                          (o = !1),
                          r();
                      }),
                      (s.src = a.result.toString());
                  }),
                    a.readAsDataURL(e);
                } else if (this.isVideoFile(e)) {
                  const i = document.createElement("video");
                  (i.preload = "metadata"),
                    i.addEventListener("loadedmetadata", () => {
                      const a = new w(e, t, i, n);
                      (this.m_filesToUpload = [...this.m_filesToUpload, a]),
                        (o = !0),
                        r();
                    }),
                    (i.onerror = (e) => {
                      console.error(
                        "CCloudImageUploader failed to load the video, details",
                        e,
                      ),
                        (o = !1),
                        r();
                    }),
                    (i.src = URL.createObjectURL(e));
                } else
                  this.isSubtitleTextFile(e)
                    ? ((this.m_filesToUpload = [
                        ...this.m_filesToUpload,
                        new y(e, t, n),
                      ]),
                      (o = !0),
                      r())
                    : (console.error(
                        "CCloudImageUploader failed to determine file type, not image, video or subtitle",
                        e,
                        e.type,
                      ),
                      (o = !1));
              }),
              o
            );
          }
          async UploadAllImages(e, t, n, i, o) {
            const r = {};
            for (const e of this.m_filesToUpload)
              if ("pending" === e.status) {
                const t = e.IsValidAssetType(n, i, o);
                if (!t.error && !t.needsCrop) {
                  e.status = "uploading";
                  r[`${e.uploadTime}/${e.file.name}`] = this.UploadFile(
                    e.file,
                    e.file.name,
                    e.language,
                    t.match,
                  );
                }
              }
            const a = await (0, f.RR)(r);
            return (
              Object.keys(a).forEach((n) => {
                const i = a[n],
                  o = this.m_filesToUpload.find(
                    (e) => `${e.uploadTime}/${e.file.name}` === n,
                  );
                if (o)
                  if (i && 1 === i.success) {
                    o.status = "success";
                    const n = T(i.language, t, e);
                    this.m_fnUploadSuccessCallback(
                      i.image_hash,
                      i.file_name,
                      n,
                      (function (e) {
                        switch (e) {
                          case 2:
                            return "image/gif";
                          case 1:
                            return "image/jpeg";
                          case 3:
                            return "image/png";
                          case 4:
                            return "video/mp4";
                          case 5:
                            return "video/webm";
                          case 6:
                            return "text/vtt";
                          case 7:
                            return "text/srt";
                          case 10:
                            return "image/webp";
                        }
                        return null;
                      })(i.file_type),
                      o.type,
                      o.width,
                      o.height,
                    );
                  } else (o.status = "failed"), (o.message = i.message);
              }),
              a
            );
          }
          async UploadFile(e, t, n, i, o, r) {
            let s = null;
            const l = new FormData();
            l.append("assetfile", e, t),
              l.append("sessionid", P.TS.SESSIONID),
              l.append("elangauge", "" + n),
              l.append("originalname", t),
              o?.length > 0 &&
                l.append(
                  "resize",
                  o.map((e) => e.width + "x" + e.height).join(","),
                ),
              i && l.append("arttype", i);
            const c = x(t);
            if (!c)
              return {
                success: 8,
                message: "Invalid file extension, cannot determine mimetype",
              };
            l.append("mimetype", c);
            try {
              s = await a().post(this.m_strUploadPath, l, {
                withCredentials: !0,
                headers: { "Content-Type": "multipart/form-data" },
              });
            } catch (e) {
              const t = (0, g.H)(e);
              console.log("CCloudImageUploader.UploadFile failed ", t, e),
                (s = e.response);
            }
            return s?.data;
          }
        }
        function x(e) {
          const t = e.toLowerCase();
          return t.endsWith(".jpg")
            ? "image/jpeg"
            : t.endsWith(".png")
              ? "image/png"
              : t.endsWith(".gif")
                ? "image/gif"
                : t.endsWith(".mp4")
                  ? "video/mp4"
                  : t.endsWith(".webm")
                    ? "video/webm"
                    : t.endsWith(".srt")
                      ? "text/srt"
                      : t.endsWith(".vtt")
                        ? "text/vtt"
                        : t.endsWith(".webp")
                          ? "image/webp"
                          : null;
        }
        (0, i.Cg)([s.sH], B.prototype, "m_filesToUpload", void 0),
          (0, i.Cg)([C.o], B.prototype, "GetUploadImages", null),
          (0, i.Cg)([C.o], B.prototype, "ClearImages", null),
          (0, i.Cg)([C.o], B.prototype, "DeleteUploadImage", null),
          (0, i.Cg)([C.o], B.prototype, "AddImageForLanguage", null),
          (0, i.Cg)([C.o], B.prototype, "UploadAllImages", null);
        var O;
        function N(e, t, n, i = !1) {
          if (n)
            for (let o of n) {
              if (i ? u(e, t, o) : d(e, t, o)) return o;
            }
        }
        !(function (e) {
          (e.full = ""),
            (e.background_main = "_960x311"),
            (e.background_mini = "_480x156"),
            (e.capsule_main = "_400x225"),
            (e.spotlight_main = "_1054x230");
        })(O || (O = {}));
        const V = [
          "localized_image_group",
          "link_capsule",
          "product_mobile_banner_override",
          "product_banner_override",
          "sale_section_title",
          "schedule_track_art",
          "localized_background_art",
        ];
        class U {
          constructor() {
            (0, s.Gn)(this),
              "dev" == b.TS.WEB_UNIVERSE && (window.g_ClanImageStore = this);
          }
          m_mapClanToImages = new Map();
          m_mapClanImageLoadPromises = new Map();
          m_imageListChangeCallback = new Map();
          m_mapClanImageLoadState = new Map();
          m_mapImageIDToResolution = new Map();
          m_curLocImageGroup = null;
          m_curLocImageGroupType = null;
          BHasImageResolution(e) {
            return this.m_mapImageIDToResolution.has(e.imageid);
          }
          GetImageResolution(e) {
            return this.m_mapImageIDToResolution.get(e.imageid);
          }
          SetImageResolution(e, t) {
            this.m_mapImageIDToResolution.set(e.imageid, t);
          }
          GetImageListCallbackForClanAccountID(e) {
            return (
              this.m_imageListChangeCallback.has(e) ||
                this.m_imageListChangeCallback.set(e, new f.lu()),
              this.m_imageListChangeCallback.get(e)
            );
          }
          static GetExtensionStringForFileType(e) {
            switch (e) {
              case 1:
                return ".jpg";
              case 2:
                return ".gif";
              case 3:
                return ".png";
              case 5:
                return ".webm";
              case 4:
                return ".mp4";
              case 7:
                return ".srt";
              case 6:
                return ".vtt";
              case 10:
                return ".webp";
            }
          }
          static GetExtensionString(e) {
            return U.GetExtensionStringForFileType(e.file_type) || ".jpg";
          }
          static GetExtensionTypeFromURL(e) {
            return (0, F.yh)(e);
          }
          static GetHashAndExt(e) {
            return e ? e.image_hash + U.GetExtensionString(e) : null;
          }
          static GetThumbHashAndExt(e) {
            return e ? e.thumbnail_hash + U.GetExtensionString(e) : null;
          }
          m_vecClanImageDragListener = new Array();
          AddClanImageDragListener(e) {
            -1 == this.m_vecClanImageDragListener.indexOf(e) &&
              this.m_vecClanImageDragListener.push(e);
          }
          RemoveClanImageDragListener(e) {
            let t = this.m_vecClanImageDragListener.indexOf(e);
            -1 != t && this.m_vecClanImageDragListener.splice(t, 1);
          }
          GetClanImageDragListener() {
            return this.m_vecClanImageDragListener;
          }
          BHasLoadedClanImages(e) {
            return this.m_mapClanToImages.has(e.GetAccountID());
          }
          async LoadClanImages(e, t, n) {
            const i = e.GetAccountID();
            return (
              (!t && this.m_mapClanImageLoadPromises.has(i)) ||
                this.m_mapClanImageLoadPromises.set(
                  i,
                  this.InternalLoadClanImages(e, t, n),
                ),
              this.m_mapClanImageLoadPromises.get(i)
            );
          }
          async InternalLoadClanImages(e, t, n) {
            let i = e.GetAccountID();
            if (
              ((0, k.w)(e && 0 != i, "ClanSteamID missing:" + e),
              e && (!this.m_mapClanToImages.has(i) || t))
            ) {
              let t = {},
                o = null;
              const r =
                b.TS.COMMUNITY_BASE_URL +
                "/gid/" +
                e.ConvertTo64BitString() +
                "/getimages/";
              o = await a().get(r, {
                params: t,
                withCredentials: !0,
                cancelToken: n ? n.token : null,
              });
              for (let e of o.data.images) e.clanAccountID = i;
              (0, s.h5)(() => {
                this.m_mapClanImageLoadState.set(i, { loaded: !0 }),
                  this.m_mapClanToImages.set(i, o.data.images),
                  this.GetImageListCallbackForClanAccountID(i).Dispatch(
                    o.data.images,
                  );
              });
            }
            return this.m_mapClanToImages.get(i);
          }
          GetLoadState(e) {
            return this.m_mapClanImageLoadState.get(e.GetAccountID());
          }
          GetClanImages(e) {
            return this.GetClanImagesByAccount(e.GetAccountID());
          }
          GetClanImagesByAccount(e) {
            let t = this.m_mapClanToImages.get(e);
            return t || new Array();
          }
          GetFilteredClanImages(e, t) {
            let n = H.GetClanImages(e);
            return this.GetFilteredClanImagesList(n, t);
          }
          GetFilteredClanImagesList(e, t) {
            if (t && t.trim().length > 0) {
              t = t.trim().toLowerCase();
              let n = new Array();
              for (let i of e)
                i.file_name &&
                  i.file_name.toLowerCase().indexOf(t) >= 0 &&
                  n.push(i);
              return n;
            }
            return e;
          }
          GetClanImageByID(e, t) {
            let n = e.GetAccountID(),
              i = this.m_mapClanToImages.get(n);
            return i ? i.find((e) => e.imageid == t) : null;
          }
          GetClanImageByURL(e, t) {
            let n = e.GetAccountID(),
              i = this.m_mapClanToImages.get(n);
            return i ? i.find((e) => e.thumb_url == t || e.url == t) : null;
          }
          GetClanImageByFile(e, t) {
            let n = e.GetAccountID(),
              i = this.m_mapClanToImages.get(n);
            return i ? i.find((e) => e.file_name == t.name) : null;
          }
          GetClanImageByImageHash(e, t) {
            let n = e.GetAccountID(),
              i = this.m_mapClanToImages.get(n);
            return i ? i.find((e) => e.image_hash == t) : null;
          }
          async DeleteClanImageByID(e, t) {
            let n = { sessionid: b.TS.SESSIONID, imageid: t },
              i = e.GetAccountID(),
              o = await a().get(
                b.TS.COMMUNITY_BASE_URL +
                  "/gid/" +
                  e.ConvertTo64BitString() +
                  "/deleteimage/",
                { params: n },
              );
            if (!o || 200 != o.status || 1 != o.data.success) return o.data;
            let r = this.m_mapClanToImages.get(i),
              s = r.findIndex((e, n, i) => e.imageid == t);
            return (
              s >= 0 &&
                (r.splice(s, 1),
                this.GetImageListCallbackForClanAccountID(i).Dispatch([...r])),
              o.data
            );
          }
          async DeleteClanImage(e, t) {
            return this.DeleteClanImageByID(e, t.imageid);
          }
          static GetHashFromHashAndExt(e) {
            let t = e.substring(e.lastIndexOf("."));
            return e.substring(0, e.length - t.length);
          }
          static GetExtensionStringFromHashAndExt(e) {
            return e.substring(e.lastIndexOf("."));
          }
          static GenerateArtworkURLFromHashAndExtensions(
            e,
            t,
            n = O.full,
            i,
            r,
          ) {
            if (n != O.full || i) {
              let a = t.substring(t.lastIndexOf(".")),
                s = t.substring(0, t.length - a.length);
              return i && "localized_image_group" == r
                ? (0, G.mJ)() +
                    e.GetAccountID() +
                    "/" +
                    s +
                    "/" +
                    (0, o.x6)((0, o.Lg)(i)) +
                    a
                : (0, G.mJ)() + e.GetAccountID() + "/" + s + n + a;
            }
            return (0, G.mJ)() + e.GetAccountID() + "/" + t;
          }
          static GenerateEditableArtworkURLFromHashAndExtension(e, t, n) {
            let i =
              b.TS.COMMUNITY_BASE_URL +
              "gid/" +
              e.ConvertTo64BitString() +
              "/showclanimage/?image_hash_and_ext=" +
              t;
            return n && (i += "&lang=" + n), i;
          }
          static GetMimeType(e) {
            return x(e);
          }
          async AsyncGetImageResolution(e, t, n, i, o) {
            const r = t + U.GetExtensionString({ file_type: n }),
              a = U.GenerateEditableArtworkURLFromHashAndExtension(e, r);
            return await this.AsyncGetImageResolutionInternal(a, i, o);
          }
          async AsyncGetImageResolutionInternal(e, t, n) {
            let i = { success: void 0 },
              o = new Image();
            (o.crossOrigin = "anonymous"),
              (o.onerror = (t) => {
                n ||
                  ((i.err_msg =
                    "Load fail on url " +
                    e +
                    " with error: " +
                    (0, g.H)(t).strErrorMsg),
                  console.error(i.err_msg)),
                  (i.success = 2);
              }),
              (o.onload = () => {
                (i.width = o.width),
                  (i.height = o.height),
                  (0, k.w)(
                    i.width > 0 && i.height > 0,
                    "unexpected image resolution discovered for strURL: " + e,
                  ),
                  (i.success = 1);
              }),
              (o.src = e),
              t.token.promise.catch((e) => {
                (o.onload = () => {}), (i.success = 52);
              });
            let r = 0;
            for (; void 0 === i.success && r < 100; )
              await (0, L.IP)(100), (r += 1);
            return (
              r >= 100 &&
                ((i.success = 16),
                (i.err_msg = "We timed out processing images")),
              i
            );
          }
          async AsyncOverlay(e, t, n, i, o, r) {
            let a,
              s,
              l = new Image();
            (l.crossOrigin = "anonymous"),
              (l.onerror = (e) => {
                (a =
                  "Load fail on url " +
                  n +
                  " with error: " +
                  (0, g.H)(e).strErrorMsg),
                  console.error(a);
              }),
              (l.onload = () => {
                let e = new Image();
                (e.crossOrigin = "anonymous"),
                  (e.onerror = (e) => {
                    (a =
                      "Load fail on url " +
                      t +
                      " with error: " +
                      (0, g.H)(e).strErrorMsg),
                      console.error(a);
                  }),
                  (e.onload = () => {
                    try {
                      let t = document.createElement("canvas"),
                        n = t.getContext("2d");
                      (t.width = o), (t.height = r), n.drawImage(e, 0, 0, o, r);
                      let i = (o - l.width) / 2,
                        a = (r - l.height) / 2;
                      n.drawImage(l, i, a),
                        t.toBlob((e) => (s = e), "image/jpeg");
                    } catch (e) {
                      a =
                        "Failed during image processing for " +
                        i +
                        " with " +
                        e;
                    }
                  }),
                  (e.src = t);
              }),
              (l.src = n);
            let c = 0;
            for (; void 0 === s && c < 100; ) await (0, L.IP)(100), (c += 1);
            if (
              (c >= 100 &&
                void 0 === s &&
                (a = "AsyncOverlay - We timed out processing images"),
              a)
            )
              throw (console.log(a), { success: 2, err_msg: a });
            let m = new M(e),
              d = await m.UploadFile({
                uploadFile: s,
                filename: i,
                width: r,
                height: r,
              });
            return d.image_hash + U.GetExtensionString(d);
          }
          async BDoesClanImageFileExistsOnCDNOrOrigin(e, t, n, i) {
            let o =
                b.TS.COMMUNITY_BASE_URL +
                "gid/" +
                t.ConvertTo64BitString() +
                "/hasclanimagefile",
              r = { image_hash_and_ext: n, lang: "" + i };
            return (
              1 ==
              (await a().get(o, { params: r, cancelToken: e && e.token })).data
                .success
            );
          }
          SetPrimaryImageForImageGroup(e, t) {
            (this.m_curLocImageGroup &&
              this.m_curLocImageGroup.primaryImage.imageid == e.imageid &&
              t == this.m_curLocImageGroupType) ||
              ((this.m_curLocImageGroup = {
                primaryImage: e,
                localized_images: [],
              }),
              (this.m_curLocImageGroupType = t),
              (this.m_curLocImageGroup.localized_images = (0, R.$Y)(
                this.m_curLocImageGroup.localized_images,
                31,
                null,
              )));
          }
          GetPrimaryImageForImageGroup() {
            return this.m_curLocImageGroup?.primaryImage;
          }
          ClearImageGroup() {
            (this.m_curLocImageGroup = null),
              (this.m_curLocImageGroupType = null);
          }
          GetLocalizedImageGroupForEdit() {
            return this.m_curLocImageGroup;
          }
          GetLocalizedImageGroupForEditAsURL(e, t) {
            if (this.m_curLocImageGroup) {
              let n = this.m_curLocImageGroup.primaryImage;
              return this.m_curLocImageGroup.localized_images[t]
                ? this.m_curLocImageGroup.localized_images[t]
                : U.GenerateArtworkURLFromHashAndExtensions(
                    e,
                    U.GetHashAndExt(n),
                  );
            }
            return null;
          }
          GetLocalizedImageGroupForEditAsImgArray(e) {
            return this.GetAllLocalizedGroupImages();
          }
          async DetermineAvailableLocalizationForGroup(e) {
            let t = this.m_curLocImageGroup.primaryImage,
              n = p.b.InitFromClanID(t.clanAccountID),
              i = U.GetHashAndExt(t),
              o = [];
            for (let t = 0; t < 31; ++t)
              o.push(this.BDoesClanImageFileExistsOnCDNOrOrigin(e, n, i, t));
            let r = await Promise.all(o);
            (0, s.h5)(() => {
              for (let e = 0; e < 31; ++e)
                r[e] &&
                  (this.m_curLocImageGroup.localized_images[e] =
                    U.GenerateArtworkURLFromHashAndExtensions(
                      n,
                      i,
                      O.full,
                      e,
                      this.m_curLocImageGroupType,
                    ));
            });
          }
          SetLocalizedImageGroupAtLang(e, t, n) {
            this.m_curLocImageGroup &&
              (this.m_curLocImageGroup.localized_images[e] = n
                ? U.GenerateArtworkURLFromHashAndExtensions(
                    t,
                    n,
                    O.full,
                    e,
                    this.m_curLocImageGroupType,
                  )
                : null);
          }
          AddLocalizeImageUploaded(e, t) {
            let n = this.m_curLocImageGroup.primaryImage;
            if (n.image_hash == e) {
              let e = p.b.InitFromClanID(n.clanAccountID),
                i = U.GetHashAndExt(n);
              this.m_curLocImageGroup.localized_images[t] =
                U.GenerateArtworkURLFromHashAndExtensions(
                  e,
                  i,
                  O.full,
                  t,
                  this.m_curLocImageGroupType,
                );
            }
          }
          GetAllLocalizedGroupImages() {
            return (
              (this.m_curLocImageGroup &&
                this.m_curLocImageGroup.localized_images) ||
              []
            );
          }
        }
        (0, i.Cg)([s.sH], U.prototype, "m_mapClanToImages", void 0),
          (0, i.Cg)([s.sH], U.prototype, "m_mapClanImageLoadState", void 0),
          (0, i.Cg)([s.sH], U.prototype, "m_curLocImageGroup", void 0);
        const H = new U();
      },
      91581: (e, t, n) => {
        "use strict";
        n.d(t, { TB: () => p, ac: () => h });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(63696),
          l = n(77631),
          c = n(77765),
          m = n(17070),
          d = n(27486);
        class u {
          constructor() {
            (0, a.Gn)(this);
          }
          m_mapAppIDToClanInfo = new Map();
          m_mapVanityToClanInfo = new Map();
          m_mapClanAccountIDToClanInfo = new Map();
          m_mapPromisesLoading = new Map();
          m_rgQueuedEventsClanIDs = new Array();
          m_bLoadedFromConfig = !1;
          Init() {
            this.LazyInit();
          }
          LazyInit() {
            this.m_bLoadedFromConfig ||
              ((0, a.h5)(() => {
                let e = (0, m.Fd)("groupvanityinfo", "application_config");
                this.ValidateClanConfig(e) &&
                  e.forEach((e) => {
                    this.InternalSetupValue(e);
                  });
              }),
              (this.m_bLoadedFromConfig = !0));
          }
          AddGroupVanities(e) {
            (0, a.h5)(() => {
              this.ValidateClanConfig(e) &&
                e.forEach((e) => {
                  this.InternalSetupValue(e);
                });
            });
          }
          ValidateClanConfig(e) {
            const t = e;
            return (
              !!(
                t &&
                Array.isArray(t) &&
                t.length > 0 &&
                "object" == typeof t[0]
              ) &&
              "number" == typeof t[0].clanAccountID &&
              ("number" == typeof t[0].appid ||
                "string" == typeof t[0].vanity_url)
            );
          }
          BHasClanInfoLoaded(e) {
            return (
              (0, c.w)(e.BIsValid(), "Clan SteamID is not valid when ClanInfo"),
              (0, c.w)(
                e.BIsClanAccount(),
                "Clan SteamID is not a clan account id when requesting clan info ",
              ),
              this.m_mapClanAccountIDToClanInfo.has(e.GetAccountID())
            );
          }
          BHasClanInfoLoadedByAccountID(e) {
            return this.m_mapClanAccountIDToClanInfo.has(e);
          }
          RegisterClanData(e) {
            for (const t of e) this.InternalSetupValue(t);
          }
          InternalSetupValue(e) {
            const t = {
              clanAccountID: e.clanAccountID,
              clanSteamID: new l.b(e.clanSteamIDString),
              appid: e.appid,
              vanity_url: e.vanity_url,
              member_count: e.member_count,
              is_ogg: e.is_ogg,
              is_creator_home: e.is_creator_home,
              is_curator: e.is_curator,
              has_visible_store_page: e.has_visible_store_page,
              has_rss_feed: e.has_rss_feed,
              rss_language: e.rss_language ? e.rss_language : 0,
              avatar_full_url: e.avatar_full_url,
              avatar_medium_url: e.avatar_medium_url,
              group_name: e.group_name,
              creator_page_bg_url: e.creator_page_bg_url,
              partner_events_enabled: e.partner_events_enabled,
            };
            0 != e.appid && this.m_mapAppIDToClanInfo.set(e.appid, t),
              e.vanity_url &&
                e.vanity_url.length > 0 &&
                this.m_mapVanityToClanInfo.set(
                  e.vanity_url.toLocaleLowerCase(),
                  t,
                ),
              this.m_mapClanAccountIDToClanInfo.set(e.clanAccountID, t);
          }
          GetRequestParam() {
            return { origin: self.origin };
          }
          async LoadOGGClanInfoForAppID(e) {
            if (
              (this.LazyInit(),
              "string" == typeof e && (e = parseInt(e)),
              (0, c.w)(
                0 != e,
                "LoadOGGClanInfoForAppID called with appid of zero",
              ),
              0 == e)
            )
              return null;
            if (this.m_mapAppIDToClanInfo.has(e))
              return this.m_mapAppIDToClanInfo.get(e);
            let t = "appid_" + e;
            return (
              this.m_mapPromisesLoading.has(t) ||
                this.m_mapPromisesLoading.set(
                  t,
                  this.InternalLoadOGGClanInfoForAppID(e),
                ),
              this.m_mapPromisesLoading.get(t)
            );
          }
          async InternalLoadOGGClanInfoForAppID(e) {
            const t =
              m.TS.COMMUNITY_BASE_URL + "ogg/" + e + "/ajaxgetvanityandclanid/";
            let n = null;
            try {
              n = (await r().get(t, { params: this.GetRequestParam() })).data;
            } catch (e) {}
            return n
              ? (this.InternalSetupValue(n), this.m_mapAppIDToClanInfo.get(e))
              : null;
          }
          async LoadOGGClanInfoForIdentifier(e) {
            if (
              (this.LazyInit(),
              this.m_mapVanityToClanInfo.has(e?.toLocaleLowerCase()))
            )
              return this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase());
            let t = "storevanity_" + e?.toLocaleLowerCase();
            return (
              this.m_mapPromisesLoading.has(t) ||
                this.m_mapPromisesLoading.set(
                  t,
                  this.InternalLoadOGGClanInfoForIdentifier(e),
                ),
              this.m_mapPromisesLoading.get(t)
            );
          }
          async InternalLoadOGGClanInfoForIdentifier(e) {
            const t =
              m.TS.COMMUNITY_BASE_URL +
              "games/" +
              e +
              "/ajaxgetvanityandclanid/";
            let n = await r().get(t, { params: this.GetRequestParam() });
            return (
              this.InternalSetupValue(n.data),
              this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase())
            );
          }
          async LoadOGGClanInfoForGroupVanity(e) {
            if (
              (this.LazyInit(),
              this.m_mapVanityToClanInfo.has(e?.toLocaleLowerCase()))
            )
              return this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase());
            let t = "community_name_" + e;
            return (
              this.m_mapPromisesLoading.has(t) ||
                this.m_mapPromisesLoading.set(
                  t,
                  this.InternalLoadOGGClanInfoForGroupVanity(
                    e?.toLocaleLowerCase(),
                  ),
                ),
              this.m_mapPromisesLoading.get(t)
            );
          }
          async InternalLoadOGGClanInfoForGroupVanity(e) {
            const t =
              m.TS.COMMUNITY_BASE_URL +
              "groups/" +
              e +
              "/ajaxgetvanityandclanid/";
            let n = await r().get(t, { params: this.GetRequestParam() });
            return (
              this.InternalSetupValue(n.data),
              this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase())
            );
          }
          async LoadClanInfoForClanSteamID(e) {
            this.LazyInit();
            let t = e.GetAccountID();
            if (this.m_mapClanAccountIDToClanInfo.has(t))
              return this.m_mapClanAccountIDToClanInfo.get(t);
            let n = "clanaccountid_" + t;
            return (
              this.m_mapPromisesLoading.has(n) ||
                this.m_mapPromisesLoading.set(
                  n,
                  this.InternalLoadClanInfoForClanSteamID(e),
                ),
              this.m_mapPromisesLoading.get(n)
            );
          }
          async LoadClanInfoForClanAccountID(e) {
            const t = l.b.InitFromClanID(e);
            return this.LoadClanInfoForClanSteamID(t);
          }
          async InternalLoadClanInfoForClanSteamID(e) {
            let t = e.GetAccountID();
            const n =
              m.TS.COMMUNITY_BASE_URL +
              "gid/" +
              e.ConvertTo64BitString() +
              "/ajaxgetvanityandclanid/";
            let i = await r().get(n, { params: this.GetRequestParam() });
            return (
              this.InternalSetupValue(i.data),
              this.m_mapClanAccountIDToClanInfo.get(t)
            );
          }
          GetOGGClanInfo(e) {
            return "string" == typeof e
              ? this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase())
              : this.m_mapAppIDToClanInfo.get(e);
          }
          GetClanSteamIDForAppID(e) {
            if ((this.LazyInit(), this.m_mapAppIDToClanInfo.has(e)))
              return l.b.InitFromClanID(
                this.m_mapAppIDToClanInfo.get(e).clanAccountID,
              );
          }
          GetClanVanityForAppID(e) {
            if ((this.LazyInit(), this.m_mapAppIDToClanInfo.has(e)))
              return this.m_mapAppIDToClanInfo.get(e).vanity_url;
          }
          GetClanVanityForClanSteamID(e) {
            if (
              (this.LazyInit(),
              this.m_mapClanAccountIDToClanInfo.has(e.GetAccountID()))
            )
              return this.m_mapClanAccountIDToClanInfo.get(e.GetAccountID())
                .vanity_url;
          }
          HasLoadedClanAccountID(e) {
            return this.LazyInit(), this.m_mapClanAccountIDToClanInfo.has(e);
          }
          GetClanMemberCount(e) {
            return this.m_mapAppIDToClanInfo.has(e)
              ? this.m_mapAppIDToClanInfo.get(e).member_count
              : 0;
          }
          GetClanInfoByClanAccountID(e) {
            return (
              this.LazyInit(),
              (0, c.w)(
                !!e,
                "Unepxected clanid when requesting information. GetClanInfoByClanAccountID ",
              ),
              this.m_mapClanAccountIDToClanInfo.get(e)
            );
          }
          GetCreatorStoreURL(e) {
            let t = d.pF.GetCreatorHome(e);
            if (t) return t.GetCreatorHomeURL("developer");
            let n = this.GetClanInfoByClanAccountID(e.GetAccountID());
            return (
              m.TS.COMMUNITY_BASE_URL +
              (n.vanity_url
                ? "groups/" + n.vanity_url
                : "gid/" + e.ConvertTo64BitString())
            );
          }
        }
        (0, i.Cg)([a.sH], u.prototype, "m_mapAppIDToClanInfo", void 0),
          (0, i.Cg)([a.sH], u.prototype, "m_mapVanityToClanInfo", void 0),
          (0, i.Cg)(
            [a.sH],
            u.prototype,
            "m_mapClanAccountIDToClanInfo",
            void 0,
          ),
          (0, i.Cg)([a.XI], u.prototype, "RegisterClanData", null),
          (0, i.Cg)([a.XI], u.prototype, "InternalSetupValue", null);
        const h = new u();
        function p(e) {
          const [t, n] = (0, s.useState)(
              e ? h.GetClanInfoByClanAccountID(e) : void 0,
            ),
            [i, o] = (0, s.useState)(
              !!e && !h.BHasClanInfoLoadedByAccountID(e),
            );
          return (
            (0, s.useEffect)(() => {
              if (e)
                if (h.BHasClanInfoLoadedByAccountID(e))
                  n(h.GetClanInfoByClanAccountID(e)), o(!1);
                else {
                  o(!0);
                  const t = l.b.InitFromClanID(
                    "string" == typeof e ? Number.parseInt(e) : e,
                  );
                  h.LoadClanInfoForClanSteamID(t).then((e) => {
                    n(e ?? void 0), o(!1);
                  });
                }
              else n(void 0), o(!1);
            }, [e]),
            [i, t]
          );
        }
        window.g_ClanStore = h;
      },
      75282: (e, t, n) => {
        "use strict";
        n.d(t, { yh: () => i });
        n(63696);
        function i(e) {
          return (
            e.indexOf("?") > 0 && (e = e.split("?")[0]),
            e.endsWith(".jpg")
              ? 1
              : e.endsWith(".png")
                ? 3
                : e.endsWith(".gif")
                  ? 2
                  : e.endsWith(".mp4")
                    ? 4
                    : e.endsWith(".webm")
                      ? 5
                      : e.endsWith(".vtt")
                        ? 6
                        : e.endsWith(".srt")
                          ? 7
                          : e.endsWith(".webp")
                            ? 10
                            : void 0
          );
        }
      },
      68239: (e, t, n) => {
        "use strict";
        n.d(t, { i6: () => d });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(77765),
          l = n(74002),
          c = n(17070);
        class m {
          constructor() {
            (0, a.Gn)(this);
          }
          exportFn = void 0;
          file = void 0;
          dataURL = void 0;
          uploadFileName;
          displayFileName;
          sha1;
          hmac;
          timestamp = 0;
          imageWidth = 0;
          imageHeight = 0;
          fileInfo;
          uploadInfo;
          eUploadState = 0;
          uploadProgress = 0;
          strErrorDescription = void 0;
        }
        (0, i.Cg)([a.sH], m.prototype, "file", void 0),
          (0, i.Cg)([a.sH], m.prototype, "dataURL", void 0),
          (0, i.Cg)([a.sH], m.prototype, "imageWidth", void 0),
          (0, i.Cg)([a.sH], m.prototype, "imageHeight", void 0),
          (0, i.Cg)([a.sH], m.prototype, "eUploadState", void 0),
          (0, i.Cg)([a.sH], m.prototype, "uploadProgress", void 0),
          (0, i.Cg)([a.sH], m.prototype, "strErrorDescription", void 0);
        class d {
          m_Callbacks;
          m_fileUploadProps = new m();
          m_onComplete;
          constructor(e) {
            (0, a.Gn)(this), (this.m_Callbacks = e);
          }
          get file_upload_props() {
            return this.m_fileUploadProps;
          }
          get file_upload_data_url() {
            return this.m_fileUploadProps.dataURL;
          }
          get file() {
            return this.m_fileUploadProps.file;
          }
          LogFileUploadMessage(e) {
            this.m_Callbacks.LogFileUploadMessage &&
              this.m_Callbacks.LogFileUploadMessage(e);
          }
          SetUploadFileError(e, t) {
            (this.m_fileUploadProps.eUploadState = e),
              (this.m_fileUploadProps.strErrorDescription = t),
              (this.m_fileUploadProps.displayFileName = null);
          }
          async StartFileExportToUpload(e, t = {}) {
            const { displayFilename: n, info: i, onComplete: o } = t;
            (this.m_fileUploadProps.eUploadState = 7),
              (this.m_fileUploadProps.uploadProgress = 0),
              (this.m_onComplete = o),
              (this.m_fileUploadProps.fileInfo = i),
              this.SetFileToUpload(e),
              (this.m_fileUploadProps.displayFileName = n);
          }
          async SetImageFileToUpload(e, t = {}) {
            const { processor: n = u, info: i } = t;
            if (!e) return void this.SetFileToUpload(null);
            this.m_fileUploadProps.fileInfo = i;
            const o = this.m_Callbacks.GetFileNameOverride?.() ?? e.name;
            if (e.size > 1024 * this.m_Callbacks.GetMaxFileSizeMB() * 1024)
              return void this.SetUploadFileError(
                4,
                (0, l.we)(
                  "#Chat_Settings_Error_ChatFileTooLarge_dynamic",
                  o,
                  this.m_Callbacks.GetMaxFileSizeMB(),
                ),
              );
            let r = e.name.split(".").pop().toLowerCase();
            if (
              -1 ==
              [
                "jpg",
                "jpeg",
                "png",
                "gif",
                "webm",
                "mpg",
                "mp4",
                "mpeg",
                "ogv",
              ].indexOf(r)
            )
              return void this.SetUploadFileError(
                5,
                (0, l.we)("#Chat_Settings_Error_ChatFileTypeNotSupported", o),
              );
            const a = await n(e);
            this.SetFileToUpload(a.file),
              (this.m_fileUploadProps.imageHeight = a.height),
              (this.m_fileUploadProps.imageWidth = a.width);
          }
          async SetOtherFileToUpload(e, t = {}) {
            if (!e) return void this.SetFileToUpload(null);
            this.m_fileUploadProps.fileInfo = t.info;
            const n = this.m_Callbacks.GetFileNameOverride?.() ?? e.name;
            if (e.size > 1024 * this.m_Callbacks.GetMaxFileSizeMB() * 1024)
              return void this.SetUploadFileError(
                4,
                (0, l.we)(
                  "#Chat_Settings_Error_ChatFileTooLarge_dynamic",
                  n,
                  this.m_Callbacks.GetMaxFileSizeMB(),
                ),
              );
            let i = e.name.split(".").pop().toLowerCase();
            -1 != ["zip"].indexOf(i)
              ? this.SetFileToUpload(e)
              : this.SetUploadFileError(
                  5,
                  (0, l.we)("#Chat_Settings_Error_ChatFileTypeNotSupported", n),
                );
          }
          SetFileToUpload(e) {
            if (
              ((this.m_fileUploadProps.file = null),
              (this.m_fileUploadProps.dataURL = null),
              (this.m_fileUploadProps.hmac = null),
              (this.m_fileUploadProps.sha1 = null),
              (this.m_fileUploadProps.imageWidth = 0),
              (this.m_fileUploadProps.imageHeight = 0),
              (this.m_fileUploadProps.displayFileName = null),
              !e)
            )
              return void (this.m_fileUploadProps.eUploadState = 0);
            let t = "";
            if ("function" == typeof e)
              (this.m_fileUploadProps.file = null),
                (this.m_fileUploadProps.exportFn = e);
            else {
              (this.m_fileUploadProps.file = e),
                (this.m_fileUploadProps.exportFn = null);
              try {
                t = URL.createObjectURL(e);
              } catch (e) {
                console.error(`Failed to created object URL from file: ${e}`);
              }
              (this.m_fileUploadProps.displayFileName =
                this.m_fileUploadProps.file.name),
                (this.m_fileUploadProps.uploadFileName =
                  window.performance.now() +
                  "_" +
                  this.m_fileUploadProps.file.name);
            }
            this.m_fileUploadProps.eUploadState = 1;
            let n = "";
            for (; n.length < 40; )
              n += Math.floor(16 * Math.random()).toString(16);
            (this.m_fileUploadProps.dataURL = t),
              (this.m_fileUploadProps.sha1 = n),
              (this.m_fileUploadProps.hmac = ""),
              (this.m_fileUploadProps.timestamp = 0);
          }
          async RetryFileUpload() {
            return this.BeginFileUpload();
          }
          async BeginFileUpload(e) {
            if (
              ((this.m_fileUploadProps.uploadProgress = 0),
              this.m_fileUploadProps.exportFn)
            ) {
              this.m_fileUploadProps.eUploadState = 7;
              const { eResult: e, file: t } =
                await this.m_fileUploadProps.exportFn((e) => {
                  (0, a.h5)(() => {
                    this.m_fileUploadProps.uploadProgress = 0.5 * e;
                  });
                });
              if (1 != e || !t)
                return (
                  this.SetUploadFileError(
                    3,
                    (0, l.we)("#Chat_Settings_Error_ExportFailed"),
                  ),
                  new Response()
                );
              (this.m_fileUploadProps.file = t),
                (this.m_fileUploadProps.uploadFileName =
                  window.performance.now() + "_" + t.name);
            }
            let t = this.m_fileUploadProps.file;
            if (!t)
              throw (
                ((0, s.w)(
                  !1,
                  "Must SetImageFileToUpload before calling BeginFileUpload",
                ),
                new Error("Invalid State"))
              );
            (this.m_fileUploadProps.eUploadState = 2),
              (this.m_fileUploadProps.uploadInfo = e);
            let n = new FormData();
            n.append("sessionid", c.TS.SESSIONID),
              n.append("l", c.TS.LANGUAGE),
              n.append("file_size", t.size.toString()),
              n.append("file_name", this.m_fileUploadProps.uploadFileName),
              n.append("file_sha", this.m_fileUploadProps.sha1),
              n.append(
                "file_image_width",
                this.m_fileUploadProps.imageWidth.toString(),
              ),
              n.append(
                "file_image_height",
                this.m_fileUploadProps.imageHeight.toString(),
              ),
              n.append("file_type", t.type),
              this.m_Callbacks.PopulateBeginFileUploadFormData &&
                this.m_Callbacks.PopulateBeginFileUploadFormData(
                  n,
                  this.file_upload_props.uploadInfo,
                  this.file_upload_props.fileInfo,
                );
            try {
              let e,
                t = await fetch(
                  this.m_Callbacks.GetBeginFileUploadURL() +
                    `?l=${c.TS.LANGUAGE}`,
                  { method: "POST", body: n, credentials: "include" },
                );
              try {
                e = await t.json();
              } catch (e) {}
              if (!t.ok) {
                let n = null;
                throw (
                  ((0, a.h5)(() => {
                    (this.m_fileUploadProps.eUploadState = 3),
                      this.LogFileUploadMessage(t),
                      (n = e?.message
                        ? e?.message
                        : (0, l.we)("#Chat_Settings_Error_ServerError")),
                      (this.m_fileUploadProps.strErrorDescription = (0, l.we)(
                        "#Chat_Upload_ErrorStart",
                        n,
                      ));
                  }),
                  n)
                );
              }
              if (!e || !e.result) throw new Error();
              return (
                (this.m_fileUploadProps.timestamp = e.timestamp),
                (this.m_fileUploadProps.hmac = e.hmac),
                this.DoFileUpload(e.result)
              );
            } catch (e) {
              let t = e || (0, l.we)("#ConnectionTrouble_FailedToConnect");
              throw (
                ((0, a.h5)(() => {
                  (this.m_fileUploadProps.eUploadState = 3),
                    (this.m_fileUploadProps.strErrorDescription = (0, l.we)(
                      "#Chat_Upload_ErrorStart",
                      t,
                    ));
                }),
                t)
              );
            }
          }
          async DoFileUpload(e) {
            let t = this.m_fileUploadProps.file,
              n = e.use_https ? "https://" : "http://";
            n += e.url_host + e.url_path;
            let i = {
              onUploadProgress: (e) => {
                const t = !!this.m_fileUploadProps.exportFn,
                  n = t ? 50 : 100,
                  i = (t ? 50 : 0) + (e.loaded / e.total) * n;
                i > this.m_fileUploadProps.uploadProgress &&
                  (0, a.h5)(() => {
                    this.m_fileUploadProps.uploadProgress = i;
                  });
              },
              headers: {},
              transformRequest: [(e) => e],
            };
            for (let t = 0; t < e.request_headers.length; ++t) {
              let n = e.request_headers[t];
              "Content-Length" != n.name &&
                "Host" != n.name &&
                (i.headers[n.name] = n.value);
            }
            try {
              return await r().put(n, t, i), this.CommitFileUpload(!0, e.ugcid);
            } catch (t) {
              throw (
                (this.LogFileUploadMessage(t.response),
                (0, a.h5)(() => {
                  (this.m_fileUploadProps.strErrorDescription = (0, l.we)(
                    "#Chat_Upload_ErrorCloud",
                  )),
                    (this.m_fileUploadProps.eUploadState = 3),
                    (this.m_fileUploadProps.uploadProgress = 0);
                }),
                this.CommitFileUpload(!1, e.ugcid),
                this.m_fileUploadProps.strErrorDescription)
              );
            }
          }
          async CommitFileUpload(e, t) {
            let n = this.m_fileUploadProps.file,
              i = this.m_fileUploadProps.sha1,
              o = new FormData();
            o.append("sessionid", c.TS.SESSIONID),
              o.append("l", c.TS.LANGUAGE),
              o.append("file_name", this.m_fileUploadProps.uploadFileName),
              o.append("file_sha", i),
              o.append("success", e ? "1" : "0"),
              o.append("ugcid", t),
              o.append("file_type", n.type),
              o.append(
                "file_image_width",
                this.m_fileUploadProps.imageWidth.toString(),
              ),
              o.append(
                "file_image_height",
                this.m_fileUploadProps.imageHeight.toString(),
              ),
              o.append(
                "timestamp",
                this.m_fileUploadProps.timestamp.toString(),
              ),
              o.append("hmac", this.m_fileUploadProps.hmac),
              this.m_Callbacks.PopulateCommitFileUploadFormData(
                o,
                this.file_upload_props.uploadInfo,
                this.file_upload_props.fileInfo,
              );
            try {
              let t = await fetch(this.m_Callbacks.GetCommitFileUploadURL(), {
                method: "POST",
                body: o,
                credentials: "include",
              });
              return (
                e
                  ? ((this.m_fileUploadProps.uploadProgress = 0),
                    (this.m_fileUploadProps.eUploadState = 6),
                    this.m_onComplete && this.m_onComplete(1, n.size))
                  : ((this.m_fileUploadProps.eUploadState = 3),
                    this.m_onComplete && this.m_onComplete(2, n.size)),
                t
              );
            } catch (t) {
              if (!e) return null;
              let i = null;
              throw (
                ((0, a.h5)(() => {
                  if (
                    (this.LogFileUploadMessage(t),
                    (this.m_fileUploadProps.uploadProgress = 0),
                    (this.m_fileUploadProps.eUploadState = 3),
                    t.response)
                  ) {
                    let e = t.response.data;
                    t.response.status, e && e.success;
                    i = e.message
                      ? e.message
                      : (0, l.we)("#Chat_Settings_Error_ServerError");
                  } else i = (0, l.we)("#ConnectionTrouble_FailedToConnect");
                  (this.m_fileUploadProps.strErrorDescription = `Failed to commit upload: ${i}`),
                    this.m_onComplete && this.m_onComplete(2, n.size);
                }),
                i)
              );
            }
          }
          ClearFileUploadError() {
            (3 != this.m_fileUploadProps.eUploadState &&
              4 != this.m_fileUploadProps.eUploadState &&
              5 != this.m_fileUploadProps.eUploadState) ||
              this.Reset();
          }
          Reset() {
            this.SetFileToUpload(null);
          }
        }
        function u(e) {
          return new Promise((t) => {
            let n = new FileReader();
            (n.onload = () => {
              let i = e,
                o = (function (e) {
                  let t = new DataView(e),
                    n = 0,
                    i = 0,
                    o = [],
                    r = 0;
                  if (65496 == t.getUint16(n)) {
                    n += 2;
                    let a = t.getUint16(n);
                    for (n += 2; n < t.byteLength && n < 131072; ) {
                      if (65505 == a)
                        (o[r] = { recess: i, offset: n - 2 }),
                          (i = n + t.getUint16(n)),
                          r++;
                      else if (65498 == a) break;
                      (n += t.getUint16(n)), (a = t.getUint16(n)), (n += 2);
                    }
                    let s = e.byteLength - i;
                    if (
                      (o.forEach((e) => {
                        s += e.offset - e.recess;
                      }),
                      s === e.byteLength)
                    )
                      return e;
                    const l = new Uint8Array(s);
                    if (o.length > 0) {
                      let t = 0;
                      o.forEach((n) => {
                        let i = n.offset - n.recess;
                        l.set(new Uint8Array(e.slice(n.recess, n.offset)), t),
                          (t += i);
                      }),
                        l.set(new Uint8Array(e.slice(i)), t);
                    }
                    return l.buffer;
                  }
                  return e;
                })(n.result),
                r = new Blob([o], { type: e.type });
              if (r) {
                let t = r;
                (t.lastModifiedDate = new Date(e.lastModified)),
                  (t.name = e.name),
                  (i = t);
              }
              if (0 == e.type.indexOf("image")) {
                let n = new Image();
                (n.src = URL.createObjectURL(e)),
                  (n.onload = (e) => {
                    t({ file: i, width: n.width, height: n.height });
                  });
              } else t({ file: i, width: 0, height: 0 });
            }),
              n.readAsArrayBuffer(e);
          });
        }
        (0, i.Cg)([a.XI], d.prototype, "SetUploadFileError", null),
          (0, i.Cg)([a.XI], d.prototype, "StartFileExportToUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "SetImageFileToUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "SetOtherFileToUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "SetFileToUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "RetryFileUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "BeginFileUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "DoFileUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "CommitFileUpload", null),
          (0, i.Cg)([a.XI], d.prototype, "ClearFileUploadError", null),
          (0, i.Cg)([a.XI], d.prototype, "Reset", null);
      },
      27486: (e, t, n) => {
        "use strict";
        n.d(t, { pF: () => h, FV: () => p });
        var i = n(34629),
          o = n(61305),
          r = n(83957),
          a = n.n(r),
          s = n(89193),
          l = n(63696),
          c = n(17070);
        class m {
          m_clanSteamID;
          m_appidList = new Array();
          m_strName = "";
          m_strAvatarURLFullSize = "";
          m_strTagLineLoc = "";
          m_nFollowers = 0;
          m_strVanity = "";
          m_webLink = void 0;
          m_promise;
          m_bIsLoaded = !1;
          m_bIsHidden = !1;
          m_clanAccountFlags = 0;
          constructor(e) {
            (0, s.Gn)(this), (this.m_clanSteamID = e);
          }
          Initialize(e) {
            (this.m_strName = e.name || ""),
              (this.m_strAvatarURLFullSize =
                e.avatar_url_full_size ||
                "https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg"),
              (this.m_strTagLineLoc = e.tag_line_localized || ""),
              (this.m_nFollowers = e.followers || 0),
              (this.m_strVanity = e.vanity || void 0),
              (this.m_webLink = e.weblink),
              (this.m_bIsHidden = e.hidden || !1),
              (this.m_clanAccountFlags = e.clan_account_flags ?? 0),
              e.appids && e.appids.forEach((e) => this.m_appidList.push(e)),
              (this.m_bIsLoaded = !0);
          }
          GetCreatorHomeIdentifier() {
            return {
              name: this.m_strName,
              clan_account_id: this.m_clanSteamID.GetAccountID(),
              type: "developer",
              hidden: this.m_bIsHidden,
            };
          }
          BIsPartnerEventEditorEnabled() {
            return Boolean(8 & this.m_clanAccountFlags);
          }
          BHasClanAccountFlagSet(e) {
            return Boolean(this.m_clanAccountFlags & e);
          }
          BIsLoaded() {
            return this.m_bIsLoaded;
          }
          GetClanSteamID() {
            return this.m_clanSteamID;
          }
          GetClanAccountID() {
            return this.m_clanSteamID.GetAccountID();
          }
          GetAppIDList() {
            return this.m_appidList;
          }
          GetName() {
            return this.m_strName;
          }
          GetAvatarURLFullSize() {
            return this.m_strAvatarURLFullSize;
          }
          GetTagLine() {
            return this.m_strTagLineLoc;
          }
          GetNumFollowers() {
            return this.m_nFollowers;
          }
          BIsHidden() {
            return this.m_bIsHidden;
          }
          GetCreatorHomeURL(e) {
            if (this.m_strVanity) {
              switch (e) {
                case "publisher":
                  return (
                    c.TS.STORE_BASE_URL + "publisher/" + this.m_strVanity + "/"
                  );
                case "franchise":
                  return (
                    c.TS.STORE_BASE_URL + "franchise/" + this.m_strVanity + "/"
                  );
              }
              return (
                c.TS.STORE_BASE_URL + "developer/" + this.m_strVanity + "/"
              );
            }
            return (
              c.TS.STORE_BASE_URL +
              "curator/" +
              this.m_clanSteamID.GetAccountID() +
              "/"
            );
          }
          BHasWebLink() {
            return void 0 !== this.m_webLink;
          }
          GetWebLink() {
            return this.m_webLink;
          }
          GetVanityString() {
            return this.m_strVanity;
          }
          AdjustFollower(e) {
            this.m_nFollowers += e;
          }
          async EnablePartnerEventEditorFlag() {
            this.BIsPartnerEventEditorEnabled() ||
              (await this.UpdateGroupFlagsFeature([2, 8], !0));
          }
          async UpdateGroupFlagsFeature(e, t) {
            let n = c.TS.PARTNER_BASE_URL + "sales/ajaxupdateclanaccountflags",
              i = this.m_clanAccountFlags;
            if (
              (e.forEach((e) => {
                t ? (i |= e) : (i &= ~e);
              }),
              i == this.m_clanAccountFlags)
            )
              return;
            let o = new Array();
            1 & i && o.push(1),
              8 & i && o.push(8),
              2 & i && o.push(2),
              4 & i && o.push(4),
              16 & i && o.push(16),
              32 & i && o.push(32),
              64 & i && o.push(64);
            let r = new FormData();
            r.append("sessionid", c.TS.SESSIONID),
              r.append("clan_account_id", this.GetClanAccountID().toString()),
              r.append("accountflags", JSON.stringify(o));
            let s = await a().post(n, r);
            s &&
              200 == s.status &&
              1 == s.data.success &&
              (this.m_clanAccountFlags = i);
          }
        }
        (0, i.Cg)([s.sH], m.prototype, "m_appidList", void 0),
          (0, i.Cg)([s.sH], m.prototype, "m_nFollowers", void 0),
          (0, i.Cg)([s.sH], m.prototype, "m_clanAccountFlags", void 0);
        var d = n(77631);
        n(45518), n(83788);
        class u {
          constructor() {
            (0, s.Gn)(this);
          }
          m_mapClanToCreatorHome = new Map();
          m_mapAppToCreatorIDList = new Map();
          m_bLoadedFromConfig = !1;
          LazyInit() {
            if (!this.m_bLoadedFromConfig) {
              let e = (0, c.Tc)("creatorhome", "application_config");
              this.ValidateStoreDefault(e) &&
                e.forEach((e) => {
                  let t = Number(e.creator_clan_id),
                    n = d.b.InitFromClanID(t),
                    i = new m(n);
                  i.Initialize(e),
                    (i.m_promise = u.GetAsPromise(i)),
                    this.m_mapClanToCreatorHome.set(t, i);
                });
              let t = (0, c.Tc)("creatorhomeforapp", "application_config");
              this.ValidateStoreDefaultAppList(t) &&
                t.forEach((e) => {
                  void 0 !== e.appid &&
                    (this.m_mapAppToCreatorIDList.has(e.appid) ||
                      this.m_mapAppToCreatorIDList.set(e.appid, new Array()),
                    this.m_mapAppToCreatorIDList.get(e.appid).push(e));
                }),
                (this.m_bLoadedFromConfig = !0);
            }
          }
          static async GetAsPromise(e) {
            return e;
          }
          ValidateStoreDefault(e) {
            const t = e;
            return (
              !!(
                t &&
                Array.isArray(t) &&
                t.length > 0 &&
                "object" == typeof t[0]
              ) &&
              "string" == typeof t[0].name &&
              ("string" == typeof t[0].creator_clan_id ||
                "number" == typeof t[0].creator_clan_id)
            );
          }
          ValidateStoreDefaultAppList(e) {
            const t = e;
            return (
              !!(
                t &&
                Array.isArray(t) &&
                t.length > 0 &&
                "object" == typeof t[0]
              ) &&
              "number" == typeof t[0].clan_account_id &&
                t[0].clan_account_id > 0 &&
                "number" == typeof t[0].appid &&
              t[0].appid > 0
            );
          }
          BHasCreatorHomeLoaded(e) {
            return (
              this.m_mapClanToCreatorHome.has(e.GetAccountID()) &&
              this.m_mapClanToCreatorHome.get(e.GetAccountID()).BIsLoaded()
            );
          }
          GetCreatorHome(e) {
            return this.m_mapClanToCreatorHome.get(e.GetAccountID());
          }
          GetCreatorHomeByID(e) {
            return this.m_mapClanToCreatorHome.get(e.clan_account_id);
          }
          async LoadCreatorHome(e, t) {
            if (
              (this.LazyInit(),
              !this.m_mapClanToCreatorHome.has(e.GetAccountID()))
            ) {
              let n = new m(e);
              (n.m_promise = this.InternalCreatorHome(n, t)),
                await n.m_promise,
                this.m_mapClanToCreatorHome.set(e.GetAccountID(), n);
            }
            return this.m_mapClanToCreatorHome.get(e.GetAccountID()).m_promise;
          }
          async InternalCreatorHome(e, t) {
            let n = { get_appids: !0, l: c.TS.LANGUAGE, origin: self.origin },
              i =
                c.TS.STORE_BASE_URL +
                "curator/" +
                e.GetClanAccountID() +
                "/ajaxgetcreatorhomeinfo",
              o = await a().get(i, { params: n, cancelToken: t && t.token });
            return e.Initialize(o.data), e;
          }
          async LoadCreatorHomeListForAppIncludeHiddden(e, t) {
            if ((this.LazyInit(), !this.m_mapAppToCreatorIDList.has(e))) {
              let n = { appid: e },
                i = c.TS.STORE_BASE_URL + "events/ajaxgetcreatorhomeidforapp",
                o = await a().get(i, {
                  params: n,
                  cancelToken: t && t.token,
                  withCredentials: !0,
                });
              this.m_mapAppToCreatorIDList.set(e, o.data.creator_list);
            }
            return this.m_mapAppToCreatorIDList.get(e);
          }
          async SearchCreatorHomeStore(e, t, n) {
            let i = `${c.TS.STORE_BASE_URL}curator/0/ajaxsearchcurators`,
              o = {
                term: e.replace(" ", "+"),
                require_creator: t,
                cc: c.TS.COUNTRY,
                l: c.TS.LANGUAGE,
                origin: self.origin,
              },
              r = new Array();
            const l = await a().get(i, { params: o, cancelToken: n.token });
            return (
              l.data.curators &&
                (0, s.h5)(() => {
                  l.data.curators.forEach((e) => {
                    if (!this.m_mapClanToCreatorHome.has(e.creator_clan_id)) {
                      let t = d.b.InitFromClanID(e.creator_clan_id),
                        n = new m(t);
                      n.Initialize(e),
                        this.m_mapClanToCreatorHome.set(e.creator_clan_id, n);
                    }
                    r.push(this.m_mapClanToCreatorHome.get(e.creator_clan_id));
                  });
                }),
              r
            );
          }
          GetCreatorHomeListForAppIncludeHidden(e) {
            return this.m_mapAppToCreatorIDList.has(e)
              ? this.m_mapAppToCreatorIDList.get(e)
              : [];
          }
        }
        (0, i.Cg)([s.sH], u.prototype, "m_mapClanToCreatorHome", void 0),
          (0, i.Cg)([s.sH], u.prototype, "m_mapAppToCreatorIDList", void 0),
          (0, i.Cg)([s.XI], u.prototype, "LazyInit", null);
        const h = new u();
        function p(e) {
          const t = d.b.InitFromClanID(e),
            [n, i] = l.useState(h.GetCreatorHome(t)),
            r = (0, o.m)("useCreatorHome");
          return (
            l.useEffect(() => {
              const t = d.b.InitFromClanID(e);
              h.BHasCreatorHomeLoaded(t)
                ? n
                  ? n.GetClanAccountID() != e && i(h.GetCreatorHome(t))
                  : i(h.GetCreatorHome(t))
                : h.LoadCreatorHome(t).then(() => {
                    r?.token?.reason || i(h.GetCreatorHome(t));
                  });
            }, [r?.token?.reason, e, n]),
            n
          );
        }
        window.g_CreatorHomeStore = h;
      },
      70042: (e, t, n) => {
        "use strict";
        n.d(t, { p: () => s });
        var i = n(34629),
          o = n(17070),
          r = n(89193);
        const a = 604800;
        class s {
          constructor() {
            (0, r.Gn)(this);
          }
          m_bEmoticonListRequested = !1;
          m_bInitialized = !1;
          m_rtMostRecentEmoticon = void 0;
          static sm_EmoticonRegex = new RegExp("ː([a-zA-Z0-9_\\-]+)ː", "g");
          m_rgEmoticons = [];
          m_rgFlairs = [];
          m_rgRecentEmoticons;
          m_rgStickers = [];
          m_rgRecentStickers;
          m_rgEffects = [];
          m_rtLastStickerOrEffect = Number.MIN_SAFE_INTEGER;
          m_emoticonTrackerCallback = null;
          m_stickerTrackerCallback = null;
          static GetEmoticonURL(e, t) {
            return t
              ? o.TS.COMMUNITY_CDN_URL + "economy/emoticonlarge/" + e
              : o.TS.COMMUNITY_CDN_URL + "economy/emoticon/" + e;
          }
          static GetEmoticonReplaceRegex() {
            return s.sm_EmoticonRegex;
          }
          static BEmoticonFilterMatch(e, t) {
            return (
              -1 !== `:${e.name_normalized || e.name}:`.indexOf(t.toLowerCase())
            );
          }
          static FilterEmoticons(e, t) {
            return t && ":" !== t
              ? e.filter((e) => s.BEmoticonFilterMatch(e, t))
              : e;
          }
          static BStickerFilterMatch(e, t) {
            return e.name.toLowerCase().indexOf(t.toLowerCase()) > -1;
          }
          static FilterStickers(e, t) {
            return t ? e.filter((e) => s.BStickerFilterMatch(e, t)) : e;
          }
          SearchEmoticons(e, t = 25, n = !0) {
            function i(e) {
              return e.name_normalized || e.name;
            }
            this.UpdateEmoticonList(), (e = e.toLocaleLowerCase());
            let o = this.recent_emoticons.filter(
                (t) => !e || i(t).startsWith(e),
              ),
              r = this.recent_emoticons.filter(
                (t) => !n && -1 !== i(t).indexOf(e),
              ),
              a = this.m_rgEmoticons.filter((t) => !e || i(t).startsWith(e)),
              s = this.m_rgEmoticons.filter(
                (t) => !n && -1 !== i(t).indexOf(e),
              ),
              l = new Set(),
              c = [];
            function m(e, n, o) {
              return (
                !(c.length >= t) &&
                (l.has(e) ||
                  (l.add(e), c.push({ name: i(e), recent: n, new: o })),
                !0)
              );
            }
            function d(e, t, n) {
              for (let i of e) if (!m(i, t, n(i))) break;
            }
            return (
              d(o, !0, (e) => !(e.last_used || !e.time_received)),
              d(a, !1, () => !1),
              d(r, !0, (e) => !(e.last_used || !e.time_received)),
              d(s, !1, () => !1),
              c
            );
          }
          get is_initialized() {
            return this.m_bInitialized;
          }
          GetTimeReceivedNewestEmoticon() {
            return this.UpdateEmoticonList(), this.m_rtMostRecentEmoticon;
          }
          GetTimeReceivedForStickerOrEffect() {
            return this.m_rtLastStickerOrEffect;
          }
          UpdateEmoticonList() {
            this.m_bInitialized || this.RequestEmoticonList();
          }
          get emoticon_list() {
            return this.UpdateEmoticonList(), this.m_rgEmoticons;
          }
          get flair_list() {
            return this.UpdateEmoticonList(), this.m_rgFlairs;
          }
          GetStickerList() {
            return this.m_rgStickers;
          }
          GetEffectList() {
            return this.m_rgEffects;
          }
          GetFlairListByGroupID(e) {
            return this.m_rgFlairs.filter((t) => t.flairGroupID === e);
          }
          get recent_emoticons() {
            return (
              this.m_rgRecentEmoticons || this.BuildRecentEmoticonList(),
              this.m_rgRecentEmoticons
            );
          }
          get recent_stickers() {
            return (
              this.m_rgRecentStickers || this.BuildRecentStickerList(),
              this.m_rgRecentStickers
            );
          }
          SetEmoticonTrackerCallback(e) {
            this.m_emoticonTrackerCallback = e;
          }
          SetStickerTrackerCallback(e) {
            this.m_stickerTrackerCallback = e;
          }
          TrackEmoticonUsage(e, t) {
            if (!this.m_bInitialized) return;
            this.m_emoticonTrackerCallback &&
              this.m_emoticonTrackerCallback(e, t);
            let n,
              i = new Map(),
              o = /\[emoticon\]([^[]*)/g;
            for (; (n = o.exec(e)); ) {
              let e = i.get(n[1]) || 0;
              i.set(n[1], e + 1);
            }
            let r = !1;
            if (i.size) {
              if (void 0 !== this.m_rgRecentEmoticons)
                for (let e of this.m_rgRecentEmoticons)
                  i.has(e.name) &&
                    ((e.last_used = t),
                    (e.use_count += i.get(e.name)),
                    i.delete(e.name),
                    e.time_received && ((r = !0), delete e.time_received));
              if (i.size)
                for (let e of this.m_rgEmoticons)
                  i.has(e.name) &&
                    ((e.last_used = t),
                    (e.use_count += i.get(e.name)),
                    delete e.time_received,
                    void 0 !== this.m_rgRecentEmoticons &&
                      this.m_rgRecentEmoticons.push(e));
              if (
                void 0 !== this.m_rgRecentEmoticons &&
                (this.BuildRecentEmoticonList(), r)
              ) {
                this.m_rtMostRecentEmoticon = void 0;
                for (let e of this.m_rgRecentEmoticons)
                  !e.last_used &&
                    e.time_received &&
                    (!this.m_rtMostRecentEmoticon ||
                      e.time_received > this.m_rtMostRecentEmoticon) &&
                    (this.m_rtMostRecentEmoticon = e.time_received);
              }
            }
          }
          TrackStickerUsage(e, t) {
            if (!this.m_bInitialized) return;
            this.m_stickerTrackerCallback &&
              this.m_stickerTrackerCallback(e, t);
            const n = this.m_rgStickers.find(({ name: t }) => t === e);
            (n.last_used = t),
              (n.use_count += 1),
              delete n.time_received,
              this.BuildRecentStickerList();
          }
          RequestEmoticonList() {
            !this.m_bEmoticonListRequested &&
              this.BInitialized() &&
              ((this.m_bEmoticonListRequested = !0),
              this.RequestEmoticonListInternal());
          }
          BuildRecentEmoticonList() {
            this.m_rgRecentEmoticons = this.BuildRecentList(this.m_rgEmoticons);
          }
          BuildRecentStickerList() {
            this.m_rgRecentStickers = this.BuildRecentList(this.m_rgStickers);
          }
          BuildRecentList(e) {
            const t = this.GetServerTime() - a,
              n = e.filter(
                ({ last_used: e, time_received: n }) => e || (n && n > t),
              );
            return (
              n.sort(
                (e, t) =>
                  (t.last_used || t.time_received) -
                  (e.last_used || e.time_received),
              ),
              n.slice(0, 50)
            );
          }
          OnEmoticonListReceived(e) {
            (this.m_rgFlairs = []),
              (this.m_rgEmoticons = []),
              (this.m_rgRecentEmoticons = void 0),
              (this.m_rtMostRecentEmoticon = void 0);
            let t = this.GetServerTime() - a;
            for (let n of e) {
              let e = n.name;
              e.startsWith("^")
                ? this.m_rgFlairs.push({
                    name: e.match(new RegExp(/:(.*):/))[1],
                    flairGroupID: e.match(new RegExp(/\^(.*)\^/))[1],
                  })
                : (!n.last_used && n.time_received > t
                    ? (!this.m_rtMostRecentEmoticon ||
                        n.time_received > this.m_rtMostRecentEmoticon) &&
                      (this.m_rtMostRecentEmoticon = n.time_received)
                    : delete n.time_received,
                  this.m_rgEmoticons.push(n));
            }
            (this.m_bInitialized = !0), (this.m_bEmoticonListRequested = !1);
          }
        }
        (0, i.Cg)([r.sH], s.prototype, "m_bInitialized", void 0),
          (0, i.Cg)([r.sH], s.prototype, "m_rtMostRecentEmoticon", void 0),
          (0, i.Cg)([r.sH], s.prototype, "m_rtLastStickerOrEffect", void 0),
          (0, i.Cg)([r.XI], s.prototype, "TrackEmoticonUsage", null);
      },
      31594: (e, t, n) => {
        "use strict";
        n.d(t, { s: () => s });
        var i = n(17070),
          o = n(89193),
          r = n(83957),
          a = n.n(r);
        const s = new (class {
          m_mapEmoticonHovers = o.sH.map();
          m_inflightRequests = {};
          Get(e) {
            return this.m_mapEmoticonHovers.has(e) || this.m_inflightRequests[e]
              ? this.m_mapEmoticonHovers.get(e)
              : (this.Load(e), null);
          }
          BLoaded(e) {
            return !!this.m_mapEmoticonHovers.get(e);
          }
          async Load(e) {
            const t = `${i.TS.COMMUNITY_CDN_URL}economy/emoticonhoverjson/${encodeURIComponent(e)}?l=${encodeURIComponent(i.TS.LANGUAGE)}&origin=${(0, i.xv)()}`;
            this.m_inflightRequests[e] = !0;
            try {
              const { data: n } = await a().get(t);
              !(function (e) {
                return (
                  e &&
                  "object" == typeof e &&
                  "number" == typeof e.appid &&
                  "string" == typeof e.app_name
                );
              })(n)
                ? this.m_mapEmoticonHovers.set(e, null)
                : this.m_mapEmoticonHovers.set(e, n);
            } catch (t) {
              this.m_mapEmoticonHovers.set(e, null);
            } finally {
              this.m_inflightRequests[e] = !1;
            }
          }
        })();
      },
      74750: (e, t, n) => {
        "use strict";
        n.d(t, { E: () => i, V: () => c });
        var i,
          o = n(83957),
          r = n.n(o),
          a = n(17070),
          s = n(9907),
          l = n(62521);
        !(function (e) {
          (e[(e.k_eDiscussions = 0)] = "k_eDiscussions"),
            (e[(e.k_eThumbsUp = 1)] = "k_eThumbsUp"),
            (e[(e.k_eClickThrough = 2)] = "k_eClickThrough"),
            (e[(e.k_eMuted = 3)] = "k_eMuted"),
            (e[(e.k_ePlayedVideo = 4)] = "k_ePlayedVideo"),
            (e[(e.k_eReminder_Opened = 5)] = "k_eReminder_Opened"),
            (e[(e.k_eReminder_MobilePush = 6)] = "k_eReminder_MobilePush"),
            (e[(e.k_eReminder_Email = 7)] = "k_eReminder_Email"),
            (e[(e.k_eReminder_CalendarApple = 8)] =
              "k_eReminder_CalendarApple"),
            (e[(e.k_eReminder_CalendarGoogle = 9)] =
              "k_eReminder_CalendarGoogle"),
            (e[(e.k_eReminder_CalendarOutlook = 10)] =
              "k_eReminder_CalendarOutlook"),
            (e[(e.k_eReminder_EmailUnverified = 11)] =
              "k_eReminder_EmailUnverified"),
            (e[(e.k_eReminder_MobilePushMissing = 12)] =
              "k_eReminder_MobilePushMissing");
        })(i || (i = {}));
        const c = new (class {
          m_nPastViewedIndex = 0;
          m_nPastViewedDays = 0;
          m_nFutureViewedIndex = 0;
          m_nFutureViewableEvents = 0;
          m_nLastRecordedFilter = 0;
          m_sBrowserID = void 0;
          m_scheduledFilterChange = new s.LU();
          m_scheduledFutureStats = new s.LU();
          m_scheduledPastStats = new s.LU();
          RecordViewedEvent(e, t) {
            const n = e.GetStoreInitializationTimestamp().getTime() / 1e3;
            this.m_nFutureViewableEvents = 0;
            let i,
              o = 0,
              r = null;
            const a = e.GetCurrentlyLoadedItemsForStats();
            for (const e of a) {
              const a = e.start_time > n;
              if ((e.unique_id == t && ((i = o), (r = e)), a))
                this.m_nFutureViewableEvents++;
              else if (void 0 !== i) break;
              o++;
            }
            if (void 0 !== i)
              if (i < this.m_nFutureViewableEvents) {
                const t = this.m_nFutureViewableEvents - i;
                if (this.m_nFutureViewedIndex < t) {
                  this.m_nFutureViewedIndex = t;
                  const n = () => {
                      const t =
                        Math.min(this.m_nFutureViewedIndex, 4095) |
                        (Math.min(this.m_nFutureViewableEvents, 255) << 12) |
                        (Math.min(this.GetTimeSpentOnPageS(e), 2047) << 20);
                      c.SendExperimentEventToSteam(18, t);
                    },
                    i = 500;
                  this.m_scheduledFutureStats.Schedule(i, n);
                }
              } else {
                const t = i - this.m_nFutureViewableEvents;
                if (this.m_nPastViewedIndex < t) {
                  (this.m_nPastViewedIndex = t),
                    (this.m_nPastViewedDays = Math.floor(
                      (n - r.start_time) / 86400,
                    ));
                  const i = () => {
                      const t =
                        Math.min(this.m_nPastViewedIndex, 4095) |
                        (Math.min(this.m_nPastViewedDays, 255) << 12) |
                        (Math.min(this.GetTimeSpentOnPageS(e), 2047) << 20);
                      c.SendExperimentEventToSteam(17, t);
                    },
                    o = 500;
                  this.m_scheduledPastStats.Schedule(o, i);
                }
              }
          }
          RecordFilterChangeEvent(e) {
            this.m_scheduledFilterChange.Schedule(1e3, () => {
              let t = 0;
              e.BIsGameSourceAllowed(l.FD.k_ELibrary) && (t |= 1),
                e.BIsGameSourceAllowed(l.FD.k_EWishlist) && (t |= 2),
                e.BIsGameSourceAllowed(l.FD.k_EFollowing) && (t |= 4),
                e.BIsGameSourceAllowed(l.FD.k_ERecommended) && (t |= 8),
                e.BIsGameSourceAllowed(l.FD.k_ESteam) && (t |= 16),
                e.BIsGameSourceAllowed(l.FD.k_EFeatured) && (t |= 32),
                e.BIsGameSourceAllowed(l.FD.k_ERecent) && (t |= 64),
                e.BIsEventTypeGroupAllowed(l.xj.k_ENews) && (t |= 1024),
                e.BIsEventTypeGroupAllowed(l.xj.k_EEvents) && (t |= 2048),
                e.BIsEventTypeGroupAllowed(l.xj.k_EStreaming) && (t |= 4096),
                e.BIsEventTypeGroupAllowed(l.xj.k_EUpdates) && (t |= 8192),
                e.BIsEventTypeGroupAllowed(l.xj.k_EReleases) && (t |= 16384),
                e.BIsEventTypeGroupAllowed(l.xj.k_ESales) && (t |= 32768),
                t != this.m_nLastRecordedFilter &&
                  ((this.m_nLastRecordedFilter = t),
                  this.SendExperimentEventToSteam(16, t));
            });
          }
          GetTimeSpentOnPageS(e) {
            const t = e.GetStoreInitializationTimestamp(),
              n = new Date();
            return Math.max(0, Math.floor((n.getTime() - t.getTime()) / 1e3));
          }
          RecordAppInteractionEvent(e, t) {
            this.SendExperimentEventToSteam(19, t);
          }
          SendExperimentEventToSteam(e, t) {
            this.InitBrowserID();
            const n = a.TS.STORE_BASE_URL + "events/ajaxreportnewshubstats/",
              i = new URLSearchParams();
            i.append("page_action", "" + e),
              i.append("snr", a.TS.SNR),
              i.append("uint_data", "" + t),
              i.append("str_data", this.m_sBrowserID),
              r().post(n, i);
          }
          InitBrowserID() {
            if (void 0 === this.m_sBrowserID)
              if (a.TS.IN_CLIENT) this.m_sBrowserID = "steam";
              else {
                const e = navigator.userAgent;
                /iPhone|iPad|iPod/i.test(e) ||
                (/Macintosh/i.test(e) && /Safari/i.test(e))
                  ? (this.m_sBrowserID = "ios")
                  : /Android/i.test(e)
                    ? (this.m_sBrowserID = "android")
                    : (this.m_sBrowserID = "");
              }
          }
        })();
        window.g_EventCalendarTrackingStore = c;
      },
      62521: (e, t, n) => {
        "use strict";
        n.d(t, { FD: () => i, vJ: () => f, xj: () => p });
        var i,
          o = n(34629),
          r = n(89193),
          a = n(23117),
          s = n(77765),
          l = n(17070),
          c = n(74750),
          m = n(18849);
        !(function (e) {
          (e.k_ERecent = "recent"),
            (e.k_ELibrary = "library"),
            (e.k_EWishlist = "wishlist"),
            (e.k_EFollowing = "following"),
            (e.k_ERecommended = "recommended"),
            (e.k_ESteam = "steam"),
            (e.k_EFeatured = "featured"),
            (e.k_ECurator = "curator");
        })(i || (i = {}));
        const d = [
            i.k_ELibrary,
            i.k_EWishlist,
            i.k_EFollowing,
            i.k_ERecommended,
            i.k_ESteam,
            i.k_ECurator,
          ],
          u = [...d, i.k_EFeatured],
          h = [i.k_EFeatured];
        var p;
        !(function (e) {
          (e.k_ENews = "news"),
            (e.k_EEvents = "events"),
            (e.k_EStreaming = "streaming"),
            (e.k_EUpdates = "updates"),
            (e.k_EReleases = "releases"),
            (e.k_ESales = "sales");
        })(p || (p = {}));
        const _ = [
            p.k_ENews,
            p.k_EEvents,
            p.k_EStreaming,
            p.k_EUpdates,
            p.k_EReleases,
            p.k_ESales,
          ],
          g = new Map([
            [p.k_ENews, [28]],
            [p.k_EEvents, [9, 27, 22, 23, 24, 35, 25, 26]],
            [p.k_EStreaming, [11]],
            [p.k_EUpdates, [12, 13, 14]],
            [p.k_EReleases, [10, 29, 16, 15, 32]],
            [p.k_ESales, [20, 21, 31, 34]],
          ]);
        function C(e) {
          return new Map(e.map((e) => [e, !0]));
        }
        class f {
          m_mapEventTypeGroupsAllowed = new Map();
          m_mapGameSources = new Map();
          m_bCuratorUnhideOnFollowDialogDismissed = !1;
          m_mapHiddenApps = new Map();
          m_mapHiddenClans = new Map();
          m_bInitializedForUpdatesOnly;
          m_eStorageType = "session";
          m_strStorageKey;
          constructor(e) {
            (0, r.Gn)(this),
              (0, r.h5)(() => {
                e?.rgHiddenApps &&
                  e.rgHiddenApps.forEach((e) =>
                    this.m_mapHiddenApps.set(e, !0),
                  ),
                  e?.rgHiddenClans &&
                    e.rgHiddenClans.forEach((e) =>
                      this.m_mapHiddenClans.set(e, !0),
                    );
              });
          }
          GetGameSources() {
            return Array.from(this.m_mapGameSources.keys());
          }
          GetStorageObject() {
            return this.m_strStorageKey
              ? "session" === this.m_eStorageType
                ? window.sessionStorage
                : window.localStorage
              : null;
          }
          GetPreferencesStorageKey() {
            return `${this.m_strStorageKey}-event-calendar-prefs`;
          }
          get enabledEventTypeSet() {
            const e = new Set();
            for (const t of Array.from(this.m_mapEventTypeGroupsAllowed.keys()))
              g.get(t).forEach((t) => e.add(t));
            return e;
          }
          MapClanEventTypeToGroup(e) {
            let t = null;
            return (
              g.forEach((n, i) => {
                -1 !== n.indexOf(e) && (t = i);
              }),
              t || p.k_EEvents
            );
          }
          InitDefaultCheckboxes(e, t, n) {
            (this.m_bInitializedForUpdatesOnly = t),
              (this.m_mapEventTypeGroupsAllowed = C(t ? [p.k_EUpdates] : _));
            const o = (0, l.Y2)() ? u : d;
            (this.m_mapGameSources = C(e ? o : h)),
              n && this.m_mapGameSources.set(i.k_EFeatured, !0);
          }
          Init(e, t, n, i, o) {
            (this.m_eStorageType = o), (this.m_strStorageKey = i);
            const r = this.GetStorageObject(),
              a = r ? r.getItem(this.GetPreferencesStorageKey()) : null;
            if (a) {
              const e = JSON.parse(a);
              if (e.rgEventTypeGroupsAllowed && e.rgGameSources) {
                const { rgEventTypeGroupsAllowed: t, rgGameSources: n } = e;
                return (
                  (this.m_mapEventTypeGroupsAllowed = C(t)),
                  (this.m_mapGameSources = C(n)),
                  void (
                    void 0 !== e.bCuratorUnhideOnFollowDismissed &&
                    (this.m_bCuratorUnhideOnFollowDialogDismissed =
                      e.bCuratorUnhideOnFollowDismissed)
                  )
                );
              }
            }
            this.InitDefaultCheckboxes(e, t, n);
          }
          SaveFilterPreferences() {
            const e = this.GetStorageObject();
            if (!e) return;
            const t = {
              rgEventTypeGroupsAllowed: Array.from(
                this.m_mapEventTypeGroupsAllowed.keys(),
              ),
              rgGameSources: Array.from(this.m_mapGameSources.keys()),
              bCuratorUnhideOnFollowDismissed:
                this.m_bCuratorUnhideOnFollowDialogDismissed,
            };
            e.setItem(this.GetPreferencesStorageKey(), JSON.stringify(t));
          }
          BCuratorUnhideOnFollowDialogDismissed() {
            return this.m_bCuratorUnhideOnFollowDialogDismissed;
          }
          SetCuratorUnhideOnFollowDialogDismissed(e) {
            (this.m_bCuratorUnhideOnFollowDialogDismissed = e),
              this.SaveFilterPreferences();
          }
          BIsEventTypeGroupAllowed(e) {
            return this.m_mapEventTypeGroupsAllowed.has(e);
          }
          BIsGameSourceAllowed(e) {
            return (
              !(e === i.k_EFollowing && !m.HD.bIsFollowingEnabled) &&
              !(e === i.k_ECurator && !m.HD.bIsCuratorsEnabled) &&
              this.m_mapGameSources.has(e)
            );
          }
          SetEventTypeGroupAllowed(e, t) {
            t
              ? this.m_mapEventTypeGroupsAllowed.set(e, !0)
              : this.m_mapEventTypeGroupsAllowed.delete(e),
              this.SaveFilterPreferences(),
              c.V.RecordFilterChangeEvent(this);
          }
          SetGameSourceAllowed(e, t) {
            t
              ? (this.m_mapGameSources.set(e, !0),
                e == i.k_ERecent
                  ? this.m_mapGameSources.delete(i.k_ELibrary)
                  : e == i.k_ELibrary &&
                    ((0, s.w)(
                      !this.m_mapGameSources.has(i.k_ERecent),
                      "Setting Library although Recent already set - illusion was broken",
                    ),
                    this.m_mapGameSources.delete(i.k_ERecent)))
              : (this.m_mapGameSources.delete(e),
                e == i.k_ERecent
                  ? this.m_mapGameSources.set(i.k_ELibrary, !0)
                  : e == i.k_ELibrary &&
                    this.m_mapGameSources.delete(i.k_ERecent)),
              this.SaveFilterPreferences(),
              c.V.RecordFilterChangeEvent(this);
          }
          BShouldDisplayEvent(e) {
            const t = e.GetSource(),
              n = Boolean(
                e.appInfo &&
                  e.appInfo.last_played &&
                  e.appInfo.last_played + 15552e3 >=
                    m.HD.GetTimeNowWithOverride(),
              );
            return (
              !!(
                this.enabledEventTypeSet.has(e.event_type) ||
                (this.m_bInitializedForUpdatesOnly &&
                  this.BIsEventTypeGroupAllowed(p.k_EUpdates) &&
                  28 == e.event_type &&
                  e.start_time < 1599202800)
              ) &&
              !this.m_mapHiddenApps.has(e.appid) &&
                !this.m_mapHiddenClans.has(e.clanid) &&
              (!!(t & a.bK.k_eRequired || t & a.bK.k_eReposted) ||
                Boolean(
                  (this.BIsGameSourceAllowed(i.k_ERecent) && n) ||
                    (this.BIsGameSourceAllowed(i.k_ELibrary) &&
                      t & a.bK.k_eLibrary) ||
                    (this.BIsGameSourceAllowed(i.k_EWishlist) &&
                      t & a.bK.k_eWishlist) ||
                    (this.BIsGameSourceAllowed(i.k_EFollowing) &&
                      t & a.bK.k_eFollowing) ||
                    (this.BIsGameSourceAllowed(i.k_ERecommended) &&
                      t & a.bK.k_eRecommended) ||
                    (this.BIsGameSourceAllowed(i.k_ESteam) &&
                      t & a.bK.k_eSteam) ||
                    (this.BIsGameSourceAllowed(i.k_EFeatured) &&
                      t & a.bK.k_eFeatured) ||
                    (this.BIsGameSourceAllowed(i.k_ECurator) &&
                      t & a.bK.k_eCurator),
                ))
            );
          }
          BAreAllEventsHidden() {
            return (
              0 == this.m_mapEventTypeGroupsAllowed.size ||
              0 == this.m_mapGameSources.size
            );
          }
          BAreAnyEventsFiltered(e) {
            const t = (0, l.Y2)() ? u : d;
            return (
              (e ? t : h).some((e) => !this.BIsGameSourceAllowed(e)) ||
              _.some((e) => !this.BIsEventTypeGroupAllowed(e))
            );
          }
          BIsClanVisible(e) {
            return !this.m_mapHiddenClans.has(e);
          }
          SetClanVisibility(e, t) {
            t
              ? this.m_mapHiddenClans.has(e) && this.m_mapHiddenClans.delete(e)
              : this.m_mapHiddenClans.has(e) ||
                this.m_mapHiddenClans.set(e, !0);
          }
          BIsAppVisible(e) {
            return !this.m_mapHiddenApps.has(e);
          }
          SetAppVisibility(e, t) {
            t
              ? this.m_mapHiddenApps.has(e) && this.m_mapHiddenApps.delete(e)
              : this.m_mapHiddenApps.has(e) || this.m_mapHiddenApps.set(e, !0);
          }
        }
        (0, o.Cg)([r.sH], f.prototype, "m_mapEventTypeGroupsAllowed", void 0),
          (0, o.Cg)([r.sH], f.prototype, "m_mapGameSources", void 0),
          (0, o.Cg)(
            [r.sH],
            f.prototype,
            "m_bCuratorUnhideOnFollowDialogDismissed",
            void 0,
          ),
          (0, o.Cg)([r.sH], f.prototype, "m_mapHiddenApps", void 0),
          (0, o.Cg)([r.sH], f.prototype, "m_mapHiddenClans", void 0),
          (0, o.Cg)(
            [(0, r.EW)({ keepAlive: !0, equals: r.m3.structural })],
            f.prototype,
            "enabledEventTypeSet",
            null,
          ),
          (0, o.Cg)([r.XI], f.prototype, "SetEventTypeGroupAllowed", null),
          (0, o.Cg)([r.XI], f.prototype, "SetGameSourceAllowed", null);
      },
      18849: (e, t, n) => {
        "use strict";
        n.d(t, { HD: () => m, f1: () => p, sB: () => h });
        var i = n(34629),
          o = n(89193),
          r = n(42689),
          a = n.n(r),
          s = n(63696),
          l = (n(61305), n(17070));
        class c {
          constructor() {
            (0, o.Gn)(this);
          }
          bOpenEventLandingPage = !1;
          bIncludeFeaturedAsGameSource = !0;
          nOverrideDateNow = void 0;
          get bRequireAllEventsLoadedInTimeBlock() {
            return !1;
          }
          get bIsFollowingEnabled() {
            return !(0, l.Y2)();
          }
          get bIsCuratorsEnabled() {
            return !(0, l.Y2)();
          }
          get bIncludeCurators() {
            return !0;
          }
          GetTimeNowWithOverride() {
            return this.nOverrideDateNow
              ? this.nOverrideDateNow
              : Math.floor(Date.now() / 1e3);
          }
          GetTimeNowWithOverrideAsDate() {
            return this.nOverrideDateNow
              ? new Date(1e3 * this.nOverrideDateNow)
              : new Date();
          }
          BHasTimeOverride() {
            return Boolean(this.nOverrideDateNow);
          }
          ParseDevOverrides(e) {
            if (!e || 0 == e.length) return;
            const t = new URLSearchParams("?" == e[0] ? e.substring(1) : e);
            if (
              t.has("t") &&
              ("dev" == l.TS.WEB_UNIVERSE || "beta" == l.TS.WEB_UNIVERSE)
            ) {
              const e = t.get("t");
              let n = /^\d+$/.test(e) ? a().unix(Number.parseInt(e)) : a()(e);
              (this.nOverrideDateNow = Math.floor(n.unix())),
                console.log(
                  "CEventCalendarDevFeatures overriding partner event time: " +
                    this.nOverrideDateNow +
                    " " +
                    n.format(),
                );
            }
          }
        }
        (0, i.Cg)([o.sH], c.prototype, "nOverrideDateNow", void 0);
        const m = new c();
        window.g_EventCalendarDevFeatures = m;
        const d = new Date(),
          u = Math.floor(d.getTime() / 1e3);
        function h() {
          return m.nOverrideDateNow ?? u;
        }
        function p() {
          return s.useMemo(() => h(), []);
        }
      },
      63297: (e, t, n) => {
        "use strict";
        n.d(t, { KN: () => f, Nh: () => p });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(45518),
          l = n(48446),
          c = n(9907),
          m = n(69450),
          d = n(17070),
          u = n(10672);
        class h {
          m_CMInterface;
          m_setShownEvents = new Set();
          m_setReadEvents = new Set();
          m_rgPendingUpload = [];
          m_schUpload = new c.LU();
          m_bUploading = !1;
          constructor(e) {
            this.m_CMInterface = e;
          }
          MarkEventShown(e, t, n) {
            let i = this.MakeKey(e, n);
            if (this.m_setShownEvents.has(i)) return !1;
            this.m_setShownEvents.add(i);
            let o = new l.kZ();
            return (
              o.set_event_gid(e),
              o.set_clanid(t),
              o.set_display_location(n),
              o.set_mark_shown(!0),
              this.QueueForUpload(o),
              !0
            );
          }
          MarkEventRead(e, t, n) {
            let i = this.MakeKey(e, n);
            if (this.m_setReadEvents.has(i)) return !1;
            this.m_setReadEvents.add(i);
            let o = new l.kZ();
            return (
              o.set_event_gid(e),
              o.set_clanid(t),
              o.set_display_location(n),
              o.set_mark_read(!0),
              this.QueueForUpload(o),
              !0
            );
          }
          MakeKey(e, t) {
            return `${e}_${t}`;
          }
          QueueForUpload(e) {
            this.m_rgPendingUpload.push(e), this.ScheduleUpload();
          }
          ScheduleUpload() {
            this.m_bUploading ||
              (this.m_rgPendingUpload.length >= 30
                ? this.UploadPendingData()
                : this.m_schUpload.IsScheduled() ||
                  this.m_schUpload.Schedule(6e4, this.UploadPendingData));
          }
          async Flush() {
            if (!this.m_bUploading) return this.UploadPendingData();
          }
          async UploadPendingData() {
            if (this.m_bUploading) return;
            this.m_schUpload.Cancel();
            let e = this.m_rgPendingUpload.splice(0, 30);
            if (0 == e.length) return;
            let t = !1;
            if (this.m_CMInterface) {
              let n = s.w.Init(l.wS);
              for (let t of e) n.Body().add_markings(t);
              this.m_bUploading = !0;
              let i = await l.BE.MarkPartnerEventsForUser(
                this.m_CMInterface.GetServiceTransport(),
                n,
              );
              (this.m_bUploading = !1), (t = 1 == i.GetEResult());
            } else {
              if (!d.iA.logged_in) return;
              let n = e.map((e) => e.toObject()),
                i = (0, d.xv)() + "actions/ajaxmarkpartnerevents";
              const o = new FormData();
              o.append("sessionid", d.TS.SESSIONID),
                o.append("request", JSON.stringify(n));
              try {
                t =
                  1 ==
                  (await r().post(i, o, { withCredentials: !0 })).data.success;
              } catch (e) {
                let t = (0, u.H)(e);
                console.error(
                  "CPartnerEventUserTracking.UploadPendingData error " +
                    t.strErrorMsg,
                  t,
                );
              }
            }
            t
              ? this.m_rgPendingUpload.length > 0 && this.ScheduleUpload()
              : (console.log(
                  "Saving news event state failed. Will try again soon!",
                ),
                (this.m_rgPendingUpload = this.m_rgPendingUpload.concat(e)),
                this.m_schUpload.Schedule(6e4, this.UploadPendingData));
          }
        }
        (0, i.Cg)([m.o], h.prototype, "UploadPendingData", null);
        n(77631);
        var p,
          _ = n(77765),
          g = (n(63696), n(71677));
        class C {
          clanid = void 0;
          appid = 0;
          can_edit = !1;
          owns_app = !1;
          follows_app = !1;
          support_user = !1;
          valve_admin = !1;
          limited_user = !1;
          event_ignored = new Array();
          event_followed = new Array();
          event_followed_flags = new Array();
          constructor(e) {
            (0, a.Gn)(this), (this.clanid = e);
          }
        }
        (0, i.Cg)([a.sH], C.prototype, "clanid", void 0),
          (0, i.Cg)([a.sH], C.prototype, "appid", void 0),
          (0, i.Cg)([a.sH], C.prototype, "can_edit", void 0),
          (0, i.Cg)([a.sH], C.prototype, "owns_app", void 0),
          (0, i.Cg)([a.sH], C.prototype, "follows_app", void 0),
          (0, i.Cg)([a.sH], C.prototype, "support_user", void 0),
          (0, i.Cg)([a.sH], C.prototype, "valve_admin", void 0),
          (0, i.Cg)([a.sH], C.prototype, "limited_user", void 0),
          (0, i.Cg)([a.sH], C.prototype, "event_ignored", void 0),
          (0, i.Cg)([a.sH], C.prototype, "event_followed", void 0),
          (0, i.Cg)([a.sH], C.prototype, "event_followed_flags", void 0),
          (function (e) {
            (e[(e.k_ENotifyFlagNone = 0)] = "k_ENotifyFlagNone"),
              (e[(e.k_ENotifyFlagByEmail = 1)] = "k_ENotifyFlagByEmail"),
              (e[(e.k_ENotifyFlagByPush = 2)] = "k_ENotifyFlagByPush");
          })(p || (p = {}));
        class f {
          constructor() {
            (0, a.Gn)(this);
          }
          m_mapClanToUserPermissions = new Map();
          m_mapAnnounceGIDToVote = new Map();
          m_setReadEventGIDs = new Set();
          m_tracker;
          m_cm = void 0;
          static s_EventUserStore;
          m_bIsPresentationMode = (0, d.Bu)();
          static Get() {
            return (
              (0, _.w)(
                !!f.s_EventUserStore,
                "Have not yet initialized global EventUserStore",
              ),
              f.s_EventUserStore
            );
          }
          static IsInitialized() {
            return !!f.s_EventUserStore;
          }
          static async InitGlobal(e) {
            if (!f.s_EventUserStore) {
              const t = new f();
              await t.Init(e),
                (f.s_EventUserStore = t),
                "dev" == d.TS.WEB_UNIVERSE && (window.g_EventUserStore = t);
            }
          }
          async Init(e) {
            (this.m_cm = e), (this.m_tracker = new h(e));
            const t = (0, d.Fd)(
              "partnereventpermissions",
              "application_config",
            );
            this.ValidateStoreDefault(t) &&
              ((0, a.h5)(() => {
                t.forEach((e) => {
                  let t = new C(e.clanid),
                    n = { result: t, promise: f.RemapToPromise(t) };
                  this.CopyFromResponseToTrack(n, e),
                    this.m_mapClanToUserPermissions.set(e.clanid, n);
                });
              }),
              ("dev" != d.TS.WEB_UNIVERSE && "beta" != d.TS.WEB_UNIVERSE) ||
                console.log(
                  "CEventUserStore has loaded",
                  this.m_mapClanToUserPermissions.size,
                  this.m_mapClanToUserPermissions,
                ));
            let n = (0, d.Fd)("uservotes", "application_config");
            n &&
              (0, a.h5)(() => {
                n.forEach((e) => {
                  let t = !!e.voted_up || (!e.voted_down && void 0);
                  this.m_mapAnnounceGIDToVote.set(e.clanAnnouncementGID, t);
                });
              });
          }
          GetTracker() {
            return this.m_tracker;
          }
          ValidateStoreDefault(e) {
            const t = e;
            return (
              !!(
                t &&
                Array.isArray(t) &&
                t.length > 0 &&
                "object" == typeof t[0]
              ) &&
              "number" == typeof t[0].clanid &&
              "number" == typeof t[0].appid
            );
          }
          RecordEventShown(e, t) {
            e &&
              !e.bOldAnnouncement &&
              this.m_tracker.MarkEventShown(
                e.GID,
                e.clanSteamID.GetAccountID(),
                t,
              );
          }
          RecordEventRead(e, t) {
            e &&
              !e.bOldAnnouncement &&
              (this.HasEventBeenRead(e.GID) ||
                (this.SetEventAsRead(e.GID),
                this.m_tracker.MarkEventRead(
                  e.GID,
                  e.clanSteamID.GetAccountID(),
                  t,
                )));
          }
          SetEventAsRead(e) {
            this.m_setReadEventGIDs.add(e);
          }
          HasEventBeenRead(e) {
            return this.m_setReadEventGIDs.has(e);
          }
          static async RemapToPromise(e) {
            return e;
          }
          BIsUserLoggedIn() {
            return d.iA.logged_in;
          }
          BIsPartnerEventPermissionsLoaded(e) {
            return this.m_mapClanToUserPermissions.has(e);
          }
          GetPartnerEventPermissions(e) {
            if (!e || !e.BIsValid()) return new C(0);
            const t = e.GetAccountID();
            this.m_mapClanToUserPermissions.has(t) ||
              this.LoadSingleAppEventPermissions(e);
            return this.m_mapClanToUserPermissions.get(t).result;
          }
          BFollowsEvent(e, t) {
            return (
              -1 != this.GetPartnerEventPermissions(e).event_followed.indexOf(t)
            );
          }
          BFollowsEventAndNotifiedBy(e, t, n) {
            let i = this.GetPartnerEventPermissions(e),
              o = i.event_followed.indexOf(t);
            return -1 !== o && (i.event_followed_flags[o] & n) == n;
          }
          BIgnoresEvent(e, t) {
            return (
              -1 != this.GetPartnerEventPermissions(e).event_ignored.indexOf(t)
            );
          }
          async LoadSingleAppEventPermissions(e) {
            let t = e.GetAccountID(),
              n = this.m_mapClanToUserPermissions.get(t);
            return (
              n ||
                ((n = {
                  promise: this.InternalLoadSingleAppEventPermissions(e),
                  result: new C(t),
                }),
                this.m_mapClanToUserPermissions.set(t, n)),
              n.promise
            );
          }
          CopyFromResponseToTrack(e, t) {
            (e.result.appid = t.appid),
              (e.result.can_edit = t.can_edit),
              (e.result.clanid = t.appid),
              (e.result.event_followed = t.event_followed),
              (e.result.event_ignored = t.event_ignored),
              (e.result.event_followed_flags = t.event_followed_flags),
              (e.result.follows_app = t.follows_app),
              (e.result.owns_app = t.owns_app),
              (e.result.limited_user = t.limited_user),
              (t.support_user || t.valve_admin) && this.m_bIsPresentationMode
                ? ((e.result.can_edit = !0),
                  (e.result.support_user = !1),
                  (e.result.valve_admin = !1))
                : ((e.result.support_user = t.support_user),
                  (e.result.valve_admin = t.valve_admin));
          }
          async InternalLoadSingleAppEventPermissions(e) {
            let t = null,
              n = e.GetAccountID(),
              i = !Boolean(d.iA.logged_in);
            if (!this.m_mapClanToUserPermissions.has(n)) {
              let t = new C(e.GetAccountID());
              this.m_mapClanToUserPermissions.set(n, {
                result: t,
                promise: f.RemapToPromise(t),
              });
            }
            try {
              if (Boolean(d.iA.logged_in)) {
                let o =
                    d.TS.COMMUNITY_BASE_URL +
                    "gid/" +
                    e.ConvertTo64BitString() +
                    "/ajaxgetpartnereventpermissions/",
                  a = {};
                if (
                  ("partnerweb" == (0, d.yK)()
                    ? ((o =
                        d.TS.PARTNER_BASE_URL +
                        "partnerevents/ajaxgetpartnereventpermissions"),
                      (a = { clanaccountid: e.GetAccountID() }))
                    : "store" == (0, d.yK)() &&
                      ((o =
                        d.TS.STORE_BASE_URL +
                        "events/ajaxgetpartnereventpermissions"),
                      (a = { clanaccountid: e.GetAccountID() })),
                  (t = await r().get(o, { params: a, withCredentials: !0 })),
                  1 != t.data.success)
                )
                  console.error(
                    "Partner Events Failed Load:" +
                      (0, u.H)(t.data).strErrorMsg,
                  ),
                    (i = !0);
                else {
                  let e = this.m_mapClanToUserPermissions.get(n);
                  this.CopyFromResponseToTrack(e, t.data);
                }
              }
            } catch (e) {
              if (
                ((t = e.response),
                (i = !0),
                e &&
                  void 0 !== e.response &&
                  void 0 !== e.response.data &&
                  void 0 !== e.response.data.success &&
                  21 == e.response.data.success)
              );
              else {
                const t = (0, u.H)(e);
                console.error(
                  "InternalLoadSingleAppEventPermissions account: " +
                    n +
                    ": " +
                    t.strErrorMsg,
                  t,
                );
              }
            } finally {
              i &&
                (0, a.h5)(() => {
                  let e = this.m_mapClanToUserPermissions.get(n);
                  (e.result.appid = t && t.data ? t.data.appid : 0),
                    (e.result.can_edit = !1),
                    (e.result.clanid = t && t.data ? t.data.clanid : 0),
                    (e.result.event_followed = new Array()),
                    (e.result.event_ignored = new Array()),
                    (e.result.event_followed_flags = new Array()),
                    (e.result.follows_app = !1),
                    (e.result.owns_app = !1),
                    (e.result.support_user = !1),
                    (e.result.valve_admin = !1),
                    (e.result.limited_user = !1);
                });
            }
            return this.m_mapClanToUserPermissions.get(n).result;
          }
          async SetFollowOrUnfollowEvent(e, t, n, i, o) {
            let s = this.GetPartnerEventPermissions(n),
              l = s.event_followed.indexOf(i),
              c = 0;
            -1 !== l &&
              ((c = s.event_followed_flags[l]), e ? (o = c & ~o) : (o |= c));
            let m = 0 == o,
              u =
                ("store" === (0, d.yK)()
                  ? d.TS.STORE_BASE_URL + "events"
                  : d.TS.COMMUNITY_BASE_URL +
                    "/gid/" +
                    n.ConvertTo64BitString()) +
                (m ? "/unfolloworunignoreevent" : "/followorignoreevent"),
              h = new URLSearchParams();
            h.append("sessionid", d.TS.SESSIONID),
              h.append("ignore", "" + t),
              h.append("gid", i),
              h.append("notification_flag", "" + o),
              h.append("clan_accountid", "" + n.GetAccountID());
            await r().post(u, h, { withCredentials: !0 });
            (0, a.h5)(() => {
              let e = this.m_mapClanToUserPermissions.get(n.GetAccountID()),
                r = null,
                a = null,
                s = null,
                l = null;
              m
                ? ((r = t ? e.result.event_ignored : e.result.event_followed),
                  (s = t ? null : e.result.event_followed_flags))
                : t
                  ? ((r = e.result.event_followed),
                    (s = e.result.event_followed_flags),
                    (a = e.result.event_ignored))
                  : ((r = e.result.event_ignored),
                    (a = e.result.event_followed),
                    (l = e.result.event_followed_flags));
              let c = r.indexOf(i);
              if ((c > -1 && (r.splice(c, 1), s && s.splice(c, 1)), a)) {
                let e = a.indexOf(i);
                -1 == e ? (a.push(i), l && l.push(o)) : (l[e] = o);
              }
            });
          }
          async Vote(e, t, n) {
            if (!e || !e.AnnouncementGID) return !1;
            const i = this.m_mapAnnounceGIDToVote.get(e.AnnouncementGID);
            if (i === t) return !0;
            if (
              (this.m_mapAnnounceGIDToVote.set(e.AnnouncementGID, t),
              (0, a.h5)(() => {
                !0 === i && e.UpdateVoteCount("up", -1),
                  !1 === i && e.UpdateVoteCount("down", -1),
                  !0 === t && e.UpdateVoteCount("up", 1),
                  !1 === t && e.UpdateVoteCount("down", 1);
              }),
              this.m_cm)
            ) {
              let n = s.w.Init(l.QU);
              return (
                n.Body().set_announcementid(e.AnnouncementGID),
                n.Body().set_vote_up(!!t),
                n.Body().set_clan_accountid(e.clanSteamID.GetAccountID()),
                1 ==
                  (
                    await l.BE.RateClanAnnouncement(
                      this.m_cm.GetServiceTransport(),
                      n,
                    )
                  ).GetEResult()
              );
            }
            {
              const i = (0, d.yK)(),
                o =
                  "community" == i || "steamtv" == i
                    ? d.TS.COMMUNITY_BASE_URL +
                      "gid/" +
                      e.clanSteamID.ConvertTo64BitString() +
                      "/announcements/rate/" +
                      e.AnnouncementGID
                    : d.TS.STORE_BASE_URL +
                      "updated/ajaxrateupdate/" +
                      e.AnnouncementGID,
                a = new URLSearchParams();
              a.append("sessionid", d.TS.SESSIONID),
                a.append("voteup", t ? "1" : "0"),
                a.append("clanid", "" + e.clanSteamID.GetAccountID()),
                a.append("ajax", "1");
              const s = { withCredentials: !0, cancelToken: n.token };
              return 1 == (await r().post(o, a, s)).data.success;
            }
          }
          async LoadMyVote(e, t) {
            if (e?.AnnouncementGID) {
              if (this.m_mapAnnounceGIDToVote.has(e.AnnouncementGID))
                return this.m_mapAnnounceGIDToVote.get(e.AnnouncementGID);
              let n;
              if (this.m_cm) {
                let t = s.w.Init(l.$Y);
                t.Body().set_announcementid(e.AnnouncementGID);
                let i = await l.BE.GetClanAnnouncementVoteForUser(
                  this.m_cm.GetServiceTransport(),
                  t,
                );
                1 == i.GetEResult() &&
                  (n =
                    !!i.Body().voted_up() ||
                    (!i.Body().voted_down() && void 0));
              } else {
                const i = "store" == (0, d.yK)(),
                  o = i
                    ? d.TS.STORE_BASE_URL + "actions/ajaxgetmyannouncementvote"
                    : d.TS.COMMUNITY_BASE_URL +
                      "gid/" +
                      e.clanSteamID.ConvertTo64BitString() +
                      "/announcements/ajaxgetmyvote/" +
                      e.AnnouncementGID,
                  a = { gid: i ? e.AnnouncementGID : void 0 },
                  s = await r().get(o, {
                    withCredentials: !0,
                    cancelToken: t.token,
                    params: a,
                  });
                n = !!s.data.voted_up || (!s.data.voted_down && void 0);
              }
              return this.m_mapAnnounceGIDToVote.set(e.AnnouncementGID, n), n;
            }
          }
          SetVote(e, t) {
            this.m_mapAnnounceGIDToVote.set(e, t);
          }
          BHasMyVote(e) {
            return (
              !!e.AnnouncementGID &&
              this.m_mapAnnounceGIDToVote.has(e.AnnouncementGID)
            );
          }
          GetPreviouslyLoadedVote(e) {
            return e.AnnouncementGID
              ? this.m_mapAnnounceGIDToVote.get(e.AnnouncementGID)
              : void 0;
          }
          BShowEmailEditorTab(e) {
            if (e.BHasEmailEnabled()) return !0;
            if (e.clanSteamID.GetAccountID() == (0, g.H7)()) return !0;
            let t = this.GetPartnerEventPermissions(e.clanSteamID);
            return (d.UF.IS_OGG || d.UF.IS_VALVE_GROUP) && t.valve_admin;
          }
          BShowSaleEditorTab(e) {
            if (e.BHasSaleEnabled()) return !0;
            if (e.clanSteamID.GetAccountID() == (0, g.H7)()) return !1;
            let t = this.GetPartnerEventPermissions(e.clanSteamID);
            return (
              !d.UF.IS_OGG &&
              (t.valve_admin ||
                (e.jsondata.clone_from_event_gid &&
                  e.jsondata.clone_from_sale_enabled))
            );
          }
        }
        (0, i.Cg)([a.sH], f.prototype, "m_mapClanToUserPermissions", void 0),
          (0, i.Cg)([a.sH], f.prototype, "m_mapAnnounceGIDToVote", void 0),
          (0, i.Cg)([a.sH], f.prototype, "m_setReadEventGIDs", void 0),
          (0, i.Cg)([a.XI], f.prototype, "CopyFromResponseToTrack", null);
      },
      30248: (e, t, n) => {
        "use strict";
        n.d(t, { T: () => r, V: () => o });
        var i = null;
        function o(e) {
          i
            ? console.error("Attempt to set timeline marker hook a second time")
            : (i = e);
        }
        function r(e, t) {
          return i
            ? i(e, t)
            : (console.error(
                "useGameMarkerFromID called in a context where the hook isn't defined.",
              ),
              null);
        }
      },
      59105: (e, t, n) => {
        "use strict";
        n.d(t, { O3: () => $ });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(89193),
          s = n(59351),
          l = n(56132);
        const c = [
            "p",
            "h1",
            "h2",
            "h3",
            "h4",
            "h5",
            "smalltext",
            "b",
            "u",
            "hr",
            "i",
            "img",
            "strike",
            "spoiler",
            "noparse",
            "url",
            "list",
            "olist",
            "*",
            "quote",
            "pullquote",
            "code",
            "table",
            "tr",
            "td",
            "th",
            "previewyoutube",
            "looping_media",
            "roomeffect",
            "sticker",
            "price",
            "pricesavings",
            "trailer",
            "speaker",
            "doclink",
            "video",
            "vod",
            "youtubeorvideo",
            "giveawayeligible",
            "claimitem",
            "packagepurchaseable",
            "actiondialog",
            "uploadfilebutton",
            "docimg",
            "meetsteamsessiongroup",
          ],
          m = [
            "img",
            "previewyoutube",
            "looping_media",
            "roomeffect",
            "video",
            "vod",
            "trailer",
            "youtubeorvideo",
            "docimg",
          ];
        c.filter((e) => !m.includes(e));
        let d;
        function u(e) {
          return e
            ? e.map((e) => ("*" == e ? "\\*" : e)).join("|")
            : (d || (d = u(c)), d);
        }
        var h = n(50669);
        const p = {
          bBroadcastEnabled: !1,
          broadcastChatSetting: "hide",
          default_broadcast_title: "#Broadcast_default_title_dev",
          localized_broadcast_title: new Array(31),
          localized_broadcast_left_image: new Array(31),
          localized_broadcast_right_image: new Array(31),
          broadcast_whitelist: [],
        };
        var _ = n(77631),
          g = n(72751),
          C = n(63497),
          f = n(91581),
          S = n(27486),
          v = n(18849),
          b = n(69756),
          I = n(77765),
          w = n(74002),
          y = n(49912);
        n(63696);
        var E = n(10672),
          D = n(17070);
        var A = n(63689),
          T = (n(28574), n(69450));
        (0, i.Cg)(
          [T.o],
          class {
            m_eventModel;
            m_entry;
            constructor(e, t) {
              (this.m_eventModel = e), (this.m_entry = t);
            }
            GetEventStartTime() {
              return this.m_entry.rtime_start_specific
                ? this.m_entry.rtime_start_specific
                : this.m_eventModel.startTime +
                    this.m_entry.delta_from_event_start_seconds;
            }
          }.prototype,
          "GetEventStartTime",
          null,
        );
        new Set([9, 11, 20, 21, 22, 23, 24, 25, 26, 27, 31, 35]);
        const M = 9e4;
        var R;
        !(function (e) {
          (e[(e.k_EEventStateUnpublished = 0)] = "k_EEventStateUnpublished"),
            (e[(e.k_EEventStateStaged = 1)] = "k_EEventStateStaged"),
            (e[(e.k_EEventStateVisible = 2)] = "k_EEventStateVisible"),
            (e[(e.k_EEventStatsUnlisted = 3)] = "k_EEventStatsUnlisted");
        })(R || (R = {}));
        var k, L, G, F, P, B, x;
        !(function (e) {
          (e[(e.k_EStoreFilterClauseTypeOr = 0)] =
            "k_EStoreFilterClauseTypeOr"),
            (e[(e.k_EStoreFilterClauseTypeAnd = 1)] =
              "k_EStoreFilterClauseTypeAnd"),
            (e[(e.k_EStoreFilterClauseTypeStoreTag = 2)] =
              "k_EStoreFilterClauseTypeStoreTag"),
            (e[(e.k_EStoreFilterClauseTypeFeatureTag = 3)] =
              "k_EStoreFilterClauseTypeFeatureTag"),
            (e[(e.k_EStoreFilterClauseTypeLanguage = 4)] =
              "k_EStoreFilterClauseTypeLanguage"),
            (e[(e.k_EStoreFilterClauseTypeContentDescriptor = 5)] =
              "k_EStoreFilterClauseTypeContentDescriptor"),
            (e[(e.k_EStoreFilterClauseTypePrice = 6)] =
              "k_EStoreFilterClauseTypePrice"),
            (e[(e.k_EStoreFilterClauseTypeAppType = 7)] =
              "k_EStoreFilterClauseTypeAppType");
        })(k || (k = {})),
          (function (e) {
            (e[(e.k_ESaleTagFilter = 0)] = "k_ESaleTagFilter"),
              (e[(e.k_ELanguage = 1)] = "k_ELanguage"),
              (e[(e.k_EContentDescriptor = 2)] = "k_EContentDescriptor"),
              (e[(e.k_EUserPreference = 3)] = "k_EUserPreference"),
              (e[(e.k_EPrice = 4)] = "k_EPrice"),
              (e[(e.k_EAppType = 5)] = "k_EAppType");
          })(L || (L = {})),
          (function (e) {
            (e[(e.k_EHideOwnedItems = 0)] = "k_EHideOwnedItems"),
              (e[(e.k_EHideWishlistedItems = 1)] = "k_EHideWishlistedItems"),
              (e[(e.k_EHideIgnoredItems = 2)] = "k_EHideIgnoredItems");
          })(G || (G = {})),
          (function (e) {
            (e[(e.k_ESortFacetsByName = 0)] = "k_ESortFacetsByName"),
              (e[(e.k_ESortFacetsByMatchCount = 1)] =
                "k_ESortFacetsByMatchCount"),
              (e[(e.k_ESortFacetsManually = 2)] = "k_ESortFacetsManually");
          })(F || (F = {})),
          (function (e) {
            (e.Steam = "Steam"),
              (e.Facebook = "Facebook"),
              (e.Twitter = "Twitter"),
              (e.Reddit = "Reddit");
          })(P || (P = {})),
          (function (e) {
            (e.Summary = "summary"),
              (e.SummaryLargeImage = "summary_large_image");
          })(B || (B = {})),
          (function (e) {
            (e.SingleMedia = "SingleMedia"),
              (e.DoubleMedia = "DoubleMedia"),
              (e.QuadMedia = "QuadMedia"),
              (e.MediaLeft = "MediaLeft"),
              (e.MediaRight = "MediaLeft");
          })(x || (x = {}));
        const O = {
          capsules: [],
          events: [],
          links: [],
          localized_label: new Array(31),
          localized_label_image: new Array(31),
          default_label: "#Sale_default_label",
          section_type: "unselected_empty",
        };
        var N;
        !(function (e) {
          (e[(e.k_ETaggedItems = 0)] = "k_ETaggedItems"),
            (e[(e.k_EContentHub = 1)] = "k_EContentHub");
        })(N || (N = {}));
        const V = {
            localized_subtitle: new Array(31),
            localized_summary: new Array(31),
            localized_title_image: new Array(31),
            localized_capsule_image: new Array(31),
            bSaleEnabled: !1,
            sale_show_creator: !1,
            sale_sections: [],
            sale_browsemore_text: "",
            sale_browsemore_url: "",
            sale_browsemore_color: "",
            sale_browsemore_bgcolor: "",
            localized_sale_header: new Array(31),
            localized_sale_overlay: new Array(31),
            localized_sale_product_banner: new Array(31),
            localized_sale_product_mobile_banner: new Array(31),
            localized_sale_logo: new Array(31),
            sale_font: "",
            sale_background_color: "",
            sale_header_offset: 530,
            referenced_appids: [],
            ...p,
            bScheduleEnabled: !1,
            scheduleEntries: [],
          },
          U = "old_announce_",
          H = [
            "workshop",
            "patchnotes",
            "contenthub",
            "skip_megaphone",
            "curator",
            "curator_group_members",
            "curator_public",
            "audience_followers",
            "enable_steam_china",
            "disable_steam_global",
            "adult_only_content",
            "stablechannel",
            "betachannel",
            "previewchannel",
          ];
        class W {
          constructor() {
            (0, a.Gn)(this);
          }
          GID = void 0;
          AnnouncementGID = void 0;
          clanSteamID;
          forumTopicGID = void 0;
          type = 1;
          appid = 0;
          name = new Map();
          description = new Map();
          timestamp_loc_updated = new Map();
          startTime = void 0;
          endTime = void 0;
          visibilityStartTime = void 0;
          visibilityEndTime = void 0;
          m_nBuildID = void 0;
          m_strBuildBranch = void 0;
          postTime = void 0;
          visibility_state = R.k_EEventStateUnpublished;
          broadcaster = void 0;
          jsondata = V;
          nCommentCount = 0;
          nVotesUp = 0;
          nVotesDown = 0;
          comment_type;
          gidfeature;
          gidfeature2;
          featured_app_tagid;
          bOldAnnouncement = !1;
          announcementClanSteamID = void 0;
          loadedAllLanguages = !1;
          bLoaded = !1;
          deleteInProgress = !1;
          vecTags = new Array();
          creator_steamid;
          last_update_steamid = void 0;
          rtime32_last_modified = void 0;
          rtime32_last_solr_search_col_updated = void 0;
          rtime32_last_local_modification = void 0;
          rtime32_moderator_reviewed = void 0;
          video_preview_type = void 0;
          video_preview_id = void 0;
          has_live_stream;
          live_stream_viewer_count;
          m_overrideCurrentDay = void 0;
          BIsPartnerEvent() {
            return !this.bOldAnnouncement && Boolean(this.GID);
          }
          static FromJSON(e) {
            let t = new W(),
              n = JSON.parse(e);
            return (
              Object.assign(t, n),
              (t.name = new Map(n.name)),
              (t.description = new Map(n.description)),
              (t.vecTags = new Array(n.vecTags)),
              (t.clanSteamID = new _.b(n.clanSteamID)),
              (0, I.w)(
                t.clanSteamID && t.clanSteamID.BIsValid(),
                "Invalid Clan SteamID: " + t.clanSteamID.ConvertTo64BitString(),
              ),
              n.broadcaster &&
                ((t.broadcaster = new _.b(n.broadcaster)),
                (0, I.w)(
                  t.broadcaster && t.broadcaster.BIsValid(),
                  "Invalid Broadcast SteamID: " +
                    t.broadcaster.ConvertTo64BitString(),
                )),
              t
            );
          }
          toJSON(e) {
            let t = new Object();
            return (
              Object.assign(t, this),
              (t.name = Array.from(this.name)),
              (t.description = Array.from(this.description)),
              (t.tags = Array.from(this.vecTags)),
              (t.clanSteamID = this.clanSteamID.ConvertTo64BitString()),
              this.broadcaster &&
                (t.broadcaster = this.broadcaster.ConvertTo64BitString()),
              t
            );
          }
          clone(e = !1) {
            let t = new W();
            return (
              (t.GID = this.GID),
              (t.AnnouncementGID = this.AnnouncementGID),
              (t.clanSteamID = this.clanSteamID),
              (t.bOldAnnouncement = this.bOldAnnouncement),
              (t.nCommentCount = this.nCommentCount),
              (t.nVotesUp = this.nVotesUp),
              (t.nVotesDown = this.nVotesDown),
              (t.forumTopicGID = this.forumTopicGID),
              (t.comment_type = this.comment_type),
              (t.gidfeature = this.gidfeature),
              (t.gidfeature2 = this.gidfeature2),
              (t.featured_app_tagid = this.featured_app_tagid),
              (t.creator_steamid = this.creator_steamid),
              (t.last_update_steamid = this.last_update_steamid),
              (t.rtime32_last_modified = this.rtime32_last_modified),
              (t.rtime32_last_solr_search_col_updated =
                this.rtime32_last_solr_search_col_updated),
              (t.rtime32_moderator_reviewed = this.rtime32_moderator_reviewed),
              (t.type = this.type),
              (t.appid = this.appid),
              (t.name = new Map()),
              this.name.forEach((e, n) => {
                t.name.set(n, e);
              }),
              (t.description = new Map()),
              this.description.forEach((e, n) => {
                t.description.set(n, e);
              }),
              (t.timestamp_loc_updated = new Map()),
              this.timestamp_loc_updated.forEach((e, n) => {
                t.timestamp_loc_updated.set(n, e);
              }),
              (t.startTime = this.startTime),
              (t.endTime = this.endTime),
              (t.visibilityStartTime = this.visibilityStartTime),
              (t.visibilityEndTime = this.visibilityEndTime),
              (t.postTime = this.postTime),
              (t.visibility_state = this.visibility_state),
              (t.loadedAllLanguages = this.loadedAllLanguages),
              (t.bLoaded = this.bLoaded),
              (t.broadcaster = this.broadcaster
                ? new _.b(this.broadcaster.ConvertTo64BitString())
                : null),
              (t.jsondata = JSON.parse(JSON.stringify(this.jsondata))),
              (t.vecTags = new Array()),
              e
                ? ((t.m_nBuildID = this.m_nBuildID),
                  (t.m_strBuildBranch = this.m_strBuildBranch),
                  this.vecTags.forEach((e) => t.vecTags.push(e)))
                : this.vecTags.forEach((e) => {
                    H.includes(e) && t.vecTags.push(e);
                  }),
              t
            );
          }
          GetLastReferencedSaleDayFromCapsules(e, t) {
            let n = t;
            return (
              e?.forEach((e) => {
                void 0 !== e.visibility_index &&
                  (n =
                    void 0 === n
                      ? e.visibility_index
                      : Math.max(n, e.visibility_index));
              }),
              n
            );
          }
          GetLastReferencedSaleDay() {
            let e;
            for (const t of this.GetSaleSections())
              if ("tabs" === t.section_type) {
                if (t.tabs?.length > 0)
                  for (const n of t.tabs)
                    e = this.GetLastReferencedSaleDayFromCapsules(
                      n.capsules,
                      e,
                    );
              } else
                e = this.GetLastReferencedSaleDayFromCapsules(t.capsules, e);
            return (
              this.jsondata.sale_num_headers > 1 &&
                (null == e || e < this.jsondata.sale_num_headers) &&
                (e = this.jsondata.sale_num_headers),
              e
            );
          }
          GetDayIndexFromEventStart() {
            let e = 0;
            const t = v.HD.GetTimeNowWithOverride();
            void 0 !== this.startTime &&
              t >= this.startTime &&
              (e = Math.floor((t - this.startTime) / 86400)),
              void 0 !== this.m_overrideCurrentDay &&
                this.m_overrideCurrentDay >= 0 &&
                (e = this.m_overrideCurrentDay);
            const n = this.GetLastReferencedSaleDay() || 0;
            return Math.min(e, n);
          }
          GetNameWithFallback(e) {
            const t = w.A0.GetELanguageFallback(e);
            return this.name.get(e) || this.name.get(t);
          }
          GetGameTitle(e) {
            return b.A.Get().GetApp(this.appid)?.GetName();
          }
          BInRealmGlobal() {
            return !this.BHasTag("disable_steam_global");
          }
          BInRealmChina() {
            return this.BHasTag("enable_steam_china");
          }
          BIsLanguageValidForRealms(e) {
            return (
              !(
                !this.BInRealmGlobal() ||
                !w.A0.IsELanguageValidInRealm(e, h.TU.k_ESteamRealmGlobal)
              ) ||
              !(
                !this.BInRealmChina() ||
                !w.A0.IsELanguageValidInRealm(e, h.TU.k_ESteamRealmChina)
              )
            );
          }
          GetImgArray(e) {
            let t = [];
            if (
              (("background" !== e && "localized_title_image" != e) ||
                (t = this.jsondata.localized_title_image),
              "capsule" === e)
            )
              t = this.jsondata.localized_capsule_image;
            else if ("spotlight" === e)
              t = this.jsondata.localized_spotlight_image;
            else if ("email_full" === e || "email_centered" === e)
              t = this.jsondata.email_setting
                ? this.jsondata.email_setting.sections[0].localized_image
                : [];
            else if ("broadcast_left" === e)
              t = this.jsondata.localized_broadcast_left_image;
            else if ("broadcast_right" === e)
              t = this.jsondata.localized_broadcast_right_image;
            else if ("sale_header" === e)
              if (this.jsondata.sale_num_headers > 1) {
                const e = Math.min(
                  this.jsondata.sale_num_headers - 1,
                  this.GetDayIndexFromEventStart(),
                );
                t = this.jsondata.localized_per_day_sales_header[e];
              } else t = this.jsondata.localized_sale_header;
            else
              "sale_logo" === e
                ? (t = this.jsondata.localized_sale_logo)
                : "sale_overlay" === e
                  ? (t = this.jsondata.localized_sale_overlay)
                  : C.pb.includes(e)
                    ? (t = C.pU.GetLocalizedImageGroupForEditAsImgArray(
                        this.clanSteamID,
                      ))
                    : "product_banner" === e
                      ? (t = this.jsondata.localized_sale_product_banner)
                      : "product_mobile_banner" === e
                        ? (t =
                            this.jsondata.localized_sale_product_mobile_banner)
                        : "bestofyear_banner" === e
                          ? (t = this.jsondata.localized_bestofyear_banner)
                          : "bestofyear_banner_mobile" === e
                            ? (t =
                                this.jsondata
                                  .localized_bestofyear_banner_mobile)
                            : "localized_store_app_spotlight" === e
                              ? (t =
                                  this.jsondata.localized_store_app_spotlight)
                              : "localized_store_app_spotlight_mobile" === e &&
                                (t =
                                  this.jsondata
                                    .localized_store_app_spotlight_mobile);
            return t;
          }
          GetImageURL(e, t = 0, n = C.wI.full) {
            const i = this.GetImgArray(e),
              o = i && i.length > t && null != i[t];
            return o && i[t].startsWith("http")
              ? i[t]
              : o
                ? C.i6.GenerateArtworkURLFromHashAndExtensions(
                    this.clanSteamID,
                    i[t],
                    n,
                  )
                : void 0;
          }
          GetImageHash(e, t = 0) {
            let n = this.GetImgArray(e);
            return n && n.length > t && null != n[t]
              ? n[t].substr(0, n[t].length - 4)
              : null;
          }
          GetImageHashAndExt(e, t = 0) {
            let n = this.GetImgArray(e);
            return n && n.length > t && null != n[t] ? n[t] : null;
          }
          BHasSomeImage(e) {
            let t = this.GetImgArray(e);
            return t && t.some((e) => null != e && e.length > 0);
          }
          BHasImage(e, t) {
            let n = this.GetImgArray(e);
            return n && n.length > t && null != n[t];
          }
          BHasAnnouncementGID() {
            return (
              null !== this.AnnouncementGID &&
              void 0 !== this.AnnouncementGID &&
              this.AnnouncementGID.length > 1
            );
          }
          GetAnnouncementGID() {
            return this.AnnouncementGID;
          }
          BHasForumTopicGID() {
            return (
              null !== this.forumTopicGID &&
              void 0 !== this.forumTopicGID &&
              this.forumTopicGID.length > 1
            );
          }
          GetForumTopicURL() {
            if (!this.BHasForumTopicGID()) return "";
            if (this.appid)
              return (
                D.TS.COMMUNITY_BASE_URL +
                "app/" +
                this.appid +
                "/eventcomments/" +
                this.forumTopicGID
              );
            {
              const e = f.ac.GetClanInfoByClanAccountID(
                this.clanSteamID.GetAccountID(),
              );
              if (e && e.vanity_url)
                return (
                  D.TS.COMMUNITY_BASE_URL +
                  "groups/" +
                  e.vanity_url +
                  "/eventcomments/" +
                  this.forumTopicGID
                );
            }
            return (
              D.TS.COMMUNITY_BASE_URL +
              "gid/" +
              this.clanSteamID.ConvertTo64BitString() +
              "/eventcomments/" +
              this.forumTopicGID
            );
          }
          BIsEventInFuture() {
            return v.HD.GetTimeNowWithOverride() < this.startTime;
          }
          BHasEventEnded() {
            return this.endTime < v.HD.GetTimeNowWithOverride();
          }
          UpdateVoteCount(e, t) {
            "up" == e
              ? (this.nVotesUp = (0, y.OQ)(
                  this.nVotesUp + t,
                  0,
                  Number.MAX_SAFE_INTEGER,
                ))
              : "down" == e &&
                (this.nVotesDown = (0, y.OQ)(
                  this.nVotesDown + t,
                  0,
                  Number.MAX_SAFE_INTEGER,
                ));
          }
          GetImageFromBeginningOfDescription(e, t) {
            let n = this.GetDescriptionWithFallback(e);
            if (n) {
              let e = n.indexOf("[img]");
              if (-1 !== e && e < t) {
                e += 5;
                let t = n.indexOf("[/img]", e);
                if (-1 != t) {
                  let i = n.substring(e, t).trim();
                  if (0 != i.length) return (0, g.v6)(i);
                }
              }
            }
            return null;
          }
          GetImageURLWithFallback(e, t, n = C.wI.full) {
            const i = this.GetImageURL(e, t, n);
            if (i && i.trim().length > 0) return i;
            const o = w.A0.GetELanguageFallback(t);
            if (t != o) {
              const t = this.GetImageURL(e, o, n);
              if (t && t.trim().length > 0) return t;
            }
            const r = f.ac.GetClanInfoByClanAccountID(
              this.clanSteamID.GetAccountID(),
            );
            if ("capsule" == e) {
              let e = this.GetImageFromBeginningOfDescription(
                t,
                Number.MAX_VALUE,
              );
              if (e) return e;
              let n = this.appid;
              if (
                !n &&
                r &&
                ((r.is_creator_home && !r.is_ogg) || r.is_curator)
              ) {
                if (!this.jsondata?.referenced_appids?.length)
                  return r.avatar_full_url;
                n = this.jsondata.referenced_appids[0];
              }
              const i = b.A.Get().GetApp(n);
              return i
                ? i.GetAssets().GetMainCapsuleURL()
                : D.TS.STORE_ICON_BASE_URL + n + "/header.jpg";
            }
            return "background" == e &&
              r &&
              ((r.is_creator_home && !r.is_ogg) || r.is_curator)
              ? r.creator_page_bg_url
              : this.GetFallbackArtworkScreenshot();
          }
          GetFallbackArtworkScreenshot() {
            if (this.appid) {
              b.A.Get().QueueAppRequest(this.appid, {
                include_screenshots: !0,
              });
              const e = b.A.Get().GetApp(this.appid);
              let t = Number(
                this.bOldAnnouncement
                  ? this.AnnouncementGID
                  : null == this.GID
                    ? 0
                    : this.GID,
              );
              return e?.GetOnlyAllAgesSafeScreenshots().length > 1
                ? ((t %= e.GetOnlyAllAgesSafeScreenshots().length),
                  e.GetOnlyAllAgesSafeScreenshots()[t])
                : e?.GetBothAllAgesSafeAndMatureScreenshots()?.length > 0
                  ? ((t %= e.GetBothAllAgesSafeAndMatureScreenshots().length),
                    e.GetBothAllAgesSafeAndMatureScreenshots()[t])
                  : "";
            }
            if (this.clanSteamID) {
              const e = f.ac.GetClanInfoByClanAccountID(
                this.clanSteamID.GetAccountID(),
              );
              if (e && ((e.is_creator_home && !e.is_ogg) || e.is_curator))
                return e.avatar_full_url;
            }
            return "";
          }
          BImageNeedScreenshotFallback(e, t) {
            let n = this.GetImageURL(e, t);
            if (!n || 0 == n.length) {
              const i = w.A0.GetELanguageFallback(t);
              t != i && (n = this.GetImageURL(e, i));
            }
            return !n || 0 == n.length;
          }
          GetImageForSizeAsArrayWithFallback(e, t, n, i) {
            let o = new Array();
            this.BImageNeedScreenshotFallback(e, t) ||
              (o.push(this.GetImageURLWithFallback(e, t, n)),
              n != C.wI.full &&
                o.push(this.GetImageURLWithFallback(e, t, C.wI.full)));
            const r = this.GetFallbackArtworkScreenshot();
            return r && !i && o.push(r), o;
          }
          GetDescriptionWithFallback(e) {
            const t = w.A0.GetELanguageFallback(e);
            return this.description.get(e) || this.description.get(t);
          }
          BIsImageSafeForAllAges(e, t) {
            const n = f.ac.GetClanInfoByClanAccountID(
                this.clanSteamID.GetAccountID(),
              ),
              i = w.A0.GetELanguageFallback(t);
            return (
              null != this.GetImageURL(e, t) ||
              (t != i && null != this.GetImageURL(e, i)) ||
              (this.appid &&
                b.A.Get().GetApp(this.appid)?.BHasAgeSafeScreenshots()) ||
              (!this.appid &&
                n &&
                ((n.is_creator_home && !n.is_ogg) || n.is_curator))
            );
          }
          BIsVisibleEvent() {
            let e = Math.floor(v.HD.GetTimeNowWithOverride());
            return (
              this.visibility_state == R.k_EEventStatsUnlisted ||
              (this.visibility_state == R.k_EEventStateVisible &&
                e > this.visibilityStartTime &&
                (this.visibilityEndTime < 10 || e < this.visibilityEndTime))
            );
          }
          BIsStagedEvent() {
            return this.visibility_state == R.k_EEventStateStaged;
          }
          BIsUnlistedEvent() {
            return this.visibility_state == R.k_EEventStatsUnlisted;
          }
          GetStartTimeAndDateUnixSeconds() {
            return this.startTime;
          }
          GetEndTimeAndDateUnixSeconds() {
            return this.endTime;
          }
          GetPostTimeAndDateUnixSeconds() {
            return this.postTime;
          }
          GetVisibilityStartTimeAndDateUnixSeconds() {
            return this.visibilityStartTime;
          }
          BIsEventActionEnabled() {
            return (
              !!this.jsondata.action_end_time &&
              (this.jsondata.action_end_time > v.HD.GetTimeNowWithOverride() ||
                (1575396e3 == this.jsondata.action_end_time &&
                  1606845600 > v.HD.GetTimeNowWithOverride()))
            );
          }
          BHasSubTitle(e) {
            if (
              !this.jsondata ||
              !this.jsondata.localized_subtitle ||
              e >= this.jsondata.localized_subtitle.length
            )
              return !1;
            let t = this.jsondata.localized_subtitle[e];
            return null != t && "" != t;
          }
          GetSubTitle(e) {
            if (
              !this.jsondata ||
              !this.jsondata.localized_subtitle ||
              e >= this.jsondata.localized_subtitle.length
            )
              return "";
            let t = this.jsondata.localized_subtitle[e];
            return t || "";
          }
          GetSubTitleWithLanguageFallback(e) {
            return this.jsondata
              ? w.NT.GetWithFallback(this.jsondata.localized_subtitle, e)
              : "";
          }
          GetSubTitleWithSummaryFallback(e) {
            return (
              w.NT.GetWithFallback(this.jsondata?.localized_subtitle, e) ||
              W.GenerateSummaryFromText(this.GetDescriptionWithFallback(e))
            );
          }
          GetSummaryWithFallback(e, t) {
            return (
              w.NT.GetWithFallback(this.jsondata?.localized_summary, e) ||
              W.GenerateSummaryFromText(this.GetDescriptionWithFallback(e), t)
            );
          }
          GetSummary(e) {
            return w.NT.Get(this.jsondata?.localized_summary, e);
          }
          BHasSummary(e) {
            return Boolean(this.GetSummary(e));
          }
          static GenerateSummaryFromText(e, t) {
            return e && 0 != e.trim().length
              ? ((e = (function (e, t = null, n = "") {
                  const i = "\\[\\/?(?:" + u(t) + "){1,}.*?]";
                  return e.replace(new RegExp(i, "gi"), n);
                })(
                  (e = (function (e, t = null, n = " ") {
                    const i = new RegExp(
                      "\\[(" + u(t) + ")\\b[^\\]]*\\].*?\\[/\\1\\]",
                      "gi",
                    );
                    return e.replace(i, n);
                  })(e, [
                    "img",
                    "h1",
                    "h2",
                    "h3",
                    "spoiler",
                    "table",
                    "previewyoutube",
                    "looping_media",
                    "roomeffect",
                    "sticker",
                  ])),
                )),
                (e = (0, A.aX)(e)),
                (0, A.bC)(e, t || 180))
              : "";
          }
          BHasTag(e) {
            return -1 != this.vecTags.indexOf(e);
          }
          BHasTagStartingWith(e) {
            return this.vecTags.some((t) => t.startsWith(e));
          }
          BIsOGGEvent() {
            return Boolean(this.appid) && this.appid > 0;
          }
          BShowLibrarySpotlight() {
            return Boolean(this.jsondata.library_spotlight);
          }
          BShowLibrarySpotlightText() {
            return Boolean(this.jsondata.library_spotlight_text);
          }
          BHasBroadcastEnabled() {
            return this.jsondata.bBroadcastEnabled;
          }
          BEventCanShowBroadcastWidget(e) {
            if (this.jsondata.bSaleEnabled) return this.BHasBroadcastEnabled();
            const t = v.HD.GetTimeNowWithOverride(),
              n = this.endTime ? this.endTime : t + 3600;
            return (
              this.BHasBroadcastEnabled() &&
              this.jsondata.broadcast_whitelist &&
              this.jsondata.broadcast_whitelist.length > 0 &&
              (e || (this.startTime - 600 <= t && t < n))
            );
          }
          BHasBroadcastForceBanner() {
            return this.jsondata.broadcast_force_banner;
          }
          BSaleShowBroadcastAtTopOfPage() {
            return !(
              this.jsondata.sale_sections &&
              this.jsondata.sale_sections.some(
                (e) => "broadcast" == e.section_type,
              )
            );
          }
          BSaleShowCuratorRecommendationAtBottomOfPage() {
            return !(
              this.jsondata.sale_sections &&
              this.jsondata.sale_sections.some(
                (e) => "curator_recommendation" == e.section_type,
              )
            );
          }
          GetBroadcastChatVisibility() {
            return this.jsondata.broadcastChatSetting || "hide";
          }
          GetBroadcastTitle(e) {
            return (
              w.NT.GetWithFallback(
                this.jsondata.localized_broadcast_title,
                e,
              ) ||
              (0, w.we)(
                this.jsondata.default_broadcast_title ??
                  "#Broadcast_default_title_dev",
              )
            );
          }
          GetBroadcastWhitelist() {
            return this.jsondata.broadcast_whitelist;
          }
          GetBroadcastWhitelistAsSteamIDs() {
            return this.jsondata.broadcast_whitelist.map((e) =>
              _.b.InitFromAccountID(e).ConvertTo64BitString(),
            );
          }
          BIsBroadcastAccountIDWhiteListed(e) {
            return (this.jsondata.broadcast_whitelist || []).includes(
              Number(e),
            );
          }
          BHasSaleEnabled() {
            return this.jsondata.bSaleEnabled;
          }
          BHasSaleVanity() {
            return (
              this.jsondata.bSaleEnabled &&
              Boolean(this.jsondata.sale_vanity_id)
            );
          }
          GetSaleVanity() {
            return this.jsondata.sale_vanity_id;
          }
          GetSaleURL() {
            if (!this.jsondata.bSaleEnabled) return null;
            if (!Boolean(this.jsondata.sale_vanity_id))
              return (
                D.TS.STORE_BASE_URL +
                "newshub/" +
                (this.appid
                  ? "app/" + this.appid
                  : "group/" + this.clanSteamID.GetAccountID()) +
                "/view/" +
                this.GID
              );
            if (this.BUsesContentHubForItemSource()) {
              const e = this.jsondata.source_content_hub;
              return e
                ? "string" == typeof e
                  ? D.TS.STORE_BASE_URL + "category/" + e
                  : "category" == e.type
                    ? D.TS.STORE_BASE_URL + "category/" + e.category
                    : "tags" == e.type
                      ? D.TS.STORE_BASE_URL +
                        "tags/" +
                        ((0, w.l4)() || "en") +
                        "/" +
                        e.tagid
                      : "freetoplay" == e.type
                        ? D.TS.STORE_BASE_URL + "genre/Free%20to%20Play/"
                        : "earlyaccess" == e.type
                          ? D.TS.STORE_BASE_URL + "genre/Early%20Access/"
                          : D.TS.STATS_BASE_URL + e.type
                : D.TS.STORE_BASE_URL + "sale/" + this.jsondata.sale_vanity_id;
            }
            if (!this.jsondata.sale_vanity_id_valve_approved_for_sale_subpath) {
              if (S.pF.BHasCreatorHomeLoaded(this.clanSteamID)) {
                return (
                  S.pF
                    .GetCreatorHome(this.clanSteamID)
                    .GetCreatorHomeURL("developer") +
                  "sale/" +
                  this.jsondata.sale_vanity_id
                );
              }
              return (
                D.TS.STORE_BASE_URL +
                "curator/" +
                this.clanSteamID.GetAccountID() +
                "/sale/" +
                this.jsondata.sale_vanity_id
              );
            }
            return D.TS.STORE_BASE_URL + "sale/" + this.jsondata.sale_vanity_id;
          }
          BHasEmailEnabled() {
            return (
              this.jsondata.email_setting && this.jsondata.email_setting.bEnable
            );
          }
          GetSaleSections() {
            return this.jsondata.sale_sections;
          }
          GenerateDynamicSaleSections(e, t, n, i) {
            const o = [],
              r = {
                section_type: "unselected_empty",
                capsules: void 0,
                events: void 0,
                links: void 0,
                localized_label: void 0,
                default_label: void 0,
              };
            return (
              e &&
                o.push({
                  ...r,
                  section_type: "footer_self_creator_home",
                  unique_id: 90010,
                  curator_clan_id: this.clanSteamID.GetAccountID(),
                }),
              n &&
                o.push({
                  ...r,
                  section_type: "footer_browse_more",
                  unique_id: 90012,
                }),
              i &&
                o.push({
                  ...r,
                  section_type: "footer_default_social_share",
                  unique_id: 90013,
                }),
              o
            );
          }
          GetSaleSectionIncludingFooterSections() {
            const e = this.jsondata?.sale_show_creator,
              t = this.BSaleShowCuratorRecommendationAtBottomOfPage(),
              n = this.jsondata.sale_browse_more_button,
              i =
                0 == this.GetSaleSectionsByType("social_share").length &&
                !this.jsondata.sale_default_social_media_disabled;
            return e || t || n || i
              ? [
                  ...this.GetSaleSections(),
                  ...this.GenerateDynamicSaleSections(e, t, n, i),
                ]
              : this.GetSaleSections();
          }
          GetSaleSectionByID(e) {
            if (e > M) {
              return this.GenerateDynamicSaleSections(!0, !0, !0, !0).find(
                (t) => t.unique_id == e,
              );
            }
            return this.jsondata.sale_sections?.find((t) => t.unique_id == e);
          }
          GetSaleSectionCount() {
            return this.jsondata.sale_sections.length;
          }
          GetSaleSectionsByType(e) {
            return this.jsondata.sale_sections?.filter(
              (t) => t.section_type == e,
            );
          }
          GetSaleSectionFirstMatchByType(e) {
            for (let t = 0; t < this.jsondata.sale_sections.length; ++t)
              if (this.jsondata.sale_sections[t].section_type === e)
                return this.jsondata.sale_sections[t];
          }
          static AccumulateCapsuleListIDs(e, t, n, i) {
            e &&
              e.forEach((e) => {
                if (e) {
                  t.has(e.type) && ((i && !i(e.id)) || n.add(e.id));
                }
              });
          }
          GetSaleItemOfType(e, t) {
            if (!this.jsondata.sale_sections) return new Set();
            const n = new Set(e),
              i = new Set();
            if (
              ((0, I.w)(
                !this.jsondata.bOptimizedForSize,
                "Cannot find all items in optimized json",
              ),
              this.jsondata.bOptimizedForSize && "dev" == D.TS.WEB_UNIVERSE)
            )
              throw new Error(
                "GetSaleOfItemType called on a truncated jsondata.",
              );
            return (
              this.jsondata.tagged_items?.forEach((e) => {
                W.AccumulateCapsuleListIDs([e.capsule], n, i, t);
              }),
              this.jsondata.sale_sections.forEach((e) => {
                if (
                  "items" === (o = e.section_type) ||
                  "trailercarousel" === o ||
                  "crosspromotesalepage" == o
                )
                  W.AccumulateCapsuleListIDs(e.capsules, n, i, t);
                else if ("tabs" === e.section_type && e.tabs)
                  for (const o of e.tabs)
                    W.AccumulateCapsuleListIDs(o.capsules, n, i, t);
                var o;
              }),
              i
            );
          }
          GetSaleItemCountOfType(e, t) {
            return this.GetSaleItemOfType(e, t).size;
          }
          GetSaleFeaturedAppsCount(e) {
            return this.GetSaleItemCountOfType(
              ["game", "application", "software", "dlc", "music"],
              e,
            );
          }
          GetSaleFeaturedAppsAndDemosCount(e) {
            return this.GetSaleItemCountOfType(
              ["game", "application", "software", "dlc", "music", "demo"],
              e,
            );
          }
          GetSaleFeaturedBundlesCount(e) {
            return this.GetSaleItemCountOfType(["bundle"], e);
          }
          GetSaleFeaturedPackagesCount(e) {
            return this.GetSaleItemCountOfType(["sub"], e);
          }
          GetSaleFeaturedApps(e) {
            return this.GetSaleItemOfType(
              ["game", "application", "software", "dlc", "music"],
              e,
            );
          }
          GetSaleFeaturedAppsAndDemos(e) {
            return this.GetSaleItemOfType(
              ["game", "application", "software", "dlc", "music", "demo"],
              e,
            );
          }
          GetSaleFeaturedBundles(e) {
            return this.GetSaleItemOfType(["bundle"], e);
          }
          GetSaleFeaturedPackages(e) {
            return this.GetSaleItemOfType(["sub"], e);
          }
          GetTaggedItems() {
            return this.jsondata.tagged_items || [];
          }
          BHasScheduleEnabled() {
            return this.jsondata.bScheduleEnabled;
          }
          GetEventType() {
            return this.type;
          }
          GetEventTypeAsString() {
            return (function (e) {
              let t = "#PartnerEvent_" + e,
                n = (0, w.we)(t);
              return n != t ? n : (0, w.we)("#PartnerEvent_Other");
            })(this.type);
          }
          GetCategoryAsString() {
            return this.BHasTag("steam_award_nomination_request")
              ? (0, w.we)("#PartnerEvent_SteamAwardNominations")
              : this.BHasTag("steam_award_vote_request")
                ? (0, w.we)("#PartnerEvent_SteamAwardVoteRequest")
                : this.BHasTag("steam_game_festival_artist_statement")
                  ? (0, w.we)("#PartnerEvent_SteamGameFestival_ArtistState")
                  : this.BHasTag("steam_game_festival_office_hour")
                    ? (0, w.we)("#PartnerEvent_SteamGameFestival_OfficeHour")
                    : this.BHasTag("steam_game_festival_broadcast") ||
                        (this.BHasTagStartingWith("sale_nextfest_") &&
                          11 == this.type)
                      ? (0, w.we)("#PartnerEvent_SteamGameFestival_Broadcast")
                      : this.GetEventTypeAsString();
          }
          GetAllTags() {
            return this.vecTags;
          }
          BMatchesAllTags(e) {
            let t = !0;
            return (
              e?.forEach((e) => {
                this.vecTags.includes(e) || (t = !1);
              }),
              t
            );
          }
          BAllowedSteamStoreSpotlight() {
            return Boolean(this.jsondata.store_spotlight);
          }
          BHasLibaryHomeSpotlight() {
            return Boolean(this.jsondata.library_home_spotlight);
          }
          BHasSaleProductBanners() {
            return (
              this.jsondata.bSaleEnabled &&
              (this.BHasSomeImage("product_banner") ||
                this.BHasSomeImage("product_banner_override"))
            );
          }
          GetSteamAwardCategory() {
            return this.jsondata.steam_award_category_suggestion;
          }
          GetSteamAwardNomineeCategories() {
            return this.jsondata.steam_award_category_voteids;
          }
          BIsLockedToGameOwners() {
            return Boolean(
              this.jsondata.ownership_requirement_info?.bLockedToAppOwners,
            );
          }
          GetRequiredAppIDs() {
            return this.jsondata.ownership_requirement_info
              ? this.jsondata.ownership_requirement_info.rgRequiredAppIDs
              : [];
          }
          GetRequiredPackageIDs() {
            return this.jsondata.ownership_requirement_info
              ? this.jsondata.ownership_requirement_info.rgRequiredPackageIDs
              : [];
          }
          BUseSubscriptionLayout() {
            return !!this.jsondata.sale_use_subscription_layout;
          }
          BIsLockedToPartnerAppRights() {
            return Boolean(
              this.jsondata.app_right_requirement_info
                ?.bLockedToPartnerAppRights,
            );
          }
          GetRequiredPartnerAppRights() {
            return this.jsondata.app_right_requirement_info;
          }
          GetValveAccessLog() {
            return Array.isArray(this.jsondata.valve_access_log)
              ? this.jsondata.valve_access_log
              : [];
          }
          BUsesContentHubForItemSource() {
            return (
              this.jsondata.item_source_type === N.k_EContentHub &&
              Boolean(this.jsondata.source_content_hub)
            );
          }
          GetContentHubType() {
            return this.BUsesContentHubForItemSource()
              ? null == this.jsondata.source_content_hub
                ? "games"
                : "string" == typeof this.jsondata.source_content_hub
                  ? "category"
                  : this.jsondata.source_content_hub.type
              : void 0;
          }
          GetContentHubCategory() {
            return null == this.jsondata.source_content_hub
              ? void 0
              : "string" == typeof this.jsondata.source_content_hub
                ? this.jsondata.source_content_hub
                : this.jsondata.source_content_hub.category;
          }
          GetContentHubTag() {
            return null == this.jsondata.source_content_hub
              ? void 0
              : "string" == typeof this.jsondata.source_content_hub
                ? 0
                : this.jsondata.source_content_hub.tagid;
          }
          GetContentHub() {
            return "string" == typeof this.jsondata.source_content_hub
              ? { type: "category", category: this.jsondata.source_content_hub }
              : this.jsondata.source_content_hub;
          }
          BContentHubDiscountedOnly() {
            return this.jsondata.content_hub_discounted_only;
          }
          BIsBackgroundImageGroupingEnabled() {
            return this.jsondata.sale_background_img_groups?.enabled;
          }
          GetSalePageGroupDefinition() {
            return this.jsondata.sale_background_img_groups;
          }
          GetSalePageBackgroundImageGroupCount() {
            return this.jsondata.sale_background_img_groups?.enabled
              ? this.jsondata.sale_background_img_groups.groups.length
              : 0;
          }
          GetAllSalePageGroups() {
            return this.jsondata.sale_background_img_groups?.enabled
              ? this.jsondata.sale_background_img_groups.groups
              : [];
          }
          GetSalePageBackgroundGroup(e) {
            return this.jsondata.sale_background_img_groups?.enabled
              ? this.jsondata.sale_background_img_groups.groups[e]
              : null;
          }
          GetIncludedRealmList() {
            const e = new Array();
            return (
              this.BInRealmGlobal() && e.push(h.TU.k_ESteamRealmGlobal),
              this.BInRealmChina() && e.push(h.TU.k_ESteamRealmChina),
              (0, I.w)(
                e.length > 0,
                `Event ${this.GID} is currently configured so that no realms are valid for display. Either enable Steam China or Global to address this issue`,
              ),
              e
            );
          }
          BIsValidForRealm(e) {
            return this.GetIncludedRealmList().includes(e);
          }
        }
        (0, i.Cg)([a.sH], W.prototype, "GID", void 0),
          (0, i.Cg)([a.sH], W.prototype, "AnnouncementGID", void 0),
          (0, i.Cg)([a.sH], W.prototype, "forumTopicGID", void 0),
          (0, i.Cg)([a.sH], W.prototype, "type", void 0),
          (0, i.Cg)([a.sH], W.prototype, "appid", void 0),
          (0, i.Cg)([a.sH], W.prototype, "name", void 0),
          (0, i.Cg)([a.sH], W.prototype, "description", void 0),
          (0, i.Cg)([a.sH], W.prototype, "timestamp_loc_updated", void 0),
          (0, i.Cg)([a.sH], W.prototype, "startTime", void 0),
          (0, i.Cg)([a.sH], W.prototype, "endTime", void 0),
          (0, i.Cg)([a.sH], W.prototype, "visibilityStartTime", void 0),
          (0, i.Cg)([a.sH], W.prototype, "visibilityEndTime", void 0),
          (0, i.Cg)([a.sH], W.prototype, "m_nBuildID", void 0),
          (0, i.Cg)([a.sH], W.prototype, "m_strBuildBranch", void 0),
          (0, i.Cg)([a.sH], W.prototype, "postTime", void 0),
          (0, i.Cg)([a.sH], W.prototype, "visibility_state", void 0),
          (0, i.Cg)([a.sH], W.prototype, "broadcaster", void 0),
          (0, i.Cg)([a.sH], W.prototype, "jsondata", void 0),
          (0, i.Cg)([a.sH], W.prototype, "nCommentCount", void 0),
          (0, i.Cg)([a.sH], W.prototype, "nVotesUp", void 0),
          (0, i.Cg)([a.sH], W.prototype, "nVotesDown", void 0),
          (0, i.Cg)([a.sH], W.prototype, "bOldAnnouncement", void 0),
          (0, i.Cg)([a.sH], W.prototype, "announcementClanSteamID", void 0),
          (0, i.Cg)([a.sH], W.prototype, "loadedAllLanguages", void 0),
          (0, i.Cg)([a.sH], W.prototype, "bLoaded", void 0),
          (0, i.Cg)([a.sH], W.prototype, "deleteInProgress", void 0),
          (0, i.Cg)([a.sH], W.prototype, "vecTags", void 0),
          (0, i.Cg)([a.sH], W.prototype, "last_update_steamid", void 0),
          (0, i.Cg)([a.sH], W.prototype, "rtime32_last_modified", void 0),
          (0, i.Cg)(
            [a.sH],
            W.prototype,
            "rtime32_last_solr_search_col_updated",
            void 0,
          ),
          (0, i.Cg)(
            [a.sH],
            W.prototype,
            "rtime32_last_local_modification",
            void 0,
          ),
          (0, i.Cg)([a.sH], W.prototype, "rtime32_moderator_reviewed", void 0),
          (0, i.Cg)([a.sH], W.prototype, "video_preview_type", void 0),
          (0, i.Cg)([a.sH], W.prototype, "video_preview_id", void 0),
          (0, i.Cg)([a.sH], W.prototype, "m_overrideCurrentDay", void 0);
        var z = n(37779),
          j = n(9907),
          q = n(82924);
        class K {
          appid;
          date;
          can_play;
          playtime;
          announcementid;
          constructor(e) {
            (0, I.w)(
              "number" == typeof e.appid,
              "AJAX updated app returned a non-numeric AppID! Did the PHP change?",
            ),
              (this.appid = e.appid),
              (this.date = e.date),
              (this.can_play = e.can_play),
              (this.playtime = e.playtime),
              (this.announcementid = e.announcementid);
          }
        }
        function Z(e) {
          let t = "" + e;
          const n = w.A0.GetELanguageFallback(e);
          return e != n && (t += "_" + n), t;
        }
        class Q {
          constructor() {
            (0, a.Gn)(this);
          }
          m_mapExistingEvents = new Map();
          m_mapEventUpdateCallback = new Map();
          m_mapAnnouncementBodyToEvent = new Map();
          m_mapClanToGIDs = new Map();
          m_mapAppIDToGIDs = new Map();
          m_mapAdjacentAnnouncementGIDs = new Map();
          m_mapUpdatedApps = new Map();
          m_tsUpdatedAppsQueryTime = 0;
          m_rgQueuedEventsClanIDs = new Array();
          m_rgQueuedEventsUniqueIDs = new Array();
          m_rgQueuedEventsForEditFlags = new Array();
          m_QueuedEventTimeout = new j.LU();
          m_PendingInfoPromise;
          m_PendingInfoResolve;
          m_bLoadedFromConfig = !1;
          Init() {
            if (!this.m_bLoadedFromConfig) {
              let t =
                ((e = "PartnerEventStore"),
                window.StoreDefaults ? window.StoreDefaults[e] : void 0);
              this.ValidateStoreDefault(t) &&
                t.forEach((e) => {
                  if (e) {
                    let t = new _.b(e.clan_steamid);
                    const n = this.InsertEventModelFromClanEventData(t, e);
                    e.announcement_body &&
                      this.m_mapExistingEvents.set(
                        U + e.announcement_body.gid,
                        n,
                      );
                  }
                });
              let n = (0, D.Fd)("partnereventstore", "application_config");
              this.ValidateStoreDefault(n) &&
                n.forEach((e) => {
                  if (e) {
                    let t = new _.b(e.clan_steamid);
                    const n = this.InsertEventModelFromClanEventData(t, e);
                    e.announcement_body &&
                      !this.m_mapExistingEvents.has(
                        U + e.announcement_body.gid,
                      ) &&
                      this.m_mapExistingEvents.set(
                        U + e.announcement_body.gid,
                        n,
                      );
                  }
                });
              let i = (0, D.Fd)("partnereventadjacents", "application_config");
              this.ValidateAdjacentEvent(i) &&
                (("dev" != D.TS.WEB_UNIVERSE && "beta" != D.TS.WEB_UNIVERSE) ||
                  console.log(
                    "DEV_DEBUG: CPartnerEventStore loading adjacents gids payload: " +
                      i.length,
                  ),
                i.forEach((e) => {
                  e &&
                    this.m_mapAdjacentAnnouncementGIDs.set(
                      e.announcementGID,
                      e.adjacents,
                    );
                })),
                "dev" == D.TS.WEB_UNIVERSE &&
                  console.log(
                    "PartnerEventStore Loaded events: " +
                      this.m_mapExistingEvents.size +
                      " with adjacent info: " +
                      this.m_mapExistingEvents.size,
                  ),
                (this.m_bLoadedFromConfig = !0);
            }
            var e;
          }
          ValidateStoreDefault(e) {
            const t = e;
            return (
              !!(
                t &&
                Array.isArray(t) &&
                t.length > 0 &&
                "object" == typeof t[0]
              ) &&
              ("string" == typeof t[0].gid ||
                ("object" == typeof t[0].announcement_body &&
                  "string" == typeof t[0].announcement_body.gid))
            );
          }
          ValidateAdjacentEvent(e) {
            const t = e;
            return (
              !!(
                t &&
                Array.isArray(t) &&
                t.length > 0 &&
                "object" == typeof t[0]
              ) &&
              "string" == typeof t[0].announcementGID &&
                Array.isArray(t[0].adjacents) &&
              (0 == t[0].adjacents.length ||
                "string" == typeof t[0].adjacents[0])
            );
          }
          GetPartnerEventChangeCallback(e) {
            return (
              this.m_mapEventUpdateCallback.has(e) ||
                this.m_mapEventUpdateCallback.set(e, new j.lu()),
              this.m_mapEventUpdateCallback.get(e)
            );
          }
          GetClanEventGIDs(e) {
            let t = this.m_mapClanToGIDs.get(e.GetAccountID());
            return t || [];
          }
          GetClanEventGIDsForApp(e) {
            let t = this.m_mapAppIDToGIDs.get(e);
            return t || [];
          }
          GetClanEventModel(e) {
            return this.m_mapExistingEvents.get(e);
          }
          BHasClanEventModel(e) {
            return this.m_mapExistingEvents.has(e);
          }
          BHasClanAnnouncementGID(e) {
            if (this.m_mapAnnouncementBodyToEvent.has(e)) {
              let t = this.m_mapAnnouncementBodyToEvent.get(e);
              return this.BHasClanEventModel(t);
            }
            return !1;
          }
          GetClanEventGIDFromAnnouncementGID(e) {
            return this.m_mapAnnouncementBodyToEvent.get(e);
          }
          GetClanEventFromAnnouncementGID(e) {
            return this.m_mapExistingEvents.get(
              this.m_mapAnnouncementBodyToEvent.get(e),
            );
          }
          DefaultEventSortFunction(e, t) {
            return e.startTime == t.startTime
              ? (0, A.kd)(e.GID, t.GID)
              : t.startTime - e.startTime;
          }
          RegisterClanEvents(e) {
            if (e)
              for (const t of e) {
                const e = this.GetEventLookupKey(t);
                if (!this.m_mapExistingEvents.has(e)) {
                  const e = new _.b(t.clan_steamid);
                  this.InsertEventModelFromClanEventData(e, t);
                }
              }
          }
          GetRankedClanEvents(e, t) {
            let n = [],
              i = e ? this.GetClanEventGIDs(e) : this.GetClanEventGIDsForApp(t);
            if (!i || 0 == i.length) return n;
            for (let e of i) {
              let t = this.GetClanEventModel(e);
              n.push(t);
            }
            return n.sort(this.DefaultEventSortFunction), n;
          }
          BIsOldAnnouncement(e) {
            return (
              (null == e.gid || null == e.gid || "0" == e.gid) &&
              e.announcement_body &&
              "0" != e.announcement_body.gid
            );
          }
          GetEventLookupKey(e) {
            return this.BIsOldAnnouncement(e)
              ? U + e.announcement_body.gid
              : e.gid;
          }
          InsertEventModelFromClanEventData(e, t) {
            let n = new W();
            if (
              ((n.clanSteamID = e),
              (0, I.w)(
                n.clanSteamID && n.clanSteamID.BIsValid(),
                "Invalid Clan SteamID: " +
                  n.clanSteamID.ConvertTo64BitString() +
                  " " +
                  D.TS.EUNIVERSE,
              ),
              (n.GID = this.GetEventLookupKey(t)),
              (n.bOldAnnouncement = this.BIsOldAnnouncement(t)),
              (n.appid = t.appid),
              (n.startTime = t.rtime32_start_time),
              (n.endTime = t.rtime32_end_time),
              (n.visibilityStartTime = t.rtime32_visibility_start),
              (n.visibilityEndTime = t.rtime32_visibility_end),
              (n.loadedAllLanguages = !1),
              (n.type = t.event_type),
              (n.nVotesUp = t.votes_up),
              (n.nVotesDown = t.votes_down),
              (n.comment_type = t.comment_type),
              (n.gidfeature = t.gidfeature),
              (n.gidfeature2 = t.gidfeature2),
              (n.featured_app_tagid = t.featured_app_tagid),
              (n.vecTags = new Array()),
              (n.creator_steamid = t.creator_steamid),
              (n.last_update_steamid = t.last_update_steamid),
              (n.rtime32_last_modified = t.rtime32_last_modified),
              (n.rtime32_moderator_reviewed = t.rtime_mod_reviewed),
              (n.video_preview_type = t.video_preview_type),
              (n.video_preview_id = t.video_preview_id),
              (n.has_live_stream = t.has_live_stream),
              (n.live_stream_viewer_count = t.live_stream_viewer_count),
              (n.m_nBuildID = t.build_id),
              (n.m_strBuildBranch = t.build_branch),
              t.announcement_body)
            ) {
              let e = t.announcement_body;
              (n.AnnouncementGID = e.gid),
                n.name.set(e.language, e.headline),
                n.description.set(e.language, e.body),
                n.timestamp_loc_updated.clear(),
                (n.forumTopicGID = e.forum_topic_id),
                (n.nCommentCount = e.commentcount),
                (n.postTime = e.posttime),
                n.bOldAnnouncement && !e.hidden && (n.startTime = e.posttime),
                (n.announcementClanSteamID = new _.b(e.clanid)),
                e.tags &&
                  e.tags.length > 0 &&
                  e.tags.forEach((e) => n.vecTags.push(e)),
                !n.rtime32_last_solr_search_col_updated &&
                  n.rtime32_last_modified &&
                  ((n.rtime32_last_solr_search_col_updated =
                    n.rtime32_last_modified),
                  (n.rtime32_last_modified = e.updatetime));
            } else
              (n.AnnouncementGID = "0"),
                (n.forumTopicGID = t.forum_topic_id),
                n.name.clear(),
                n.description.clear(),
                n.timestamp_loc_updated.clear(),
                (n.postTime = t.rtime32_start_time),
                (n.nCommentCount = t.comment_count),
                n.name.set(0, t.event_name),
                n.description.set(0, t.event_notes);
            t.broadcaster_accountid &&
              (n.broadcaster = new _.b(t.broadcaster_accountid));
            const i = V;
            try {
              n.jsondata = {
                ...i,
                ...(t.jsondata ? JSON.parse(t.jsondata) : void 0),
              };
            } catch (e) {
              const t = (0, E.H)(e);
              throw (
                (console.error(
                  "PartnerEventStore::InsertEventModelFromClanEventData: failed to parse embedded json model" +
                    t.strErrorMsg,
                  t,
                ),
                e)
              );
            }
            if (
              ((n.jsondata.localized_capsule_image = (0, z.$Y)(
                n.jsondata.localized_capsule_image || [],
                31,
                null,
              )),
              (n.jsondata.localized_title_image = (0, z.$Y)(
                n.jsondata.localized_title_image || [],
                31,
                null,
              )),
              (n.jsondata.localized_subtitle = (0, z.$Y)(
                n.jsondata.localized_subtitle || [],
                31,
                null,
              )),
              (n.jsondata.localized_summary = (0, z.$Y)(
                n.jsondata.localized_summary || [],
                31,
                null,
              )),
              (n.jsondata.localized_broadcast_title = (0, z.$Y)(
                n.jsondata.localized_broadcast_title || [],
                31,
                null,
              )),
              (n.jsondata.localized_broadcast_left_image = (0, z.$Y)(
                n.jsondata.localized_broadcast_left_image || [],
                31,
                null,
              )),
              (n.jsondata.localized_broadcast_right_image = (0, z.$Y)(
                n.jsondata.localized_broadcast_right_image || [],
                31,
                null,
              )),
              (n.jsondata.localized_sale_header = (0, z.$Y)(
                n.jsondata.localized_sale_header || [],
                31,
                null,
              )),
              (n.jsondata.localized_sale_overlay = (0, z.$Y)(
                n.jsondata.localized_sale_overlay || [],
                31,
                null,
              )),
              (n.jsondata.localized_sale_product_banner = (0, z.$Y)(
                n.jsondata.localized_sale_product_banner || [],
                31,
                null,
              )),
              (n.jsondata.localized_sale_product_mobile_banner = (0, z.$Y)(
                n.jsondata.localized_sale_product_mobile_banner || [],
                31,
                null,
              )),
              (n.jsondata.localized_sale_logo = (0, z.$Y)(
                n.jsondata.localized_sale_logo || [],
                31,
                null,
              )),
              void 0 !== n.jsondata.sale_num_headers)
            )
              for (let e = 0; e < n.jsondata.sale_num_headers; ++e)
                n.jsondata.localized_per_day_sales_header[e] = (0, z.$Y)(
                  n.jsondata.localized_per_day_sales_header[e],
                  31,
                  null,
                );
            return (
              n.jsondata.sale_sections &&
                n.jsondata.sale_sections.forEach((e, t) => {
                  e.localized_label &&
                    (e.localized_label = (0, z.$Y)(
                      e.localized_label,
                      31,
                      null,
                    )),
                    "trailercarousel" === e.section_type &&
                      (e.show_as_carousel = !1),
                    (n.jsondata.sale_sections[t] = { ...O, ...e });
                }),
              n.jsondata.email_setting &&
                n.jsondata.email_setting.sections &&
                n.jsondata.email_setting.sections.forEach((e) => {
                  void 0 !== e.localized_headline &&
                    null !== e.localized_headline &&
                    (e.localized_headline = (0, z.$Y)(
                      e.localized_headline,
                      31,
                      null,
                    )),
                    void 0 !== e.localized_body &&
                      null !== e.localized_body &&
                      (e.localized_body = (0, z.$Y)(
                        e.localized_body,
                        31,
                        null,
                      )),
                    void 0 !== e.localized_image &&
                      null !== e.localized_image &&
                      (e.localized_image = (0, z.$Y)(
                        e.localized_image,
                        31,
                        null,
                      ));
                }),
              n.jsondata.localized_title_image.forEach((e, t) => {
                if (null != e && "http" == e.substr(0, 4)) {
                  let i = e.lastIndexOf("/"),
                    o = e.substr(i + 1);
                  n.jsondata.localized_title_image[t] = o;
                }
              }),
              t.published
                ? t.unlisted
                  ? (n.visibility_state = R.k_EEventStatsUnlisted)
                  : t.hidden
                    ? (n.visibility_state = R.k_EEventStateStaged)
                    : (n.visibility_state = R.k_EEventStateVisible)
                : (n.visibility_state = R.k_EEventStateUnpublished),
              this.InsertUniqueEventGID(e.GetAccountID(), n.appid, n.GID),
              this.m_mapExistingEvents.set(n.GID, n),
              n.AnnouncementGID &&
                n.AnnouncementGID.length > 1 &&
                this.m_mapAnnouncementBodyToEvent.set(n.AnnouncementGID, n.GID),
              (n.bLoaded = !0),
              n
            );
          }
          HelperInitializeNumSalesHeaderArray(e) {
            if (e.jsondata.sale_num_headers > 1) {
              e.jsondata.localized_per_day_sales_header = [];
              for (let t = 0; t < e.jsondata.sale_num_headers; ++t)
                e.jsondata.localized_per_day_sales_header.push(
                  (0, z.$Y)([], 31, null),
                );
              e.m_overrideCurrentDay = 0;
            } else e.m_overrideCurrentDay = void 0;
          }
          GetAllClanEvents(e) {
            let t = new Array();
            return (
              this.m_mapClanToGIDs.has(e.GetAccountID()) &&
                this.m_mapClanToGIDs.get(e.GetAccountID()).forEach((e) => {
                  let n = this.m_mapExistingEvents.get(e);
                  n && t.push(n);
                }),
              t
            );
          }
          async QueueLoadPartnerEvent(e, t, n) {
            if (this.m_mapExistingEvents.has(t)) return;
            this.m_rgQueuedEventsClanIDs.push(e),
              this.m_rgQueuedEventsUniqueIDs.push(t),
              this.m_rgQueuedEventsForEditFlags.push(Boolean(n)),
              this.m_PendingInfoPromise ||
                (this.m_PendingInfoPromise = new Promise(
                  (e) => (this.m_PendingInfoResolve = e),
                ));
            const i = this.m_PendingInfoPromise,
              o = () => {
                const e = this.m_PendingInfoResolve,
                  t = this.m_rgQueuedEventsClanIDs,
                  n = this.m_rgQueuedEventsUniqueIDs,
                  i = this.m_rgQueuedEventsForEditFlags;
                (this.m_PendingInfoPromise = null),
                  (this.m_rgQueuedEventsClanIDs = new Array()),
                  (this.m_rgQueuedEventsUniqueIDs = new Array()),
                  (this.m_rgQueuedEventsForEditFlags = new Array()),
                  this.InternalLoadPartnerEventList(t, n, i).then(() => e());
              };
            if (this.m_rgQueuedEventsClanIDs.length >= 30)
              this.m_QueuedEventTimeout.Cancel(), o();
            else if (!this.m_QueuedEventTimeout.IsScheduled()) {
              const e = 50;
              this.m_QueuedEventTimeout.Schedule(e, o);
            }
            return i;
          }
          async InternalLoadPartnerEventList(e, t, n) {
            let i = n.some((e) => e);
            const o =
                D.TS.STORE_BASE_URL +
                (i
                  ? "events/ajaxgeteventdetailsforedit/"
                  : "events/ajaxgeteventdetails/"),
              a = Z((0, l.sf)(D.TS.LANGUAGE)),
              s = {
                clanid_list: e.join(","),
                uniqueid_list: t.join(","),
                lang_list: a,
                origin: self.origin,
              };
            try {
              const e = await r().get(o, { params: s, withCredentials: i });
              this.RegisterClanEvents(e.data.events);
            } catch (e) {
              let t = (0, E.H)(e);
              console.error("GetEventDetails hit error " + t.strErrorMsg, t);
            }
          }
          async LoadAdjacentPartnerEvents(e, t, n, i, o, r, a) {
            return this.InternalLoadAdjacentPartnerEvents(
              e,
              void 0,
              t,
              n,
              i,
              o,
              r,
              a,
            );
          }
          async LoadAdjacentPartnerEventsByAnnouncement(e, t, n, i, o, r, a) {
            return this.InternalLoadAdjacentPartnerEvents(
              void 0,
              e,
              t,
              n,
              i,
              o,
              r,
              a,
            );
          }
          async LoadAdjacentPartnerEventsByEvent(e, t, n, i, o, r, a) {
            const s = t || e.clanSteamID;
            return e.bOldAnnouncement
              ? this.InternalLoadAdjacentPartnerEvents(
                  void 0,
                  e.AnnouncementGID,
                  s,
                  n,
                  i,
                  o,
                  r,
                  a,
                )
              : this.InternalLoadAdjacentPartnerEvents(
                  e.GID,
                  e.AnnouncementGID,
                  s,
                  n,
                  i,
                  o,
                  r,
                  a,
                );
          }
          async InternalLoadAdjacentPartnerEvents(e, t, n, i, o, s, c, m) {
            let d = new Array();
            if (this.m_mapAdjacentAnnouncementGIDs.has(t)) {
              let e = this.m_mapAdjacentAnnouncementGIDs.get(t),
                n = new Array();
              if (
                (e.forEach((e) => {
                  if (this.m_mapAnnouncementBodyToEvent.has(e)) {
                    let t = this.m_mapAnnouncementBodyToEvent.get(e);
                    d.push(this.m_mapExistingEvents.get(t));
                  } else n.push(e);
                }),
                n.length > 0)
              ) {
                (
                  await this.LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs(
                    null,
                    n,
                    m,
                  )
                ).forEach((e) => d.push(e));
              }
            } else {
              let u =
                D.TS.STORE_BASE_URL + "events/ajaxgetadjacentpartnerevents/";
              const h = Z((0, l.sf)(D.TS.LANGUAGE));
              let p = {
                clan_accountid: n ? n.GetAccountID() : void 0,
                appid: i,
                count_before: o,
                count_after: s,
                gidevent: e,
                gidannouncement: t,
                lang_list: h,
                rtime_oldestevent: c ? c.rtime_oldestevent : void 0,
                require_tags:
                  c && c.require_tags ? c.require_tags.join(",") : void 0,
                exclude_tags:
                  c && c.exclude_tags ? c.exclude_tags.join(",") : void 0,
                require_no_tags: c ? c.require_no_tags : void 0,
                event_type_filter:
                  c && c.event_type_filter
                    ? c.event_type_filter.join(",")
                    : void 0,
                exclude_event_types:
                  c && c.exclude_event_types
                    ? c.exclude_event_types.join(",")
                    : void 0,
                origin: self.origin,
              };
              try {
                let o = await r().get(u, { params: p, cancelToken: m?.token });
                if (1 == o?.data?.success)
                  (0, a.h5)(() => {
                    for (let e of o.data.events) {
                      let t = this.GetEventLookupKey(e);
                      if (!this.m_mapExistingEvents.has(t)) {
                        let t = new _.b(e.clan_steamid);
                        this.InsertEventModelFromClanEventData(n || t, e);
                      }
                      d.push(this.m_mapExistingEvents.get(t));
                    }
                    0 == d.length &&
                      (e && this.BHasClanEventModel(e)
                        ? d.push(this.m_mapExistingEvents.get(e))
                        : t &&
                          this.BHasClanAnnouncementGID(t) &&
                          d.push(this.GetClanEventFromAnnouncementGID(t)));
                  });
                else {
                  let e = (0, E.H)(o?.data);
                  console.error(
                    "LoadAdjacentPartnerEvents Success but empty response:" +
                      i +
                      " clanAccount:" +
                      (n ? n.GetAccountID() : 0) +
                      " " +
                      e.strErrorMsg,
                    e,
                  );
                }
              } catch (e) {
                let t = (0, E.H)(e);
                52 != t.errorCode &&
                  console.error(
                    "LoadAdjacentPartnerEvents hit error on appid:" +
                      i +
                      " clanAccount:" +
                      (n ? n.GetAccountID() : 0) +
                      " " +
                      t.strErrorMsg,
                    t,
                  );
              }
            }
            return d;
          }
          async LoadPartnerEventsPageable(e, t, n = 0, i = 0) {
            let o = new Array(),
              s = D.TS.STORE_BASE_URL + "events/ajaxgetpartnereventspageable/",
              l = {
                clan_accountid: e ? e.GetAccountID() : void 0,
                appid: t,
                offset: n,
                count: i,
                l: D.TS.LANGUAGE,
                origin: self.origin,
              };
            try {
              let e = await r().get(s, { params: l });
              (0, a.h5)(() => {
                for (let t of e.data.events) {
                  let e = this.GetEventLookupKey(t);
                  if (!this.m_mapExistingEvents.has(e)) {
                    let e = new _.b(t.clan_steamid);
                    this.InsertEventModelFromClanEventData(e, t);
                  }
                  o.push(this.m_mapExistingEvents.get(e));
                }
              });
            } catch (e) {
              console.error(
                "LoadClanEventInDateRange hit error " + (0, E.H)(e).strErrorMsg,
              );
            }
            return o;
          }
          async GetBestEventsForCurrentUser(e, t, n) {
            let i = new Array(),
              o = {
                l: D.TS.LANGUAGE,
                include_steam_blog: !0,
                filter_to_played_within_days: e,
                include_only_game_updates: t,
              },
              s = D.TS.STORE_BASE_URL + "events/ajaxgetbesteventsforuser",
              l = await r().get(s, {
                params: o,
                withCredentials: !0,
                cancelToken: n ? n.token : void 0,
              });
            if (!l.data?.events) {
              let e = l.data?.err_msg || "";
              throw new Error(
                `GetBestEventsForCurrentUser request failed (${e})`,
              );
            }
            return (
              (0, a.h5)(() => {
                for (let e of l.data.events) {
                  let t = this.GetEventLookupKey(e);
                  if (!this.m_mapExistingEvents.has(t)) {
                    let t = new _.b(e.clan_steamid);
                    this.InsertEventModelFromClanEventData(t, e);
                  }
                  let n = {
                    nAppPriority: e.nAppPriority,
                    bPossibleTakeOver: e.bPossibleTakeOver,
                    event: this.m_mapExistingEvents.get(t),
                  };
                  i.push(n);
                }
              }),
              i
            );
          }
          async LoadImportantEventsAroundToday(e, t, n, i, o, s) {
            let l = new Array(),
              c = new Array();
            c.push({ priority: 0, appids: t }),
              n && c.push({ priority: 1, appids: n }),
              i && c.push({ priority: 2, appids: i });
            let m = {
                count: e,
                strAppIDPriority: JSON.stringify({ prioritized_apps: c }),
                filterToEventTypes: s ? s.toString() : "",
                l: D.TS.LANGUAGE,
              },
              d = D.TS.STORE_BASE_URL + "events/ajaxgettodayboundedevents",
              u = await r().get(d, {
                params: m,
                withCredentials: !0,
                cancelToken: o.token,
              });
            return (
              (0, a.h5)(() => {
                for (let e of u.data.events) {
                  let t = this.GetEventLookupKey(e);
                  if (!this.m_mapExistingEvents.has(t)) {
                    let t = new _.b(e.clan_steamid);
                    this.InsertEventModelFromClanEventData(t, e);
                  }
                  l.push(this.m_mapExistingEvents.get(t));
                }
              }),
              l
            );
          }
          InsertUniqueEventGID(e, t, n) {
            this.m_mapClanToGIDs.has(e) ||
              this.m_mapClanToGIDs.set(e, new Array()),
              this.m_mapAppIDToGIDs.has(t) ||
                this.m_mapAppIDToGIDs.set(t, new Array());
            let i = this.m_mapClanToGIDs.get(e);
            -1 == i.indexOf(n) &&
              (i.push(n), this.m_mapAppIDToGIDs.get(t).push(n));
          }
          ResetModel() {}
          async DeleteClanEvent(e, t) {
            this.m_mapExistingEvents.has(t) &&
              (this.m_mapExistingEvents.get(t).deleteInProgress = !0);
            let n = null,
              i = new URLSearchParams();
            return (
              i.append("sessionid", D.TS.SESSIONID),
              i.append("bDelete", "1"),
              i.append("gid", t),
              (n = await r().post(
                D.TS.COMMUNITY_BASE_URL +
                  "/gid/" +
                  e.ConvertTo64BitString() +
                  "/ajaxcreateupdatedeletepartnerevents/",
                i,
              )),
              this.RemoveGIDFromList(e, t),
              n.data
            );
          }
          RemoveGIDFromList(e, t) {
            if (
              (this.m_mapExistingEvents.delete(t),
              this.m_mapClanToGIDs.has(e.GetAccountID()))
            ) {
              let n = this.m_mapClanToGIDs.get(e.GetAccountID()),
                i = n.indexOf(t);
              i >= 0 && n.splice(i, 1);
            }
          }
          FlushEventFromCache(e, t) {
            if (e && this.m_mapExistingEvents.has(e)) {
              if (!t) {
                t = this.m_mapExistingEvents.get(e).AnnouncementGID;
              }
              this.m_mapExistingEvents.delete(e);
            }
            if (
              t &&
              (this.m_mapExistingEvents.has(U + t) &&
                this.m_mapExistingEvents.delete(U + t),
              this.m_mapAnnouncementBodyToEvent.has(t))
            ) {
              const e = this.m_mapAnnouncementBodyToEvent.get(t);
              this.m_mapExistingEvents.has(e) &&
                this.m_mapExistingEvents.delete(e),
                this.m_mapAnnouncementBodyToEvent.delete(t);
            }
          }
          async InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
            e,
            t,
            n,
            i,
            o,
            a = !1,
          ) {
            let s = Z(a ? 0 : (0, l.sf)(D.TS.LANGUAGE)),
              c = {
                appid: t,
                clan_accountid: e ? e.GetAccountID() : void 0,
                announcement_gid: i,
                event_gid: n,
                lang_list: s,
                last_modified_time: o || 0,
                origin: self.origin,
                for_edit: a,
              },
              m = null,
              d = null;
            if (a) {
              const n = (0, D.yK)();
              "community" === n
                ? ((d = D.TS.COMMUNITY_BASE_URL),
                  (d += e ? "gid/" + e.ConvertTo64BitString() : "ogg/" + t),
                  (d += "/"))
                : (d =
                    "partnerweb" === n
                      ? D.TS.PARTNER_BASE_URL + "sales/"
                      : D.TS.STORE_BASE_URL + "events/"),
                (d += "ajaxgetpartnereventforedit"),
                (m = { params: c, withCredentials: !0 });
            } else
              (d = D.TS.STORE_BASE_URL + "events/ajaxgetpartnerevent"),
                (m = { params: c, withCredentials: !1 });
            let u = (await r().get(d, m)).data.event,
              h = this.GetEventLookupKey(u);
            if (
              !this.m_mapExistingEvents.has(h) ||
              this.m_mapExistingEvents.get(h).rtime32_last_modified <
                u.rtime32_last_modified ||
              this.m_mapExistingEvents.get(h).rtime32_moderator_reviewed <
                u.rtime_mod_reviewed
            ) {
              (0, I.w)(
                u.clan_steamid,
                "ClanSteamID is missing from data we received",
              );
              let e = new _.b(u.clan_steamid);
              this.InsertEventModelFromClanEventData(e, u);
            }
            return this.m_mapExistingEvents.get(h);
          }
          async InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
            e,
            t,
            n,
            i,
            o,
            r,
          ) {
            if (n && this.m_mapExistingEvents.has(n))
              return this.m_mapExistingEvents.get(n);
            if (i) {
              if (this.m_mapExistingEvents.has(U + i))
                return this.m_mapExistingEvents.get(U + i);
              if (this.m_mapAnnouncementBodyToEvent.has(i)) {
                const e = this.m_mapAnnouncementBodyToEvent.get(i);
                if (this.m_mapExistingEvents.has(e))
                  return this.m_mapExistingEvents.get(e);
              }
            }
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
              e,
              t,
              n,
              i,
              o,
              r,
            );
          }
          async LoadPartnerEventFromAnnoucementGID(e, t, n) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
              void 0,
              e,
              void 0,
              t,
              n,
            );
          }
          async LoadPartnerEventFromAnnoucementGIDAndClanSteamID(e, t, n, i) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
              e,
              void 0,
              void 0,
              t,
              n,
              i,
            );
          }
          async LoadPartnerEventFromClanEventGID(e, t, n) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
              void 0,
              e,
              t,
              void 0,
              n,
            );
          }
          async LoadPartnerEventFromClanEventGIDAndClanSteamID(e, t, n, i) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
              e,
              void 0,
              t,
              void 0,
              n,
              i,
            );
          }
          async LoadPartnerEventGeneric(e, t, n, i, o) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
              e,
              t,
              n,
              i,
              o,
            );
          }
          async LoadHiddenPartnerEvent(e, t) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
              e,
              null,
              t,
              null,
              0,
              !0,
            );
          }
          async LoadHiddenPartnerEventByAnnouncementGID(e, t) {
            return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
              e,
              null,
              null,
              t,
              0,
              !0,
            );
          }
          async HintLoadImportantUpdates() {
            const e = (0, s.tB)(36e5);
            if (e != this.m_tsUpdatedAppsQueryTime) {
              this.m_tsUpdatedAppsQueryTime = e;
              const t = { page: 1, numPerPage: 500, includeAnnouncements: !1 },
                n = D.TS.STORE_BASE_URL + "updated/ajaxgetmyappsraw",
                i = await r().get(n, { params: t, withCredentials: !0 });
              i.data.apps &&
                i.data.apps.length > 0 &&
                (0, a.h5)(() => {
                  const e = new Map(
                    i.data.apps.map((e) => [e.appid, new K(e)]),
                  );
                  this.m_mapUpdatedApps = e;
                });
            }
            return this.m_mapUpdatedApps;
          }
          GetAppImportantUpdate(e) {
            return (
              this.HintLoadImportantUpdates().catch((e) => {
                console.log("UpdatedApps failed to load: ", e.response.data);
              }),
              this.m_mapUpdatedApps && this.m_mapUpdatedApps.get(e)
            );
          }
          async LoadClanEventLocalizationFromAnnouncementGID(e, t) {
            let n =
              D.TS.COMMUNITY_BASE_URL +
              "gid/" +
              e.ConvertTo64BitString() +
              "/announcements/ajaxgetlocalization/" +
              t;
            return (await r().get(n)).data.localization;
          }
          async LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs(e, t, n) {
            const i = new Array(),
              o = D.TS.STORE_BASE_URL + "events/ajaxgetbatchedpartnerevent/",
              s = Z((0, l.sf)(D.TS.LANGUAGE));
            let c = null,
              m = null;
            if (e) {
              let t = new Array();
              e.forEach((e) => {
                this.m_mapExistingEvents.has(e)
                  ? i.push(this.m_mapExistingEvents.get(e))
                  : t.push(e);
              }),
                t.sort(),
                (c = t);
            }
            if (t) {
              let e = new Array();
              t.forEach((t) => {
                if (
                  this.m_mapAnnouncementBodyToEvent.has(t) &&
                  this.m_mapExistingEvents.has(
                    this.m_mapAnnouncementBodyToEvent.get(t),
                  )
                ) {
                  let e = this.m_mapAnnouncementBodyToEvent.get(t);
                  i.push(this.m_mapExistingEvents.get(e));
                } else e.push(t);
              }),
                e.sort(),
                (m = e);
            }
            if (!c && !m) return i;
            const d = new Array();
            for (; c?.length > 0 || m?.length > 0; ) {
              let e = {
                event_gids:
                  c?.length > 0 ? c?.splice(0, 100).join(",") : void 0,
                announcement_gids:
                  m?.length > 0 ? m?.splice(0, 100).join(",") : void 0,
                lang_list: s,
                origin: self.origin,
              };
              d.push(
                r().get(o, { params: e, cancelToken: n ? n.token : void 0 }),
              );
            }
            try {
              const e = await Promise.all([...d]);
              let t = 0;
              (0, a.h5)(() =>
                e.forEach((e) => {
                  if (e && e.data && e.data.events)
                    for (let t of e.data.events) {
                      let e = this.GetEventLookupKey(t);
                      if (!this.m_mapExistingEvents.has(e)) {
                        let e = new _.b(t.clan_steamid);
                        this.InsertEventModelFromClanEventData(e, t);
                      }
                      i.push(this.m_mapExistingEvents.get(e));
                    }
                  else {
                    const t = (0, E.H)(e);
                    console.error(
                      "LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs partial processing hit error " +
                        t.strErrorMsg,
                      t,
                    );
                  }
                  t += 1;
                }),
              );
            } catch (e) {
              const t = (0, E.H)(e);
              console.error(
                "LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs hit error " +
                  t.strErrorMsg,
                t,
              );
            }
            return i;
          }
          async SavePartnerEventSaleAssets(e, t, n) {
            let i = null;
            if (!this.m_mapExistingEvents.has(t)) return !1;
            try {
              const o = `${D.TS.PARTNER_BASE_URL}promotion/sales/ajaxsaveasset/${e}`,
                a = new FormData();
              a.append("sessionid", D.TS.SESSIONID),
                a.append("gidclanevent", t),
                a.append("json", JSON.stringify(n));
              const s = await r().post(o, a, { withCredentials: !0 });
              if (1 == s?.data?.success) {
                const e = this.m_mapExistingEvents.get(t);
                for (const t in n)
                  n.hasOwnProperty(t) && n[t] && (e.jsondata[t] = n[t]);
                return this.GetPartnerEventChangeCallback(t).Dispatch(e), !0;
              }
              i = (0, E.H)(s);
            } catch (e) {
              i = (0, E.H)(e);
            }
            return (
              console.error(
                "CPartnerEventStore.SavePartnerEventSaleAssets failed: " +
                  i?.strErrorMsg,
                i,
              ),
              !1
            );
          }
        }
        (0, i.Cg)([a.sH], Q.prototype, "m_mapExistingEvents", void 0),
          (0, i.Cg)(
            [a.sH],
            Q.prototype,
            "m_mapAnnouncementBodyToEvent",
            void 0,
          ),
          (0, i.Cg)([a.sH], Q.prototype, "m_mapClanToGIDs", void 0),
          (0, i.Cg)([a.sH], Q.prototype, "m_mapAppIDToGIDs", void 0),
          (0, i.Cg)([a.sH], Q.prototype, "m_mapUpdatedApps", void 0),
          (0, i.Cg)([a.XI], Q.prototype, "Init", null),
          (0, i.Cg)([q.oI], Q.prototype, "GetPartnerEventChangeCallback", null),
          (0, i.Cg)([a.XI], Q.prototype, "RegisterClanEvents", null),
          (0, i.Cg)(
            [a.XI],
            Q.prototype,
            "InsertEventModelFromClanEventData",
            null,
          ),
          (0, i.Cg)([a.XI], Q.prototype, "DeleteClanEvent", null),
          (0, i.Cg)([a.XI], Q.prototype, "RemoveGIDFromList", null),
          (0, i.Cg)([a.XI], Q.prototype, "FlushEventFromCache", null),
          (0, i.Cg)([q.oI], Q.prototype, "SavePartnerEventSaleAssets", null);
        const $ = new Q();
        window.g_PartnerEventStore = $;
      },
      46147: (e, t, n) => {
        "use strict";
        n.d(t, { y: () => u });
        var i = n(34629),
          o = n(45518),
          r = n(76882),
          a = n(8805),
          s = n(28574),
          l = n(69450);
        const c = new a.wd("ReactUsageReporting").Debug,
          m = 1e3 * s.Kp.PerMinute;
        class d {
          m_strProduct;
          m_strVersion;
          m_transport = null;
          m_mapRoutes = new Map();
          m_mapComponents = new Map();
          m_mapActions = new Map();
          m_reportCount = 0;
          m_bInitialized = !1;
          Init(e, t, n) {
            (this.m_bInitialized = !0),
              (this.m_strProduct = e),
              (this.m_strVersion = t),
              (this.m_transport = n),
              this.ScheduleSend();
          }
          ScheduleSend() {
            setTimeout(() => this.CheckSend(), m);
          }
          CheckSend() {
            this.m_reportCount > 0 && this.SendMetrics(), this.ScheduleSend();
          }
          ReportInternal(e, t) {
            t.has(e) || t.set(e, 0),
              t.set(e, t.get(e) + 1),
              this.m_reportCount++,
              this.ShouldSendMetricsImmediately() && this.SendMetrics();
          }
          ReportRouteMatch(e) {
            c("Route match: " + e), this.ReportInternal(e, this.m_mapRoutes);
          }
          ReportTrackedComponent(e) {
            c("Tracked component: " + e),
              this.ReportInternal(e, this.m_mapComponents);
          }
          ReportTrackedAction(e) {
            c("User action: " + e), this.ReportInternal(e, this.m_mapActions);
          }
          ShouldSendMetricsImmediately() {
            return this.m_reportCount >= 100;
          }
          SendMetrics() {
            if (!this.m_bInitialized) return;
            const e = o.w.Init(r.bc);
            e.Body().set_product(this.m_strProduct),
              e.Body().set_version(this.m_strVersion),
              this.m_mapRoutes.forEach((t, n) => {
                let i = new r.N4();
                i.set_route(n), i.set_count(t), e.Body().add_routes(i);
              }),
              this.m_mapComponents.forEach((t, n) => {
                let i = new r.Zd();
                i.set_component(n), i.set_count(t), e.Body().add_components(i);
              }),
              this.m_mapActions.forEach((t, n) => {
                let i = new r.Ys();
                i.set_action(n), i.set_count(t), e.Body().add_actions(i);
              }),
              this.m_mapRoutes.clear(),
              this.m_mapComponents.clear(),
              this.m_mapActions.clear(),
              (this.m_reportCount = 0),
              r._5.ReportReactUsage(this.m_transport, e);
          }
          get version() {
            return this.m_strVersion;
          }
          get product() {
            return this.m_strProduct;
          }
        }
        (0, i.Cg)([l.o], d.prototype, "CheckSend", null);
        const u = new d();
      },
      69756: (e, t, n) => {
        "use strict";
        n.d(t, { A: () => M });
        var i = n(34629),
          o = n(89193),
          r = n(45518),
          a = n(38012),
          s = n(53384),
          l = n(75356),
          c = n(77765),
          m = n(10672),
          d = n(17070),
          u = n(50669);
        n(9506);
        function h(e, t) {
          e.Body().set_context(p(t));
        }
        function p(e) {
          let t = new l.TS();
          return (
            e || t.set_country_code(d.TS.COUNTRY),
            t.set_language(d.TS.LANGUAGE),
            d.TS.EREALM != u.TU.k_ESteamRealmUnknown &&
              t.set_steam_realm(d.TS.EREALM),
            t
          );
        }
        function _(e, t) {
          e.Body().set_data_request(l.gn.fromObject(t));
        }
        var g = n(12829),
          C = n(74002),
          f = n(21400);
        function S(e) {
          return (function (e, t, n, i) {
            switch (e) {
              case "date_full":
                return (0, C.$z)(t);
              case "date_month":
                return (0, f.sq)(new Date(1e3 * t));
              case "date_quarter":
                return (0, f.u6)(new Date(1e3 * t), i);
              case "date_year":
                return (0, f.vl)(new Date(1e3 * t));
              case "text_comingsoon":
                return n || (0, C.we)("#Store_ComingSoon_ComingSoon");
              case "text_tba":
                return n || (0, C.we)("#Store_ComingSoon_TBA");
              default:
                return "";
            }
          })(
            e.coming_soon_display,
            e.steam_release_date,
            e.custom_release_date_message,
          );
        }
        class v {
          m_eItemType;
          m_unID;
          m_bVisible = !1;
          m_strName;
          m_strStoreURLPath;
          m_unAppID;
          m_eAppType;
          m_rgIncludedAppTypes;
          m_rgIncludedAppIDs;
          m_bIsFree;
          m_bIsFreeTemporary;
          m_bIsComingSoon;
          m_bIsEarlyAccess;
          m_RelatedItems;
          m_ContentDescriptorIDs;
          m_StoreCategories;
          m_ReviewInfo;
          m_BasicInfo;
          m_rgStoreTags = [];
          m_rgStoreTagIDs = [];
          m_Assets;
          m_AssetsWithoutOverrides;
          m_ReleaseInfo;
          m_Platforms;
          m_BestPurchaseOption;
          m_SelfPurchaseOption;
          m_rgPurchaseOptions;
          m_Screenshots;
          m_Trailers;
          m_rgSupportedLanguages;
          m_strStoreURLPathOverride;
          m_freeWeekend;
          m_DataRequested = { include_tag_count: 0 };
          m_strInternalName;
          m_rgLinks;
          constructor(e, t) {
            (this.m_eItemType = e.item_type()),
              (this.m_unID = e.id()),
              (this.m_bVisible = !!e.visible()),
              (this.m_strName = e.name()),
              (this.m_strStoreURLPath = e.store_url_path()),
              (this.m_unAppID = e.appid()),
              (this.m_eAppType = e.type()),
              (this.m_rgIncludedAppTypes = e.included_types()),
              (this.m_rgIncludedAppIDs = e.included_appids()),
              (this.m_bIsFree = !!e.is_free()),
              (this.m_bIsFreeTemporary = !!e.is_free_temporarily()),
              (this.m_bIsComingSoon = !!e.is_coming_soon()),
              (this.m_bIsEarlyAccess = !!e.is_early_access()),
              (this.m_RelatedItems = e.related_items()?.toObject()),
              (this.m_ContentDescriptorIDs = e.content_descriptorids()),
              (this.m_StoreCategories = e.categories().toObject()),
              (this.m_BestPurchaseOption = e
                .best_purchase_option()
                ?.toObject()),
              (this.m_strStoreURLPathOverride = e.store_url_path_override()),
              (this.m_freeWeekend = e.free_weekend()?.toObject()),
              (this.m_strInternalName = e.internal_name()),
              (1 != this.m_eItemType && 2 != this.m_eItemType) ||
                (this.m_SelfPurchaseOption = e.self_purchase_option(!1)
                  ? e.self_purchase_option().toObject()
                  : this.m_BestPurchaseOption),
              this.MergeData(e, t);
          }
          MergeData(e, t) {
            t.include_assets &&
              !this.m_Assets &&
              ((this.m_Assets = new I(e.assets(), e.id())),
              (this.m_DataRequested.include_assets = !0)),
              t.include_assets_without_overrides &&
                !this.m_AssetsWithoutOverrides &&
                ((this.m_AssetsWithoutOverrides = new I(
                  e.assets_without_overrides(),
                  e.id(),
                )),
                (this.m_DataRequested.include_assets_without_overrides = !0)),
              t.include_release &&
                !this.m_ReleaseInfo &&
                ((this.m_ReleaseInfo = e.release().toObject()),
                (this.m_DataRequested.include_release = !0)),
              t.include_platforms &&
                !this.m_Platforms &&
                ((this.m_Platforms = e.platforms().toObject()),
                (this.m_DataRequested.include_platforms = !0)),
              t.include_all_purchase_options &&
                !this.m_rgPurchaseOptions &&
                ((this.m_rgPurchaseOptions = e
                  .purchase_options()
                  .map((e) => e.toObject())),
                (this.m_DataRequested.include_all_purchase_options = !0)),
              t.include_screenshots &&
                !this.m_Screenshots &&
                ((this.m_Screenshots = new E(e.screenshots())),
                (this.m_DataRequested.include_screenshots = !0)),
              t.include_trailers &&
                !this.m_Trailers &&
                ((this.m_Trailers = new w(e.trailers())),
                (this.m_DataRequested.include_trailers = !0)),
              t.include_tag_count &&
                t.include_tag_count > this.m_rgStoreTags.length &&
                this.m_DataRequested.include_tag_count < t.include_tag_count &&
                ((this.m_rgStoreTags = e.tags().map((e) => e.toObject())),
                (this.m_rgStoreTagIDs = this.m_rgStoreTags.map((e) => e.tagid)),
                (this.m_DataRequested.include_tag_count = Math.max(
                  t.include_tag_count,
                  this.m_rgStoreTags.length || 0,
                ))),
              t.include_reviews &&
                !this.m_ReviewInfo &&
                ((this.m_ReviewInfo = e.reviews().toObject()),
                (this.m_DataRequested.include_reviews = !0)),
              t.include_basic_info &&
                !this.m_BasicInfo &&
                ((this.m_BasicInfo = e.basic_info().toObject()),
                (this.m_DataRequested.include_basic_info = !0)),
              t.include_supported_languages &&
                !this.m_rgSupportedLanguages &&
                ((this.m_rgSupportedLanguages = e
                  .supported_languages()
                  .map((e) => e.toObject())),
                (this.m_DataRequested.include_supported_languages = !0)),
              t.include_links &&
                !this.m_rgLinks &&
                ((this.m_rgLinks = e.links().map((e) => e.toObject())),
                (this.m_DataRequested.include_links = !0));
          }
          static BDataRequestContainsOtherDataRequest(e, t) {
            return Boolean(
              (!t.include_assets || e.include_assets) &&
                (!t.include_assets_without_overrides ||
                  e.include_assets_without_overrides) &&
                (!t.include_release || e.include_release) &&
                (!t.include_platforms || e.include_platforms) &&
                (!t.include_all_purchase_options ||
                  e.include_all_purchase_options) &&
                (!t.include_screenshots || e.include_screenshots) &&
                (!t.include_trailers || e.include_trailers) &&
                (!t.include_ratings || e.include_ratings) &&
                (!t.include_tag_count ||
                  (e.include_tag_count || 0) >= t.include_tag_count) &&
                (!t.include_reviews || e.include_reviews) &&
                (!t.include_basic_info || e.include_basic_info) &&
                (!t.include_supported_languages ||
                  e.include_supported_languages) &&
                (!t.include_links || e.include_links),
            );
          }
          BContainDataRequest(e) {
            return v.BDataRequestContainsOtherDataRequest(
              this.m_DataRequested,
              e,
            );
          }
          BCheckDataRequestIncluded(e) {
            ("dev" != d.TS.WEB_UNIVERSE && "beta" != d.TS.WEB_UNIVERSE) ||
              (0, c.w)(
                this.BContainDataRequest(e),
                `Requested data without for ${(0, g.Rz)(this.m_eItemType)} @ ${this.m_unID}`,
                e,
                this.m_DataRequested,
              );
          }
          GetStoreItemType() {
            return this.m_eItemType;
          }
          GetID() {
            return this.m_unID;
          }
          GetUniqueID() {
            return this.m_eItemType + "_" + this.m_unID;
          }
          BIsVisible() {
            return this.m_bVisible;
          }
          GetName() {
            return this.m_strName;
          }
          GetStorePageURL(e = !1) {
            return e && this.HasDemoStandaloneStorePage()
              ? d.TS.STORE_BASE_URL +
                  "app/" +
                  this.GetDemoStandaloneStorePageAppIDs()[0]
              : d.TS.STORE_BASE_URL + this.m_strStoreURLPath;
          }
          GetStorePageURLWithOverride() {
            return this.m_strStoreURLPathOverride &&
              this.m_strStoreURLPathOverride.length > 0
              ? this.GetStorePageURLOverride()
              : this.GetStorePageURL();
          }
          GetStorePageURLOverride() {
            return this.m_strStoreURLPathOverride;
          }
          GetCommunityPageURL() {
            return this.GetAppID()
              ? d.TS.COMMUNITY_BASE_URL + "app/" + this.GetAppID()
              : null;
          }
          GetCommunityDiscussionForumsURL() {
            return this.GetAppID()
              ? d.TS.COMMUNITY_BASE_URL +
                  "app/" +
                  this.GetAppID() +
                  "/discussions/"
              : null;
          }
          GetAppID() {
            return this.m_unAppID;
          }
          GetAppIDToRun() {
            const e = this.GetParentAppID();
            return e && 11 != this.m_eAppType ? e : this.GetAppID();
          }
          GetAppType() {
            return this.m_eAppType;
          }
          BIsApplicationOrTool() {
            return 6 == this.GetAppType() || 13 == this.GetAppType();
          }
          k_regexSalePage =
            /^https?:\/\/[^\/]*(?:valvesoftware|steampowered).com\/(?:(curator|dev|developer|pub|publisher|franchise)\/[0-9a-zA-Z\-_]+\/)?sale\//;
          BIsSalePage() {
            return (
              0 === this.GetStoreItemType() &&
              this.k_regexSalePage.test(this.GetStorePageURLWithOverride())
            );
          }
          GetSalePageVanityURL() {
            let e = this.GetStorePageURLWithOverride();
            return (
              0 === this.GetStoreItemType() &&
                ((e = this.GetStorePageURLWithOverride().replace(
                  this.k_regexSalePage,
                  "",
                )),
                e.endsWith("/") && (e = e.replace("/", ""))),
              e
            );
          }
          GetIncludedAppTypes() {
            return this.m_rgIncludedAppTypes;
          }
          GetIncludedAppIDs() {
            return this.m_rgIncludedAppIDs;
          }
          GetIncludedAppIDsOrSelf() {
            return 0 == this.GetStoreItemType()
              ? [this.GetID()]
              : this.GetIncludedAppIDs();
          }
          BIsFree() {
            return this.m_bIsFree;
          }
          BIsFreeTemporary() {
            return this.m_bIsFreeTemporary;
          }
          BIsFreeWeekend() {
            const e = Date.now() / 1e3;
            return (
              Boolean(this.m_freeWeekend) &&
              this.m_freeWeekend.start_time <= e &&
              e <= this.m_freeWeekend.end_time
            );
          }
          GetFreeWeekendEnd() {
            return this.m_freeWeekend?.end_time;
          }
          GetFreeWeekendPlayTextOverride() {
            return this.m_freeWeekend?.text;
          }
          BIsEarlyAccess() {
            return this.m_bIsEarlyAccess;
          }
          GetParentAppID() {
            return this.m_RelatedItems?.parent_appid;
          }
          BHasDemo() {
            return (this.m_RelatedItems?.demo_appid?.length ?? 0) > 0;
          }
          GetDemoAppIDs() {
            return this.m_RelatedItems?.demo_appid ?? [];
          }
          HasDemoStandaloneStorePage() {
            return (
              (this.m_RelatedItems?.standalone_demo_appid?.length ?? 0) > 0
            );
          }
          GetDemoStandaloneStorePageAppIDs() {
            return this.m_RelatedItems?.standalone_demo_appid ?? [];
          }
          GetContentDescriptorIDs() {
            return this.m_ContentDescriptorIDs;
          }
          HasContentDescriptorID(e) {
            return this.m_ContentDescriptorIDs?.includes(e);
          }
          GetStoreCategories_SupportedPlayers() {
            return this.m_StoreCategories?.supported_player_categoryids || [];
          }
          GetStoreCategories_Features() {
            return this.m_StoreCategories?.feature_categoryids || [];
          }
          GetStoreCategories_Controller() {
            return this.m_StoreCategories?.controller_categoryids || [];
          }
          BHasStoreCategory(e) {
            return Boolean(
              this.GetStoreCategories_SupportedPlayers().find((t) => e === t) ||
                this.GetStoreCategories_Features().find((t) => e === t) ||
                this.GetStoreCategories_Controller().find((t) => e === t),
            );
          }
          GetFilteredReviewSummary() {
            return (
              this.BCheckDataRequestIncluded({ include_reviews: !0 }),
              this.m_ReviewInfo?.summary_filtered
            );
          }
          GetUnfilteredReviewSummary() {
            return (
              this.BCheckDataRequestIncluded({ include_reviews: !0 }),
              this.m_ReviewInfo?.summary_unfiltered ||
                this.m_ReviewInfo?.summary_filtered
            );
          }
          GetShortDescription() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo?.short_description ?? ""
            );
          }
          GetDeveloperNames() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo?.developers
                ?.map((e) => e.name.trim())
                ?.filter((e) => e?.length > 0) ?? []
            );
          }
          GetFranchiseNames() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo?.franchises
                ?.map((e) => e.name.trim())
                ?.filter((e) => e?.length > 0) ?? []
            );
          }
          GetPublisherNames() {
            this.BCheckDataRequestIncluded({ include_basic_info: !0 });
            const e =
              this.m_BasicInfo?.publishers
                ?.map((e) => e.name.trim())
                ?.filter((e) => e?.length > 0) ?? [];
            return e?.length > 0 ? e : this.GetDeveloperNames();
          }
          GetAllCreatorClanIDs() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo
                ? b([
                    ...this.m_BasicInfo.developers,
                    ...this.m_BasicInfo.publishers,
                    ...this.m_BasicInfo.franchises,
                  ])
                : []
            );
          }
          GetAllPublisherCreatorClans() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo ? b(this.m_BasicInfo.publishers) : []
            );
          }
          GetAllDeveloperCreatorClans() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo ? b(this.m_BasicInfo.developers) : []
            );
          }
          GetAllFranchiseCreatorClans() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo ? b(this.m_BasicInfo.franchises) : []
            );
          }
          GetCapsuleHeadline() {
            return (
              this.BCheckDataRequestIncluded({ include_basic_info: !0 }),
              this.m_BasicInfo?.capsule_headline
            );
          }
          GetTags() {
            return (
              this.BCheckDataRequestIncluded({ include_tag_count: 1 }),
              this.m_rgStoreTags
            );
          }
          GetTagIDs() {
            return (
              this.BCheckDataRequestIncluded({ include_tag_count: 1 }),
              this.m_rgStoreTagIDs
            );
          }
          BHasTags() {
            return (
              this.BCheckDataRequestIncluded({ include_tag_count: 1 }),
              this.m_rgStoreTagIDs?.length > 0
            );
          }
          GetAssets() {
            return (
              this.BCheckDataRequestIncluded({ include_assets: !0 }),
              this.m_Assets
            );
          }
          GetAssetsWithoutOverrides() {
            return (
              this.BCheckDataRequestIncluded({
                include_assets_without_overrides: !0,
              }),
              this.m_AssetsWithoutOverrides
            );
          }
          GetOriginalReleaseDateRTime() {
            this.BCheckDataRequestIncluded({ include_release: !0 });
            let e = this.m_ReleaseInfo?.original_steam_release_date;
            return e || (e = this.GetReleaseDateRTime()), e;
          }
          GetReleaseDateRTime(e = !1) {
            if (
              (this.BCheckDataRequestIncluded({ include_release: !0 }),
              this.m_ReleaseInfo?.is_coming_soon && !e)
            )
              return 0;
            let t = this.m_ReleaseInfo?.steam_release_date;
            return t || (t = this.m_ReleaseInfo?.original_release_date), t;
          }
          GetFormattedSteamReleaseDate() {
            if (
              (this.BCheckDataRequestIncluded({ include_release: !0 }),
              this.m_ReleaseInfo?.is_coming_soon)
            ) {
              if (this.m_ReleaseInfo?.coming_soon_display)
                return S(this.m_ReleaseInfo);
              if (this.m_ReleaseInfo?.custom_release_date_message)
                return this.m_ReleaseInfo.custom_release_date_message;
              const e = this.m_ReleaseInfo?.steam_release_date;
              return e
                ? this.m_ReleaseInfo?.is_abridged_release_date
                  ? (0, f.sq)(new Date(1e3 * e))
                  : (0, C.$z)(e)
                : "";
            }
            const e = this.GetReleaseDateRTime();
            return e ? (0, C.$z)(e) : "";
          }
          BIsComingSoon() {
            return this.m_bIsComingSoon;
          }
          BIsCustomComingSoonDisplay() {
            return (
              this.BCheckDataRequestIncluded({ include_release: !0 }),
              !!this.BIsComingSoon() &&
                (this.m_ReleaseInfo?.coming_soon_display
                  ? ["text_tba", "text_comingsoon"].includes(
                      this.m_ReleaseInfo.coming_soon_display,
                    )
                  : !!this.m_ReleaseInfo?.custom_release_date_message)
            );
          }
          BIsPrePurchase() {
            return (
              this.BIsComingSoon() &&
              Boolean(this.GetBestPurchaseOption()?.packageid)
            );
          }
          BIsReleased() {
            return !this.BIsComingSoon();
          }
          GetPlatforms() {
            return (
              this.BCheckDataRequestIncluded({ include_platforms: !0 }),
              this.m_Platforms
            );
          }
          GetBestPurchaseOption() {
            return this.m_BestPurchaseOption;
          }
          GetBestPurchasePriceInCents() {
            if (this.m_BestPurchaseOption?.final_price_in_cents)
              return Number.parseInt(
                this.m_BestPurchaseOption.final_price_in_cents,
              );
          }
          GetBestPurchasePriceFormatted() {
            return this.m_BestPurchaseOption?.formatted_final_price;
          }
          GetBestPurchaseOriginalPriceInCents() {
            return this.m_BestPurchaseOption?.original_price_in_cents
              ? Number.parseInt(this.m_BestPurchaseOption.final_price_in_cents)
              : this.GetBestPurchasePriceInCents();
          }
          GetBestPurchaseOriginalPriceFormatted() {
            return (
              this.m_BestPurchaseOption?.formatted_original_price ??
              this.m_BestPurchaseOption?.formatted_final_price
            );
          }
          GetAllPurchaseOptions() {
            return (
              this.BCheckDataRequestIncluded({
                include_all_purchase_options: !0,
              }),
              this.m_rgPurchaseOptions
            );
          }
          GetSelfPurchaseOption() {
            return this.m_SelfPurchaseOption;
          }
          BHasAgeSafeScreenshots() {
            return this.GetOnlyAllAgesSafeScreenshots().length > 0;
          }
          GetOnlyAllAgesSafeScreenshots() {
            return (
              this.BCheckDataRequestIncluded({ include_screenshots: !0 }),
              this.m_Screenshots?.GetOnlyAllAgesScreenshots() || []
            );
          }
          GetBothAllAgesSafeAndMatureScreenshots() {
            return (
              this.BCheckDataRequestIncluded({ include_screenshots: !0 }),
              this.m_Screenshots?.GetAllAgesAndMatureScreenshots() || []
            );
          }
          BHasTrailers() {
            return (
              this.BCheckDataRequestIncluded({ include_trailers: !0 }),
              this.m_Trailers?.BHasTrailers()
            );
          }
          BHasHighlightTrailers() {
            return (
              this.BCheckDataRequestIncluded({ include_trailers: !0 }),
              (this.m_Trailers?.GetHighlightTrailers()?.length ?? 0) > 0
            );
          }
          GetAllTrailers() {
            return (
              this.BCheckDataRequestIncluded({ include_trailers: !0 }),
              this.m_Trailers
            );
          }
          BHasSomeLanguageSupport(e) {
            return (
              this.BCheckDataRequestIncluded({
                include_supported_languages: !0,
              }),
              this.m_rgSupportedLanguages?.some(
                (t) =>
                  t.elanguage == e &&
                  (t.supported || t.subtitles || t.full_audio),
              ) || !1
            );
          }
          GetAllLanguagesWithSomeSupport() {
            return (
              this.BCheckDataRequestIncluded({
                include_supported_languages: !0,
              }),
              this.m_rgSupportedLanguages
                ?.filter((e) => e.supported || e.subtitles || e.full_audio)
                .map((e) => e.elanguage) || []
            );
          }
          GetDataRequest() {
            return this.m_DataRequested;
          }
          GetMicroTrailer() {
            this.BCheckDataRequestIncluded({ include_trailers: !0 });
            let e = null;
            return (
              this.m_Trailers &&
                (this.m_Trailers.GetHighlightTrailers().forEach((t) => {
                  !e && t.GetMicroTrailer() && (e = t.GetMicroTrailer());
                }),
                e ||
                  this.m_Trailers.GetOtherTrailers().forEach((t) => {
                    !e && t.GetMicroTrailer() && (e = t.GetMicroTrailer());
                  })),
              e
            );
          }
          GetLinks() {
            return (
              this.BCheckDataRequestIncluded({ include_links: !0 }),
              this.m_rgLinks
            );
          }
          ReplaceBestPurchaseOption(e) {
            this.m_BestPurchaseOption = e;
          }
          GetInternalName() {
            return this.m_strInternalName;
          }
        }
        function b(e) {
          if (!e?.length) return [];
          const t = e.map((e) => e.creator_clan_account_id).filter((e) => !!e);
          return Array.from(new Set(t));
        }
        class I {
          m_strMainCapsuleURL;
          m_strSmallCapsuleURL;
          m_strHeaderURL;
          m_strPackageHeaderURL;
          m_strPageBackgroundURL;
          m_strHeroCapsuleURL;
          m_strHeroCapsuleURL_2x;
          m_strLibraryCapsuleURL;
          m_strLibraryCapsuleURL_2x;
          m_strLibraryHeroURL;
          m_strLibraryHeroURL_2x;
          m_strCommunityIcon;
          m_strCommunityIcon_Full;
          constructor(e, t) {
            const n = e.asset_url_format();
            n &&
              (e.main_capsule() &&
                (this.m_strMainCapsuleURL = this.ConstructAssetURL(
                  n,
                  e.main_capsule(),
                )),
              e.small_capsule() &&
                (this.m_strSmallCapsuleURL = this.ConstructAssetURL(
                  n,
                  e.small_capsule(),
                )),
              e.header() &&
                (this.m_strHeaderURL = this.ConstructAssetURL(n, e.header())),
              e.package_header() &&
                (this.m_strPackageHeaderURL = this.ConstructAssetURL(
                  n,
                  e.package_header(),
                )),
              e.page_background() &&
                (this.m_strPageBackgroundURL = this.ConstructAssetURL(
                  n,
                  e.page_background(),
                )),
              e.hero_capsule() &&
                (this.m_strHeroCapsuleURL = this.ConstructAssetURL(
                  n,
                  e.hero_capsule(),
                )),
              e.hero_capsule_2x() &&
                (this.m_strHeroCapsuleURL_2x = this.ConstructAssetURL(
                  n,
                  e.hero_capsule_2x(),
                )),
              e.library_capsule() &&
                (this.m_strLibraryCapsuleURL = this.ConstructAssetURL(
                  n,
                  e.library_capsule(),
                )),
              e.library_capsule_2x() &&
                (this.m_strLibraryCapsuleURL_2x = this.ConstructAssetURL(
                  n,
                  e.library_capsule_2x(),
                )),
              e.library_hero() &&
                (this.m_strLibraryHeroURL = this.ConstructAssetURL(
                  n,
                  e.library_hero(),
                )),
              e.library_hero_2x() &&
                (this.m_strLibraryHeroURL_2x = this.ConstructAssetURL(
                  n,
                  e.library_hero_2x(),
                ))),
              e.community_icon() &&
                ((this.m_strCommunityIcon = `${d.TS.MEDIA_CDN_COMMUNITY_URL}images/apps/${t}/${e.community_icon()}.jpg`),
                (this.m_strCommunityIcon_Full = `${d.TS.MEDIA_CDN_COMMUNITY_URL}images/apps/${t}/${e.community_icon()}_full.jpg`));
          }
          GetMainCapsuleURL() {
            return this.m_strMainCapsuleURL;
          }
          GetSmallCapsuleURL() {
            return this.m_strSmallCapsuleURL;
          }
          GetHeaderURL() {
            return this.m_strHeaderURL;
          }
          GetPackageHeaderURL() {
            return this.m_strPackageHeaderURL;
          }
          GetPageBackgroundURL() {
            return this.m_strPageBackgroundURL;
          }
          GetHeroCapsuleURL() {
            return this.m_strHeroCapsuleURL;
          }
          GetHeroCapsuleURL_2x() {
            return this.m_strHeroCapsuleURL_2x;
          }
          GetLibraryCapsuleURL() {
            return this.m_strLibraryCapsuleURL;
          }
          GetLibraryCapsuleURL_2x() {
            return this.m_strLibraryCapsuleURL_2x;
          }
          GetLibraryHeroURL() {
            return this.m_strLibraryHeroURL;
          }
          GetLibraryHeroURL_2x() {
            return this.m_strLibraryHeroURL_2x;
          }
          ConstructAssetURL(e, t) {
            return (
              d.TS.BASE_URL_SHARED_CDN +
              "/store_item_assets/" +
              e.replace("${FILENAME}", t)
            );
          }
          GetCommunityIconURL() {
            return this.m_strCommunityIcon;
          }
          GetCommunityIconURL_Full() {
            return this.m_strCommunityIcon_Full;
          }
        }
        class w {
          m_mapTrailer = new Map();
          m_higherTrailers = new Array();
          m_otherTrailers = new Array();
          constructor(e) {
            e.highlights() &&
              e.highlights().forEach((e) => {
                let t = new y(e);
                this.m_mapTrailer.set(t.GetTrailerID(), t),
                  this.m_higherTrailers.push(t);
              }),
              e.other_trailers() &&
                e.other_trailers().forEach((e) => {
                  let t = new y(e);
                  this.m_mapTrailer.set(t.GetTrailerID(), t),
                    this.m_otherTrailers.push(t);
                });
          }
          BHasTrailers() {
            return (
              this.m_higherTrailers.length > 0 ||
              this.m_otherTrailers.length > 0
            );
          }
          GetHighlightTrailers() {
            return this.m_higherTrailers;
          }
          GetOtherTrailers() {
            return this.m_otherTrailers;
          }
          GetTrailerByID(e) {
            return this.m_mapTrailer.get(e);
          }
        }
        class y {
          m_strTrailerName;
          m_eTrailerCategory;
          m_nBaseID;
          m_Trailer480p;
          m_TrailerMax;
          m_MicroTrailer;
          m_strScreenshotMedium;
          m_strScreenshotFull;
          constructor(e) {
            (this.m_strTrailerName = e.trailer_name()),
              (this.m_nBaseID = e.trailer_base_id()),
              (this.m_eTrailerCategory = e.trailer_category());
            const t = e.trailer_url_format();
            t &&
              (e.trailer_480p() &&
                (this.m_Trailer480p = this.ExtractTrailerFormats(
                  t,
                  e.trailer_480p(),
                )),
              e.trailer_max() &&
                (this.m_TrailerMax = this.ExtractTrailerFormats(
                  t,
                  e.trailer_max(),
                )),
              e.microtrailer() &&
                (this.m_MicroTrailer = this.ExtractTrailerFormats(
                  t,
                  e.microtrailer(),
                )),
              e.screenshot_medium() &&
                (this.m_strScreenshotMedium = this.ConstructScreenshotURL(
                  t,
                  e.screenshot_medium(),
                )),
              e.screenshot_full() &&
                (this.m_strScreenshotFull = this.ConstructScreenshotURL(
                  t,
                  e.screenshot_full(),
                )));
          }
          GetName() {
            return this.m_strTrailerName;
          }
          GetTrailerID() {
            return this.m_nBaseID;
          }
          GetTrailerCategory() {
            return this.m_eTrailerCategory;
          }
          GetTrailer480p() {
            return this.m_Trailer480p;
          }
          GetTrailerMax() {
            return this.m_TrailerMax;
          }
          GetMicroTrailer() {
            return this.m_MicroTrailer;
          }
          GetScreenshot() {
            return this.m_strScreenshotFull
              ? this.m_strScreenshotFull
              : this.m_strScreenshotMedium;
          }
          ExtractTrailerFormats(e, t) {
            let n = {};
            return (
              t.forEach((t) => {
                "video/mp4" == t.type()
                  ? (n.strMP4URL = this.ConstructAssetURL(e, t.filename()))
                  : "video/webm" == t.type() &&
                    (n.strWebMURL = this.ConstructAssetURL(e, t.filename()));
              }),
              n
            );
          }
          ConstructScreenshotURL(e, t) {
            return (
              d.TS.BASE_URL_SHARED_CDN +
              "/store_item_assets/" +
              e.replace("${FILENAME}", t)
            );
          }
          ConstructAssetURL(e, t) {
            return (
              d.TS.VIDEO_CDN_URL +
              "/store_trailers/" +
              e.replace("${FILENAME}", t)
            );
          }
        }
        class E {
          m_rgAllScreenshots = new Array();
          m_rgOnlyAllAgesScreenshots = new Array();
          constructor(e) {
            let t = 0,
              n = 0;
            const i = e.all_ages_screenshots() || [],
              o = e.mature_content_screenshots() || [];
            for (; t < i.length || n < o.length; ) {
              let e = t < i.length;
              if (t < i.length && n < o.length) {
                e = i[t].ordinal() < o[n].ordinal();
              }
              if (e) {
                const e =
                  d.TS.BASE_URL_SHARED_CDN +
                  "/store_item_assets/" +
                  i[t].filename();
                this.m_rgAllScreenshots.push(e),
                  this.m_rgOnlyAllAgesScreenshots.push(e),
                  (t += 1);
              } else {
                const e =
                  d.TS.BASE_URL_SHARED_CDN +
                  "/store_item_assets/" +
                  o[n].filename();
                this.m_rgAllScreenshots.push(e), (n += 1);
              }
            }
          }
          GetAllAgesAndMatureScreenshots() {
            return this.m_rgAllScreenshots;
          }
          GetOnlyAllAgesScreenshots() {
            return this.m_rgOnlyAllAgesScreenshots;
          }
        }
        var D = n(69450);
        function A(e, t) {
          if (!e) return t;
          if (!t) return e;
          return {
            include_assets: e.include_assets || t.include_assets,
            include_release: e.include_release || t.include_release,
            include_platforms: e.include_platforms || t.include_platforms,
            include_all_purchase_options:
              e.include_all_purchase_options || t.include_all_purchase_options,
            include_screenshots: e.include_screenshots || t.include_screenshots,
            include_trailers: e.include_trailers || t.include_trailers,
            include_ratings: e.include_ratings || t.include_ratings,
            include_tag_count:
              Math.max(e.include_tag_count || 0, t.include_tag_count || 0) ||
              void 0,
            include_reviews: e.include_reviews || t.include_reviews,
            include_basic_info: e.include_basic_info || t.include_basic_info,
            include_supported_languages:
              e.include_supported_languages || t.include_supported_languages,
            include_full_description:
              e.include_full_description || t.include_full_description,
            include_included_items:
              e.include_included_items || t.include_included_items,
            include_assets_without_overrides:
              e.include_assets_without_overrides ||
              t.include_assets_without_overrides,
            apply_user_filters: e.apply_user_filters || t.apply_user_filters,
            include_links: e.include_links || t.include_links,
          };
        }
        async function T(e, t) {
          const n = await e,
            i = await t;
          return 1 != n ? n : i;
        }
        class M {
          k_QueueWaitUntilRequestMS = 5;
          k_nMaxBatchSize = 250;
          m_bReturnUnavailableItems = !1;
          m_mapApps = new Map();
          m_mapPackages = new Map();
          m_mapBundles = new Map();
          m_mapTags = new Map();
          m_mapCreators = new Map();
          m_mapHubCategories = new Map();
          m_setUnavailableApps = new Set();
          m_setUnavailablePackages = new Set();
          m_setUnavailableBundles = new Set();
          m_setUnavailableTags = new Set();
          m_setUnavailableCreators = new Set();
          m_setUnavailableHubCategories = new Set();
          m_setUnavailableDueToCountryRestrictionApps = new Set();
          m_setUnavailableDueToCountryRestrictionPackages = new Set();
          m_setUnavailableDueToCountryRestrictionBundles = new Set();
          m_mapAppsInFlight = new Map();
          m_mapPackageInFlight = new Map();
          m_mapBundleInFlight = new Map();
          m_mapTagsInFlight = new Map();
          m_mapCreatorsInFlight = new Map();
          m_mapHubCategoriesInFlight = new Map();
          m_serviceTransport;
          m_bUsePartnerAPI = !1;
          m_bInitialized = !1;
          m_bActivelyResettingCache = !1;
          m_setPendingAppInfo = new Set();
          m_setPendingBundleInfo = new Set();
          m_setPendingPackageInfo = new Set();
          m_setPendingTagInfo = new Set();
          m_setPendingCreatorInfo = new Set();
          m_setPendingHubCategoryInfo = new Set();
          m_setPendingDataRequest = {};
          m_PendingInfoPromise;
          m_PendingInfoResolve = void 0;
          m_PendingTimer = void 0;
          k_AlreadyResolvedOK = Promise.resolve(1);
          k_AlreadyResolvedInvalid = Promise.resolve(8);
          k_AlreadyResolvedBusy = Promise.resolve(10);
          static sm_instance;
          static Get() {
            return (
              M.sm_instance ||
                ((M.sm_instance = new M()),
                (window.StoreItemCache = M.sm_instance)),
              M.sm_instance
            );
          }
          static Initialize(e, t) {
            const n = M.Get();
            return (
              (0, c.w)(
                !n.m_bInitialized,
                "CStoreItemCache was already initialized; initialize it only once.",
              ),
              (n.m_serviceTransport = e),
              (n.m_bUsePartnerAPI = !!t),
              (n.m_bInitialized = !0),
              () => {
                (n.m_serviceTransport = void 0),
                  (n.m_bUsePartnerAPI = !1),
                  (n.m_bInitialized = !1);
              }
            );
          }
          SetSteamInterface(e) {
            this.SetServiceTransport(e.GetServiceTransport());
          }
          SetServiceTransport(e) {
            this.m_serviceTransport = e;
          }
          SetReturnUnavailableItems(e) {
            this.m_bReturnUnavailableItems = e;
          }
          GetReturnUnavailableItems() {
            return this.m_bReturnUnavailableItems;
          }
          async ResetCache() {
            (this.m_bActivelyResettingCache = !0), this.FlushPendingInfo();
            let e = [];
            this.m_mapAppsInFlight.forEach((t) => {
              e.push(t.promise);
            }),
              this.m_mapBundleInFlight.forEach((t) => {
                e.push(t.promise);
              }),
              this.m_mapPackageInFlight.forEach((t) => {
                e.push(t.promise);
              }),
              this.m_mapTagsInFlight.forEach((t) => {
                e.push(t.promise);
              }),
              this.m_mapCreatorsInFlight.forEach((t) => {
                e.push(t.promise);
              }),
              this.m_mapHubCategoriesInFlight.forEach((t) => {
                e.push(t.promise);
              }),
              await Promise.all(e),
              this.m_mapApps.clear(),
              this.m_mapBundles.clear(),
              this.m_mapPackages.clear(),
              this.m_mapTagsInFlight.clear(),
              this.m_mapCreatorsInFlight.clear(),
              this.m_mapHubCategoriesInFlight.clear(),
              (this.m_bActivelyResettingCache = !1);
          }
          static BIsInitialized() {
            return M.Get().m_bInitialized;
          }
          static k_DataRequest_CommonOnly = {};
          static k_DataRequest_BasicInfo = { include_basic_info: !0 };
          static k_DataRequest_Assets = { include_assets: !0 };
          static k_DataRequest_IncludeAll = {
            include_assets: !0,
            include_release: !0,
            include_platforms: !0,
            include_all_purchase_options: !0,
            include_screenshots: !0,
            include_trailers: !0,
            include_ratings: !0,
            include_tag_count: 20,
            include_reviews: !0,
            include_basic_info: !0,
            include_supported_languages: !0,
            include_links: !0,
          };
          async QueueAppRequest(e, t) {
            return this.QueueStoreItemRequest(e, 0, t);
          }
          async QueuePackageRequest(e, t) {
            return this.QueueStoreItemRequest(e, 1, t);
          }
          async QueueBundleRequest(e, t) {
            return this.QueueStoreItemRequest(e, 2, t);
          }
          async QueueTagRequest(e, t) {
            return this.QueueStoreItemRequest(e, 4, t);
          }
          async QueueCreatorRequest(e, t) {
            return this.QueueStoreItemRequest(e, 5, t);
          }
          async QueueHubCategoryRequest(e, t) {
            return this.QueueStoreItemRequest(e, 6, t);
          }
          static ValidateDataRequest(e) {
            const t = [
              e.include_assets,
              e.include_release,
              e.include_platforms,
              e.include_all_purchase_options,
              e.include_screenshots,
              e.include_trailers,
              e.include_ratings,
              e.include_reviews,
              e.include_basic_info,
              e.include_supported_languages,
              e.include_links,
            ];
            for (const e of t) if (!0 !== e && void 0 !== e) return !1;
            return !0;
          }
          async QueueMultipleAppRequests(e, t) {
            if (!e || 0 == e.length) return 1;
            const n = (
              await Promise.all(
                e.map((e) => this.QueueStoreItemRequest(e, 0, t)),
              )
            ).filter((e) => 1 != e);
            return n.length > 0 ? n[0] : 1;
          }
          async QueueMultiplePackageRequests(e, t) {
            if (!e || 0 == e.length) return 1;
            const n = (
              await Promise.all(
                e.map((e) => this.QueueStoreItemRequest(e, 1, t)),
              )
            ).filter((e) => 1 != e);
            return n.length > 0 ? n[0] : 1;
          }
          async QueueMultipleBundleRequests(e, t) {
            if (!e || 0 == e.length) return 1;
            const n = (
              await Promise.all(
                e.map((e) => this.QueueStoreItemRequest(e, 2, t)),
              )
            ).filter((e) => 1 != e);
            return n.length > 0 ? n[0] : 1;
          }
          async QueueMultipleTagRequests(e, t) {
            if (!e || 0 == e.length) return 1;
            const n = (
              await Promise.all(
                e.map((e) => this.QueueStoreItemRequest(e, 4, t)),
              )
            ).filter((e) => 1 != e);
            return n.length > 0 ? n[0] : 1;
          }
          async QueueMultipleCreatorRequests(e, t) {
            if (!e || 0 == e.length) return 1;
            const n = (
              await Promise.all(
                e.map((e) => this.QueueStoreItemRequest(e, 5, t)),
              )
            ).filter((e) => 1 != e);
            return n.length > 0 ? n[0] : 1;
          }
          async QueueMultipleHubCategoryRequests(e, t) {
            if (!e || 0 == e.length) return 1;
            const n = (
              await Promise.all(
                e.map((e) => this.QueueStoreItemRequest(e, 6, t)),
              )
            ).filter((e) => 1 != e);
            return n.length > 0 ? n[0] : 1;
          }
          async QueueMultipleStoreItemRequests(e, t, n) {
            if (!e || 0 == e.length) return 1;
            const i = (
              await Promise.all(
                e.map((e, i) => this.QueueStoreItemRequest(e, t[i], n)),
              )
            ).filter((e) => 1 != e);
            return i.length > 0 ? i[0] : 1;
          }
          async QueueStoreItemRequest(e, t, n) {
            if (
              ((0, c.w)(
                M.ValidateDataRequest(n),
                "Invalid Data Request: " + JSON.stringify(n),
              ),
              "string" == typeof e && (e = parseInt(e)),
              this.m_bActivelyResettingCache)
            )
              return (
                console.log(
                  "Rejecting store item request due to currently clearing the cache",
                ),
                this.k_AlreadyResolvedBusy
              );
            if (!e)
              return (
                (0, c.w)(
                  !e,
                  `unexpected id ${e} of zero or undefined for type ${t}`,
                ),
                this.k_AlreadyResolvedInvalid
              );
            const i = this.GetPreviousSupersetLoadPromise(e, t, n);
            if (i) return i;
            switch (
              (this.m_PendingInfoPromise ||
                ((this.m_PendingInfoPromise = new Promise(
                  (e) => (this.m_PendingInfoResolve = e),
                )),
                (this.m_PendingTimer = window.setTimeout(
                  () => this.FlushPendingInfo(),
                  this.k_QueueWaitUntilRequestMS,
                ))),
              (this.m_setPendingDataRequest = A(
                this.m_setPendingDataRequest,
                n,
              )),
              t)
            ) {
              case 0:
                this.m_setPendingAppInfo.add(e);
                break;
              case 2:
                this.m_setPendingBundleInfo.add(e);
                break;
              case 1:
                this.m_setPendingPackageInfo.add(e);
                break;
              case 4:
                this.m_setPendingTagInfo.add(e);
                break;
              case 5:
                this.m_setPendingCreatorInfo.add(e);
                break;
              case 6:
                this.m_setPendingHubCategoryInfo.add(e);
                break;
              default:
                (0, c.w)(!1, `Unexpected Type ${t}`);
            }
            const o = this.m_PendingInfoPromise;
            return (
              this.m_setPendingAppInfo.size +
                this.m_setPendingPackageInfo.size +
                this.m_setPendingBundleInfo.size >=
                this.k_nMaxBatchSize &&
                (this.m_PendingTimer &&
                  window.clearTimeout(this.m_PendingTimer),
                this.FlushPendingInfo()),
              o
            );
          }
          async FlushPendingInfo() {
            if (void 0 === this.m_PendingInfoResolve) return;
            const e = this.m_PendingInfoResolve,
              t = Array.from(this.m_setPendingAppInfo),
              n = Array.from(this.m_setPendingPackageInfo),
              i = Array.from(this.m_setPendingBundleInfo),
              o = Array.from(this.m_setPendingTagInfo),
              r = Array.from(this.m_setPendingCreatorInfo),
              a = Array.from(this.m_setPendingHubCategoryInfo),
              s = this.m_setPendingDataRequest;
            (this.m_PendingInfoPromise = void 0),
              (this.m_PendingInfoResolve = void 0),
              this.m_setPendingAppInfo.clear(),
              this.m_setPendingBundleInfo.clear(),
              this.m_setPendingPackageInfo.clear(),
              this.m_setPendingTagInfo.clear(),
              this.m_setPendingCreatorInfo.clear(),
              this.m_setPendingHubCategoryInfo.clear(),
              (this.m_setPendingDataRequest = {}),
              (this.m_PendingTimer = void 0),
              this.HintLoadStoreItems(t, n, i, o, r, a, s).then((t) => e(t));
          }
          async HintLoadStoreApps(e, t) {
            return this.HintLoadStoreItems(e, null, null, null, null, null, t);
          }
          async HintLoadStorePackages(e, t) {
            return this.HintLoadStoreItems(null, e, null, null, null, null, t);
          }
          async HintLoadStoreBundles(e, t) {
            return this.HintLoadStoreItems(null, null, e, null, null, null, t);
          }
          GetPreviousSupersetLoadPromise(e, t, n) {
            if (this.BHasStoreItem(e, t, n) || this.BIsStoreItemMissing(e, t))
              return this.k_AlreadyResolvedOK;
            let i = null;
            switch (t) {
              case 0:
                i = this.m_mapAppsInFlight.get(e);
                break;
              case 1:
                i = this.m_mapPackageInFlight.get(e);
                break;
              case 2:
                i = this.m_mapBundleInFlight.get(e);
                break;
              case 4:
                i = this.m_mapTagsInFlight.get(e);
                break;
              case 5:
                i = this.m_mapCreatorsInFlight.get(e);
                break;
              case 6:
                i = this.m_mapHubCategoriesInFlight.get(e);
            }
            return i && v.BDataRequestContainsOtherDataRequest(i.dataRequest, n)
              ? i.promise
              : null;
          }
          async HintLoadStoreItems(e, t, n, i, o, r, a) {
            let s = null;
            const c = new Promise((e) => (s = e));
            let m = [],
              d = [];
            (e || []).forEach((e) => {
              const t = this.GetPreviousSupersetLoadPromise(e, 0, a);
              if (t) d.push(t);
              else {
                m.push(l.O4.fromObject({ appid: e }));
                let t = A(this.GetStoreItemDataRequest(e, 0), a);
                const n = this.m_mapAppsInFlight.get(e);
                (t = A(n?.dataRequest, t)),
                  n && d.push(n.promise),
                  this.m_mapAppsInFlight.set(e, {
                    promise: n ? T(n.promise, c) : c,
                    dataRequest: t,
                  });
              }
            }),
              (t || []).forEach((e) => {
                const t = this.GetPreviousSupersetLoadPromise(e, 1, a);
                if (t) d.push(t);
                else {
                  m.push(l.O4.fromObject({ packageid: e }));
                  let t = A(this.GetStoreItemDataRequest(e, 1), a);
                  const n = this.m_mapPackageInFlight.get(e);
                  (t = A(n?.dataRequest, t)),
                    n && d.push(n.promise),
                    this.m_mapPackageInFlight.set(e, {
                      promise: n ? T(n.promise, c) : c,
                      dataRequest: t,
                    });
                }
              }),
              (n || []).forEach((e) => {
                const t = this.GetPreviousSupersetLoadPromise(e, 2, a);
                if (t) d.push(t);
                else {
                  m.push(l.O4.fromObject({ bundleid: e }));
                  let t = A(this.GetStoreItemDataRequest(e, 2), a);
                  const n = this.m_mapBundleInFlight.get(e);
                  (t = A(n?.dataRequest, t)),
                    n && d.push(n.promise),
                    this.m_mapBundleInFlight.set(e, {
                      promise: n ? T(n.promise, c) : c,
                      dataRequest: t,
                    });
                }
              }),
              (i || []).forEach((e) => {
                const t = this.GetPreviousSupersetLoadPromise(e, 4, a);
                if (t) d.push(t);
                else {
                  m.push(l.O4.fromObject({ tagid: e }));
                  let t = A(this.GetStoreItemDataRequest(e, 4), a);
                  const n = this.m_mapTagsInFlight.get(e);
                  (t = A(n?.dataRequest, t)),
                    n && d.push(n.promise),
                    this.m_mapTagsInFlight.set(e, {
                      promise: n ? T(n.promise, c) : c,
                      dataRequest: t,
                    });
                }
              }),
              (o || []).forEach((e) => {
                const t = this.GetPreviousSupersetLoadPromise(e, 5, a);
                if (t) d.push(t);
                else {
                  m.push(l.O4.fromObject({ creatorid: e }));
                  let t = A(this.GetStoreItemDataRequest(e, 5), a);
                  const n = this.m_mapCreatorsInFlight.get(e);
                  (t = A(n?.dataRequest, t)),
                    n && d.push(n.promise),
                    this.m_mapCreatorsInFlight.set(e, {
                      promise: n ? T(n.promise, c) : c,
                      dataRequest: t,
                    });
                }
              }),
              (r || []).forEach((e) => {
                const t = this.GetPreviousSupersetLoadPromise(e, 6, a);
                if (t) d.push(t);
                else {
                  m.push(l.O4.fromObject({ hubcategoryid: e }));
                  let t = A(this.GetStoreItemDataRequest(e, 6), a);
                  const n = this.m_mapHubCategoriesInFlight.get(e);
                  (t = A(n?.dataRequest, t)),
                    n && d.push(n.promise),
                    this.m_mapHubCategoriesInFlight.set(e, {
                      promise: n ? T(n.promise, c) : c,
                      dataRequest: t,
                    });
                }
              });
            let u = 1;
            if (
              (m.length > 0 &&
                (u = await this.InternalHandleLoadStoreItems(m, a)),
              s(u),
              d.length > 0)
            ) {
              const e = await Promise.all(d);
              for (const t of e) 1 != t && 1 == u && (u = t);
            }
            return (
              (e || []).forEach((e) => this.m_mapAppsInFlight.delete(e)),
              (t || []).forEach((e) => this.m_mapPackageInFlight.delete(e)),
              (n || []).forEach((e) => this.m_mapBundleInFlight.delete(e)),
              (i || []).forEach((e) => this.m_mapTagsInFlight.delete(e)),
              (o || []).forEach((e) => this.m_mapCreatorsInFlight.delete(e)),
              (r || []).forEach((e) =>
                this.m_mapHubCategoriesInFlight.delete(e),
              ),
              u
            );
          }
          MarkStoreItemIDUnavailable(e) {
            (e || []).forEach((e) => {
              e.appid()
                ? (this.m_setUnavailableApps.add(e.appid()),
                  this.m_mapApps.delete(e.appid()))
                : e.packageid()
                  ? (this.m_setUnavailablePackages.add(e.packageid()),
                    this.m_mapPackages.delete(e.packageid()))
                  : e.bundleid()
                    ? (this.m_setUnavailableBundles.add(e.bundleid()),
                      this.m_mapBundles.delete(e.bundleid()))
                    : e.tagid()
                      ? (this.m_setUnavailableTags.add(e.tagid()),
                        this.m_mapTags.delete(e.tagid()))
                      : e.creatorid()
                        ? (this.m_setUnavailableCreators.add(e.creatorid()),
                          this.m_mapCreators.delete(e.creatorid()))
                        : e.hubcategoryid() &&
                          (this.m_setUnavailableHubCategories.add(
                            e.hubcategoryid(),
                          ),
                          this.m_mapHubCategories.delete(e.hubcategoryid()));
            });
          }
          SortStoreItems(e) {
            let t = e.slice();
            return (
              t.sort((e, t) => {
                let n = e.appid() ?? 0,
                  i = t.appid() ?? 0;
                if (n != i) return n - i;
                let o = e.packageid() ?? 0,
                  r = t.packageid() ?? 0;
                if (o != r) return o - r;
                let a = e.bundleid() ?? 0,
                  s = t.bundleid() ?? 0;
                if (a != s) return a - s;
                let l = e.tagid() ?? 0,
                  c = t.tagid() ?? 0;
                if (l != c) return l - c;
                let m = e.creatorid() ?? 0,
                  d = t.creatorid() ?? 0;
                if (m != d) return m - d;
                let u = e.hubcategoryid() ?? 0,
                  h = t.hubcategoryid() ?? 0;
                return u != h ? u - h : 0;
              }),
              t
            );
          }
          GetServiceTransport() {
            return (
              this.m_serviceTransport ||
                (console.warn(
                  "Service transport not initialized for StoreItemCache",
                ),
                (this.m_serviceTransport = new a.D(
                  d.TS.WEBAPI_BASE_URL,
                ).GetAnonymousServiceTransport())),
              this.m_serviceTransport
            );
          }
          async InternalHandleLoadStoreItems(e, t) {
            let n = 1;
            (e = this.SortStoreItems(e)),
              t.include_included_items &&
                (t = {
                  ...t,
                  included_item_data_request: {
                    ...t,
                    include_included_items: !1,
                  },
                });
            const i = new Array();
            try {
              const a = [];
              for (; e.length > 0; ) {
                const n = e.splice(0, this.k_nMaxBatchSize);
                if ((i.push(n), this.m_bUsePartnerAPI)) {
                  const e = r.w.Init(s.St);
                  e.Body().set_include_unpublished(!1);
                  const i = e.Body().request(!0);
                  i.set_context(p(this.m_bUsePartnerAPI)),
                    i.set_data_request(l.gn.fromObject(t)),
                    i.set_ids(n),
                    a.push(s.BT.GetItems(this.GetServiceTransport(), e));
                } else {
                  const e = r.w.Init(l.eE);
                  h(e, this.m_bUsePartnerAPI),
                    _(e, t),
                    e.Body().set_ids(n),
                    a.push(l.$4.GetItems(this.GetServiceTransport(), e));
                }
              }
              (await Promise.all(a)).forEach((r, a) => {
                1 == r.GetEResult()
                  ? r
                      .Body()
                      .store_items()
                      .forEach((n) => {
                        const i = n.id(),
                          a = n.item_type();
                        let s =
                            this.m_bReturnUnavailableItems && 15 == n.success(),
                          l =
                            1 == n.success() && !this.BIsStoreItemMissing(i, a);
                        if (s || l) this.ReadItem(n, t);
                        else {
                          switch (
                            ("dev" == d.TS.WEB_UNIVERSE &&
                              console.warn(
                                `Failed to load ${i} type ${a} with error ${n.success()}`,
                                n,
                              ),
                            a)
                          ) {
                            case 0:
                              this.m_setUnavailableApps.add(i),
                                this.m_mapApps.delete(i);
                              break;
                            case 1:
                              this.m_setUnavailablePackages.add(i),
                                this.m_mapPackages.delete(i);
                              break;
                            case 2:
                              this.m_setUnavailableBundles.add(i),
                                this.m_mapBundles.delete(i);
                              break;
                            case 4:
                              this.m_setUnavailableTags.add(i),
                                this.m_mapTags.delete(i);
                              break;
                            case 5:
                              this.m_setUnavailableCreators.add(i),
                                this.m_mapCreators.delete(i);
                              break;
                            case 6:
                              this.m_setUnavailableHubCategories.add(i),
                                this.m_mapHubCategories.delete(i);
                              break;
                            default:
                              console.error(
                                "CStoreItemCache.InternalHandleLoadStoreItems unexpected item_type in response " +
                                  a +
                                  " " +
                                  i,
                              );
                          }
                          if (n.unvailable_for_country_restriction())
                            switch (a) {
                              case 0:
                                this.m_setUnavailableDueToCountryRestrictionApps.add(
                                  i,
                                );
                                break;
                              case 1:
                                this.m_setUnavailableDueToCountryRestrictionPackages.add(
                                  i,
                                );
                                break;
                              case 2:
                                this.m_setUnavailableDueToCountryRestrictionBundles.add(
                                  i,
                                );
                                break;
                              case 4:
                              case 5:
                              case 6:
                                console.error(
                                  "CStoreItemCache::InternalHandleLoadStoreItems - tags, creators or categories don't have country restrictions. eResult: " +
                                    r.GetEResult() +
                                    " message: " +
                                    r.Hdr().error_message(),
                                  (0, o.HO)(e),
                                );
                            }
                        }
                      })
                  : (console.warn(
                      "CStoreItemCache::InternalHandleLoadStoreItems failed with eResult: " +
                        r.GetEResult() +
                        " message: " +
                        r.Hdr().error_message(),
                      (0, o.HO)(e),
                    ),
                    (1 == r.Hdr().transport_error() || d.TS.FROM_WEB) &&
                      this.MarkStoreItemIDUnavailable(i[a]),
                    1 == n && (n = r.GetEResult()));
              });
            } catch (e) {
              const t = (0, m.H)(e);
              return (
                console.error(
                  "CStoreItemCache::InternalHandleLoadStoreItems failed: " +
                    t.strErrorMsg,
                  t,
                ),
                i.forEach((e) => this.MarkStoreItemIDUnavailable(e)),
                79
              );
            }
            return n;
          }
          GetMapForType(e) {
            let t;
            switch (e) {
              case 0:
                t = this.m_mapApps;
                break;
              case 2:
                t = this.m_mapBundles;
                break;
              case 1:
                t = this.m_mapPackages;
                break;
              case 4:
                t = this.m_mapTags;
                break;
              case 5:
                t = this.m_mapCreators;
                break;
              case 6:
                t = this.m_mapHubCategories;
                break;
              default:
                console.error("Invalid map type requested", e);
            }
            return t;
          }
          BHasStoreItem(e, t, n) {
            let i = this.GetMapForType(t);
            return Boolean(
              i && i.has(e) && (!n || i.get(e).BContainDataRequest(n)),
            );
          }
          GetStoreItem(e, t) {
            if (-1 == t || 3 == t) return;
            const n = this.GetMapForType(t);
            return n?.get(e);
          }
          GetStoreItemWithLegacyVisibilityCheck(e, t) {
            const n = this.GetStoreItem(e, t);
            return n && (this.m_bReturnUnavailableItems || n.BIsVisible())
              ? n
              : void 0;
          }
          GetStoreItemDataRequest(e, t) {
            return this.GetMapForType(t)?.get(e)?.GetDataRequest() || null;
          }
          BHasApp(e, t) {
            return this.BHasStoreItem(e, 0, t);
          }
          GetApp(e) {
            return this.GetStoreItem(e, 0);
          }
          BHasPackage(e, t) {
            return this.BHasStoreItem(e, 1, t);
          }
          GetPackage(e) {
            return this.GetStoreItem(e, 1);
          }
          BHasBundle(e, t) {
            return this.BHasStoreItem(e, 2, t);
          }
          GetBundle(e) {
            return this.GetStoreItem(e, 2);
          }
          BHasTag(e, t) {
            return this.BHasStoreItem(e, 4, t);
          }
          GetTag(e) {
            return this.GetStoreItem(e, 4);
          }
          BHasCreator(e, t) {
            return this.BHasStoreItem(e, 5, t);
          }
          GetCreator(e) {
            return this.GetStoreItem(e, 5);
          }
          BHasHubCategory(e, t) {
            return this.BHasStoreItem(e, 6, t);
          }
          GetHubCategory(e) {
            return this.GetStoreItem(e, 6);
          }
          BIsStoreItemMissing(e, t) {
            switch (t) {
              case 0:
                return this.BIsAppMissing(e);
              case 1:
                return this.BIsPackageMissing(e);
              case 2:
                return this.BIsBundleMissing(e);
              case 4:
                return this.BIsTagMissing(e);
              case 5:
                return this.BIsCreatorMissing(e);
              case 6:
                return this.BIsHubCategoryMissing(e);
              default:
                return console.error("BStoreItemMissing invalid type", t), !0;
            }
          }
          BIsAppMissing(e) {
            return this.m_setUnavailableApps.has(e);
          }
          BIsPackageMissing(e) {
            return this.m_setUnavailablePackages.has(e);
          }
          BIsBundleMissing(e) {
            return this.m_setUnavailableBundles.has(e);
          }
          BIsTagMissing(e) {
            return this.m_setUnavailableTags.has(e);
          }
          BIsCreatorMissing(e) {
            return this.m_setUnavailableCreators.has(e);
          }
          BIsHubCategoryMissing(e) {
            return this.m_setUnavailableHubCategories.has(e);
          }
          BIsStoreItemUnavailableDueToCountryRestriction(e, t) {
            switch (t) {
              case 0:
                return this.BIsAppUnavailableDueToCountryRestriction(e);
              case 1:
                return this.BIsPackageUnavailableDueToCountryRestriction(e);
              case 2:
                return this.BIsBundleUnavailableDueToCountryRestriction(e);
              case 4:
              case 5:
              case 6:
                return (
                  console.error(
                    "BIsStoreItemUnavailableDueToCountryRestriction - tags, creators or categories don't have country restrictions. type: ",
                    t,
                  ),
                  !0
                );
              default:
                return console.error("BStoreItemMissing invalid type", t), !0;
            }
          }
          BIsAppUnavailableDueToCountryRestriction(e) {
            return this.m_setUnavailableDueToCountryRestrictionApps.has(e);
          }
          BIsPackageUnavailableDueToCountryRestriction(e) {
            return this.m_setUnavailableDueToCountryRestrictionPackages.has(e);
          }
          BIsBundleUnavailableDueToCountryRestriction(e) {
            return this.m_setUnavailableDueToCountryRestrictionBundles.has(e);
          }
          ReadResults(e, t) {
            let n = [];
            for (const i of e) n.push(this.ReadItem(i, t));
            return n;
          }
          ReadItem(e, t) {
            const n = e.item_type();
            let i = null;
            switch (n) {
              case 0:
                i = this.m_mapApps;
                break;
              case 1:
                i = this.m_mapPackages;
                break;
              case 2:
                i = this.m_mapBundles;
                break;
              case 4:
                i = this.m_mapTags;
                break;
              case 5:
                i = this.m_mapCreators;
                break;
              case 6:
                i = this.m_mapHubCategories;
                break;
              default:
                return console.error(`Invalid item type: ${n}`), null;
            }
            let o = i.get(e.id());
            if (
              (o ? o.MergeData(e, t) : ((o = new v(e, t)), i.set(e.id(), o)),
              t.include_included_items && e.included_items(!1))
            ) {
              for (const n of e.included_items().included_apps())
                this.ReadItem(n, t.included_item_data_request);
              for (const n of e.included_items().included_packages())
                this.ReadItem(n, t.included_item_data_request);
            }
            return o;
          }
        }
        (0, i.Cg)([D.o], M.prototype, "ReadItem", null);
      },
      12829: (e, t, n) => {
        "use strict";
        var i;
        function o(e) {
          switch (e) {
            case 0:
              return "app";
            case 2:
              return "bundle";
            case 1:
              return "package";
            case 3:
              return "mtx";
          }
          return "invalid";
        }
        function r(e) {
          switch (e) {
            case "sub":
              return 1;
            case "bundle":
              return 2;
            default:
              return 0;
          }
        }
        n.d(t, { Rz: () => o, SW: () => r }),
          (function (e) {
            (e[(e.k_NotRejected = -1)] = "k_NotRejected"),
              (e[(e.k_RejectNoMainCap = 0)] = "k_RejectNoMainCap"),
              (e[(e.k_RejectWrongPlatform = 1)] = "k_RejectWrongPlatform"),
              (e[(e.k_RejectNoComingSoon = 2)] = "k_RejectNoComingSoon"),
              (e[(e.k_RejectNoVR = 3)] = "k_RejectNoVR"),
              (e[(e.k_RejectCreatorClan = 4)] = "k_RejectCreatorClan"),
              (e[(e.k_RejectIgnoredGame = 5)] = "k_RejectIgnoredGame"),
              (e[(e.k_RejectSupportedLanguage = 6)] =
                "k_RejectSupportedLanguage"),
              (e[(e.k_RejectNotLoaded = 7)] = "k_RejectNotLoaded"),
              (e[(e.k_RejectIgnoreGameTags = 8)] = "k_RejectIgnoreGameTags"),
              (e[(e.k_RejectIgnoreContentDescriptors = 9)] =
                "k_RejectIgnoreContentDescriptors"),
              (e[(e.k_RejectEarlyAccess = 10)] = "k_RejectEarlyAccess"),
              (e[(e.k_RejectSoftware = 11)] = "k_RejectSoftware"),
              (e[(e.k_RejectDLC = 12)] = "k_RejectDLC"),
              (e[(e.k_RejectInLibrary = 13)] = "k_RejectInLibrary"),
              (e[(e.k_RejectNotInLibrary = 14)] = "k_RejectNotInLibrary"),
              (e[(e.k_RejectVideo = 15)] = "k_RejectVideo"),
              (e[(e.k_RejectNoDiscount = 16)] = "k_RejectNoDiscount"),
              (e[(e.k_RejectAlreadyDisplayed = 17)] =
                "k_RejectAlreadyDisplayed");
          })(i || (i = {}));
      },
      50228: (e, t, n) => {
        "use strict";
        n.d(t, { G6: () => l, mZ: () => m, t7: () => c });
        var i = n(83957),
          o = n.n(i),
          r = n(63696),
          a = n(82924),
          s = n(69756);
        function l(e, t, n, i) {
          const l = (0, r.useRef)(),
            c = (0, r.useRef)(void 0),
            m = (0, a.CH)();
          l.current = e;
          const [d, u] = (0, r.useState)(void 0),
            {
              include_assets: h,
              include_release: p,
              include_platforms: _,
              include_all_purchase_options: g,
              include_screenshots: C,
              include_trailers: f,
              include_ratings: S,
              include_tag_count: v,
              include_reviews: b,
              include_basic_info: I,
              include_supported_languages: w,
              include_full_description: y,
              include_included_items: E,
              include_assets_without_overrides: D,
              apply_user_filters: A,
              include_links: T,
            } = n;
          if (
            ((0, r.useEffect)(() => {
              const n = {
                include_assets: h,
                include_release: p,
                include_platforms: _,
                include_all_purchase_options: g,
                include_screenshots: C,
                include_trailers: f,
                include_ratings: S,
                include_tag_count: v,
                include_reviews: b,
                include_basic_info: I,
                include_supported_languages: w,
                include_full_description: y,
                include_included_items: E,
                include_assets_without_overrides: D,
                apply_user_filters: A,
                include_links: T,
              };
              let r = null;
              return (
                !e ||
                  e < 0 ||
                  s.A.Get().BHasStoreItem(e, t, n) ||
                  (void 0 !== d && i && i == c.current) ||
                  (i !== c.current && (u(void 0), (c.current = i)),
                  (r = o().CancelToken.source()),
                  s.A.Get()
                    .QueueStoreItemRequest(e, t, n)
                    .then((t) => {
                      r?.token.reason || l.current !== e || u(1 == t), m();
                    })),
                () => r?.cancel("useStoreItemCache: unmounting")
              );
            }, [e, t, i, d, h, p, _, g, C, f, S, v, b, I, w, y, E, D, A, T, m]),
            !e)
          )
            return [null, 2];
          if (!1 === d) return [void 0, 2];
          if (s.A.Get().BIsStoreItemMissing(e, t)) return [void 0, 2];
          if (!s.A.Get().BHasStoreItem(e, t, n)) return [void 0, 1];
          const M = s.A.Get().GetStoreItemWithLegacyVisibilityCheck(e, t);
          return M ? [M, 3] : [null, 2];
        }
        function c(e, t, n) {
          return l(e, 0, t, n);
        }
        function m(e, t, n) {
          const [i, o] = l(e, t, n);
          let r;
          1 != i?.GetStoreItemType() ||
            i.GetAssets()?.GetHeaderURL() ||
            1 != i?.GetIncludedAppIDs().length ||
            (r = i.GetIncludedAppIDs()[0]);
          const [a, s] = c(r, n);
          return r && a?.BIsVisible() ? [a, s] : [i, o];
        }
      },
      55157: (e, t, n) => {
        "use strict";
        n.d(t, { s: () => Y, Q: () => ee });
        var i = n(34629),
          o = n(83957),
          r = n.n(o),
          a = n(37322),
          s = n(89193),
          l = n(56132),
          c = n(45518),
          m = n(77631),
          d = n(28776),
          u = n(17070),
          h = n(76882),
          p = n(1808),
          _ = n(74002),
          g = n(82924),
          C = n(67033),
          f = n(6861),
          S = n(8805),
          v = n(77765),
          b = n(57695),
          I = n(86670),
          w = n(26721),
          y = n(49912);
        class E {
          m_socket = null;
          m_sName;
          m_sURL;
          Log = new S.wd("CWebSocketConnection", () => this.m_sName);
          m_bDisconnectRequested = !1;
          m_bConnecting = !1;
          m_fnOnMessageHandler;
          m_fnOnCloseHandler;
          m_fnOnReconnectStartHandler;
          m_fnOnReconnectFinishHandler;
          m_nConnectAttemptsMax;
          m_nConnectAttemptTimeoutMs;
          m_bReconnectOnFailure;
          m_nReconnectAttemptTimeoutMs;
          m_nReconnectAttemptsMax;
          constructor(e, t) {
            (this.m_sName = e),
              (this.m_fnOnMessageHandler = t.fnOnMessageHandler),
              (this.m_fnOnCloseHandler = t.fnOnCloseHandler),
              (this.m_fnOnReconnectStartHandler =
                t.fnOnReconnectStartHandler ?? (() => {})),
              (this.m_fnOnReconnectFinishHandler =
                t.fnOnReconnectFinishHandler ?? (() => {})),
              (this.m_nConnectAttemptsMax = t.nConnectAttemptsMax ?? 8),
              (this.m_nConnectAttemptTimeoutMs =
                t.nConnectAttemptTimeoutMs ?? 1e3),
              (this.m_bReconnectOnFailure = t.bReconnectOnFailure ?? !1),
              (this.m_nReconnectAttemptsMax = t.nReconnectAttemptsMax ?? 3e4),
              (this.m_nReconnectAttemptTimeoutMs =
                t.nReconnectAttemptTimeoutMs ?? 1e4);
          }
          get name() {
            return this.m_sName;
          }
          async Connect(e) {
            return (
              (this.m_sURL = e),
              this.ConnectWithRetry(
                this.m_sURL,
                this.m_nConnectAttemptsMax,
                this.m_nConnectAttemptTimeoutMs,
              )
            );
          }
          async Reconnect() {
            return this.ConnectWithRetry(
              this.m_sURL,
              this.m_nReconnectAttemptsMax,
              this.m_nReconnectAttemptTimeoutMs,
            );
          }
          GetInterAttemptBackoffMs(e) {
            return 1e3 * (0, y.OQ)(e, 1, 5);
          }
          async ConnectWithRetry(e, t, n) {
            this.m_bConnecting = !0;
            let i = 0;
            do {
              try {
                const t = await this.ConnectToSocket(e, n);
                if (1 == t.result) return (this.m_bConnecting = !1), t;
                this.Log.Warning(
                  `connect attempt failed: ${t.result} - ${t.message}`,
                );
              } catch (e) {
                this.Log.Warning(
                  `connect attempt failed: exception ${e.name} - ${e}`,
                );
              }
              const o = this.GetInterAttemptBackoffMs(i);
              this.Log.Info(`connect retry: attempt:${i}/${t} backoff:${o}`),
                await new Promise((e) => setTimeout(e, o)),
                (this.m_socket = null),
                (i += 1);
            } while (i < t);
            return (
              this.Log.Warning(
                `websocket connect retry: limit exceeeded, bailing - ${this.name}`,
              ),
              (this.m_bConnecting = !1),
              this.BShouldReconnect() && this.StartReconnect(),
              { result: 2, message: "not ready, exceeded retry count" }
            );
          }
          Disconnect() {
            this.Log.Info("disconnect requested"),
              (this.m_bDisconnectRequested = !0),
              this.m_socket.close();
          }
          PrepareForShutdown() {
            this.Log.Info("shutdown pending"),
              (this.m_bDisconnectRequested = !0);
          }
          BShouldReconnect() {
            return (
              !this.m_bConnecting &&
              !!this.m_bReconnectOnFailure &&
              !this.m_bDisconnectRequested
            );
          }
          async StartReconnect() {
            this.Log.Info("start reconnect"),
              (this.m_socket = null),
              this.m_fnOnReconnectStartHandler({ connection: this });
            if (1 != (await this.Reconnect()).result)
              return (
                this.Log.Warning(
                  "failed to re-connect to websocket after close",
                ),
                this.m_fnOnReconnectFinishHandler({
                  connection: this,
                  eResult: 2,
                }),
                void this.m_fnOnCloseHandler({
                  connection: this,
                  bError: !0,
                  bIsExpectedToReconnect: !1,
                })
              );
            this.Log.Info("reconnect successful"),
              this.m_fnOnReconnectFinishHandler({
                connection: this,
                eResult: 1,
              });
          }
          async ConnectToSocket(e, t) {
            if (null != this.m_socket)
              return this.m_socket.readyState != WebSocket.OPEN
                ? (this.Log.Error(
                    `websocket in an unexpected state: ${this.m_socket.readyState}`,
                  ),
                  { result: 2, message: "websocket in an unexpected state" })
                : { result: 1, message: "ready" };
            try {
              this.m_socket = new WebSocket(e);
            } catch (e) {
              return (
                this.Log.Warning("failed to initialize websocket connection"),
                {
                  result: 35,
                  message: "Failed to initialize websocket connection",
                }
              );
            }
            (this.m_socket.binaryType = "arraybuffer"),
              (this.m_socket.onerror = this.OnSocketError),
              (this.m_socket.onmessage = this.OnSocketMessage),
              (this.m_socket.onopen = this.OnSocketOpen),
              (this.m_socket.onclose = this.OnSocketClose);
            return (await this.WaitForSocketOpen(this.m_socket, t))
              ? (this.Log.Info("connection ready"),
                { result: 1, message: "ready" })
              : (this.Log.Warning("failed to reach open state"),
                { result: 2, message: "failed to reach open state" });
          }
          async WaitForSocketOpen(e, t) {
            if (e.readyState != WebSocket.CONNECTING)
              return e.readyState == WebSocket.OPEN;
            let n = t / 100;
            for (; e.readyState == WebSocket.CONNECTING && n > 0; )
              n--, await new Promise((e) => setTimeout(e, 100));
            return e.readyState == WebSocket.OPEN;
          }
          BCanSendMessages() {
            return (
              null != this.m_socket &&
              this.m_socket.readyState == WebSocket.OPEN
            );
          }
          OnSocketError(e) {
            this.Log.Warning("websocket error");
          }
          OnSocketOpen(e) {
            this.Log.Info("websocket open");
          }
          OnSocketClose(e) {
            if (this.m_bDisconnectRequested)
              return (
                this.Log.Info("websocket closed"),
                void this.m_fnOnCloseHandler({
                  connection: this,
                  bError: !1,
                  bIsExpectedToReconnect: !1,
                })
              );
            if (this.m_bConnecting) return;
            this.Log.Warning("websocket unexpectedly closed");
            const t = this.BShouldReconnect();
            this.m_fnOnCloseHandler({
              connection: this,
              bError: !0,
              bIsExpectedToReconnect: t,
            }),
              t && this.StartReconnect();
          }
          async OnSocketMessage(e) {
            this.m_fnOnMessageHandler(e.data);
          }
          SendSerializedMessage(e) {
            try {
              return this.m_socket.send(e), 1;
            } catch (e) {
              return 2;
            }
          }
        }
        (0, i.Cg)([g.oI], E.prototype, "OnSocketError", null),
          (0, i.Cg)([g.oI], E.prototype, "OnSocketOpen", null),
          (0, i.Cg)([g.oI], E.prototype, "OnSocketClose", null),
          (0, i.Cg)([g.oI], E.prototype, "OnSocketMessage", null);
        const D = new S.wd("WebUITransport");
        class A {
          m_iMsgSeq = 1;
          m_mapPendingMethodRequests = new Map();
          m_messageHandlers = new b.$();
          m_mapServiceCallErrorCount = new Map();
          m_mapConnectionDetails = new Map();
          m_fnOnStatusEventHandler;
          m_fnOnReconnectErrorHandler;
          m_bInitialized = !1;
          m_nMaximumMsgSizeBytes = 1024;
          static sm_ErrorReportingStore;
          static InstallErrorReportingStore(e) {
            this.sm_ErrorReportingStore = e;
          }
          BIsValid() {
            return this.m_bInitialized;
          }
          GetMaximumMsgSizeBytes() {
            return this.m_nMaximumMsgSizeBytes;
          }
          TEST_GetMaximumMsgBodySizeBytes() {
            return (
              this.m_nMaximumMsgSizeBytes -
              this.TEST_GetMsgHeaderEstimatedSizeBytes()
            );
          }
          TEST_GetMsgHeaderEstimatedSizeBytes() {
            return 128;
          }
          TEST_GetExcessivelyLargeBodySize() {
            return 67108864;
          }
          ReportError(e) {
            D.Warning(e);
            const t = A.sm_ErrorReportingStore;
            t &&
              t.ReportError(new Error(e), {
                bIncludeMessageInIdentifier: !0,
                cCallsitesToIgnore: 1,
              });
          }
          async Init() {
            if (!w.TS.IN_CLIENT) return;
            const e = await SteamClient.WebUITransport.GetTransportInfo();
            (this.m_nMaximumMsgSizeBytes = e.nMaximumMsgSizeBytes),
              this.CreateConnection(
                1,
                "steamUI",
                e.portSteamUI,
                e.authKeySteamUI,
              ),
              this.CreateConnection(
                2,
                "clientdll",
                e.portClientdll,
                e.authKeyClientdll,
              ),
              (0, f.OI)().SetDefaultTransport(this),
              (0, f.OI)().SetDefaultHandlerRegistry(this.m_messageHandlers),
              I.Ft.RegisterForNotifyStartShutdown(this.OnStartShutdown);
          }
          get messageHandlers() {
            return this.m_messageHandlers;
          }
          SetStatusEventHandler(e) {
            this.m_fnOnStatusEventHandler = e;
          }
          SetReconnectErrorHandler(e) {
            this.m_fnOnReconnectErrorHandler = e;
          }
          CreateConnection(e, t, n, i) {
            const o = {
                bReconnectOnFailure: !0,
                fnOnMessageHandler: this.OnWebsocketMessage,
                fnOnCloseHandler: this.OnWebsocketClose,
                fnOnReconnectStartHandler: this.OnWebsocketReconnectStart,
                fnOnReconnectFinishHandler: this.OnWebsocketReconnectFinish,
                nConnectAttemptsMax: 8,
                nConnectAttemptTimeoutMs: 1e4,
                nReconnectAttemptsMax: 8,
                nReconnectAttemptTimeoutMs: 1e4,
              },
              r = {
                connection: new E(t, o),
                sUrl: `ws://localhost:${n}/transportsocket/`,
                sAuthKey: i,
                eClientExecutionSite: e,
              };
            this.m_mapConnectionDetails.set(e, r);
          }
          SendMsg(e, t, n, i) {
            return new Promise((o, r) => {
              const a = i.eClientExecutionSite;
              if (null == a || 0 == a)
                return (
                  D.Error(`SendMsg: Invalid client execution site: ${a}`),
                  void r(
                    `Transport SendMsg: invalid client execution site ${a}`,
                  )
                );
              const s = this.m_mapConnectionDetails.get(a);
              if (null == s)
                return (
                  D.Error(
                    `SendMsg: could not find connection for execution site: ${a}`,
                  ),
                  void r(
                    `Transport SendMsg: could not find connection for execution site ${a}`,
                  )
                );
              const l = s.connection;
              if (!l.BCanSendMessages()) {
                const t = this.m_mapServiceCallErrorCount.get(e) ?? 1;
                this.m_mapServiceCallErrorCount.set(e, t + 1);
                const n = `SendMsg: Attempt to send message but socket wasn't ready: ${l.name} - ${e}`;
                return (
                  1 == t && this.ReportError(n),
                  D.Warning(n + ` error count: ${t}`),
                  void r("Transport SendMsg: socket not ready")
                );
              }
              const m = this.m_iMsgSeq++;
              t.SetEMsg(146),
                t.Hdr().set_target_job_name(e),
                t.Hdr().set_jobid_source("" + m);
              const d = t.Serialize();
              if (d.byteLength >= this.m_nMaximumMsgSizeBytes) {
                D.Error(
                  `SendMsg: message exceeds maximum size: ${d.byteLength} >= ${this.m_nMaximumMsgSizeBytes}`,
                );
                const e = c.w.Init(n);
                return e.Hdr().set_eresult(2), void o(e);
              }
              if (1 != l.SendSerializedMessage(d))
                return (
                  D.Error("SendMsg: Failed to send message"),
                  void r("Transport SendMsg: failed to send message")
                );
              this.m_mapPendingMethodRequests.set(m, {
                m_iSeq: m,
                m_responseClass: n,
                m_fnCallback: o,
                m_fnError: r,
              });
            });
          }
          SendNotification(e, t, n) {
            const i = n.eClientExecutionSite;
            if (null == i || 0 == i)
              return (
                D.Error(
                  `SendNotification: Invalid client execution site: ${i}`,
                ),
                !1
              );
            const o = this.m_mapConnectionDetails.get(i);
            if (null == o)
              return (
                D.Error(
                  `SendNotification: could not find connection for execution site: ${i}`,
                ),
                !1
              );
            const r = o.connection;
            if (!r.BCanSendMessages()) {
              const t = this.m_mapServiceCallErrorCount.get(e) ?? 1;
              this.m_mapServiceCallErrorCount.set(e, t + 1);
              const n = `SendNotification: Attempt to send message but socket wasn't ready: ${r.name} - ${e}`;
              return (
                1 == t && this.ReportError(n),
                D.Warning(n + ` error count: ${t}`),
                !1
              );
            }
            t.SetEMsg(146), t.Hdr().set_target_job_name(e);
            return 1 == r.SendSerializedMessage(t.Serialize());
          }
          async ConnectToSite(e) {
            const t = e.connection,
              n = await t.Connect(e.sUrl);
            if (1 != n.result) return n;
            return (await this.SendAuthMessage(e)).BSuccess()
              ? { result: 1, message: "connected" }
              : { result: 2, message: "client auth failed" };
          }
          async MakeReady() {
            const e = [];
            for (const [t, n] of this.m_mapConnectionDetails)
              e.push(this.ConnectToSite(n));
            const t = await Promise.all(e);
            (this.m_bInitialized = !0), this.DispatchTransportStatusUpdate();
            for (const e of t) if (1 != e.result) return e;
            return { result: 1, message: "ready" };
          }
          GetConnectionDetails(e) {
            for (const [t, n] of this.m_mapConnectionDetails)
              if (n.connection === e) return n;
            return (
              D.Error("GetConnectionDetails: failed to identify connection"),
              null
            );
          }
          DispatchTransportStatusUpdate() {
            if (!this.m_fnOnStatusEventHandler) return;
            let e = !0;
            for (const [t, n] of this.m_mapConnectionDetails)
              n.connection.BCanSendMessages() || (e = !1);
            this.m_fnOnStatusEventHandler({ bConnected: e });
          }
          OnWebsocketReconnectStart(e) {
            this.DispatchTransportStatusUpdate();
          }
          OnWebsocketReconnectFinish(e) {
            if ((this.DispatchTransportStatusUpdate(), 1 != e.eResult))
              return (
                D.Warning(
                  "OnWebsocketReconnect: Failed to reconnect to steam client",
                ),
                void this.m_fnOnReconnectErrorHandler?.({})
              );
            this.FailAllPendingRequests();
            const t = this.GetConnectionDetails(e.connection);
            t && this.SendAuthMessage(t);
          }
          OnWebsocketClose(e) {
            e.bIsExpectedToReconnect || this.FailAllPendingRequests();
          }
          OnWebsocketMessage(e) {
            const t = new C.pV(e),
              n = c.w.InitHeaderFromPacket(t);
            n.Hdr().jobid_target() && n.Hdr().jobid_target() !== l.kF
              ? this.DispatchMethodResponse(n)
              : this.DispatchNotification(n);
          }
          DispatchMethodResponse(e) {
            const t = parseInt(e.Hdr().jobid_target()),
              n = this.m_mapPendingMethodRequests.get(t);
            if (null == n)
              return void (0, v.w)(
                !1,
                "Transport Error: no pending callback for request",
              );
            (0, v.w)(
              t == n.m_iSeq,
              "Transport Error: mistmatched request sequence",
            ),
              this.m_mapPendingMethodRequests.delete(t);
            const i = c.w.InitFromMsg(n.m_responseClass, e);
            n.m_fnCallback(i);
          }
          DispatchNotification(e) {
            this.m_messageHandlers.DispatchMsgToHandlers(e, (e) => {
              (0, v.w)(
                !1,
                "Transport Error: A notification should not generate a response",
              );
            });
          }
          FailAllPendingRequests() {
            for (const [e, t] of this.m_mapPendingMethodRequests) {
              this.ReportError(
                `FailAllPendingRequests: forcing failure for request: ${t.m_responseClass.name}`,
              );
              let e = c.w.Init(t.m_responseClass);
              e.Hdr().set_eresult(2), t.m_fnCallback(e);
            }
            this.m_mapPendingMethodRequests.clear();
          }
          async SendAuthMessage(e) {
            const t = I.Ft.AuthenticateHandler.name,
              n = { eClientExecutionSite: e.eClientExecutionSite },
              i = c.w.Init(I.F6);
            i.Hdr().set_webui_auth_key(e.sAuthKey);
            return await this.SendMsg(
              t,
              i,
              I.Ft.AuthenticateHandler.response,
              n,
            );
          }
          OnStartShutdown(e) {
            for (const [e, t] of this.m_mapConnectionDetails)
              t.connection.PrepareForShutdown();
            return 1;
          }
        }
        (0, i.Cg)([g.oI], A.prototype, "OnWebsocketReconnectStart", null),
          (0, i.Cg)([g.oI], A.prototype, "OnWebsocketReconnectFinish", null),
          (0, i.Cg)([g.oI], A.prototype, "OnWebsocketClose", null),
          (0, i.Cg)([g.oI], A.prototype, "OnWebsocketMessage", null),
          (0, i.Cg)([g.oI], A.prototype, "OnStartShutdown", null);
        const T = new A(),
          M =
            window.addEventListener ||
            (n.g && n.g.addEventListener) ||
            (() => {});
        let R,
          k = [],
          L = (e, t) => k.push({ error: e, cCallsitesToIgnore: t });
        const G = !0;
        {
          const e = console.assert;
          console.assert = (t, n, ...i) => {
            t || L(new Error(x(n, ...i)), 2), e.apply(console, [t, n, ...i]);
          };
          const t = console.error;
          (console.error = (e, ...n) => {
            L(new Error(x(e, ...n)), 1), t.apply(console, [e, ...n]);
          }),
            (console.clogerror = (e, n, ...i) => {
              L(new Error(x(n, ...i)), e + 1), t.apply(console, [n, ...i]);
            }),
            M("error", (e) => {
              L(e.error, 0);
            }),
            (R = window.setTimeout(() => {
              (k = []), (L = () => {});
            }, 3e4));
        }
        const F = { cCallsitesToIgnore: 0, bIncludeMessageInIdentifier: !1 },
          P = ["/(localhost|127.0.0.1):1337/", "chrome-extension://"];
        class B {
          m_strProduct;
          m_strVersion;
          m_transport = null;
          m_rgErrorQueue = [];
          m_sendTimer = null;
          m_bReportingPaused = !1;
          m_pauseTimer = void 0;
          m_fnGetReportingInterval = K;
          m_bEnabled = !0;
          m_bInitialized = !1;
          constructor(e = !0) {
            e
              ? (k.forEach(({ error: e, cCallsitesToIgnore: t }) =>
                  this.ReportError(e, { cCallsitesToIgnore: t }),
                ),
                (L = (e, t) => this.ReportError(e, { cCallsitesToIgnore: t })))
              : (L = () => {}),
              (k = []),
              clearTimeout(R),
              window.setTimeout(() => {
                this.m_bInitialized ||
                  ((this.m_bEnabled = !1), (this.m_rgErrorQueue = []));
              }, 3e4);
          }
          Init(e, t, n, i = {}) {
            (this.m_bInitialized = !0),
              (this.m_strProduct = e),
              (this.m_strVersion = t),
              (this.m_transport = n),
              i.fnGetReportingInterval &&
                (this.m_fnGetReportingInterval = i.fnGetReportingInterval),
              this.m_bEnabled ||
                (console.error(
                  "Error reporting was initialized after being disabled, possibly dropping errors.",
                ),
                (this.m_bEnabled = !0)),
              this.m_rgErrorQueue.length &&
                (this.SendErrorReports(this.m_rgErrorQueue),
                (this.m_rgErrorQueue = []));
          }
          async ReportError(e, t) {
            if (!e)
              return (
                console.warn(
                  "Failed to report error: ReportError() was called without an error to report.",
                ),
                null
              );
            try {
              const n = { ...F, ...t };
              if (!this.m_bEnabled) return null;
              0;
              const i = await (function (e, t) {
                try {
                  return e.stack && e.stack.match(O)
                    ? (async function (e, t) {
                        const {
                            cCallsitesToIgnore: n,
                            bIncludeMessageInIdentifier: i,
                          } = t,
                          o = e.stack?.split("\n") ?? [];
                        let r = W(o.filter((e) => !!e.match(O))[n]);
                        i && (r = `${r} ${e.message}`);
                        const a = o
                          .map((e) => {
                            const t = e.match(/(.*)\((.*):(\d+):(\d+)\)/);
                            if (!t) return e;
                            if (5 === t.length) {
                              const [e, n, i, o, r] = t,
                                a = parseInt(o),
                                s = parseInt(r);
                              if (!isNaN(a) && !isNaN(s)) return [n, i, a, s];
                            }
                            return e;
                          })
                          .filter((e) => !!e);
                        return {
                          identifier: r,
                          identifierHash: await q(r),
                          message: a,
                        };
                      })(e, t)
                    : e.stack && e.stack.match(N)
                      ? (async function (e, t) {
                          const {
                              cCallsitesToIgnore: n,
                              bIncludeMessageInIdentifier: i,
                            } = t,
                            o = e.stack?.split("\n") ?? [];
                          let r = W(o.filter((e) => !!e.match(N))[n]);
                          i && (r = `${r} ${e.message}`);
                          const a = o
                            .map((e) => {
                              const t = e.match(/(.*@)?(.*):(\d+):(\d+)/);
                              if (!t) return e;
                              if (5 === t.length) {
                                const [e, n, i, o, r] = t,
                                  a = parseInt(o),
                                  s = parseInt(r);
                                if (!isNaN(a) && !isNaN(s)) return [n, i, a, s];
                              }
                              return e;
                            })
                            .filter((e) => !!e);
                          return {
                            identifier: r,
                            identifierHash: await q(r),
                            message: [e.message, ...a],
                          };
                        })(e, t)
                      : e.stack && e.stack.match(V)
                        ? (async function (e, t) {
                            const {
                                bIncludeMessageInIdentifier: n,
                                cCallsitesToIgnore: i,
                              } = t,
                              o = e.stack?.split("\n") ?? [],
                              r = o[i],
                              a = r.split("/");
                            let s = a[a.length - 1];
                            r.indexOf("@") > -1 &&
                              (s = r.split("@")[0] + "@" + s);
                            n && (s = `${s} ${e.message}`);
                            const l = o
                              .map((e) => {
                                const t = e.match(/(.*@)?(.*):(\d+):(\d+)/);
                                if (!t) return e;
                                if (5 === t.length) {
                                  const [e, n, i, o, r] = t,
                                    a = parseInt(o),
                                    s = parseInt(r);
                                  if (!isNaN(a) && !isNaN(s))
                                    return [n, i, a, s];
                                }
                                return e;
                              })
                              .filter((e) => !!e);
                            return {
                              identifier: s,
                              identifierHash: await q(s),
                              message: [e.message, ...l],
                            };
                          })(e, t)
                        : (H ||
                            (console.warn(
                              "Error reporter does not know how to parse generated stack:",
                            ),
                            console.warn(e.stack),
                            (H = !0)),
                          null);
                } catch (e) {
                  return (
                    console.warn(`Failed to normalize error stack: ${e}`), null
                  );
                }
              })(e, n);
              return i ? (this.SendErrorReport(i), i) : null;
            } catch (e) {
              return console.log(`Failed to report error: ${e}`), null;
            }
          }
          PauseReportingForDuration(e) {
            this.PauseReporting(),
              (this.m_pauseTimer = window.setTimeout(
                () => this.ResumeReporting(),
                e,
              ));
          }
          PauseReporting() {
            (this.m_bReportingPaused = !0),
              window.clearTimeout(this.m_pauseTimer);
          }
          ResumeReporting() {
            (this.m_bReportingPaused = !1),
              window.clearTimeout(this.m_pauseTimer),
              this.ScheduleSend();
          }
          BIsBlacklisted(e) {
            for (let t of e.message) {
              let n = JSON.stringify(t);
              for (let t of P) {
                const i = new RegExp(t);
                if (n.match(i))
                  return console.warn("Report", e, "matched regex", t), !0;
              }
            }
            return !1;
          }
          SendErrorReport(e) {
            this.BIsBlacklisted(e) ||
              (this.m_transport
                ? this.QueueReport(e)
                : this.m_rgErrorQueue.push(e));
          }
          QueueReport(e) {
            this.m_rgErrorQueue.push(e),
              this.m_bReportingPaused || this.ScheduleSend();
          }
          ScheduleSend() {
            this.m_sendTimer ||
              (this.m_sendTimer = window.setTimeout(() => {
                this.SendErrorReports(this.m_rgErrorQueue),
                  (this.m_rgErrorQueue = []),
                  (this.m_sendTimer = null);
              }, this.m_fnGetReportingInterval()));
          }
          SendErrorReports(e) {
            if (!e || !e.length) return;
            const t = c.w.Init(h.Gf),
              n = e.reduce(
                (e, t) => (
                  e[t.identifier]
                    ? e[t.identifier].count++
                    : (e[t.identifier] = { report: t, count: 1 }),
                  e
                ),
                {},
              ),
              i = Object.keys(n).map((e) => {
                const { report: t, count: i } = n[e],
                  o = new h.tF();
                return (
                  o.set_count(i),
                  o.set_identifier(t.identifier + " " + t.identifierHash),
                  o.set_message(JSON.stringify(t.message)),
                  o
                );
              });
            t.Body().set_product(this.m_strProduct),
              t.Body().set_version(this.m_strVersion),
              t.Body().set_errors(i),
              h._5.ReportClientError(this.m_transport, t);
          }
          get version() {
            return this.m_strVersion;
          }
          get product() {
            return this.m_strProduct;
          }
          get reporting_enabled() {
            return G;
          }
        }
        function x(e, ...t) {
          if ("string" == typeof e && 0 === t.length) return e;
          return [e, ...t]
            .map((e) => {
              try {
                return String(e);
              } catch (e) {
                return "[Stringify Error]";
              }
            })
            .join(", ");
        }
        const O = /^\s*at .*(\S+:\d+|\(native\))/m,
          N = /(^|@)\S+:\d+/,
          V = /.*\/bundle-[a-zA-Z0-9]+:\d+:\d+/;
        let U,
          H = !1;
        function W(e) {
          return (function (e) {
            const t = "https://",
              n = e.indexOf(t);
            if (-1 === n) return e;
            const i = e.indexOf("/", n + t.length);
            return -1 === i ? e : e.slice(0, n) + e.slice(i);
          })(
            (function (e) {
              const t = e.lastIndexOf("?");
              if (-1 === t) return e;
              const n = e.indexOf(":", t);
              return -1 === n ? e : e.slice(0, t) + e.slice(n);
            })(e),
          );
        }
        const z = () => (U || j(new B()), U),
          j = (e) => {
            (U = e),
              p.tH.InstallErrorReportingStore(U),
              c.lI.InstallErrorReportingStore(U),
              _.A0.InstallErrorReportingStore(U),
              A.InstallErrorReportingStore(U);
          };
        async function q(e) {
          try {
            const n = await window.crypto.subtle.digest(
              "SHA-256",
              (function (e) {
                const t = new ArrayBuffer(2 * e.length),
                  n = new Uint16Array(t);
                for (let t = 0, i = e.length; t < i; t++)
                  n[t] = e.charCodeAt(t);
                return t;
              })(e),
            );
            return ((t = n),
            Array.prototype.map
              .call(new Uint8Array(t), (e) => ("00" + e.toString(16)).slice(-2))
              .join("")).slice(0, 16);
          } catch (e) {
            return "";
          }
          var t;
        }
        function K() {
          return 1e4;
        }
        var Z = n(95479),
          Q = n(69450);
        function $() {
          return u.TS.IN_MOBILE ? u.NQ : (0, u.xv)();
        }
        const X = "(1)";
        class Y {
          m_WebUIServiceTransport;
          m_unAccountID;
          m_Transport = null;
          m_Storage = null;
          m_TextFilterPreferences = {
            eTextFilterSetting: 3,
            bIgnoreFriends: !1,
          };
          m_TextFilterWords;
          m_mapPlayerCache = new Map();
          m_strBannedWords = "";
          m_strProfanityWords = "";
          m_strCleanWords = "";
          m_strBannedPattern = "";
          m_strCleanPattern = "";
          m_regexBannedWords = null;
          m_regexCleanWords = null;
          m_bShownFilterTip = !1;
          m_bInitialized = !1;
          m_DataAccess;
          constructor(e) {
            (0, s.Gn)(this);
            let t = new d.B4();
            (this.m_TextFilterPreferences = {
              eTextFilterSetting: t.text_filter_setting(),
              bIgnoreFriends: t.text_filter_ignore_friends(),
            }),
              (this.m_TextFilterWords = new d.Ey()),
              (this.m_DataAccess = e);
          }
          async Init(e = 0, t = null, n = null) {
            (this.m_bInitialized = !1),
              (this.m_WebUIServiceTransport = T),
              (this.m_unAccountID = e),
              (this.m_Transport = t),
              (this.m_Storage = n),
              (this.m_strBannedWords = ""),
              (this.m_strProfanityWords = ""),
              (this.m_strCleanWords = ""),
              this.InitSteamEngineLanguages(),
              await this.LoadFilter(),
              await this.LoadTextFilterPreferences(),
              await this.LoadTextFilterWords(),
              await this.RequestUpdatedSettings(),
              await this.LoadLanguages(),
              this.OnFilterDataChanged(),
              (this.m_bInitialized = !0);
          }
          InitSteamEngineLanguages() {
            this.m_WebUIServiceTransport.BIsValid() &&
              (this.m_WebUIServiceTransport.messageHandlers.RegisterServiceNotificationHandler(
                Z.UP.NotifyTextFilterDictionaryChangedHandler,
                this.OnTextFilterDictionaryChanged,
              ),
              this.InitSteamEngineLanguage(u.TS.LANGUAGE),
              "english" !== u.TS.LANGUAGE &&
                this.InitSteamEngineLanguage("english"));
          }
          OnTextFilterDictionaryChanged(e) {
            return (
              this.LoadLanguages().then(() => {
                this.OnFilterDataChanged();
              }),
              1
            );
          }
          InitSteamEngineLanguage(e) {
            const t = c.w.Init(Z.fx);
            t.Body().set_language(e),
              t.Body().set_type("profanity"),
              Z.UP.SendMsgUpdateTextFilterDictionary(
                t,
                this.m_WebUIServiceTransport,
              ),
              t.Body().set_type("banned"),
              Z.UP.SendMsgUpdateTextFilterDictionary(
                t,
                this.m_WebUIServiceTransport,
              );
          }
          GetSteamEngineTextFilterDictionary(e, t) {
            const n = c.w.Init(Z.i6);
            return (
              n.Body().set_language(e),
              n.Body().set_type(t),
              Z.UP.SendMsgGetTextFilterDictionary(
                n,
                this.m_WebUIServiceTransport,
              )
            );
          }
          GetStorageKey(e) {
            return e + "_" + this.m_unAccountID;
          }
          async LoadTextFilterPreferences() {
            if (this.m_Storage) {
              let e = await this.m_Storage.GetObject(
                this.GetStorageKey("CTextFilterStore_TextFilterPreferences"),
              );
              e && (this.m_TextFilterPreferences = e);
            }
          }
          SaveTextFilterPreferences() {
            this.m_Storage &&
              this.m_Storage.StoreObject(
                this.GetStorageKey("CTextFilterStore_TextFilterPreferences"),
                this.m_TextFilterPreferences,
              );
          }
          ObfuscateString(e) {
            try {
              const t = new TextEncoder().encode(X + e);
              return a.iI(t);
            } catch (e) {
              return "";
            }
          }
          DeobfuscateString(e) {
            try {
              const t = a.bg(e);
              let n = new TextDecoder().decode(t);
              return n.startsWith(X)
                ? ((n = n.slice(3)), n)
                : (console.log(
                    "DeobfuscateString given invalid base64 data, ignoring: " +
                      e,
                  ),
                  "");
            } catch (e) {
              return "";
            }
          }
          async LoadObfuscatedString(e) {
            if (this.m_Storage) {
              let t = await this.m_Storage.GetString(this.GetStorageKey(e));
              if (t) return this.DeobfuscateString(t);
            }
            return null;
          }
          async SaveObfuscatedString(e, t) {
            this.m_Storage &&
              this.m_Storage.StoreString(
                this.GetStorageKey(e),
                this.ObfuscateString(t),
              );
          }
          async LoadTextFilterWords() {
            let e = await this.LoadObfuscatedString(
              "CTextFilterStore_TextFilterWords",
            );
            if (e)
              try {
                this.m_TextFilterWords = d.Ey.fromObject(JSON.parse(e));
              } catch (t) {
                console.warn("Error parsing cached text filter word list", e),
                  (this.m_TextFilterWords = new d.Ey());
              }
          }
          SaveTextFilterWords() {
            this.SaveObfuscatedString(
              "CTextFilterStore_TextFilterWords",
              JSON.stringify(this.m_TextFilterWords.toObject()),
            );
          }
          async LoadFilter() {
            let e = await this.LoadObfuscatedString(
                "CTextFilterStore_strBannedPattern",
              ),
              t = await this.LoadObfuscatedString(
                "CTextFilterStore_strCleanPattern",
              );
            null != e && null != t && this.BRebuildFilter(e, t);
          }
          SaveFilter() {
            this.SaveObfuscatedString(
              "CTextFilterStore_strBannedPattern",
              this.m_strBannedPattern,
            ),
              this.SaveObfuscatedString(
                "CTextFilterStore_strCleanPattern",
                this.m_strCleanPattern,
              );
          }
          async RequestUpdatedSettings() {
            let e = new d.B4();
            if (0 !== this.m_unAccountID)
              try {
                if (this.m_Transport) {
                  let t = c.w.Init(d.tz);
                  e = (await d.xt.GetCommunityPreferences(this.m_Transport, t))
                    .Body()
                    .preferences();
                } else {
                  let t = { sessionid: u.TS.SESSIONID, origin: $() };
                  const n = await r().get(
                    u.TS.COMMUNITY_BASE_URL +
                      "textfilter/ajaxgetcommunitypreferences",
                    { params: t, withCredentials: !0 },
                  );
                  e = d.B4.fromObject(n.data.preferences);
                }
              } catch (e) {}
            if (
              (this.UpdateCommunityPreferences(e),
              e.text_filter_words_revision() !==
                this.m_TextFilterWords.text_filter_words_revision())
            ) {
              let t = new d.Ey();
              if (0 !== e.text_filter_words_revision())
                try {
                  if (this.m_Transport) {
                    let e = c.w.Init(d.SC);
                    t = (await d.xt.GetTextFilterWords(this.m_Transport, e))
                      .Body()
                      .words();
                  } else {
                    let e = { sessionid: u.TS.SESSIONID, origin: $() };
                    const n = await r().get(
                      u.TS.COMMUNITY_BASE_URL +
                        "textfilter/ajaxgettextfiltercustomwords",
                      { params: e, withCredentials: !0 },
                    );
                    t = d.Ey.fromObject(n.data.words);
                  }
                } catch (e) {}
              this.UpdateTextFilterWords(t);
            }
          }
          UpdateCommunityPreferences(e) {
            let t = !1;
            e.text_filter_setting() !==
              this.m_TextFilterPreferences?.eTextFilterSetting &&
              ((this.m_TextFilterPreferences.eTextFilterSetting =
                e.text_filter_setting()),
              (t = !0)),
              e.text_filter_ignore_friends() !==
                this.m_TextFilterPreferences.bIgnoreFriends &&
                ((this.m_TextFilterPreferences.bIgnoreFriends =
                  e.text_filter_ignore_friends()),
                (t = !0)),
              t && this.SaveTextFilterPreferences();
          }
          get TextFilterPreferences() {
            return this.m_TextFilterPreferences;
          }
          UpdateTextFilterWords(e) {
            (this.m_TextFilterWords = e), this.SaveTextFilterWords();
          }
          m_nLoadLanguagesRetryTimeout = void 0;
          async LoadLanguages(e = 15) {
            (this.m_strBannedWords = ""),
              (this.m_strProfanityWords = ""),
              (this.m_strCleanWords = "");
            try {
              await this.LoadLanguage(u.TS.LANGUAGE),
                "english" !== u.TS.LANGUAGE &&
                  (await this.LoadLanguage("english"));
            } catch (t) {
              this.m_nLoadLanguagesRetryTimeout &&
                ((0, v.w)(
                  !this.m_nLoadLanguagesRetryTimeout,
                  "Got two concurrent calls to TextFilteringStore.LoadLanguages",
                ),
                window.clearTimeout(this.m_nLoadLanguagesRetryTimeout),
                (this.m_nLoadLanguagesRetryTimeout = void 0)),
                (e = Math.min(2 * e, 3600)),
                console.warn(
                  "LoadLanguages caught",
                  t,
                  "retry in",
                  e,
                  "seconds",
                ),
                (this.m_nLoadLanguagesRetryTimeout = window.setTimeout(
                  async () => {
                    (this.m_nLoadLanguagesRetryTimeout = void 0),
                      await this.LoadLanguages(e),
                      this.OnFilterDataChanged();
                  },
                  1e3 * e,
                ));
            }
          }
          async LoadLanguage(e) {
            let t = "",
              n = !1;
            if (this.m_WebUIServiceTransport.BIsValid())
              try {
                {
                  const t = await this.GetSteamEngineTextFilterDictionary(
                    e,
                    "banned",
                  );
                  this.m_strBannedWords += t.Body().dictionary();
                }
                {
                  const t = await this.GetSteamEngineTextFilterDictionary(
                    e,
                    "profanity",
                  );
                  this.m_strProfanityWords += t.Body().dictionary();
                }
                n = !0;
              } catch (e) {
                console.warn(
                  "LoadLanguage caught while loading from cache:",
                  e,
                );
              }
            if (!n) {
              t = `${u.TS.COMMUNITY_CDN_URL}textfilter/gettextfilterdictionary?type=banned&language=${e}&v=1&origin=${$()}`;
              {
                const e = await r().get(t);
                this.m_strBannedWords += e.data;
              }
              t = `${u.TS.COMMUNITY_CDN_URL}textfilter/gettextfilterdictionary?type=profanity&language=${e}&v=1&origin=${$()}`;
              {
                const e = await r().get(t);
                this.m_strProfanityWords += e.data;
              }
            }
            t = `${u.TS.COMMUNITY_CDN_URL}textfilter/gettextfilterdictionary?type=clean_public&language=${e}&v=1&origin=${$()}`;
            {
              const e = await r().get(t);
              this.m_strCleanWords += e.data;
            }
          }
          CreatePattern(e) {
            let t = e.filter(function (e) {
              return (function (e) {
                if ("" === e) return !1;
                try {
                  return new RegExp("\\b(" + e + ")\\b", "ugi"), !0;
                } catch (t) {
                  return (
                    console.log(
                      `'${e}' is an invalid expression, removing from text filter`,
                    ),
                    !1
                  );
                }
              })(e);
            });
            return t.length > 0 ? "\\b(" + t.join("|") + ")\\b" : "";
          }
          OnFilterDataChanged() {
            let e = new RegExp(/\s*[\r\n]+\s*/g),
              t = [],
              n = [];
            switch (this.m_TextFilterPreferences.eTextFilterSetting) {
              case 0:
              case 3:
                break;
              case 2:
                t = t.concat(this.m_strBannedWords.split(e));
                break;
              default:
                t = t.concat(
                  this.m_strProfanityWords.split(e),
                  this.m_strBannedWords.split(e),
                );
            }
            (t = t.concat(
              this.m_TextFilterWords.text_filter_custom_banned_words(),
            )),
              (n = this.m_strCleanWords.split(e)),
              (n = n.concat(
                this.m_TextFilterWords.text_filter_custom_clean_words(),
              ));
            let i = this.CreatePattern(t),
              o = this.CreatePattern(n);
            "" != o && (o = "^(" + o + ")$"),
              this.BRebuildFilter(i, o) && this.SaveFilter();
          }
          BRebuildFilter(e, t) {
            if (e === this.m_strBannedPattern && t === this.m_strCleanPattern)
              return !1;
            if (
              ((this.m_regexBannedWords = null),
              (this.m_strBannedPattern = e),
              "" !== e)
            )
              try {
                this.m_regexBannedWords = new RegExp(e, "ugi");
              } catch (e) {
                console.warn("Couldn't compile textfilter bannedwords regex"),
                  z().ReportError(
                    new Error(
                      `Couldn't compile textfilter bannedwords regex: ${e}`,
                    ),
                  ),
                  (this.m_strBannedPattern = "");
              }
            if (
              ((this.m_regexCleanWords = null),
              (this.m_strCleanPattern = t),
              "" !== t)
            )
              try {
                this.m_regexCleanWords = new RegExp(t, "ugi");
              } catch (e) {
                console.warn("Couldn't compile textfilter cleanwords regex"),
                  z().ReportError(
                    new Error(
                      `Couldn't compile textfilter cleanwords regex: ${e}`,
                    ),
                  ),
                  (this.m_strCleanPattern = "");
              }
            return !0;
          }
          CreateProfanityReplacement(e) {
            return "♥".repeat(e);
          }
          BHasFilter() {
            return null != this.m_regexBannedWords;
          }
          BShownFilterTip() {
            return this.m_bShownFilterTip;
          }
          SetFilterTipShown(e) {
            this.m_bShownFilterTip = e;
          }
          FilterText(e, t) {
            if (!this.m_regexBannedWords) return t;
            let n = 0;
            if ("string" == typeof e && "" !== e) {
              n = new m.b(e).GetAccountID();
            } else "number" == typeof e && (n = e);
            return !t ||
              n == this.m_unAccountID ||
              (e &&
                this.m_TextFilterPreferences.bIgnoreFriends &&
                this.m_DataAccess.BIsFriend(n))
              ? t
              : t.replace(this.m_regexBannedWords, (e) =>
                  this.m_regexCleanWords &&
                  0 == e.search(this.m_regexCleanWords)
                    ? e
                    : this.CreateProfanityReplacement(e.length),
                );
          }
        }
        let J;
        function ee() {
          if (!J) {
            const e = new Set();
            let t = { sessionid: u.TS.SESSIONID, origin: $() };
            r()
              .get(u.TS.COMMUNITY_BASE_URL + "textfilter/ajaxgetfriendslist", {
                params: t,
                withCredentials: !0,
              })
              .then((t) => {
                for (const n of t.data.friendslist?.friends ?? [])
                  (0, l.S$)(n.efriendrelationship) &&
                    e.add(new m.b(n.ulfriendid).GetAccountID());
              }),
              (J = (t) => e.has(t));
          }
          return J;
        }
        (0, i.Cg)([s.sH], Y.prototype, "m_TextFilterPreferences", void 0),
          (0, i.Cg)([s.sH], Y.prototype, "m_mapPlayerCache", void 0),
          (0, i.Cg)([s.sH], Y.prototype, "m_regexBannedWords", void 0),
          (0, i.Cg)([s.sH], Y.prototype, "m_regexCleanWords", void 0),
          (0, i.Cg)([s.sH], Y.prototype, "m_bInitialized", void 0),
          (0, i.Cg)([s.XI], Y.prototype, "Init", null),
          (0, i.Cg)([Q.o], Y.prototype, "OnTextFilterDictionaryChanged", null),
          (0, i.Cg)([s.XI], Y.prototype, "UpdateCommunityPreferences", null),
          (0, i.Cg)([s.XI], Y.prototype, "BRebuildFilter", null);
      },
      75228: (e, t, n) => {
        "use strict";
        n.d(t, { g4: () => i });
        var i,
          o = n(34629),
          r = n(29359),
          a = n(8805),
          s = n(82924);
        function l(e) {
          switch (e) {
            case r.pR.OK:
              return i.A;
            case r.pR.CANCEL:
              return i.B;
            case r.pR.SECONDARY:
              return i.X;
            case r.pR.OPTIONS:
              return i.Y;
            case r.pR.DIR_LEFT:
              return i.Left;
            case r.pR.DIR_RIGHT:
              return i.Right;
            case r.pR.DIR_UP:
              return i.Up;
            case r.pR.DIR_DOWN:
              return i.Down;
            case r.pR.STEAM_GUIDE:
              return i.HomeMenu;
            case r.pR.STEAM_QUICK_MENU:
              return i.QuickMenu;
            case r.pR.SELECT:
              return i.Select;
            case r.pR.START:
              return i.Start;
            case r.pR.BUMPER_LEFT:
              return i.LeftBumper;
            case r.pR.BUMPER_RIGHT:
              return i.RightBumper;
            case r.pR.TRIGGER_LEFT:
              return i.LeftTrigger;
            case r.pR.TRIGGER_RIGHT:
              return i.RightTrigger;
            default:
              return null;
          }
        }
        !(function (e) {
          (e[(e.A = 0)] = "A"),
            (e[(e.B = 1)] = "B"),
            (e[(e.X = 2)] = "X"),
            (e[(e.Y = 3)] = "Y"),
            (e[(e.Left = 4)] = "Left"),
            (e[(e.Right = 5)] = "Right"),
            (e[(e.Up = 6)] = "Up"),
            (e[(e.Down = 7)] = "Down"),
            (e[(e.HomeMenu = 8)] = "HomeMenu"),
            (e[(e.QuickMenu = 9)] = "QuickMenu"),
            (e[(e.Select = 10)] = "Select"),
            (e[(e.Start = 11)] = "Start"),
            (e[(e.LeftBumper = 12)] = "LeftBumper"),
            (e[(e.RightBumper = 13)] = "RightBumper"),
            (e[(e.LeftTrigger = 14)] = "LeftTrigger"),
            (e[(e.RightTrigger = 15)] = "RightTrigger"),
            (e[(e.LeftStick = 16)] = "LeftStick"),
            (e[(e.LeftStickClick = 17)] = "LeftStickClick"),
            (e[(e.RightStick = 18)] = "RightStick"),
            (e[(e.RightStickClick = 19)] = "RightStickClick"),
            (e[(e.LeftTrackpad = 20)] = "LeftTrackpad"),
            (e[(e.LeftTrackpadClick = 21)] = "LeftTrackpadClick"),
            (e[(e.RightTrackpad = 22)] = "RightTrackpad"),
            (e[(e.RightTrackpadClick = 23)] = "RightTrackpadClick"),
            (e[(e.RearLeftUpper = 24)] = "RearLeftUpper"),
            (e[(e.RearLeftLower = 25)] = "RearLeftLower"),
            (e[(e.RearRightUpper = 26)] = "RearRightUpper"),
            (e[(e.RearRightLower = 27)] = "RearRightLower");
        })(i || (i = {}));
        class c {
          m_boundActions = new Map();
          m_defaultActions = new Map();
          m_actionSubscriptions = new Map();
          m_actionDescriptionChangedCallbackRegistrations = [];
          static Log = new a.wd("ActionDescription").Debug;
          InitContext(e) {
            return e.FocusChangedCallbacks.Register(
              this.OnFocusNavigationChanged,
            ).Unregister;
          }
          BFromActiveNavTree(e, t) {
            let n = t?.Tree;
            return (
              n || (n = e?.Tree), n && n.Controller.IsActiveFocusNavTree(n)
            );
          }
          OnFocusNavigationChanged(e, t, n) {
            if (this.BFromActiveNavTree(t, n))
              if (
                (this.m_actionDescriptionChangedCallbackRegistrations.forEach(
                  (e) => e.Unregister(),
                ),
                (this.m_actionDescriptionChangedCallbackRegistrations = []),
                n)
              ) {
                const e = () =>
                  this.SetActionDescriptionsFromMap(
                    n.GetActiveActionDescriptions() ?? {},
                  );
                e();
                for (let t = n; null != t; t = t.Parent)
                  this.m_actionDescriptionChangedCallbackRegistrations.push(
                    t.ActionDescriptionChangedCallbackList.Register(() => e()),
                  );
              } else this.SetActionDescriptionsFromMap({ [r.pR.OK]: null });
          }
          GetActionDescription(e) {
            let t;
            return (
              this.m_boundActions.has(e)
                ? (t = this.m_boundActions.get(e))
                : this.m_defaultActions.has(e) &&
                  (t = this.m_defaultActions.get(e)),
              c.Log("GetActionDescription", t),
              t
            );
          }
          NotifyUpdate(e) {
            if (this.m_actionSubscriptions.has(e)) {
              const t = this.GetActionDescription(e);
              this.m_actionSubscriptions.get(e).forEach((e) => e(t));
            }
          }
          NotifyAll() {
            Array.from(this.m_actionSubscriptions.keys()).forEach((e) => {
              this.NotifyUpdate(e);
            });
          }
          IsDefaultAction(e) {
            return (
              this.GetActionDescription(e) === this.m_defaultActions.get(e)
            );
          }
          SetDefaultAction(e, t) {
            void 0 === t
              ? this.m_defaultActions.delete(e)
              : this.m_defaultActions.set(e, t),
              this.m_boundActions.has(e) || this.NotifyUpdate(e);
          }
          ClearActions() {
            c.Log("ClearActionDescriptions"),
              this.m_boundActions.clear(),
              this.NotifyAll();
          }
          SetActionsFromMap(e) {
            const t = Array.from(this.m_boundActions.keys());
            for (let n of t) e[n] || this.SetAction(n, void 0);
            for (let t in e) {
              const n = parseInt(t);
              this.SetAction(n, e[n]);
            }
          }
          SetActionDescriptionsFromMap(e) {
            const t = {};
            for (const n in e) {
              const i = parseInt(n);
              t[l(i)] = e[i];
            }
            this.SetActionsFromMap(t);
          }
          SetAction(e, t) {
            if ((c.Log("SetActionDescription", e, t), void 0 === t)) {
              if (!this.m_boundActions.has(e)) return;
              this.m_boundActions.delete(e);
            } else {
              if (this.m_boundActions.get(e) === t) return;
              this.m_boundActions.set(e, t);
            }
            this.NotifyUpdate(e);
          }
          SubscribeToActionFunction(e, t) {
            this.m_actionSubscriptions.has(e) ||
              this.m_actionSubscriptions.set(e, []),
              this.m_actionSubscriptions.get(e).push(t),
              this.m_boundActions.has(e)
                ? t(this.m_boundActions.get(e))
                : this.m_defaultActions.has(e) &&
                  t(this.m_defaultActions.get(e));
            return () => {
              const n = this.m_actionSubscriptions.get(e),
                i = n.indexOf(t);
              i >= 0
                ? n.splice(i, 1)
                : console.error(
                    "Unsubscribing an action that was already unsubscribed",
                  );
            };
          }
        }
        (0, o.Cg)([s.oI], c.prototype, "OnFocusNavigationChanged", null),
          (0, o.Cg)([s.oI], c.prototype, "SetActionDescriptionsFromMap", null);
      },
      94786: (e, t, n) => {
        "use strict";
        n.d(t, { JO: () => a, pM: () => s, xh: () => r });
        var i = n(63696),
          o = n(50622);
        class r extends i.Component {
          constructor(e) {
            super(e);
          }
          static defaultProps = { text: "" };
          render() {
            if (null == this.props.text)
              return i.createElement(i.Fragment, null, this.props.children);
            let e;
            if (
              ((e =
                this.props.text instanceof Array
                  ? this.props.text
                      .map((e) => (e ? e.toString() : ""))
                      .filter((e) => e.length > 0)
                      .join("\n")
                  : this.props.text.toString()),
              1 == i.Children.count(this.props.children))
            ) {
              let t = i.Children.only(this.props.children);
              return i.cloneElement(t, {
                "data-copystyle": this.props.style,
                "data-copytext": e,
              });
            }
            return (
              console.log(
                `Error: CopyableText must be the parent of exactly one child:\n\tcopystyle=${this.props.style} copytext=${e}`,
              ),
              i.createElement(i.Fragment, null, this.props.children)
            );
          }
        }
        function a(e) {
          let t = e.cloneContents(),
            n = "",
            i = "",
            r = !1,
            a = (
              t.querySelector("[data-activechat=true]") || t
            ).querySelectorAll("[data-copytext]"),
            s = Array.from(a).map(
              (e) => e.getAttribute("data-copystyle") || "msg",
            );
          for (let e = 0; e < a.length; ++e) {
            let t = a[e],
              l = s[e];
            if (e + 1 < a.length && o.TN(t, a[e + 1])) continue;
            let c = t.tagName.toLowerCase(),
              m = l.includes("block"),
              d = l.includes("timestamp"),
              u = l.includes("server"),
              h = l.includes("invite"),
              p = l.includes("emote"),
              _ = l.includes("no-prefix"),
              g = l.includes("no-suffix"),
              C = l.includes("allow-embedded-newlines"),
              f = l.includes("block-continue"),
              S = l.includes("merge-adjacent"),
              v = l.includes("force-display"),
              b = l.includes("prepend-innertext"),
              I = l.includes("append-innertext"),
              w = l.includes("prepend-newline"),
              y = l.includes("append-newline"),
              E = l.includes("speaker");
            if (!v) {
              let e = null != c.match(/img|iframe/),
                n = null != t.querySelector("img,iframe");
              if (!t.innerText && !e && !n) continue;
            }
            S &&
              (e > 0 && s[e - 1].includes("merge-adjacent") && (_ = !0),
              e + 1 < s.length &&
                s[e + 1].includes("merge-adjacent") &&
                (g = !0)),
              E && (r = !0);
            let D = "",
              A = "\n";
            d || E || u || h || p
              ? (0 != n.length && (D += "\n"), (u || h) && (D += "\t\t"))
              : (r && (D += "\t"),
                i.includes("msg") && m && (w = !0),
                i.includes("block") && !f && (w = !0));
            let T = t.getAttribute("data-copytext");
            0 == T.length
              ? (T = t.innerText)
              : b && t.innerText.length > 0
                ? (T = `${t.innerText}${l.includes("-with-newline") ? "\n" : " "}${T}`)
                : I &&
                  t.innerText.length > 0 &&
                  (T += `${l.includes("-with-newline") ? "\n" : " "}${t.innerText}`),
              0 != T.length &&
                (w && (n += "\n"),
                _ || (n += D),
                (n += C ? T : T.replace(/\n/g, A + D)),
                g || (n += A),
                y && (n += "\n")),
              (i = l);
          }
          if (0 != n.length) return n;
        }
        function s(e) {
          const t = document.createRange();
          t.selectNode(e),
            (function (e) {
              const t = a(e);
              o.OG(t);
            })(t);
        }
      },
      27816: (e, t, n) => {
        "use strict";
        n.d(t, {
          $b: () => B,
          IK: () => E,
          K5: () => D,
          P: () => I,
          Vs: () => A,
          Y8: () => P,
          aE: () => k,
          ai: () => M,
          il: () => R,
          kt: () => y,
          tz: () => w,
        });
        var i = n(34629),
          o = n(23812),
          r = n(69074),
          a = n(7153),
          s = n(41491),
          l = n(41230),
          c = n(63696),
          m = n(94762),
          d = n(42674),
          u = n(453),
          h = n(81734),
          p = n(77171),
          _ = n(7105),
          g = n(50622),
          C = n(74002),
          f = n(82924),
          S = n(17070),
          v = n(26765),
          b = n.n(v);
        const I = c.createContext(null);
        let w = class extends c.Component {
          static contextType = I;
          m_navRef = (0, o.b$)();
          m_divRef = c.createRef();
          get instance() {
            return this.context.instance;
          }
          componentDidMount() {
            this.instance.SetLabel(this.props.label),
              this.m_navRef.current?.TakeFocus(),
              (0, f.cZ)(this.props.refInstance, this.instance);
          }
          componentDidUpdate(e) {
            e.label !== this.props.label &&
              this.context &&
              this.instance.SetLabel(this.props.label);
          }
          HideIfSubmenu() {
            return (
              !!this.instance.BIsSubMenu() && (this.instance.HideSelf(), !0)
            );
          }
          HideMenu() {
            return (
              this.instance.BIsSubMenu()
                ? this.instance.HideSelf()
                : this.instance.Hide(),
              !0
            );
          }
          render() {
            let {
              children: e,
              className: t,
              label: n,
              onCancel: i,
              cancelText: o,
              refInstance: l,
              bForceDesktopPresentation: m,
              footer: d,
              ...u
            } = this.props;
            const h = this.context.styles ?? b();
            let _ = o ?? "#Button_Cancel";
            if (1 != this.context.presentation || m)
              return c.createElement(
                "div",
                {
                  ...u,
                  ref: this.m_divRef,
                  className: (0, p.A)(
                    {
                      [h.contextMenuContents]: !0,
                      [h.hasSubMenu]: this.instance.BIsSubMenuVisible(),
                      [h.ForceDesktop]: m,
                    },
                    t,
                  ),
                },
                e,
              );
            {
              const n = () => {
                i && i(), this.instance.Hide();
              };
              return c.createElement(
                r.Z,
                {
                  ...u,
                  className: (0, p.A)(
                    h.contextMenuContents,
                    { [h.hasSubMenu]: this.instance.BIsSubMenuVisible() },
                    t,
                  ),
                  "flow-children": "column",
                  onMoveLeft: this.HideIfSubmenu,
                  onCancel: this.instance.BIsSubMenu() ? this.HideMenu : n,
                  style: {
                    overflowY: this.instance.BIsSubMenuVisible()
                      ? "hidden"
                      : void 0,
                  },
                  navEntryPreferPosition: a.iU.PREFERRED_CHILD,
                  navRef: this.m_navRef,
                  ref: this.m_divRef,
                  ...s._k,
                },
                e,
                !this.instance.BIsSubMenu() &&
                  c.createElement(
                    c.Fragment,
                    null,
                    c.createElement(D, null),
                    c.createElement(
                      y,
                      { className: h.Cancel, onSelected: n },
                      (0, C.we)(_),
                    ),
                    d,
                  ),
                this.instance.BIsSubMenuVisible() &&
                  c.createElement("div", {
                    className: h.contextMenuFade,
                    onClick: () => this.instance.HideSubMenu(),
                  }),
              );
            }
          }
        };
        (0, i.Cg)([f.oI], w.prototype, "HideIfSubmenu", null),
          (0, i.Cg)([f.oI], w.prototype, "HideMenu", null),
          (w = (0, i.Cg)([l.PA], w));
        class y extends c.PureComponent {
          static contextType = I;
          m_ref = c.createRef();
          m_refDiv = c.createRef();
          get element() {
            return this.m_refDiv.current;
          }
          get instance() {
            return this.context.instance;
          }
          OnClick(e) {
            this.props.disabled
              ? this.context.callbacks?.onDisabledItemSelected &&
                this.context.callbacks.onDisabledItemSelected()
              : (this.props.onClick && this.props.onClick(e),
                this.props.bInteractableItem ||
                  (this.props.onSelected && this.props.onSelected(e),
                  this.context && this.instance.ForceHide()));
          }
          OnOKButton(e) {
            this.m_refDiv.current?.click();
          }
          OnMouseEnter(e) {
            0 == this.context.presentation && this.instance.HideSubMenu();
          }
          Focus() {
            this.m_ref.current
              ? this.m_ref.current.TakeFocus()
              : this.m_refDiv.current && this.m_refDiv.current.focus();
          }
          render() {
            const {
                onSelected: e,
                bInteractableItem: t,
                onMoveRight: n,
                ...i
              } = this.props,
              o = this.context?.styles ?? b();
            return 1 == this.context.presentation
              ? c.createElement(
                  r.Z,
                  {
                    noFocusRing: !0,
                    preferredFocus: this.props.selected,
                    ref: this.m_refDiv,
                    navRef: this.m_ref,
                    onMouseEnter: this.OnMouseEnter,
                    ...i,
                    className: (0, p.A)(
                      this.props.className,
                      o.contextMenuItem,
                      "contextMenuItem",
                      this.props.disabled && "disabled",
                      this.props.selected && o.Selected,
                      "positive" == this.props.tone && o.Positive,
                      "emphasis" == this.props.tone && o.Emphasis,
                      "destructive" == this.props.tone && o.Destructive,
                    ),
                    focusClassName: o.Focused,
                    onClick: this.props.disabled ? void 0 : this.OnClick,
                    focusable: !this.props.disabled,
                    onOKButton: this.OnOKButton,
                    onMoveRight: n,
                    unselectable: this.props.unselectable,
                  },
                  this.props.children,
                )
              : c.createElement(
                  u.D,
                  {
                    ref: this.m_refDiv,
                    onMouseEnter: this.OnMouseEnter,
                    ...i,
                    onClick: this.OnClick,
                    unselectable: this.props.unselectable,
                    className: this.props.className,
                  },
                  this.props.children,
                );
          }
        }
        (0, i.Cg)([f.oI], y.prototype, "OnClick", null),
          (0, i.Cg)([f.oI], y.prototype, "OnOKButton", null),
          (0, i.Cg)([f.oI], y.prototype, "OnMouseEnter", null),
          (0, i.Cg)([f.oI], y.prototype, "Focus", null);
        class E extends c.PureComponent {
          render() {
            const { bChecked: e, children: t, className: n, ...i } = this.props;
            return c.createElement(
              y,
              { ...i, className: (0, p.A)(n, e && "menuChecked") },
              c.createElement("div", { className: "contextMenuCheckMark" }),
              t,
            );
          }
        }
        c.PureComponent;
        function D(e) {
          const t = c.useContext(I).styles ?? b();
          return c.createElement("div", { className: t.ContextMenuSeparator });
        }
        const A = (e) => {
          const t = (0, S.Qn)();
          return c.createElement(T, { ...e, bInGamepadUI: t });
        };
        class T extends c.PureComponent {
          static contextType = I;
          m_refItem = c.createRef();
          constructor(e) {
            super(e), (this.state = { bActive: !1 });
          }
          get instance() {
            return this.context.instance;
          }
          OnSubMenuMouseEnter() {
            this.instance.CancelHideSubMenuTimer();
          }
          OnSubMenuHidden() {
            this.setState({ bActive: !1 }),
              this.props.bInGamepadUI &&
                1 == this.context.presentation &&
                this.m_refItem.current &&
                this.m_refItem.current.Focus();
          }
          ShowSubMenu(e) {
            const t = e || this.m_refItem.current.element;
            let n = this.instance.ShowSubMenu(t, this.RenderSubMenu);
            return (
              !!n &&
              (this.setState({ bActive: !0 }),
              n.SetOnHideCallback(this.OnSubMenuHidden),
              !0)
            );
          }
          RenderSubMenu() {
            return c.createElement(
              w,
              {
                onMouseEnter: this.OnSubMenuMouseEnter,
                label: this.props.label,
              },
              this.props.children,
            );
          }
          OnMouseEnter(e) {
            0 == this.context.presentation && this.ShowSubMenu(e.currentTarget);
          }
          OnClick(e) {
            this.OnMouseEnter(e),
              this.props.onClick && this.props.onClick(e),
              this.props.bInGamepadUI &&
                1 == this.context.presentation &&
                this.ShowSubMenu(e.currentTarget);
          }
          render() {
            let {
              label: e,
              selectedWithin: t,
              children: n,
              className: i,
              bInGamepadUI: o,
              ...r
            } = this.props;
            const a = this.context.styles ?? b();
            return c.createElement(
              y,
              {
                ...r,
                ref: this.m_refItem,
                onClick: this.OnClick,
                selected: t && !this.state.bActive,
                className: (0, p.A)(
                  i,
                  a.SubMenu,
                  this.state.bActive && a.active,
                ),
                onMouseEnter: this.OnMouseEnter,
                bInteractableItem: !0,
                onMoveRight: () => this.ShowSubMenu(),
              },
              c.createElement("div", { className: a.Label }, e),
              c.createElement(
                "div",
                { className: a.Arrow },
                c.createElement(h.GB9, null),
              ),
            );
          }
        }
        (0, i.Cg)([f.oI], T.prototype, "OnSubMenuMouseEnter", null),
          (0, i.Cg)([f.oI], T.prototype, "OnSubMenuHidden", null),
          (0, i.Cg)([f.oI], T.prototype, "ShowSubMenu", null),
          (0, i.Cg)([f.oI], T.prototype, "RenderSubMenu", null),
          (0, i.Cg)([f.oI], T.prototype, "OnMouseEnter", null),
          (0, i.Cg)([f.oI], T.prototype, "OnClick", null);
        let M = class extends c.Component {
          m_elMenu = void 0;
          m_cReenteranceGuard = 1;
          m_mutationObserver;
          constructor(e) {
            super(e),
              (this.state = {
                ready: !1,
                menuLeft: void 0,
                menuTop: void 0,
                menuRight: void 0,
                menuBottom: void 0,
                menuWidth: void 0,
                menuHeight: void 0,
                menuMinWidth: void 0,
              }),
              (this.m_mutationObserver = new MutationObserver(
                this.OnMenuMutation,
              ));
          }
          get parentWin() {
            return (
              this.props.element?.ownerDocument.defaultView ||
              this.props.parentWin
            );
          }
          BindMenuElement(e) {
            this.props.instance.SetElement(e),
              this.m_elMenu &&
                (this.m_mutationObserver.disconnect(),
                (this.props.popup && !this.props.options.bScreenCoordinates) ||
                  this.m_elMenu.ownerDocument.defaultView?.removeEventListener(
                    "resize",
                    this.OnWindowResize,
                  )),
              e &&
                (this.m_mutationObserver.observe(e, {
                  childList: !0,
                  subtree: !0,
                }),
                (this.props.popup && !this.props.options.bScreenCoordinates) ||
                  e.ownerDocument.defaultView?.addEventListener(
                    "resize",
                    this.OnWindowResize,
                  )),
              (this.m_elMenu = e || void 0),
              S.TS.IN_CLIENT && this.props.popup && this.m_elMenu
                ? this.m_elMenu.ownerDocument.fonts.ready.then(() => {
                    this.PositionMenu();
                  })
                : this.PositionMenu(),
              this.state.ready ||
                (this.props.instance.SetTakeFocus(this.TakeFocus.bind(this)),
                this.setState({ ready: !0 }, () => {
                  this.props.options?.bSkipFocusWhenReady || this.TakeFocus();
                }));
          }
          OnMenuMutation(e, t) {
            this.PositionMenu();
          }
          OnWindowResize() {
            this.PositionMenu();
          }
          OnBlur(e) {
            if (
              (!e.relatedTarget || !g.id(e.currentTarget, e.relatedTarget)) &&
              (!e.relatedTarget ||
                !this.props.instance.BIsElementInMenuHierarchy(
                  e.relatedTarget,
                )) &&
              !this.props.instance.BIsSubMenuVisible() &&
              this.state.ready &&
              this.props.instance.visible
            ) {
              const e = G() ? 150 : 0;
              this.props.instance.OnCancel(e);
            }
          }
          OnKeyDown(e) {
            27 == e.keyCode &&
              this.state.ready &&
              (this.props.instance.Hide(),
              e.preventDefault(),
              e.stopPropagation());
          }
          componentDidUpdate() {
            this.m_cReenteranceGuard-- > 0
              ? this.PositionMenu()
              : (this.m_cReenteranceGuard = 2);
          }
          TakeFocus() {
            if (
              this.m_elMenu &&
              this.state.ready &&
              this.props.instance.visible &&
              (this.props.popup ||
                !g.id(this.m_elMenu, this.m_elMenu.ownerDocument.activeElement))
            ) {
              let e = this.m_elMenu.querySelector(".ContextMenuAutoFocus");
              e && e.focus ? e.focus() : this.m_elMenu.focus();
            }
          }
          PositionMenu(e = !1) {
            const t = this.props.options;
            let n = this.m_elMenu,
              i = this.props.element;
            if (!n) return;
            let o = null != this.props.popup,
              r = this.parentWin;
            if (!r || (i && "none" === r.getComputedStyle(i).display)) return;
            let a = this.props.clientX,
              s = this.props.clientY,
              l = 0,
              c = 0,
              m = r.innerWidth,
              d = r.innerHeight,
              u = 1,
              h = i?.getBoundingClientRect();
            if (o)
              if (
                (t.bScreenCoordinates ||
                  void 0 === a ||
                  void 0 === s ||
                  ((a += r.screenLeft), (s += r.screenTop)),
                h && (h = g.pd(r, h)),
                t.targetMonitor)
              )
                (u = t.targetMonitor.flMonitorScale),
                  (l = t.targetMonitor.nScreenLeft),
                  (c = t.targetMonitor.nScreenTop),
                  (m = t.targetMonitor.nScreenWidth),
                  (d = t.targetMonitor.nScreenHeight);
              else {
                let e = r.screen,
                  t = 0,
                  n = 0;
                e.availLeft && (t = e.availLeft),
                  e.availTop && (n = e.availTop),
                  (l = t),
                  (c = n),
                  (m = e.availWidth),
                  (d = e.availHeight);
              }
            (t.bOverlapHorizontal || t.bOverlapVertical) && (a = s = void 0);
            let p = n.getBoundingClientRect();
            if (t.flGamepadScale && t.flGamepadScale > 0) {
              const e = t.flGamepadScale;
              p = new DOMRect(p.x * e, p.y * e, p.width * e, p.height * e);
            }
            let _ = {
                menuLeft: void 0,
                menuRight: void 0,
                menuTop: void 0,
                menuBottom: void 0,
                menuWidth: void 0,
                menuHeight: void 0,
                menuMinWidth: void 0,
              },
              C = a ?? h.left,
              f = a ?? h.right,
              S = p.width;
            t.bMatchWidth && ((S = f - C), (_.menuWidth = S)),
              t.bGrowToElementWidth && (_.menuMinWidth = Math.max(S, f - C));
            let v = (t.bOverlapHorizontal ? f : C) - l - S,
              b = v > 0,
              I = l + m - (t.bOverlapHorizontal ? C : f) - S,
              w = I > 0,
              y = (t.bPreferPopLeft || !w) && b;
            b ||
              w ||
              ((y = b > w),
              t.bFitToWindow && ((S += (y ? v : I) - 8), (_.menuWidth = S))),
              y
                ? (_.menuRight = m - (t.bOverlapHorizontal ? f : C))
                : (_.menuLeft = t.bOverlapHorizontal ? C : f);
            let E = s ?? h.top,
              D = s ?? h.bottom,
              A = n.scrollHeight;
            t.bMatchHeight && ((A = D - E), (_.menuHeight = A));
            let T = (t.bOverlapVertical ? D : E) - c - A,
              M = T > 0,
              R = c + d - (t.bOverlapVertical ? E : D) - A,
              k = R > 0,
              L = (t.bPreferPopTop || !k) && M && !t.bDisablePopTop;
            if (!M && !k) {
              const e =
                void 0 !== t.bShiftToFitWindow
                  ? t.bShiftToFitWindow
                  : !!t.bFitToWindow && !t.bOverlapHorizontal;
              (L = T > R && !t.bDisablePopTop),
                e && (L ? (_.menuTop = 4) : (_.menuBottom = 4)),
                t.bFitToWindow &&
                  (e ? (A = Math.min(A, d - 8)) : (A += L ? T : R),
                  (_.menuHeight = A - 8));
            }
            void 0 === _.menuBottom &&
              void 0 === _.menuTop &&
              (L
                ? (_.menuBottom = d - (t.bOverlapVertical ? D : E))
                : (_.menuTop = t.bOverlapVertical ? E : D)),
              o
                ? (_.menuHeight || (_.menuHeight = p.height),
                  _.menuWidth || (_.menuWidth = p.width),
                  _.menuBottom &&
                    !_.menuTop &&
                    ((_.menuTop = d - _.menuBottom - _.menuHeight),
                    (_.menuBottom = void 0)),
                  _.menuRight &&
                    !_.menuLeft &&
                    ((_.menuLeft = m - _.menuRight - _.menuWidth),
                    (_.menuRight = void 0)))
                : "fixed" != r.getComputedStyle(n).position &&
                  (_.menuLeft && (_.menuLeft += r.scrollX),
                  _.menuTop && (_.menuTop += r.scrollY),
                  _.menuBottom &&
                    (_.menuBottom +=
                      r.document.body.clientHeight - r.scrollY - r.innerHeight),
                  _.menuRight &&
                    (_.menuRight +=
                      r.document.body.clientWidth - r.scrollX - r.innerWidth)),
              (e ||
                _.menuLeft !== this.state.menuLeft ||
                _.menuRight !== this.state.menuRight ||
                _.menuTop !== this.state.menuTop ||
                _.menuBottom !== this.state.menuBottom ||
                _.menuWidth !== this.state.menuWidth ||
                _.menuHeight !== this.state.menuHeight) &&
                this.setState(_);
          }
          PositionPopupWindow() {
            if (
              !(
                void 0 !== this.state.menuLeft &&
                void 0 !== this.state.menuTop &&
                void 0 !== this.state.menuWidth &&
                void 0 !== this.state.menuHeight
              )
            )
              return;
            const e = this.props.popup?.window,
              t = this.props.options;
            if (t.bScreenCoordinates) {
              let n = this.parentWin?.devicePixelRatio;
              if (t.targetMonitor) {
                let e = t.flGamepadScale || 1;
                n = (t.targetMonitor.flMonitorScale ?? 1) / e;
              }
              return (
                e?.SteamClient.Window.MoveTo(
                  this.state.menuLeft,
                  this.state.menuTop,
                  n,
                ),
                void e?.SteamClient.Window.ResizeTo(
                  this.state.menuWidth,
                  this.state.menuHeight,
                  n,
                )
              );
            }
            this.parentWin?.SteamClient.Window.GetWindowRestoreDetails().then(
              (t) => {
                const n = this.state.menuLeft - this.parentWin.screenX,
                  i = this.state.menuTop - this.parentWin.screenY;
                try {
                  e?.SteamClient.Window.PositionWindowRelative(
                    t,
                    n,
                    i,
                    this.state.menuWidth,
                    this.state.menuHeight,
                  );
                } catch (e) {
                  console.error(e);
                }
              },
            );
          }
          render() {
            let e = { visibility: this.state.ready ? "visible" : "hidden" };
            if (
              this.props.options.flGamepadScale &&
              this.props.options.flGamepadScale > 0
            )
              e.zoom = this.props.options.flGamepadScale;
            else if (
              this.props.options.bScreenCoordinates &&
              this.props.options.targetMonitor &&
              this.m_elMenu?.ownerDocument?.defaultView
            ) {
              const t =
                this.m_elMenu.ownerDocument.defaultView.devicePixelRatio;
              1 != t &&
                (e.zoom =
                  (this.props.options.targetMonitor.flMonitorScale ?? 1) / t);
            }
            this.props.popup
              ? (this.PositionPopupWindow(),
                void 0 !== this.state.menuMinWidth &&
                  (e.minWidth = this.state.menuMinWidth))
              : (void 0 !== this.state.menuTop
                  ? (e.top = this.state.menuTop)
                  : void 0 !== this.state.menuBottom &&
                    (e.bottom = this.state.menuBottom),
                void 0 !== this.state.menuLeft
                  ? (e.left = this.state.menuLeft)
                  : void 0 !== this.state.menuRight &&
                    (e.right = this.state.menuRight),
                void 0 !== this.state.menuHeight &&
                  (e.height = this.state.menuHeight),
                void 0 !== this.state.menuWidth &&
                  (e.width = this.state.menuWidth),
                void 0 !== this.state.menuMinWidth &&
                  (e.minWidth = this.state.menuMinWidth));
            let t = this.props.options.strClassName || b().contextMenu;
            return (
              (this.props.options.bCreateHidden ||
                (this.props.instance.visible && this.state.ready)) &&
                (t += " visible"),
              (t += " " + b().ContextMenuPosition),
              c.createElement(
                "div",
                {
                  className: t,
                  ref: this.BindMenuElement,
                  style: e,
                  onBlur: this.OnBlur,
                  onKeyDown: this.OnKeyDown,
                  tabIndex: 0,
                },
                this.props.children,
              )
            );
          }
        };
        function R(e) {
          return c.createElement("div", {
            className: b().ContextMenuMouseOverlay,
          });
        }
        function k(e) {
          let t = [],
            n = g.uX(e),
            i = n.getSelection(),
            o = i && i.rangeCount > 0 && i.toString().length > 0,
            r = e.target,
            a = !1;
          const s = e.clientY,
            l = e.clientX;
          if (
            (r &&
              "tagName" in r &&
              (("INPUT" != r.tagName && "TEXTAREA" != r.tagName) || (a = !0)),
            S.TS.IN_CLIENT &&
              a &&
              (0, d.Fj)(n, "Browser.GetSpellingSuggestions"))
          ) {
            let [e, ...i] = n.SteamClient.Browser.GetSpellingSuggestions(),
              o = r;
            if (
              (o &&
                i.forEach((e, i) => {
                  t.push(
                    c.createElement(
                      y,
                      {
                        key: `spelling_${i}_${e}`,
                        onSelected: () => {
                          o.setRangeText(e),
                            (function (e, t) {
                              let n = t.createEvent("HTMLEvents");
                              n.initEvent("change", !0, !1), e.dispatchEvent(n);
                            })(o, n.document),
                            o.setSelectionRange(o.selectionEnd, o.selectionEnd),
                            r.focus();
                        },
                        className: b().NoSeparation,
                      },
                      e,
                    ),
                  );
                }),
              e && (0, d.Fj)(n, "Browser.AddWordToDictionary"))
            ) {
              const i = 30;
              (e = e.trim()),
                t.push(
                  c.createElement(
                    y,
                    {
                      key: `addtodictionary_${e}`,
                      onSelected: () =>
                        n.SteamClient.Browser.AddWordToDictionary(e),
                    },
                    (0, C.we)(
                      "#ContextMenu_AddToDictionary",
                      e.length < i ? e : e.substring(0, i) + "...",
                    ),
                  ),
                );
            }
          }
          if (
            ((n.document.queryCommandEnabled("cut") || (o && a)) &&
              t.push(
                c.createElement(
                  y,
                  {
                    key: "cut",
                    onSelected: () => {
                      n.document.execCommand("cut");
                    },
                  },
                  (0, C.we)("#ContextMenu_Cut"),
                ),
              ),
            (n.document.queryCommandEnabled("copy") || o) &&
              t.push(
                c.createElement(
                  y,
                  {
                    key: "copy",
                    onSelected: () => {
                      n.document.execCommand("copy");
                    },
                    className: b().NoSeparation,
                  },
                  (0, C.we)("#ContextMenu_Copy"),
                ),
              ),
            S.TS.IN_CLIENT &&
              a &&
              (0, d.Fj)(n, "Browser.Paste") &&
              t.push(
                c.createElement(
                  y,
                  {
                    key: "paste",
                    onSelected: () => {
                      r.focus(), n.SteamClient.Browser.Paste();
                    },
                    className: b().NoSeparation,
                  },
                  (0, C.we)("#ContextMenu_Paste"),
                ),
              ),
            S.TS.IN_CLIENT && S.TS.DEV_MODE)
          ) {
            const e = [];
            (0, d.Fj)(n, "Browser.OpenDevTools") &&
              e.push(
                c.createElement(
                  y,
                  {
                    key: "opendevtools",
                    onSelected: () => {
                      r.focus(), n.SteamClient.Browser.OpenDevTools();
                    },
                  },
                  "Open Dev Tools",
                ),
              ),
              (0, d.Fj)(n, "Browser.InspectElement") &&
                e.push(
                  c.createElement(
                    y,
                    {
                      key: "inspectelement",
                      onSelected: () => {
                        r.focus(), n.SteamClient.Browser.InspectElement(s, l);
                      },
                      className: b().NoSeparation,
                    },
                    "Inspect Element",
                  ),
                ),
              e.length > 0 &&
                (t.push(c.createElement(D, { key: "devtools-separator" })),
                t.push(...e));
          }
          if (t.length)
            (0, m.lX)(c.createElement(w, null, t), e, { bRootContextMenu: !0 });
          else {
            if (e.shiftKey) return;
            e.preventDefault(), e.stopPropagation();
          }
        }
        (0, i.Cg)([f.oI], M.prototype, "BindMenuElement", null),
          (0, i.Cg)([f.oI, (0, _.s)(100)], M.prototype, "OnMenuMutation", null),
          (0, i.Cg)([f.oI], M.prototype, "OnWindowResize", null),
          (0, i.Cg)([f.oI], M.prototype, "OnBlur", null),
          (0, i.Cg)([f.oI], M.prototype, "OnKeyDown", null),
          (M = (0, i.Cg)([l.PA], M));
        const L = "EnableContextMenuBlurDelay3";
        function G() {
          return (
            "true" === (window.localStorage && window.localStorage.getItem(L))
          );
        }
        const F = "DEBUG_StickyContextMenus";
        function P() {
          return (
            window.sessionStorage && "true" == window.sessionStorage.getItem(F)
          );
        }
        function B(e) {
          e
            ? window.sessionStorage.setItem(F, "true")
            : window.sessionStorage.removeItem(F);
        }
      },
      453: (e, t, n) => {
        "use strict";
        n.d(t, { D: () => s, n: () => l });
        var i = n(63696),
          o = n(77171),
          r = n(26765),
          a = n.n(r);
        const s = i.forwardRef((e, t) => {
          const { className: n, contextMenuStyles: r, disabled: s, ...l } = e;
          return i.createElement("div", {
            ...l,
            ref: t,
            className: (0, o.A)(
              n,
              (r || a()).contextMenuItem,
              "contextMenuItem",
              s && "disabled",
            ),
          });
        });
        function l(e) {
          const { bChecked: t, children: n, className: r, ...a } = e;
          return i.createElement(
            s,
            { ...a, className: (0, o.A)(r, t && "menuChecked") },
            i.createElement("div", { className: "contextMenuCheckMark" }),
            n,
          );
        }
        s.displayName = "MenuItem";
      },
      4299: (e, t, n) => {
        "use strict";
        n.d(t, { y: () => c });
        var i = n(63696),
          o = n(23038),
          r = n(61726),
          a = n(77171);
        const s = 500;
        class l extends i.Component {
          render() {
            let {
              keyExtractor: e,
              style: t,
              duration: n = s,
              className: l,
              children: c,
              childRef: m,
              ...d
            } = this.props;
            const u = { ...(t || {}), transitionDuration: n / 1e3 + "s" };
            return i.createElement(
              o.A,
              { ...d, className: (0, a.A)("crossfade", l) },
              i.createElement(
                r.A,
                {
                  nodeRef: m,
                  classNames: "crossfade-anim",
                  timeout: n,
                  key: e(),
                  style: u,
                },
                c,
              ),
            );
          }
        }
        function c(e) {
          const { src: t, ...n } = e,
            o = { backgroundImage: `url(${t})` },
            r = i.useRef(null);
          return i.createElement(
            l,
            { style: o, keyExtractor: () => t, childRef: r, ...n },
            i.createElement("div", { ref: r, className: "crossfade-img" }),
          );
        }
      },
      36755: (e, t, n) => {
        "use strict";
        n.d(t, { M: () => r });
        var i = n(63696),
          o = n(61726);
        function r(e) {
          const { children: t, ...n } = e,
            r = i.useRef(null);
          return i.createElement(o.A, { nodeRef: r, ...n }, e.children(r));
        }
      },
      25468: (e, t, n) => {
        "use strict";
        n.d(t, { Ce: () => o, Zt: () => a, a_: () => r });
        var i = n(63696);
        const o = i.createContext({}),
          r = () => i.useContext(o);
        function a(e, t) {
          return r()[e] ?? t;
        }
      },
      79181: (e, t, n) => {
        "use strict";
        n.d(t, {
          $n: () => G,
          CB: () => B,
          JU: () => f,
          Od: () => V,
          QW: () => F,
          RF: () => U,
          U9: () => R,
          UC: () => A,
          VP: () => D,
          VQ: () => x,
          Xp: () => E,
          Y9: () => g,
          Yh: () => N,
          _E: () => P,
          a3: () => S,
          dR: () => y,
          f3: () => b,
          jn: () => L,
          lV: () => M,
          lr: () => w,
          nB: () => v,
          pF: () => O,
          wi: () => C,
          xz: () => I,
        });
        var i = n(34629),
          o = n(63696),
          r = n(23812),
          a = n(69074),
          s = n(81734),
          l = n(24803),
          c = n(69450),
          m = n(77171),
          d = n(74002),
          u = n(18427),
          h = n(25468),
          p = n(35468);
        function _(e) {
          return o.forwardRef(function (t, n) {
            return o.createElement(a.Z, {
              ...t,
              className: (0, m.A)(e, t.className),
              ref: n,
            });
          });
        }
        let g = (0, l.Ri)("DialogHeader"),
          C =
            ((0, l.Ri)("DialogSubHeader"),
            (0, l.Ri)("SettingsDialogSubHeader"),
            (0, l.Ri)("DialogFooter")),
          f = (0, l.Ri)("DialogLabel _DialogLayout"),
          S = (0, l.Ri)("DialogBodyText"),
          v = (0, l.Ri)("DialogBody"),
          b = _("DialogBody"),
          I = (0, l.Ri)("DialogInnerBody"),
          w =
            ((0, l.Ri)("DialogControlsSection"),
            (0, l.Ri)("DialogControlsSectionHeader")),
          y = _("DialogTwoColLayout _DialogColLayout"),
          E = _("DialogThreeColLayout _DialogColLayout"),
          D =
            (_("DialogTwoThirdColLayout _DialogColLayout"),
            (0, l.Ri)("DialogColumn _DialogLayout"));
        function A(e) {
          const t = (0, h.Zt)("Content", T);
          return o.createElement(t, { ...e });
        }
        function T(e) {
          let { children: t, bCenterVertically: n, refElem: i, ...r } = e,
            a =
              "DialogContent _DialogLayout" +
              (e.className ? " " + e.className : "");
          return (
            n && (a += " _DialogCenterVertically"),
            o.createElement(
              "div",
              { ...r, ref: i, className: a },
              o.createElement(
                "div",
                { className: "DialogContent_InnerWidth" },
                t,
              ),
            )
          );
        }
        class M extends o.Component {
          OnSubmit(e) {
            e.preventDefault(), this.props.onSubmit && this.props.onSubmit(e);
          }
          render() {
            return o.createElement("form", {
              ...this.props,
              onSubmit: this.OnSubmit,
            });
          }
        }
        function R(e) {
          const { classNameContent: t, bCenterVertically: n, ...i } = e;
          return o.createElement(
            A,
            { className: t, bCenterVertically: n },
            o.createElement(M, { ...i }),
          );
        }
        (0, i.Cg)([c.o], M.prototype, "OnSubmit", null);
        const k = o.forwardRef(function (e, t) {
            const n = (0, h.a_)(),
              { svgicon: i, ...a } = e,
              s = (0, m.A)(
                e.className,
                void 0 !== i && "hasSVGIcon",
                a.disabled && "Disabled",
                n.strButtonClassName,
              ),
              l = (e) => {
                if (!a.disabled && e)
                  return (t) => {
                    t.stopPropagation(), e(t);
                  };
              };
            return o.createElement(
              r.fu,
              {
                ref: t,
                onOKActionDescription: a.disabled ? null : void 0,
                noFocusRing: !!n.strButtonClassName,
                ...a,
                className: s,
                disabled: !1,
                onClick: l(a.onClick),
                onPointerDown: l(a.onPointerDown),
                onPointerUp: l(a.onPointerUp),
                onPointerCancel: l(a.onPointerCancel),
                onMouseDown: l(a.onMouseDown),
                onMouseUp: l(a.onMouseUp),
                onTouchStart: l(a.onTouchStart),
                onTouchEnd: l(a.onTouchEnd),
                onTouchCancel: l(a.onTouchCancel),
                onSubmit: l(a.onSubmit),
              },
              i && i(),
              e.children,
            );
          }),
          L = o.forwardRef(function (e, t) {
            return o.createElement(k, {
              preferredFocus: !0,
              type: e.onClick ? "button" : "submit",
              ...e,
              ref: t,
              className: (0, m.A)(
                e.className,
                "DialogButton",
                "_DialogLayout",
                "Primary",
              ),
            });
          }),
          G = o.forwardRef(function (e, t) {
            return o.createElement(k, {
              type: "button",
              ...e,
              ref: t,
              className: (0, m.A)(
                e.className,
                "DialogButton",
                "_DialogLayout",
                "Secondary",
              ),
            });
          }),
          F =
            (o.forwardRef(function (e, t) {
              return o.createElement(k, {
                type: "button",
                ...e,
                ref: t,
                className: (0, m.A)(
                  e.className,
                  "DialogButton",
                  "_DialogLayout",
                  "EmptyButton",
                ),
              });
            }),
            o.forwardRef(function (e, t) {
              return o.createElement(k, {
                type: "button",
                ...e,
                ref: t,
                className: (0, m.A)(
                  e.className,
                  "DialogButton _DialogLayout Small",
                ),
              });
            }),
            o.forwardRef(function (e, t) {
              return o.createElement(k, {
                type: "button",
                ...e,
                ref: t,
                className: (0, m.A)(e.className, "TextButton"),
              });
            }));
        function P(e) {
          let t = "DialogHBar" + (e.className ? " " + e.className : "");
          return o.createElement("div", { ...e, className: t });
        }
        function B(e) {
          return o.createElement(
            y,
            { className: e.className },
            o.createElement(
              L,
              {
                onClick: e.onOK,
                disabled: e.bOKDisabled,
                autoFocus: "primary" == e.focusButton,
              },
              e.strOKText || (0, d.we)("#Button_Confirm"),
              " ",
            ),
            o.createElement(
              G,
              {
                onClick: e.onCancel,
                disabled: e.bCancelDisabled,
                autoFocus: "secondary" == e.focusButton,
              },
              e.strCancelText || (0, d.we)("#Button_Cancel"),
            ),
          );
        }
        function x(e) {
          const t = e.bOKDisabled ? G : L,
            n = e.bOKDisabled ? L : G;
          return o.createElement(
            E,
            null,
            o.createElement(
              t,
              { onClick: e.onOK, disabled: e.bOKDisabled },
              e.strOKText || (0, d.we)("#Button_Confirm"),
              " ",
            ),
            o.createElement(
              n,
              { onClick: e.onUpdate, disabled: e.bUpdateDisabled },
              e.strUpdateText || (0, d.we)("#Button_Update"),
              " ",
            ),
            o.createElement(
              G,
              { onClick: e.onCancel, disabled: e.bCancelDisabled },
              e.strCancelText || (0, d.we)("#Button_Cancel"),
            ),
          );
        }
        class O extends o.Component {
          constructor(e) {
            super(e),
              (this.state = { checked: e.checked, disabled: e.disabled });
          }
          componentDidUpdate(e) {
            this.props.controlled ||
              (e.checked != this.props.checked &&
                this.props.checked != this.state.checked &&
                this.setState({ checked: this.props.checked })),
              e.disabled != this.props.disabled &&
                this.props.disabled != this.state.disabled &&
                this.setState({ disabled: this.props.disabled });
          }
          shouldComponentUpdate(e, t) {
            return (
              e.label != this.props.label ||
              e.description != this.props.description ||
              e.onChange != this.props.onChange ||
              e.controlled != this.props.controlled ||
              e.disabled != this.props.disabled ||
              t.disabled != this.state.disabled ||
              e.checked != this.checked ||
              t.checked != this.state.checked
            );
          }
          get checked() {
            return this.props.controlled
              ? this.props.checked
              : this.state.checked;
          }
          GetPanelElementProps() {
            const {
              onChange: e,
              checked: t,
              label: n,
              description: i,
              tabIndex: o,
              disabled: r,
              className: a,
              tooltip: s,
              color: l,
              highlightColor: c,
              bottomSeparator: m,
              controlled: d,
              ...u
            } = this.props;
            return {
              ...u,
              tabIndex: o || 0,
              onActivate: this.Toggle,
              onKeyDown: this.KeyDown,
            };
          }
          Toggle() {
            if (this.props.disabled) return;
            let e = !this.checked;
            this.props.controlled || this.setState({ checked: e }),
              this.props.onChange && this.props.onChange(e);
          }
          KeyDown(e) {
            32 == e.keyCode &&
              (this.Toggle(), e.preventDefault(), e.stopPropagation());
          }
          SetChecked(e, t) {
            this.setState({ checked: e }),
              t && this.props.onChange && this.props.onChange(e);
          }
        }
        (0, i.Cg)([c.o], O.prototype, "Toggle", null),
          (0, i.Cg)([c.o], O.prototype, "KeyDown", null),
          (0, i.Cg)([c.o], O.prototype, "SetChecked", null);
        class N extends O {
          render() {
            let e = "DialogCheckbox" + (this.checked ? " Active" : "");
            return (
              1 == this.state.disabled && (e += " Disabled"),
              this.props.label
                ? o.createElement(
                    a.Z,
                    {
                      className:
                        "DialogCheckbox_Container _DialogLayout " +
                        (this.props.className ? this.props.className : "") +
                        (this.state.disabled ? " Disabled" : ""),
                      ...this.GetPanelElementProps(),
                    },
                    o.createElement(
                      "div",
                      { className: e },
                      o.createElement(s.X4B, {
                        color: this.props.color,
                        highlightColor: this.props.highlightColor,
                      }),
                    ),
                    o.createElement(
                      "div",
                      { className: "DialogToggle_Label" },
                      "string" == typeof this.props.label &&
                        o.createElement("span", null, this.props.label),
                      "string" != typeof this.props.label && this.props.label,
                      this.props.tooltip &&
                        o.createElement(u.o, { tooltip: this.props.tooltip }),
                    ),
                    o.createElement("div", { style: { clear: "left" } }),
                    this.props.description &&
                      o.createElement(
                        "div",
                        { className: "DialogToggle_Description" },
                        this.props.description,
                      ),
                    this.props.children,
                  )
                : o.createElement(
                    a.Z,
                    { className: e, ...this.GetPanelElementProps() },
                    o.createElement(s.X4B, null),
                  )
            );
          }
        }
        class V extends O {
          render() {
            let e = this.checked ? " Active" : "";
            return (
              1 == this.state.disabled && (e += " Disabled"),
              o.createElement(
                a.Z,
                {
                  className: (0, m.A)(
                    "DialogRoundCheckboxField_Container",
                    this.props.className,
                    this.props.label ? "WithLabel" : "",
                    e,
                  ),
                  ...this.GetPanelElementProps(),
                },
                o.createElement(
                  "div",
                  { className: "DialogRoundCheckboxField" },
                  o.createElement(
                    "div",
                    { className: "DialogRoundCheckboxField_Control" + e },
                    o.createElement(
                      "div",
                      { className: "DialogRoundCheckboxField_OuterCircle" },
                      o.createElement("div", {
                        className: "DialogRoundCheckboxField_InnerCircle",
                      }),
                    ),
                  ),
                ),
                this.props.label &&
                  o.createElement(
                    "div",
                    { className: "DialogToggle_Label" },
                    o.createElement("span", null, this.props.label),
                    this.props.tooltip &&
                      o.createElement(u.o, { tooltip: this.props.tooltip }),
                  ),
              )
            );
          }
        }
        const U = o.forwardRef(function (e, t) {
          const n = (0, h.Zt)("ToggleField", H);
          return o.createElement(n, { ref: t, ...e });
        });
        class H extends O {
          OnOffKeyDown(e) {
            (37 == e.keyCode && this.checked) ||
            (39 == e.keyCode && !this.checked)
              ? (this.Toggle(), e.preventDefault(), e.stopPropagation())
              : this.KeyDown(e);
          }
          OnNewUIToggle(e) {
            e !== this.checked && this.Toggle();
          }
          render() {
            let e =
              "DialogToggleField _DialogInputContainer _DialogLayout " +
              (this.props.className ? this.props.className : "");
            return (
              this.props.disabled && (e += " Disabled"),
              o.createElement(
                "div",
                {
                  className: e,
                  tabIndex: this.props.tabIndex || 0,
                  onKeyDown: this.OnOffKeyDown,
                },
                o.createElement(
                  "div",
                  { className: "displayColumn alignSelfCenter" },
                  o.createElement(
                    "div",
                    { className: "DialogToggle_Label" },
                    o.createElement("span", null, this.props.label),
                    this.props.tooltip &&
                      o.createElement(u.o, { tooltip: this.props.tooltip }),
                  ),
                  this.props.description &&
                    o.createElement(
                      "div",
                      { className: "DialogToggle_Description" },
                      this.props.description,
                    ),
                  this.props.children,
                ),
                this.props.useToggleRail
                  ? o.createElement(
                      "div",
                      { className: "DialogToggleField_NewUIContainer" },
                      o.createElement(p._H, {
                        onChange: this.OnNewUIToggle,
                        value: this.checked,
                      }),
                    )
                  : o.createElement(
                      "div",
                      {
                        className: "DialogToggleField_Control",
                        onClick: this.Toggle,
                      },
                      o.createElement(
                        a.Z,
                        {
                          className: "DialogToggleField_OptionPanel",
                          onOKButton: this.Toggle,
                        },
                        o.createElement(
                          "div",
                          {
                            className:
                              "DialogToggleField_Option Off" +
                              (this.checked ? "" : " Active"),
                          },
                          (0, d.we)("#Dialog_Off"),
                        ),
                        o.createElement(
                          "div",
                          {
                            className:
                              "DialogToggleField_Option On" +
                              (this.checked ? " Active" : ""),
                          },
                          (0, d.we)("#Dialog_On"),
                        ),
                      ),
                    ),
              )
            );
          }
        }
        (0, i.Cg)([c.o], H.prototype, "OnOffKeyDown", null),
          (0, i.Cg)([c.o], H.prototype, "OnNewUIToggle", null);
      },
      89021: (e, t, n) => {
        "use strict";
        n.d(t, {
          pF: () => i.pF,
          nB: () => i.nB,
          f3: () => i.f3,
          a3: () => i.a3,
          $n: () => i.$n,
          Yh: () => i.Yh,
          VP: () => i.VP,
          UC: () => i.UC,
          U9: () => i.U9,
          Mw: () => ye,
          rP: () => b,
          ZU: () => H,
          m: () => N,
          D0: () => Ge,
          wi: () => i.wi,
          lV: () => i.lV,
          d3: () => It,
          y4: () => Dt,
          _E: () => i._E,
          Y9: () => i.Y9,
          xz: () => i.xz,
          pd: () => C,
          JU: () => i.JU,
          eo: () => f,
          ck: () => te,
          CB: () => i.CB,
          VQ: () => i.VQ,
          Bv: () => we,
          jn: () => i.jn,
          a: () => A,
          zW: () => D,
          AL: () => ne,
          Od: () => i.Od,
          Kc: () => v,
          QW: () => i.QW,
          Xp: () => i.Xp,
          Hk: () => I._H,
          RF: () => i.RF,
          P8: () => I.P8,
          dR: () => i.dR,
          Zy: () => S,
          a_: () => _.a_,
        });
        var i = n(79181),
          o = n(34629),
          r = n(63696),
          a = n(23812),
          s = n(69074),
          l = n(81734),
          c = n(77765),
          m = n(77171),
          d = n(74002),
          u = n(82924),
          h = n(39927),
          p = n(18427),
          _ = n(25468);
        const g = r.forwardRef(function (e, t) {
          const n = (0, _.Zt)("InputElement", a.BA);
          return r.createElement(n, { ...e, ref: t });
        });
        class C extends r.PureComponent {
          m_CopiedAnimation;
          ref = r.createRef();
          constructor(e) {
            super(e),
              this.CheckProps(e),
              (this.state = {
                m_CopiedYPos: 0,
                m_bPlayingCopiedAnimation: !1,
                m_bCompletedCopiedAnimation: !1,
                m_bNumberBelowMinRange: !1,
                m_bNumberAboveMaxRange: !1,
                m_bIsNotNumeric: !1,
                m_bIsInvalidURL: !1,
                m_strInvalidURLMessage: null,
                m_bIsInvalidEmail: !1,
                m_bAboveMaxChars: !1,
              });
          }
          componentDidUpdate(e) {
            this.CheckProps(this.props);
          }
          m_elInput;
          OnInputRef(e) {
            (this.m_elInput = e),
              this.m_elInput &&
                this.props.focusOnMount &&
                this.m_elInput.focus();
          }
          get element() {
            return this.m_elInput;
          }
          get value() {
            return this.m_elInput && this.m_elInput.value;
          }
          Focus() {
            this.m_elInput?.focus();
          }
          static validateUrl(e) {
            return (
              null != e &&
              (/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(
                e,
              ) ||
                /^steam:\/\/[-a-zA-Z0-9@:%._\+~#=]{2,256}/i.test(e))
            );
          }
          static validateEmail(e) {
            return (
              null != e &&
              /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
                e.toLowerCase(),
              )
            );
          }
          Validate() {
            this.setState({
              m_bNumberBelowMinRange:
                null !== this.props.rangeMin &&
                void 0 !== this.props.rangeMin &&
                Number(this.m_elInput?.value) < this.props.rangeMin,
              m_bNumberAboveMaxRange:
                null !== this.props.rangeMax &&
                void 0 !== this.props.rangeMax &&
                Number(this.m_elInput?.value) > this.props.rangeMax,
              m_bIsNotNumeric:
                1 == this.props.mustBeNumeric &&
                isNaN(Number(this.m_elInput?.value)),
              m_bIsInvalidURL:
                1 == this.props.mustBeURL &&
                !C.validateUrl(this.m_elInput?.value),
              m_strInvalidURLMessage: this.props.fnStrValidateURL
                ? this.props.fnStrValidateURL(this.m_elInput?.value)
                : null,
              m_bIsInvalidEmail:
                1 == this.props.mustBeEmail &&
                !C.validateEmail(this.m_elInput?.value),
              m_bAboveMaxChars:
                null != this.props.maxChars &&
                null != this.m_elInput &&
                this.m_elInput.value.length > this.props.maxChars,
            });
          }
          OnChanged(e) {
            this.props.onChange && this.props.onChange(e), this.Validate();
          }
          OnCopyClick(e) {
            if (!this.m_elInput) return;
            this.m_elInput.select();
            let t = this.m_elInput.ownerDocument;
            if (t.queryCommandEnabled("copy")) {
              t.execCommand("copy"),
                e.currentTarget.focus(),
                this.m_CopiedAnimation && this.m_CopiedAnimation.Cancel();
              let n = -4,
                i = -24;
              this.setState({ m_bCompletedCopiedAnimation: !1 }),
                this.setState({ m_CopiedYPos: n }, () => {
                  (this.m_CopiedAnimation = new h.w(
                    this,
                    { m_CopiedYPos: i },
                    {
                      msDuration: 300,
                      timing: "sine",
                      setStateOnComplete: { m_bCompletedCopiedAnimation: !0 },
                    },
                  )),
                    this.m_CopiedAnimation.Start();
                });
            }
          }
          OnClearClick(e) {
            if (this.m_elInput && this.m_elInput.value) {
              Object.getOwnPropertyDescriptor(
                window.HTMLInputElement.prototype,
                "value",
              ).set.call(this.m_elInput, ""),
                this.m_elInput.dispatchEvent(
                  new Event("input", { bubbles: !0 }),
                );
            }
          }
          CheckProps(e) {
            (0, c.w)(
              !(e.bShowClearAction || e.bAlwaysShowClearAction) || e.onChange,
              "In order for bShowClearAction to work correctly, you should be handling onChange and passing value to the Dialog.Input.",
            );
          }
          render() {
            const {
              label: e,
              description: t,
              requiredLabel: n,
              bShowCopyAction: o,
              bShowClearAction: a,
              bAlwaysShowClearAction: c,
              rangeMin: m,
              rangeMax: u,
              mustBeNumeric: h,
              mustBeURL: _,
              fnStrValidateURL: C,
              mustBeEmail: f,
              focusOnMount: S,
              tooltip: v,
              inlineControls: b,
              maxChars: I,
              ...w
            } = this.props;
            let y =
                "DialogInput DialogInputPlaceholder DialogTextInputBase" +
                (w.className ? " " + w.className : ""),
              E = "copiedAnimation",
              D = this.state.m_bCompletedCopiedAnimation;
            this.m_CopiedAnimation && (E = "copiedAnimation animationPlaying"),
              D && (E = "copiedAnimation animationComplete");
            let A = {};
            void 0 !== this.state.m_CopiedYPos &&
              (A.transform = "translateY(" + this.state.m_CopiedYPos + "px)");
            let T = r.createElement(
              r.Fragment,
              null,
              r.createElement(
                s.Z,
                {
                  className: "DialogInput_Wrapper _DialogLayout",
                  "flow-children": "row",
                  ref: this.ref,
                },
                r.createElement(g, {
                  type: "text",
                  ...w,
                  className: y,
                  ref: this.OnInputRef,
                  onChange: this.OnChanged,
                }),
                o &&
                  r.createElement(
                    "div",
                    { className: "displayRow" },
                    r.createElement(
                      i.$n,
                      {
                        className: "DialogInput_CopyAction Primary",
                        onClick: this.OnCopyClick,
                      },
                      (0, d.we)("#Button_Copy"),
                    ),
                    r.createElement(
                      "div",
                      { style: A, className: E },
                      (0, d.we)("#Button_Copied"),
                    ),
                  ),
                (c || (a && w.value)) &&
                  r.createElement(
                    "div",
                    {
                      className: "DialogInput_ClearAction",
                      onClick: this.OnClearClick,
                    },
                    r.createElement(l.sED, null),
                  ),
                b,
              ),
              t &&
                r.createElement(
                  "div",
                  { className: "DialogLabelExplainer" },
                  t,
                ),
            );
            return e
              ? r.createElement(
                  "div",
                  {
                    className:
                      "DialogInputLabelGroup _DialogLayout DialogRequirementLabel",
                  },
                  r.createElement(
                    "label",
                    null,
                    r.createElement(
                      "div",
                      { className: "DialogLabel" },
                      e,
                      " ",
                      this.props.tooltip &&
                        r.createElement(p.o, { tooltip: this.props.tooltip }),
                      r.createElement(
                        "span",
                        { className: "DialogInputRequirementLabel" },
                        this.props.requiredLabel,
                      ),
                      " ",
                    ),
                    T,
                    this.state.m_bNumberBelowMinRange
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          (0, d.we)("#Input_Error_NumberTooSmall"),
                          " ",
                        )
                      : null,
                    this.state.m_bNumberAboveMaxRange
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          (0, d.we)("#Input_Error_NumberTooLarge"),
                          " ",
                        )
                      : null,
                    this.state.m_bIsInvalidURL
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          (0, d.we)("#Input_Error_MustBeURL"),
                          " ",
                        )
                      : null,
                    this.state.m_strInvalidURLMessage
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          this.state.m_strInvalidURLMessage,
                          " ",
                        )
                      : null,
                    this.state.m_bIsInvalidEmail
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          (0, d.we)("#Input_Error_MustBeEmail"),
                          " ",
                        )
                      : null,
                    this.state.m_bIsNotNumeric
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          (0, d.we)("#Input_Error_MustBeNumber"),
                          " ",
                        )
                      : null,
                    this.state.m_bAboveMaxChars
                      ? r.createElement(
                          "div",
                          null,
                          " ",
                          (0, d.PP)("#Input_Error_TooManyCharacters", I),
                          " ",
                        )
                      : null,
                  ),
                )
              : T;
          }
        }
        (0, o.Cg)([u.oI], C.prototype, "OnInputRef", null),
          (0, o.Cg)([u.oI], C.prototype, "OnChanged", null),
          (0, o.Cg)([u.oI], C.prototype, "OnCopyClick", null),
          (0, o.Cg)([u.oI], C.prototype, "OnClearClick", null);
        class f extends C {
          m_bFocused = !1;
          OnBackgroundClick() {
            this.m_elInput && this.m_elInput.focus();
          }
          OnInputFocus(e) {
            this.m_bFocused || ((this.m_bFocused = !0), this.forceUpdate()),
              this.props.onFocus && this.props.onFocus(e);
          }
          OnInputBlur(e) {
            this.m_bFocused && ((this.m_bFocused = !1), this.forceUpdate()),
              this.props.onBlur && this.props.onBlur(e);
          }
          render() {
            const {
              label: e,
              description: t,
              requiredLabel: n,
              bShowCopyAction: i,
              bShowClearAction: o,
              bAlwaysShowClearAction: l,
              rangeMin: c,
              rangeMax: d,
              maxChars: u,
              mustBeNumeric: h,
              mustBeURL: p,
              fnStrValidateURL: _,
              mustBeEmail: g,
              focusOnMount: C,
              tooltip: f,
              inlineControls: S,
              className: v,
              children: b,
              ...I
            } = this.props;
            return r.createElement(
              "div",
              {
                className:
                  "DialogInputLabelGroup _DialogLayout DialogListBuilderInput",
              },
              r.createElement(
                "label",
                null,
                e && r.createElement("div", { className: "DialogLabel" }, e),
                r.createElement(
                  "div",
                  {
                    className: (0, m.A)(
                      "_DialogInputContainer",
                      "DialogTextInputBase",
                      this.m_bFocused && "Active",
                    ),
                    onClick: this.OnBackgroundClick,
                  },
                  r.createElement(
                    s.Z,
                    {
                      className: "DialogListBuilderInput_List",
                      "flow-children": "row",
                    },
                    r.Children.map(b, (e, t) =>
                      r.createElement(
                        "div",
                        {
                          className: "DialogListBuilderInput_ListItem",
                          key: t,
                        },
                        e,
                      ),
                    ),
                    r.createElement(a.BA, {
                      type: "text",
                      ...I,
                      className:
                        "DialogListBuilderInput_Input DialogInputPlaceholder",
                      ref: this.OnInputRef,
                      onFocus: this.OnInputFocus,
                      onBlur: this.OnInputBlur,
                      size: 4,
                    }),
                  ),
                ),
                t &&
                  r.createElement(
                    "div",
                    { className: "DialogLabelExplainer" },
                    t,
                  ),
              ),
            );
          }
        }
        (0, o.Cg)([u.oI], f.prototype, "OnBackgroundClick", null),
          (0, o.Cg)([u.oI], f.prototype, "OnInputFocus", null),
          (0, o.Cg)([u.oI], f.prototype, "OnInputBlur", null);
        const S = (e, t) =>
            "" +
            (null != e ? Number.parseFloat(e.toFixed(3)) : null) +
            (t ?? ""),
          v = (e) => {
            const t = (0, _.Zt)("SliderField", b);
            return r.createElement(t, { ...e });
          };
        class b extends r.Component {
          m_flLastSetValue = null;
          constructor(e) {
            super(e);
          }
          ClampValue(e) {
            return void 0 === e || isNaN(e) || e < this.props.min
              ? this.props.min
              : e > this.props.max
                ? this.props.max
                : e;
          }
          BPropsValid() {
            return this.props.max > this.props.min;
          }
          m_elSlider;
          m_rectSlider;
          OnMouseDown(e) {
            (this.m_elSlider = e.currentTarget),
              (this.m_rectSlider = this.m_elSlider.getBoundingClientRect()),
              this.props.onChangeStart && this.props.onChangeStart(1),
              this.AdjustSliderForClientX(e.clientX, 1),
              this.m_elSlider.ownerDocument.defaultView?.addEventListener(
                "mousemove",
                this.OnMouseMove,
              ),
              this.m_elSlider.ownerDocument.defaultView?.addEventListener(
                "mouseup",
                this.OnMouseUp,
              );
          }
          OnMouseMove(e) {
            this.AdjustSliderForClientX(e.clientX, 1);
          }
          OnMouseUp(e) {
            this.m_elSlider?.ownerDocument.defaultView?.removeEventListener(
              "mousemove",
              this.OnMouseMove,
            ),
              this.m_elSlider?.ownerDocument.defaultView?.removeEventListener(
                "mouseup",
                this.OnMouseUp,
              ),
              this.CompleteChange(1);
          }
          OnTouchStart(e) {
            (this.m_elSlider = e.currentTarget),
              (this.m_rectSlider = this.m_elSlider.getBoundingClientRect()),
              this.props.onChangeStart && this.props.onChangeStart(0),
              this.AdjustSliderForClientX(e.touches[0].clientX, 0),
              this.m_elSlider.ownerDocument.defaultView?.addEventListener(
                "touchmove",
                this.OnTouchMove,
              ),
              this.m_elSlider.ownerDocument.defaultView?.addEventListener(
                "touchend",
                this.OnTouchEnd,
              );
          }
          OnTouchMove(e) {
            this.AdjustSliderForClientX(e.touches[0].clientX, 0);
          }
          OnTouchEnd(e) {
            this.m_elSlider?.ownerDocument.defaultView?.removeEventListener(
              "touchmove",
              this.OnTouchMove,
            ),
              this.m_elSlider?.ownerDocument.defaultView?.removeEventListener(
                "touchend",
                this.OnTouchEnd,
              ),
              this.CompleteChange(0);
          }
          OnKeyDown(e) {
            let t = 1;
            e.ctrlKey &&
              (t = Math.max(
                1,
                Math.floor(0.1 * (this.props.max - this.props.min) + 0.5),
              )),
              37 == e.keyCode
                ? (this.IncrementValue(-1 * t), e.preventDefault())
                : 39 == e.keyCode &&
                  (this.IncrementValue(1 * t), e.preventDefault()),
              this.CompleteChange(2);
          }
          AdjustSliderForClientX(e, t) {
            let n =
              ((e - this.m_rectSlider.left) /
                (this.m_rectSlider.right - this.m_rectSlider.left)) *
                (this.props.max - this.props.min) +
              this.props.min;
            n = Math.floor(n + 0.5);
            const i = this.ClampValue(n);
            i != this.props.value &&
              (this.props.onChange && this.props.onChange(i, t),
              (this.m_flLastSetValue = i));
          }
          CompleteChange(e) {
            null != this.m_flLastSetValue &&
              (this.props.onChangeComplete &&
                this.props.onChangeComplete(this.m_flLastSetValue, e),
              (this.m_flLastSetValue = null));
          }
          IncrementValue(e) {
            let t = this.ClampValue(this.props.value + e);
            t != this.props.value &&
              (this.props.onChange && this.props.onChange(t, 2),
              (this.m_flLastSetValue = t));
          }
          render() {
            let e = {},
              t = {};
            if (this.BPropsValid()) {
              let n =
                (100 * (this.props.value - this.props.min)) /
                  (this.props.max - this.props.min) +
                "%";
              (e.width = n), (t.left = n);
            }
            const { label: n, description: i, tooltip: o, ...a } = this.props,
              s = this.props.renderValue ?? S;
            return r.createElement(
              "div",
              {
                className:
                  "DialogSlider_Container _DialogInputContainer _DialogLayout" +
                  (this.props.className ? " " + this.props.className : ""),
                onKeyDown: this.OnKeyDown,
                tabIndex: this.props.tabIndex || 0,
              },
              n &&
                r.createElement(
                  "div",
                  { className: "DialogLabel" },
                  n,
                  Boolean(o) && r.createElement(p.o, { tooltip: o }),
                ),
              r.createElement(
                "div",
                {
                  className: "DialogSlider_Slider",
                  onMouseDown: this.OnMouseDown,
                  onTouchStart: this.OnTouchStart,
                },
                r.createElement("div", {
                  className: "DialogSlider_Value",
                  style: e,
                }),
                r.createElement("div", {
                  className: "DialogSlider_Grabber",
                  style: t,
                }),
              ),
              this.props.showValue &&
                r.createElement(
                  "div",
                  { className: "DialogLabelExplainer" },
                  s(this.props.value, this.props.valueSuffix),
                ),
              i &&
                r.createElement(
                  "div",
                  { className: "DialogLabelExplainer" },
                  i,
                ),
            );
          }
        }
        (0, o.Cg)([u.oI], b.prototype, "OnMouseDown", null),
          (0, o.Cg)([u.oI], b.prototype, "OnMouseMove", null),
          (0, o.Cg)([u.oI], b.prototype, "OnMouseUp", null),
          (0, o.Cg)([u.oI], b.prototype, "OnTouchStart", null),
          (0, o.Cg)([u.oI], b.prototype, "OnTouchMove", null),
          (0, o.Cg)([u.oI], b.prototype, "OnTouchEnd", null),
          (0, o.Cg)([u.oI], b.prototype, "OnKeyDown", null);
        var I = n(35468),
          w = n(82472),
          y = n.n(w);
        const E = r.createContext({ setValue: () => {} });
        function D(e) {
          const {
              value: t,
              onChange: n,
              classNames: i,
              disabled: o,
              children: a,
            } = e,
            l = { value: t, setValue: n, disabled: o };
          return r.createElement(
            E.Provider,
            { value: l },
            r.createElement(
              s.Z,
              {
                className: (0, m.A)(
                  y().Group,
                  "Shared_Radio_Group",
                  i,
                  o && y().Disabled,
                  l.bVertical && y().VerticalGrouping,
                ),
              },
              a,
            ),
          );
        }
        function A(e) {
          const { value: t, children: n, ...i } = e,
            { value: o, setValue: s, disabled: l } = r.useContext(E);
          let c = s;
          const d = t === o;
          return r.createElement(
            a.ml,
            {
              className: (0, m.A)(
                y().Button,
                "RadioButton",
                d && y().Active,
                l && y().Disabled,
              ),
              onClick: l ? void 0 : () => c(t),
              ...i,
            },
            n,
          );
        }
        var T = n(20270),
          M = n(94762),
          R = n(97229),
          k = n(65092),
          L = n.n(k);
        function G(e) {
          return "object" == typeof e && "data" in e;
        }
        function F(e) {
          return "object" == typeof e && "bIsSeparator" in e;
        }
        function P(e) {
          return "object" == typeof e && "options" in e;
        }
        function B(e, t) {
          if (e === t) return !0;
          if (!Array.isArray(e) || !Array.isArray(t)) return !1;
          if (e.length != t.length) return !1;
          for (let n = 0; n < e.length; n++) if (!x(e[n], t[n])) return !1;
          return !0;
        }
        function x(e, t) {
          return null == e || null == t
            ? e == t
            : !(!F(e) || !F(t)) ||
                (!F(e) &&
                  !F(t) &&
                  e.label === t.label &&
                    e.tooltip === t.tooltip &&
                      P(e) == P(t) &&
                        !(P(e) && P(t) && !B(e.options, t.options)) &&
                  (!G(e) || !G(t) || e.data === t.data));
        }
        function O(e, t) {
          if (null != e)
            for (let n = 0; n < e.length; n++) {
              const i = e[n];
              if (G(i) && i.data === t) return i;
              if (P(i)) {
                const e = O(i.options, t);
                if (null != e) return e;
              }
            }
        }
        function N(e) {
          const t = (0, _.Zt)("DropDownField", V);
          return r.createElement(t, { ...e });
        }
        function V(e) {
          const {
            label: t,
            tooltip: n,
            strClassName: i,
            dropDownControlRef: o,
            ...a
          } = e;
          return r.createElement(
            "div",
            {
              className: (0, m.A)("DialogInputLabelGroup", "_DialogLayout", i),
            },
            t &&
              r.createElement(
                "div",
                { className: "DialogLabel" },
                t,
                n && r.createElement(p.o, { tooltip: n }),
              ),
            r.createElement(H, { menuLabel: t, ...a, ref: o }),
          );
        }
        const U = r.forwardRef(function (e, t) {
          return r.createElement(
            a.fu,
            {
              focusable: e.focusable,
              className: (0, m.A)(
                e.className,
                "DialogDropDown",
                "_DialogInputContainer",
                { Active: e.opened, Disabled: e.disabled },
              ),
              tabIndex: e.tabIndex,
              onClick: e.onClick,
              onKeyDown: e.onKeyDown,
              disabled: e.disabled,
              type: "button",
              ref: t,
              noFocusRing: e.noFocusRing,
            },
            e.children,
            !e.disabled &&
              r.createElement(
                "div",
                {
                  className: (0, m.A)(e.arrowClassName, "DialogDropDown_Arrow"),
                },
                r.createElement(l.GB9, null),
              ),
          );
        });
        class H extends r.Component {
          static contextType = _.Ce;
          m_elInput;
          m_iMenuInstance;
          constructor(e) {
            super(e),
              (this.state = {
                value: O(e.rgOptions, e.selectedOption),
                bOpened: !1,
              });
          }
          SetSelectedOption(e) {
            if (this.props.controlled) return;
            const t = O(this.props.rgOptions, e);
            x(t, this.value) || this.setState({ value: t });
          }
          get value() {
            return this.props.controlled
              ? O(this.props.rgOptions, this.props.selectedOption)
              : this.state.value;
          }
          shouldComponentUpdate(e, t, n) {
            if (e.selectedOption !== this.props.selectedOption) return !0;
            if (e.disabled != this.props.disabled) return !0;
            if (t.bOpened !== this.state.bOpened) return !0;
            if (!B(this.props.rgOptions, e.rgOptions)) return !0;
            if (!x(t.value, this.value)) return !0;
            let i = [
              "selectedOption",
              "tabIndex",
              "onChange",
              "strDefaultLabel",
            ];
            for (let t of i) if (e[t] !== this.props[t]) return !0;
            return !1;
          }
          componentDidUpdate(e, t) {
            (0, T.w)(
              this.props.controlled === e.controlled,
              '"controlled" prop should never change after mount',
            );
            const n = !B(e.rgOptions, this.props.rgOptions),
              i = e.selectedOption !== this.props.selectedOption,
              o = this.value !== t.value;
            !this.props.controlled &&
              (n || o || i) &&
              (i || null == this.value
                ? this.SetSelectedOption(this.props.selectedOption)
                : this.SetSelectedOption(this.value.data)),
              (n || o) &&
                (this.state.bOpened
                  ? (this.m_iMenuInstance?.SetOnHideCallback(void 0),
                    this.m_iMenuInstance?.Hide(),
                    (this.m_iMenuInstance = void 0),
                    this.BuildMenu())
                  : this.m_iMenuInstance &&
                    (this.m_iMenuInstance.SetOnHideCallback(void 0),
                    (this.m_iMenuInstance = void 0)));
          }
          OnInputRef(e) {
            e && (this.m_elInput = e);
          }
          get element() {
            return this.m_elInput;
          }
          ToggleMenu() {
            if (this.state.bOpened) this.HideMenu();
            else {
              if (
                this.props.onMenuWillOpen &&
                0 == this.props.onMenuWillOpen(this.ShowMenu)
              )
                return;
              this.ShowMenu();
            }
          }
          OnValueSelected(e, t) {
            this.HideMenu(),
              this.setState({ value: t }),
              this.props.onChange && this.props.onChange(t, this, e);
          }
          BuildMenu() {
            let e = "DialogMenuPosition";
            this.props.strDropDownClassName &&
              (e += " " + this.props.strDropDownClassName);
            let t = {
                bOverlapHorizontal: !0,
                bMatchWidth: this.props.bMatchWidth ?? !0,
                bFitToWindow: !0,
                strClassName: e,
                bDisableMouseOverlay: this.props.bDisableMouseOverlay,
                ...this.props.contextMenuPositionOptions,
              },
              n = this.props.contextMenuPositionOptions?.onCancel;
            (this.m_iMenuInstance = (0, M.lX)(
              r.createElement(z, {
                rgOptions: this.props.rgOptions,
                onValueSelected: this.OnValueSelected,
                onCancel: n,
                selectedValue: this.value?.data,
                strDropDownMenuCtnClass: this.props.strDropDownMenuCtnClass,
                strDropDownItemClassName: this.props.strDropDownItemClassName,
              }),
              this.m_elInput,
              t,
            )),
              this.m_iMenuInstance.SetLabel(
                this.props.menuLabel ??
                  ("string" == typeof this.props.strDefaultLabel &&
                    this.props.strDefaultLabel),
              ),
              this.m_iMenuInstance.SetOnHideCallback(this.HideMenu);
          }
          ShowMenu() {
            this.m_iMenuInstance
              ? this.m_iMenuInstance.Show()
              : this.BuildMenu(),
              this.props.onMenuOpened && this.props.onMenuOpened(),
              this.setState({ bOpened: !0 });
          }
          HideMenu() {
            this.m_iMenuInstance && this.m_iMenuInstance.Hide(),
              this.setState({ bOpened: !1 }, () => this.m_elInput.focus());
          }
          OnKeyDown(e) {
            j(e, this.props.rgOptions.filter(G), this.value?.data, (e) =>
              this.OnValueSelected(void 0, e),
            );
          }
          render() {
            const e = r.createElement(
                "div",
                { className: "DialogDropDown_CurrentDisplay" },
                this.value?.label ?? this.props.strDefaultLabel,
              ),
              t =
                null != this.props.renderButtonValue
                  ? this.props.renderButtonValue(e)
                  : e,
              n = this.props.focusable ?? !0,
              i =
                this.props.renderButton ||
                this.context.DropDownControlButton ||
                U;
            return r.createElement(
              i,
              {
                focusable: n,
                disabled: this.props.disabled ?? !1,
                opened: this.state.bOpened,
                onClick: this.props.disabled ? void 0 : this.ToggleMenu,
                onKeyDown: this.props.disabled ? void 0 : this.OnKeyDown,
                tabIndex: this.props.tabIndex ?? (n ? 0 : void 0),
                ref: this.OnInputRef,
                className: this.props.strDropDownButtonClassName,
                arrowClassName: this.props.arrowClassName,
              },
              t,
            );
          }
        }
        (0, o.Cg)([u.oI], H.prototype, "OnInputRef", null),
          (0, o.Cg)([u.oI], H.prototype, "ToggleMenu", null),
          (0, o.Cg)([u.oI], H.prototype, "OnValueSelected", null),
          (0, o.Cg)([u.oI], H.prototype, "ShowMenu", null),
          (0, o.Cg)([u.oI], H.prototype, "HideMenu", null),
          (0, o.Cg)([u.oI], H.prototype, "OnKeyDown", null);
        const W = r.createContext(null);
        function z(e) {
          const t = (0, _.Zt)("DropDownMenu", q);
          return r.createElement(
            W.Provider,
            { value: {} },
            r.createElement(t, { ...e }),
          );
        }
        function j(e, t, n, i) {
          let o;
          if ("ArrowDown" === e.key) {
            o = (t.findIndex((e) => e.data === n) + 1) % t.length;
          } else if ("ArrowUp" === e.key) {
            const e = t.findIndex((e) => e.data === n);
            o = e <= 0 ? t.length - 1 : e - 1;
          }
          void 0 !== o && (i(t[o]), e.preventDefault());
        }
        function q(e) {
          const {
              rgOptions: t,
              strDropDownItemClassName: n,
              onValueSelected: i,
              selectedValue: o,
            } = e,
            [a, s] = r.useState(o),
            l = r.useMemo(() => t.filter(G), [t]),
            c = r.useCallback(
              (e) => {
                j(e, l, a, (e) => s(e.data));
              },
              [a, l],
            );
          return r.createElement(
            "div",
            {
              className: (0, m.A)(
                L().DialogDropDownMenu,
                "_DialogInputContainer",
                e.strDropDownMenuCtnClass,
              ),
              onKeyDown: c,
            },
            r.createElement(K, {
              rgOptions: t,
              strDropDownItemClassName: n,
              onValueSelected: i,
              activeValue: a,
              setActiveValue: s,
            }),
          );
        }
        function K(e) {
          const { rgOptions: t, ...n } = e;
          return t.map((e, t) =>
            F(e)
              ? r.createElement("hr", {
                  key: t,
                  className: (0, m.A)(
                    L().DialogDropDownMenu_Item,
                    L().DialogDropDownMenu_Separator,
                  ),
                })
              : P(e)
                ? r.createElement(K, { key: t, ...n, rgOptions: e.options })
                : r.createElement(Z, { key: t, ...n, option: e }),
          );
        }
        function Z(e) {
          const {
              option: t,
              strDropDownItemClassName: n,
              onValueSelected: i,
              activeValue: o,
              setActiveValue: a,
            } = e,
            s = r.useCallback((e) => e && e.focus(), []),
            l = r.useCallback(() => {
              a(t.data);
            }, [a, t]),
            c = t.data === o;
          return r.createElement(
            "button",
            {
              type: "button",
              className: (0, m.A)(
                L().DialogDropDownMenu_Item,
                n,
                t.strOptionClass,
                c && "ContextMenuAutoFocus",
              ),
              onClick: (e) => i(e, t),
              ref: c ? s : void 0,
              onMouseEnter: l,
            },
            Boolean(t.tooltip)
              ? r.createElement(
                  R.he,
                  {
                    toolTipContent: t.tooltip,
                    bTopmost: !0,
                    className: "TooltipContainer",
                  },
                  t.label,
                )
              : r.createElement("div", null, t.label),
          );
        }
        class Q extends r.Component {
          state = { rgOptions: void 0 };
          async OnMenuOpened() {
            if (!this.state.rgOptions) {
              let e = await this.props.fnLoadOptions();
              this.setState({ rgOptions: e });
            }
          }
          render() {
            const {
              fnLoadOptions: e,
              strInitialDisplay: t,
              initialValue: n,
              ...i
            } = this.props;
            let { rgOptions: o } = this.state;
            return (
              void 0 === o &&
                (t || n
                  ? ((o = [{ label: t, data: n }]), (i.selectedOption = n))
                  : (o = [])),
              r.createElement(N, {
                ...i,
                rgOptions: o,
                onMenuOpened: this.OnMenuOpened,
              })
            );
          }
        }
        (0, o.Cg)([u.oI], Q.prototype, "OnMenuOpened", null);
        n(27998);
        var $ = n(89193),
          X = n(16280),
          Y = n(37779),
          J = n(49912);
        const ee = new (n(8805).wd)("DragDrop").Debug;
        function te(e) {
          return e.children;
        }
        class ne extends r.Component {
          m_coordinator = new oe();
          OnDrop(e, t) {
            t > e && t--, t != e && this.props.onReorder(e, t);
          }
          render() {
            let e = [];
            return (
              e.push(
                r.createElement(ce, {
                  coordinator: this.m_coordinator,
                  key: "dropregion_top",
                  fnBAcceptDraggable: (e) => 0 != e.props.data,
                  fnOnDrop: (e) => this.OnDrop(e.props.data, 0),
                }),
              ),
              r.Children.forEach(this.props.children, (t, n) => {
                const i = t.props.id || "__list_" + n,
                  o = n + 1;
                e.push(
                  r.createElement(
                    re,
                    { coordinator: this.m_coordinator, data: n, key: i },
                    t,
                  ),
                ),
                  e.push(
                    r.createElement(ce, {
                      coordinator: this.m_coordinator,
                      key: "dropregion_" + i,
                      fnBAcceptDraggable: (e) => e.props.data != o,
                      fnOnDrop: (e) => this.OnDrop(e.props.data, o),
                    }),
                  );
              }),
              r.createElement("div", { className: "DialogReorderableList" }, e)
            );
          }
        }
        function ie(e, t, n, i) {
          return i
            ? n && e > n.left && e < n.right && t > n.top && t < n.bottom
            : n && e >= n.left && e <= n.right && t >= n.top && t <= n.bottom;
        }
        (0, o.Cg)([u.oI], ne.prototype, "OnDrop", null);
        class oe {
          m_embeddedElement = new X.MX("DragGhosts");
          m_rgDropRegions = [];
          m_activeDraggable;
          m_rgActiveDropRegions = [];
          m_activeDropRegion;
          m_dropGhost;
          m_dragGhost;
          m_dragOffWindowTimer;
          RegisterDropRegion(e) {
            this.m_rgDropRegions.push(e),
              this.m_activeDraggable &&
                e.BAcceptDraggable(this.m_activeDraggable) &&
                (e.OnDragStarted(this.m_activeDraggable),
                this.m_rgActiveDropRegions.push(e));
          }
          UnregisterDropRegion(e) {
            Y.x9(this.m_rgDropRegions, e),
              Y.x9(this.m_rgActiveDropRegions, e),
              this.m_activeDropRegion == e &&
                ((this.m_activeDropRegion = void 0),
                this.m_activeDraggable && this.ShowDragGhost());
          }
          OnDragGhostRef(e) {
            this.m_dragGhost = e;
          }
          ShowDragGhost() {
            const e = this.m_activeDraggable.renderDragGhost(),
              t = (0, m.A)(
                e.props.className,
                !!this.m_activeDropRegion && "DraggedOverActiveDrop",
              ),
              n = r.cloneElement(e, { ref: this.OnDragGhostRef, className: t });
            this.m_embeddedElement.ShowElement(
              this.m_activeDraggable.GetDragDocument(),
              n,
              this.m_activeDraggable,
            );
          }
          HideDragGhost() {
            this.m_embeddedElement.HideElement(
              this.m_activeDraggable.GetDragDocument(),
              this.m_activeDraggable,
            );
          }
          m_elCloneContainer;
          m_elCloneOriginal;
          m_nodeCloneCopy;
          MakeDragClone(e) {
            (0, c.w)(
              !this.m_nodeCloneCopy && !this.m_elCloneOriginal,
              "Drag already in progress",
            ),
              (this.m_elCloneOriginal = e.m_divRef.current),
              (this.m_nodeCloneCopy = this.m_elCloneOriginal.cloneNode(!0)),
              e.m_divRef.current.replaceWith(this.m_nodeCloneCopy),
              this.m_elCloneContainer ||
                ((this.m_elCloneContainer = e
                  .GetDragDocument()
                  .body.ownerDocument.createElement("div")),
                e.GetDragDocument().body.appendChild(this.m_elCloneContainer)),
              this.m_elCloneContainer.appendChild(this.m_elCloneOriginal);
          }
          ReverseDragClone() {
            this.m_nodeCloneCopy.parentNode?.replaceChild(
              this.m_elCloneOriginal,
              this.m_nodeCloneCopy,
            ),
              (this.m_nodeCloneCopy = void 0),
              (this.m_elCloneOriginal = void 0);
          }
          OnDragStart(e) {
            (this.m_activeDraggable = e), (this.m_rgActiveDropRegions = []);
            for (let t of this.m_rgDropRegions)
              t.BAcceptDraggable(e) &&
                (t.OnDragStarted(e), this.m_rgActiveDropRegions.push(t));
            this.MakeDragClone(e), this.ShowDragGhost();
          }
          EndDrag() {
            if (this.m_activeDraggable) {
              this.ReverseDragClone(),
                this.HideDragGhost(),
                this.m_activeDropRegion &&
                  this.m_activeDropRegion.OnDrop(this.m_activeDraggable);
              for (let e of this.m_rgActiveDropRegions)
                e.OnDragEnded(this.m_activeDraggable);
              (this.m_activeDraggable = void 0),
                (this.m_dropGhost = void 0),
                (this.m_rgActiveDropRegions = []);
            }
          }
          FindBestActiveDropRegionForPoint(e, t) {
            const n = this.m_activeDraggable.GetDragDocument();
            let i;
            if (
              ("elementsFromPoint" in n && (i = n.elementsFromPoint(e, t)), i)
            ) {
              const e = new Map();
              this.m_rgActiveDropRegions.forEach((t) =>
                e.set(t.GetElement(), t),
              );
              for (const t of i) {
                const n = e.get(t);
                if (n) return n;
              }
            } else {
              if (
                this.m_activeDropRegion &&
                this.m_activeDropRegion.BDraggableInRegion(
                  e,
                  t,
                  this.m_activeDraggable,
                )
              )
                return this.m_activeDropRegion;
              for (let n = this.m_rgActiveDropRegions.length - 1; n >= 0; n--) {
                const i = this.m_rgActiveDropRegions[n];
                if (i.BDraggableInRegion(e, t, this.m_activeDraggable))
                  return i;
              }
            }
          }
          m_prevClientX = 0;
          m_prevClientY = 0;
          OnDrag(e, t, n) {
            const i = this.m_prevClientX || t,
              o = this.m_prevClientY || n;
            if (
              (e.props.bEnableHTMLDrag &&
                this.m_dragOffWindowTimer &&
                window.clearTimeout(this.m_dragOffWindowTimer),
              this.m_dragGhost)
            ) {
              const t =
                  void 0 === i ? 0 : i - (this.m_dragGhost.state.clientX ?? 0),
                n =
                  void 0 === o ? 0 : o - (this.m_dragGhost.state.clientY ?? 0);
              if (
                (this.m_dragGhost.setState({
                  clientX: i,
                  clientY: o,
                  clientXDelta: t,
                  clientYDelta: n,
                  bVisible: !0,
                }),
                e.props.bEnableHTMLDrag && (t || n))
              ) {
                const r = i + t,
                  a = o + n,
                  s = e.GetDragDocument().body.getBoundingClientRect();
                if (ie(i, o, s) && !ie(r, a, s, !0)) {
                  const t = J.Fu(
                      r,
                      s.left,
                      s.right,
                      s.left - 200,
                      s.right + 200,
                    ),
                    n = J.Fu(a, s.top, s.bottom, s.top - 100, s.bottom + 100),
                    i = 50;
                  this.m_dragOffWindowTimer = window.setTimeout(() => {
                    e == this.m_activeDraggable && this.OnDrag(e, t, n);
                  }, i);
                }
              }
            }
            const r = this.FindBestActiveDropRegionForPoint(i, o);
            (this.m_prevClientX = t),
              (this.m_prevClientY = n),
              !!this.m_activeDropRegion != !!r &&
                (this.ShowDragGhost(),
                this.m_dropGhost ||
                  (this.m_dropGhost =
                    this.m_activeDraggable.renderDropGhost())),
              this.m_activeDropRegion &&
                this.m_activeDropRegion != r &&
                this.m_activeDropRegion.OnDragLeave(this.m_activeDraggable),
              r &&
                this.m_activeDropRegion != r &&
                r.OnDragEnter(this.m_activeDraggable, this.m_dropGhost),
              (this.m_activeDropRegion = r),
              this.m_activeDropRegion &&
                this.m_activeDropRegion.OnDragMove(
                  i,
                  o,
                  this.m_activeDraggable,
                );
          }
        }
        (0, o.Cg)([u.oI], oe.prototype, "OnDragGhostRef", null);
        class re extends r.Component {
          constructor(e) {
            super(e), (0, $.Gn)(this);
          }
          m_DragInfo = {
            bStarted: !1,
            startClientX: void 0,
            startClientY: void 0,
            startOffsetX: void 0,
            startOffsetY: void 0,
            startWidth: void 0,
            startHeight: void 0,
            ownerWin: void 0,
          };
          m_divRef = r.createRef();
          GetDragDocument() {
            return this.m_DragInfo.ownerWin?.document;
          }
          RecordDragStart(e, t, n) {
            (this.m_DragInfo.startClientX = t),
              (this.m_DragInfo.startClientY = n);
            let i = e.getBoundingClientRect();
            (this.m_DragInfo.startOffsetX = t - i.left),
              (this.m_DragInfo.startOffsetY = n - i.top),
              (this.m_DragInfo.startWidth = i.width),
              (this.m_DragInfo.startHeight = i.height),
              (this.m_DragInfo.ownerWin = e.ownerDocument.defaultView);
          }
          ProcessDragMove(e) {
            ee("ProcessDragMove", e, this.props.data);
            const [t, n] = (function (e) {
              if ("touches" in e) {
                let t = e;
                return [t.touches[0].clientX, t.touches[0].clientY];
              }
              return [e.clientX, e.clientY];
            })(e);
            if (this.m_DragInfo.bStarted) {
              if (this.props.bEnableHTMLDrag && 0 == t && 0 == n) return;
              this.props.coordinator.OnDrag(this, t, n);
            } else
              Math.pow(t - (this.m_DragInfo.startClientX ?? 0), 2) +
                Math.pow(n - (this.m_DragInfo.startClientY ?? 0), 2) >=
                25 &&
                ((this.m_DragInfo.bStarted = !0),
                this.forceUpdate(),
                this.props.fnOnDragStart && this.props.fnOnDragStart(),
                this.props.coordinator.OnDragStart(this),
                this.props.coordinator.OnDrag(this, t, n));
          }
          OnMouseDown(e) {
            this.m_DragInfo.bStarted ||
              0 != e.button ||
              (this.RecordDragStart(e.currentTarget, e.clientX, e.clientY),
              this.m_DragInfo.ownerWin?.addEventListener(
                "mousemove",
                this.ProcessDragMove,
              ),
              this.m_DragInfo.ownerWin?.addEventListener(
                "mouseup",
                this.OnMouseUp,
              ));
          }
          OnMouseUp(e) {
            this.m_DragInfo.ownerWin?.removeEventListener(
              "mousemove",
              this.ProcessDragMove,
            ),
              this.m_DragInfo.ownerWin?.removeEventListener(
                "mouseup",
                this.OnMouseUp,
              ),
              this.ResetDragState();
          }
          OnTouchStart(e) {
            this.m_DragInfo.bStarted ||
              (this.RecordDragStart(
                e.currentTarget,
                e.touches[0].clientX,
                e.touches[0].clientY,
              ),
              this.m_DragInfo.ownerWin?.addEventListener(
                "touchmove",
                this.ProcessDragMove,
              ),
              this.m_DragInfo.ownerWin?.addEventListener(
                "touchend",
                this.OnTouchEnd,
              ));
          }
          OnTouchEnd(e) {
            this.m_DragInfo.ownerWin?.removeEventListener(
              "touchmove",
              this.ProcessDragMove,
            ),
              this.m_DragInfo.ownerWin?.removeEventListener(
                "touchend",
                this.OnTouchEnd,
              ),
              this.ResetDragState();
          }
          ResetDragState() {
            ee("ResetDragState", this.props.data),
              this.m_DragInfo.bStarted &&
                (this.props.coordinator.EndDrag(),
                this.props.fnOnDragEnd && this.props.fnOnDragEnd()),
              (this.m_DragInfo.bStarted = !1),
              (this.m_DragInfo.startClientX = void 0),
              (this.m_DragInfo.startClientY = void 0),
              (this.m_DragInfo.startOffsetX = void 0),
              (this.m_DragInfo.startOffsetY = void 0),
              (this.m_DragInfo.ownerWin = void 0),
              this.forceUpdate();
          }
          OnHTMLDragStart(e) {
            ee("HTMLDragStart", e, this.props.data, this.props.strHTMLDragData),
              (e.dataTransfer.effectAllowed = "copyMove"),
              this.props.strHTMLDragData &&
                this.props.strHTMLDragData.forEach((t, n) =>
                  e.dataTransfer.setData(n, t),
                ),
              e.dataTransfer.getData("text/plain") ||
                e.dataTransfer.setData(
                  "text/plain",
                  this.props.data.toString(),
                );
            const t = new Image();
            e.dataTransfer.setDragImage(t, 0, 0),
              this.RecordDragStart(e.currentTarget, e.clientX, e.clientY),
              this.m_DragInfo.ownerWin?.addEventListener(
                "drag",
                this.OnHTMLDrag,
              ),
              this.m_DragInfo.ownerWin?.addEventListener(
                "dragend",
                this.OnHTMLDragEnd,
              );
          }
          OnHTMLDrag(e) {
            ee("HTMLDrag", e, e.dataTransfer?.types.length),
              this.ProcessDragMove(e);
          }
          OnHTMLDragEnd(e) {
            ee(
              "HTMLDragEnd",
              e,
              e.dataTransfer?.getData("text/plain") || "NOTHING",
              this.props.data,
            ),
              this.m_DragInfo.ownerWin?.removeEventListener(
                "drag",
                this.OnHTMLDrag,
              ),
              this.m_DragInfo.ownerWin?.removeEventListener(
                "dragend",
                this.OnHTMLDragEnd,
              ),
              this.ResetDragState();
          }
          render() {
            const {
              coordinator: e,
              data: t,
              bEnableHTMLDrag: n,
              strHTMLDragData: i,
              fnOnDragStart: o,
              fnOnDragEnd: a,
              fnRenderDragGhost: s,
              fnRenderDropGhost: l,
              className: c,
              strActiveClassName: d,
              children: u,
              ...h
            } = this.props;
            let p = {},
              _ = c || "DialogDraggable";
            return (
              this.m_DragInfo.bStarted
                ? ((_ = (0, m.A)(_, d || "DraggedOut")),
                  n && (p = { onDragEnd: this.OnHTMLDragEnd }))
                : (p = n
                    ? { onDragStart: this.OnHTMLDragStart }
                    : {
                        onMouseDown: this.OnMouseDown,
                        onTouchStart: this.OnTouchStart,
                      }),
              r.createElement(
                "div",
                { ref: this.m_divRef, className: _, ...p, ...h, draggable: n },
                u,
              )
            );
          }
          renderDropGhost() {
            return this.props.fnRenderDropGhost
              ? this.props.fnRenderDropGhost()
              : r.createElement(ae, { elContent: this.GetClone() });
          }
          renderDragGhost() {
            return this.props.fnRenderDragGhost
              ? this.props.fnRenderDragGhost()
              : r.createElement(se, {
                  elContent: this.GetClone(),
                  offsetX: this.m_DragInfo.startOffsetX,
                  offsetY: this.m_DragInfo.startOffsetY,
                  width: this.m_DragInfo.startWidth,
                  height: this.m_DragInfo.startHeight,
                });
          }
          GetClone() {
            const e = this.m_divRef.current;
            let t;
            if (e && e.childElementCount)
              if (1 == e.childElementCount)
                t = e.firstElementChild.cloneNode(!0);
              else {
                t = document.createElement("div");
                for (let n = e.firstChild; n; n = n.nextSibling)
                  t.appendChild(n.cloneNode(!0));
              }
            return t;
          }
        }
        (0, o.Cg)([u.oI], re.prototype, "ProcessDragMove", null),
          (0, o.Cg)([u.oI], re.prototype, "OnMouseDown", null),
          (0, o.Cg)([u.oI], re.prototype, "OnMouseUp", null),
          (0, o.Cg)([u.oI], re.prototype, "OnTouchStart", null),
          (0, o.Cg)([u.oI], re.prototype, "OnTouchEnd", null),
          (0, o.Cg)([$.XI], re.prototype, "ResetDragState", null),
          (0, o.Cg)([u.oI], re.prototype, "OnHTMLDragStart", null),
          (0, o.Cg)([u.oI], re.prototype, "OnHTMLDrag", null),
          (0, o.Cg)([u.oI], re.prototype, "OnHTMLDragEnd", null);
        class ae extends r.Component {
          OnRef(e) {
            e && this.props.elContent && e.appendChild(this.props.elContent);
          }
          render() {
            return r.createElement("div", {
              className: "DialogDraggable_DropGhost",
              ref: this.OnRef,
            });
          }
        }
        (0, o.Cg)([u.oI], ae.prototype, "OnRef", null);
        class se extends r.Component {
          state = {
            clientX: void 0,
            clientY: void 0,
            bVisible: !0,
            clientXDelta: void 0,
            clientYDelta: void 0,
          };
          OnRef(e) {
            e && this.props.elContent && e.appendChild(this.props.elContent);
          }
          CalculateRotationDegrees(e) {
            if (!e || Math.abs(e) < 4) return 0;
            return (e > 0 ? 7.5 : -7.5) * Math.sqrt(Math.abs(e));
          }
          render() {
            if (
              !this.state.bVisible ||
              void 0 === this.state.clientX ||
              void 0 === this.state.clientY
            )
              return r.createElement("div", null);
            let e = {
                left: this.state.clientX - (this.props.offsetX || 0),
                top: this.state.clientY - (this.props.offsetY || 0),
                width: this.props.width || "auto",
                height: this.props.height || "auto",
                perspective: "600px",
              },
              t = J.Fu(
                this.CalculateRotationDegrees(this.state.clientYDelta),
                -90,
                90,
                2,
                0,
              ),
              n = {
                transform: `rotateX(${this.CalculateRotationDegrees(-1 * (this.state.clientYDelta ?? 0))}deg) rotateY( ${this.CalculateRotationDegrees(this.state.clientXDelta)}deg)`,
                transition: "transform .16s ease-out, filter .16s ease-out",
                filter: "brightness(" + t + ")",
              };
            const i = this.props.className || "DialogDraggable_DragGhost";
            return r.createElement(
              "div",
              { className: i, style: e },
              r.createElement("div", { ref: this.OnRef, style: n }),
            );
          }
        }
        (0, o.Cg)([u.oI], se.prototype, "OnRef", null);
        class le extends r.Component {
          m_divRef = r.createRef();
          constructor(e) {
            super(e), (this.state = {});
          }
          componentDidMount() {
            this.props.coordinator.RegisterDropRegion(this);
          }
          componentWillUnmount() {
            this.props.coordinator.UnregisterDropRegion(this);
          }
          OnDragStarted(e) {
            this.setState({ bDraggableActive: !0 });
          }
          OnDragEnded(e) {
            this.setState({ bDraggableActive: !1 });
          }
          OnDragEnter(e, t) {
            this.setState({ dropGhost: t }),
              this.props.fnOnDragEnter && this.props.fnOnDragEnter(e);
          }
          OnDragLeave(e) {
            this.setState({ dropGhost: void 0 }),
              this.props.fnOnDragLeave && this.props.fnOnDragLeave(e);
          }
          OnDragMove(e, t, n) {}
          OnDrop(e) {
            this.setState({ dropGhost: void 0 }), this.props.fnOnDrop(e);
          }
          BAcceptDraggable(e) {
            return (
              !this.props.fnBAcceptDraggable || this.props.fnBAcceptDraggable(e)
            );
          }
          BDraggableInRegion(e, t, n) {
            return ie(e, t, this.GetClientRect());
          }
          GetElement() {
            return this.m_divRef.current;
          }
          GetClientRect() {
            return (
              this.m_divRef.current &&
              this.m_divRef.current.getBoundingClientRect()
            );
          }
          render() {
            const {
                coordinator: e,
                fnBAcceptDraggable: t,
                fnOnDrop: n,
                fnOnDragEnter: i,
                fnOnDragLeave: o,
                className: s,
                strActiveClassName: l,
                children: c,
                focusable: d,
                containerRef: h,
                ...p
              } = this.props,
              _ = (0, m.A)(
                s || "DialogDropRegion",
                this.state.bDraggableActive && (l || "Active"),
              );
            return r.createElement(
              a.ml,
              {
                ref: (0, u.XB)(h, this.m_divRef),
                className: _,
                ...p,
                focusable: void 0 === d ? !!p.onClick : d,
              },
              this.state.dropGhost,
              c,
            );
          }
        }
        class ce extends le {
          BDraggableInRegion(e, t, n) {
            let i = this.GetClientRect();
            return (
              !!i &&
              e >= i.left && e <= i.right && t >= i.top - 20 &&
              t <= i.bottom + 20
            );
          }
        }
        var me = n(29359),
          de = n(7153),
          ue = n(2377),
          he = n(97854),
          pe = n(1808),
          _e = n(80583),
          ge = n.n(_e);
        class Ce {
          constructor() {
            (0, $.Gn)(this);
          }
          m_flPageListScrollTop = 0;
          m_flPageScrollTop = 0;
        }
        (0, o.Cg)([$.sH], Ce.prototype, "m_flPageListScrollTop", void 0),
          (0, o.Cg)([$.sH], Ce.prototype, "m_flPageScrollTop", void 0);
        class fe {
          static s_Instance;
          static Get() {
            return fe.s_Instance || (fe.s_Instance = new fe()), fe.s_Instance;
          }
          constructor() {
            (0, $.Gn)(this);
          }
          m_setPagedSettingsInstances = new Set();
        }
        function Se(e) {
          const {
            stylesheet: t,
            pages: n,
            iActivePage: i,
            onPageSelected: o,
            PageListItemComponent: a = ve,
            PageListSeparatorComponent: s = Ie,
          } = e;
          return n.map((e, n) => {
            const l = n === i;
            if ("separator" === e) {
              const e = n === i + 1 || n === i - 1;
              return r.createElement(s, { key: n, bTransparent: e });
            }
            if ("spacer" === e)
              return r.createElement("div", {
                key: n,
                className: ge().PageListSpacer,
              });
            {
              if (!1 === e.visible) return null;
              const i = e.identifier || e.title || n.toString(),
                s = () => o(n, e);
              return r.createElement(a, {
                className: (0, m.A)(t.PagedSettingsDialog_PageListItem, {
                  [t.Active]: l,
                }),
                key: i,
                onClick: s,
                title: e.title,
                icon: e.icon,
                active: l,
              });
            }
          });
        }
        function ve(e) {
          const {
            title: t,
            icon: n,
            active: i,
            className: o,
            onClick: a,
            ...s
          } = e;
          return r.createElement(
            "div",
            { className: o, onClick: a },
            n
              ? r.createElement("div", { className: ge().PageListItem_Icon }, n)
              : null,
            r.createElement(
              "div",
              { className: ge().PageListItem_Title, ...s },
              t,
            ),
          );
        }
        (0, o.Cg)([$.sH], fe.prototype, "m_setPagedSettingsInstances", void 0);
        const be = r.forwardRef(function (e, t) {
          const { activePage: n, style: o, stylesheet: a } = e,
            s = n?.padding ?? "standard";
          return r.createElement(
            i.UC,
            {
              style: o,
              className: (0, m.A)(
                a?.PagedSettingsDialog_PageContent,
                n?.pageClassName,
                "none" == s && a?.NoPadding,
              ),
              refElem: t,
            },
            n?.header,
            !n?.hideTitle && r.createElement(i.Y9, null, n?.title),
            r.createElement(pe.tH, null, n?.content),
          );
        });
        function Ie(e) {
          return r.createElement("div", {
            className: (0, m.A)(ge().PageListSeparator, {
              [ge().Transparent]: e.bTransparent,
            }),
          });
        }
        function we(e) {
          const t = (0, _.Zt)("PagedSettings", ye);
          return r.createElement(t, { ...e });
        }
        const ye = r.forwardRef(function (e, t) {
          const { stylesheet: n = ge(), pages: i, onPageRequested: o } = e,
            a = null == e.page,
            [l, c] = r.useState(() =>
              void 0 === e.startingPage
                ? -1
                : i.findIndex(
                    (t) =>
                      "object" == typeof t && t.identifier === e.startingPage,
                  ),
            );
          let d = l;
          a ||
            (d = i.findIndex(
              (t) => "object" == typeof t && t.identifier === e.page,
            )),
            (d < 0 || d >= i.length) && (d = 0);
          let h = null;
          "object" == typeof i[d] && (h = i[d]);
          const p = r.useRef(null),
            _ = r.useCallback(() => p.current?.TakeFocus(), [p]),
            [g, C] = r.useState(!1),
            f = r.useCallback(
              (e, t) => {
                C(!0),
                  ue.eZ.PlayNavSound(ue.PN.PagedNavigation),
                  o && o(t.identifier),
                  t.click ? t.click() : a && c(e);
              },
              [a, o],
            ),
            S = r.useRef(null),
            v = e.showTitle ?? !0,
            b = (0, m.A)(
              "DialogContentTransition",
              n.PagedSettingDialog_ContentColumn,
            );
          r.useEffect(() => {
            e.bAutoFocusPageContent && S.current?.TakeFocus();
          }, []);
          const { refForPageList: I, refForPage: w } = (function () {
            const e = r.useMemo(() => new Ce(), []);
            r.useEffect(
              () => (
                fe.Get().m_setPagedSettingsInstances.add(e),
                () => {
                  fe.Get().m_setPagedSettingsInstances.delete(e);
                }
              ),
              [e],
            );
            const t = r.useCallback(
                (t) => (e.m_flPageListScrollTop = t.currentTarget.scrollTop),
                [e],
              ),
              n = r.useCallback(
                (t) => (e.m_flPageScrollTop = t.currentTarget.scrollTop),
                [e],
              ),
              i = (0, u.xA)("scroll", t),
              o = (0, u.xA)("scroll", n),
              a = r.useCallback(
                (t) => (e.m_flPageListScrollTop = t?.scrollTop ?? 0),
                [e],
              ),
              s = r.useCallback(
                (t) => (e.m_flPageScrollTop = t?.scrollTop ?? 0),
                [e],
              ),
              l = (0, u.Ue)(i, a),
              c = (0, u.Ue)(o, s);
            return { refForPageList: l, refForPage: c };
          })();
          return r.createElement(
            s.Z,
            { className: (0, m.A)(n.PagedSettingsDialog, e.className), ref: t },
            r.createElement(
              s.Z,
              {
                className: (0, m.A)(
                  n.PagedSettingsDialog_PageListColumn,
                  e.hideList && ge().Hidden,
                  "PageListColumn",
                ),
                navRef: p,
                onButtonDown: (e) => {
                  e.detail.button == me.pR.OK &&
                    S.current?.TakeFocus(e.detail.button);
                },
                onFocusWithin: (e) => {
                  e && C(!0);
                },
              },
              v &&
                r.createElement(
                  "div",
                  { className: n.PagedSettingsDialog_Title },
                  e.title,
                ),
              e.topControls && r.createElement("div", null, e.topControls),
              r.createElement(
                s.Z,
                {
                  className: (0, m.A)(
                    n.PagedSettingsDialog_PageList,
                    e.disablePageListScrolling &&
                      n.PagedSettingsDialog_PageList_DisableScrolling,
                    v && n.PagedSettingsDialog_PageList_ShowTitle,
                    e.bNoHeaderPadding &&
                      n.PageSettingsDialog_PageList_NoHeaderPadding,
                  ),
                  navEntryPreferPosition: de.iU.PREFERRED_CHILD,
                  ref: I,
                },
                r.createElement(Se, {
                  stylesheet: n,
                  pages: i,
                  iActivePage: d,
                  onPageSelected: f,
                  PageListItemComponent: e.PageListItemComponent,
                  PageListSeparatorComponent: e.PageListSeparatorComponent,
                }),
              ),
              e.bottomControls &&
                r.createElement("div", null, e.bottomControls),
            ),
            r.createElement(
              s.Z,
              { className: b, onCancelButton: g ? _ : void 0, navRef: S },
              e.toggleHideList &&
                r.createElement(De, {
                  hideList: e.hideList,
                  toggleHideList: e.toggleHideList,
                }),
              e.renderPageContent
                ? e.renderPageContent(h, w, be)
                : r.createElement(be, { ref: w, activePage: h, stylesheet: n }),
            ),
          );
        });
        const Ee = r.createContext(!1);
        r.memo(function (e) {
          const {
              isActive: t,
              refForPage: n,
              page: i,
              PageComponent: o,
              stylesheet: a,
            } = e,
            s = r.useRef(!1);
          if (!t && !s.current) return null;
          s.current = !0;
          const l = t ? void 0 : { display: "none" };
          return r.createElement(
            Ee.Provider,
            { value: t },
            r.createElement(o, {
              ref: n,
              style: l,
              activePage: i,
              stylesheet: a,
            }),
          );
        });
        function De(e) {
          const { hideList: t, toggleHideList: n } = e;
          return r.createElement(
            "div",
            {
              className: (0, m.A)(
                ge().HidePageListButton,
                t && ge().ListHidden,
              ),
              onClick: n,
            },
            t
              ? r.createElement(he.b8_, { direction: "right" })
              : r.createElement(he.b8_, { direction: "left" }),
          );
        }
        class Ae extends r.Component {
          m_refTextArea = r.createRef();
          m_nTextAreaPadding;
          m_cEntryLength = Number.MAX_VALUE;
          get textarea() {
            return this.m_refTextArea.current;
          }
          get value() {
            return this.m_refTextArea.current?.value;
          }
          focus() {
            this.m_refTextArea.current?.focus();
          }
          InternalOnInput() {
            const e = this.m_refTextArea.current,
              t = this.GetMinHeight(),
              n = this.GetMaxHeight();
            let i,
              o = e.value.length;
            if (
              (void 0 === this.m_nTextAreaPadding && this.CalculatePadding(),
              o < this.m_cEntryLength &&
                ((i = window.scrollY), (e.style.height = t + "px")),
              e.scrollHeight > n)
            )
              (e.style.height = n + "px"), (e.style.overflow = "auto");
            else if (e.scrollHeight != e.clientHeight) {
              let n = Math.max(e.scrollHeight, t);
              (e.style.height = n - this.m_nTextAreaPadding + "px"),
                "auto" == e.style.overflow && (e.style.overflow = "hidden");
            }
            void 0 !== i && window.scrollTo(window.scrollX, i),
              (this.m_cEntryLength = o);
          }
          CalculatePadding() {
            const e = getComputedStyle(this.m_refTextArea.current);
            this.m_nTextAreaPadding =
              "border-box" == e.boxSizing
                ? 0
                : parseFloat(e.paddingTop) + parseFloat(e.paddingBottom);
          }
          GetMinHeight() {
            return this.props.nMinHeight || 20;
          }
          GetMaxHeight() {
            return this.props.nMaxHeight || 500;
          }
          DeferredInternalOnInput() {
            window.setTimeout(this.InternalOnInput, 1);
          }
          OnKeyUp(e) {
            this.InternalOnInput(), this.props.onKeyUp && this.props.onKeyUp(e);
          }
          OnBlur(e) {
            this.DeferredInternalOnInput(),
              this.props.onBlur && this.props.onBlur(e);
          }
          OnClick(e) {
            this.InternalOnInput(), this.props.onClick && this.props.onClick(e);
          }
          OnPaste(e) {
            this.DeferredInternalOnInput(),
              this.props.onPaste && this.props.onPaste(e);
          }
          OnCut(e) {
            this.InternalOnInput(), this.props.onCut && this.props.onCut(e);
          }
          componentDidMount() {
            (this.m_refTextArea.current.style.overflow = "hidden"),
              (this.m_refTextArea.current.style.resize = "none"),
              this.InternalOnInput();
          }
          componentDidUpdate(e) {
            (e.nMinHeight == this.props.nMinHeight &&
              e.nMaxHeight == this.props.nMaxHeight) ||
              (this.m_cEntryLength = Number.MAX_VALUE),
              this.m_refTextArea.current?.value.length != this.m_cEntryLength &&
                this.InternalOnInput();
          }
          render() {
            const { nMinHeight: e, nMaxHeight: t, ...n } = this.props;
            return r.createElement(a.dO, {
              ...n,
              ref: this.m_refTextArea,
              onKeyUp: this.OnKeyUp,
              onBlur: this.OnBlur,
              onClick: this.OnClick,
              onPaste: this.OnPaste,
              onCut: this.OnCut,
            });
          }
        }
        (0, o.Cg)([u.oI], Ae.prototype, "InternalOnInput", null),
          (0, o.Cg)([u.oI], Ae.prototype, "OnKeyUp", null),
          (0, o.Cg)([u.oI], Ae.prototype, "OnBlur", null),
          (0, o.Cg)([u.oI], Ae.prototype, "OnClick", null),
          (0, o.Cg)([u.oI], Ae.prototype, "OnPaste", null),
          (0, o.Cg)([u.oI], Ae.prototype, "OnCut", null);
        var Te = n(12008),
          Me = n.n(Te),
          Re = n(17070),
          ke = n(69168),
          Le = n(55656);
        const Ge = r.forwardRef(function (e, t) {
          const {
              label: n,
              description: i,
              icon: o,
              children: a,
              childrenLayout: l,
              inlineWrap: c,
              childrenContainerWidth: h,
              spacingBetweenLabelAndChild: _,
              padding: g,
              disabled: C,
              bottomSeparator: f,
              className: S,
              highlightOnFocus: v,
              indentLevel: b,
              verticalAlignment: I,
              iconLocation: w,
              tooltip: y,
              explainer: E,
              explainerTitle: D,
              ...A
            } = e,
            T = (0, Re.Qn)(),
            M = l ?? "inline",
            R = w ?? "front",
            k = "front" == R && !!o,
            L = "before-children" == R && !!o,
            G = "inline" == M && !!a,
            F = "below" == M && !!a,
            P = c ?? (T ? "shift-children-below" : "keep-inline"),
            B = !!(A.onClick || A.onActivate || A.focusable),
            x = (null != o && k) || null != n || (G && null != a),
            O = h ?? "min",
            N = _ ?? "standard",
            V = g ?? "standard",
            U = f ?? "standard",
            H = v ?? !0,
            W = b ?? 0,
            z = I ?? "center",
            j = (function (e, t) {
              const n = (0, ke.R7)(),
                i = r.useCallback(() => {
                  (0, Le.Zw)(e, t, n.ownerWindow ?? window);
                }, [n, e, t]);
              if (null == t) return {};
              const o = (0, d.we)("#Field_MoreInfo_Action");
              return { onOptionsButton: i, onOptionsActionDescription: o };
            })(D ?? n, E),
            q = r.useRef(),
            K = (0, u.Ue)(q, e.navRef),
            Z = r.useCallback(
              (e) => {
                q.current?.TakeFocus(), e.preventDefault();
              },
              [q],
            );
          return r.createElement(
            s.Z,
            {
              focusable: B,
              noFocusRing: !0,
              scrollIntoViewWhenChildFocused: !0,
              onActivate: (e) => A.onClick?.(e),
              ref: t,
              onMouseDown: B ? void 0 : Z,
              ...A,
              ...j,
              navRef: K,
              className: (0, m.A)(
                S,
                Me().Field,
                C && Me().Disabled,
                x && Me().WithFirstRow,
                G && Me().WithChildrenInline,
                F && Me().WithChildrenBelow,
                "center" == z && Me().VerticalAlignCenter,
                "shift-children-below" == P &&
                  Me().InlineWrapShiftsChildrenBelow,
                !!i && Me().WithDescription,
                "standard" == U && Me().WithBottomSeparatorStandard,
                "thick" == U && Me().WithBottomSeparatorThick,
                "fixed" == O && Me().ChildrenWidthFixed,
                "max" == O && Me().ChildrenWidthGrow,
                "standard" == N && Me().ExtraPaddingOnChildrenBelow,
                "standard" == V && Me().StandardPadding,
                "compact" == V && Me().CompactPadding,
                B && Me().Clickable,
                H && Me().HighlightOnFocus,
              ),
              style: { "--indent-level": W },
            },
            x &&
              r.createElement(
                "div",
                { className: Me().FieldLabelRow },
                r.createElement(
                  "div",
                  { className: Me().FieldLabel },
                  k &&
                    r.createElement(
                      "div",
                      { className: (0, m.A)(Me().FieldIcon, Me().Front) },
                      o,
                    ),
                  n,
                  y && r.createElement(p.o, { tooltip: y }),
                ),
                G &&
                  r.createElement(
                    "div",
                    { className: Me().FieldChildrenWithIcon },
                    L &&
                      r.createElement(
                        "div",
                        {
                          className: (0, m.A)(
                            Me().FieldIcon,
                            Me().BeforeChildren,
                          ),
                        },
                        o,
                      ),
                    r.createElement(
                      "div",
                      { className: Me().FieldChildrenInner },
                      a,
                    ),
                  ),
              ),
            F &&
              r.createElement(
                "div",
                { className: Me().FieldChildrenWithIcon },
                L &&
                  r.createElement(
                    "div",
                    {
                      className: (0, m.A)(Me().FieldIcon, Me().BeforeChildren),
                    },
                    o,
                  ),
                r.createElement(
                  "div",
                  { className: Me().FieldChildrenInner },
                  a,
                ),
              ),
            i &&
              r.createElement("div", { className: Me().FieldDescription }, i),
          );
        });
        r.forwardRef(function (e, t) {
          const {
              label: n,
              description: o,
              explainer: a,
              icon: s,
              layout: l,
              disabled: c,
              onActivate: m,
              bottomSeparator: d,
              highlightOnFocus: h,
              childrenContainerWidth: p,
              padding: _,
              inlineWrap: g,
              fieldClassName: C,
              fieldChildren: f,
              ...S
            } = e,
            { refWithValue: v, refForElement: b } = (0, u.RY)(t);
          return r.createElement(
            Ge,
            {
              label: n,
              description: o,
              icon: s,
              bottomSeparator: d,
              highlightOnFocus: h,
              childrenLayout: l ?? "inline",
              childrenContainerWidth: p ?? "min",
              onMouseDown: (e) => {
                v.current?.focus(), e.preventDefault();
              },
              padding: _,
              inlineWrap: g,
              explainer: a,
              className: C,
              disabled: c,
              onActivate: c ? m : void 0,
            },
            r.createElement(i.$n, { ...S, disabled: c, ref: b }),
            f,
          );
        });
        const Fe = r.forwardRef(function (e, t) {
          const {
              label: n,
              description: i,
              icon: o,
              layout: a,
              bottomSeparator: s,
              highlightOnFocus: l,
              ...c
            } = e,
            { refWithValue: m, refForElement: d } = (0, u.RY)(t);
          return r.createElement(
            Ge,
            {
              label: n,
              description: i,
              icon: o,
              bottomSeparator: s,
              highlightOnFocus: l,
              childrenLayout: a ?? "inline",
              childrenContainerWidth: "fixed",
              onMouseDown: (e) => {
                m.current?.element?.focus(), e.preventDefault();
              },
            },
            r.createElement(C, { ...c, ref: d }),
          );
        });
        var Pe,
          Be = n(18827),
          xe = n.n(Be),
          Oe = n(23038),
          Ne = n(61726);
        function Ve(e) {
          const {
              childrenKey: t,
              childrenClasses: n,
              children: i,
              directionClass: o,
              animate: a = !0,
            } = e,
            s = (0, m.A)(xe().TransitionGroup, o);
          return r.createElement(
            Oe.A,
            { className: s, appear: !1, enter: a, exit: a },
            r.createElement(Ue, { key: t, childrenClasses: n }, i),
          );
        }
        function Ue(e) {
          const { sizeClass: t, children: n, childrenClasses: i, ...o } = e,
            [a, l, c, d] = (function () {
              let e = r.useRef(null),
                t = r.useRef();
              r.useLayoutEffect(() => {
                let n = e.current;
                if (!n || t.current) return;
                t.current = {
                  element: n,
                  activeProps: new Set(),
                  bExiting: !1,
                  fnDone: null,
                };
                let i = t.current,
                  o = (e) => {
                    e.target == n && i.activeProps.add(e.propertyName);
                  };
                n.addEventListener("transitionrun", o, !1);
                let r = (e) => {
                  e.target == n &&
                    (i.activeProps.delete(e.propertyName),
                    i.fnDone &&
                      0 == i.activeProps.size &&
                      i.bExiting &&
                      i.fnDone());
                };
                n.addEventListener("transitionend", r, !1),
                  n.addEventListener("transitioncancel", r, !1);
              }, []);
              let n = r.useCallback(
                  (e) => {
                    t.current ? (t.current.fnDone = e) : e();
                  },
                  [t],
                ),
                i = r.useCallback(() => {
                  t.current && (t.current.bExiting = !1);
                }, [t]),
                o = r.useCallback(() => {
                  t.current && (t.current.bExiting = !0);
                }, [t]);
              return [e, n, i, o];
            })(),
            u = r.useRef(!0),
            h = r.useCallback(() => u.current, [u]),
            p = r.useCallback(() => {
              (u.current = !0), c();
            }, [c]),
            _ = r.useCallback(() => {
              (u.current = !1), d();
            }, [d]),
            g = e.childrenClasses,
            C = {
              enter: g.enterStart,
              enterActive: g.enterEnd,
              exit: g.exitStart,
              exitActive: g.exitEnd,
            };
          return a.current && !a.current.ownerDocument.defaultView
            ? null
            : r.createElement(
                Ne.A,
                {
                  nodeRef: a,
                  classNames: C,
                  in: !0,
                  timeout: 1e4,
                  addEndListener: l,
                  onEntering: p,
                  onExiting: _,
                  ...o,
                },
                r.createElement(
                  "div",
                  {
                    ref: a,
                    className: (0, m.A)(xe().ContentWrapper, t, g.base),
                  },
                  r.createElement(
                    s.Z,
                    { className: t, fnCanTakeFocus: h },
                    e.children,
                  ),
                ),
              );
        }
        function He(e, t) {
          return {
            base: t,
            enterStart: e.Enter,
            enterEnd: e.EnterActive,
            exitStart: e.Exit,
            exitEnd: e.ExitActive,
          };
        }
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.Left = 1)] = "Left"),
            (e[(e.Right = 2)] = "Right"),
            (e[(e.Up = 3)] = "Up"),
            (e[(e.Down = 4)] = "Down");
        })(Pe || (Pe = {}));
        var We = n(94464),
          ze = n.n(We),
          je = n(63114);
        const qe = r.createContext(null);
        function Ke(e) {
          const t = r.useContext(qe),
            n = (0, Re.rP)().IN_VR,
            { title: i, icon: o, active: a, ...l } = e;
          return r.createElement(
            s.Z,
            {
              preferredFocus: a,
              navRef: a && t ? t : void 0,
              noFocusRing: !0,
              onActivate: n ? void 0 : l.onClick,
              onFocus: n ? void 0 : l.onClick,
              ...l,
            },
            o &&
              r.createElement("div", { className: ze().PageListItem_Icon }, o),
            r.createElement("div", { className: ze().PageListItem_Title }, i),
          );
        }
        function Ze(e) {
          return r.createElement("div", { className: ze().Separator });
        }
        r.forwardRef(function (e, t) {
          const { page: n, bAutoFocusPageContent: i, showTitle: o = !1 } = e,
            a = r.useRef(null),
            s = r.useRef(!0);
          r.useEffect(() => {
            (s.current && i) || a.current?.TakeFocus(), (s.current = !1);
          }, [n, i]);
          return r.createElement(
            qe.Provider,
            { value: a },
            r.createElement(ye, {
              ...e,
              stylesheet: ze(),
              showTitle: o,
              PageListItemComponent: Ke,
              PageListSeparatorComponent: Ze,
              renderPageContent: (t, n, i) =>
                r.createElement(Qe, {
                  pages: e.pages,
                  activePage: t,
                  refForPage: n,
                  PageComponent: i,
                }),
            }),
          );
        });
        function Qe(e) {
          const {
              pages: t,
              activePage: n,
              refForPage: i,
              PageComponent: o,
            } = e,
            a = (function (e) {
              let t = r.useRef(e),
                n = r.useRef(Pe.None),
                i = t.current;
              if (i == e) return n.current;
              let o = Pe.None;
              i < e ? (o = Pe.Down) : i > e && (o = Pe.Up);
              return (t.current = e), (n.current = o), o;
            })(r.useMemo(() => t.findIndex((e) => e == n), [t, n])),
            s = (function (e, t) {
              const n = r.useMemo(() => new Map(), []),
                i = r.useRef();
              i.current = e;
              const o = r.useRef();
              o.current = t;
              const a = r.useCallback(
                (e) => (t) => {
                  n.set(e, t), e === i.current && (0, je.cZ)(o.current, t);
                },
                [n],
              );
              return (
                r.useEffect(
                  () => (
                    (0, je.cZ)(t, e && n.get(e)), () => (0, je.cZ)(t, void 0)
                  ),
                  [n, e, t],
                ),
                a
              );
            })(n?.identifier, i);
          let l =
            ((c = ze()),
            (m = a) == Pe.Left
              ? c.Left
              : m == Pe.Right
                ? c.Right
                : m == Pe.Up
                  ? c.Up
                  : m == Pe.Down
                    ? c.Down
                    : "");
          var c, m;
          return r.createElement(
            Ve,
            {
              childrenKey: n?.identifier,
              childrenClasses: He(ze(), ze().ContentTransition),
              directionClass: l,
              animate: a != Pe.None,
            },
            n &&
              r.createElement(o, {
                ref: s(n.identifier),
                key: n.identifier,
                stylesheet: ze(),
                activePage: n,
              }),
          );
        }
        r.forwardRef(function (e, t) {
          return r.createElement(a.BA, {
            noFocusRing: !0,
            ...e,
            ref: t,
            className: (0, m.A)(Me().BasicTextInput, e.className),
            size: e.size ?? 1,
          });
        });
        var $e = n(28825),
          Xe = n.n($e),
          Ye = n(27816);
        r.forwardRef(function (e, t) {
          return r.createElement(
            i.$n,
            {
              className: (0, m.A)(Xe().DropDownControlButton, e.className),
              focusable: e.focusable,
              disabled: e.disabled,
              onClick: e.onClick,
              tabIndex: e.tabIndex,
              ref: t,
            },
            r.createElement(
              "div",
              { className: Me().DropDownControlButtonContents },
              e.children,
              r.createElement("div", {
                className: (0, m.A)(Me().Spacer, "Spacer"),
              }),
              r.createElement(he.u49, { direction: "down" }),
            ),
          );
        });
        var Je = n(22308);
        r.forwardRef(function (e, t) {
          const { className: n, ...o } = e;
          let a = r.useRef(),
            l = (0, u.Ue)(t, a);
          const [c, m] = r.useState(!1),
            h = r.useCallback(() => {
              m((e) => !e), window.setTimeout(() => a.current?.Focus(), 1);
            }, []);
          return r.createElement(
            s.Z,
            {
              className: n,
              onOptionsButton: h,
              onOptionsActionDescription: (0, d.we)(
                c ? "#Login_HidePassword" : "#Login_ShowPassword",
              ),
            },
            r.createElement(C, {
              autoComplete: "off",
              ref: l,
              inlineControls: r.createElement(
                i.$n,
                {
                  className: Je.TogglePasswordVisibilityBtn,
                  onPointerDown: h,
                  onOKButton: h,
                },
                c
                  ? r.createElement(he.rxV, null)
                  : r.createElement(he.ZyV, null),
              ),
              ...o,
              type: c ? "text" : "password",
            }),
          );
        });
        r.forwardRef(function (e, t) {
          const { className: n, value: i, ...o } = e,
            a = i ?? "";
          return r.createElement(Fe, {
            autoComplete: "off",
            value: a,
            ref: t,
            placeholder: "   .   .   .   ",
            ...o,
            onChange: (e) => {
              !(function (e) {
                const t = e.split(".");
                if (t.length > 4) return !1;
                for (let e = 0; e < t.length; e++) {
                  const n = t[e];
                  if ("" == n) {
                    if (e == t.length - 1) continue;
                    return !1;
                  }
                  if (!/^[0-9]*$/.test(n)) return !1;
                  const i = parseInt(n);
                  if (!(i >= 0 && i <= 255)) return !1;
                }
                return !0;
              })(e.target.value)
                ? (e.target.value = a)
                : o.onChange && o.onChange(e);
            },
          });
        });
        var et,
          tt,
          nt,
          it,
          ot,
          rt,
          at = n(6541),
          st = n.n(at),
          lt = n(51860),
          ct = n(54829),
          mt = n(24803);
        !(function (e) {
          (e[(e.Invalid = 0)] = "Invalid"),
            (e[(e.TrackingSystemName_String = 1e3)] =
              "TrackingSystemName_String"),
            (e[(e.ModelNumber_String = 1001)] = "ModelNumber_String"),
            (e[(e.SerialNumber_String = 1002)] = "SerialNumber_String"),
            (e[(e.RenderModelName_String = 1003)] = "RenderModelName_String"),
            (e[(e.WillDriftInYaw_Bool = 1004)] = "WillDriftInYaw_Bool"),
            (e[(e.ManufacturerName_String = 1005)] = "ManufacturerName_String"),
            (e[(e.TrackingFirmwareVersion_String = 1006)] =
              "TrackingFirmwareVersion_String"),
            (e[(e.HardwareRevision_String = 1007)] = "HardwareRevision_String"),
            (e[(e.AllWirelessDongleDescriptions_String = 1008)] =
              "AllWirelessDongleDescriptions_String"),
            (e[(e.ConnectedWirelessDongle_String = 1009)] =
              "ConnectedWirelessDongle_String"),
            (e[(e.DeviceIsWireless_Bool = 1010)] = "DeviceIsWireless_Bool"),
            (e[(e.DeviceIsCharging_Bool = 1011)] = "DeviceIsCharging_Bool"),
            (e[(e.DeviceBatteryPercentage_Float = 1012)] =
              "DeviceBatteryPercentage_Float"),
            (e[(e.StatusDisplayTransform_Matrix34 = 1013)] =
              "StatusDisplayTransform_Matrix34"),
            (e[(e.Firmware_UpdateAvailable_Bool = 1014)] =
              "Firmware_UpdateAvailable_Bool"),
            (e[(e.Firmware_ManualUpdate_Bool = 1015)] =
              "Firmware_ManualUpdate_Bool"),
            (e[(e.Firmware_ManualUpdateURL_String = 1016)] =
              "Firmware_ManualUpdateURL_String"),
            (e[(e.HardwareRevision_Uint64 = 1017)] = "HardwareRevision_Uint64"),
            (e[(e.FirmwareVersion_Uint64 = 1018)] = "FirmwareVersion_Uint64"),
            (e[(e.FPGAVersion_Uint64 = 1019)] = "FPGAVersion_Uint64"),
            (e[(e.VRCVersion_Uint64 = 1020)] = "VRCVersion_Uint64"),
            (e[(e.RadioVersion_Uint64 = 1021)] = "RadioVersion_Uint64"),
            (e[(e.DongleVersion_Uint64 = 1022)] = "DongleVersion_Uint64"),
            (e[(e.BlockServerShutdown_Bool = 1023)] =
              "BlockServerShutdown_Bool"),
            (e[(e.CanUnifyCoordinateSystemWithHmd_Bool = 1024)] =
              "CanUnifyCoordinateSystemWithHmd_Bool"),
            (e[(e.ContainsProximitySensor_Bool = 1025)] =
              "ContainsProximitySensor_Bool"),
            (e[(e.DeviceProvidesBatteryStatus_Bool = 1026)] =
              "DeviceProvidesBatteryStatus_Bool"),
            (e[(e.DeviceCanPowerOff_Bool = 1027)] = "DeviceCanPowerOff_Bool"),
            (e[(e.Firmware_ProgrammingTarget_String = 1028)] =
              "Firmware_ProgrammingTarget_String"),
            (e[(e.DeviceClass_Int32 = 1029)] = "DeviceClass_Int32"),
            (e[(e.HasCamera_Bool = 1030)] = "HasCamera_Bool"),
            (e[(e.DriverVersion_String = 1031)] = "DriverVersion_String"),
            (e[(e.Firmware_ForceUpdateRequired_Bool = 1032)] =
              "Firmware_ForceUpdateRequired_Bool"),
            (e[(e.ViveSystemButtonFixRequired_Bool = 1033)] =
              "ViveSystemButtonFixRequired_Bool"),
            (e[(e.ParentDriver_Uint64 = 1034)] = "ParentDriver_Uint64"),
            (e[(e.ResourceRoot_String = 1035)] = "ResourceRoot_String"),
            (e[(e.RegisteredDeviceType_String = 1036)] =
              "RegisteredDeviceType_String"),
            (e[(e.InputProfilePath_String = 1037)] = "InputProfilePath_String"),
            (e[(e.NeverTracked_Bool = 1038)] = "NeverTracked_Bool"),
            (e[(e.NumCameras_Int32 = 1039)] = "NumCameras_Int32"),
            (e[(e.CameraFrameLayout_Int32 = 1040)] = "CameraFrameLayout_Int32"),
            (e[(e.CameraStreamFormat_Int32 = 1041)] =
              "CameraStreamFormat_Int32"),
            (e[(e.AdditionalDeviceSettingsPath_String = 1042)] =
              "AdditionalDeviceSettingsPath_String"),
            (e[(e.DevicePowerUsage_Float = 1052)] = "DevicePowerUsage_Float"),
            (e[(e.ActualTrackingSystemName_String = 1054)] =
              "ActualTrackingSystemName_String"),
            (e[(e.ReportsTimeSinceVSync_Bool = 2e3)] =
              "ReportsTimeSinceVSync_Bool"),
            (e[(e.SecondsFromVsyncToPhotons_Float = 2001)] =
              "SecondsFromVsyncToPhotons_Float"),
            (e[(e.DisplayFrequency_Float = 2002)] = "DisplayFrequency_Float"),
            (e[(e.UserIpdMeters_Float = 2003)] = "UserIpdMeters_Float"),
            (e[(e.CurrentUniverseId_Uint64 = 2004)] =
              "CurrentUniverseId_Uint64"),
            (e[(e.PreviousUniverseId_Uint64 = 2005)] =
              "PreviousUniverseId_Uint64"),
            (e[(e.DisplayFirmwareVersion_Uint64 = 2006)] =
              "DisplayFirmwareVersion_Uint64"),
            (e[(e.IsOnDesktop_Bool = 2007)] = "IsOnDesktop_Bool"),
            (e[(e.DisplayMCType_Int32 = 2008)] = "DisplayMCType_Int32"),
            (e[(e.DisplayMCOffset_Float = 2009)] = "DisplayMCOffset_Float"),
            (e[(e.DisplayMCScale_Float = 2010)] = "DisplayMCScale_Float"),
            (e[(e.EdidVendorID_Int32 = 2011)] = "EdidVendorID_Int32"),
            (e[(e.DisplayMCImageLeft_String = 2012)] =
              "DisplayMCImageLeft_String"),
            (e[(e.DisplayMCImageRight_String = 2013)] =
              "DisplayMCImageRight_String"),
            (e[(e.DisplayGCBlackClamp_Float = 2014)] =
              "DisplayGCBlackClamp_Float"),
            (e[(e.EdidProductID_Int32 = 2015)] = "EdidProductID_Int32"),
            (e[(e.CameraToHeadTransform_Matrix34 = 2016)] =
              "CameraToHeadTransform_Matrix34"),
            (e[(e.DisplayGCType_Int32 = 2017)] = "DisplayGCType_Int32"),
            (e[(e.DisplayGCOffset_Float = 2018)] = "DisplayGCOffset_Float"),
            (e[(e.DisplayGCScale_Float = 2019)] = "DisplayGCScale_Float"),
            (e[(e.DisplayGCPrescale_Float = 2020)] = "DisplayGCPrescale_Float"),
            (e[(e.DisplayGCImage_String = 2021)] = "DisplayGCImage_String"),
            (e[(e.LensCenterLeftU_Float = 2022)] = "LensCenterLeftU_Float"),
            (e[(e.LensCenterLeftV_Float = 2023)] = "LensCenterLeftV_Float"),
            (e[(e.LensCenterRightU_Float = 2024)] = "LensCenterRightU_Float"),
            (e[(e.LensCenterRightV_Float = 2025)] = "LensCenterRightV_Float"),
            (e[(e.UserHeadToEyeDepthMeters_Float = 2026)] =
              "UserHeadToEyeDepthMeters_Float"),
            (e[(e.CameraFirmwareVersion_Uint64 = 2027)] =
              "CameraFirmwareVersion_Uint64"),
            (e[(e.CameraFirmwareDescription_String = 2028)] =
              "CameraFirmwareDescription_String"),
            (e[(e.DisplayFPGAVersion_Uint64 = 2029)] =
              "DisplayFPGAVersion_Uint64"),
            (e[(e.DisplayBootloaderVersion_Uint64 = 2030)] =
              "DisplayBootloaderVersion_Uint64"),
            (e[(e.DisplayHardwareVersion_Uint64 = 2031)] =
              "DisplayHardwareVersion_Uint64"),
            (e[(e.AudioFirmwareVersion_Uint64 = 2032)] =
              "AudioFirmwareVersion_Uint64"),
            (e[(e.CameraCompatibilityMode_Int32 = 2033)] =
              "CameraCompatibilityMode_Int32"),
            (e[(e.ScreenshotHorizontalFieldOfViewDegrees_Float = 2034)] =
              "ScreenshotHorizontalFieldOfViewDegrees_Float"),
            (e[(e.ScreenshotVerticalFieldOfViewDegrees_Float = 2035)] =
              "ScreenshotVerticalFieldOfViewDegrees_Float"),
            (e[(e.DisplaySuppressed_Bool = 2036)] = "DisplaySuppressed_Bool"),
            (e[(e.DisplayAllowNightMode_Bool = 2037)] =
              "DisplayAllowNightMode_Bool"),
            (e[(e.DisplayMCImageWidth_Int32 = 2038)] =
              "DisplayMCImageWidth_Int32"),
            (e[(e.DisplayMCImageHeight_Int32 = 2039)] =
              "DisplayMCImageHeight_Int32"),
            (e[(e.DisplayMCImageNumChannels_Int32 = 2040)] =
              "DisplayMCImageNumChannels_Int32"),
            (e[(e.DisplayMCImageData_Binary = 2041)] =
              "DisplayMCImageData_Binary"),
            (e[(e.SecondsFromPhotonsToVblank_Float = 2042)] =
              "SecondsFromPhotonsToVblank_Float"),
            (e[(e.DriverDirectModeSendsVsyncEvents_Bool = 2043)] =
              "DriverDirectModeSendsVsyncEvents_Bool"),
            (e[(e.DisplayDebugMode_Bool = 2044)] = "DisplayDebugMode_Bool"),
            (e[(e.GraphicsAdapterLuid_Uint64 = 2045)] =
              "GraphicsAdapterLuid_Uint64"),
            (e[(e.DriverProvidedChaperonePath_String = 2048)] =
              "DriverProvidedChaperonePath_String"),
            (e[(e.ExpectedTrackingReferenceCount_Int32 = 2049)] =
              "ExpectedTrackingReferenceCount_Int32"),
            (e[(e.ExpectedControllerCount_Int32 = 2050)] =
              "ExpectedControllerCount_Int32"),
            (e[(e.NamedIconPathControllerLeftDeviceOff_String = 2051)] =
              "NamedIconPathControllerLeftDeviceOff_String"),
            (e[(e.NamedIconPathControllerRightDeviceOff_String = 2052)] =
              "NamedIconPathControllerRightDeviceOff_String"),
            (e[(e.NamedIconPathTrackingReferenceDeviceOff_String = 2053)] =
              "NamedIconPathTrackingReferenceDeviceOff_String"),
            (e[(e.DoNotApplyPrediction_Bool = 2054)] =
              "DoNotApplyPrediction_Bool"),
            (e[(e.CameraToHeadTransforms_Matrix34_Array = 2055)] =
              "CameraToHeadTransforms_Matrix34_Array"),
            (e[(e.DistortionMeshResolution_Int32 = 2056)] =
              "DistortionMeshResolution_Int32"),
            (e[(e.DriverIsDrawingControllers_Bool = 2057)] =
              "DriverIsDrawingControllers_Bool"),
            (e[(e.DriverRequestsApplicationPause_Bool = 2058)] =
              "DriverRequestsApplicationPause_Bool"),
            (e[(e.DriverRequestsReducedRendering_Bool = 2059)] =
              "DriverRequestsReducedRendering_Bool"),
            (e[(e.MinimumIpdStepMeters_Float = 2060)] =
              "MinimumIpdStepMeters_Float"),
            (e[(e.AudioBridgeFirmwareVersion_Uint64 = 2061)] =
              "AudioBridgeFirmwareVersion_Uint64"),
            (e[(e.ImageBridgeFirmwareVersion_Uint64 = 2062)] =
              "ImageBridgeFirmwareVersion_Uint64"),
            (e[(e.ImuToHeadTransform_Matrix34 = 2063)] =
              "ImuToHeadTransform_Matrix34"),
            (e[(e.ImuFactoryGyroBias_Vector3 = 2064)] =
              "ImuFactoryGyroBias_Vector3"),
            (e[(e.ImuFactoryGyroScale_Vector3 = 2065)] =
              "ImuFactoryGyroScale_Vector3"),
            (e[(e.ImuFactoryAccelerometerBias_Vector3 = 2066)] =
              "ImuFactoryAccelerometerBias_Vector3"),
            (e[(e.ImuFactoryAccelerometerScale_Vector3 = 2067)] =
              "ImuFactoryAccelerometerScale_Vector3"),
            (e[(e.ConfigurationIncludesLighthouse20Features_Bool = 2069)] =
              "ConfigurationIncludesLighthouse20Features_Bool"),
            (e[(e.Prop_AdditionalRadioFeatures_Uint64 = 2070)] =
              "Prop_AdditionalRadioFeatures_Uint64"),
            (e[(e.Prop_CameraWhiteBalance_Vector4_Array = 2071)] =
              "Prop_CameraWhiteBalance_Vector4_Array"),
            (e[(e.Prop_CameraDistortionFunction_Int32_Array = 2072)] =
              "Prop_CameraDistortionFunction_Int32_Array"),
            (e[(e.Prop_CameraDistortionCoefficients_Float_Array = 2073)] =
              "Prop_CameraDistortionCoefficients_Float_Array"),
            (e[(e.Prop_ExpectedControllerType_String = 2074)] =
              "Prop_ExpectedControllerType_String"),
            (e[(e.HmdTrackingStyle_Int32 = 2075)] = "HmdTrackingStyle_Int32"),
            (e[(e.DriverProvidedChaperoneVisibility_Bool = 2076)] =
              "DriverProvidedChaperoneVisibility_Bool"),
            (e[(e.HmdColumnCorrectionSettingPrefix_String = 2077)] =
              "HmdColumnCorrectionSettingPrefix_String"),
            (e[(e.CameraSupportsCompatibilityModes_Bool = 2078)] =
              "CameraSupportsCompatibilityModes_Bool"),
            (e[(e.SupportsRoomViewDepthProjection_Bool = 2079)] =
              "SupportsRoomViewDepthProjection_Bool"),
            (e[(e.DisplayAvailableFrameRates_Float_Array = 2080)] =
              "DisplayAvailableFrameRates_Float_Array"),
            (e[(e.DisplaySupportsRuntimeFramerateChange_Bool = 2084)] =
              "DisplaySupportsRuntimeFramerateChange_Bool"),
            (e[(e.DisplaySupportsAnalogGain_Bool = 2085)] =
              "DisplaySupportsAnalogGain_Bool"),
            (e[(e.DisplayMinAnalogGain_Float = 2086)] =
              "DisplayMinAnalogGain_Float"),
            (e[(e.DisplayMaxAnalogGain_Float = 2087)] =
              "DisplayMaxAnalogGain_Float"),
            (e[(e.DashboardLinkSupport_Int32 = 2097)] =
              "DashboardLinkSupport_Int32"),
            (e[(e.DashboardScale_Float = 2091)] = "DashboardScale_Float"),
            (e[(e.IpdUIRangeMinMeters_Float = 2100)] =
              "IpdUIRangeMinMeters_Float"),
            (e[(e.IpdUIRangeMaxMeters_Float = 2101)] =
              "IpdUIRangeMaxMeters_Float"),
            (e[(e.Hmd_SupportsHDCP14LegacyCompat_Bool = 2102)] =
              "Hmd_SupportsHDCP14LegacyCompat_Bool"),
            (e[(e.Hmd_SupportsMicMonitoring_Bool = 2103)] =
              "Hmd_SupportsMicMonitoring_Bool"),
            (e[(e.Hmd_SupportsDisplayPortTrainingMode_Bool = 2104)] =
              "Hmd_SupportsDisplayPortTrainingMode_Bool"),
            (e[(e.Hmd_SupportsRoomViewDirect_Bool = 2105)] =
              "Hmd_SupportsRoomViewDirect_Bool"),
            (e[(e.Hmd_SupportsAppThrottling_Bool = 2106)] =
              "Hmd_SupportsAppThrottling_Bool"),
            (e[(e.Hmd_SupportsGpuBusMonitoring_Bool = 2107)] =
              "Hmd_SupportsGpuBusMonitoring_Bool"),
            (e[(e.DriverProvidedIPDVisibility_Bool = 2108)] =
              "DriverProvidedIPDVisibility_Bool"),
            (e[(e.Prop_Driver_Reserved_01 = 2109)] = "Prop_Driver_Reserved_01"),
            (e[(e.Prop_Driver_Reserved_03 = 2111)] = "Prop_Driver_Reserved_03"),
            (e[(e.DriverRequestedMuraCorrectionMode_Int32 = 2200)] =
              "DriverRequestedMuraCorrectionMode_Int32"),
            (e[(e.DriverRequestedMuraFeather_InnerLeft_Int32 = 2201)] =
              "DriverRequestedMuraFeather_InnerLeft_Int32"),
            (e[(e.DriverRequestedMuraFeather_InnerRight_Int32 = 2202)] =
              "DriverRequestedMuraFeather_InnerRight_Int32"),
            (e[(e.DriverRequestedMuraFeather_InnerTop_Int32 = 2203)] =
              "DriverRequestedMuraFeather_InnerTop_Int32"),
            (e[(e.DriverRequestedMuraFeather_InnerBottom_Int32 = 2204)] =
              "DriverRequestedMuraFeather_InnerBottom_Int32"),
            (e[(e.DriverRequestedMuraFeather_OuterLeft_Int32 = 2205)] =
              "DriverRequestedMuraFeather_OuterLeft_Int32"),
            (e[(e.DriverRequestedMuraFeather_OuterRight_Int32 = 2206)] =
              "DriverRequestedMuraFeather_OuterRight_Int32"),
            (e[(e.DriverRequestedMuraFeather_OuterTop_Int32 = 2207)] =
              "DriverRequestedMuraFeather_OuterTop_Int32"),
            (e[(e.DriverRequestedMuraFeather_OuterBottom_Int32 = 2208)] =
              "DriverRequestedMuraFeather_OuterBottom_Int32"),
            (e[(e.Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303)] =
              "Audio_SupportsDualSpeakerAndJackOutput_Bool"),
            (e[(e.AttachedDeviceId_String = 3e3)] = "AttachedDeviceId_String"),
            (e[(e.SupportedButtons_Uint64 = 3001)] = "SupportedButtons_Uint64"),
            (e[(e.Axis0Type_Int32 = 3002)] = "Axis0Type_Int32"),
            (e[(e.Axis1Type_Int32 = 3003)] = "Axis1Type_Int32"),
            (e[(e.Axis2Type_Int32 = 3004)] = "Axis2Type_Int32"),
            (e[(e.Axis3Type_Int32 = 3005)] = "Axis3Type_Int32"),
            (e[(e.Axis4Type_Int32 = 3006)] = "Axis4Type_Int32"),
            (e[(e.ControllerRoleHint_Int32 = 3007)] =
              "ControllerRoleHint_Int32"),
            (e[(e.FieldOfViewLeftDegrees_Float = 4e3)] =
              "FieldOfViewLeftDegrees_Float"),
            (e[(e.FieldOfViewRightDegrees_Float = 4001)] =
              "FieldOfViewRightDegrees_Float"),
            (e[(e.FieldOfViewTopDegrees_Float = 4002)] =
              "FieldOfViewTopDegrees_Float"),
            (e[(e.FieldOfViewBottomDegrees_Float = 4003)] =
              "FieldOfViewBottomDegrees_Float"),
            (e[(e.TrackingRangeMinimumMeters_Float = 4004)] =
              "TrackingRangeMinimumMeters_Float"),
            (e[(e.TrackingRangeMaximumMeters_Float = 4005)] =
              "TrackingRangeMaximumMeters_Float"),
            (e[(e.ModeLabel_String = 4006)] = "ModeLabel_String"),
            (e[(e.IconPathName_String = 5e3)] = "IconPathName_String"),
            (e[(e.NamedIconPathDeviceOff_String = 5001)] =
              "NamedIconPathDeviceOff_String"),
            (e[(e.NamedIconPathDeviceSearching_String = 5002)] =
              "NamedIconPathDeviceSearching_String"),
            (e[(e.NamedIconPathDeviceSearchingAlert_String = 5003)] =
              "NamedIconPathDeviceSearchingAlert_String"),
            (e[(e.NamedIconPathDeviceReady_String = 5004)] =
              "NamedIconPathDeviceReady_String"),
            (e[(e.NamedIconPathDeviceReadyAlert_String = 5005)] =
              "NamedIconPathDeviceReadyAlert_String"),
            (e[(e.NamedIconPathDeviceNotReady_String = 5006)] =
              "NamedIconPathDeviceNotReady_String"),
            (e[(e.NamedIconPathDeviceStandby_String = 5007)] =
              "NamedIconPathDeviceStandby_String"),
            (e[(e.NamedIconPathDeviceAlertLow_String = 5008)] =
              "NamedIconPathDeviceAlertLow_String"),
            (e[(e.DisplayHiddenArea_Binary_Start = 5100)] =
              "DisplayHiddenArea_Binary_Start"),
            (e[(e.DisplayHiddenArea_Binary_End = 5150)] =
              "DisplayHiddenArea_Binary_End"),
            (e[(e.ParentContainer = 5151)] = "ParentContainer"),
            (e[(e.UserConfigPath_String = 6e3)] = "UserConfigPath_String"),
            (e[(e.InstallPath_String = 6001)] = "InstallPath_String"),
            (e[(e.HasDisplayComponent_Bool = 6002)] =
              "HasDisplayComponent_Bool"),
            (e[(e.HasControllerComponent_Bool = 6003)] =
              "HasControllerComponent_Bool"),
            (e[(e.HasCameraComponent_Bool = 6004)] = "HasCameraComponent_Bool"),
            (e[(e.HasDriverDirectModeComponent_Bool = 6005)] =
              "HasDriverDirectModeComponent_Bool"),
            (e[(e.HasVirtualDisplayComponent_Bool = 6006)] =
              "HasVirtualDisplayComponent_Bool"),
            (e[(e.HasSpatialAnchorsSupport_Bool = 6007)] =
              "HasSpatialAnchorsSupport_Bool"),
            (e[(e.ControllerType_String = 7e3)] = "ControllerType_String"),
            (e[(e.LegacyInputProfile_String = 7001)] =
              "LegacyInputProfile_String"),
            (e[(e.VendorSpecific_Reserved_Start = 1e4)] =
              "VendorSpecific_Reserved_Start"),
            (e[(e.VendorSpecific_Reserved_End = 10999)] =
              "VendorSpecific_Reserved_End"),
            (e[(e.TrackedDeviceProperty_Max = 1e6)] =
              "TrackedDeviceProperty_Max");
        })(et || (et = {})),
          (function (e) {
            (e[(e.k_EButton_System = 0)] = "k_EButton_System"),
              (e[(e.k_EButton_ApplicationMenu = 1)] =
                "k_EButton_ApplicationMenu"),
              (e[(e.k_EButton_Grip = 2)] = "k_EButton_Grip"),
              (e[(e.k_EButton_DPad_Left = 3)] = "k_EButton_DPad_Left"),
              (e[(e.k_EButton_DPad_Up = 4)] = "k_EButton_DPad_Up"),
              (e[(e.k_EButton_DPad_Right = 5)] = "k_EButton_DPad_Right"),
              (e[(e.k_EButton_DPad_Down = 6)] = "k_EButton_DPad_Down"),
              (e[(e.k_EButton_A = 7)] = "k_EButton_A"),
              (e[(e.k_EButton_ProximitySensor = 31)] =
                "k_EButton_ProximitySensor"),
              (e[(e.k_EButton_Axis0 = 32)] = "k_EButton_Axis0"),
              (e[(e.k_EButton_Axis1 = 33)] = "k_EButton_Axis1"),
              (e[(e.k_EButton_Axis2 = 34)] = "k_EButton_Axis2"),
              (e[(e.k_EButton_Axis3 = 35)] = "k_EButton_Axis3"),
              (e[(e.k_EButton_Axis4 = 36)] = "k_EButton_Axis4"),
              (e[(e.k_EButton_SteamVR_Touchpad = 32)] =
                "k_EButton_SteamVR_Touchpad"),
              (e[(e.k_EButton_SteamVR_Trigger = 33)] =
                "k_EButton_SteamVR_Trigger"),
              (e[(e.k_EButton_Dashboard_Back = 2)] =
                "k_EButton_Dashboard_Back"),
              (e[(e.k_EButton_IndexController_A = 2)] =
                "k_EButton_IndexController_A"),
              (e[(e.k_EButton_IndexController_B = 1)] =
                "k_EButton_IndexController_B"),
              (e[(e.k_EButton_IndexController_JoyStick = 35)] =
                "k_EButton_IndexController_JoyStick"),
              (e[(e.k_EButton_Reserved0 = 50)] = "k_EButton_Reserved0"),
              (e[(e.k_EButton_Reserved1 = 51)] = "k_EButton_Reserved1"),
              (e[(e.k_EButton_Max = 64)] = "k_EButton_Max");
          })(tt || (tt = {})),
          (function (e) {
            (e[(e.None = 0)] = "None"),
              (e[(e.ButtonEnter = 1)] = "ButtonEnter"),
              (e[(e.ButtonLeave = 2)] = "ButtonLeave"),
              (e[(e.Snap = 3)] = "Snap"),
              (e[(e.Sliding = 4)] = "Sliding"),
              (e[(e.SlidingEdge = 5)] = "SlidingEdge");
          })(nt || (nt = {})),
          (function (e) {
            (e[(e.Minimal = 1)] = "Minimal"),
              (e[(e.Modal = 2)] = "Modal"),
              (e[(e.ShowArrowKeys = 4)] = "ShowArrowKeys"),
              (e[(e.HideDoneKey = 8)] = "HideDoneKey");
          })(it || (it = {})),
          (function (e) {
            (e[(e.Unknown = -1)] = "Unknown"),
              (e[(e.Idle = 0)] = "Idle"),
              (e[(e.UserInteraction = 1)] = "UserInteraction"),
              (e[(e.UserInteraction_Timeout = 2)] = "UserInteraction_Timeout"),
              (e[(e.Standby = 3)] = "Standby"),
              (e[(e.Idle_Timeout = 4)] = "Idle_Timeout");
          })(ot || (ot = {})),
          (function (e) {
            (e[(e.Notification_Shown = 600)] = "Notification_Shown"),
              (e[(e.Notification_Hidden = 601)] = "Notification_Hidden"),
              (e[(e.Notification_BeginInteraction = 602)] =
                "Notification_BeginInteraction"),
              (e[(e.Notification_Destroyed = 603)] = "Notification_Destroyed");
          })(rt || (rt = {}));
        var dt = n(50622);
        const ut = 1,
          ht = (0, mt.i_)(st()["error-shake-duration"]);
        function pt(e, t) {
          return t < 0 ? 0 : t > 1 ? 1 : 0 == e ? t : Math.round(t / e) * e;
        }
        function _t(e, t, n) {
          const i = e + n * (t - e);
          return Number.parseFloat(i.toFixed(10));
        }
        function gt(e, t, n) {
          return (n - e) / (t - e);
        }
        var Ct;
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.MouseDragging = 1)] = "MouseDragging"),
            (e[(e.TouchStart = 2)] = "TouchStart"),
            (e[(e.TouchDragging = 3)] = "TouchDragging");
        })(Ct || (Ct = {}));
        class ft extends r.Component {
          m_refSlider = r.createRef();
          m_refHandle = r.createRef();
          m_navRefSlider = r.createRef();
          m_sliderBounds = void 0;
          m_handleBounds = void 0;
          m_fZoom = 1;
          m_eDragMode = Ct.None;
          m_vTouchStartPosition = (0, lt.D0)();
          m_fStartValue;
          m_fLatestUserValue;
          m_fLatestOnChangeValue;
          m_bInnerSliderHasFocus = !1;
          m_nRepeatCount = 0;
          m_fInitalRepeatTime = void 0;
          get showHandle() {
            return this.props.showHandle ?? !0;
          }
          get isKeyNavTarget() {
            return this.props.isKeyNavTarget ?? !0;
          }
          get validRange() {
            return this.props.min < this.props.max;
          }
          get range() {
            return this.validRange ? this.props.max - this.props.min : 0;
          }
          get step() {
            return Math.abs(this.props.step ?? ut);
          }
          get normalizedStep() {
            return this.step / this.range;
          }
          get normalizedDpadStep() {
            const e = this.props.dpadStep ?? this.step,
              t = e > 0 ? e / this.range : 0.01;
            return Math.max(t, this.normalizedStep);
          }
          get normalizedClampedValue() {
            const e =
              null == this.props.value || isNaN(this.props.value)
                ? this.props.min
                : (0, J.OQ)(this.props.value, this.props.min, this.props.max);
            return gt(this.props.min, this.props.max, e);
          }
          get normalizedDefaultValue() {
            const e = this.props.resetValue;
            if (
              !(
                null == e ||
                isNaN(e) ||
                e < this.props.min ||
                e > this.props.max
              )
            )
              return gt(this.props.min, this.props.max, e);
          }
          get normalizedSliderOrigin() {
            const e = (0, J.OQ)(0, this.props.min, this.props.max);
            return gt(this.props.min, this.props.max, e);
          }
          get CanResetToDefault() {
            return (
              null != this.props.resetValue &&
              this.props.value != this.props.resetValue
            );
          }
          get SliderChangeSource() {
            switch (this.m_eDragMode) {
              case Ct.MouseDragging:
                return 1;
              case Ct.TouchDragging:
              case Ct.TouchStart:
                return 0;
              case Ct.None:
                return;
            }
          }
          constructor(e) {
            super(e),
              (this.m_fStartValue = this.props.value),
              (this.m_fLatestUserValue = this.props.value),
              (this.m_fLatestOnChangeValue = this.props.value);
          }
          RecomputeSliderBounds() {
            (this.m_sliderBounds =
              this.m_refSlider.current?.getBoundingClientRect()),
              (this.m_handleBounds =
                this.m_refHandle.current?.getBoundingClientRect());
          }
          SetDragMode(e) {
            if (e != this.m_eDragMode) {
              switch (
                ((this.m_eDragMode = e),
                this.props.onChangeStart &&
                  this.props.onChangeStart(this.SliderChangeSource),
                e)
              ) {
                case Ct.MouseDragging:
                case Ct.TouchDragging:
                case Ct.TouchStart:
                  this.RecomputeSliderBounds(),
                    (this.m_fStartValue = this.props.value),
                    (this.m_fLatestUserValue = this.props.value);
                case Ct.None:
              }
              switch (e) {
                case Ct.MouseDragging:
                  this.m_refSlider.current?.ownerDocument?.addEventListener(
                    "mousemove",
                    this.OnWindowMouseMove,
                    { passive: !1 },
                  ),
                    this.m_refSlider.current?.ownerDocument?.addEventListener(
                      "mouseup",
                      this.OnWindowMouseUp,
                      { passive: !1 },
                    );
                  break;
                case Ct.TouchStart:
                case Ct.TouchDragging:
                  this.m_refSlider.current?.ownerDocument?.addEventListener(
                    "touchmove",
                    this.OnWindowTouchMove,
                    { passive: !1 },
                  ),
                    this.m_refSlider.current?.ownerDocument?.addEventListener(
                      "touchend",
                      this.OnWindowTouchEnd,
                      { passive: !1 },
                    );
                  break;
                case Ct.None:
                  this.RemoveDocumentEventListeners();
              }
            }
          }
          OnGamepadDirection(e) {
            if (this.props.disabled) return !1;
            let t = 0;
            if (e.detail.button == me.pR.DIR_LEFT) t = -1;
            else {
              if (e.detail.button != me.pR.DIR_RIGHT) return !1;
              t = 1;
            }
            e.detail.is_repeat
              ? (0 == this.m_nRepeatCount &&
                  (this.m_fInitalRepeatTime = performance.now()),
                this.m_nRepeatCount++)
              : ((this.m_nRepeatCount = 0),
                (this.m_fInitalRepeatTime = performance.now()));
            const n = performance.now() - this.m_fInitalRepeatTime,
              i = (0, J.bT)(n, 0, 2e3, 500, 250),
              o = Math.pow(2, Math.floor(n / i)),
              r = this.normalizedDpadStep * o,
              a = (0, J.OQ)(r, this.normalizedDpadStep, 0.05) * t,
              s = pt(this.normalizedStep, this.normalizedClampedValue + a);
            let l = _t(this.props.min, this.props.max, s);
            if (
              ((l = (0, J.OQ)(
                l,
                this.props.clampMin ?? this.props.min,
                this.props.clampMax ?? this.props.max,
              )),
              l != this.props.value)
            ) {
              const e = l > this.m_fLatestUserValue;
              ue.eZ.PlayNavSound(e ? ue.PN.SliderUp : ue.PN.SliderDown),
                (this.m_fLatestUserValue = l),
                this.FireOnChange(l, 2);
            } else ue.eZ.PlayNavSound(ue.PN.FailedNav);
            return !0;
          }
          FireOnChange(e, t) {
            this.m_fLatestOnChangeValue != e &&
              ((this.m_fLatestOnChangeValue = e),
              this.props.onChange && this.props.onChange(e, t));
          }
          ComputeNormalizedValueForMousePosition(e) {
            if (null == this.m_sliderBounds) return 0;
            const t = e / this.m_fZoom,
              n = this.m_sliderBounds.right - this.m_sliderBounds.left,
              i =
                null == this.m_handleBounds
                  ? 0
                  : this.m_handleBounds.right - this.m_handleBounds.left,
              o = n - i;
            return (t - this.m_sliderBounds.left - i / 2) / o;
          }
          BShouldTriggerHapticOnSnap() {
            const e = this.normalizedStep;
            return e > 0 && e >= 1 / 40;
          }
          PlayHaptic(e) {
            this.m_refSlider.current?.ownerDocument.defaultView?.SteamClient?.OpenVR?.TriggerOverlayHapticEffect?.(
              e,
              0,
            );
          }
          UpdateSliderValueForPosition(e) {
            if (this.props.disabled || !this.m_refSlider.current) return;
            const t = this.ComputeNormalizedValueForMousePosition(e),
              n = pt(this.normalizedStep, t);
            let i = _t(this.props.min, this.props.max, n);
            const o = this.props.clampMin ?? this.props.min,
              r = this.props.clampMax ?? this.props.max;
            if (((i = (0, J.OQ)(i, o, r)), i != this.props.value)) {
              const e = i > this.props.value,
                t = 0 == this.step;
              if (
                ((this.m_eDragMode == Ct.None || !t) &&
                  ue.eZ.PlayNavSound(e ? ue.PN.SliderUp : ue.PN.SliderDown),
                this.m_eDragMode == Ct.MouseDragging ||
                  this.m_eDragMode == Ct.TouchDragging)
              ) {
                let e = !1;
                if (
                  (i == o || i == r) &&
                  this.m_fLatestUserValue > o &&
                  this.m_fLatestUserValue < r &&
                  !e
                )
                  this.PlayHaptic(nt.SlidingEdge), (e = !0);
                else if (
                  !this.BShouldTriggerHapticOnSnap() &&
                  this.m_fLatestUserValue >= o &&
                  this.m_fLatestUserValue <= r
                ) {
                  const t = 40;
                  Math.floor(((this.m_fLatestUserValue - o) / (r - o)) * t) ==
                    Math.floor(((i - o) / (r - o)) * t) ||
                    e ||
                    (this.PlayHaptic(nt.Sliding), (e = !0));
                }
                t || e || (this.PlayHaptic(nt.Snap), (e = !0));
              }
              (this.m_fLatestUserValue = i),
                this.FireOnChange(i, this.SliderChangeSource);
            }
          }
          OnWindowMouseMove(e) {
            this.UpdateSliderValueForPosition(e.clientX);
          }
          OnWindowMouseUp(e) {
            this.m_eDragMode != Ct.None && this.Complete();
          }
          OnMouseDown(e) {
            0 == e.button &&
              (this.props.disabled ||
                (e.preventDefault(),
                this.SetDragMode(Ct.MouseDragging),
                this.UpdateSliderValueForPosition(e.clientX)));
          }
          OnTouchStart(e) {
            if (this.props.disabled || 1 != e.touches.length) return;
            e.preventDefault();
            const t = this.ComputeNormalizedValueForMousePosition(
              e.touches[0].clientX,
            );
            t < 0 ||
              t > 1 ||
              (this.SetDragMode(Ct.TouchStart),
              (this.m_vTouchStartPosition = {
                x: e.touches[0].clientX,
                y: e.touches[0].clientY,
              }));
          }
          OnWindowTouchMove(e) {
            if (1 == e.touches.length) {
              switch (this.m_eDragMode) {
                case Ct.TouchStart:
                  const t = {
                    x: e.touches[0].clientX,
                    y: e.touches[0].clientY,
                  };
                  if ((0, lt.LD)(this.m_vTouchStartPosition, t) >= 10) {
                    const e = (0, lt.Fg)(this.m_vTouchStartPosition, t);
                    Math.abs(e.x) > Math.abs(e.y)
                      ? (this.SetDragMode(Ct.TouchDragging),
                        this.m_refSlider.current?.focus())
                      : this.SetDragMode(Ct.None);
                  }
                  break;
                case Ct.TouchDragging:
                  this.UpdateSliderValueForPosition(e.touches[0].clientX);
              }
              e.preventDefault();
            }
          }
          OnWindowTouchEnd(e) {
            this.m_eDragMode != Ct.None && this.Complete();
          }
          Complete() {
            const e = this.m_eDragMode != Ct.None;
            this.FireOnChange(this.m_fLatestUserValue, this.SliderChangeSource),
              this.props.onChangeComplete &&
                this.props.onChangeComplete(
                  this.m_fLatestUserValue,
                  this.SliderChangeSource,
                ),
              this.SetDragMode(Ct.None);
            const t = 0 == this.step;
            if (this.m_fLatestUserValue != this.m_fStartValue && t && e) {
              const e = this.m_fLatestUserValue > this.m_fStartValue;
              ue.eZ.PlayNavSound(e ? ue.PN.SliderUp : ue.PN.SliderDown);
            }
          }
          RemoveDocumentEventListeners() {
            this.m_refSlider.current?.ownerDocument?.removeEventListener(
              "mousemove",
              this.OnWindowMouseMove,
            ),
              this.m_refSlider.current?.ownerDocument?.removeEventListener(
                "touchmove",
                this.OnWindowTouchMove,
              ),
              this.m_refSlider.current?.ownerDocument?.removeEventListener(
                "mouseup",
                this.OnWindowMouseUp,
              ),
              this.m_refSlider.current?.ownerDocument?.removeEventListener(
                "touchend",
                this.OnWindowTouchEnd,
              );
          }
          componentDidMount() {
            this.m_fZoom = (0, dt.a_)(this.m_refSlider.current);
          }
          componentWillUnmount() {
            this.RemoveDocumentEventListeners();
          }
          BlurInnerSlider() {
            this.m_navRefSlider.current?.ParentTakeFocus();
          }
          OnInnerSliderFocus() {
            (this.m_bInnerSliderHasFocus = !0),
              (this.m_fStartValue = this.props.value);
          }
          OnInnerSliderBlur() {
            (this.m_bInnerSliderHasFocus = !1),
              this.m_fStartValue != this.m_fLatestUserValue && this.Complete();
          }
          ResetToDefault() {
            if (!this.CanResetToDefault || this.m_eDragMode != Ct.None) return;
            let e;
            (this.m_fLatestUserValue = this.props.resetValue),
              this.FireOnChange(this.props.resetValue, 4),
              this.m_bInnerSliderHasFocus
                ? (e = this.props.resetValue > this.m_fLatestUserValue)
                : ((e = this.props.resetValue > this.props.value),
                  this.props.onChangeComplete &&
                    this.props.onChangeComplete(this.props.resetValue, 4)),
              ue.eZ.PlayNavSound(e ? ue.PN.SliderUp : ue.PN.SliderDown);
          }
          OnContextMenu(e) {
            if (null != this.props.resetValue) {
              const t = r.createElement(
                Ye.tz,
                null,
                r.createElement(
                  Ye.kt,
                  {
                    disabled: !this.CanResetToDefault,
                    onSelected: this.ResetToDefault,
                  },
                  (0, d.we)("#ResetToDefault"),
                ),
              );
              (0, M.lX)(t, e);
            }
          }
          render() {
            const e = this.props.showBookendLabels ?? !1,
              t = this.props.notchTicksVisible ?? !e,
              n = e ? 2 : this.props.notchCount,
              i = [
                { notchIndex: 0, label: `${this.props.min}` },
                { notchIndex: 1, label: `${this.props.max}` },
              ],
              o = e ? i : this.props.notchLabels,
              s = this.props.focusable ?? !0,
              l = this.normalizedDefaultValue,
              c = this.normalizedSliderOrigin,
              h = null != l,
              p = this.props.resetValueAppearance ?? "top-caret",
              _ = "top-caret" == p,
              g = !_,
              C = {};
            this.CanResetToDefault &&
              (C[me.pR.SECONDARY] = (0, d.we)("#ResetToDefault"));
            let f = `${st().SliderHandle} SliderHandle`,
              S = `${st().SliderHandleContainer} SliderHandleContainer `;
            return (
              "verticalline" == this.props.handleType
                ? ((f = `${st().VerticalLineSliderHandle} SliderHandle`),
                  (S = `${st().VerticalLineSliderHandleContainer} SliderHandleContainer `))
                : ("leftparen" != this.props.handleType &&
                    "rightparen" != this.props.handleType) ||
                  ((f = (0, m.A)(
                    st().ParenSliderHandle,
                    "leftparen" == this.props.handleType
                      ? st().Left
                      : st().Right,
                    "SliderHandle",
                  )),
                  (S = (0, m.A)(
                    st().ParenSliderHandleContainer,
                    "leftparen" == this.props.handleType
                      ? st().Left
                      : st().Right,
                    "SliderHandleContainer",
                  ))),
              r.createElement(
                ct.YZ,
                {
                  noFocusRing: !0,
                  className: (0, m.A)(
                    st().SliderControlPanelGroup,
                    "SliderControlPanelGroup",
                    this.props.className,
                  ),
                  navRef: this.props.navRef,
                  onMouseDown: (e) => this.OnMouseDown(e.nativeEvent),
                  onTouchStart: (e) => this.OnTouchStart(e.nativeEvent),
                  onOKActionDescription: this.props.disabled
                    ? null
                    : (0, d.we)("#Slider_AdjustSlider"),
                  focusable: s,
                  childFocusDisabled: this.props.disabled || !s,
                  onContextMenu: this.OnContextMenu,
                  onOKButton: this.props.disabled
                    ? () => ue.eZ.PlayNavSound(ue.PN.FailedNav)
                    : void 0,
                  onSecondaryButton: this.CanResetToDefault
                    ? this.ResetToDefault
                    : void 0,
                  onSecondaryActionDescription: this.CanResetToDefault
                    ? (0, d.we)("#ResetToDefault")
                    : void 0,
                  actionDescriptionMap: C,
                },
                r.createElement(
                  a.ml,
                  {
                    className: (0, m.A)(
                      st().SliderControlAndNotches,
                      this.props.disabled && st().Disabled,
                      h && st().WithDefaultValue,
                      h && g && st().DefaultValueIsColorRange,
                      h && g && "left" == p.side && st().DefaultValueColorLeft,
                      h && g && "left" != p.side && st().DefaultValueColorRight,
                    ),
                    focusable: this.isKeyNavTarget,
                    noFocusRing: !0,
                    onFocus: this.OnInnerSliderFocus,
                    onBlur: this.OnInnerSliderBlur,
                    style: {
                      "--normalized-slider-value": this.normalizedClampedValue,
                      "--normalized-slider-default-value": l,
                      "--normalized-slider-origin": c,
                      "--default-value-track-color": g
                        ? p.trackForegroundColor
                        : void 0,
                      "--slider-extra-notch-padding":
                        this.props.extraNotchPadding ?? "0px",
                    },
                    ref: (0, u.XB)(this.m_refSlider, this.props.innerRef),
                    navRef: this.m_navRefSlider,
                    onGamepadDirection: this.OnGamepadDirection,
                    onOKButton: this.BlurInnerSlider,
                    onOKActionDescription: null,
                    onCancelButton: this.BlurInnerSlider,
                    onCancelActionDescription: (0, d.we)(
                      "#ActionButtonLabelDone",
                    ),
                  },
                  r.createElement(
                    "div",
                    {
                      className: (0, m.A)(st().SliderControl, "SliderControl"),
                    },
                    r.createElement("div", {
                      className: (0, m.A)(
                        st().SliderTrack,
                        null != this.props.notchCount &&
                          t &&
                          st().SliderHasNotches,
                        {
                          [st().SliderTrackDark]:
                            "dark" === this.props.trackTone,
                        },
                        "SliderTrack",
                      ),
                    }),
                    h &&
                      _ &&
                      r.createElement(
                        "div",
                        { className: st().DefaultValueTickContainer },
                        r.createElement(
                          "div",
                          { className: st().DefaultValueTick },
                          r.createElement(he.u49, { direction: "down" }),
                        ),
                      ),
                    this.validRange &&
                      null != this.props.value &&
                      !isNaN(this.props.value) &&
                      this.showHandle &&
                      r.createElement(
                        "div",
                        { className: S },
                        r.createElement(
                          "div",
                          { className: f, ref: this.m_refHandle },
                          "leftparen" == this.props.handleType &&
                            r.createElement(he.Epp, null),
                          "rightparen" == this.props.handleType &&
                            r.createElement(he.jvG, null),
                        ),
                      ),
                  ),
                  r.createElement(St, {
                    notchCount: n,
                    notchLabels: o,
                    sliderValue: this.normalizedClampedValue,
                    notchTicksVisible: t,
                    renderNotch: this.props.renderNotch,
                  }),
                ),
              )
            );
          }
        }
        function St(e) {
          let {
              sliderValue: t,
              notchCount: n,
              notchLabels: i,
              notchTicksVisible: o,
              renderNotch: a,
            } = e,
            l = i ?? [];
          if (!n) return null;
          let c = !1,
            d = [];
          for (let e = 0; e < n; ++e) {
            let i = l.find((t) => t.notchIndex == e);
            i && (c = !0),
              d.push(
                r.createElement(vt, {
                  key: e,
                  notchIndex: e,
                  sliderValue: t,
                  notchLabel: i,
                  notchCount: n,
                  notchTicksVisible: o,
                  renderNotch: a,
                }),
              );
          }
          return r.createElement(
            s.Z,
            { className: (0, m.A)(st().SliderNotchContainer) },
            d,
          );
        }
        function vt(e) {
          const t = e.notchIndex <= (e.notchCount - 1) * e.sliderValue,
            n = e.notchCount <= 3 && !e.notchTicksVisible,
            i = n && 0 == e.notchIndex,
            o = n && e.notchIndex == e.notchCount - 1,
            a = { ...e, alignLeftEnd: i, alignRightEnd: o, active: t };
          return r.createElement(
            "div",
            { className: (0, m.A)(st().SliderNotch, n && st().AlignToEnds) },
            e.renderNotch ? e.renderNotch(a) : r.createElement(bt, { ...a }),
          );
        }
        function bt(e) {
          const { alignLeftEnd: t, alignRightEnd: n, active: i } = e;
          return r.createElement(
            r.Fragment,
            null,
            e.notchTicksVisible &&
              r.createElement("div", {
                className: (0, m.A)(st().SliderNotchTick, i && st().TickActive),
              }),
            e.notchLabel &&
              r.createElement(
                "div",
                {
                  className: (0, m.A)(
                    st().SliderNotchLabel,
                    t && st().AlignToLeft,
                    n && st().AlignToRight,
                  ),
                },
                e.notchLabel?.label,
              ),
          );
        }
        function It(e) {
          const {
              label: t,
              description: n,
              tabIndex: i,
              className: o,
              showValue: a,
              renderValue: s,
              valueSuffix: l,
              tooltip: c,
              layout: m,
              padding: h,
              bottomSeparator: p,
              notchCount: _,
              indentLevel: g,
              editableValue: C,
              highlightOnFocus: f,
              parentSliderRef: v,
              onOptionsButton: b,
              onOptionsActionDescription: I,
              iconLocation: w,
              childrenContainerWidth: y,
              explainer: E,
              explainerTitle: D,
              onActivate: A,
              disabled: T,
              ...M
            } = e,
            { icon: R, ...k } = M,
            L = r.useRef(null),
            G = r.useRef(null),
            F = r.useRef(null),
            P = (s ?? S)(e.value, e.valueSuffix),
            B = (function (e) {
              const { min: t, max: n } = e,
                i = e.validValues ?? "steps",
                o = e.step ?? ut,
                a = r.useCallback(
                  (e) => "number" == typeof e && !Number.isNaN(e),
                  [],
                ),
                s = r.useCallback((e) => !!a(e) && e >= t && e <= n, [a, t, n]),
                l = r.useCallback(
                  (e) => !!s(e) && (0 == o || ((e - t) / o) % 1 == 0),
                  [s, t, o],
                ),
                c = r.useCallback(
                  (e) => !(!a(e) || "function" != typeof i) && i(e),
                  [a, i],
                );
              switch (i) {
                case "all":
                  return a;
                case "range":
                  return s;
                case "steps":
                  return l;
                default:
                  return c;
              }
            })(e),
            [x, O] = r.useState(!1),
            N = () => {
              e.onChangeStart && e.onChangeStart(3), O(!0);
            },
            V = (t) => {
              B(t) &&
                (e.onChange && e.onChange(t, 3),
                e.onChangeComplete && e.onChangeComplete(t, 3)),
                O(!1);
            };
          r.useEffect(() => {
            !x && F.current?.BHasFocus() && G.current?.TakeFocus();
          }, [F, G, x]);
          let U = t;
          C
            ? (U = r.createElement(
                r.Fragment,
                null,
                r.createElement("div", { className: st().LabelText }, e.label),
                r.createElement(wt, {
                  navRef: F,
                  editing: x,
                  renderedValue: P,
                  valueSuffix: e.valueSuffix,
                  onClick: N,
                  onChangeComplete: V,
                  validator: B,
                }),
              ))
            : a &&
              (U = r.createElement(
                r.Fragment,
                null,
                r.createElement("div", { className: st().LabelText }, e.label),
                r.createElement("div", { className: st().DescriptionValue }, P),
              ));
          const H = r.useRef(null),
            W = r.useCallback(
              (e) => {
                H.current?.OnTouchStart(e.nativeEvent);
              },
              [H],
            ),
            z = r.useCallback(
              (e) => {
                H.current?.OnContextMenu(e);
              },
              [H],
            ),
            j = (0, u.Ue)(H, v),
            q = C ? N : void 0,
            K = C ? (0, d.we)("#Slider_EditValue") : void 0;
          let Z = b || q,
            Q = b ? I : K,
            $ = b ? q : void 0,
            X = b ? K : void 0;
          return r.createElement(
            Ge,
            {
              disabled: T,
              childrenLayout: m ?? "below",
              padding: h,
              bottomSeparator: p,
              childrenContainerWidth: y ?? "fixed",
              label: U,
              description: n,
              ref: L,
              className: o,
              onTouchStart: W,
              onContextMenu: z,
              indentLevel: g,
              onMenuActionDescription: X,
              onMenuButton: $,
              onActivate: A,
              highlightOnFocus: f,
              onOptionsButton: Z,
              onOptionsActionDescription: Q,
              icon: R,
              iconLocation: w ?? "before-children",
              explainer: E,
              explainerTitle: D,
            },
            r.createElement(ft, {
              ref: j,
              disabled: T,
              notchCount: _,
              focusable: !x,
              navRef: G,
              ...k,
            }),
          );
        }
        function wt(e) {
          const {
              editing: t,
              renderedValue: n,
              valueSuffix: i,
              onClick: o,
              onChangeComplete: s,
              navRef: l,
              validator: c,
            } = e,
            h = r.useRef(null),
            p = r.useRef(null),
            _ = r.useRef(null),
            g = (0, u.Ue)(l, _),
            { fnTriggerErrorShake: C, bPlayingErrorShake: f } = (function (e) {
              const [t, n] = r.useState(!1),
                i = r.useRef(),
                o = r.useRef(),
                a = r.useCallback(() => {
                  window.clearTimeout(i.current),
                    (i.current = window.setTimeout(() => {
                      e.current?.classList.remove(st().ErrorShake),
                        e.current?.getBoundingClientRect(),
                        e.current?.classList.add(st().ErrorShake);
                    }, 0)),
                    n(!0),
                    window.clearTimeout(o.current),
                    (o.current = window.setTimeout(() => n(!1), ht));
                }, [e]);
              return (
                r.useEffect(
                  () => () => {
                    window.clearTimeout(i.current),
                      window.clearTimeout(o.current);
                  },
                  [],
                ),
                { fnTriggerErrorShake: a, bPlayingErrorShake: t }
              );
            })(h),
            S = t || f,
            [v, b] = r.useState("");
          r.useEffect(() => {
            S || b("");
          }, [S]);
          const I = c(Number.parseFloat(v)),
            w = r.useRef(!1),
            y = r.useCallback(
              (e) => {
                !I && v.length > 0 && C(),
                  w.current ||
                    ((I || e) && (s(Number.parseFloat(v)), (w.current = !0)));
              },
              [I, v, C, s],
            ),
            E = r.useCallback(() => p.current?.TakeFocusAndShowKeyboard(), [p]),
            D = r.useRef(!1);
          r.useEffect(() => {
            t && !D.current && E(), (D.current = t);
          }, [_, t, E]);
          const A = f || (S && !I && v.length > 0 && "-" != v),
            T = (0, m.A)(st().DescriptionValue, A && st().RedBorder),
            [M, R] = r.useState(0),
            [k, L] = r.useState(0),
            G = r.useRef(),
            F = r.useCallback(() => {
              const e = G.current.clientWidth;
              S ? L(e) : R(e);
            }, [S]);
          r.useLayoutEffect(F, [F]);
          const P = (0, u.wY)(F),
            B = (0, u.Ue)(G, P);
          r.useEffect(() => {
            _.current?.BHasFocus() && _.current?.Node().ForceMeasureFocusRing();
          }, [k]);
          const x = S ? v : n,
            O = S ? Math.max(M, k) : M;
          return r.createElement(
            "div",
            { className: T },
            r.createElement(
              "div",
              { className: st().FakeEditableValue, ref: B },
              x,
            ),
            r.createElement(a.BA, {
              refKeyboardHandle: p,
              navRef: g,
              ref: h,
              focusable: t,
              className: st().EditableValue,
              style: { width: O },
              onEnterKeyPress: () => y(!1),
              strEnterKeyLabel: (0, d.we)("#ActionButtonLabelDone"),
              onClick: o,
              onFocus: () => (w.current = !1),
              onBlur: () => y(!0),
              value: x,
              placeholder: n,
              onChange: (e) => b(e.target.value.trim()),
              onCancelButton: () => y(!0),
              onCancelActionDescription: (0, d.we)("#ActionButtonLabelDone"),
              onOKButton: E,
              onOKActionDescription: (0, d.we)("#Slider_EditValue"),
              onOptionsActionDescription: void 0,
              onOptionsButton: E,
            }),
          );
        }
        (0, o.Cg)([u.oI], ft.prototype, "RecomputeSliderBounds", null),
          (0, o.Cg)([u.oI], ft.prototype, "SetDragMode", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnGamepadDirection", null),
          (0, o.Cg)([u.oI], ft.prototype, "UpdateSliderValueForPosition", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnWindowMouseMove", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnWindowMouseUp", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnMouseDown", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnTouchStart", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnWindowTouchMove", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnWindowTouchEnd", null),
          (0, o.Cg)([u.oI], ft.prototype, "Complete", null),
          (0, o.Cg)([u.oI], ft.prototype, "BlurInnerSlider", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnInnerSliderFocus", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnInnerSliderBlur", null),
          (0, o.Cg)([u.oI], ft.prototype, "ResetToDefault", null),
          (0, o.Cg)([u.oI], ft.prototype, "OnContextMenu", null);
        r.forwardRef(function (e, t) {
          const {
            label: n,
            labelIndex: i,
            xOffset: o,
            onResize: a,
            OnMouseDown: s,
            OnTouchStart: l,
          } = e;
          r.useEffect(() => {
            a(i);
          }, [a, i]);
          const c = r.useCallback(
              (e) => {
                a(i);
              },
              [a, i],
            ),
            m = (0, u.wY)(c),
            d = (0, u.Ue)(m, t);
          return r.createElement(
            "div",
            {
              className: st().CompoundSliderSubSliderLabel,
              ref: d,
              onMouseDown: s,
              onTouchStart: l,
              style: { transform: `translateX(${o}px)` },
            },
            r.createElement(
              "div",
              { className: st().CompoundSliderSubSliderLabelInternal },
              n,
            ),
          );
        });
        var yt = n(88796);
        const Et = r.forwardRef(function (e, t) {
          const {
            value: n,
            onChange: i,
            disabled: o,
            className: s,
            focusable: l,
            children: c,
            navRef: d,
          } = e;
          return r.createElement(
            a.ml,
            {
              noFocusRing: !0,
              className: (0, m.A)(s, Me().Toggle, {
                [Me().Disabled]: !!o,
                [Me().On]: !!n,
              }),
              onClick: () => {
                if (!o && i) {
                  const e = !n;
                  i(e),
                    ue.eZ.PlayNavSound(e ? ue.PN.ToggleOn : ue.PN.ToggleOff);
                }
              },
              ref: t,
              navRef: d,
              focusable: l,
            },
            r.createElement("div", { className: Me().ToggleRail }),
            r.createElement("div", { className: Me().ToggleSwitch }),
            c,
          );
        });
        class Dt extends i.pF {
          OnToggleChange(e) {
            this.props.disabled || e === this.checked || this.Toggle();
          }
          render() {
            const e = !!this.props.disabled,
              { actionDescriptions: t, gamepadEvents: n } = (0, yt.C7)(
                this.props,
              );
            return r.createElement(
              Ge,
              {
                className: this.props.className,
                disabled: e,
                label: this.props.label,
                icon: this.props.icon,
                description: this.props.description,
                explainer: this.props.explainer,
                explainerTitle: this.props.explainerTitle,
                padding: this.props.padding,
                bottomSeparator: this.props.bottomSeparator,
                highlightOnFocus: this.props.highlightOnFocus,
                inlineWrap: "keep-inline",
                onContextMenu: this.props.onContextMenu,
                actionDescriptionMap: t,
                onClick: this.props.onClick,
                indentLevel: this.props.indentLevel,
                ...n,
              },
              r.createElement(Et, {
                onChange: this.OnToggleChange,
                value: this.checked,
                disabled: e,
                navRef: this.props.navRef,
              }),
            );
          }
        }
        (0, o.Cg)([u.oI], Dt.prototype, "OnToggleChange", null);
      },
      35468: (e, t, n) => {
        "use strict";
        n.d(t, { P8: () => m, _H: () => l });
        var i = n(63696),
          o = n(77171),
          r = n(25468),
          a = n(24977),
          s = n.n(a);
        function l(e) {
          const t = (0, r.Zt)("ToggleControl", c);
          return i.createElement(t, { ...e });
        }
        function c(e) {
          const { value: t, onChange: n, disabled: r } = e;
          return i.createElement(
            "div",
            {
              className: (0, o.A)(s().Toggle, r && s().Disabled),
              onClick: () => !r && n && n(!t),
            },
            i.createElement("div", { className: s().ToggleRail }),
            i.createElement("div", {
              className: (0, o.A)(
                s().ToggleRail,
                s().Highlight,
                t ? s().On : s().Off,
              ),
            }),
            i.createElement("div", {
              className: (0, o.A)(s().ToggleSwitch, t ? s().On : s().Off),
            }),
          );
        }
        const m = (e) => {
          const {
            label: t,
            value: n,
            onChange: r,
            disabled: a,
            className: c,
          } = e;
          return i.createElement(
            "div",
            { className: (0, o.A)(s().ToggleRow, c) },
            i.createElement(
              "div",
              { className: (0, o.A)(s().Label, a && s().Disabled) },
              t,
            ),
            i.createElement(l, { value: n, onChange: r, disabled: a }),
          );
        };
      },
      61632: (e, t, n) => {
        "use strict";
        n.d(t, {
          Q4: () => V,
          nl: () => F,
          iY: () => H,
          CE: () => W,
          iD: () => ne,
          X6: () => U,
          kW: () => J,
        });
        var i = n(34629),
          o = n(89193),
          r = n(41230),
          a = n(63696),
          s = n(77889),
          l = n(70042),
          c = n(50228),
          m = n(94786),
          d = n(27816),
          u = n(77171),
          h = n(74002),
          p = n(82924),
          _ = n(75699),
          g = n(17070),
          C = n(89021),
          f = n(69074),
          S = n(29359),
          v = n(80825);
        class b extends a.Component {
          constructor(e) {
            super(e), (this.state = { activeIndex: e.initialActiveIndex || 0 });
          }
          render() {
            const { config: e } = this.props,
              { activeIndex: t } = this.state,
              n = e[t] && e[t].renderContent ? e[t].renderContent() : null,
              i = e.length > 1,
              o = i
                ? ({ detail: { button: t } }) => {
                    t === S.pR.BUMPER_LEFT
                      ? this.setState({
                          activeIndex: Math.max(0, this.state.activeIndex - 1),
                        })
                      : t === S.pR.BUMPER_RIGHT &&
                        this.setState({
                          activeIndex: Math.min(
                            e.length - 1,
                            this.state.activeIndex + 1,
                          ),
                        });
                  }
                : void 0;
            return a.createElement(
              f.Z,
              { className: v.Picker, onButtonDown: o },
              i && a.createElement(I, null, this.RenderTabs()),
              n,
            );
          }
          RenderTabs() {
            return this.props.config.map(({ renderTab: e }, t) => {
              const n = this.state.activeIndex === t;
              return a.createElement(
                y,
                {
                  key: t,
                  active: n,
                  onClick: () => this.setState({ activeIndex: t }),
                },
                e(n),
              );
            });
          }
        }
        function I(e) {
          return a.createElement(
            f.Z,
            { className: v.Tabs, "flow-children": "row" },
            e.children,
          );
        }
        function w(e) {
          return a.createElement("div", { className: v.Content }, e.children);
        }
        function y(e) {
          const { active: t, children: n, onClick: i } = e;
          return a.createElement(
            f.Z,
            {
              className: (0, u.A)(v.Tab, t && v.Active),
              focusClassName: v.Focus,
              onActivate: i,
            },
            a.createElement(
              "div",
              { className: (0, u.A)(v.TabContent, t && v.Active) },
              n,
            ),
          );
        }
        function E(e) {
          const {
            items: t,
            renderItem: n,
            onItemSelect: i,
            keyExtractor: o,
            renderEmpty: r,
          } = e;
          let s = t.map((e, r) =>
            a.createElement(
              f.Z,
              {
                key: o(e),
                className: v.Item,
                onActivate: () => i(t[r]),
                autoFocus: 0 === r,
                focusClassName: v.Focus,
              },
              n(t[r]),
            ),
          );
          return (
            0 === t.length && r && (s = r()),
            a.createElement(
              f.Z,
              { "flow-children": "grid", className: v.ItemList },
              s,
            )
          );
        }
        function D(e) {
          const {
            title: t,
            onFilterChange: n,
            filter: i,
            onSubmit: o,
            ...r
          } = e;
          return a.createElement(
            a.Fragment,
            null,
            a.createElement(
              w,
              null,
              a.createElement(T, { title: t }, a.createElement(E, { ...r })),
            ),
            a.createElement(M, { value: i, onChange: n, onSubmit: o }),
          );
        }
        function A(e) {
          const { onFilterChange: t, filter: n, sections: i, title: o } = e;
          return a.createElement(
            a.Fragment,
            null,
            a.createElement(
              w,
              null,
              o &&
                a.createElement("div", { className: v.SectionedPageTitle }, o),
              i.map(({ title: e, ...t }) =>
                a.createElement(
                  T,
                  { title: e, key: e },
                  a.createElement(E, { ...t }),
                ),
              ),
            ),
            a.createElement(M, { value: n, onChange: t }),
          );
        }
        function T(e) {
          return a.createElement(
            "div",
            { className: v.Section },
            a.createElement("div", { className: v.SectionTitle }, e.title),
            a.createElement("div", { className: v.SectionContent }, e.children),
          );
        }
        function M(e) {
          const { value: t, onChange: n, onSubmit: i } = e;
          return a.createElement(
            "div",
            { className: v.FilterInputContainer },
            a.createElement(C.pd, {
              type: "text",
              placeholder: "Search...",
              className: v.FilterInput,
              value: t,
              onChange: (e) => n(e.target.value),
              onSubmit: i,
            }),
          );
        }
        function R(e) {
          const { className: t, ...n } = e;
          return a.createElement("div", {
            className: (0, u.A)(t, v.AddonPickerMessage),
            ...n,
          });
        }
        var k = n(82715),
          L = n.n(k),
          G = n(24803);
        class F extends a.PureComponent {
          state = { showHover: !1 };
          m_ref = a.createRef();
          OnMouseEnter(e) {
            this.setState({ showHover: !0 });
          }
          OnMouseLeave(e) {
            this.setState({ showHover: !1 });
          }
          render() {
            const { emoticon: e, large: t, emoticonHoverStore: n } = this.props,
              i = `:${e}:`,
              o = t && n.BLoaded(e) ? n.Get(e).url : l.p.GetEmoticonURL(e, t);
            return a.createElement(
              a.Fragment,
              null,
              a.createElement(
                m.xh,
                { text: i, style: "merge-adjacent" },
                a.createElement("img", {
                  src: o,
                  className: (0, u.A)(L().emoticon, t ? L().large : void 0),
                  "data-emoticon": e,
                  onMouseEnter: this.OnMouseEnter,
                  onMouseLeave: this.OnMouseLeave,
                  ref: this.m_ref,
                }),
              ),
              this.state.showHover &&
                a.createElement(P, {
                  target: this.m_ref.current,
                  store: n,
                  emoticon: e,
                }),
            );
          }
        }
        (0, i.Cg)([p.oI], F.prototype, "OnMouseEnter", null),
          (0, i.Cg)([p.oI], F.prototype, "OnMouseLeave", null);
        const P = (0, r.PA)((e) => {
            const { target: t, store: n, emoticon: i } = e,
              o = n.Get(i);
            return a.createElement(
              B,
              {
                target: t,
                title: `:${i}:`,
                subtitle: o && o.app_name ? o.app_name : void 0,
              },
              a.createElement(F, {
                emoticon: i,
                emoticonHoverStore: n,
                large: !0,
              }),
            );
          }),
          B = ({ target: e, title: t, subtitle: n, children: i }) =>
            a.createElement(
              s.g,
              {
                target: e,
                style: { zIndex: 1700 },
                className: L().EmoticonHover,
              },
              i,
              a.createElement(
                "div",
                { className: L().Info },
                a.createElement(
                  "div",
                  { className: L().Name },
                  t || a.createElement("span", null, " "),
                ),
                a.createElement(
                  "div",
                  { className: L().AppName },
                  n || a.createElement("span", null, " "),
                ),
              ),
            );
        function x(e) {
          return e.recent_emoticons;
        }
        function O(e) {
          return e.recent_stickers;
        }
        function N(e) {
          return x(e).length + O(e).length > 0;
        }
        const V = (0, r.PA)((e) => {
          const {
            emoticonStore: t,
            emoticonHoverStore: n,
            roomEffectSettings: i,
            strFlairGroupID: r,
            onEmoticonSelected: s,
            onRoomEffectSelected: l,
            onStickerSelected: c,
          } = e;
          !(function (e) {
            const [t, n] = (0, a.useState)(e.is_initialized);
            (0, a.useEffect)(() => {
              if (!e.is_initialized) {
                e.UpdateEmoticonList();
                const t = (0, o.z7)(
                  () => e.is_initialized,
                  () => n(e.is_initialized),
                );
                return () => t();
              }
              return () => {};
            }, [e]);
          })(t);
          const m = [];
          return (
            N(t) &&
              m.push({
                renderTab: (e) =>
                  a.createElement(
                    "span",
                    {
                      title: (0, h.we)("#AddonPicker_RecentlyUsed"),
                      className: (0, u.A)(
                        L().PickerTab,
                        L().Clock,
                        e && L().ActiveTab,
                      ),
                    },
                    a.createElement(ae, null),
                  ),
                renderContent: () =>
                  a.createElement(z, {
                    store: t,
                    hoverStore: n,
                    onEmoticonSelect: (e) => s(e.name),
                    onStickerSelect: (e) => c(e.name),
                    flairGroupID: r,
                  }),
              }),
            a.createElement(
              d.tz,
              null,
              a.createElement(b, {
                config: [
                  ...m,
                  {
                    renderTab: (e) =>
                      a.createElement(
                        "span",
                        {
                          title: (0, h.we)("#AddonPicker_Emoticons"),
                          className: (0, u.A)(
                            L().PickerTab,
                            e && L().ActiveTab,
                          ),
                        },
                        a.createElement(oe, null),
                      ),
                    renderContent: () =>
                      a.createElement(j, {
                        store: t,
                        hoverStore: n,
                        onItemSelect: (e) => s(e.name),
                        flairGroupID: r,
                      }),
                  },
                  {
                    renderTab: (e) =>
                      a.createElement(
                        "span",
                        {
                          title: (0, h.we)("#AddonPicker_Stickers"),
                          className: (0, u.A)(
                            L().PickerTab,
                            e && L().ActiveTab,
                          ),
                        },
                        a.createElement(ie, null),
                      ),
                    renderContent: () =>
                      a.createElement(K, {
                        store: t,
                        onItemSelect: (e) => c(e.name),
                      }),
                  },
                  {
                    renderTab: (e) =>
                      a.createElement(
                        "span",
                        {
                          title: (0, h.we)("#AddonPicker_RoomEffects"),
                          className: (0, u.A)(
                            L().PickerTab,
                            e && L().ActiveTab,
                          ),
                        },
                        a.createElement(re, null),
                      ),
                    renderContent: () =>
                      a.createElement(Z, {
                        store: t,
                        effectSettings: i,
                        onItemSelect: (e) => l(e.name),
                      }),
                  },
                ],
              }),
            )
          );
        });
        let U = class extends a.Component {
          m_disposeEmoticonStore;
          constructor(e) {
            super(e), (this.state = { strSearchText: "" });
            let t = this.props.emoticonStore;
            t.is_initialized ||
              (t.UpdateEmoticonList(),
              (this.m_disposeEmoticonStore = (0, o.z7)(
                () => t.is_initialized,
                () => this.forceUpdate(),
              )));
          }
          componentWillUnmount() {
            this.m_disposeEmoticonStore && this.m_disposeEmoticonStore();
          }
          render() {
            const {
                emoticonStore: e,
                emoticonHoverStore: t,
                onEmoticonSelected: n,
                onStickerSelected: i,
                strFlairGroupID: o,
              } = this.props,
              r = [];
            return (
              N(e) &&
                r.push({
                  renderTab: (e) =>
                    a.createElement(
                      "span",
                      {
                        title: (0, h.we)("#AddonPicker_RecentlyUsed"),
                        className: (0, u.A)(
                          L().PickerTab,
                          L().Clock,
                          e && L().ActiveTab,
                        ),
                      },
                      a.createElement(ae, null),
                    ),
                  renderContent: () =>
                    a.createElement(z, {
                      store: e,
                      hoverStore: t,
                      onEmoticonSelect: (e) => n(e.name),
                      onStickerSelect: (e) => i(e.name),
                      flairGroupID: o,
                    }),
                }),
              a.createElement(
                d.tz,
                null,
                a.createElement(b, {
                  config: [
                    ...r,
                    {
                      renderTab: (e) =>
                        a.createElement(
                          "span",
                          {
                            title: (0, h.we)("#AddonPicker_Emoticons"),
                            className: (0, u.A)(
                              L().PickerTab,
                              e && L().ActiveTab,
                            ),
                          },
                          a.createElement(oe, null),
                        ),
                      renderContent: () =>
                        a.createElement(j, {
                          store: e,
                          hoverStore: t,
                          onItemSelect: (e) => n(e.name),
                          flairGroupID: o,
                        }),
                    },
                    {
                      renderTab: (e) =>
                        a.createElement(
                          "span",
                          {
                            title: (0, h.we)("#AddonPicker_Stickers"),
                            className: (0, u.A)(
                              L().PickerTab,
                              e && L().ActiveTab,
                            ),
                          },
                          a.createElement(ie, null),
                        ),
                      renderContent: () =>
                        a.createElement(K, {
                          store: e,
                          onItemSelect: (e) => i(e.name),
                        }),
                    },
                  ],
                }),
              )
            );
          }
        };
        U = (0, i.Cg)([r.PA], U);
        class H extends a.Component {
          m_disposeEmoticonStore;
          constructor(e) {
            super(e), (this.state = { strSearchText: "" });
            let t = this.props.emoticonStore;
            t.is_initialized ||
              (t.UpdateEmoticonList(),
              (this.m_disposeEmoticonStore = (0, o.z7)(
                () => t.is_initialized,
                () => this.forceUpdate(),
              )));
          }
          componentWillUnmount() {
            this.m_disposeEmoticonStore && this.m_disposeEmoticonStore();
          }
          render() {
            return a.createElement(
              d.tz,
              null,
              a.createElement(b, {
                config: [
                  {
                    renderTab: () =>
                      a.createElement(
                        "span",
                        {
                          title: (0, h.we)("#AddonPicker_Emoticons"),
                          className: L().PickerTab,
                        },
                        a.createElement(oe, null),
                      ),
                    renderContent: () =>
                      a.createElement(Q, {
                        store: this.props.emoticonStore,
                        hoverStore: this.props.emoticonHoverStore,
                        onItemSelect: (e) => this.props.OnSelected(e.name, !1),
                        flairGroupID: this.props.strFlairGroupID,
                      }),
                  },
                ],
              }),
            );
          }
        }
        class W extends a.Component {
          m_disposeEmoticonStore;
          constructor(e) {
            super(e), (this.state = { strSearchText: "" });
            let t = this.props.emoticonStore;
            t.is_initialized ||
              (t.UpdateEmoticonList(),
              (this.m_disposeEmoticonStore = (0, o.z7)(
                () => t.is_initialized,
                () => this.forceUpdate(),
              )));
          }
          componentWillUnmount() {
            this.m_disposeEmoticonStore && this.m_disposeEmoticonStore();
          }
          render() {
            return a.createElement(
              d.tz,
              null,
              a.createElement(b, {
                config: [
                  {
                    renderTab: () =>
                      a.createElement(
                        "span",
                        {
                          title: (0, h.we)("#AddonPicker_Emoticons"),
                          className: L().PickerTab,
                        },
                        a.createElement(oe, null),
                      ),
                    renderContent: () =>
                      a.createElement($, {
                        store: this.props.emoticonStore,
                        hoverStore: this.props.emoticonHoverStore,
                        onItemSelect: (e) => this.props.OnSelected(e.name, !1),
                        flairGroupID: this.props.strFlairGroupID,
                      }),
                  },
                ],
              }),
            );
          }
        }
        class z extends a.Component {
          state = { filter: "" };
          render() {
            const {
                store: e,
                hoverStore: t,
                onEmoticonSelect: n,
                onStickerSelect: i,
              } = this.props,
              { filter: o } = this.state,
              r = [];
            return (
              x(e) &&
                r.push({
                  title: (0, h.we)("#AddonPicker_RecentEmoticons"),
                  items: l.p.FilterEmoticons(x(e), o),
                  onItemSelect: n,
                  renderItem: (e) =>
                    a.createElement(X, { emoticon: e, emoticonHoverStore: t }),
                  keyExtractor: (e) => e.name,
                  renderEmpty: () =>
                    a.createElement(
                      R,
                      null,
                      o
                        ? (0, h.we)("#AddonPicker_NoResults")
                        : (0, h.we)(
                            "#AddonPicker_NoRecent",
                            (0, h.we)("#AddonPicker_Emoticons"),
                          ),
                    ),
                }),
              O(e).length &&
                r.push({
                  title: (0, h.we)("#AddonPicker_RecentStickers"),
                  items: l.p.FilterStickers(O(e), o),
                  onItemSelect: i,
                  renderItem: (e) => a.createElement(Y, { sticker: e }),
                  keyExtractor: ({ name: e }) => e,
                  renderEmpty: () =>
                    a.createElement(
                      R,
                      null,
                      o
                        ? (0, h.we)("#AddonPicker_NoResults")
                        : (0, h.we)(
                            "#AddonPicker_NoRecent",
                            (0, h.we)("#AddonPicker_Stickers"),
                          ),
                    ),
                }),
              a.createElement(A, {
                onFilterChange: (e) => this.setState({ filter: e }),
                filter: o,
                sections: r,
              })
            );
          }
        }
        class j extends a.Component {
          state = { filter: "" };
          render() {
            const {
                store: e,
                hoverStore: t,
                onItemSelect: n,
                flairGroupID: i,
              } = this.props,
              { filter: o } = this.state,
              r = !o && i ? e.GetFlairListByGroupID(i) : e.emoticon_list,
              s = l.p.FilterEmoticons(r, o).slice(0, 1e3);
            return a.createElement(D, {
              title: (0, h.we)("#AddonPicker_Emoticons"),
              items: s,
              onItemSelect: n,
              renderItem: (e) =>
                a.createElement(X, { emoticon: e, emoticonHoverStore: t }),
              keyExtractor: (e) => e.name,
              onFilterChange: (e) => this.setState({ filter: e }),
              filter: o,
              onSubmit: () => n(s[0]),
              renderEmpty: () =>
                o
                  ? a.createElement(
                      R,
                      null,
                      (0, h.we)("#AddonPicker_NoResults"),
                    )
                  : a.createElement(q, null),
            });
          }
        }
        function q() {
          return a.createElement(
            a.Fragment,
            null,
            a.createElement(
              R,
              null,
              (0, h.we)(
                "#AddonPicker_NoneOwned",
                (0, h.we)("#AddonPicker_Emoticons"),
              ),
            ),
            a.createElement(
              R,
              null,
              (0, h.PP)(
                "#AddonPicker_AcquireAtPointsShopOrMarket",
                a.createElement(
                  G.uU,
                  { href: `${g.TS.STORE_BASE_URL}points/shop/c/emoticons` },
                  (0, h.we)("#AddonPicker_AcquireAtPointsShop_Link"),
                ),
                a.createElement(
                  G.uU,
                  { href: `${g.TS.COMMUNITY_BASE_URL}market` },
                  (0, h.we)("#AddonPicker_AcquireAtPointsShopOrMarket_Link"),
                ),
              ),
            ),
          );
        }
        class K extends a.Component {
          state = { filter: "" };
          render() {
            const { store: e, onItemSelect: t } = this.props,
              { filter: n } = this.state,
              i = l.p.FilterStickers(e.GetStickerList(), n);
            return a.createElement(D, {
              title: (0, h.we)("#EmoticonPicker_StickerHeading"),
              items: i,
              onItemSelect: t,
              renderItem: (e) => a.createElement(Y, { sticker: e }),
              keyExtractor: ({ name: e }) => e,
              onFilterChange: (e) => this.setState({ filter: e }),
              filter: n,
              onSubmit: () => t(i[0]),
              renderEmpty: () =>
                n
                  ? a.createElement(
                      R,
                      null,
                      (0, h.we)("#AddonPicker_NoResults"),
                    )
                  : a.createElement(
                      a.Fragment,
                      null,
                      a.createElement(
                        R,
                        null,
                        (0, h.we)(
                          "#AddonPicker_NoneOwned",
                          (0, h.we)("#AddonPicker_Stickers"),
                        ),
                      ),
                      a.createElement(
                        R,
                        null,
                        (0, h.PP)(
                          "#AddonPicker_AcquireAtPointsShop",
                          a.createElement(
                            G.uU,
                            {
                              href: `${g.TS.STORE_BASE_URL}points/shop/c/stickers`,
                            },
                            (0, h.we)("#AddonPicker_AcquireAtPointsShop_Link"),
                          ),
                        ),
                      ),
                    ),
            });
          }
        }
        class Z extends a.Component {
          state = { filter: "" };
          render() {
            const { store: e, effectSettings: t, onItemSelect: n } = this.props,
              { filter: i } = this.state,
              o = e.GetEffectList().filter(({ name: e }) => e.indexOf(i) > -1);
            return a.createElement(D, {
              title: (0, h.we)("#EmoticonPicker_EffectHeading"),
              items: o,
              onItemSelect: n,
              renderItem: (e) =>
                a.createElement(ee, { effect: e, roomEffectSettings: t }),
              keyExtractor: ({ name: e }) => e,
              onFilterChange: (e) => this.setState({ filter: e }),
              filter: i,
              onSubmit: () => n(o[0]),
              renderEmpty: () =>
                i
                  ? a.createElement(
                      R,
                      null,
                      (0, h.we)("#AddonPicker_NoResults"),
                    )
                  : a.createElement(
                      a.Fragment,
                      null,
                      a.createElement(
                        R,
                        null,
                        (0, h.we)(
                          "#AddonPicker_NoneOwned",
                          (0, h.we)("#AddonPicker_RoomEffects"),
                        ),
                      ),
                      a.createElement(
                        R,
                        null,
                        (0, h.PP)(
                          "#AddonPicker_AcquireAtPointsShop",
                          a.createElement(
                            G.uU,
                            {
                              href: `${g.TS.STORE_BASE_URL}points/shop/c/chateffects`,
                            },
                            (0, h.we)("#AddonPicker_AcquireAtPointsShop_Link"),
                          ),
                        ),
                      ),
                    ),
            });
          }
        }
        let Q = class extends a.Component {
          state = { filter: "" };
          render() {
            const {
                store: e,
                hoverStore: t,
                onItemSelect: n,
                flairGroupID: i,
              } = this.props,
              { filter: o } = this.state,
              r = [];
            return (
              x(e).length &&
                r.push({
                  title: (0, h.we)("#AddonPicker_RecentEmoticons"),
                  items: l.p.FilterEmoticons(x(e), o),
                  onItemSelect: n,
                  renderItem: (e) =>
                    a.createElement(X, { emoticon: e, emoticonHoverStore: t }),
                  keyExtractor: (e) => e.name,
                  renderEmpty: () =>
                    a.createElement(
                      R,
                      null,
                      o
                        ? (0, h.we)("#AddonPicker_NoResults")
                        : (0, h.we)(
                            "#AddonPicker_NoRecent",
                            (0, h.we)("#AddonPicker_Emoticons"),
                          ),
                    ),
                }),
              a.createElement(A, {
                onFilterChange: (e) => this.setState({ filter: e }),
                filter: o,
                sections: [
                  ...r,
                  {
                    title: (0, h.we)("#AddonPicker_AllEmoticons"),
                    items: l.p.FilterStickers(e.emoticon_list, o).slice(0, 1e3),
                    onItemSelect: n,
                    renderItem: (e) =>
                      a.createElement(X, {
                        emoticon: e,
                        emoticonHoverStore: t,
                      }),
                    keyExtractor: (e) => e.name,
                    renderEmpty: () =>
                      o
                        ? a.createElement(
                            R,
                            null,
                            (0, h.we)("#AddonPicker_NoResults"),
                          )
                        : a.createElement(q, null),
                  },
                ],
              })
            );
          }
        };
        Q = (0, i.Cg)([r.PA], Q);
        let $ = class extends a.Component {
          state = { filter: "" };
          render() {
            const {
                store: e,
                hoverStore: t,
                onItemSelect: n,
                flairGroupID: i,
              } = this.props,
              { filter: o } = this.state;
            return a.createElement(A, {
              onFilterChange: (e) => this.setState({ filter: e }),
              filter: o,
              sections: [
                {
                  title: (0, h.we)("#ChatEntryButton_Flair"),
                  items: l.p.FilterStickers(e.GetFlairListByGroupID(i), o),
                  onItemSelect: n,
                  renderItem: (e) =>
                    a.createElement(X, { emoticon: e, emoticonHoverStore: t }),
                  keyExtractor: (e) => e.name,
                  renderEmpty: () =>
                    o
                      ? a.createElement(
                          R,
                          null,
                          (0, h.we)("#AddonPicker_NoResults"),
                        )
                      : a.createElement(q, null),
                },
              ],
            });
          }
        };
        $ = (0, i.Cg)([r.PA], $);
        const X = (e) => {
          const { emoticon: t, emoticonHoverStore: n, large: i } = e,
            o = !t.last_used && t.time_received;
          return a.createElement(
            "div",
            { className: L().EmoticonItem },
            a.createElement(F, {
              emoticon: t.name,
              emoticonHoverStore: n,
              large: i,
            }),
            o && a.createElement(ne, null),
          );
        };
        class Y extends a.Component {
          state = { showHover: !1 };
          m_ref = a.createRef();
          render() {
            const { sticker: e, className: t, ...n } = this.props,
              i = (0, _.G)(g.TS.COMMUNITY_CDN_URL, e.name);
            return a.createElement(
              "div",
              {
                ref: this.m_ref,
                className: (0, u.A)(t, L().StickerButton),
                onMouseOver: () => this.setState({ showHover: !0 }),
                onFocus: () => this.setState({ showHover: !0 }),
                onMouseLeave: () => this.setState({ showHover: !1 }),
                onBlur: () => this.setState({ showHover: !1 }),
                ...n,
              },
              a.createElement("img", { style: { width: "100%" }, src: i }),
              this.state.showHover &&
                a.createElement(J, { target: this.m_ref.current, sticker: e }),
            );
          }
        }
        const J = (0, r.PA)((e) => {
          const {
              target: t,
              sticker: { name: n, appid: i },
            } = e,
            [o] = (0, c.t7)(i, {});
          return a.createElement(
            B,
            { target: t, title: n, subtitle: o?.GetName() },
            a.createElement("img", {
              src: (0, _.G)(g.TS.COMMUNITY_CDN_URL, n),
              className: L().StickerHoverSticker,
            }),
          );
        });
        class ee extends a.Component {
          state = { showHover: !1 };
          m_ref = a.createRef();
          render() {
            const {
                effect: e,
                roomEffectSettings: t,
                className: n,
                ...i
              } = this.props,
              o = t[e.name];
            return a.createElement(
              "div",
              {
                ref: this.m_ref,
                onMouseOver: () => this.setState({ showHover: !0 }),
                onFocus: () => this.setState({ showHover: !0 }),
                onMouseLeave: () => this.setState({ showHover: !1 }),
                onBlur: () => this.setState({ showHover: !1 }),
                className: (0, u.A)(n, L().EffectButton),
                ...i,
              },
              o.renderEffectIcon(),
              this.state.showHover &&
                a.createElement(te, {
                  target: this.m_ref.current,
                  effect: e,
                  roomEffectSettings: t,
                }),
            );
          }
        }
        const te = (0, r.PA)((e) => {
          const {
              target: t,
              effect: { name: n, appid: i },
              roomEffectSettings: o,
            } = e,
            r = o[n],
            [s] = (0, c.t7)(i, {});
          return a.createElement(
            B,
            { target: t, title: n, subtitle: s?.GetName() },
            a.createElement(
              "div",
              { className: L().EffectHoverEffect },
              r.renderEffectIcon(),
            ),
          );
        });
        function ne() {
          return a.createElement(
            "div",
            { className: L().NewEmoticonIndicator },
            a.createElement("div", { className: L().NewEmoticonCircle }),
          );
        }
        function ie(e) {
          return a.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            a.createElement("path", {
              fill: "currentColor",
              d: "M8 4C5.79086 4 4 5.79086 4 8V27C4 29.2091 5.79086 31 8 31H13V20C13 16.134 16.134 13 20 13H31V8C31 5.79086 29.2091 4 27 4H8Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M16 20C16 17.7909 17.7909 16 20 16H31L16 31V20Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M29 24.0625V25C29 25.2671 28.9738 25.5282 28.9239 25.7806L30.8858 26.1688C30.9609 25.7892 31 25.3982 31 25V24.0625H29Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M28.3263 27.2225C28.0342 27.6587 27.6587 28.0342 27.2225 28.3263L28.3351 29.9882C28.9885 29.5507 29.5507 28.9885 29.9882 28.3351L28.3263 27.2225Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M21 29H22.1875V31H19L21 29Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M24.0625 29H25C25.2671 29 25.5282 28.9738 25.7806 28.9239L26.1688 30.8858C25.7892 30.9609 25.3982 31 25 31H24.0625V29Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M29 22.1875V21L31 19V22.1875H29Z",
            }),
          );
        }
        function oe(e) {
          return a.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            a.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M18 3C15.0333 3 12.1332 3.87973 9.66645 5.52796C7.19972 7.17618 5.27713 9.51886 4.14181 12.2597C3.0065 15.0006 2.70945 18.0166 3.28823 20.9264C3.86701 23.8361 5.29562 26.5088 7.3934 28.6066C9.49119 30.7044 12.1639 32.133 15.0737 32.7118C17.9834 33.2906 20.9994 32.9935 23.7403 31.8582C26.4811 30.7229 28.8238 28.8003 30.472 26.3336C32.1203 23.8668 33 20.9667 33 18C33 16.0302 32.612 14.0796 31.8582 12.2597C31.1044 10.4399 29.9995 8.78628 28.6066 7.3934C27.2137 6.00052 25.5601 4.89563 23.7403 4.14181C21.9204 3.38799 19.9698 3 18 3ZM9.00001 15C9.00001 14.4067 9.17595 13.8266 9.5056 13.3333C9.83524 12.8399 10.3038 12.4554 10.852 12.2284C11.4001 12.0013 12.0033 11.9419 12.5853 12.0576C13.1672 12.1734 13.7018 12.4591 14.1213 12.8787C14.5409 13.2982 14.8266 13.8328 14.9424 14.4147C15.0581 14.9967 14.9987 15.5999 14.7716 16.1481C14.5446 16.6962 14.1601 17.1648 13.6667 17.4944C13.1734 17.8241 12.5934 18 12 18C11.2044 18 10.4413 17.6839 9.87869 17.1213C9.31608 16.5587 9.00001 15.7956 9.00001 15ZM24 18C23.4067 18 22.8266 17.8241 22.3333 17.4944C21.8399 17.1648 21.4554 16.6962 21.2284 16.1481C21.0013 15.5999 20.9419 14.9967 21.0576 14.4147C21.1734 13.8328 21.4591 13.2982 21.8787 12.8787C22.2982 12.4591 22.8328 12.1734 23.4147 12.0576C23.9967 11.9419 24.5999 12.0013 25.1481 12.2284C25.6962 12.4554 26.1648 12.8399 26.4944 13.3333C26.8241 13.8266 27 14.4067 27 15C27 15.7956 26.6839 16.5587 26.1213 17.1213C25.5587 17.6839 24.7957 18 24 18ZM26.3149 23.6788C26.7672 22.8295 27 21.9193 27 21H18H9C9 21.9193 9.23279 22.8295 9.68508 23.6788C10.1374 24.5281 10.8003 25.2997 11.636 25.9497C12.4718 26.5998 13.4639 27.1154 14.5558 27.4672C15.6478 27.8189 16.8181 28 18 28C19.1819 28 20.3522 27.8189 21.4442 27.4672C22.5361 27.1154 23.5282 26.5998 24.364 25.9497C25.1997 25.2997 25.8626 24.5281 26.3149 23.6788Z",
            }),
          );
        }
        function re(e) {
          return a.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            a.createElement("path", {
              fill: "currentColor",
              d: "M14.7163 7.6875L17.2476 15.5344C17.564 16.6102 18.4499 17.4328 19.5257 17.8125L27.3726 20.3438L19.5257 22.875C18.4499 23.1914 17.6273 24.0773 17.2476 25.1531L14.7163 33L12.1851 25.1531C11.8687 24.0773 10.9827 23.2547 9.90696 22.875L2.06009 20.3438L9.90696 17.8125C10.9827 17.4961 11.8054 16.6102 12.1851 15.5344L14.7163 7.6875Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M24.488 3L25.7861 7.06499C25.9591 7.63321 26.3918 8.07031 26.9543 8.24514L30.9784 9.55643L26.9543 10.8677C26.3918 11.0426 25.9591 11.4796 25.7861 12.0479L24.488 16.1129L23.1899 12.0479C23.0168 11.4796 22.5841 11.0426 22.0216 10.8677L17.9976 9.55643L22.0216 8.24514C22.5841 8.07031 23.0168 7.63321 23.1899 7.06499L24.488 3Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M8.11778 3.9375L8.76682 5.99185C8.85336 6.25411 9.0697 6.47265 9.32932 6.56007L11.363 7.21571L9.32932 7.87136C9.0697 7.95878 8.85336 8.17732 8.76682 8.43958L8.11778 10.4939L7.46874 8.43958C7.3822 8.17732 7.16586 7.95878 6.90624 7.87136L4.87259 7.21571L6.90624 6.56007C7.16586 6.47265 7.3822 6.25411 7.46874 5.99185L8.11778 3.9375Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M30.6178 12.375L31.2668 14.4293C31.3534 14.6916 31.5697 14.9102 31.8293 14.9976L33.863 15.6532L31.8293 16.3089C31.5697 16.3963 31.3534 16.6148 31.2668 16.8771L30.6178 18.9314L29.9687 16.8771C29.8822 16.6148 29.6659 16.3963 29.4062 16.3089L27.3726 15.6532L29.4062 14.9976C29.6659 14.9102 29.8822 14.6916 29.9687 14.4293L30.6178 12.375Z",
            }),
            a.createElement("path", {
              fill: "currentColor",
              d: "M25.9303 24.5625L26.5793 26.6168C26.6659 26.8791 26.8822 27.0977 27.1418 27.1851L29.1755 27.8407L27.1418 28.4964C26.8822 28.5838 26.6659 28.8023 26.5793 29.0646L25.9303 31.1189L25.2812 29.0646C25.1947 28.8023 24.9784 28.5838 24.7187 28.4964L22.6851 27.8407L24.7187 27.1851C24.9784 27.0977 25.1947 26.8791 25.2812 26.6168L25.9303 24.5625Z",
            }),
          );
        }
        function ae(e) {
          const { className: t, ...n } = e;
          return a.createElement(
            "svg",
            {
              className: (0, u.A)("SVGIcon_Button SVGIcon_Clock", t),
              version: "1.1",
              x: "0px",
              y: "0px",
              width: "20px",
              height: "20px",
              viewBox: "0 0 24 24",
              ...n,
            },
            a.createElement("path", {
              d: "M15.999 15c-.15 0-.303-.034-.446-.105l-4-2A1.001 1.001 0 0111 12V5a1 1 0 012 0v6.382l3.447 1.724A1 1 0 0115.999 15zM12 24C5.383 24 0 18.617 0 12S5.383 0 12 0s12 5.383 12 12-5.383 12-12 12zm0-22C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2z",
            }),
          );
        }
      },
      66378: (e, t, n) => {
        "use strict";
        n.d(t, { A: () => S });
        var i = n(34629),
          o = n(63696),
          r = n(41230),
          a = n(82924),
          s = n(23812),
          l = n(69074),
          c = n(94762),
          m = n(61632),
          d = n(74002),
          u = n(77171),
          h = n(80611),
          p = n.n(h),
          _ = n(84791),
          g = n(97229);
        const C = 1576780700;
        let f = class extends o.Component {
          OnEmoticonClick(e) {
            const {
              emoticonStore: t,
              strFlairGroupID: n,
              SetUIDisplayPref: i,
              contextOptions: r,
              bShowChatAddons: a,
            } = this.props;
            let s = null;
            if (
              ((s = a
                ? o.createElement(m.Q4, {
                    emoticonStore: this.props.emoticonStore,
                    emoticonHoverStore: this.props.emoticonHoverStore,
                    strFlairGroupID: this.props.strFlairGroupID,
                    onEmoticonSelected: (e) =>
                      this.props.OnEmoticonSelected(e, !1),
                    roomEffectSettings: this.props.roomEffectSettings,
                    onRoomEffectSelected: this.props.onRoomEffectSelected,
                    onStickerSelected: this.props.onStickerSelected,
                  })
                : n && t.flair_list && t.GetFlairListByGroupID(n)?.length > 0
                  ? o.createElement(m.CE, {
                      emoticonStore: this.props.emoticonStore,
                      emoticonHoverStore: this.props.emoticonHoverStore,
                      strFlairGroupID: this.props.strFlairGroupID,
                      OnSelected: this.props.OnEmoticonSelected,
                    })
                  : o.createElement(m.iY, {
                      emoticonStore: this.props.emoticonStore,
                      emoticonHoverStore: this.props.emoticonHoverStore,
                      strFlairGroupID: this.props.strFlairGroupID,
                      OnSelected: this.props.OnEmoticonSelected,
                    })),
              (0, c.lX)(
                s,
                e,
                r || {
                  bOverlapHorizontal: !0,
                  bPreferPopLeft: !0,
                  bPreferPopTop: !0,
                },
              ),
              this.BHaveUnseenEmoticons() && i)
            ) {
              let e = this.GetNewestIndicatorTime();
              (!e || e < C) && (e = C), i("rtLastAckedNewEmoticons", e);
            }
          }
          GetNewestIndicatorTime() {
            let e = this.props.emoticonStore,
              t = Number.MIN_SAFE_INTEGER,
              n = e.GetTimeReceivedNewestEmoticon();
            n && (t = n);
            let i = e.GetTimeReceivedForStickerOrEffect();
            return (
              (t = Math.max(i, t)), t > Number.MIN_SAFE_INTEGER ? t : void 0
            );
          }
          BHaveUnseenEmoticons() {
            const { rtLastAckedNewEmoticons: e } = this.props;
            let t = this.GetNewestIndicatorTime();
            return !e || e < C || (t && (!e || e < t));
          }
          render() {
            const {
              disabled: e,
              className: t,
              ttip: n,
              useImg: i,
            } = this.props;
            let r = [t],
              a = !1;
            return (
              e ? r.push("disabled") : this.BHaveUnseenEmoticons() && (a = !0),
              n && r.push("ttip"),
              i
                ? o.createElement(
                    l.Z,
                    {
                      onClick: this.OnEmoticonClick,
                      onOKActionDescription: (0, d.we)(
                        "#ChatEntryButton_Emoticon",
                      ),
                      focusable: !0,
                    },
                    o.createElement(
                      g.he,
                      { toolTipContent: n },
                      o.createElement("img", {
                        src: this.props.useImg,
                        className: (0, u.A)(...r),
                        title:
                          this.props.title ||
                          (0, d.we)("#ChatEntryButton_Emoticon"),
                      }),
                    ),
                  )
                : (r.push(p().chatSubmitButton, p().EmoticonPickerButton),
                  o.createElement(
                    s.fu,
                    {
                      className: (0, u.A)(...r),
                      onOKActionDescription: (0, d.we)(
                        "#ChatEntryButton_Emoticon",
                      ),
                      type: "button",
                      onClick: this.OnEmoticonClick,
                      title:
                        this.props.title ||
                        (0, d.we)("#ChatEntryButton_Emoticon"),
                      disabled: e,
                    },
                    o.createElement(
                      g.he,
                      { toolTipContent: n },
                      this.props.buttonIcon || o.createElement(_.nl, null),
                      a && o.createElement(m.iD, null),
                    ),
                  ))
            );
          }
        };
        (0, i.Cg)([a.oI], f.prototype, "OnEmoticonClick", null),
          (f = (0, i.Cg)([r.PA], f));
        const S = f;
      },
      1808: (e, t, n) => {
        "use strict";
        n.d(t, { tH: () => s, wC: () => a });
        var i = n(34629),
          o = n(63696),
          r = n(82924);
        function a(e) {
          return o.createElement(
            o.Fragment,
            null,
            o.Children.map(e.children, (e) => o.createElement(s, null, e)),
          );
        }
        class s extends o.Component {
          state = {};
          reactErrorHandler = void 0;
          constructor(e) {
            super(e), (this.state.lastErrorKey = e.errorKey);
          }
          static sm_ErrorReportingStore;
          static InstallErrorReportingStore(e) {
            this.sm_ErrorReportingStore = e;
          }
          componentDidCatch(e, t) {
            const n = s.sm_ErrorReportingStore;
            n
              ? n
                  .ReportError(e)
                  .then(
                    (e) =>
                      e && this.setState({ identifierHash: e.identifierHash }),
                  )
              : console.warn(
                  "No ErrorReportingStore - use ErrorReportingStore().Init() to configure error reporting to server",
                ),
              this.setState({
                error: { error: e, info: t },
                lastErrorKey: this.props.errorKey,
              });
          }
          Reset() {
            this.setState({ error: void 0 });
          }
          render() {
            const { children: e, fallback: t, errorKey: n } = this.props,
              { error: i, identifierHash: r, lastErrorKey: a } = this.state;
            return i && n == a
              ? void 0 !== t
                ? "function" == typeof t
                  ? t(i.error)
                  : t
                : s.sm_ErrorReportingStore &&
                    s.sm_ErrorReportingStore.reporting_enabled
                  ? o.createElement(c, {
                      error: i,
                      identifierHash: r,
                      store: s.sm_ErrorReportingStore,
                      onRefresh: this.Reset,
                    })
                  : o.createElement(l, { error: i, onDismiss: this.Reset })
              : e || null;
          }
        }
        (0, i.Cg)([r.oI], s.prototype, "Reset", null);
        const l = ({ error: e, onDismiss: t }) => {
            let n = e.error ? e.error.stack : "Stack missing",
              i = e.info ? e.info.componentStack : "",
              r = (e.error && e.error.message) || "unknown error";
            return o.createElement(
              m,
              null,
              o.createElement(d, null, 'Error: "', r, '"'),
              "   ",
              o.createElement(
                "span",
                {
                  style: { textDecoration: "underline", cursor: "pointer" },
                  onClick: t,
                },
                "(x) Dismiss",
              ),
              o.createElement("br", null),
              o.createElement(u, null, n),
              o.createElement(
                u,
                null,
                "The error occurred while rendering:",
                i,
              ),
            );
          },
          c = (e) => {
            const { error: t, onRefresh: n, identifierHash: i, store: r } = e,
              a = (t.error && t.error.message) || "unknown error",
              s = `${r.product}_${r.version}_${i}`;
            return o.createElement(
              m,
              null,
              o.createElement(
                d,
                null,
                "Something went wrong while displaying this content. ",
                o.createElement(
                  "span",
                  {
                    style: { textDecoration: "underline", cursor: "pointer" },
                    onClick: n,
                  },
                  "Refresh",
                ),
              ),
              o.createElement(u, null, "Error Reference: ", s),
              o.createElement(u, null, a),
            );
          },
          m = ({ children: e }) =>
            o.createElement(
              "div",
              {
                style: {
                  overflow: "auto",
                  marginLeft: "15px",
                  color: "white",
                  fontSize: "16px",
                  userSelect: "auto",
                  backgroundColor: "black",
                },
                className: "ErrorBoundary",
              },
              e,
            ),
          d = ({ children: e }) =>
            o.createElement(
              "h1",
              {
                style: {
                  fontSize: "20px",
                  display: "inline-block",
                  marginTop: "15px",
                  userSelect: "auto",
                },
              },
              e,
            ),
          u = ({ children: e }) =>
            o.createElement(
              "pre",
              {
                style: { marginTop: "15px", opacity: 0.7, userSelect: "auto" },
              },
              e,
            );
      },
      71677: (e, t, n) => {
        "use strict";
        n.d(t, { H7: () => m });
        n(58073), n(7884), n(63696), n(61142), n(38012);
        var i = n(45518),
          o = n(15442);
        n(85356), n(28574);
        n(25444), n(74977), n(74002), n(21400);
        var r = n(26721),
          a = (n(32585), n(77631));
        n(89021);
        var s = n(34629),
          l = n(89193);
        class c {
          m_isLoading = !1;
          m_existingRegistrations = new Map();
          m_selections = new Map();
          m_transport;
          m_userAccountID;
          m_clanAccountID;
          m_gidClanEvent;
          static s_Singleton;
          static Get() {
            return c.s_Singleton || (c.s_Singleton = new c()), c.s_Singleton;
          }
          constructor() {
            (0, l.Gn)(this);
          }
          Init(e, t, n, i) {
            (this.m_transport = e),
              (this.m_userAccountID = t),
              (this.m_clanAccountID = n),
              (this.m_gidClanEvent = i);
          }
          async Load() {
            if (this.m_isLoading) return;
            if (this.m_clanAccountID != m()) return;
            const e = i.w.Init(o.q3),
              t = a.b.InitFromAccountID(this.m_userAccountID);
            e.Body().set_clan_event_gid(this.m_gidClanEvent),
              e.Body().set_steamid(t.ConvertTo64BitString()),
              this.m_existingRegistrations.clear(),
              this.m_selections.clear(),
              (this.m_isLoading = !0);
            const n = await o.ZK.GetRegistrations(this.m_transport, e);
            (this.m_isLoading = !1),
              n.BSuccess() &&
                (0, l.h5)(() => {
                  n.Body()
                    .registrations()
                    .forEach((e) => {
                      const t = e.toObject(),
                        n = {
                          ...t,
                          regmodel: t.jsondata
                            ? JSON.parse(t.jsondata)
                            : void 0,
                        };
                      this.m_existingRegistrations.set(n.group_id, n),
                        this.m_selections.set(n.group_id, n.session_id);
                    });
                });
          }
          SetSelection(e, t) {
            t > 0 ? this.m_selections.set(e, t) : this.m_selections.delete(e);
          }
          BIsLoading() {
            return this.m_isLoading;
          }
          GetSelectedGroups() {
            return Array.from(this.m_selections.keys());
          }
          GetSelection(e) {
            return this.m_selections.get(e);
          }
          GetRegistrationStatus(e, t) {
            const n = this.m_existingRegistrations.get(e)?.session_id == t,
              i = this.m_selections.get(e) == t;
            return n && i ? 1 : !n && i ? 2 : n && !i ? 3 : 0;
          }
          BHaveSelectionsChanged() {
            return (
              (0 != this.m_selections.size ||
                0 != this.m_existingRegistrations.size) &&
              (this.m_selections.size != this.m_existingRegistrations.size ||
                !Array.from(this.m_selections.entries()).every(
                  (e) =>
                    this.m_existingRegistrations.get(e[0])?.session_id == e[1],
                ))
            );
          }
          BIsAddingOrChangingSelections() {
            return Array.from(this.m_selections.entries()).some(
              (e) =>
                !this.m_existingRegistrations.get(e[0]) ||
                this.m_existingRegistrations.get(e[0]).session_id != e[1],
            );
          }
          async Save(e) {
            let t = !0;
            for (const [n, r] of this.m_selections) {
              const s = i.w.Init(o.Ku);
              s.Body().set_clan_event_gid(this.m_gidClanEvent),
                s
                  .Body()
                  .set_steamid(
                    a.b
                      .InitFromAccountID(this.m_userAccountID)
                      .ConvertTo64BitString(),
                  ),
                s.Body().set_registration_group_id(n),
                s.Body().set_registration_session_id(r),
                s.Body().set_guest_count(e.guests_registered ?? 1),
                s.Body().set_jsondata(JSON.stringify(e));
              const l = await o.ZK.UpdateRegistration(this.m_transport, s);
              t = t && l.BSuccess();
            }
            for (const [e, n] of this.m_existingRegistrations) {
              if (this.m_selections.has(n.group_id)) continue;
              const r = i.w.Init(o.Ku);
              r.Body().set_clan_event_gid(this.m_gidClanEvent),
                r
                  .Body()
                  .set_steamid(
                    a.b
                      .InitFromAccountID(this.m_userAccountID)
                      .ConvertTo64BitString(),
                  ),
                r.Body().set_registration_group_id(e),
                r.Body().set_registration_session_id(0),
                r.Body().set_guest_count(0),
                r.Body().set_jsondata(JSON.stringify({}));
              const s = await o.ZK.UpdateRegistration(this.m_transport, r);
              t = t && s.BSuccess();
            }
            return await this.Load(), t;
          }
        }
        (0, s.Cg)([l.sH], c.prototype, "m_isLoading", void 0),
          (0, s.Cg)([l.sH], c.prototype, "m_existingRegistrations", void 0),
          (0, s.Cg)([l.sH], c.prototype, "m_selections", void 0),
          (0, s.Cg)([l.XI.bound], c.prototype, "SetSelection", null);
        n(63297), n(32776), n(14355);
        const m = () => (2 === r.TS.EUNIVERSE ? 2581 : 45267781);
      },
      15320: (e, t, n) => {
        "use strict";
        n.d(t, { PH: () => a, qT: () => p, LJ: () => u });
        var i = n(63696),
          o = n(77765),
          r = n(17070);
        i.createContext({ bCanUseLink: !1 });
        n(20074), n(89481);
        var a,
          s,
          l = n(71677);
        !(function (e) {
          (e.k_eView = "view"),
            (e.k_eViewWebSiteHub = "websitehub"),
            (e.k_eCommunityView = "communityview"),
            (e.k_eCommunityEdit = "edit"),
            (e.k_eCommunityEditBroadcast = "editBroadcast"),
            (e.k_eCommunityAdminPage = "admin"),
            (e.k_eCommunityPublish = "publish"),
            (e.k_eCommunityMigrate = "migrate"),
            (e.k_eCommunityPreview = "preview"),
            (e.k_eCommunityPreviewSale = "previewsale"),
            (e.k_eCommunityAnnouncementHub = "community_announcehub"),
            (e.k_eStoreView = "storeview"),
            (e.k_eStoreNewsHub = "newshub"),
            (e.k_eStoreOwnerPage = "store"),
            (e.k_eStoreSalePage = "sale"),
            (e.k_eStoreUsersNewsHub = "usernewshub");
        })(a || (a = {})),
          (function (e) {
            (e.k_eFacebook = "facebook"),
              (e.k_eTwitter = "twitter"),
              (e.k_eReddit = "reddit");
          })(s || (s = {}));
        const c =
          /(?:steampowered\.com|community\.\S+\.steam\.dev|store\.\S+\.steam\.dev|valve\.org\/store|steam\.dev\/store|\.steamchina\.com|steamcommunity\.com|valve\.org\/community|steam\.dev\/community)\/(\w+)(\/|$)/i;
        function m(e, t) {
          const n = "store" === (0, r.yK)(),
            i = (function (e) {
              const t = e.match(c);
              return t?.[1];
            })(window.location.href),
            s = n && "news" == i,
            l = "community" === (0, r.yK)(),
            m = t.appid ? "games" : "groups",
            d =
              l &&
              m == i &&
              ((t.appid && t.appid === r.UF.APPID) ||
                (!t.appid &&
                  t.clanSteamID.GetAccountID() === r.UF.CLANACCOUNTID));
          switch (e) {
            case a.k_eView:
              return d || s;
            case a.k_eCommunityView:
            case a.k_eCommunityEdit:
            case a.k_eCommunityEditBroadcast:
            case a.k_eCommunityAdminPage:
            case a.k_eCommunityPublish:
            case a.k_eCommunityMigrate:
            case a.k_eCommunityPreview:
            case a.k_eCommunityPreviewSale:
            case a.k_eCommunityAnnouncementHub:
              return d;
            case a.k_eViewWebSiteHub:
              return d || s;
            case a.k_eStoreView:
            case a.k_eStoreNewsHub:
            case a.k_eStoreOwnerPage:
            case a.k_eStoreUsersNewsHub:
              return s;
            case a.k_eStoreSalePage:
              return !1;
            default:
              return (0, o.w)(!1, "Unknown route specified for link: " + e), !1;
          }
        }
        function d(e, t, n) {
          if (n)
            return (
              (e ? "/games/" + r.UF.VANITY_ID : "/groups/" + r.UF.VANITY_ID) +
              "/"
            );
          const i = e ? "ogg/" + e : "gid/" + t.ConvertTo64BitString();
          return r.TS.COMMUNITY_BASE_URL + i + "/";
        }
        function u() {
          return "news";
        }
        function h(e, t, n) {
          const i = "relative" === n,
            s = "community" === (0, r.yK)(),
            c = i ? "/" : r.TS.STORE_BASE_URL,
            m = d(e.appid, e.clanSteamID, i);
          t === a.k_eView
            ? (t = s ? a.k_eCommunityView : a.k_eStoreView)
            : t === a.k_eViewWebSiteHub &&
              (t = s ? a.k_eCommunityAnnouncementHub : a.k_eStoreNewsHub);
          const u = e.GID ? e.GID : "",
            h = e.AnnouncementGID ? e.AnnouncementGID : "";
          switch (t) {
            case a.k_eCommunityPublish:
              return (
                m +
                (e.bOldAnnouncement
                  ? "partnerevents/migrate_announcement/" + h
                  : "partnerevents/publish/" + u + "?tab=publishing")
              );
            case a.k_eCommunityEdit:
              return (
                m +
                (e.bOldAnnouncement
                  ? "partnerevents/migrate_announcement/" + h
                  : "partnerevents/edit/" + u)
              );
            case a.k_eCommunityEditBroadcast:
              return (
                m +
                (e.bOldAnnouncement
                  ? "partnerevents/migrate_announcement/" + h
                  : "partnerevents/edit/" + u) +
                "?tab=broadcast"
              );
            case a.k_eCommunityMigrate:
              return m + "partnerevents/migrate_announcement/" + h;
            case a.k_eCommunityPreview:
              return (
                m +
                (e.bOldAnnouncement
                  ? "partnerevents/preview_old_announcement/" + h
                  : "partnerevents/preview/" + u)
              );
            case a.k_eCommunityPreviewSale:
              return m + "partnerevents/previewsale/" + u;
            case a.k_eCommunityAdminPage:
              return m + "partnerevents";
            case a.k_eCommunityAnnouncementHub:
              return m + "announcements";
            case a.k_eStoreNewsHub:
              return (
                c +
                `news/${e.appid ? `app/${e.appid}` : `group/${e.clanSteamID.GetAccountID()}`}`
              );
            case a.k_eStoreOwnerPage:
              return (
                c +
                (e.appid
                  ? "app/" + e.appid
                  : "curator/" + e.clanSteamID.GetAccountID())
              );
            case a.k_eStoreSalePage:
              return e.jsondata.bSaleEnabled
                ? c +
                    (e.jsondata.sale_vanity_id_valve_approved_for_sale_subpath
                      ? "sale/"
                      : "curator/" + e.clanSteamID.GetAccountID() + "/sale/") +
                    e.jsondata.sale_vanity_id
                : c;
            case a.k_eCommunityView:
              return m + "announcements/detail/" + h;
            case a.k_eStoreView:
              if (e.clanSteamID.GetAccountID() == (0, l.H7)())
                return `${r.TS.STORE_BASE_URL}meetsteam/${u}`;
              return `${c}news/${e.appid ? `app/${e.appid}` : `group/${e.clanSteamID.GetAccountID()}`}/${e.bOldAnnouncement ? `old_view/${h}` : `view/${u}`}`;
            case a.k_eStoreUsersNewsHub:
              return `${c}news/`;
            default:
              return (0, o.w)(!1, "Unknown route specified for link"), "";
          }
        }
        function p(e, t, n) {
          return h(
            e,
            t,
            "forceAbsolute" === n || !m(t, e) ? "absolute" : "relative",
          );
        }
      },
      32776: (e, t, n) => {
        "use strict";
        n.d(t, { vg: () => Et });
        var i = n(63696),
          o = n(14355),
          r = n(74002),
          a = n(17070),
          s = n(50669),
          l = n(56132),
          c = n(83957),
          m = n.n(c),
          d = n(41659);
        const u =
          "data:image/png;base64, ";
        var h = n(69168),
          p = n(8805);
        const _ = n(36500).A,
          g = new p.wd("Login"),
          C = g.Info,
          f = (g.Debug, g.Warning),
          S = g.Error;
        function v(e, t) {
          let n = _.getPublicKey(t.publickey_mod, t.publickey_exp),
            i = _.encrypt(e, n);
          return !1 === i ? null : i;
        }
        var b = n(66651),
          I = n(1808);
        function w(e, t) {
          let n;
          "string" == typeof e
            ? (n = e)
            : "location" in e
              ? (n = e.location.search)
              : "search" in e && (n = e.search);
          const i = new URLSearchParams(n.substring(1));
          if (i.has(t)) {
            const e = i.getAll(t);
            return e[e.length - 1];
          }
        }
        var y = n(23812),
          E = n(69074),
          D = n(77171),
          A = n(43132),
          T = n.n(A);
        function M(e) {
          const {
            length: t,
            value: n,
            onChange: o,
            onPaste: r,
            tone: a,
            autoFocus: s,
            disabled: l,
            loading: c,
            backupCode: m,
            allowCharacter: d,
          } = e;
          (0, i.useEffect)(() => {
            s && g();
          }, []);
          const u = (0, i.useRef)([]),
            h = () => o(u.current.map((e) => e.value)),
            p = (e) => {
              const t = e.target.value;
              if (t && d && !d(t)) return;
              const n = e.target.nextElementSibling;
              e.target.value && n && n.focus(), h();
            },
            _ = (e) => {
              -1 === u.current.findIndex((e) => !!e.value)
                ? u.current[0]?.select()
                : e.target.select();
            },
            g = () => {
              const e = u.current.find((e) => !e.value);
              e ? e.focus() : u.current[u.current.length - 1].focus();
            },
            C = (e) => {
              const t = e.target;
              if ("Backspace" === e.key || "Delete" === e.key) {
                const n =
                  "Backspace" === e.key
                    ? t.previousElementSibling
                    : t.nextElementSibling;
                "" === t.value &&
                  n &&
                  ((n.value = ""), n.focus(), e.preventDefault(), h());
              } else if (
                "ArrowLeft" === e.key ||
                "ArrowRight" === e.key ||
                "ArrowUp" === e.key ||
                "ArrowDown" === e.key
              ) {
                const n =
                  "ArrowLeft" === e.key || "ArrowUp" === e.key
                    ? t.previousElementSibling
                    : t.nextElementSibling;
                n && (n.focus(), e.preventDefault());
              }
            },
            f = (e) => {
              const t = e.clipboardData.getData("Text");
              let n = e.target,
                i = 0;
              for (; n && i < t.length; )
                n.focus(),
                  (n.value = t.charAt(i)),
                  (n = n.nextElementSibling),
                  i++;
              h(), e.preventDefault(), r && r();
            },
            S = [];
          for (let e = 0; e < t; e++)
            S.push(
              i.createElement(y.BA, {
                noFocusRing: !0,
                type: "text",
                maxLength: 1,
                key: e,
                ref: (t) => (u.current[e] = t),
                onChange: p,
                onFocus: _,
                onClick: (e) => e.stopPropagation(),
                onKeyDown: C,
                onPaste: f,
                value: n[e] ? n[e][0] : "",
                autoComplete: "none",
                autoFocus: 0 === e && s,
                disabled: l || c,
                className: T().Input,
              }),
            );
          return i.createElement(
            E.Z,
            {
              className: (0, D.A)(
                T().SegmentedCharacterInput,
                "danger" === a && T().Danger,
                l && T().Disabled,
                m && T().BackupCode,
              ),
              onClick: g,
            },
            c &&
              i.createElement(
                "div",
                { className: T().Loading },
                i.createElement(Ye, { size: "small" }),
              ),
            S,
          );
        }
        var R,
          k,
          L = n(81734),
          G = (n(4532), n(74977)),
          F = n(97229),
          P = n(82924),
          B = n(34629),
          x = n(89193),
          O = n(45518),
          N = n(69450),
          V = n(51485),
          U = n(37322);
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.Generic = 1)] = "Generic"),
            (e[(e.Expired = 2)] = "Expired"),
            (e[(e.Network = 3)] = "Network"),
            (e[(e.MoveAuthenticator = 4)] = "MoveAuthenticator"),
            (e[(e.RateLimitExceeded = 5)] = "RateLimitExceeded"),
            (e[(e.AnonymousLogin = 6)] = "AnonymousLogin");
        })(R || (R = {})),
          (function (e) {
            (e[(e.k_Success = 0)] = "k_Success"),
              (e[(e.k_PrimaryDomainFail = 1)] = "k_PrimaryDomainFail"),
              (e[(e.k_SecondaryDomainFail = 2)] = "k_SecondaryDomainFail");
          })(k || (k = {}));
        class H {
          m_transport;
          m_strClientID;
          m_msPollInterval;
          m_activeTimerID;
          m_rgRequestID;
          m_strTokenToRevoke;
          m_strChallengeURL = void 0;
          m_onShowAgreement;
          m_bRemoteInteraction = !1;
          m_onCompleteCallback;
          m_eFailureState = R.None;
          m_strExtendedErrorMessage = "";
          m_onDeviceDetailsCallback;
          constructor(e, t, n, i) {
            (0, x.Gn)(this),
              (this.m_transport = e),
              (this.m_onCompleteCallback = t),
              (this.m_onDeviceDetailsCallback = n),
              (this.m_onShowAgreement = i);
          }
          StartPolling(e = !0) {
            null != this.m_activeTimerID && this.StopPolling(),
              e
                ? this.PollForUpdate()
                : (this.m_activeTimerID = window.setTimeout(
                    this.PollForUpdate,
                    this.m_msPollInterval,
                  ));
          }
          StopPolling() {
            window.clearTimeout(this.m_activeTimerID),
              (this.m_activeTimerID = void 0);
          }
          async PollForUpdate() {
            try {
              const e = O.w.Init(V.Ev);
              e.SetEMsg(9804),
                e.Body().set_client_id(this.m_strClientID),
                e.Body().set_request_id(this.m_rgRequestID),
                this.m_strTokenToRevoke &&
                  e.Body().set_token_to_revoke(this.m_strTokenToRevoke);
              const t = await V.kX.PollAuthSessionStatus(this.m_transport, e),
                n = t.GetEResult();
              if (1 !== n) {
                if (2 === n) {
                  const e = t.Hdr().transport_error();
                  if (
                    (S(
                      `Failed to poll auth session. Result ${n}. Transport Error: ${e}`,
                    ),
                    2 === e || 3 === e)
                  )
                    return (
                      this.m_transport.MakeReady(),
                      window.setTimeout(
                        this.PollForUpdate,
                        this.m_msPollInterval,
                      ),
                      1
                    );
                }
                if (9 === n || 27 === n) this.m_eFailureState = R.Expired;
                else if (84 === n) this.m_eFailureState = R.RateLimitExceeded;
                else {
                  if (118 == n) {
                    if (this.m_onShowAgreement)
                      this.m_onShowAgreement(t.Body().agreement_session_url());
                    else {
                      const e = t.Body().agreement_session_url(),
                        n = document.location.href;
                      window.location.href = `${e}&redir=${encodeURIComponent(n)}`;
                    }
                    return this.m_onCompleteCallback({ bSuccess: !1 }), n;
                  }
                  S(`Failed to poll auth session. Result: ${n}`),
                    (this.m_eFailureState = R.Generic);
                }
                return this.m_onCompleteCallback({ bSuccess: !1 }), n;
              }
              const {
                new_challenge_url: i,
                new_client_id: o,
                refresh_token: r,
                access_token: a,
                account_name: s,
                had_remote_interaction: l,
                new_guard_data: c,
              } = t.Body().toObject();
              return (
                (this.m_bRemoteInteraction = !!l),
                r
                  ? (this.m_onCompleteCallback({
                      bSuccess: !0,
                      strRefreshToken: r,
                      strAccessToken: a,
                      strAccountName: s,
                      strNewGuardData: c,
                    }),
                    n)
                  : (i && (this.m_strChallengeURL = i),
                    o && (this.m_strClientID = o),
                    (this.m_activeTimerID = window.setTimeout(
                      this.PollForUpdate,
                      this.m_msPollInterval,
                    )),
                    n)
              );
            } catch (e) {
              return (
                S(`Failed to poll auth session. ${e}`),
                (this.m_eFailureState = R.Generic),
                this.m_onCompleteCallback({ bSuccess: !1 }),
                2
              );
            }
          }
          SetTokenToRevoke(e) {
            this.m_strTokenToRevoke = e;
          }
          GetFailureState() {
            return this.m_eFailureState;
          }
          GetExtendedErrorMessage() {
            return this.m_strExtendedErrorMessage;
          }
          BHadRemoteInteraction() {
            return this.m_bRemoteInteraction;
          }
          async GetDeviceDetails() {
            const e = await this.m_onDeviceDetailsCallback();
            return V.tS.fromObject(e);
          }
        }
        function W(e) {
          const t = new FormData();
          t.append("nonce", e), t.append("sessionid", a.TS.SESSIONID);
          let n = new URL(document.location.href);
          const i = new URLSearchParams(n.search);
          i.has("need_password") &&
            (i.delete("need_password"), (n.search = i.toString())),
            t.append("redir", n.toString());
          const o = `${a.TS.LOGIN_BASE_URL}jwt/finalizelogin`;
          return m()
            .post(o, t, { withCredentials: !0 })
            .then(
              (e) => {
                const { data: t } = e;
                if (
                  !(
                    t &&
                    t.transfer_info &&
                    t.steamID &&
                    Array.isArray(t.transfer_info)
                  )
                )
                  return (
                    S("Result of finalizelogin does not match expectations!"),
                    k.k_PrimaryDomainFail
                  );
                const { transfer_info: n, steamID: i, primary_domain: o } = t;
                return Promise.all(
                  n.map(({ url: e, params: t }) =>
                    (async function (e, t) {
                      const n = new URL(e);
                      let i = !0;
                      try {
                        const o = new FormData();
                        Object.keys(t).forEach((e) => o.append(e, t[e]));
                        const r = await m().post(e, o, {
                          withCredentials: !0,
                          timeout: 1e4,
                        });
                        200 !== r.status
                          ? (S(
                              `Transfer login to ${n.host} failed with status code: ${r.status}`,
                            ),
                            (i = !1))
                          : 1 !== r.data.result &&
                            (S(
                              `Transfer login to ${n.host} failed with result: ${r.data.result}`,
                            ),
                            (i = !1));
                      } catch (e) {
                        S(`Transfer login to ${n.host} failed: "${e}"`),
                          (i = !1);
                      }
                      return { bSuccess: i, domain: n.host };
                    })(e, { ...t, steamID: i }),
                  ),
                ).then(
                  (e) =>
                    (function (e, t) {
                      let n = k.k_Success;
                      return (
                        e.forEach((e) => {
                          e.bSuccess ||
                            (t && e.domain.toLowerCase() === t.toLowerCase()
                              ? (n = k.k_PrimaryDomainFail)
                              : n == k.k_Success &&
                                (n = k.k_SecondaryDomainFail));
                        }),
                        n
                      );
                    })(e, o),
                  () => k.k_SecondaryDomainFail,
                );
              },
              () => (
                S("Failed to finalize login. Initial call failed."),
                k.k_PrimaryDomainFail
              ),
            );
        }
        (0, B.Cg)([x.sH], H.prototype, "m_strChallengeURL", void 0),
          (0, B.Cg)([x.sH], H.prototype, "m_bRemoteInteraction", void 0),
          (0, B.Cg)([x.sH], H.prototype, "m_eFailureState", void 0),
          (0, B.Cg)([x.sH], H.prototype, "m_strExtendedErrorMessage", void 0),
          (0, B.Cg)([N.o], H.prototype, "PollForUpdate", null),
          (0, B.Cg)([N.o], H.prototype, "SetTokenToRevoke", null);
        var z = n(90095),
          j = n(38012),
          q = n(91486);
        class K extends H {
          m_eStatus = 0;
          m_steamid;
          m_strAccountName;
          m_strConfirmationAssociatedMessage = "";
          m_bUsingCodeOverride = !1;
          m_strWeakAuthToken = "";
          m_weakAuthWebInterface;
          m_onGetMachineAuth;
          m_replacementAuthenticator;
          m_strErrorReference = "";
          m_onLoginComplete;
          constructor(e) {
            super(
              e.transport,
              (e) => this.onAuthComplete(e),
              e.onDeviceDetails,
              e.onShowAgreement,
            ),
              (0, x.Gn)(this),
              (this.m_onLoginComplete = e.onComplete),
              (this.m_onGetMachineAuth = e.onGetMachineAuth);
          }
          async Start(e, t, n) {
            if (0 !== this.m_eStatus && 2 !== this.m_eStatus)
              return (
                S(
                  "Cannot start an already started auth session. Create a new session instance.",
                ),
                29
              );
            const i = e.replace(/[^\x00-\x7F]/g, ""),
              o = t.replace(/[^\x00-\x7F]/g, "").slice(0, 64);
            if (!i.length || !o.length) return 8;
            if (
              ((this.m_eStatus = 1),
              (this.m_bUsingCodeOverride = !1),
              "anonymous" == e)
            )
              return this.SetFailureState(R.AnonymousLogin, Y.EResult(12)), 12;
            try {
              const t = await (async function (e, t) {
                const n = O.w.Init(V.qu);
                n.Body().set_account_name(t), n.SetEMsg(9804);
                try {
                  await e.MakeReady();
                  const t = await V.kX.GetPasswordRSAPublicKey(e, n);
                  if ((t.DEBUG_LogToConsole(), 1 !== t.GetEResult()))
                    return (
                      S(
                        `Failed to get RSA key with EResult: ${t.GetEResult()}`,
                      ),
                      null
                    );
                  const {
                    publickey_exp: i,
                    publickey_mod: o,
                    timestamp: r,
                  } = t.Body().toObject();
                  return i && o && r
                    ? { publickey_exp: i, publickey_mod: o, timestamp: r }
                    : (S(
                        `Missing expected field in RSA Key: ${JSON.stringify({ publickey_exp: i, publickey_mod: o, timestamp: r })}`,
                      ),
                      null);
                } catch (e) {
                  return S(`Failed to get RSA key: ${JSON.stringify(e)}`), null;
                }
              })(this.m_transport, i);
              if (!t)
                return (
                  S("Cannot start auth session without a valid RSA key"),
                  this.SetFailureState(R.Network, Y.EResult(20)),
                  20
                );
              const r = v(o, t),
                s = O.w.Init(V.iP);
              s.SetEMsg(9804),
                s.Body().set_account_name(i),
                s.Body().set_encrypted_password(r),
                s.Body().set_encryption_timestamp(t.timestamp),
                s.Body().set_remember_login(!!n),
                s.Body().set_persistence(n ? 1 : 0),
                s.Body().set_website_id(a.TS.WEBSITE_ID);
              try {
                s.Body().set_device_details(await this.GetDeviceDetails());
              } catch (e) {
                S("Failed to GetDeviceDetails"), S(e);
              }
              if (
                (s.Body().set_language((0, l.sf)(a.TS.LANGUAGE)),
                null != this.m_onGetMachineAuth)
              ) {
                const e = await this.m_onGetMachineAuth(i);
                1 == e.eresult && s.Body().set_guard_data(e.data);
              }
              await this.m_transport.MakeReady();
              const d = await V.kX.BeginAuthSessionViaCredentials(
                this.m_transport,
                s,
              );
              return (
                d.DEBUG_LogToConsole(),
                (0, x.h5)(async () => {
                  const t = d.GetEResult(),
                    n = d.Hdr().transport_error();
                  if (1 !== t)
                    switch (t) {
                      case 5:
                        return (this.m_eStatus = 2), t;
                      case 20:
                      case 3:
                        return (
                          this.SetFailureState(R.Network, Y.EResult(20)), t
                        );
                      case 84:
                        return (
                          this.SetFailureState(
                            R.RateLimitExceeded,
                            Y.EResult(t),
                          ),
                          t
                        );
                      case 118:
                        if (this.m_onShowAgreement)
                          this.m_onShowAgreement(
                            d.Body().agreement_session_url(),
                          );
                        else {
                          const e = d.Body().agreement_session_url(),
                            t = document.location.href;
                          window.location.href = `${e}&redir=${encodeURIComponent(t)}`;
                        }
                        return (
                          this.m_onCompleteCallback({ bSuccess: !1 }),
                          (this.m_eStatus = 0),
                          t
                        );
                      default:
                        return (
                          S(
                            `Failed to start auth session. Result: ${t} Transport: ${n}`,
                          ),
                          this.SetFailureState(
                            R.Generic,
                            Y.EResult(t),
                            d.Body().extended_error_message(),
                          ),
                          this.m_onCompleteCallback({ bSuccess: !1 }),
                          t
                        );
                    }
                  this.m_strAccountName = e;
                  const {
                    client_id: i,
                    request_id: o,
                    interval: r,
                    allowed_confirmations: s,
                    steamid: l,
                    weak_token: u,
                  } = d.Body().toObject();
                  if (
                    ((this.m_msPollInterval = 1e3 * r),
                    (this.m_strClientID = i),
                    (this.m_rgRequestID = o),
                    (this.m_steamid = l),
                    (this.m_strWeakAuthToken = u),
                    s.find(({ confirmation_type: e }) => 6 === e))
                  ) {
                    const e = new FormData();
                    e.append("clientid", i),
                      e.append("steamid", this.m_steamid);
                    const t = `${a.TS.LOGIN_BASE_URL}jwt/checkdevice/${this.m_steamid}`;
                    try {
                      if (
                        1 ==
                        (
                          await m().post(t, e, {
                            headers: { "Content-Type": "multipart/form-data" },
                            withCredentials: !0,
                          })
                        ).data.result
                      )
                        return (this.m_eStatus = 4), this.StartPolling(!0), 1;
                    } catch (e) {
                      if (
                        (C(`checkdevice ajax to ${t} failed: ${e.message}`),
                        e instanceof c.AxiosError)
                      ) {
                        const t = e;
                        return t.response
                          ? (this.SetFailureState(
                              R.Network,
                              Y.AjaxFailureWithCode(t.response.status),
                            ),
                            20)
                          : (this.SetFailureState(
                              R.Network,
                              Y.AjaxFailureNoCode(),
                            ),
                            20);
                      }
                      return this.SetFailureState(R.Network, Y.EResult(79)), 79;
                    }
                  }
                  const h = (function (e) {
                      let t = e[0] || 0;
                      e.length > 1 && (t = e.sort((e, t) => Z[e] - Z[t])[0]);
                      return t;
                    })(s.map(({ confirmation_type: e }) => e)),
                    p = s.find(({ confirmation_type: e }) => e === h);
                  switch (
                    (p &&
                      p.associated_message &&
                      (this.m_strConfirmationAssociatedMessage =
                        p.associated_message),
                    h)
                  ) {
                    case 1:
                      return (this.m_eStatus = 13), this.StartPolling(), t;
                    case 2:
                      this.m_eStatus = 3;
                      break;
                    case 5:
                      (this.m_eStatus = 4), this.StartPolling(!1);
                      break;
                    case 3:
                      (this.m_eStatus = 5), this.StartPolling(!1);
                      break;
                    case 4:
                      (this.m_eStatus = 6), this.StartPolling(!1);
                  }
                  return t;
                })
              );
            } catch (e) {
              return (
                S(
                  `Failed to start auth session. Exception: ${JSON.stringify(e)}`,
                ),
                C(e),
                this.SetFailureState(R.Generic, Y.FailedToStart()),
                this.m_onCompleteCallback({ bSuccess: !1 }),
                2
              );
            }
          }
          Stop() {
            this.StopPolling(), (this.m_eStatus = 16);
          }
          GetStatus() {
            return this.m_eStatus;
          }
          GetConfirmationAssociatedMessage() {
            return this.m_strConfirmationAssociatedMessage;
          }
          GetAccountName() {
            return this.m_strAccountName;
          }
          GetSteamID() {
            return this.m_steamid;
          }
          GetReplacementAuthenticator() {
            return this.m_replacementAuthenticator;
          }
          GetErrorReference() {
            return this.m_strErrorReference;
          }
          async SendSteamGuardCode(e, t = !0) {
            if (0 == e.length) {
              switch (this.m_eStatus) {
                case 10:
                  this.m_eStatus = 3;
                  break;
                case 11:
                  this.m_eStatus = 5;
                  break;
                case 5:
                case 3:
                  break;
                default:
                  throw new Error("Attempted to clear code in invalid state");
              }
              return Promise.resolve(1);
            }
            try {
              await this.m_transport.MakeReady();
              const n = 3 === this.m_eStatus || 10 === this.m_eStatus,
                i = O.w.Init(V.Qc);
              i.SetEMsg(9804),
                i.Body().set_client_id(this.m_strClientID),
                i.Body().set_steamid(this.m_steamid),
                i.Body().set_code(e),
                i.Body().set_code_type(n ? 2 : 3);
              const o = await V.kX.UpdateAuthSessionWithSteamGuardCode(
                  this.m_transport,
                  i,
                ),
                r = o.GetEResult();
              if (1 !== r) {
                if (!t)
                  return (
                    S(
                      `Failed to automatically update session with local SG info. Result ${r}. Transport ${o.Hdr().transport_error()}`,
                    ),
                    r
                  );
                switch (r) {
                  case 65:
                  case 88:
                    return (this.m_eStatus = n ? 10 : 11), r;
                  case 27:
                    return (
                      this.SetFailureState(R.Expired, Y.EResult(r)),
                      this.m_onCompleteCallback({ bSuccess: !1 }),
                      r
                    );
                  case 84:
                    return (
                      this.SetFailureState(R.RateLimitExceeded, Y.EResult(r)),
                      this.m_onCompleteCallback({ bSuccess: !1 }),
                      r
                    );
                  case 118:
                    if (this.m_onShowAgreement)
                      this.m_onShowAgreement(o.Body().agreement_session_url());
                    else {
                      const e = o.Body().agreement_session_url(),
                        t = document.location.href;
                      window.location.href = `${e}&redir=${encodeURIComponent(t)}`;
                    }
                    return (
                      this.m_onCompleteCallback({ bSuccess: !1 }),
                      (this.m_eStatus = 0),
                      r
                    );
                  default:
                    return (
                      S(
                        `Failed to update auth session with SG code. Result: ${r}`,
                      ),
                      this.SetFailureState(R.Generic, Y.EResult(r)),
                      this.m_onCompleteCallback({ bSuccess: !1 }),
                      r
                    );
                }
              }
              return (this.m_eStatus = 13), this.StartPolling(), r;
            } catch (e) {
              return (
                S(`Failed to update auth session with SG code. ${e}`),
                this.SetFailureState(R.Generic, Y.FailedToAddCode()),
                this.m_onCompleteCallback({ bSuccess: !1 }),
                2
              );
            }
          }
          UseCodeOverride() {
            switch (this.m_eStatus) {
              case 6:
                return (
                  (this.m_bUsingCodeOverride = !0), void (this.m_eStatus = 5)
                );
              case 4:
                return (
                  (this.m_bUsingCodeOverride = !0), void (this.m_eStatus = 3)
                );
              default:
                return void S(
                  `Don't know how to UseCodeOverride from login session status ${this.m_eStatus}`,
                );
            }
          }
          CantAccessCode() {
            this.m_eStatus = 7;
          }
          async StartMoveAuthenticator() {
            this.m_weakAuthWebInterface = new j.D(
              a.TS.WEBAPI_BASE_URL,
              this.m_strWeakAuthToken,
            );
            try {
              const e = O.w.Init(q.ot),
                t = await q.fz.RemoveAuthenticatorViaChallengeStart(
                  this.m_weakAuthWebInterface.GetServiceTransport(),
                  e,
                );
              1 != t.GetEResult()
                ? (t.DEBUG_LogToConsole(),
                  S(
                    "An unexpected error occured while adding an authenticator",
                    t.GetEResult(),
                  ),
                  this.SetFailureState(
                    R.MoveAuthenticator,
                    Y.EResult(t.GetEResult()),
                  ))
                : (this.m_eStatus = 8);
            } catch (e) {
              S("An unexpected error occured while moving an authenticator", e),
                this.SetFailureState(R.MoveAuthenticator, Y.EResult(2));
            }
          }
          async ResendMoveCode() {
            const e = O.w.Init(q.ot),
              t = await q.fz.RemoveAuthenticatorViaChallengeStart(
                this.m_weakAuthWebInterface.GetServiceTransport(),
                e,
              );
            1 != t.GetEResult()
              ? (t.DEBUG_LogToConsole(),
                S(
                  "An unexpected error occured while adding an authenticator",
                  t.GetEResult(),
                ),
                this.SetFailureState(
                  R.MoveAuthenticator,
                  Y.EResult(t.GetEResult()),
                ))
              : (this.m_eStatus = 8);
          }
          async FinishMoveAuthenticator(e) {
            const t = O.w.Init(q.bv);
            t.Body().set_sms_code(e),
              t.Body().set_generate_new_token(!0),
              t.Body().set_version(2);
            const n = await q.fz.RemoveAuthenticatorViaChallengeContinue(
              this.m_weakAuthWebInterface.GetServiceTransport(),
              t,
            );
            94 == n.GetEResult()
              ? (this.m_eStatus = 12)
              : n.Body().success()
                ? (n.DEBUG_LogToConsole(),
                  (this.m_replacementAuthenticator = (function (e) {
                    const {
                      shared_secret: t,
                      identity_secret: n,
                      secret_1: i,
                      status: o,
                      uri: r,
                      server_time: a,
                      ...s
                    } = e;
                    return {
                      shared_secret: U.iI(t),
                      identity_secret: U.iI(n),
                      secret_1: U.iI(i),
                      ...s,
                    };
                  })(n.Body().replacement_token().toObject())),
                  (this.m_eStatus = 9),
                  (this.m_bUsingCodeOverride = !1))
                : (n.DEBUG_LogToConsole(),
                  S(
                    "Error when calling RemoveAuthenticatorViaChallengeContinue",
                    n.GetEResult(),
                  ),
                  this.SetFailureState(
                    R.MoveAuthenticator,
                    Y.EResult(n.GetEResult()),
                  ));
          }
          FinishMoveRecovery() {
            this.m_eStatus = 5;
          }
          BCanGoBack() {
            switch (this.m_eStatus) {
              case 5:
              case 11:
              case 3:
              case 10:
              case 6:
              case 4:
              case 7:
              case 8:
              case 12:
                return !0;
              default:
                return !1;
            }
          }
          GoBack() {
            switch (this.m_eStatus) {
              case 6:
              case 4:
                this.m_eStatus = 0;
                break;
              case 5:
              case 11:
                this.m_eStatus = this.m_bUsingCodeOverride ? 6 : 0;
                break;
              case 7:
              case 8:
              case 12:
                this.m_eStatus = (this.m_bUsingCodeOverride, 5);
                break;
              case 3:
              case 10:
                this.m_eStatus = this.m_bUsingCodeOverride ? 4 : 0;
                break;
              default:
                return void S(
                  `Don't know how to GoBack from login session status ${this.m_eStatus}`,
                );
            }
          }
          SetFailureState(e, t, n = "") {
            (this.m_eStatus = 15),
              (this.m_eFailureState = e),
              (this.m_strErrorReference = t),
              (this.m_strExtendedErrorMessage = n);
          }
          onAuthComplete = (e) => {
            this.m_eStatus = e.bSuccess ? 14 : 15;
            const t = e.bSuccess
              ? {
                  ...e,
                  strAccountName: this.m_strAccountName,
                  steamid: this.m_steamid,
                }
              : e;
            this.m_onLoginComplete && this.m_onLoginComplete(t);
          };
          SetOnLoginComplete(e) {
            this.m_onLoginComplete = e;
          }
        }
        (0, B.Cg)([x.sH], K.prototype, "m_eStatus", void 0),
          (0, B.Cg)([x.sH], K.prototype, "m_strErrorReference", void 0),
          (0, B.Cg)([P.oI], K.prototype, "Start", null),
          (0, B.Cg)([P.oI], K.prototype, "SendSteamGuardCode", null),
          (0, B.Cg)([P.oI], K.prototype, "UseCodeOverride", null),
          (0, B.Cg)([P.oI], K.prototype, "CantAccessCode", null),
          (0, B.Cg)([P.oI], K.prototype, "StartMoveAuthenticator", null),
          (0, B.Cg)([P.oI], K.prototype, "ResendMoveCode", null),
          (0, B.Cg)([P.oI], K.prototype, "FinishMoveAuthenticator", null),
          (0, B.Cg)([P.oI], K.prototype, "FinishMoveRecovery", null),
          (0, B.Cg)([P.oI], K.prototype, "GoBack", null),
          (0, B.Cg)([x.XI], K.prototype, "SetFailureState", null),
          (0, B.Cg)([P.oI], K.prototype, "SetOnLoginComplete", null);
        const Z = [4, 3, 2, 1, 0, 5].reduce((e, t, n) => ((e[t] = n), e), {});
        function Q(e) {
          return e ? 7 : 5;
        }
        function $(e, t) {
          return /[23456789BCDFGHJKMNPQRTVWXY]*/g.test(e) && e.length <= Q(t);
        }
        function X(e, t) {
          return $(e, t) && e.length === Q(t);
        }
        const Y = {
          EResult: (e) => `e${e}`,
          FailedToStart: () => "c-fts",
          FailedToAddCode: () => "c-ftac",
          AjaxFailureNoCode: () => "af",
          AjaxFailureWithCode: (e) => `af-${e}`,
        };
        var J,
          ee = n(70874),
          te = n.n(ee),
          ne = n(48755),
          ie = n.n(ne),
          oe = n(40657),
          re = n.n(oe);
        function ae(e) {
          let {
            quality: t = J.M,
            children: n,
            className: o,
            activeBitColor: r = null,
            inactiveBitColor: a = null,
            borderWidth: s = 3,
            typeNumber: l = 6,
          } = e;
          const c = (function (e, t = {}) {
            const { typeNumber: n, errorCorrectLevel: o } = t,
              [r, a] = (0, i.useState)();
            return (
              (0, i.useEffect)(() => {
                a(ie()(e, { typeNumber: n, errorCorrectLevel: o }).modules);
              }, [e, n, o]),
              r
            );
          })(n, { typeNumber: l, errorCorrectLevel: t });
          if (!c) return null;
          let m = [];
          for (let e = 0; e < s; e++) m.push(Array(c.length + 2 * s).fill(!1));
          for (let e = 0; e < c.length; e++)
            m.push([].concat(Array(s).fill(!1), c[e], Array(s).fill(!1)));
          for (let e = 0; e < s; e++) m.push(Array(c.length + 2 * s).fill(!1));
          const d = [],
            u = (0, D.A)(re().Bit),
            h = (0, D.A)(re().Bit, re().Active),
            p = null !== r ? { backgroundColor: r } : {},
            _ = null !== a ? { backgroundColor: a } : {};
          for (let e = 0; e < m.length; e++)
            for (let t = 0; t < m.length; t++) {
              const n = m[e][t];
              d.push(
                i.createElement("div", {
                  key: `${e}_${t}`,
                  className: n ? h : u,
                  style: n ? p : _,
                }),
              );
            }
          let g = m.length;
          return i.createElement(
            "div",
            {
              className: (0, D.A)(re().QRBits, o),
              style: { gridTemplateColumns: `repeat( ${g}, 1fr )` },
            },
            d,
          );
        }
        !(function (e) {
          (e[(e.L = 1)] = "L"),
            (e[(e.M = 0)] = "M"),
            (e[(e.Q = 3)] = "Q"),
            (e[(e.H = 2)] = "H");
        })(J || (J = {}));
        class se extends H {
          m_eStatus = 0;
          constructor(e) {
            super(
              e.transport,
              (t) => {
                (this.m_eStatus = t.bSuccess ? 3 : 4), e.onComplete(t);
              },
              e.onDeviceDetails,
            ),
              (0, x.Gn)(this);
          }
          async Start() {
            if (0 !== this.m_eStatus)
              return (
                console.error(
                  "Cannot start an already started auth session. Create a new session instance.",
                ),
                2
              );
            this.m_eStatus = 1;
            try {
              await this.m_transport.MakeReady();
              const e = O.w.Init(V.R9);
              e.SetEMsg(9804);
              try {
                e.Body().set_device_details(await this.GetDeviceDetails());
              } catch (e) {
                console.error("Failed to GetDeviceDetails"), console.log(e);
              }
              e.Body().set_website_id(a.TS.WEBSITE_ID);
              const t = await V.kX.BeginAuthSessionViaQR(this.m_transport, e),
                n = t.GetEResult(),
                i = t.Hdr().transport_error();
              if (1 !== n)
                return (
                  console.error(
                    `Failed to start auth session. Result: ${n} Transport: ${i}`,
                  ),
                  (this.m_eFailureState = R.Generic),
                  this.m_onCompleteCallback({ bSuccess: !1 }),
                  n
                );
              const {
                client_id: o,
                challenge_url: r,
                interval: s,
                request_id: l,
              } = t.Body().toObject();
              return (
                (this.m_strClientID = o),
                (this.m_strChallengeURL = r),
                (this.m_msPollInterval = 1e3 * s),
                (this.m_rgRequestID = l),
                (this.m_eStatus = 2),
                this.StartPolling(!1),
                n
              );
            } catch (e) {
              return (
                console.error(
                  `Failed to start auth session: ${JSON.stringify(e)}`,
                ),
                (this.m_eFailureState = R.Generic),
                this.m_onCompleteCallback({ bSuccess: !1 }),
                2
              );
            }
          }
          Stop() {
            this.StopPolling(), (this.m_eStatus = 5);
          }
          GetChallengeURL() {
            return this.m_strChallengeURL;
          }
          GetStatus() {
            return this.m_eStatus;
          }
        }
        (0, B.Cg)([x.sH], se.prototype, "m_eStatus", void 0);
        var le = n(81787),
          ce = n.n(le),
          me = n(89021);
        function de(e) {
          const {
              transport: t,
              onComplete: n,
              onStatusChange: o,
              platform: r,
              deckStyling: s,
            } = e,
            l = a.TS.IN_STEAMUI ? Ee : De,
            {
              eStatus: c,
              strChallengeURL: m,
              bHadRemoteInteraction: d,
              reset: u,
              setTokenToRevoke: h,
            } = (function (e) {
              const [t, n] = (0, i.useState)(new se(e));
              return (
                (0, i.useEffect)(
                  () => (
                    t.Start(),
                    () => {
                      t.Stop();
                    }
                  ),
                  [t],
                ),
                (0, z.q3)(() => ({
                  strChallengeURL: t.GetChallengeURL(),
                  eFailureState: t.GetFailureState(),
                  eStatus: t.GetStatus(),
                  bHadRemoteInteraction: t.BHadRemoteInteraction(),
                  reset: () => n(new se(e)),
                  setTokenToRevoke: t.SetTokenToRevoke,
                }))
              );
            })({ transport: t, onComplete: n, onDeviceDetails: l });
          (0, i.useEffect)(() => o && o(c), [o, c]);
          const p = 2 === c ? m : a.TS.STORE_BASE_URL,
            _ = 0 === c || 1 === c || d,
            g = 4 === c,
            C = 3 === c,
            f = C
              ? i.createElement(ge, null)
              : g
                ? i.createElement(pe, { reset: u })
                : _
                  ? i.createElement(he, { size: "small" })
                  : null,
            S = _ || g || C;
          (0, i.useEffect)(() => {
            e.refreshInfo?.login_token_id && h(e.refreshInfo.login_token_id);
          }, [e.refreshInfo, h]);
          const v = 1 !== a.TS.EUNIVERSE;
          return i.createElement(
            "div",
            { className: ce().Column },
            i.createElement(
              "div",
              { style: { position: "relative" } },
              i.createElement(
                ae,
                {
                  borderWidth: 0,
                  activeBitColor: "#212328",
                  inactiveBitColor: v ? "magenta" : "white",
                  quality: ue(p),
                  className: (0, D.A)(
                    ce().LoginQR,
                    s && ce().QRLoginDeck,
                    S && ce().Blur,
                    v && ce().NonPublic,
                  ),
                },
                p,
              ),
              S &&
                i.createElement(
                  "div",
                  { className: ce().Overlay },
                  i.createElement("div", { className: ce().Box }, f),
                ),
            ),
          );
        }
        function ue(e) {
          return e.length <= 90 ? J.Q : void 0;
        }
        function he(e) {
          const { size: t } = e;
          return i.createElement("div", {
            className: (0, D.A)(
              ce().Loading,
              "small" == t && ce().Small,
              ("medium" == t || !t) && ce().Medium,
              "large" == t && ce().Large,
            ),
          });
        }
        function pe(e) {
          return i.createElement(
            me.$n,
            { onClick: e.reset, className: ce().QRFailure },
            i.createElement(_e, null),
          );
        }
        function _e(e) {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              style: { width: "40px", height: "40px", cursor: "pointer" },
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fill: "none",
              stroke: "#fff",
              strokeWidth: "30",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M229.809,147.639 c-9.178,47.863-51.27,84.027-101.809,84.027c-57.253,0-103.667-46.412-103.667-103.666S70.747,24.334,128,24.334 c34.107,0,64.368,16.472,83.261,41.895",
            }),
            i.createElement("polygon", {
              points: "147.639,108.361 245.755,10.166 245.834,108.361",
              fill: "#fff",
            }),
          );
        }
        function ge() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              style: { width: "45px", height: "45px" },
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polyline", {
              fill: "none",
              stroke: "#fff",
              strokeWidth: "24",
              strokeLinecap: "round",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points: "49.5,147.75 95,210.75 206.5,45.25 ",
            }),
          );
        }
        const Ce = (0, i.createContext)(!1),
          fe = () => (0, i.useContext)(Ce);
        function Se() {
          return i.createElement(
            "div",
            { className: te().Login },
            i.createElement(et, {
              reset: () => window.location.reload(),
              failure: R.Generic,
            }),
          );
        }
        function ve(e) {
          return (function (e) {
            const t = (0, i.useRef)(e);
            t.current = e;
            const [n, o] = (0, i.useState)(!0),
              r = (0, d.zy)();
            return (
              (0, i.useEffect)(() => {
                new URLSearchParams(r.search).get("need_password")
                  ? o(!1)
                  : t.current
                    ? (async function (e) {
                        const t = new FormData();
                        t.append("redir", e);
                        const n = `${a.TS.LOGIN_BASE_URL}jwt/ajaxrefresh`,
                          i = await m().post(n, t, {
                            timeout: 1e4,
                            withCredentials: !0,
                          });
                        if (200 !== i.status || !i?.data?.success) return !1;
                        const {
                            success: o,
                            login_url: r,
                            error: s,
                            ...l
                          } = i.data,
                          c = new FormData();
                        Object.keys(l).forEach((e) => c.append(e, l[e]));
                        const d = await m().post(r, c),
                          u = 200 === d.status && 1 === d.data.result;
                        u && window.location.assign(e);
                        return u;
                      })(t.current)
                        .then((e) => {
                          o(e);
                        })
                        .catch((e) => {
                          f("PerformRefresh exception", e), o(!1);
                        })
                    : o(!1);
              }, [t, r.search]),
              n
            );
          })(e.redirectUrl)
            ? null
            : i.createElement(be, {
                ...e,
                creationRedirectUrl: e.redirectUrl,
                onSuccess: (t) => {
                  const { strRefreshToken: n } = t;
                  W(n).then(
                    (t) => e.onComplete(t),
                    () => e.onComplete(k.k_PrimaryDomainFail),
                  );
                },
                embedded: "modal" === e.theme,
              });
        }
        function be(e) {
          const { embedded: t, children: n, ...o } = e;
          return i.createElement(
            I.tH,
            null,
            i.createElement(
              Ce.Provider,
              { value: t },
              i.createElement(
                "div",
                { className: te().Login },
                i.createElement(Te, { ...o }),
                n,
              ),
            ),
          );
        }
        function Ie(e) {
          if ((0, b.q)()) return null;
          const { variant: t } = e;
          return "function" == typeof t
            ? i.createElement(
                ut,
                { onClick: t },
                (0, r.we)("#Login_Help_SignIn"),
              )
            : i.createElement(
                ut,
                {
                  href: `${a.TS.HELP_BASE_URL}wizard/HelpWithLogin?redir=${encodeURIComponent(document.location.href)}`,
                },
                (0, r.we)("#Login_Help_SignIn"),
              );
        }
        function we(e) {
          const { variant: t, redirectUrl: n } = e;
          if ("function" == typeof t)
            return i.createElement(
              ut,
              { inline: !0, onClick: t },
              (0, r.we)("#Login_CreateAccount"),
            );
          {
            const e = n ? `?redir=${encodeURIComponent(n)}` : "";
            switch (t ?? "normal") {
              default:
              case "normal":
                return i.createElement(
                  ut,
                  { inline: !0, href: `${a.TS.STORE_BASE_URL}join/${e}` },
                  (0, r.we)("#Login_CreateAccount"),
                );
              case "partner":
                return i.createElement(
                  ut,
                  { inline: !0, href: `${a.TS.PARTNER_BASE_URL}${e}` },
                  (0, r.we)("#Login_CreateSteamworksAccount"),
                );
              case "none":
                return null;
            }
          }
        }
        function ye(e) {
          const { launcherType: t, variant: n, redirectUrl: o } = e;
          if (8 === t) return null;
          if ("none" == n) return null;
          const a = void 0 !== t;
          let s;
          switch (n ?? "normal") {
            default:
            case "normal":
              s = "#Login_NoSteamAccount";
              break;
            case "partner":
              s = "#Login_NoSteamworksAccount";
          }
          return i.createElement(
            "div",
            { className: (0, D.A)(te().AccountCreation, a && te().InClient) },
            i.createElement(
              "span",
              { className: te().AccountCreationPrompt },
              (0, r.we)(s),
            ),
            i.createElement(we, { variant: n, redirectUrl: o }),
          );
        }
        async function Ee() {
          const [e, t, n] = await Promise.all([
            SteamClient.System.GetOSType(),
            SteamClient?.Auth?.GetLocalHostname?.() ?? "",
            SteamClient?.Auth?.GetMachineID?.() ?? void 0,
          ]);
          return {
            os_type: e,
            device_friendly_name: t,
            machine_id: n,
            platform_type: 1,
            gaming_device_type: a.TS.ON_DECK
              ? l.zm.k_EGamingDeviceType_SteamDeck
              : l.zm.k_EGamingDeviceType_StandardPC,
          };
        }
        async function De() {
          return {
            device_friendly_name: window.navigator.userAgent,
            platform_type: 2,
          };
        }
        function Ae(e) {
          const {
              onSuccess: t,
              secureComputer: n = !0,
              isProbablySharedPC: o = !1,
            } = e,
            r = (0, i.useCallback)(
              ({
                bSuccess: e,
                strRefreshToken: n,
                strAccessToken: i,
                strAccountName: o,
                strNewGuardData: r,
              }) => {
                e &&
                  t({
                    strRefreshToken: n,
                    strAccessToken: i,
                    strAccountName: o,
                    strNewGuardData: r,
                  });
              },
              [t],
            ),
            a = (function (e) {
              const [t, n] = (0, i.useState)(new K(e));
              return (
                (0, i.useEffect)(() => {
                  t?.SetOnLoginComplete(e.onComplete);
                }, [t, e.onComplete]),
                (0, z.q3)(() => ({
                  strAccountName: t.GetAccountName(),
                  steamid: t.GetSteamID(),
                  eFailureState: t.GetFailureState(),
                  strExtendedErrorMessage: t.GetExtendedErrorMessage(),
                  strErrorReference: t.GetErrorReference(),
                  strConfirmationAssociatedMessage:
                    t.GetConfirmationAssociatedMessage(),
                  eStatus: t.GetStatus(),
                  bCanGoBack: t.BCanGoBack(),
                  start: t.Start,
                  addCode: t.SendSteamGuardCode,
                  useCodeOverride: t.UseCodeOverride,
                  cantAccessCode: t.CantAccessCode,
                  startMoveAuthenticator: t.StartMoveAuthenticator,
                  resendMoveCode: t.ResendMoveCode,
                  finishMoveAuthenticator: t.FinishMoveAuthenticator,
                  finishMoveRecovery: t.FinishMoveRecovery,
                  replacementAuthenticator: t.GetReplacementAuthenticator(),
                  reset: () => n(new K(e)),
                  goBack: t.GoBack,
                  setTokenToRevoke: t.SetTokenToRevoke,
                }))
              );
            })({
              transport: e.transport,
              onComplete: r,
              onDeviceDetails: e.onDeviceDetails,
              onGetMachineAuth: e.onGetMachineAuth,
              onShowAgreement: e.onShowAgreement,
            }),
            [s, l] = (0, i.useState)(0),
            c = "Login_RememberMeSetting",
            [m, d] = (0, i.useState)(
              e.refreshInfo?.account_name ?? e.defaultAccountName ?? "",
            ),
            [u, h] = (0, i.useState)(""),
            [p, _] = (0, i.useState)(
              n && !o && "0" != localStorage?.getItem(c),
            ),
            g = !(0 === a.eStatus || 1 === a.eStatus || 2 === a.eStatus);
          (0, i.useEffect)(() => {
            e.refreshInfo?.login_token_id &&
              a.setTokenToRevoke(e.refreshInfo.login_token_id);
          }, [e.refreshInfo, a]);
          return {
            password: a,
            onComplete: r,
            eQRStatus: s,
            onQRStatusChange: l,
            strAccountName: m,
            onAccountNameChange: d,
            strPassword: u,
            onPasswordChange: h,
            bRememberMe: p,
            onRememberMeChange: (e) => {
              _(e), localStorage?.setItem(c, e ? "1" : "0");
            },
            onPasswordSubmit: () =>
              m && u ? a.start(m, u, p) : Promise.resolve(8),
            bInPasswordFlow: g,
            onTryOffline: () => {
              C(`Logging in offline with username ${m}`),
                SteamClient.User.SetLoginCredentials(m, u, p);
              SteamClient.User.StartOffline(!0);
            },
          };
        }
        function Te(e) {
          const {
              transport: t,
              onSuccess: n,
              platform: o,
              autoFocus: s,
              refreshInfo: l,
              renderSuccess: c = () => i.createElement(wt, null),
              lastResult: m,
              joinLinkVariant: d,
              defaultAccountName: u,
              secureComputer: h = !0,
              isProbablySharedPC: p = !1,
              onShowAgreement: _,
              creationRedirectUrl: g,
            } = e,
            C = a.TS.IN_STEAMUI ? Ee : De,
            f = a.TS.IN_STEAMUI
              ? (e) => SteamClient.Auth.GetSteamGuardData(e)
              : null,
            v = (function () {
              const e = window?.location && w(window.location, "need_password");
              return void 0 !== e && "false" !== e && "0" !== e;
            })(),
            b = Ae({
              transport: t,
              platform: o,
              onSuccess: n,
              refreshInfo: l,
              onDeviceDetails: C,
              onGetMachineAuth: f,
              defaultAccountName: u,
              secureComputer: h,
              isProbablySharedPC: p,
              onShowAgreement: _,
            }),
            I = fe();
          if (null != m && 1 != m)
            return i.createElement(
              "div",
              { className: te().Login },
              i.createElement(et, {
                reset: () => window.location.reload(),
                failure: R.Generic,
                errorReference: m.toString(),
                extendedErrorMessage: b.password.strExtendedErrorMessage,
              }),
            );
          const y = !(0, a.Y2)();
          if (!b.bInPasswordFlow) {
            const n = i.createElement(
              "div",
              { className: (0, D.A)(te().SideBySide, I && te().Embedded) },
              i.createElement(ke, {
                strAccountName: b.strAccountName,
                onAccountNameChange: b.onAccountNameChange,
                strPassword: b.strPassword,
                onPasswordChange: b.onPasswordChange,
                bRememberMe: b.bRememberMe,
                onRememberMeChange: b.onRememberMeChange,
                onSubmit: b.onPasswordSubmit,
                status: b.password.eStatus,
                autoFocus: s,
                secureComputer: h,
                refreshInfo: e.refreshInfo,
              }),
              y &&
                i.createElement(Ge, {
                  transport: t,
                  onQRStatusChange: b.onQRStatusChange,
                  onComplete: b.onComplete,
                  platform: o,
                  refreshInfo: l,
                }),
            );
            if (I) {
              const t = a.TS.IN_STEAMUI,
                o = t ? a.TS.LAUNCHER_TYPE : void 0;
              return i.createElement(
                pt,
                { className: (0, D.A)(te().EmbeddedRoot, t && te().InClient) },
                !t && !1,
                !e.refreshInfo &&
                  i.createElement(St, {
                    realm: a.TS.EREALM,
                    launcherType: o,
                    className: te().HeaderLogo,
                    onBack: e.onBack,
                  }),
                i.createElement(Me, { refreshInfo: l }),
                n,
                i.createElement(
                  "div",
                  {
                    className: (0, D.A)(
                      te().EmbeddedRootFooter,
                      t && te().InClient,
                    ),
                  },
                  i.createElement(Ie, { variant: e.helpLinkVariant }),
                  i.createElement(ye, {
                    launcherType: o,
                    variant: d,
                    redirectUrl: g,
                  }),
                ),
              );
            }
            const c = i.createElement(
              "div",
              {
                style: {
                  display: "flex",
                  flexDirection: "column",
                  gap: "8px",
                  margin: "8px 16px",
                },
              },
              !1,
              i.createElement(
                "div",
                { className: te().PrimaryHeader },
                e.refreshInfo
                  ? (0, r.we)("#Login_RefreshSignIn")
                  : (0, r.we)("#Login_SignInTitle"),
              ),
              i.createElement(Me, { refreshInfo: e.refreshInfo }),
            );
            return i.createElement(
              ft,
              { title: c },
              v && i.createElement(Re, null),
              n,
            );
          }
          const E = b.password.eStatus;
          switch (E) {
            case 13:
              return e.renderLoading
                ? i.createElement(i.Fragment, null, e.renderLoading())
                : i.createElement(Xe, null);
            case 5:
            case 11:
            case 3:
            case 10:
              const t = 5 === E || 11 === E;
              return i.createElement(nt, {
                type: t ? "mobile" : "email",
                onSubmitCode: b.password.addCode,
                status: E,
                associatedLabel: b.password.strConfirmationAssociatedMessage,
                accountName: b.password.strAccountName,
                onBack: b.password.goBack,
                onCodeHelp: e.onCodeHelp,
              });
            case 6:
            case 4:
              const n = 6 === E;
              return i.createElement(dt, {
                type: n ? "mobile" : "email",
                accountName: b.password.strAccountName,
                onUseCodeOverride: b.password.useCodeOverride,
                onCodeHelp: e.onCodeHelp,
              });
            case 16:
              return i.createElement(tt, { reset: b.password.reset });
            case 15:
              return i.createElement(et, {
                reset: b.password.reset,
                failure: b.password.eFailureState,
                onRequestOffline: b.onTryOffline,
                errorReference: b.password.strErrorReference,
                extendedErrorMessage: b.password.strExtendedErrorMessage,
              });
            case 14:
              return i.createElement(ft, { compact: !0 }, c());
            default:
              return (
                S(`Unknown Phase: ${E}`),
                i.createElement(et, {
                  reset: b.password.reset,
                  failure: R.Generic,
                  onRequestOffline: b.onTryOffline,
                  errorReference: b.password.strErrorReference,
                  extendedErrorMessage: b.password.strExtendedErrorMessage,
                })
              );
          }
        }
        function Me(e) {
          if (!e.refreshInfo) return null;
          let t;
          switch (e.refreshInfo?.reason ?? 2) {
            case 2:
            case 7:
            default:
              t = "#Login_RefreshReason_Generic";
              break;
            case 6:
              t = "#Login_RefreshReason_LoggedInElsewhere";
              break;
            case 34:
              t = "#Login_RefreshReason_LogonSessionReplaced";
              break;
            case 5:
              t = "#Login_RefreshReason_InvalidPassword";
              break;
            case 26:
              t = "#Login_RefreshReason_Revoked";
              break;
            case 27:
              t = "#Login_RefreshReason_Expired";
              break;
            case 49:
              t = "#Login_RefreshReason_PasswordRequiredToKickSession";
              break;
            case 43:
              t = "#Login_RefreshReason_AccountDisabled";
              break;
            case 69:
              t = "#Login_RefreshReason_ParentalControlRestricted";
              break;
            case 84:
              t = "#Login_RefreshReason_RateLimitExceeded";
          }
          return i.createElement(
            "div",
            { className: te().RefreshReasonContainer },
            i.createElement(
              "div",
              { className: te().RefreshTitle },
              (0, r.we)("#Login_RefreshSignIn"),
            ),
            i.createElement(
              "div",
              { className: te().RefreshReason },
              (0, r.we)(t),
            ),
          );
        }
        function Re() {
          return i.createElement(
            "div",
            { className: te().ConfirmCredntialsNag },
            (0, r.we)("#Login_ConfirmCredentials"),
          );
        }
        function ke(e) {
          const {
              onSubmit: t,
              status: n,
              autoFocus: o,
              refreshInfo: s,
              strAccountName: l,
              onAccountNameChange: c,
              strPassword: m,
              onPasswordChange: d,
              bRememberMe: u,
              onRememberMeChange: h,
              secureComputer: p = !0,
            } = e,
            [_, g] = (0, i.useState)(!1),
            C = fe(),
            f = (function () {
              const e = (0, i.useRef)(!0);
              return (
                (0, i.useEffect)(
                  () => () => {
                    e.current = !1;
                  },
                  [e],
                ),
                (0, i.useCallback)(() => e.current, [e])
              );
            })(),
            S = 1 === n || 13 === n,
            v = 2 === n && !_,
            b = v
              ? i.createElement($e, null, (0, r.we)("#Login_CheckCredentials"))
              : i.createElement($e, null, " "),
            I = o && !l,
            w = o && !!l,
            y = !!e.refreshInfo;
          return i.createElement(
            ht,
            {
              onSubmit: () => {
                t().then(() => {
                  f() && g(!1);
                });
              },
              className: te().LoginForm,
            },
            i.createElement(Ne, {
              tone: v ? "danger" : void 0,
              label: i.createElement(
                Ve,
                { highlight: !0 },
                (0, r.we)("#Login_SignIn_WithAccountName"),
              ),
              value: l,
              onChange: (e) => {
                g(!0), c(e);
              },
              autoFocus: I,
              disabled: y,
            }),
            i.createElement(Ne, {
              tone: v ? "danger" : void 0,
              label: i.createElement(Ve, null, (0, r.we)("#Login_Password")),
              value: m,
              onChange: (e) => {
                g(!0), d(e);
              },
              type: "password",
              autoFocus: w,
            }),
            p
              ? i.createElement(
                  F.he,
                  {
                    toolTipContent: "#Login_RememberMe_Tooltip",
                    direction: "bottom",
                  },
                  i.createElement(We, {
                    label: (0, r.we)("#Login_RememberMe_Short"),
                    value: u,
                    onChange: h,
                  }),
                )
              : i.createElement(
                  "div",
                  { className: te().InsecureComputer },
                  (0, r.we)("#Login_InsecureComputer"),
                ),
            i.createElement(je, { loading: S, refreshLogin: y }),
            b,
            !C &&
              i.createElement(
                ut,
                {
                  href: `${a.TS.HELP_BASE_URL}wizard/HelpWithLogin?redir=${encodeURIComponent(document.location.href)}`,
                  align: "center",
                },
                (0, r.we)("#Login_Help_SignIn"),
              ),
          );
        }
        const Le = 700;
        function Ge(e) {
          const t = (0, h.R7)(),
            n = () => t.ownerWindow.screen.width < Le,
            [o, r] = (0, i.useState)(n());
          return (
            (0, P.l6)(t.ownerWindow, "resize", () => {
              r(n());
            }),
            i.createElement(
              "div",
              { className: te().QRSection },
              o ? i.createElement(Be, { ...e }) : i.createElement(Pe, { ...e }),
            )
          );
        }
        function Fe(e) {
          const t =
            a.TS.STORE_BASE_URL +
            "join/?guest=1&purchaseType=gift&checkout=1&redir=" +
            encodeURIComponent(e.redirectURL);
          a.TS.STORE_BASE_URL, encodeURIComponent(e.redirectURL);
          return i.createElement(
            "div",
            { className: te().GuestLayout },
            i.createElement(
              ft,
              { compact: !0 },
              i.createElement(
                "div",
                { className: te().GuestContainer },
                i.createElement(
                  "div",
                  { className: te().GuestText },
                  (0, r.oW)(
                    "#Login_Guest",
                    i.createElement("a", {
                      href: `${t}`,
                      style: { textDecoration: "underline" },
                    }),
                  ),
                ),
                i.createElement(
                  "a",
                  { className: te().GuestLink, href: `${t}` },
                  i.createElement(
                    "button",
                    { className: te().GuestButton },
                    (0, r.we)("#Login_GuestContinue"),
                  ),
                ),
              ),
            ),
          );
        }
        function Pe(e) {
          return i.createElement(Oe, { ...e });
        }
        function Be(e) {
          const [t, n] = (0, i.useState)(!1);
          return t
            ? i.createElement(Oe, { ...e, bShowHideButton: !0, setShowQR: n })
            : i.createElement(xe, { setShowQR: n });
        }
        function xe(e) {
          return i.createElement(
            "div",
            { className: te().MessagingContainer },
            i.createElement(
              "div",
              { className: te().MessagingTag },
              (0, r.we)("#Login_MobileFlow_New"),
            ),
            i.createElement(
              "div",
              { className: te().MessagingSubtitle },
              i.createElement(
                "div",
                { className: te().MessagingSubtitle },
                (0, r.we)("#Login_MobileFlow_SignIn_ScanQR"),
              ),
            ),
            i.createElement(
              "div",
              {
                className: te().MessagingButton,
                onClick: () => e.setShowQR(!0),
              },
              (0, r.we)("#Login_MobileFlow_ShowMeQR_Button"),
            ),
            i.createElement(
              "a",
              {
                href: `${a.TS.STORE_BASE_URL}mobile`,
                className: te().MessagingLink,
              },
              (0, r.we)("#Login_JoinBeta_Button"),
            ),
          );
        }
        function Oe(e) {
          const {
            onQRStatusChange: t,
            transport: n,
            onComplete: o,
            platform: s,
            refreshInfo: l,
            bShowHideButton: c = !1,
            setShowQR: m,
          } = e;
          return i.createElement(
            "div",
            { className: te().QRCodeContainer },
            i.createElement(
              Ve,
              { highlight: !0 },
              (0, r.we)("#Login_SignIn_OrWithQRCode"),
            ),
            i.createElement(
              "div",
              { className: te().QR },
              i.createElement(de, {
                onStatusChange: t,
                transport: n,
                onComplete: o,
                platform: s,
                refreshInfo: l,
              }),
            ),
            c &&
              m &&
              i.createElement(
                "div",
                { className: te().QRHideLink, onClick: () => m(!1) },
                (0, r.we)("#Button_Hide"),
              ),
            i.createElement(
              "div",
              { className: te().UseMobileAppForQR },
              (0, r.oW)(
                "#Login_UseMobileAppForQR_Inline",
                i.createElement(ut, {
                  href: `${a.TS.STORE_BASE_URL}mobile`,
                  align: "center",
                }),
              ),
            ),
          );
        }
        function Ne(e) {
          const { label: t, error: n, tone: o, autoFocus: r, ...a } = e,
            s = o ?? (n ? "danger" : void 0);
          return i.createElement(
            "div",
            { className: te().TextField },
            "string" == typeof t ? i.createElement(Ve, null, t) : t,
            i.createElement(He, { type: "error" }, n),
            i.createElement(Ue, { autoFocus: r, tone: s, ...a }),
          );
        }
        function Ve(e) {
          const { children: t, highlight: n } = e;
          return i.createElement(
            "div",
            { className: (0, D.A)(te().FieldLabel, n && te().Highlight) },
            t,
          );
        }
        function Ue(e) {
          const {
            value: t,
            onChange: n,
            type: o = "text",
            tone: r,
            className: a,
            autoFocus: s,
            disabled: l,
          } = e;
          return i.createElement("input", {
            value: t,
            type: o,
            autoFocus: s,
            onChange: (e) => n(e.target.value),
            className: (0, D.A)(
              te().TextInput,
              "danger" === r && te().Danger,
              a,
            ),
            disabled: l,
          });
        }
        function He(e) {
          const { children: t, type: n } = e;
          return i.createElement(
            "div",
            {
              className: (0, D.A)(te().FieldHint, "error" === n && te().Error),
            },
            t,
          );
        }
        function We(e) {
          const { label: t, onChange: n, value: o } = e;
          let r = () => {
            n && n(!o);
          };
          return i.createElement(
            "div",
            {
              className: te().CheckboxField,
              onClick: r,
              onKeyPress: (e) => {
                " " == e.key && (r(), e.preventDefault());
              },
            },
            i.createElement(ze, { value: o }),
            i.createElement("div", { className: te().CheckboxFieldLabel }, t),
          );
        }
        function ze(e) {
          const { value: t } = e;
          return i.createElement(
            "div",
            { tabIndex: 0, className: te().Checkbox },
            t &&
              i.createElement(
                "div",
                { className: te().Check },
                i.createElement(L.Jlk, { strokeWidth: 35 }),
              ),
          );
        }
        function je(e) {
          const { refreshLogin: t, ...n } = e;
          return t && SteamClient.User?.StartShutdown
            ? i.createElement(Ke, null)
            : i.createElement(qe, { ...n });
        }
        function qe(e) {
          return i.createElement(
            "div",
            { className: te().SignInButtonContainer },
            i.createElement(Ze, { ...e }, (0, r.we)("#Login_SignIn")),
          );
        }
        function Ke() {
          return i.createElement(
            "div",
            { className: te().RefreshButtonContainer },
            i.createElement(
              "button",
              { className: te().SubmitButton, type: "submit" },
              (0, r.we)("#Login_SignIn"),
            ),
            i.createElement(
              "button",
              {
                className: te().RefreshQuitButton,
                onClick: () => SteamClient.User.StartShutdown(!0),
              },
              (0, r.we)("#Login_ExitSteam"),
            ),
          );
        }
        function Ze(e) {
          return i.createElement(Qe, { type: "submit", ...e });
        }
        function Qe(e) {
          const {
              className: t,
              loading: n,
              disabled: o,
              children: r,
              ...a
            } = e,
            s = o || n;
          return i.createElement(
            "button",
            {
              className: (0, D.A)(te().SubmitButton, n && te().Loading, t),
              disabled: s,
              ...a,
            },
            r,
            n &&
              i.createElement(
                "div",
                { className: te().LoadingContainer },
                i.createElement(Ye, { size: "small" }),
              ),
          );
        }
        function $e(e) {
          const t = e.children || " ";
          return i.createElement("div", { className: te().FormError }, t);
        }
        function Xe() {
          return i.createElement(
            ft,
            { compact: !0 },
            i.createElement(
              pt,
              {
                alignItems: "center",
                className: (0, D.A)(
                  te().WaitingForTokenContainer,
                  a.TS.IN_STEAMUI && te().Client,
                ),
              },
              i.createElement(G.t, { size: "xlarge" }),
              i.createElement(
                "div",
                { className: (0, D.A)(te().Description) },
                (0, r.we)(
                  a.TS.IN_STEAMUI
                    ? "#Login_ConnectingToSteam"
                    : "#Login_LoadingAccountInfo",
                ),
              ),
            ),
          );
        }
        function Ye(e) {
          const { size: t } = e;
          return i.createElement("div", {
            className: (0, D.A)(
              te().LoadingSpinner,
              "small" == t && te().Small,
              ("medium" == t || !t) && te().Medium,
              "large" == t && te().Large,
            ),
          });
        }
        function Je(e) {
          return i.createElement(
            "div",
            { className: te().OfferOffline },
            i.createElement(
              "button",
              {
                className: te().OfferOfflineButton,
                onClick: e.onRequestOffline,
              },
              (0, r.we)("#Login_GoOffline_Button"),
            ),
          );
        }
        function et(e) {
          const {
              reset: t,
              failure: n,
              onRequestOffline: o,
              errorReference: s,
              extendedErrorMessage: l,
            } = e,
            { title: c, description: m } = (function (e, t = "") {
              let n = { title: "", description: "" };
              switch (e) {
                case R.None:
                  return { title: "", description: "" };
                case R.Expired:
                  n = {
                    title: (0, r.we)("#Login_Error_Expired_Title"),
                    description: (0, r.we)("#Login_Error_Expired_Description"),
                  };
                  break;
                case R.Network:
                  n = {
                    title: (0, r.we)("#Login_Error_Network_Title"),
                    description: (0, r.we)("#Login_Error_Network_Description"),
                  };
                  break;
                case R.MoveAuthenticator:
                  n = {
                    title: (0, r.we)("#Error_Generic"),
                    description: (0, r.we)(
                      "#Login_Error_MoveAuthenticator_Description",
                    ),
                  };
                  break;
                case R.RateLimitExceeded:
                  n = {
                    title: (0, r.we)("#Login_Error_RateLimit_Title"),
                    description: (0, r.we)(
                      "#Login_Error_RateLimit_Description",
                    ),
                  };
                  break;
                case R.AnonymousLogin:
                  n = {
                    title: (0, r.we)("#Login_Error_Anonymous_Title"),
                    description: (0, r.we)(
                      "#Login_Error_Anonymous_Description",
                    ),
                  };
                  break;
                case R.Generic:
                default:
                  n = {
                    title: (0, r.we)("#Error_Generic"),
                    description: (0, r.we)("#Login_Error_Default_Description"),
                  };
              }
              t && (n.description = t);
              return n;
            })(n, l),
            d = a.TS.IN_STEAMUI && n == R.Network;
          return i.createElement(
            ft,
            { compact: !0 },
            i.createElement(
              pt,
              { alignItems: "center", gap: 12 },
              i.createElement("div", { className: te().FailureTitle }, c),
              i.createElement("div", { className: te().FailureDescription }, m),
              d &&
                i.createElement(
                  "div",
                  { className: te().FailureDescription },
                  (0, r.we)("#Login_GoOffline_Description"),
                ),
              i.createElement(
                _t,
                { className: te().FailureButtons },
                i.createElement(
                  Qe,
                  { className: te().TryAgainButton, onClick: t },
                  (0, r.we)("#Button_Retry"),
                ),
                d && i.createElement(Je, { onRequestOffline: o }),
              ),
            ),
            s &&
              i.createElement(
                "div",
                { className: te().MutedErrorReference },
                (0, r.we)("#Login_Error_Reference", s),
              ),
          );
        }
        function tt(e) {
          const { reset: t } = e;
          return i.createElement(et, { reset: t, failure: R.Generic });
        }
        function nt(e) {
          const {
              type: t,
              onSubmitCode: n,
              status: o,
              accountName: a,
              associatedLabel: s,
              onBack: l,
            } = e,
            [c, m] = (0, i.useState)([]),
            [d, u] = (0, i.useState)(!1),
            [h, p] = (0, i.useState)(!1),
            [_, g] = (0, i.useState)(!1),
            [C, f] = (0, i.useState)(0),
            S = "mobile" === t,
            v = c.join(""),
            b = X(v, _),
            I = (e) => {
              p(!0),
                n(e).then(() => {
                  u(!1), p(!1);
                });
            },
            w = !d && (11 === o || 10 === o);
          let y, E;
          return (
            _
              ? "mobile" === t
                ? ((E = i.createElement(ot, null)),
                  (y = "#Login_UseMobileCode"))
                : ((E = i.createElement(ot, null)), (y = "#Login_UseEmailCode"))
              : ((E =
                  "mobile" === t
                    ? i.createElement(rt, null)
                    : i.createElement(at, { emailAddress: s })),
                (y = "#Login_UseBackupCode")),
            i.createElement(
              ft,
              { title: i.createElement(St, null), compact: !0 },
              i.createElement(
                ht,
                {
                  onSubmit: () => {
                    b && I(v);
                  },
                },
                i.createElement(
                  pt,
                  { alignItems: "center", gap: 14 },
                  i.createElement(st, { type: t, accountName: a }),
                  i.createElement(
                    "div",
                    { className: te().ConfirmationEntryContainer },
                    i.createElement(
                      pt,
                      { alignItems: "center", gap: 2 },
                      w &&
                        i.createElement(
                          $e,
                          null,
                          (0, r.we)("#Login_IncorrectSteamGuard"),
                        ),
                      i.createElement(gt, {
                        key: C,
                        value: c,
                        onChange: (e) => {
                          d || u(!0), m(e);
                          const t = e.join("");
                          X(t, _) && I(t);
                        },
                        tone: w ? "danger" : void 0,
                        loading: h,
                        backupCode: _,
                      }),
                    ),
                    E,
                  ),
                  S &&
                    i.createElement(
                      ut,
                      {
                        onClick: () => {
                          g(!_), m([]), n(""), f(C + 1);
                        },
                        align: "center",
                      },
                      (0, r.we)(y),
                    ),
                  i.createElement(it, { type: t, onCodeHelp: e.onCodeHelp }),
                ),
              ),
            )
          );
        }
        function it(e) {
          if ((0, b.q)()) return null;
          let t, n;
          return (
            "mobile" === e.type
              ? ((t = `${a.TS.HELP_BASE_URL}wizard/HelpWithLoginInfo?lost=8&issueid=402`),
                (n = (0, r.we)("#Login_Help_AccessMobileApp")))
              : ((t = `${a.TS.HELP_BASE_URL}wizard/HelpWithSteamGuardCode`),
                (n = (0, r.we)("#Login_Help_AccessEmail"))),
            e.onCodeHelp
              ? i.createElement(
                  ut,
                  { onClick: () => e.onCodeHelp(t), align: "center" },
                  n,
                )
              : i.createElement(ut, { href: t, align: "center" }, n)
          );
        }
        function ot() {
          return i.createElement(
            _t,
            {
              justifyContent: "space-evenly",
              alignItems: "center",
              className: te().EnterBackupCodeContainer,
            },
            i.createElement(
              pt,
              null,
              i.createElement(
                "div",
                { className: te().EnterCodeFromMobile },
                (0, r.we)("#Login_EnterBackupCode"),
              ),
              i.createElement(
                "div",
                { className: te().Label },
                (0, r.we)("#Login_EnterBackupCodeDescription"),
              ),
            ),
          );
        }
        function rt() {
          return i.createElement(
            _t,
            {
              justifyContent: "space-evenly",
              alignItems: "center",
              className: te().EnterCodeFromMobileContainer,
            },
            i.createElement(
              "div",
              { className: te().EnterCodeFromMobile },
              (0, r.we)("#Login_EnterMobileCode"),
            ),
            i.createElement(ct, { className: te().AwaitingMobileConfIcon }),
          );
        }
        function at(e) {
          return i.createElement(
            _t,
            {
              justifyContent: "space-evenly",
              alignItems: "center",
              className: te().EnterCodeFromEmailContainer,
            },
            i.createElement(
              Ct,
              { align: "center", spacing: 6 },
              i.createElement(
                "div",
                { className: te().EnterCodeFromEmail },
                (0, r.PP)(
                  "#Login_EnterEmailCode",
                  i.createElement(
                    "span",
                    { className: te().EnterCodeEmailAddress },
                    e.emailAddress,
                  ),
                ),
              ),
            ),
            i.createElement(mt, { className: te().AwaitingEmailConfIcon }),
          );
        }
        function st(e) {
          const { accountName: t, type: n } = e,
            o =
              "mobile" === n
                ? (0, r.we)("#Login_MobileProtectingAccount")
                : (0, r.we)("#Login_EmailProtectingAccount"),
            a = fe();
          return i.createElement(
            "div",
            { className: te().ProtectingAccount },
            i.createElement(
              "div",
              { className: te().Label },
              (0, r.PP)(
                "#Login_ActiveAccountName",
                i.createElement("span", { className: te().AccountName }, t),
              ),
            ),
            !a && i.createElement("div", { className: te().Description }, o),
          );
        }
        function lt() {
          return i.createElement(
            pt,
            { alignItems: "center" },
            i.createElement(
              "div",
              { className: te().ConfirmationContainer },
              i.createElement("img", { src: u }),
              i.createElement(
                "div",
                { className: te().AwaitingMobileConfText },
                (0, r.oW)("#Login_AwaitingMobileConfirmation"),
              ),
            ),
          );
        }
        function ct(e) {
          return i.createElement(
            "svg",
            {
              viewBox: "0 0 33 49",
              fill: "currentColor",
              className: e.className,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M28 47.1106C29.1046 47.1106 30 46.2151 30 45.1106L30 3.72705C30 2.62248 29.1046 1.72705 28 1.72705L5 1.72705C3.89544 1.72705 3 2.62248 3 3.72705L3 45.1106C3 46.2151 3.89543 47.1106 5 47.1106L28 47.1106ZM5.68119 5.82741L27.3188 5.82741L27.3188 42.7772H5.68119L5.68119 5.82741ZM20.9999 44.944C20.9999 45.3429 20.6766 45.6662 20.2777 45.6662L12.7221 45.6662C12.3233 45.6662 11.9999 45.3429 11.9999 44.944C11.9999 44.5451 12.3233 44.2218 12.7221 44.2218H20.2777C20.6766 44.2218 20.9999 44.5451 20.9999 44.944ZM17.2778 4.44406C17.6767 4.44406 18 4.12071 18 3.72184C18 3.32296 17.6767 2.99962 17.2778 2.99962L15.7222 2.99962C15.3233 2.99962 15 3.32296 15 3.72184C15 4.12071 15.3233 4.44406 15.7222 4.44406L17.2778 4.44406Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M22.2456 22.4164C22.2456 21.6666 22.8127 21.0002 23.6228 21.0002C24.3519 21.0002 25 21.6666 25 22.4164C25 23.1661 24.3519 23.8325 23.6228 23.8325C22.8937 23.8325 22.2456 23.1661 22.2456 22.4164Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M18.6812 22.4164C18.6812 21.6666 19.2483 21.0002 20.0584 21.0002C20.8685 21.0002 21.5166 21.6666 21.4355 22.4164C21.4355 23.1661 20.8685 23.8325 20.0584 23.8325C19.3293 23.8325 18.6812 23.1661 18.6812 22.4164Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M15.1977 22.4164C15.1977 21.6666 15.7648 21.0002 16.5749 21.0002C17.304 21.0002 17.9521 21.6666 17.9521 22.4164C17.9521 23.1661 17.385 23.8325 16.5749 23.8325C15.8458 23.8325 15.1977 23.1661 15.1977 22.4164Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M11.7143 22.4164C11.7143 21.6666 12.2814 21.0002 13.0915 21.0002C13.8206 21.0002 14.4686 21.6666 14.4686 22.4164C14.4686 23.1661 13.9016 23.8325 13.0915 23.8325C12.3624 23.8325 11.7143 23.1661 11.7143 22.4164Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M8.14983 22.4164C8.14983 21.6666 8.7169 21.0002 9.527 21.0002C10.3371 21.0002 10.9852 21.6666 10.9042 22.4164C10.9042 23.1661 10.3371 23.8325 9.527 23.8325C8.79791 23.8325 8.14983 23.1661 8.14983 22.4164Z",
            }),
          );
        }
        function mt(e) {
          return i.createElement(
            "svg",
            { viewBox: "0 0 58 56", fill: "none", className: e.className },
            i.createElement("path", {
              d: "M57.9352 24.5887C57.8463 24.233 57.8463 23.8774 57.6684 23.5217C57.4017 22.8993 57.046 22.4547 56.5125 22.0101L49.577 16.4083V10.9844C49.577 8.85041 47.8876 7.16098 45.7536 7.16098H38.1956L31.5269 1.73706C30.1042 0.581137 28.0591 0.581137 26.6364 1.73706L19.9677 7.16098H12.4097C10.2757 7.16098 8.58631 8.93932 8.58631 10.9844V16.4083L1.56188 22.0101C1.02838 22.3658 0.672713 22.8993 0.405962 23.5217V23.6106C0.228128 24.1441 0.050293 24.5887 0.050293 25.1222V52.1529C0.050293 53.2199 0.494878 54.1091 1.1173 54.8204C1.82863 55.5318 2.80672 55.8874 3.7848 55.8874H54.0228C55.0898 55.8874 55.979 55.4428 56.6903 54.8204C57.4017 54.1091 57.7573 53.131 57.7573 52.1529V25.1222C57.9352 24.8554 57.9352 24.7665 57.9352 24.5887ZM49.577 19.7872L54.7342 23.9663L49.577 28.9456V19.7872ZM28.148 3.60431C28.4148 3.42648 28.6815 3.24864 28.9483 3.24864C29.3039 3.24864 29.5707 3.33756 29.7485 3.60431L34.0165 7.07207H23.9689L28.148 3.60431ZM10.9871 10.9844C10.9871 10.2731 11.5206 9.73958 12.2319 9.73958H45.6646C46.376 9.73958 46.9095 10.362 46.9095 10.9844V31.4353L46.8206 31.5242L40.2407 37.9262H17.6558L11.076 31.5242L10.9871 31.4353V10.9844ZM8.40848 19.7872V28.9456L3.34022 23.9663L8.40848 19.7872ZM2.62888 51.6194V26.9005L15.2551 39.26L2.62888 51.6194ZM4.49614 53.3088L17.6558 40.5048H40.2407L53.4004 53.3088H4.49614ZM55.3566 51.6194L42.6415 39.1711L55.2677 26.8116V51.6194H55.3566ZM29.0372 35.3476C30.5488 35.3476 31.9715 35.0809 33.3941 34.5474C34.0165 34.2806 34.3722 33.4804 34.1055 32.858C33.8387 32.2355 33.0385 31.8799 32.416 32.1466C31.349 32.5912 30.1931 32.769 29.0372 32.769C27.3478 32.769 25.7473 32.3245 24.4135 31.5242C21.746 29.9237 20.0566 27.0784 20.0566 23.7884C20.0566 18.8091 24.0579 14.8078 29.0372 14.8078C34.0165 14.8078 38.0178 18.8091 38.0178 23.7884V24.4109C38.0178 25.4779 37.2175 26.367 36.0616 26.367C34.9946 26.367 34.1055 25.4779 34.1055 24.4109V23.7884C34.1055 20.9431 31.7936 18.6313 28.9483 18.6313C26.1029 18.6313 23.7911 20.9431 23.7911 23.7884C23.7911 26.6338 26.1029 28.9456 28.9483 28.9456C30.3709 28.9456 31.7047 28.3232 32.5939 27.434C33.3941 28.4121 34.639 28.9456 35.9727 28.9456C38.4624 28.9456 40.5075 26.9894 40.5075 24.4109V23.7884C40.5075 17.3864 35.2614 12.2292 28.9483 12.2292C22.6352 12.2292 17.3891 17.4753 17.3891 23.7884C17.3891 26.7227 18.545 29.4791 20.3233 31.5242C22.5463 33.925 25.5694 35.3476 29.0372 35.3476ZM29.0372 26.367C27.6145 26.367 26.4586 25.2111 26.4586 23.7884C26.4586 22.3658 27.6145 21.2098 29.0372 21.2098C30.4599 21.2098 31.6158 22.3658 31.6158 23.7884C31.5269 25.2111 30.371 26.367 29.0372 26.367Z",
              fill: "#1A99FF",
            }),
          );
        }
        function dt(e) {
          const { type: t, accountName: n, onUseCodeOverride: o } = e,
            s = fe(),
            l = i.createElement(it, {
              type: "mobile",
              onCodeHelp: e.onCodeHelp,
            }),
            c = s
              ? i.createElement(
                  "div",
                  { style: { paddingBottom: "20px" } },
                  i.createElement(
                    ut,
                    { align: "center", onClick: o },
                    (0, r.we)("#Login_EnterCodeInstead"),
                  ),
                )
              : i.createElement(
                  "div",
                  { className: te().EnterCodeInsteadLink },
                  i.createElement(
                    ut,
                    { align: "center", onClick: o },
                    (0, r.we)("#Login_EnterCodeInstead"),
                  ),
                );
          return i.createElement(
            ft,
            { title: i.createElement(St, null), compact: !0 },
            i.createElement(
              pt,
              { gap: a.TS.IN_STEAMUI ? 24 : 40 },
              i.createElement(st, { type: t, accountName: n }),
              i.createElement(lt, null),
              i.createElement("div", { className: te().LinkContainer }, c, l),
            ),
          );
        }
        function ut(e) {
          const { children: t, align: n, inline: o } = e,
            r = (0, D.A)(te().TextLink, "center" === n && te().TextAlignCenter);
          if ("href" in e) {
            const n = a.TS.IN_STEAMUI
              ? `steam://openurl_external/${e.href}`
              : e.href;
            return i.createElement("a", { className: r, href: n }, t);
          }
          {
            const n = o ? "span" : "div";
            return i.createElement(n, { className: r, onClick: e.onClick }, t);
          }
        }
        function ht(e) {
          const { onSubmit: t, children: n, className: o } = e;
          return i.createElement(
            "form",
            { onSubmit: (e) => (e.preventDefault(), t(), !1), className: o },
            n,
          );
        }
        function pt(e) {
          const {
              alignItems: t,
              justifyContent: n,
              gap: o,
              className: r,
              children: a,
            } = e,
            s = (0, D.A)(
              te().FlexCol,
              "center" === t && te().AlignItemsCenter,
              "center" === n && te().JustifyContentCenter,
              r,
            ),
            l = o ? { gap: "number" == typeof o ? `${o}px` : o } : void 0;
          return i.createElement("div", { className: s, style: l }, a);
        }
        function _t(e) {
          const {
              children: t,
              justifyContent: n,
              alignItems: o,
              className: r,
            } = e,
            a = {
              display: "flex",
              flexDirection: "row",
              justifyContent: n,
              alignItems: o,
            };
          return i.createElement("div", { style: a, className: r }, t);
        }
        function gt(e) {
          const { onChange: t, backupCode: n, ...o } = e;
          return i.createElement(M, {
            length: Q(n),
            backupCode: n,
            onChange: (e) => {
              $((e = e.map((e) => e.toUpperCase())).join("").trim(), n) && t(e);
            },
            autoFocus: !0,
            ...o,
            allowCharacter: (e) => /\w/g.test(e),
          });
        }
        function Ct(e) {
          const { children: t, spacing: n = 0, align: o } = e;
          return i.createElement(
            pt,
            { alignItems: o },
            i.Children.map(t, (e, t) =>
              e
                ? i.createElement(
                    "div",
                    { style: t > 0 ? { paddingTop: `${n}px` } : void 0 },
                    e,
                  )
                : null,
            ).filter(Boolean),
          );
        }
        function ft(e) {
          const { title: t, children: n, compact: o } = e,
            r = fe();
          return i.createElement(
            pt,
            {
              gap: a.TS.IN_STEAMUI ? 0 : 32,
              className: (0, D.A)(
                te().StandardLayout,
                r && te().Embedded,
                o && te().Compact,
                a.TS.IN_STEAMUI && "IN_CLIENT",
              ),
            },
            "string" == typeof t
              ? i.createElement("div", { className: te().PrimaryHeader }, t)
              : t,
            i.createElement("div", { className: te().FormContainer }, n),
          );
        }
        function St(e) {
          const {
            realm: t = a.TS.EREALM,
            launcherType: n = a.TS.IN_STEAMUI ? a.TS.LAUNCHER_TYPE : void 0,
            className: o = te().HeaderLogo,
          } = e;
          return 8 === n
            ? i.createElement("div", { className: o })
            : i.createElement(
                "div",
                { className: te().LogoContainer },
                i.createElement(vt, { onBack: e.onBack }),
                t !== s.TU.k_ESteamRealmChina
                  ? i.createElement(bt, { className: o })
                  : i.createElement(It, { className: o }),
                " ",
              );
        }
        function vt(e) {
          return e.onBack
            ? i.createElement(
                "div",
                { className: te().BackArrowContainer, onClick: e.onBack },
                i.createElement(L.Q38, { className: te().BackArrow }),
              )
            : null;
        }
        function bt(e) {
          return i.createElement(
            "svg",
            {
              viewBox: "0 0 153 46",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              className: e.className,
            },
            i.createElement("path", {
              d: "M22.9891 0C10.8429 0 0.93833 9.30396 0 21.1548L12.3547 26.2486C13.3973 25.5209 14.6484 25.1051 16.0037 25.1051C16.108 25.1051 16.2644 25.1051 16.3687 25.1051L21.8944 17.2045C21.8944 17.1525 21.8944 17.1525 21.8944 17.1006C21.8944 12.3186 25.8041 8.42034 30.6 8.42034C35.3959 8.42034 39.3056 12.3186 39.3056 17.1006C39.3056 21.8825 35.3959 25.7808 30.6 25.7808C30.5479 25.7808 30.4436 25.7808 30.3915 25.7808L22.5721 31.3424C22.5721 31.4463 22.5721 31.5503 22.5721 31.6542C22.5721 35.2407 19.6528 38.1514 16.0559 38.1514C12.876 38.1514 10.2695 35.9164 9.64395 32.9017L0.781942 29.2633C3.5448 38.9311 12.4068 46 22.9891 46C35.7087 46 46.0303 35.7085 46.0303 23.026C46.0303 10.2915 35.7087 0 22.9891 0Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M14.44 34.8766L11.625 33.7331C12.1463 34.7726 12.9804 35.6562 14.1272 36.124C16.6294 37.1636 19.4966 35.9681 20.5391 33.4732C21.0604 32.2777 21.0604 30.9263 20.5391 29.7308C20.0178 28.5353 19.0795 27.5997 17.8805 27.08C16.6816 26.5602 15.3783 26.6122 14.2836 27.028L17.2029 28.2235C19.0274 29.0031 19.9136 31.0822 19.1316 32.9014C18.4018 34.7726 16.2645 35.6562 14.44 34.8766Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M36.3857 17.0488C36.3857 13.8782 33.7793 11.2793 30.5994 11.2793C27.4195 11.2793 24.813 13.8782 24.813 17.0488C24.813 20.2194 27.4195 22.8703 30.5994 22.8703C33.7793 22.8703 36.3857 20.2714 36.3857 17.0488ZM26.2205 17.0488C26.2205 14.6578 28.1493 12.6827 30.5994 12.6827C32.9973 12.6827 34.9782 14.6058 34.9782 17.0488C34.9782 19.4397 33.0495 21.3629 30.5994 21.3629C28.2014 21.4149 26.2205 19.4397 26.2205 17.0488Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M70.6879 15.7489L69.1241 18.4517C67.9251 17.6201 66.3091 17.1003 64.9016 17.1003C63.2856 17.1003 62.2951 17.776 62.2951 18.9715C62.2951 20.4269 64.0675 20.7387 66.674 21.6743C69.489 22.6619 71.105 23.8574 71.105 26.4043C71.105 29.9387 68.3421 31.9139 64.3282 31.9139C62.3994 31.9139 60.0014 31.3941 58.229 30.3026L59.3759 27.2879C60.8355 28.0675 62.6079 28.5353 64.1718 28.5353C66.3091 28.5353 67.2995 27.7557 67.2995 26.6122C67.2995 25.3127 65.7878 24.8969 63.2856 24.0653C60.4706 23.1297 58.5418 21.8822 58.5418 19.0235C58.5418 15.8009 61.1483 13.9297 64.8494 13.9297C67.4038 14.0336 69.489 14.8653 70.6879 15.7489Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M82.7305 17.4643V31.6542H79.0815V17.4643H73.8164V14.3457H87.9956V17.4643H82.7305Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M95.6574 17.4124V21.3107H102.643V24.4293H95.6574V28.4836H103.737V31.6022H92.0083V14.3457H103.737V17.4643H95.6574V17.4124Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M111.87 28.2756L110.723 31.6542H106.917L113.434 14.3457H117.083L123.755 31.6542H119.793L118.594 28.2756H111.87ZM115.258 18.4519L112.912 25.3649H117.708L115.258 18.4519Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M142.47 21.0508L137.726 31.1864H135.693L131.001 21.1547V31.7062H127.509V14.3457H131.001L136.84 26.8723L142.47 14.3457H145.963V31.6542H142.47V21.0508Z",
              fill: "#E0E1E6",
            }),
            i.createElement("path", {
              d: "M153 16.5288C153 18.0361 151.905 18.9197 150.602 18.9197C149.299 18.9197 148.204 17.9841 148.204 16.5288C148.204 15.0214 149.351 14.1378 150.602 14.1378C151.853 14.0858 153 15.0214 153 16.5288ZM148.569 16.5288C148.569 17.7762 149.455 18.5559 150.55 18.5559C151.645 18.5559 152.531 17.7762 152.531 16.5288C152.531 15.2813 151.645 14.5016 150.55 14.5016C149.455 14.5016 148.569 15.2813 148.569 16.5288ZM150.602 15.2813C151.228 15.2813 151.436 15.5932 151.436 15.957C151.436 16.2689 151.228 16.4768 151.019 16.6327L151.593 17.6723H151.123L150.654 16.7367H150.133V17.6723H149.768V15.2813H150.602ZM150.185 16.3728H150.602C150.863 16.3728 151.019 16.2169 151.019 16.009C151.019 15.8011 150.915 15.6451 150.602 15.6451H150.185V16.3728Z",
              fill: "#E0E1E6",
            }),
          );
        }
        function It(e) {
          return i.createElement(
            "svg",
            {
              viewBox: "0 0 232.73 46.07",
              xmlns: "http://www.w3.org/2000/svg",
              className: e.className,
              fill: "#E0E1E6",
            },
            i.createElement(
              "g",
              { stroke: "null", id: "svg_2" },
              i.createElement("path", {
                stroke: "null",
                id: "svg_3",
                d: "m21.73862,4.25158c-10.07896,0 -18.33997,7.77507 -19.12529,17.65445l10.28722,4.25199c0.87209,-0.59441 1.92641,-0.94585 3.05883,-0.94585c0.09979,0 0.20392,0.00434 0.30371,0.00868l4.57306,-6.62964c0,-0.03037 0,-0.06074 0,-0.09545c0,-3.99167 3.2454,-7.23707 7.23707,-7.23707c3.99167,0 7.23707,3.2454 7.23707,7.23707c0,3.99167 -3.2454,7.23707 -7.23707,7.23707c-0.0564,0 -0.10847,0 -0.16487,-0.00434l-6.52551,4.65984c0.00434,0.08678 0.00868,0.16921 0.00868,0.25599c0,2.99809 -2.43839,5.43214 -5.43214,5.43214c-2.62929,0 -4.82905,-1.87869 -5.32801,-4.36046l-7.35855,-3.04148c2.27785,8.05709 9.67979,13.96216 18.4658,13.96216c10.59961,0 19.19471,-8.5951 19.19471,-19.19471c0,-10.59527 -8.5951,-19.19037 -19.19471,-19.19037",
              }),
              i.createElement("path", {
                stroke: "null",
                id: "svg_4",
                d: "m14.64039,33.37339l-2.35595,-0.97622c0.41652,0.86775 1.1411,1.59667 2.09996,2.00017c2.07393,0.86341 4.46459,-0.12149 5.33235,-2.19542c0.41652,-1.00226 0.42086,-2.11298 0.00434,-3.11957c-0.41652,-1.00659 -1.1975,-1.79191 -2.19976,-2.21277c-0.99792,-0.41652 -2.06525,-0.39917 -3.00677,-0.04773l2.43405,1.00659c1.53159,0.6378 2.25182,2.395 1.61836,3.92659c-0.6378,1.53592 -2.395,2.25616 -3.92659,1.61836",
              }),
              i.createElement("path", {
                stroke: "null",
                id: "svg_5",
                d: "m32.89793,18.49576c0,-2.65966 -2.16505,-4.82471 -4.82471,-4.82471c-2.65966,0 -4.82471,2.16505 -4.82471,4.82471c0,2.65966 2.16505,4.82037 4.82471,4.82037c2.65966,0.00434 4.82471,-2.16071 4.82471,-4.82037m-8.4389,-0.00434c0,-2.00017 1.6227,-3.62287 3.62287,-3.62287c2.00017,0 3.62287,1.6227 3.62287,3.62287c0,2.00017 -1.6227,3.62287 -3.62287,3.62287c-2.00017,0 -3.62287,-1.6227 -3.62287,-3.62287",
              }),
            ),
            i.createElement("path", {
              stroke: "null",
              id: "svg_6",
              d: "m46.71333,8.08293c0,2.23529 -1.67014,3.62707 -3.5849,3.62707c-1.91476,0 -3.60177,-1.39178 -3.60177,-3.62707c0,-2.23529 1.68701,-3.6102 3.60177,-3.6102c1.91476,-0.00844 3.5849,1.37491 3.5849,3.6102m-6.64682,0c0,1.90632 1.39178,3.1041 3.05349,3.1041c1.66171,0 3.04505,-1.19778 3.04505,-3.1041c0,-1.91476 -1.38335,-3.09566 -3.04505,-3.09566c-1.65327,0 -3.05349,1.18934 -3.05349,3.09566m3.09566,-1.84728c0.95316,0 1.23152,0.49767 1.23152,1.01221c0,0.48923 -0.29523,0.8182 -0.64106,0.9869l0.83507,1.57736l-0.63263,0l-0.71698,-1.40865l-0.76759,0l0,1.40865l-0.52297,0l0,-3.56803l1.21465,0l0,-0.00844zm-0.69167,1.67858l0.65793,0c0.43019,0 0.70011,-0.27836 0.70011,-0.61576c0,-0.3374 -0.17714,-0.56515 -0.69167,-0.56515l-0.66637,0l0,1.18091z",
            }),
            i.createElement(
              "g",
              { id: "svg_7" },
              i.createElement("path", {
                id: "svg_8",
                d: "m77.46999,20.31667c-2.27,6.12 -7.24,10.13 -13.11,12.2c-0.54,-1.12 -1.7,-2.9 -2.65,-3.76c3.6,-1.03 6.95,-3.06 9.14,-5.63l-7.24,0l0,-3.89l10.05,0l0.79,-0.12l3.02,1.2zm-15.02,20.43c1.7,-1.57 3.39,-4.01 4.47,-6l4.22,2.11c-1.2,2.03 -2.73,4.55 -4.34,6.29l-4.35,-2.4zm8.57,-29.9l-8.23,0l0,-4.26l8.23,0l0,-2.28l5.01,0l0,2.28l10.42,0l0,-2.28l5.01,0l0,2.28l8.15,0l0,4.26l-8.15,0l0,2.15l-5.01,0l0,-2.15l-10.42,0l0,2.15l-5.01,0l0,-2.15zm-2.57,19.85l24.53,0l0,4.1l-24.53,0l0,-4.1zm28.71,-9.8c-1.86,1.45 -3.85,2.81 -5.59,3.81c2.52,1.24 5.46,2.19 8.48,2.77c-1.03,0.95 -2.4,2.9 -3.1,4.14c-5.29,-1.41 -10.05,-4.14 -13.44,-7.82l0,1.99c0,2.03 -0.33,2.94 -1.78,3.52c-1.32,0.54 -3.14,0.58 -5.46,0.58c-0.25,-1.2 -0.87,-2.69 -1.41,-3.76c1.37,0.08 2.85,0.08 3.27,0.08c0.46,-0.04 0.62,-0.12 0.62,-0.58l0,-5.83c1.41,-0.62 2.85,-1.45 4.26,-2.32l-14.23,0l0,-3.72l19.28,0l0.99,-0.25l2.98,2.52c-1.9,1.49 -4.18,3.06 -6.58,4.38c0.7,0.79 1.57,1.53 2.52,2.23c1.78,-1.28 3.97,-3.06 5.25,-4.38l3.94,2.64zm-19.11,14.89c0.7,1.99 1.24,4.63 1.28,6.29l-4.88,0.75c0.04,-1.66 -0.37,-4.34 -0.95,-6.41l4.55,-0.63zm8.65,-0.54c1.16,1.86 2.27,4.3 2.61,6l-4.51,1.41c-0.29,-1.65 -1.28,-4.22 -2.36,-6.12l4.26,-1.29zm8.39,-0.54c1.86,1.82 4.05,4.38 5.09,6.21l-4.43,2.07c-0.91,-1.78 -2.98,-4.47 -4.8,-6.37l4.14,-1.91z",
              }),
              i.createElement("path", {
                id: "svg_9",
                d: "m110.14999,23.78667c-1.57,-1.12 -4.84,-2.9 -7.16,-4.09l2.61,-3.64c2.23,0.91 5.58,2.56 7.32,3.64l-2.77,4.09zm-5.79,15.14c2.03,-3.06 4.92,-8.07 7.16,-12.74l3.72,3.19c-1.94,4.22 -4.34,8.81 -6.58,12.74l-4.3,-3.19zm8.02,-26.02c-1.49,-1.28 -4.67,-3.14 -6.95,-4.38l2.73,-3.56c2.23,1.03 5.46,2.73 7.07,3.93l-2.85,4.01zm7.62,2.15c-0.91,1.32 -1.86,2.48 -2.81,3.52c-0.91,-0.87 -2.85,-2.36 -3.93,-3.02c2.98,-2.69 5.63,-6.99 7.07,-11.34l4.72,1.28c-0.41,0.99 -0.83,2.03 -1.32,3.06l18.08,0l0,4.22l-20.31,0c-0.46,0.74 -0.91,1.45 -1.41,2.15l17.95,0l0,3.97l-18.04,0l0,-3.84zm17.33,6.17c-0.08,10.05 -0.04,17.13 1.41,17.13c0.5,0 0.66,-2.23 0.7,-5.29c0.83,1.08 1.99,2.32 2.9,3.06c-0.33,4.67 -1.12,6.83 -3.97,6.87c-4.96,-0.04 -5.63,-6.87 -5.79,-17.5l-16.59,0l0,-4.3l19.28,0l0,0.04l2.06,0l0,-0.01z",
              }),
              i.createElement("path", {
                id: "svg_10",
                d: "m182.70999,29.24667l-16.26,0l0,13.65l-5.13,0l0,-13.65l-16.09,0l0,-5.01l16.09,0l0,-12.53l-13.94,0l0,-4.88l32.93,0l0,4.88l-13.86,0l0,12.53l16.26,0l0,5.01zm-28.3,-16.21c1.37,2.65 2.85,6.12 3.31,8.44l-4.8,1.49c-0.41,-2.19 -1.7,-5.83 -3.02,-8.6l4.51,-1.33zm15.35,8.6c1.32,-2.4 2.81,-6.04 3.6,-8.73l5.25,1.32c-1.49,3.19 -3.19,6.54 -4.55,8.65l-4.3,-1.24z",
              }),
              i.createElement("path", {
                id: "svg_11",
                d: "m212.48999,8.06667c3.81,3.56 8.73,8.65 10.88,12.12l-4.18,3.02c-0.54,-0.91 -1.28,-1.99 -2.15,-3.14c-21.97,1.08 -24.9,1.16 -27.09,1.9c-0.25,-0.99 -1.03,-3.43 -1.61,-4.72c1.08,-0.29 2.07,-1.08 3.43,-2.4c1.45,-1.28 5.96,-6.29 8.77,-11.25l4.96,2.11c-2.61,3.85 -5.87,7.53 -9.02,10.55l16.96,-0.54c-1.61,-1.82 -3.27,-3.56 -4.8,-5.09l3.85,-2.56zm-21.18,16.63l27.88,0l0,18.12l-5.29,0l0,-2.07l-17.54,0l0,2.11l-5.05,0l0,-18.16zm5.04,4.72l0,6.62l17.54,0l0,-6.62l-17.54,0z",
              }),
            ),
            i.createElement(
              "g",
              { id: "svg_12" },
              i.createElement("path", {
                id: "svg_13",
                d: "m224.05999,2.64667l-1.2,0l0,-0.43l2.92,0l0,0.43l-1.21,0l0,3.52l-0.52,0l0,-3.52l0.01,0z",
              }),
              i.createElement("path", {
                id: "svg_14",
                d: "m229.54999,4.42667c-0.03,-0.55 -0.06,-1.21 -0.06,-1.71l-0.02,0c-0.13,0.46 -0.3,0.96 -0.5,1.5l-0.7,1.92l-0.39,0l-0.64,-1.88c-0.19,-0.56 -0.35,-1.07 -0.46,-1.54l-0.01,0c-0.01,0.49 -0.04,1.15 -0.08,1.75l-0.11,1.69l-0.49,0l0.28,-3.95l0.65,0l0.67,1.91c0.16,0.49 0.3,0.92 0.4,1.33l0.02,0c0.1,-0.4 0.24,-0.83 0.42,-1.33l0.7,-1.91l0.65,0l0.25,3.95l-0.5,0l-0.08,-1.73z",
              }),
            ),
          );
        }
        function wt() {
          return i.createElement(
            pt,
            { alignItems: "center", justifyContent: "center" },
            i.createElement(G.t, null),
          );
        }
        n(25444);
        function yt(e) {
          return i.createElement(
            o.x_,
            { onEscKeypress: e.closeModal, bDisableBackgroundDismiss: !0 },
            i.createElement(Dt, {
              redirectURL: e.redirectURL,
              guestOption: e.guestOption,
            }),
          );
        }
        function Et() {
          (0, o.pg)(
            i.createElement(yt, {
              ownerWin: window,
              redirectURL: window.location.href,
            }),
            window,
            { strTitle: (0, r.we)("#Login_SignInTitle") },
          );
        }
        function Dt(e) {
          const { redirectURL: t, guestOption: n } = e,
            [o] = (0, i.useState)(
              new j.D(a.TS.WEBAPI_BASE_URL).GetAnonymousServiceTransport(),
            ),
            [r, s] = (0, i.useState)(!1);
          return i.createElement(
            "div",
            null,
            r
              ? i.createElement(Se, null)
              : i.createElement(
                  ve,
                  {
                    autoFocus: !0,
                    transport: o,
                    platform: 2,
                    onComplete: (e) => {
                      e == k.k_PrimaryDomainFail
                        ? s(!0)
                        : window.location.assign(t);
                    },
                    redirectUrl: t,
                    theme: "modal",
                  },
                  n && i.createElement(Fe, { redirectURL: t }),
                ),
          );
        }
      },
      45089: (e, t, n) => {
        "use strict";
        n.d(t, { $m: () => u, wt: () => i });
        var i,
          o,
          r = n(63696),
          a = n(75228),
          s = n(64506),
          l = n.n(s),
          c = n(77171);
        function m(e) {
          switch (e) {
            case o.Small:
              return l().SizeSmall;
            case o.Medium:
              return l().SizeMedium;
            case o.Large:
              return l().SizeLarge;
            default:
              return l().SizeMedium;
          }
        }
        function d(e) {
          switch (e) {
            case i.Knockout:
              return l().Knockout;
            case i.Light:
              return l().Light;
            case i.Dark:
              return l().Dark;
            default:
              return l().Light;
          }
        }
        function u(e) {
          const t = (0, c.A)(
              null != e.size ? m(e.size) : m(o.Medium),
              null != e.type ? d(e.type) : d(i.Light),
              e.additionalClassName,
            ),
            n = e.type == i.Knockout;
          switch (e.button) {
            case a.g4.A:
              return r.createElement(h, { bIsKnockout: n, className: t });
            case a.g4.B:
              return r.createElement(p, { bIsKnockout: n, className: t });
            case a.g4.X:
              return r.createElement(_, { bIsKnockout: n, className: t });
            case a.g4.Y:
              return r.createElement(g, { bIsKnockout: n, className: t });
            case a.g4.Left:
              return r.createElement(S, { bIsKnockout: n, className: t });
            case a.g4.Right:
              return r.createElement(v, { bIsKnockout: n, className: t });
            case a.g4.Up:
              return r.createElement(C, { bIsKnockout: n, className: t });
            case a.g4.Down:
              return r.createElement(f, { bIsKnockout: n, className: t });
            case a.g4.HomeMenu:
              return r.createElement(b, { bIsKnockout: n, className: t });
            case a.g4.QuickMenu:
              return r.createElement(I, { bIsKnockout: n, className: t });
            case a.g4.Select:
              return r.createElement(w, { bIsKnockout: n, className: t });
            case a.g4.Start:
              return r.createElement(y, { bIsKnockout: n, className: t });
            case a.g4.LeftBumper:
              return r.createElement(E, { bIsKnockout: n, className: t });
            case a.g4.RightBumper:
              return r.createElement(D, { bIsKnockout: n, className: t });
            case a.g4.LeftTrigger:
              return r.createElement(A, { bIsKnockout: n, className: t });
            case a.g4.RightTrigger:
              return r.createElement(T, { bIsKnockout: n, className: t });
            case a.g4.LeftStick:
              return r.createElement(L, { bIsKnockout: n, className: t });
            case a.g4.RightStick:
              return r.createElement(k, { bIsKnockout: n, className: t });
            case a.g4.LeftStickClick:
              return r.createElement(M, { bIsKnockout: n, className: t });
            case a.g4.RightStickClick:
              return r.createElement(R, { bIsKnockout: n, className: t });
            case a.g4.LeftTrackpad:
              return r.createElement(x, { bIsKnockout: n, className: t });
            case a.g4.RightTrackpad:
              return r.createElement(N, { bIsKnockout: n, className: t });
            case a.g4.LeftTrackpadClick:
              return r.createElement(O, { bIsKnockout: n, className: t });
            case a.g4.RightTrackpadClick:
              return r.createElement(V, { bIsKnockout: n, className: t });
            case a.g4.RearLeftUpper:
              return r.createElement(G, { bIsKnockout: n, className: t });
            case a.g4.RearRightUpper:
              return r.createElement(P, { bIsKnockout: n, className: t });
            case a.g4.RearLeftLower:
              return r.createElement(F, { bIsKnockout: n, className: t });
            case a.g4.RearRightLower:
              return r.createElement(B, { bIsKnockout: n, className: t });
            default:
              return r.createElement(U, { bIsKnockout: n, className: t });
          }
        }
        function h({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM21.2697 24H24.1317L19.2717 11.4H16.6077L11.8917 24H14.6457L15.4737 21.552H20.4057L21.2697 24ZM16.1937 19.446L17.9217 14.406L19.6857 19.446H16.1937Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  cx: "18",
                  cy: "18",
                  r: "18",
                  fill: "currentColor",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M24.1317 24H21.2697L20.4057 21.552H15.4737L14.6457 24H11.8917L16.6077 11.4H19.2717L24.1317 24ZM17.9217 14.406L16.1937 19.446H19.6857L17.9217 14.406Z",
                }),
              );
        }
        function p({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM23.173 20.382C23.173 18.81 22.369 17.778 20.761 17.286C21.349 16.974 21.775 16.584 22.039 16.116C22.303 15.648 22.435 15.132 22.435 14.568C22.435 13.56 22.081 12.78 21.373 12.228C20.665 11.676 19.573 11.4 18.097 11.4H13.435V24H18.601C19.993 24 21.103 23.682 21.931 23.046C22.759 22.41 23.173 21.522 23.173 20.382ZM16.117 16.674V13.596H17.881C19.165 13.596 19.807 14.082 19.807 15.054C19.807 15.57 19.645 15.972 19.321 16.26C18.997 16.536 18.535 16.674 17.935 16.674H16.117ZM19.843 21.372C19.507 21.672 19.003 21.822 18.331 21.822H16.117V18.582H18.403C19.039 18.582 19.525 18.72 19.861 18.996C20.197 19.26 20.365 19.656 20.365 20.184C20.365 20.676 20.191 21.072 19.843 21.372Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M20.761 17.286C22.369 17.778 23.173 18.81 23.173 20.382C23.173 21.522 22.759 22.41 21.931 23.046C21.103 23.682 19.993 24 18.601 24H13.435V11.4H18.097C19.573 11.4 20.665 11.676 21.373 12.228C22.081 12.78 22.435 13.56 22.435 14.568C22.435 15.132 22.303 15.648 22.039 16.116C21.775 16.584 21.349 16.974 20.761 17.286ZM16.117 13.596V16.674H17.935C18.535 16.674 18.997 16.536 19.321 16.26C19.645 15.972 19.807 15.57 19.807 15.054C19.807 14.082 19.165 13.596 17.881 13.596H16.117ZM18.331 21.822C19.003 21.822 19.507 21.672 19.843 21.372C20.191 21.072 20.365 20.676 20.365 20.184C20.365 19.656 20.197 19.26 19.861 18.996C19.525 18.72 19.039 18.582 18.403 18.582H16.117V21.822H18.331Z",
                }),
              );
        }
        function _({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  fill: "currentColor",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM23.7101 11.4H20.3621L17.8601 15.45L15.3581 11.4H12.1001L16.4021 17.484L11.9201 24H15.0881L17.9141 19.41L20.8661 24H24.1061L19.2821 17.394L23.7101 11.4Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M20.3621 11.4H23.7101L19.2821 17.394L24.1061 24H20.8661L17.9141 19.41L15.0881 24H11.9201L16.4021 17.484L12.1001 11.4H15.3581L17.8601 15.45L20.3621 11.4Z",
                }),
              );
        }
        function g({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  fill: "currentColor",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM16.69 24H19.318V18.996L23.71 11.4H20.848L18.094 16.44L15.358 11.4H12.298L16.69 18.978V24Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  cx: "18",
                  cy: "18",
                  r: "18",
                  fill: "currentColor",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M19.318 24H16.69V18.978L12.298 11.4H15.358L18.094 16.44L20.848 11.4H23.71L19.318 18.996V24Z",
                }),
              );
        }
        function C({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM25 20.1998L19.5555 14.7554V27.1998H16.4444V14.7554L11 20.1998L8.66663 17.8665L18 8.66661L27.3333 17.8665L25 20.1998Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M19.5555 14.7554L25 20.1998L27.3333 17.8665L18 8.66661L8.66663 17.8665L11 20.1998L16.4444 14.7554V27.1998H19.5555V14.7554Z",
                }),
              );
        }
        function f({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM10.9999 15.6666L16.4444 21.1111L16.4444 8.66663H19.5555L19.5555 21.1111L24.9999 15.6666L27.3333 18L17.9999 27.1998L8.66659 18L10.9999 15.6666Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M16.4444 21.1111L10.9999 15.6666L8.66659 18L17.9999 27.1998L27.3333 18L24.9999 15.6666L19.5555 21.1111L19.5555 8.66663L16.4444 8.66663L16.4444 21.1111Z",
                }),
              );
        }
        function S({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM20.2664 10.9332L14.8219 16.3777H27.2664V19.4888H14.8219L20.2664 24.9332L17.933 27.2665L8.73314 17.9332L17.933 8.59988L20.2664 10.9332Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M14.8219 16.3777L20.2664 10.9333L17.933 8.59994L8.73314 17.9332L17.933 27.2666L20.2664 24.9333L14.8219 19.4888L27.2664 19.4888L27.2664 16.3777L14.8219 16.3777Z",
                }),
              );
        }
        function v({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM15.7332 24.9332L21.1776 19.4888H8.73315V16.3777H21.1776L15.7332 10.9332L18.0665 8.59991L27.2664 17.9333L18.0665 27.2666L15.7332 24.9332Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M21.1776 19.4887L15.7332 24.9332L18.0665 27.2665L27.2664 17.9332L18.0665 8.59985L15.7332 10.9332L21.1776 16.3776L8.73315 16.3776L8.73315 19.4887L21.1776 19.4887Z",
                }),
              );
        }
        function b({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 100 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  fill: "currentColor",
                  d: "M18 0C8.05888 0 0 8.05888 0 18C0 27.9411 8.05888 36 18 36H82C91.9411 36 100 27.9411 100 18C100 8.05888 91.9411 0 82 0H18ZM21.8011 11.5C22.6531 11.5 23.4391 11.62 24.1591 11.86C24.8791 12.1 25.4851 12.394 25.9771 12.742L24.8611 14.722C24.4171 14.41 23.9191 14.158 23.3671 13.966C22.8271 13.774 22.3111 13.678 21.8191 13.678C21.2191 13.678 20.7511 13.804 20.4151 14.056C20.0791 14.296 19.9111 14.632 19.9111 15.064C19.9111 15.496 20.1091 15.838 20.5051 16.09C20.9011 16.33 21.5071 16.594 22.3231 16.882C23.1631 17.182 23.8351 17.458 24.3391 17.71C24.8431 17.962 25.2811 18.334 25.6531 18.826C26.0371 19.306 26.2291 19.924 26.2291 20.68C26.2291 21.484 26.0191 22.18 25.5991 22.768C25.1911 23.356 24.6151 23.812 23.8711 24.136C23.1271 24.448 22.2751 24.604 21.3151 24.604C20.5351 24.604 19.7371 24.502 18.9211 24.298C18.1171 24.082 17.4091 23.794 16.7971 23.434L17.6251 21.238C18.2011 21.55 18.8071 21.802 19.4431 21.994C20.0911 22.174 20.7271 22.264 21.3511 22.264C22.0351 22.264 22.5451 22.132 22.8811 21.868C23.2291 21.604 23.4031 21.256 23.4031 20.824C23.4031 20.392 23.2171 20.056 22.8451 19.816C22.4731 19.576 21.9031 19.33 21.1351 19.078C20.2711 18.802 19.5751 18.538 19.0471 18.286C18.5191 18.022 18.0631 17.644 17.6791 17.152C17.3071 16.648 17.1211 15.994 17.1211 15.19C17.1211 14.446 17.3131 13.798 17.6971 13.246C18.0931 12.682 18.6451 12.25 19.3531 11.95C20.0611 11.65 20.8771 11.5 21.8011 11.5ZM35.2486 24.388H32.6026V14.056H28.7866V11.788H39.0646V14.056H35.2486V24.388ZM50.8108 11.788H42.3148V24.388H50.8108V22.102H44.9608V19.15H50.0008V16.882H44.9608V14.038H50.8108V11.788ZM65.8582 24.388H62.9962L62.1322 21.94H57.2002L56.3722 24.388H53.6182L58.3342 11.788H60.9982L65.8582 24.388ZM59.6482 14.794L57.9202 19.834H61.4122L59.6482 14.794ZM79.7729 11.788L75.8489 20.734L71.6009 11.788H69.0629V24.388H71.4749V16.468L74.9309 24.028H76.5329L79.9169 16.378V24.388H82.4549V11.788H79.7729Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 100 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 18C0 8.05888 8.05888 0 18 0H82C91.9411 0 100 8.05888 100 18C100 27.9411 91.9411 36 82 36H18C8.05888 36 0 27.9411 0 18Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M21.8011 11.5C22.6531 11.5 23.4391 11.62 24.1591 11.86C24.8791 12.1 25.4851 12.394 25.9771 12.742L24.8611 14.722C24.4171 14.41 23.9191 14.158 23.3671 13.966C22.8271 13.774 22.3111 13.678 21.8191 13.678C21.2191 13.678 20.7511 13.804 20.4151 14.056C20.0791 14.296 19.9111 14.632 19.9111 15.064C19.9111 15.496 20.1091 15.838 20.5051 16.09C20.9011 16.33 21.5071 16.594 22.3231 16.882C23.1631 17.182 23.8351 17.458 24.3391 17.71C24.8431 17.962 25.2811 18.334 25.6531 18.826C26.0371 19.306 26.2291 19.924 26.2291 20.68C26.2291 21.484 26.0191 22.18 25.5991 22.768C25.1911 23.356 24.6151 23.812 23.8711 24.136C23.1271 24.448 22.2751 24.604 21.3151 24.604C20.5351 24.604 19.7371 24.502 18.9211 24.298C18.1171 24.082 17.4091 23.794 16.7971 23.434L17.6251 21.238C18.2011 21.55 18.8071 21.802 19.4431 21.994C20.0911 22.174 20.7271 22.264 21.3511 22.264C22.0351 22.264 22.5451 22.132 22.8811 21.868C23.2291 21.604 23.4031 21.256 23.4031 20.824C23.4031 20.392 23.2171 20.056 22.8451 19.816C22.4731 19.576 21.9031 19.33 21.1351 19.078C20.2711 18.802 19.5751 18.538 19.0471 18.286C18.5191 18.022 18.0631 17.644 17.6791 17.152C17.3071 16.648 17.1211 15.994 17.1211 15.19C17.1211 14.446 17.3131 13.798 17.6971 13.246C18.0931 12.682 18.6451 12.25 19.3531 11.95C20.0611 11.65 20.8771 11.5 21.8011 11.5Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M35.2486 24.388H32.6026V14.056H28.7866V11.788H39.0646V14.056H35.2486V24.388Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M42.3148 11.788H50.8108V14.038H44.9608V16.882H50.0008V19.15H44.9608V22.102H50.8108V24.388H42.3148V11.788Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M65.8582 24.388H62.9962L62.1322 21.94H57.2002L56.3722 24.388H53.6182L58.3342 11.788H60.9982L65.8582 24.388ZM59.6482 14.794L57.9202 19.834H61.4122L59.6482 14.794Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M75.8489 20.734L79.7729 11.788H82.4549V24.388H79.9169V16.378L76.5329 24.028H74.9309L71.4749 16.468V24.388H69.0629V11.788H71.6009L75.8489 20.734Z",
                }),
              );
        }
        function I({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 81 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 0C8.05888 0 0 8.05888 0 18C0 27.9411 8.05888 36 18 36H61C70.9411 36 79 27.9411 79 18C79 8.05888 70.9411 0 61 0H18ZM21.5 22.5C23.9853 22.5 26 20.4853 26 18C26 15.5147 23.9853 13.5 21.5 13.5C19.0147 13.5 17 15.5147 17 18C17 20.4853 19.0147 22.5 21.5 22.5ZM44 18C44 20.4853 41.9853 22.5 39.5 22.5C37.0147 22.5 35 20.4853 35 18C35 15.5147 37.0147 13.5 39.5 13.5C41.9853 13.5 44 15.5147 44 18ZM57.5 22.5C59.9853 22.5 62 20.4853 62 18C62 15.5147 59.9853 13.5 57.5 13.5C55.0147 13.5 53 15.5147 53 18C53 20.4853 55.0147 22.5 57.5 22.5Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 81 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 18C0 8.05888 8.05888 0 18 0H61C70.9411 0 79 8.05888 79 18C79 27.9411 70.9411 36 61 36H18C8.05888 36 0 27.9411 0 18Z",
                }),
                r.createElement("circle", {
                  className: l().Foreground,
                  fill: "currentColor",
                  cx: "21.5",
                  cy: "18",
                  r: "4.5",
                }),
                r.createElement("circle", {
                  className: l().Foreground,
                  fill: "currentColor",
                  cx: "39.5",
                  cy: "18",
                  r: "4.5",
                }),
                r.createElement("circle", {
                  className: l().Foreground,
                  fill: "currentColor",
                  cx: "57.5",
                  cy: "18",
                  r: "4.5",
                }),
              );
        }
        function w({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 48 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M12 6C5.37258 6 0 11.3726 0 18C0 24.6274 5.37258 30 12 30H36C42.6274 30 48 24.6274 48 18C48 11.3726 42.6274 6 36 6H12ZM31 11H17V25H31V11Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 48 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("rect", {
                  className: l().Background,
                  fill: "currentColor",
                  y: "6",
                  width: "48",
                  height: "24",
                  rx: "12",
                }),
                r.createElement("rect", {
                  className: l().Foreground,
                  fill: "currentColor",
                  x: "17",
                  y: "11",
                  width: "14",
                  height: "14",
                }),
              );
        }
        function y({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 48 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M12 6C5.37258 6 0 11.3726 0 18C0 24.6274 5.37258 30 12 30H36C42.6274 30 48 24.6274 48 18C48 11.3726 42.6274 6 36 6H12ZM31 11H17V13.8H31V11ZM17 22.2H31V25H17V22.2ZM31 16.6H17V19.4H31V16.6Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 48 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("rect", {
                  className: l().Background,
                  fill: "currentColor",
                  y: "6",
                  width: "48",
                  height: "24",
                  rx: "12",
                }),
                r.createElement("rect", {
                  className: l().Foreground,
                  fill: "currentColor",
                  x: "17",
                  y: "11",
                  width: "14",
                  height: "2.8",
                }),
                r.createElement("rect", {
                  className: l().Foreground,
                  fill: "currentColor",
                  x: "17",
                  y: "22.2",
                  width: "14",
                  height: "2.8",
                }),
                r.createElement("rect", {
                  className: l().Foreground,
                  fill: "currentColor",
                  x: "17",
                  y: "16.6",
                  width: "14",
                  height: "2.8",
                }),
              );
        }
        function E({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M7.5 0C3.35786 0 0 4.47715 0 10V30C0 31.1046 0.671574 32 1.5 32H34.5C35.3284 32 36 31.1046 36 30V2C36 0.895431 35.3284 0 34.5 0H7.5ZM9.36182 23H17.8218V20.624H12.0078V10.4H9.36182V23ZM25.7635 20.714V10.4H23.7296L19.5896 12.452L20.4356 14.432L23.0816 13.316V20.714H20.1115V23H28.1576V20.714H25.7635Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 10C0 4.47715 3.35786 0 7.5 0H34.5C35.3284 0 36 0.895431 36 2V30C36 31.1046 35.3284 32 34.5 32H1.5C0.671574 32 0 31.1046 0 30V10Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.8218 23H9.36182V10.4H12.0078V20.624H17.8218V23Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M25.7635 10.4V20.714H28.1576V23H20.1116V20.714H23.0816V13.316L20.4356 14.432L19.5896 12.452L23.7296 10.4H25.7635Z",
                }),
              );
        }
        function D({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M28.5 0C32.6421 0 36 4.47715 36 10V30C36 31.1046 35.3284 32 34.5 32H1.5C0.671573 32 0 31.1046 0 30V2C0 0.895431 0.671573 0 1.5 0H28.5ZM15.8185 23H18.7525L15.7825 18.23C16.5505 17.894 17.1445 17.402 17.5645 16.754C17.9965 16.106 18.2125 15.296 18.2125 14.324C18.2125 13.088 17.8045 12.128 16.9885 11.444C16.1725 10.748 14.9005 10.4 13.1725 10.4H8.45654V23H11.1025V18.752H12.9745H13.2805L15.8185 23ZM11.1025 16.484V12.65H13.0105C13.8385 12.65 14.4385 12.806 14.8105 13.118C15.1945 13.418 15.3865 13.874 15.3865 14.486C15.3865 15.11 15.1885 15.602 14.7925 15.962C14.4085 16.31 13.8685 16.484 13.1725 16.484H11.1025ZM26.6688 20.714V10.4H24.6348L20.4948 12.452L21.3408 14.432L23.9868 13.316V20.714H21.0168V23H29.0628V20.714H26.6688Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M36 10C36 4.47715 32.6421 0 28.5 0H1.5C0.671574 0 0 0.895431 0 2V30C0 31.1046 0.671574 32 1.5 32H34.5C35.3284 32 36 31.1046 36 30V10Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M18.7525 23H15.8185L13.2805 18.752H12.9745H11.1025V23H8.45654V10.4H13.1725C14.9005 10.4 16.1725 10.748 16.9885 11.444C17.8045 12.128 18.2125 13.088 18.2125 14.324C18.2125 15.296 17.9965 16.106 17.5645 16.754C17.1445 17.402 16.5505 17.894 15.7825 18.23L18.7525 23ZM11.1025 12.65V16.484H13.1725C13.8685 16.484 14.4085 16.31 14.7925 15.962C15.1885 15.602 15.3865 15.11 15.3865 14.486C15.3865 13.874 15.1945 13.418 14.8105 13.118C14.4385 12.806 13.8385 12.65 13.0105 12.65H11.1025Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M26.6688 10.4V20.714H29.0628V23H21.0168V20.714H23.9868V13.316L21.3408 14.432L20.4948 12.452L24.6348 10.4H26.6688Z",
                }),
              );
        }
        function A({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M7.5 32C3.35786 32 0 27.5228 0 22V2C0 0.895431 0.671574 0 1.5 0H34.5C35.3284 0 36 0.895431 36 2V30C36 31.1046 35.3284 32 34.5 32H7.5ZM29.0743 20.714H23.0083L25.6183 18.554C26.6623 17.69 27.4363 16.91 27.9403 16.214C28.4443 15.506 28.6963 14.72 28.6963 13.856C28.6963 12.68 28.2583 11.774 27.3823 11.138C26.5063 10.502 25.3423 10.184 23.8903 10.184C23.0743 10.184 22.3063 10.298 21.5863 10.526C20.8783 10.754 20.2483 11.06 19.6963 11.444L20.5963 13.388C20.9683 13.136 21.4003 12.926 21.8923 12.758C22.3963 12.59 22.9123 12.506 23.4403 12.506C24.1483 12.506 24.7243 12.668 25.1683 12.992C25.6243 13.304 25.8523 13.772 25.8523 14.396C25.8523 14.78 25.7623 15.134 25.5823 15.458C25.4023 15.782 25.1623 16.088 24.8623 16.376C24.5743 16.664 24.1543 17.042 23.6023 17.51L23.2963 17.78L19.6603 20.804V23H29.0743V20.714ZM9.32458 23H17.7846V20.624H11.9706V10.4H9.32458V23Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 22C0 27.5228 3.35786 32 7.5 32H34.5C35.3284 32 36 31.1046 36 30V2C36 0.895432 35.3284 0 34.5 0H1.5C0.671574 0 0 0.895432 0 2V22Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.7846 23H9.32458V10.4H11.9706V20.624H17.7846V23Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.0083 20.714H29.0743V23H19.6603V20.804L23.2963 17.78L23.6023 17.51C24.1543 17.042 24.5743 16.664 24.8623 16.376C25.1623 16.088 25.4023 15.782 25.5823 15.458C25.7623 15.134 25.8523 14.78 25.8523 14.396C25.8523 13.772 25.6243 13.304 25.1683 12.992C24.7243 12.668 24.1483 12.506 23.4403 12.506C22.9123 12.506 22.3963 12.59 21.8923 12.758C21.4003 12.926 20.9683 13.136 20.5963 13.388L19.6963 11.444C20.2483 11.06 20.8783 10.754 21.5863 10.526C22.3063 10.298 23.0743 10.184 23.8903 10.184C25.3423 10.184 26.5063 10.502 27.3823 11.138C28.2583 11.774 28.6963 12.68 28.6963 13.856C28.6963 14.72 28.4443 15.506 27.9403 16.214C27.4363 16.91 26.6623 17.69 25.6183 18.554L23.0083 20.714Z",
                }),
              );
        }
        function T({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M28.5 32C32.6421 32 36 27.5228 36 22V2C36 0.895431 35.3284 0 34.5 0H1.5C0.671573 0 0 0.895431 0 2V30C0 31.1046 0.671573 32 1.5 32H28.5ZM28.9796 20.714H22.9136L25.5236 18.554C26.5676 17.69 27.3416 16.91 27.8456 16.214C28.3496 15.506 28.6016 14.72 28.6016 13.856C28.6016 12.68 28.1636 11.774 27.2876 11.138C26.4116 10.502 25.2476 10.184 23.7956 10.184C22.9796 10.184 22.2116 10.298 21.4916 10.526C20.7836 10.754 20.1536 11.06 19.6016 11.444L20.5016 13.388C20.8736 13.136 21.3056 12.926 21.7976 12.758C22.3016 12.59 22.8176 12.506 23.3456 12.506C24.0536 12.506 24.6296 12.668 25.0736 12.992C25.5296 13.304 25.7576 13.772 25.7576 14.396C25.7576 14.78 25.6676 15.134 25.4876 15.458C25.3076 15.782 25.0676 16.088 24.7676 16.376C24.4796 16.664 24.0596 17.042 23.5076 17.51L23.2016 17.78L19.5656 20.804V23H28.9796V20.714ZM14.7813 23H17.7153L14.7453 18.23C15.5133 17.894 16.1073 17.402 16.5273 16.754C16.9593 16.106 17.1753 15.296 17.1753 14.324C17.1753 13.088 16.7673 12.128 15.9513 11.444C15.1353 10.748 13.8633 10.4 12.1353 10.4H7.41931V23H10.0653V18.752H11.9373H12.2433L14.7813 23ZM10.0653 16.484V12.65H11.9733C12.8013 12.65 13.4013 12.806 13.7733 13.118C14.1573 13.418 14.3493 13.874 14.3493 14.486C14.3493 15.11 14.1513 15.602 13.7553 15.962C13.3713 16.31 12.8313 16.484 12.1353 16.484H10.0653Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 32",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M36 22C36 27.5228 32.6421 32 28.5 32H1.5C0.671574 32 0 31.1046 0 30V2C0 0.895432 0.671574 0 1.5 0H34.5C35.3284 0 36 0.895432 36 2V22Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.7153 23H14.7813L12.2433 18.752H11.9373H10.0653V23H7.41931V10.4H12.1353C13.8633 10.4 15.1353 10.748 15.9513 11.444C16.7673 12.128 17.1753 13.088 17.1753 14.324C17.1753 15.296 16.9593 16.106 16.5273 16.754C16.1073 17.402 15.5133 17.894 14.7453 18.23L17.7153 23ZM10.0653 12.65V16.484H12.1353C12.8313 16.484 13.3713 16.31 13.7553 15.962C14.1513 15.602 14.3493 15.11 14.3493 14.486C14.3493 13.874 14.1573 13.418 13.7733 13.118C13.4013 12.806 12.8013 12.65 11.9733 12.65H10.0653Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M22.9136 20.714H28.9796V23H19.5656V20.804L23.2016 17.78L23.5076 17.51C24.0596 17.042 24.4796 16.664 24.7676 16.376C25.0676 16.088 25.3076 15.782 25.4876 15.458C25.6676 15.134 25.7576 14.78 25.7576 14.396C25.7576 13.772 25.5296 13.304 25.0736 12.992C24.6296 12.668 24.0536 12.506 23.3456 12.506C22.8176 12.506 22.3016 12.59 21.7976 12.758C21.3056 12.926 20.8736 13.136 20.5016 13.388L19.6016 11.444C20.1536 11.06 20.7836 10.754 21.4916 10.526C22.2116 10.298 22.9796 10.184 23.7956 10.184C25.2476 10.184 26.4116 10.502 27.2876 11.138C28.1636 11.774 28.6016 12.68 28.6016 13.856C28.6016 14.72 28.3496 15.506 27.8456 16.214C27.3416 16.91 26.5676 17.69 25.5236 18.554L22.9136 20.714Z",
                }),
              );
        }
        function M({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M11 32V33.601C11 34.926 12.0446 36 13.3333 36H22.6667C23.9554 36 25 34.926 25 33.601V32C22.7984 32.523 20.4394 32.8029 18 32.8029C15.5606 32.8029 13.2016 32.523 11 32Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M23.1111 0H12L17.5556 5.625L23.1111 0Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 30.75C27.9411 30.75 36 25.7132 36 19.5C36 13.2868 27.9411 8.25 18 8.25C8.05887 8.25 0 13.2868 0 19.5C0 25.7132 8.05887 30.75 18 30.75ZM25.4679 14.284C24.7852 13.7613 23.7879 13.5 22.4759 13.5C21.6972 13.5 20.9666 13.6173 20.2839 13.852C19.6119 14.0867 19.0092 14.4227 18.4759 14.86L19.4679 16.364C19.8199 16.0973 20.2146 15.8893 20.6519 15.74C21.0999 15.58 21.5639 15.5 22.0439 15.5C22.6732 15.5 23.1639 15.6227 23.5159 15.868C23.8786 16.1133 24.0599 16.4387 24.0599 16.844C24.0599 17.2813 23.8679 17.6227 23.4839 17.868C23.1106 18.1027 22.6146 18.22 21.9959 18.22H20.6999V19.996H22.1399C23.7079 19.996 24.4919 20.508 24.4919 21.532C24.4919 22.0547 24.2839 22.4653 23.8679 22.764C23.4626 23.0627 22.8972 23.212 22.1719 23.212C21.0306 23.212 20.0439 22.876 19.2119 22.204L18.2039 23.932C18.7052 24.3373 19.3186 24.652 20.0439 24.876C20.7799 25.1 21.5532 25.212 22.3639 25.212C23.2172 25.212 23.9959 25.068 24.6999 24.78C25.4039 24.4813 25.9586 24.0653 26.3639 23.532C26.7692 22.988 26.9719 22.364 26.9719 21.66C26.9719 20.892 26.7479 20.2787 26.2999 19.82C25.8626 19.3507 25.2866 19.0413 24.5719 18.892V18.844C25.1799 18.6093 25.6492 18.2733 25.9799 17.836C26.3212 17.388 26.4919 16.8813 26.4919 16.316C26.4919 15.484 26.1506 14.8067 25.4679 14.284ZM9.48901 24.956H17.009V22.844H11.841V13.756H9.48901V24.956Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("ellipse", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "19.5",
                  rx: "18",
                  ry: "11.25",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M11 32V33.601C11 34.926 12.0446 36 13.3333 36H22.6667C23.9554 36 25 34.926 25 33.601V32C22.7984 32.523 20.4394 32.8029 18 32.8029C15.5606 32.8029 13.2016 32.523 11 32Z",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M23.1111 0H12L17.5556 5.625L23.1111 0Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.009 24.956H9.48901V13.756H11.841V22.844H17.009V24.956Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M22.4759 13.5C23.7879 13.5 24.7852 13.7613 25.4679 14.284C26.1506 14.8067 26.4919 15.484 26.4919 16.316C26.4919 16.8813 26.3212 17.388 25.9799 17.836C25.6492 18.2733 25.1799 18.6093 24.5719 18.844V18.892C25.2866 19.0413 25.8626 19.3507 26.2999 19.82C26.7479 20.2787 26.9719 20.892 26.9719 21.66C26.9719 22.364 26.7692 22.988 26.3639 23.532C25.9586 24.0653 25.4039 24.4813 24.6999 24.78C23.9959 25.068 23.2172 25.212 22.3639 25.212C21.5532 25.212 20.7799 25.1 20.0439 24.876C19.3186 24.652 18.7052 24.3373 18.2039 23.932L19.2119 22.204C20.0439 22.876 21.0306 23.212 22.1719 23.212C22.8972 23.212 23.4626 23.0627 23.8679 22.764C24.2839 22.4653 24.4919 22.0547 24.4919 21.532C24.4919 20.508 23.7079 19.996 22.1399 19.996H20.6999V18.22H21.9959C22.6146 18.22 23.1106 18.1027 23.4839 17.868C23.8679 17.6227 24.0599 17.2813 24.0599 16.844C24.0599 16.4387 23.8786 16.1133 23.5159 15.868C23.1639 15.6227 22.6732 15.5 22.0439 15.5C21.5639 15.5 21.0999 15.58 20.6519 15.74C20.2146 15.8893 19.8199 16.0973 19.4679 16.364L18.4759 14.86C19.0092 14.4227 19.6119 14.0867 20.2839 13.852C20.9666 13.6173 21.6972 13.5 22.4759 13.5Z",
                }),
              );
        }
        function R({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M11 32V33.601C11 34.926 12.0446 36 13.3333 36H22.6667C23.9554 36 25 34.926 25 33.601V32C22.7984 32.523 20.4394 32.8029 18 32.8029C15.5606 32.8029 13.2016 32.523 11 32Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M23.1111 0H12L17.5556 5.625L23.1111 0Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 30.75C27.9411 30.75 36 25.7132 36 19.5C36 13.2868 27.9411 8.25 18 8.25C8.05887 8.25 0 13.2868 0 19.5C0 25.7132 8.05887 30.75 18 30.75ZM26.5882 14.284C25.9056 13.7613 24.9082 13.5 23.5962 13.5C22.8176 13.5 22.0869 13.6173 21.4043 13.852C20.7323 14.0867 20.1296 14.4227 19.5963 14.86L20.5882 16.364C20.9403 16.0973 21.3349 15.8893 21.7723 15.74C22.2202 15.58 22.6842 15.5 23.1642 15.5C23.7936 15.5 24.2843 15.6227 24.6362 15.868C24.9989 16.1133 25.1803 16.4387 25.1803 16.844C25.1803 17.2813 24.9883 17.6227 24.6043 17.868C24.2309 18.1027 23.7349 18.22 23.1162 18.22H21.8203V19.996H23.2603C24.8283 19.996 25.6122 20.508 25.6122 21.532C25.6122 22.0547 25.4042 22.4653 24.9883 22.764C24.5829 23.0627 24.0176 23.212 23.2923 23.212C22.1509 23.212 21.1643 22.876 20.3323 22.204L19.3242 23.932C19.8256 24.3373 20.4389 24.652 21.1642 24.876C21.9002 25.1 22.6736 25.212 23.4842 25.212C24.3376 25.212 25.1162 25.068 25.8202 24.78C26.5243 24.4813 27.0789 24.0653 27.4842 23.532C27.8896 22.988 28.0923 22.364 28.0923 21.66C28.0923 20.892 27.8682 20.2787 27.4202 19.82C26.9829 19.3507 26.4069 19.0413 25.6922 18.892V18.844C26.3002 18.6093 26.7696 18.2733 27.1003 17.836C27.4416 17.388 27.6122 16.8813 27.6122 16.316C27.6122 15.484 27.2709 14.8067 26.5882 14.284ZM15.544 24.956H18.152L15.512 20.716C16.1947 20.4173 16.7227 19.98 17.096 19.404C17.48 18.828 17.672 18.108 17.672 17.244C17.672 16.1453 17.3093 15.292 16.584 14.684C15.8587 14.0653 14.728 13.756 13.192 13.756H9V24.956H11.352V21.18H13.016H13.288L15.544 24.956ZM11.352 19.164V15.756H13.048C13.784 15.756 14.3173 15.8947 14.648 16.172C14.9893 16.4387 15.16 16.844 15.16 17.388C15.16 17.9427 14.984 18.38 14.632 18.7C14.2907 19.0093 13.8107 19.164 13.192 19.164H11.352Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("ellipse", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "19.5",
                  rx: "18",
                  ry: "11.25",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M11 32V33.601C11 34.926 12.0446 36 13.3333 36H22.6667C23.9554 36 25 34.926 25 33.601V32C22.7984 32.523 20.4394 32.8029 18 32.8029C15.5606 32.8029 13.2016 32.523 11 32Z",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M23.1111 0H12L17.5556 5.625L23.1111 0Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M18.152 24.956H15.544L13.288 21.18H13.016H11.352V24.956H9V13.756H13.192C14.728 13.756 15.8587 14.0653 16.584 14.684C17.3093 15.292 17.672 16.1453 17.672 17.244C17.672 18.108 17.48 18.828 17.096 19.404C16.7227 19.98 16.1947 20.4173 15.512 20.716L18.152 24.956ZM11.352 15.756V19.164H13.192C13.8107 19.164 14.2907 19.0093 14.632 18.7C14.984 18.38 15.16 17.9427 15.16 17.388C15.16 16.844 14.9893 16.4387 14.648 16.172C14.3173 15.8947 13.784 15.756 13.048 15.756H11.352Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.5962 13.5C24.9082 13.5 25.9056 13.7613 26.5882 14.284C27.2709 14.8067 27.6122 15.484 27.6122 16.316C27.6122 16.8813 27.4416 17.388 27.1003 17.836C26.7696 18.2733 26.3002 18.6093 25.6922 18.844V18.892C26.4069 19.0413 26.9829 19.3507 27.4202 19.82C27.8682 20.2787 28.0923 20.892 28.0923 21.66C28.0923 22.364 27.8896 22.988 27.4842 23.532C27.0789 24.0653 26.5243 24.4813 25.8202 24.78C25.1162 25.068 24.3376 25.212 23.4843 25.212C22.6736 25.212 21.9003 25.1 21.1643 24.876C20.4389 24.652 19.8256 24.3373 19.3243 23.932L20.3323 22.204C21.1643 22.876 22.1509 23.212 23.2923 23.212C24.0176 23.212 24.5829 23.0627 24.9882 22.764C25.4042 22.4653 25.6122 22.0547 25.6122 21.532C25.6122 20.508 24.8283 19.996 23.2603 19.996H21.8203V18.22H23.1163C23.7349 18.22 24.2309 18.1027 24.6043 17.868C24.9883 17.6227 25.1803 17.2813 25.1803 16.844C25.1803 16.4387 24.9989 16.1133 24.6363 15.868C24.2843 15.6227 23.7936 15.5 23.1643 15.5C22.6842 15.5 22.2203 15.58 21.7723 15.74C21.3349 15.8893 20.9403 16.0973 20.5883 16.364L19.5963 14.86C20.1296 14.4227 20.7323 14.0867 21.4043 13.852C22.0869 13.6173 22.8176 13.5 23.5962 13.5Z",
                }),
              );
        }
        function k({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 24.75C27.9411 24.75 36 19.7132 36 13.5C36 7.2868 27.9411 2.25 18 2.25C8.05887 2.25 0 7.2868 0 13.5C0 19.7132 8.05887 24.75 18 24.75ZM20.8833 18.9875H23.6775L20.849 14.4447C21.5804 14.1247 22.1461 13.6561 22.5461 13.039C22.9575 12.4218 23.1633 11.6504 23.1633 10.7247C23.1633 9.54755 22.7747 8.63326 21.9975 7.98183C21.2204 7.31898 20.009 6.98755 18.3633 6.98755H13.8718V18.9875H16.3918V14.9418H18.1747H18.4661L20.8833 18.9875ZM16.3918 12.7818V9.13041H18.209C18.9975 9.13041 19.569 9.27898 19.9233 9.57612C20.289 9.86183 20.4718 10.2961 20.4718 10.879C20.4718 11.4733 20.2833 11.9418 19.9061 12.2847C19.5404 12.6161 19.0261 12.7818 18.3633 12.7818H16.3918Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M11 26V31.601C11 32.926 12.0446 34 13.3333 34H22.6667C23.9554 34 25 32.926 25 31.601V26C22.7984 26.523 20.4394 26.8029 18 26.8029C15.5606 26.8029 13.2016 26.523 11 26Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("ellipse", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "13.5",
                  rx: "18",
                  ry: "11.25",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.6775 18.9875H20.8833L18.4661 14.9418H18.1747H16.3918V18.9875H13.8718V6.98755H18.3633C20.009 6.98755 21.2204 7.31898 21.9975 7.98184C22.7747 8.63326 23.1633 9.54755 23.1633 10.7247C23.1633 11.6504 22.9575 12.4218 22.5461 13.039C22.1461 13.6561 21.5804 14.1247 20.849 14.4447L23.6775 18.9875ZM16.3918 9.13041V12.7818H18.3633C19.0261 12.7818 19.5404 12.6161 19.9061 12.2847C20.2833 11.9418 20.4718 11.4733 20.4718 10.879C20.4718 10.2961 20.289 9.86183 19.9233 9.57612C19.569 9.27898 18.9975 9.13041 18.209 9.13041H16.3918Z",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M11 26V31.601C11 32.926 12.0446 34 13.3333 34H22.6667C23.9554 34 25 32.926 25 31.601V26C22.7984 26.523 20.4394 26.8029 18 26.8029C15.5606 26.8029 13.2016 26.523 11 26Z",
                }),
              );
        }
        function L({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M18 24.75C27.9411 24.75 36 19.7132 36 13.5C36 7.2868 27.9411 2.25 18 2.25C8.05887 2.25 0 7.2868 0 13.5C0 19.7132 8.05887 24.75 18 24.75ZM14 19H23V16.7371H16.8149V7H14V19Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M11 26V31.601C11 32.926 12.0446 34 13.3333 34H22.6667C23.9554 34 25 32.926 25 31.601V26C22.7984 26.523 20.4394 26.8029 18 26.8029C15.5606 26.8029 13.2016 26.523 11 26Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("ellipse", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "13.5",
                  rx: "18",
                  ry: "11.25",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23 19H14V7H16.8149V16.7371H23V19Z",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M11 26V31.601C11 32.926 12.0446 34 13.3333 34H22.6667C23.9554 34 25 32.926 25 31.601V26C22.7984 26.523 20.4394 26.8029 18 26.8029C15.5606 26.8029 13.2016 26.523 11 26Z",
                }),
              );
        }
        function G({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M2 0C0.895431 0 0 0.895431 0 2V34C0 35.1046 0.895431 36 2 36H34C35.1046 36 36 35.1046 36 34V2C36 0.895431 35.1046 0 34 0H2ZM8.62341 24.75H17.0834V22.374H11.2694V12.15H8.62341V24.75ZM27.3111 19.854V12.15H24.8631L18.6891 20.16V21.888H24.6291V24.75H27.3111V21.888H29.1291V19.854H27.3111ZM21.2631 19.854L24.7371 15.3V19.854H21.2631Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 2C0 0.895431 0.895431 0 2 0H34C35.1046 0 36 0.895431 36 2V34C36 35.1046 35.1046 36 34 36H2C0.895431 36 0 35.1046 0 34V2Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.0834 24.75H8.62341V12.15H11.2694V22.374H17.0834V24.75Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M27.3111 12.15V19.854H29.1291V21.888H27.3111V24.75H24.6291V21.888H18.6891V20.16L24.8631 12.15H27.3111ZM24.7371 15.3L21.2631 19.854H24.7371V15.3Z",
                }),
              );
        }
        function F({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M2 0C0.895431 0 0 0.895431 0 2V34C0 35.1046 0.895431 36 2 36H34C35.1046 36 36 35.1046 36 34V2C36 0.895431 35.1046 0 34 0H2ZM8.23669 24.75H16.6967V22.374H10.8827V12.15H8.23669V24.75ZM27.3744 14.4V12.15H19.3284V18.648L21.0024 19.566C21.3744 19.266 21.7524 19.044 22.1364 18.9C22.5204 18.744 22.9404 18.666 23.3964 18.666C24.0084 18.666 24.4884 18.828 24.8364 19.152C25.1964 19.476 25.3764 19.944 25.3764 20.556C25.3764 21.252 25.1424 21.786 24.6744 22.158C24.2064 22.53 23.5464 22.716 22.6944 22.716C21.5664 22.716 20.5404 22.404 19.6164 21.78L18.6804 23.796C19.1484 24.192 19.7364 24.498 20.4444 24.714C21.1524 24.93 21.9144 25.038 22.7304 25.038C23.8344 25.038 24.7884 24.852 25.5924 24.48C26.4084 24.096 27.0264 23.562 27.4464 22.878C27.8784 22.194 28.0944 21.396 28.0944 20.484C28.0944 19.26 27.7524 18.33 27.0684 17.694C26.3964 17.046 25.4964 16.722 24.3684 16.722C23.9244 16.722 23.4804 16.776 23.0364 16.884C22.6044 16.98 22.2144 17.136 21.8664 17.352V14.4H27.3744Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 2C0 0.895431 0.895431 0 2 0H34C35.1046 0 36 0.895431 36 2V34C36 35.1046 35.1046 36 34 36H2C0.895431 36 0 35.1046 0 34V2Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M16.6967 24.75H8.23669V12.15H10.8827V22.374H16.6967V24.75Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M27.3744 12.15V14.4H21.8664V17.352C22.2144 17.136 22.6044 16.98 23.0364 16.884C23.4804 16.776 23.9244 16.722 24.3684 16.722C25.4964 16.722 26.3964 17.046 27.0684 17.694C27.7524 18.33 28.0944 19.26 28.0944 20.484C28.0944 21.396 27.8784 22.194 27.4464 22.878C27.0264 23.562 26.4084 24.096 25.5924 24.48C24.7884 24.852 23.8344 25.038 22.7304 25.038C21.9144 25.038 21.1524 24.93 20.4444 24.714C19.7364 24.498 19.1484 24.192 18.6804 23.796L19.6164 21.78C20.5404 22.404 21.5664 22.716 22.6944 22.716C23.5464 22.716 24.2064 22.53 24.6744 22.158C25.1424 21.786 25.3764 21.252 25.3764 20.556C25.3764 19.944 25.1964 19.476 24.8364 19.152C24.4884 18.828 24.0084 18.666 23.3964 18.666C22.9404 18.666 22.5204 18.744 22.1364 18.9C21.7524 19.044 21.3744 19.266 21.0024 19.566L19.3284 18.648V12.15H27.3744Z",
                }),
              );
        }
        function P({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M2 0C0.895431 0 0 0.895431 0 2V34C0 35.1046 0.895431 36 2 36H34C35.1046 36 36 35.1046 36 34V2C36 0.895431 35.1046 0 34 0H2ZM14.5176 24.75H17.4516L14.4816 19.98C15.2496 19.644 15.8436 19.152 16.2636 18.504C16.6956 17.856 16.9116 17.046 16.9116 16.074C16.9116 14.838 16.5036 13.878 15.6876 13.194C14.8716 12.498 13.5996 12.15 11.8716 12.15H7.15564V24.75H9.80164V20.502H11.6736H11.9796L14.5176 24.75ZM9.80164 18.234V14.4H11.7096C12.5376 14.4 13.1376 14.556 13.5096 14.868C13.8936 15.168 14.0856 15.624 14.0856 16.236C14.0856 16.86 13.8876 17.352 13.4916 17.712C13.1076 18.06 12.5676 18.234 11.8716 18.234H9.80164ZM27.6539 19.854V12.15H25.2059L19.0319 20.16V21.888H24.9719V24.75H27.6539V21.888H29.4719V19.854H27.6539ZM21.6059 19.854L25.0799 15.3V19.854H21.6059Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 2C0 0.895431 0.895431 0 2 0H34C35.1046 0 36 0.895431 36 2V34C36 35.1046 35.1046 36 34 36H2C0.895431 36 0 35.1046 0 34V2Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.4516 24.75H14.5176L11.9796 20.502H11.6736H9.80164V24.75H7.15564V12.15H11.8716C13.5996 12.15 14.8716 12.498 15.6876 13.194C16.5036 13.878 16.9116 14.838 16.9116 16.074C16.9116 17.046 16.6956 17.856 16.2636 18.504C15.8436 19.152 15.2496 19.644 14.4816 19.98L17.4516 24.75ZM9.80164 14.4V18.234H11.8716C12.5676 18.234 13.1076 18.06 13.4916 17.712C13.8876 17.352 14.0856 16.86 14.0856 16.236C14.0856 15.624 13.8936 15.168 13.5096 14.868C13.1376 14.556 12.5376 14.4 11.7096 14.4H9.80164Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M27.6539 12.15V19.854H29.4719V21.888H27.6539V24.75H24.9719V21.888H19.0319V20.16L25.2059 12.15H27.6539ZM25.0799 15.3L21.6059 19.854H25.0799V15.3Z",
                }),
              );
        }
        function B({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M2 0C0.895431 0 0 0.895431 0 2V34C0 35.1046 0.895431 36 2 36H34C35.1046 36 36 35.1046 36 34V2C36 0.895431 35.1046 0 34 0H2ZM14.6934 24.75H17.6274L14.6574 19.98C15.4254 19.644 16.0194 19.152 16.4394 18.504C16.8714 17.856 17.0874 17.046 17.0874 16.074C17.0874 14.838 16.6794 13.878 15.8634 13.194C15.0474 12.498 13.7754 12.15 12.0474 12.15H7.33142V24.75H9.97742V20.502H11.8494H12.1554L14.6934 24.75ZM9.97742 18.234V14.4H11.8854C12.7134 14.4 13.3134 14.556 13.6854 14.868C14.0694 15.168 14.2614 15.624 14.2614 16.236C14.2614 16.86 14.0634 17.352 13.6674 17.712C13.2834 18.06 12.7434 18.234 12.0474 18.234H9.97742ZM28.2797 14.4V12.15H20.2337V18.648L21.9077 19.566C22.2797 19.266 22.6577 19.044 23.0417 18.9C23.4257 18.744 23.8457 18.666 24.3017 18.666C24.9137 18.666 25.3937 18.828 25.7417 19.152C26.1017 19.476 26.2817 19.944 26.2817 20.556C26.2817 21.252 26.0477 21.786 25.5797 22.158C25.1117 22.53 24.4517 22.716 23.5997 22.716C22.4717 22.716 21.4457 22.404 20.5217 21.78L19.5857 23.796C20.0537 24.192 20.6417 24.498 21.3497 24.714C22.0577 24.93 22.8197 25.038 23.6357 25.038C24.7397 25.038 25.6937 24.852 26.4977 24.48C27.3137 24.096 27.9317 23.562 28.3517 22.878C28.7837 22.194 28.9997 21.396 28.9997 20.484C28.9997 19.26 28.6577 18.33 27.9737 17.694C27.3017 17.046 26.4017 16.722 25.2737 16.722C24.8297 16.722 24.3857 16.776 23.9417 16.884C23.5097 16.98 23.1197 17.136 22.7717 17.352V14.4H28.2797Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M0 2C0 0.895431 0.895431 0 2 0H34C35.1046 0 36 0.895431 36 2V34C36 35.1046 35.1046 36 34 36H2C0.895431 36 0 35.1046 0 34V2Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.6274 24.75H14.6934L12.1554 20.502H11.8494H9.97742V24.75H7.33142V12.15H12.0474C13.7754 12.15 15.0474 12.498 15.8634 13.194C16.6794 13.878 17.0874 14.838 17.0874 16.074C17.0874 17.046 16.8714 17.856 16.4394 18.504C16.0194 19.152 15.4254 19.644 14.6574 19.98L17.6274 24.75ZM9.97742 14.4V18.234H12.0474C12.7434 18.234 13.2834 18.06 13.6674 17.712C14.0634 17.352 14.2614 16.86 14.2614 16.236C14.2614 15.624 14.0694 15.168 13.6854 14.868C13.3134 14.556 12.7134 14.4 11.8854 14.4H9.97742Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M28.2797 12.15V14.4H22.7717V17.352C23.1197 17.136 23.5097 16.98 23.9417 16.884C24.3857 16.776 24.8297 16.722 25.2737 16.722C26.4017 16.722 27.3017 17.046 27.9737 17.694C28.6577 18.33 28.9997 19.26 28.9997 20.484C28.9997 21.396 28.7837 22.194 28.3517 22.878C27.9317 23.562 27.3137 24.096 26.4977 24.48C25.6937 24.852 24.7397 25.038 23.6357 25.038C22.8197 25.038 22.0577 24.93 21.3497 24.714C20.6417 24.498 20.0537 24.192 19.5857 23.796L20.5217 21.78C21.4457 22.404 22.4717 22.716 23.5997 22.716C24.4517 22.716 25.1117 22.53 25.5797 22.158C26.0477 21.786 26.2817 21.252 26.2817 20.556C26.2817 19.944 26.1017 19.476 25.7417 19.152C25.3937 18.828 24.9137 18.666 24.3017 18.666C23.8457 18.666 23.4257 18.744 23.0417 18.9C22.6577 19.044 22.2797 19.266 21.9077 19.566L20.2337 18.648V12.15H28.2797Z",
                }),
              );
        }
        function x({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M5.73583 3C3.6326 3 1.88863 4.6288 1.74515 6.72713L0.292161 27.9771C0.134133 30.2883 1.96629 32.25 4.28284 32.25H31.7172C34.0337 32.25 35.8659 30.2883 35.7078 27.9771L34.2548 6.72713C34.1114 4.6288 32.3674 3 30.2642 3H5.73583ZM14.8236 24.0625H23.2836V21.6865H17.4696V11.4625H14.8236V24.0625Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M1.74515 6.72713C1.88863 4.6288 3.6326 3 5.73584 3H30.2642C32.3674 3 34.1114 4.6288 34.2548 6.72713L35.7078 27.9771C35.8659 30.2883 34.0337 32.25 31.7172 32.25H4.28284C1.96629 32.25 0.134134 30.2883 0.292162 27.9771L1.74515 6.72713Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.2836 24.0625H14.8236V11.4625H17.4696V21.6865H23.2836V24.0625Z",
                }),
              );
        }
        function O({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M6.6282 8C4.52356 8 2.77893 9.6309 2.63727 11.7308L1.28806 31.7308C1.13224 34.0406 2.96389 36 5.27899 36H30.7211C33.0362 36 34.8679 34.0406 34.7121 31.7308L33.3629 11.7308C33.2212 9.63091 31.4766 8 29.3719 8H6.6282ZM14.8237 28.0625H23.2837V25.6865H17.4697V15.4625H14.8237V28.0625Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M24 0H12L18 6L24 0Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M2.63721 11.7308C2.77887 9.6309 4.5235 8 6.62814 8H29.3719C31.4765 8 33.2211 9.63091 33.3628 11.7308L34.712 31.7308C34.8678 34.0406 33.0362 36 30.7211 36H5.27893C2.96382 36 1.13218 34.0406 1.288 31.7308L2.63721 11.7308Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.2836 28.0625H14.8236V15.4625H17.4696V25.6865H23.2836V28.0625Z",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M24 0H12L18 6L24 0Z",
                }),
              );
        }
        function N({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M5.7359 3C3.63266 3 1.88869 4.6288 1.74521 6.72713L0.292222 27.9771C0.134194 30.2883 1.96635 32.25 4.2829 32.25H31.7172C34.0338 32.25 35.8659 30.2883 35.7079 27.9771L34.2549 6.72713C34.1114 4.6288 32.3675 3 30.2642 3H5.7359ZM20.7179 24.0625H23.6519L20.6819 19.2925C21.4499 18.9565 22.0439 18.4645 22.4639 17.8165C22.8959 17.1685 23.1119 16.3585 23.1119 15.3865C23.1119 14.1505 22.7039 13.1905 21.8879 12.5065C21.0719 11.8105 19.7999 11.4625 18.0719 11.4625H13.3559V24.0625H16.0019V19.8145H17.8739H18.1799L20.7179 24.0625ZM16.0019 17.5465V13.7125H17.9099C18.7379 13.7125 19.3379 13.8685 19.7099 14.1805C20.0939 14.4805 20.2859 14.9365 20.2859 15.5485C20.2859 16.1725 20.0879 16.6645 19.6919 17.0245C19.3079 17.3725 18.7679 17.5465 18.0719 17.5465H16.0019Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M1.74515 6.72713C1.88863 4.6288 3.6326 3 5.73584 3H30.2642C32.3674 3 34.1114 4.6288 34.2548 6.72713L35.7078 27.9771C35.8659 30.2883 34.0337 32.25 31.7172 32.25H4.28284C1.96629 32.25 0.134134 30.2883 0.292162 27.9771L1.74515 6.72713Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.6518 24.0625H20.7178L18.1798 19.8145H17.8738H16.0018V24.0625H13.3558V11.4625H18.0718C19.7998 11.4625 21.0718 11.8105 21.8878 12.5065C22.7038 13.1905 23.1118 14.1505 23.1118 15.3865C23.1118 16.3585 22.8958 17.1685 22.4638 17.8165C22.0438 18.4645 21.4498 18.9565 20.6818 19.2925L23.6518 24.0625ZM16.0018 13.7125V17.5465H18.0718C18.7678 17.5465 19.3078 17.3725 19.6918 17.0245C20.0878 16.6645 20.2858 16.1725 20.2858 15.5485C20.2858 14.9365 20.0938 14.4805 19.7098 14.1805C19.3378 13.8685 18.7378 13.7125 17.9098 13.7125H16.0018Z",
                }),
              );
        }
        function V({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fill: "currentColor",
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M6.6282 8C4.52356 8 2.77893 9.6309 2.63727 11.7308L1.28806 31.7308C1.13224 34.0406 2.96389 36 5.27899 36H30.7211C33.0362 36 34.8679 34.0406 34.7121 31.7308L33.3629 11.7308C33.2212 9.63091 31.4766 8 29.3719 8H6.6282ZM20.7179 28.0625H23.6519L20.6819 23.2925C21.4499 22.9565 22.0439 22.4645 22.4639 21.8165C22.8959 21.1685 23.1119 20.3585 23.1119 19.3865C23.1119 18.1505 22.7039 17.1905 21.8879 16.5065C21.0719 15.8105 19.7999 15.4625 18.0719 15.4625H13.3559V28.0625H16.0019V23.8145H17.8739H18.1799L20.7179 28.0625ZM16.0019 21.5465V17.7125H17.9099C18.7379 17.7125 19.3379 17.8685 19.7099 18.1805C20.0939 18.4805 20.2859 18.9365 20.2859 19.5485C20.2859 20.1725 20.0879 20.6645 19.6919 21.0245C19.3079 21.3725 18.7679 21.5465 18.0719 21.5465H16.0019Z",
                }),
                r.createElement("path", {
                  fill: "currentColor",
                  d: "M24 0H12L18 6L24 0Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M2.63721 11.7308C2.77887 9.6309 4.5235 8 6.62814 8H29.3719C31.4765 8 33.2211 9.63091 33.3628 11.7308L34.712 31.7308C34.8678 34.0406 33.0362 36 30.7211 36H5.27893C2.96382 36 1.13218 34.0406 1.288 31.7308L2.63721 11.7308Z",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M23.6518 28.0625H20.7178L18.1798 23.8145H17.8738H16.0018V28.0625H13.3558V15.4625H18.0718C19.7998 15.4625 21.0718 15.8105 21.8878 16.5065C22.7038 17.1905 23.1118 18.1505 23.1118 19.3865C23.1118 20.3585 22.8958 21.1685 22.4638 21.8165C22.0438 22.4645 21.4498 22.9565 20.6818 23.2925L23.6518 28.0625ZM16.0018 17.7125V21.5465H18.0718C18.7678 21.5465 19.3078 21.3725 19.6918 21.0245C20.0878 20.6645 20.2858 20.1725 20.2858 19.5485C20.2858 18.9365 20.0938 18.4805 19.7098 18.1805C19.3378 17.8685 18.7378 17.7125 17.9098 17.7125H16.0018Z",
                }),
                r.createElement("path", {
                  className: l().Background,
                  fill: "currentColor",
                  d: "M24 0H12L18 6L24 0Z",
                }),
              );
        }
        function U({ bIsKnockout: e, ...t }) {
          return e
            ? r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  fill: "currentColor",
                  d: "M18 36C27.9411 36 36 27.9411 36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 27.9411 8.05887 36 18 36ZM20.4999 10.8201C19.7519 10.4974 18.8719 10.3361 17.8599 10.3361C16.9799 10.3361 16.1219 10.4681 15.2859 10.7321C14.4499 10.9961 13.7166 11.3407 13.0859 11.7661L14.0759 13.9881C15.0586 13.2547 16.1073 12.8881 17.2219 12.8881C17.9699 12.8881 18.5493 13.0494 18.9599 13.3721C19.3853 13.6801 19.5979 14.1201 19.5979 14.6921C19.5979 15.1027 19.4953 15.4474 19.2899 15.7261C19.0846 16.0047 18.7693 16.3201 18.3439 16.6721C17.8893 17.0681 17.5153 17.4347 17.2219 17.7721C16.9286 18.1094 16.6793 18.5641 16.4739 19.1361C16.2686 19.7081 16.1659 20.4047 16.1659 21.2261H18.8499C18.8499 20.6541 18.9453 20.1554 19.1359 19.7301C19.3266 19.2901 19.5539 18.9234 19.8179 18.6301C20.0966 18.3221 20.4633 17.9701 20.9179 17.5741C21.3579 17.1781 21.7026 16.8407 21.9519 16.5621C22.2159 16.2834 22.4359 15.9461 22.6119 15.5501C22.7879 15.1541 22.8759 14.6994 22.8759 14.1861C22.8759 13.4234 22.6706 12.7561 22.2599 12.1841C21.8493 11.5974 21.2626 11.1427 20.4999 10.8201ZM18.7839 23.2721C18.4759 22.9494 18.0653 22.7881 17.5519 22.7881C17.0386 22.7881 16.6279 22.9494 16.3199 23.2721C16.0119 23.5801 15.8579 23.9907 15.8579 24.5041C15.8579 25.0467 16.0119 25.4794 16.3199 25.8021C16.6279 26.1101 17.0386 26.2641 17.5519 26.2641C18.0653 26.2641 18.4759 26.1101 18.7839 25.8021C19.0919 25.4794 19.2459 25.0467 19.2459 24.5041C19.2459 23.9907 19.0919 23.5801 18.7839 23.2721Z",
                }),
              )
            : r.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...t,
                },
                r.createElement("circle", {
                  className: l().Background,
                  fill: "currentColor",
                  cx: "18",
                  cy: "18",
                  r: "18",
                }),
                r.createElement("path", {
                  className: l().Foreground,
                  fill: "currentColor",
                  d: "M17.8599 10.3361C18.8719 10.3361 19.7519 10.4974 20.4999 10.8201C21.2626 11.1427 21.8493 11.5974 22.2599 12.1841C22.6706 12.7561 22.8759 13.4234 22.8759 14.1861C22.8759 14.6994 22.7879 15.1541 22.6119 15.5501C22.4359 15.9461 22.2159 16.2834 21.9519 16.5621C21.7026 16.8407 21.3579 17.1781 20.9179 17.5741C20.4633 17.9701 20.0966 18.3221 19.8179 18.6301C19.5539 18.9234 19.3266 19.2901 19.1359 19.7301C18.9453 20.1554 18.8499 20.6541 18.8499 21.2261H16.1659C16.1659 20.4047 16.2686 19.7081 16.4739 19.1361C16.6793 18.5641 16.9286 18.1094 17.2219 17.7721C17.5153 17.4347 17.8893 17.0681 18.3439 16.6721C18.7693 16.3201 19.0846 16.0047 19.2899 15.7261C19.4953 15.4474 19.5979 15.1027 19.5979 14.6921C19.5979 14.1201 19.3853 13.6801 18.9599 13.3721C18.5493 13.0494 17.9699 12.8881 17.2219 12.8881C16.1073 12.8881 15.0586 13.2547 14.0759 13.9881L13.0859 11.7661C13.7166 11.3407 14.4499 10.9961 15.2859 10.7321C16.1219 10.4681 16.9799 10.3361 17.8599 10.3361ZM17.5519 22.7881C18.0653 22.7881 18.4759 22.9494 18.7839 23.2721C19.0919 23.5801 19.2459 23.9907 19.2459 24.5041C19.2459 25.0467 19.0919 25.4794 18.7839 25.8021C18.4759 26.1101 18.0653 26.2641 17.5519 26.2641C17.0386 26.2641 16.6279 26.1101 16.3199 25.8021C16.0119 25.4794 15.8579 25.0467 15.8579 24.5041C15.8579 23.9907 16.0119 23.5801 16.3199 23.2721C16.6279 22.9494 17.0386 22.7881 17.5519 22.7881Z",
                }),
              );
        }
        !(function (e) {
          (e[(e.Knockout = 0)] = "Knockout"),
            (e[(e.Light = 1)] = "Light"),
            (e[(e.Dark = 2)] = "Dark");
        })(i || (i = {})),
          (function (e) {
            (e[(e.Small = 0)] = "Small"),
              (e[(e.Medium = 1)] = "Medium"),
              (e[(e.Large = 2)] = "Large");
          })(o || (o = {}));
      },
      84791: (e, t, n) => {
        "use strict";
        n.d(t, { nl: () => l, rf: () => s });
        var i = n(63696),
          o = n(81734),
          r = n(97854),
          a = n(17070);
        function s() {
          return i.createElement(o.rfv, null);
        }
        function l() {
          return (0, a.Qn)()
            ? i.createElement(r.nl, null)
            : i.createElement(o.jZW, null);
        }
      },
      97854: (e, t, n) => {
        "use strict";
        n.d(t, {
          CeX: () => T,
          Epp: () => k,
          KJW: () => D,
          KKH: () => f,
          PqC: () => l,
          ZyV: () => R,
          b8_: () => v,
          bm: () => I,
          fqd: () => w,
          jGG: () => b,
          jvG: () => L,
          lMJ: () => E,
          nl: () => A,
          pcV: () => m,
          rxV: () => M,
          s3S: () => C,
          sUt: () => u,
          u49: () => S,
          y$y: () => y,
        });
        var i = n(63696),
          o = n(73151),
          r = n.n(o),
          a = n(4532),
          s = n(77171);
        function l(e) {
          const { none: t, partial: n, ...o } = e;
          return t
            ? i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...o,
                },
                i.createElement("path", {
                  d: "M36 24.2C36 27.68 31 30 31 30L25 24H17.36L26.55 14.81C27.0058 14.9963 27.5066 15.0439 27.9893 14.9467C28.4721 14.8494 28.9154 14.6118 29.2636 14.2636C29.6118 13.9154 29.8494 13.4721 29.9466 12.9893C30.0438 12.5066 29.9963 12.0059 29.81 11.55L32.76 8.55002C33.39 10.79 36 20.12 36 24.2ZM33.56 3.56002L2.56 34.56L0.44 32.44L3.65 29.23C2.17 28.28 0 26.49 0 24.2C0 19.56 3.38 8.14002 3.38 8.14002C3.38 8.14002 7.5 4.00002 18 4.00002C21.2151 3.94797 24.4172 4.42085 27.48 5.40002L31.48 1.40002L33.56 3.56002ZM6 16H9V19H12V16H15V13H12V10H9V13H6V16Z",
                  fill: "currentColor",
                }),
              )
            : n
              ? i.createElement(
                  "svg",
                  {
                    xmlns: "http://www.w3.org/2000/svg",
                    version: "1.1",
                    id: "Layer_1",
                    x: "0px",
                    y: "0px",
                    viewBox: "0 0 36 36",
                    ...o,
                  },
                  i.createElement("path", {
                    fill: "currentColor",
                    opacity: "0.5",
                    d: "M12.9,6.2c-0.2,0-0.4-0.1-0.5-0.2c-0.2-0.2-0.5-0.4-1.2-0.4c-1.1,0-4.5,1.1-5.1,1.7S5.6,8.4,5.6,8.4v0.1  c-0.4,0.3-0.8,0.7-1.1,1C3.4,10.7,0,20.2,0,25.3s3.4,5.6,3.4,5.6c0.9,0,2.3-1.8,3.7-3.5c1.2-1.5,2.3-3,3.1-3.2  c0.8-0.3,4.4-0.4,7.9-0.4V6.2H12.9z M8.4,14.6c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2s2.2,1,2.2,2.2S9.7,14.6,8.4,14.6z M15.8,18.8  c0,0.3-0.3,0.6-0.6,0.6h-0.8v0.8c0,0.3-0.3,0.6-0.6,0.6h-1.1c-0.3,0-0.6-0.3-0.6-0.6v-0.8h-0.8c-0.3,0-0.6-0.3-0.6-0.6v-1.1  c0-0.3,0.3-0.6,0.6-0.6h0.8v-0.8c0-0.3,0.3-0.6,0.6-0.6h1.1c0.3,0,0.6,0.3,0.6,0.6v0.8h0.8c0.3,0,0.6,0.3,0.6,0.6V18.8z",
                  }),
                  i.createElement("path", {
                    fill: "currentColor",
                    d: "M31.5,9.6c-0.3-0.3-0.7-0.6-1.1-1V8.4c0,0,0-0.6-0.6-1.1s-3.9-1.7-5.1-1.7c-0.7,0-0.9,0.2-1.2,0.4c-0.2,0.1-0.3,0.2-0.5,0.2  H18v17.6c3.5,0,7,0.1,7.9,0.4c0.8,0.3,1.9,1.7,3.1,3.2c1.4,1.7,2.8,3.5,3.7,3.5c0,0,3.4-0.6,3.4-5.6S32.6,10.7,31.5,9.6z M27.6,8.7  c0.8,0,1.4,0.6,1.4,1.4s-0.6,1.4-1.4,1.4s-1.4-0.6-1.4-1.4S26.8,8.7,27.6,8.7z M23.1,20.2c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2  s2.2,1,2.2,2.2S24.3,20.2,23.1,20.2z M25,14.1c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4c0.8,0,1.4,0.6,1.4,1.4  C26.4,13.4,25.8,14.1,25,14.1z M27.6,16.6c-0.8,0-1.4-0.6-1.4-1.4s0.6-1.4,1.4-1.4s1.4,0.6,1.4,1.4S28.3,16.6,27.6,16.6z M30.1,14.1  c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4c0.8,0,1.4,0.6,1.4,1.4C31.5,13.4,30.9,14.1,30.1,14.1z",
                  }),
                )
              : i.createElement(
                  "svg",
                  {
                    xmlns: "http://www.w3.org/2000/svg",
                    version: "1.1",
                    id: "Layer_1",
                    x: "0px",
                    y: "0px",
                    viewBox: "0 0 36 36",
                    ...o,
                  },
                  i.createElement("path", {
                    fill: "currentColor",
                    d: "M31.5,9.6c-0.3-0.3-0.7-0.6-1.1-1V8.4c0,0,0-0.6-0.6-1.1s-3.9-1.7-5.1-1.7c-0.7,0-0.9,0.2-1.2,0.4c-0.2,0.1-0.3,0.2-0.5,0.2  H12.9c-0.2,0-0.4-0.1-0.5-0.2c-0.2-0.2-0.5-0.4-1.2-0.4c-1.1,0-4.5,1.1-5.1,1.7S5.6,8.4,5.6,8.4v0.1c-0.4,0.3-0.8,0.7-1.1,1  C3.4,10.7,0,20.2,0,25.3s3.4,5.6,3.4,5.6c0.9,0,2.3-1.8,3.7-3.5c1.2-1.5,2.3-3,3.1-3.2c1.7-0.6,14.1-0.6,15.8,0  c0.8,0.3,1.9,1.7,3.1,3.2c1.4,1.7,2.8,3.5,3.7,3.5c0,0,3.4-0.6,3.4-5.6S32.6,10.7,31.5,9.6z M8.4,14.6c-1.2,0-2.2-1-2.2-2.2  s1-2.2,2.2-2.2s2.2,1,2.2,2.2S9.7,14.6,8.4,14.6z M15.8,18.8c0,0.3-0.3,0.6-0.6,0.6h-0.8v0.8c0,0.3-0.3,0.6-0.6,0.6h-1.1  c-0.3,0-0.6-0.3-0.6-0.6v-0.8h-0.8c-0.3,0-0.6-0.3-0.6-0.6v-1.1c0-0.3,0.3-0.6,0.6-0.6h0.8v-0.8c0-0.3,0.3-0.6,0.6-0.6h1.1  c0.3,0,0.6,0.3,0.6,0.6v0.8h0.8c0.3,0,0.6,0.3,0.6,0.6V18.8z M27.6,8.7c0.8,0,1.4,0.6,1.4,1.4s-0.6,1.4-1.4,1.4s-1.4-0.6-1.4-1.4  S26.8,8.7,27.6,8.7z M23.1,20.2c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2s2.2,1,2.2,2.2S24.3,20.2,23.1,20.2z M25,14.1  c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4s1.4,0.6,1.4,1.4C26.4,13.4,25.8,14.1,25,14.1z M27.6,16.6c-0.8,0-1.4-0.6-1.4-1.4  s0.6-1.4,1.4-1.4s1.4,0.6,1.4,1.4S28.3,16.6,27.6,16.6z M30.1,14.1c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4s1.4,0.6,1.4,1.4  C31.5,13.4,30.9,14.1,30.1,14.1z",
                  }),
                );
        }
        function c(e) {
          const { type: t, partial: n, ...o } = e,
            [r, s] = (0, a.l)();
          return "steam" == t
            ? i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...o,
                },
                i.createElement(
                  "g",
                  { clipPath: s },
                  i.createElement("path", {
                    fill: "currentColor",
                    d: "M5.625 31.0429C0.0351562 31.0429 0.0351562 24.75 0.0351562 24.75C0.0351562 23.2708 0.691018 18.9574 1.67867 14.9078C2.09604 21.229 4.23237 26.4107 7.46967 30.1342C6.94663 30.6907 6.34611 31.0429 5.625 31.0429Z",
                  }),
                  i.createElement("path", {
                    fill: "currentColor",
                    fillRule: "evenodd",
                    clipRule: "evenodd",
                    d: "M8.16687 29.2194C4.59849 25.0137 2.43205 18.8213 2.76162 11.0707C3.47054 8.93505 4.26138 7.27235 5.0625 6.76752C8.1706 5.06632 27.6869 4.8903 31.0078 6.76752C31.7909 7.26099 32.5642 8.86083 33.2607 10.9273C33.6225 18.7277 31.4618 24.9603 27.8856 29.1914C27.4035 28.4325 26.984 27.5272 26.5768 26.6483C25.7189 24.7967 24.9154 23.0625 23.6953 23.0625H12.375C11.1549 23.0625 10.3514 24.7967 9.49349 26.6483C9.08125 27.538 8.65647 28.4548 8.16687 29.2194ZM18 12.9375C18.7766 12.9375 19.4062 12.3079 19.4062 11.5312C19.4062 10.7546 18.7766 10.125 18 10.125C17.2234 10.125 16.5938 10.7546 16.5938 11.5312C16.5938 12.3079 17.2234 12.9375 18 12.9375ZM22.5 15.75C22.5 16.3713 21.9963 16.875 21.375 16.875C20.7537 16.875 20.25 16.3713 20.25 15.75C20.25 15.1286 20.7537 14.625 21.375 14.625C21.9963 14.625 22.5 15.1286 22.5 15.75ZM15.75 18.8437C15.75 19.931 14.8686 20.8125 13.7812 20.8125C12.6939 20.8125 11.8125 19.931 11.8125 18.8437C11.8125 17.7564 12.6939 16.875 13.7812 16.875C14.8686 16.875 15.75 17.7564 15.75 18.8437ZM24.75 18C24.75 18.6213 24.2463 19.125 23.625 19.125C23.0037 19.125 22.5 18.6213 22.5 18C22.5 17.3786 23.0037 16.875 23.625 16.875C24.2463 16.875 24.75 17.3786 24.75 18ZM21.375 21.375C21.9963 21.375 22.5 20.8713 22.5 20.25C22.5 19.6286 21.9963 19.125 21.375 19.125C20.7537 19.125 20.25 19.6286 20.25 20.25C20.25 20.8713 20.7537 21.375 21.375 21.375ZM20.25 18C20.25 18.6213 19.7463 19.125 19.125 19.125C18.5037 19.125 18 18.6213 18 18C18 17.3786 18.5037 16.875 19.125 16.875C19.7463 16.875 20.25 17.3786 20.25 18ZM13.5 12.375C13.5 14.8602 11.4853 16.875 9 16.875C6.51472 16.875 4.5 14.8602 4.5 12.375C4.5 9.88969 6.51472 7.87497 9 7.87497C11.4853 7.87497 13.5 9.88969 13.5 12.375ZM27 16.875C29.4853 16.875 31.5 14.8602 31.5 12.375C31.5 9.88969 29.4853 7.87497 27 7.87497C24.5147 7.87497 22.5 9.88969 22.5 12.375C22.5 14.8602 24.5147 16.875 27 16.875Z",
                  }),
                  i.createElement("path", {
                    fill: "currentColor",
                    d: "M28.5791 30.1112C29.1072 30.6809 29.7143 31.0429 30.4453 31.0429C36.0352 31.0429 36.0352 24.75 36.0352 24.75C36.0352 23.2544 35.3647 18.8614 34.3587 14.7732C33.9637 21.1424 31.8281 26.3629 28.5791 30.1112Z",
                  }),
                ),
                i.createElement(
                  "defs",
                  null,
                  i.createElement(
                    "clipPath",
                    { id: r },
                    i.createElement("rect", {
                      fill: "currentColor",
                      width: "36",
                      height: "36",
                    }),
                  ),
                ),
              )
            : "xbox" == t
              ? n
                ? i.createElement(
                    "svg",
                    {
                      xmlns: "http://www.w3.org/2000/svg",
                      version: "1.1",
                      id: "Layer_1",
                      x: "0px",
                      y: "0px",
                      viewBox: "0 0 36 36",
                      ...o,
                    },
                    i.createElement("path", {
                      fill: "currentColor",
                      opacity: "0.5",
                      d: "M12.9,6.2c-0.2,0-0.4-0.1-0.5-0.2c-0.2-0.2-0.5-0.4-1.2-0.4c-1.1,0-4.5,1.1-5.1,1.7S5.6,8.4,5.6,8.4v0.1  c-0.4,0.3-0.8,0.7-1.1,1C3.4,10.7,0,20.2,0,25.3s3.4,5.6,3.4,5.6c0.9,0,2.3-1.8,3.7-3.5c1.2-1.5,2.3-3,3.1-3.2  c0.8-0.3,4.4-0.4,7.9-0.4V6.2H12.9z M8.4,14.6c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2s2.2,1,2.2,2.2S9.7,14.6,8.4,14.6z M15.8,18.8  c0,0.3-0.3,0.6-0.6,0.6h-0.8v0.8c0,0.3-0.3,0.6-0.6,0.6h-1.1c-0.3,0-0.6-0.3-0.6-0.6v-0.8h-0.8c-0.3,0-0.6-0.3-0.6-0.6v-1.1  c0-0.3,0.3-0.6,0.6-0.6h0.8v-0.8c0-0.3,0.3-0.6,0.6-0.6h1.1c0.3,0,0.6,0.3,0.6,0.6v0.8h0.8c0.3,0,0.6,0.3,0.6,0.6V18.8z",
                    }),
                    i.createElement("path", {
                      fill: "currentColor",
                      d: "M31.5,9.6c-0.3-0.3-0.7-0.6-1.1-1V8.4c0,0,0-0.6-0.6-1.1s-3.9-1.7-5.1-1.7c-0.7,0-0.9,0.2-1.2,0.4c-0.2,0.1-0.3,0.2-0.5,0.2  H18v17.6c3.5,0,7,0.1,7.9,0.4c0.8,0.3,1.9,1.7,3.1,3.2c1.4,1.7,2.8,3.5,3.7,3.5c0,0,3.4-0.6,3.4-5.6S32.6,10.7,31.5,9.6z M27.6,8.7  c0.8,0,1.4,0.6,1.4,1.4s-0.6,1.4-1.4,1.4s-1.4-0.6-1.4-1.4S26.8,8.7,27.6,8.7z M23.1,20.2c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2  s2.2,1,2.2,2.2S24.3,20.2,23.1,20.2z M25,14.1c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4c0.8,0,1.4,0.6,1.4,1.4  C26.4,13.4,25.8,14.1,25,14.1z M27.6,16.6c-0.8,0-1.4-0.6-1.4-1.4s0.6-1.4,1.4-1.4s1.4,0.6,1.4,1.4S28.3,16.6,27.6,16.6z M30.1,14.1  c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4c0.8,0,1.4,0.6,1.4,1.4C31.5,13.4,30.9,14.1,30.1,14.1z",
                    }),
                  )
                : i.createElement(
                    "svg",
                    {
                      xmlns: "http://www.w3.org/2000/svg",
                      viewBox: "0 0 36 36",
                      fill: "none",
                      ...o,
                    },
                    i.createElement("path", {
                      fill: "currentColor",
                      fillRule: "evenodd",
                      clipRule: "evenodd",
                      d: "M11.25 5.625C11.909 5.625 12.182 5.81802 12.4081 5.97792C12.568 6.09099 12.7045 6.1875 12.9375 6.1875H23.0625C23.2955 6.1875 23.432 6.09099 23.5919 5.97792C23.818 5.81802 24.091 5.625 24.75 5.625C25.875 5.625 29.25 6.75 29.8125 7.3125C30.375 7.875 30.375 8.4375 30.375 8.4375V8.5803C30.8163 8.91923 31.1986 9.26106 31.5 9.5625C32.625 10.6875 36 20.25 36 25.3125C36 30.375 32.625 30.9375 32.625 30.9375C31.7178 30.9375 30.323 29.1494 28.9649 27.4083C27.7966 25.9106 26.6553 24.4476 25.875 24.1875C24.1875 23.625 11.8125 23.625 10.125 24.1875C9.34465 24.4476 8.20344 25.9106 7.03512 27.4083C5.67696 29.1494 4.28215 30.9375 3.375 30.9375C3.375 30.9375 0 30.375 0 25.3125C0 20.25 3.375 10.6875 4.5 9.5625C4.80144 9.26106 5.18366 8.91923 5.625 8.5803V8.4375C5.625 8.4375 5.625 7.875 6.1875 7.3125C6.75 6.75 10.125 5.625 11.25 5.625ZM27.5625 8.71875C28.3392 8.71875 28.9688 9.34835 28.9688 10.125C28.9688 10.9017 28.3392 11.5312 27.5625 11.5312C26.7858 11.5312 26.1562 10.9017 26.1562 10.125C26.1562 9.34835 26.7858 8.71875 27.5625 8.71875ZM8.4375 14.625C9.68014 14.625 10.6875 13.6176 10.6875 12.375C10.6875 11.1324 9.68014 10.125 8.4375 10.125C7.19486 10.125 6.1875 11.1324 6.1875 12.375C6.1875 13.6176 7.19486 14.625 8.4375 14.625ZM23.0625 20.25C24.3051 20.25 25.3125 19.2426 25.3125 18C25.3125 16.7574 24.3051 15.75 23.0625 15.75C21.8199 15.75 20.8125 16.7574 20.8125 18C20.8125 19.2426 21.8199 20.25 23.0625 20.25ZM12.0938 17.1562V16.3125C12.0938 16.0018 12.3456 15.75 12.6562 15.75H13.7812C14.0919 15.75 14.3438 16.0018 14.3438 16.3125V17.1562H15.1875C15.4982 17.1562 15.75 17.4081 15.75 17.7188V18.8438C15.75 19.1544 15.4982 19.4062 15.1875 19.4062H14.3438V20.25C14.3438 20.5607 14.0919 20.8125 13.7812 20.8125H12.6562C12.3456 20.8125 12.0938 20.5607 12.0938 20.25V19.4062H11.25C10.9393 19.4062 10.6875 19.1544 10.6875 18.8438V17.7188C10.6875 17.4081 10.9393 17.1562 11.25 17.1562H12.0938ZM25.0312 14.0625C25.8079 14.0625 26.4375 13.4329 26.4375 12.6562C26.4375 11.8796 25.8079 11.25 25.0312 11.25C24.2546 11.25 23.625 11.8796 23.625 12.6562C23.625 13.4329 24.2546 14.0625 25.0312 14.0625ZM31.5 12.6562C31.5 13.4329 30.8704 14.0625 30.0938 14.0625C29.3171 14.0625 28.6875 13.4329 28.6875 12.6562C28.6875 11.8796 29.3171 11.25 30.0938 11.25C30.8704 11.25 31.5 11.8796 31.5 12.6562ZM28.9688 15.1875C28.9688 14.4108 28.3392 13.7812 27.5625 13.7812C26.7858 13.7812 26.1562 14.4108 26.1562 15.1875C26.1562 15.9642 26.7858 16.5938 27.5625 16.5938C28.3392 16.5938 28.9688 15.9642 28.9688 15.1875Z",
                    }),
                  )
              : "ps4" == t
                ? n
                  ? i.createElement(
                      "svg",
                      {
                        xmlns: "http://www.w3.org/2000/svg",
                        version: "1.1",
                        id: "Layer_1",
                        x: "0px",
                        y: "0px",
                        viewBox: "0 0 36 36",
                        ...o,
                      },
                      i.createElement("path", {
                        fill: "currentColor",
                        opacity: "0.5",
                        d: "M12.9,13.7c-0.6,0-1.1-0.5-1.1-1.1V8l-1.7,0L9.6,7.5c0,0-0.1,0-0.2,0C9.3,7.3,9.2,7.1,9,6.9  C6.7,6.5,5.2,7.1,4.7,7.4c-0.1,0-0.1,0.1-0.2,0.1C3.9,8,2.8,10.3,2.8,10.3C2.2,12,0.6,17,0,23.8c0,0-0.6,5.1,3.4,5.6  c3.5,0.4,4.6-4.1,5.2-6.5c0.2-0.7,0.3-1.2,0.4-1.4c0.3-0.3,0.7-0.5,0.9-0.5c0.6,0.7,1.5,1.1,2.5,1.1c1,0,1.9-0.4,2.5-1.1H18v-7.3  H12.9z M5.6,10.8c0-0.3,0.2-0.5,0.5-0.5h1.2c0.3,0,0.5,0.2,0.5,0.5v1c0,0.1-0.1,0.3-0.1,0.4l-0.6,0.6c-0.2,0.2-0.5,0.2-0.7,0  l-0.6-0.6c-0.1-0.1-0.1-0.2-0.1-0.4V10.8z M5.1,14.5h-1c-0.3,0-0.5-0.2-0.5-0.5v-1.2c0-0.3,0.2-0.5,0.5-0.5h1c0.1,0,0.3,0.1,0.4,0.1  L6.1,13c0.2,0.2,0.2,0.5,0,0.7l-0.6,0.6C5.4,14.4,5.3,14.5,5.1,14.5z M7.9,16c0,0.3-0.2,0.5-0.5,0.5H6.1c-0.3,0-0.5-0.2-0.5-0.5v-1  c0-0.1,0.1-0.3,0.1-0.4L6.4,14c0.2-0.2,0.5-0.2,0.7,0l0.6,0.6c0.1,0.1,0.1,0.2,0.1,0.4V16z M9.8,14c0,0.3-0.2,0.5-0.5,0.5h-1  c-0.1,0-0.3-0.1-0.4-0.1l-0.6-0.6c-0.2-0.2-0.2-0.5,0-0.7L8,12.4c0.1-0.1,0.2-0.1,0.4-0.1h1c0.3,0,0.5,0.2,0.5,0.5V14z M12.1,20.4  c-1.2,0-2.2-1-2.2-2.2c0-1.2,1-2.2,2.2-2.2c1.2,0,2.2,1,2.2,2.2C14.4,19.4,13.4,20.4,12.1,20.4z",
                      }),
                      i.createElement("path", {
                        fill: "currentColor",
                        d: "M36,23.8C35.4,17,33.8,12,33.2,10.3c0,0-1.1-2.2-1.7-2.8c0,0-0.1-0.1-0.2-0.1c-0.5-0.3-2-0.9-4.3-0.5  c-0.2,0.2-0.3,0.4-0.4,0.5c-0.1,0-0.2,0-0.2,0L25.9,8l-1.7,0v4.5c0,0.6-0.5,1.1-1.1,1.1H18V21h3.1c0.6,0.7,1.5,1.1,2.5,1.1  c1,0,1.9-0.4,2.5-1.1c0.2,0.1,0.6,0.2,0.9,0.5c0.1,0.1,0.3,0.7,0.4,1.4c0.6,2.4,1.7,6.9,5.2,6.5C36.6,28.8,36,23.8,36,23.8z   M23.6,20.4c-1.2,0-2.2-1-2.2-2.2c0-1.2,1-2.2,2.2-2.2c1.2,0,2.2,1,2.2,2.2C25.9,19.4,24.9,20.4,23.6,20.4z M26.7,14.5  c-0.6,0-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1c0.6,0,1.1,0.5,1.1,1.1C27.8,14,27.3,14.5,26.7,14.5z M29.2,17  c-0.6,0-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1c0.6,0,1.1,0.5,1.1,1.1C30.4,16.5,29.9,17,29.2,17z M29.2,12c-0.6,0-1.1-0.5-1.1-1.1  c0-0.6,0.5-1.1,1.1-1.1c0.6,0,1.1,0.5,1.1,1.1C30.4,11.5,29.9,12,29.2,12z M31.8,14.5c-0.6,0-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1  c0.6,0,1.1,0.5,1.1,1.1C32.9,14,32.4,14.5,31.8,14.5z",
                      }),
                      i.createElement("rect", {
                        fill: "currentColor",
                        opacity: "0.5",
                        x: "12.9",
                        y: "8",
                        width: "5.1",
                        height: "4.5",
                      }),
                      i.createElement("rect", {
                        fill: "currentColor",
                        x: "18",
                        y: "8",
                        width: "5.1",
                        height: "4.5",
                      }),
                    )
                  : i.createElement(
                      "svg",
                      {
                        xmlns: "http://www.w3.org/2000/svg",
                        viewBox: "0 0 36 36",
                        fill: "none",
                        ...o,
                      },
                      i.createElement(
                        "g",
                        { clipPath: s },
                        i.createElement("path", {
                          fill: "currentColor",
                          fillRule: "evenodd",
                          clipRule: "evenodd",
                          d: "M4.49995 7.47C3.93745 8.0325 2.81244 10.2825 2.81244 10.2825C2.24993 11.97 0.562445 17.0325 -5.43911e-05 23.7825C-5.43911e-05 23.7825 -0.562553 28.845 3.37495 29.4075C6.832 29.8396 7.9652 25.2921 8.55982 22.9059C8.73921 22.186 8.86958 21.6629 8.99995 21.5325C9.33789 21.1945 9.67584 21.0596 9.89181 21.0058C10.5086 21.6754 11.3928 22.095 12.3749 22.095C13.3745 22.095 14.2726 21.6605 14.8906 20.97H21.1093C21.7273 21.6605 22.6254 22.095 23.6249 22.095C24.6071 22.095 25.4913 21.6754 26.1081 21.0058C26.3241 21.0596 26.662 21.1945 27 21.5325C27.1303 21.6629 27.2607 22.186 27.4401 22.9059C28.0347 25.2921 29.1679 29.8396 32.625 29.4075C36.5625 28.845 36 23.7825 36 23.7825C35.4375 17.0325 33.75 11.97 33.1875 10.2825C33.1875 10.2825 32.0625 8.03251 31.4999 7.47C31.4575 7.42758 31.3927 7.39155 31.3091 7.36121C30.794 7.09333 29.2603 6.45543 26.9999 6.9075C26.8121 7.09539 26.6869 7.28328 26.6036 7.45021C26.4971 7.46255 26.4375 7.47001 26.4375 7.47001L25.875 8.0325L24.1874 8.03251V12.5325C24.1874 13.1538 23.6838 13.6575 23.0624 13.6575H12.9374C12.3161 13.6575 11.8124 13.1538 11.8124 12.5325V8.03251L10.1249 8.03249L9.56245 7.47C9.56245 7.47 9.50277 7.46254 9.39629 7.4502C9.31296 7.28328 9.18783 7.09539 8.99995 6.9075C6.73958 6.45543 5.20586 7.09333 4.6908 7.36121C4.60721 7.39155 4.54237 7.42759 4.49995 7.47ZM14.3999 18.1575C14.3999 19.4002 13.3926 20.4075 12.1499 20.4075C10.9073 20.4075 9.89995 19.4002 9.89995 18.1575C9.89995 16.9149 10.9073 15.9075 12.1499 15.9075C13.3926 15.9075 14.3999 16.9149 14.3999 18.1575ZM23.6249 20.4075C24.8676 20.4075 25.8749 19.4002 25.8749 18.1575C25.8749 16.9149 24.8676 15.9075 23.6249 15.9075C22.3823 15.9075 21.3749 16.9149 21.3749 18.1575C21.3749 19.4002 22.3823 20.4075 23.6249 20.4075ZM30.3749 10.845C30.3749 11.4663 29.8713 11.97 29.2499 11.97C28.6286 11.97 28.1249 11.4663 28.1249 10.845C28.1249 10.2237 28.6286 9.72001 29.2499 9.72001C29.8713 9.72001 30.3749 10.2237 30.3749 10.845ZM29.2499 17.0325C29.8713 17.0325 30.3749 16.5288 30.3749 15.9075C30.3749 15.2862 29.8713 14.7825 29.2499 14.7825C28.6286 14.7825 28.1249 15.2862 28.1249 15.9075C28.1249 16.5288 28.6286 17.0325 29.2499 17.0325ZM26.7187 12.2513C27.34 12.2513 27.8437 12.7549 27.8437 13.3763C27.8437 13.9976 27.34 14.5013 26.7187 14.5013C26.0974 14.5013 25.5937 13.9976 25.5937 13.3763C25.5937 12.7549 26.0974 12.2513 26.7187 12.2513ZM32.9062 13.3763C32.9062 12.7549 32.4025 12.2513 31.7812 12.2513C31.1599 12.2513 30.6562 12.7549 30.6562 13.3763C30.6562 13.9976 31.1599 14.5013 31.7812 14.5013C32.4025 14.5013 32.9062 13.9976 32.9062 13.3763ZM5.62495 10.7825C5.62495 10.5064 5.8488 10.2825 6.12495 10.2825H7.37495C7.65109 10.2825 7.87495 10.5064 7.87495 10.7825V11.7629C7.87495 11.8955 7.82227 12.0227 7.7285 12.1165L7.1035 12.7415C6.90824 12.9367 6.59166 12.9367 6.39639 12.7415L5.77139 12.1165C5.67763 12.0227 5.62495 11.8955 5.62495 11.7629V10.7825ZM6.12495 16.47C5.8488 16.47 5.62495 16.2462 5.62495 15.97V14.9896C5.62495 14.857 5.67763 14.7298 5.77139 14.6361L6.39639 14.0111C6.59166 13.8158 6.90824 13.8158 7.1035 14.0111L7.7285 14.6361C7.82227 14.7298 7.87495 14.857 7.87495 14.9896V15.97C7.87495 16.2462 7.65109 16.47 7.37495 16.47H6.12495ZM4.1562 14.5013C3.88006 14.5013 3.6562 14.2774 3.6562 14.0013V12.7513C3.6562 12.4751 3.88006 12.2513 4.1562 12.2513H5.13659C5.2692 12.2513 5.39638 12.3039 5.49014 12.3977L6.11514 13.0227C6.31041 13.218 6.31041 13.5346 6.11514 13.7298L5.49014 14.3548C5.39638 14.4486 5.2692 14.5013 5.13659 14.5013H4.1562ZM9.8437 14.0013C9.8437 14.2774 9.61984 14.5013 9.3437 14.5013H8.36331C8.2307 14.5013 8.10352 14.4486 8.00975 14.3548L7.38475 13.7298C7.18949 13.5346 7.18949 13.218 7.38475 13.0227L8.00975 12.3977C8.10352 12.3039 8.2307 12.2513 8.36331 12.2513H9.3437C9.61984 12.2513 9.8437 12.4751 9.8437 12.7513V14.0013Z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M23.0624 8.03251L12.9374 8.03251V12.5325H23.0624V8.03251Z",
                        }),
                      ),
                      i.createElement(
                        "defs",
                        null,
                        i.createElement(
                          "clipPath",
                          { id: r },
                          i.createElement("rect", {
                            fill: "currentColor",
                            width: "36",
                            height: "36",
                          }),
                        ),
                      ),
                    )
                : "ps5" == t
                  ? n
                    ? i.createElement(
                        "svg",
                        {
                          xmlns: "http://www.w3.org/2000/svg",
                          version: "1.1",
                          id: "Layer_1",
                          x: "0px",
                          y: "0px",
                          viewBox: "0 0 36 36",
                          ...o,
                        },
                        i.createElement("path", {
                          fill: "currentColor",
                          opacity: "0.5",
                          d: "M4.7,25.2c0.5-1.7,1.2-3.4,1.8-4.5c0.9-1.6,2.4-3.3,3.5-4.5c0.9-1,1.4-2.4,1.1-3.8l-0.7-3.8  c-0.1-0.4,0-0.7,0.3-0.9l0,0c-0.4,0-0.8,0.1-1.1,0.1V7.3c0,0,0-0.6-1.7-0.6c-1.3,0-2.6,0.7-3.1,1C4.6,7.8,4.5,8,4.5,8.2v0.6  C4.3,8.9,4.1,8.9,3.9,9C2.8,9.6,0,18,0,23.1c0,2.7,0.5,4.6,0.9,5.8c0.2,0.6,0.7,1.1,1.2,1.4l0.1,0c0.5,0.2,1-0.1,1.1-0.6  C3.7,28.6,4.1,26.9,4.7,25.2z M7.9,16.3c0,0.3-0.3,0.6-0.6,0.6H6.2c-0.3,0-0.6-0.3-0.6-0.6v-0.9c0-0.1,0.1-0.3,0.2-0.4l0.6-0.6  c0.2-0.2,0.6-0.2,0.8,0L7.7,15c0.1,0.1,0.2,0.2,0.2,0.4V16.3z M9,9.1c0.3-0.1,0.6,0,0.8,0.3l0.3,0.6c0.1,0.3,0,0.6-0.3,0.8  c-0.3,0.1-0.6,0-0.8-0.3L8.8,9.8C8.6,9.5,8.8,9.2,9,9.1z M8,12.8c0.1-0.1,0.2-0.2,0.4-0.2h0.9c0.3,0,0.6,0.3,0.6,0.6v1.1  c0,0.3-0.3,0.6-0.6,0.6H8.4c-0.1,0-0.3-0.1-0.4-0.2l-0.6-0.6c-0.2-0.2-0.2-0.6,0-0.8L8,12.8z M5.6,11.2c0-0.3,0.3-0.6,0.6-0.6h1.1  c0.3,0,0.6,0.3,0.6,0.6v0.9c0,0.1-0.1,0.3-0.2,0.4l-0.6,0.6c-0.2,0.2-0.6,0.2-0.8,0l-0.6-0.6c-0.1-0.1-0.2-0.2-0.2-0.4V11.2z   M3.7,13.2c0-0.3,0.3-0.6,0.6-0.6h0.9c0.1,0,0.3,0.1,0.4,0.2l0.6,0.6c0.2,0.2,0.2,0.6,0,0.8l-0.6,0.6c-0.1,0.1-0.2,0.2-0.4,0.2H4.2  c-0.3,0-0.6-0.3-0.6-0.6V13.2z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M23.8,13.5l0.6-2l0.5-3c0-0.2,0-0.3-0.1-0.4c-0.1-0.1-0.4-0.3-0.7-0.4c-0.1,0-0.2-0.1-0.3-0.1c-1.7-0.1-3.7-0.2-5.9-0.2v7.6  h4C22.8,14.9,23.6,14.3,23.8,13.5z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          opacity: "0.5",
                          d: "M12,7.5c-0.1,0-0.1,0-0.2,0.1c-0.3,0.1-0.5,0.3-0.7,0.4C11,8.2,11,8.3,11,8.5l0.5,2.9l0.6,2.1  c0.3,0.8,1,1.4,1.9,1.4h4V7.3C15.8,7.3,13.7,7.4,12,7.5z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          opacity: "0.5",
                          d: "M14,15.5c-1,0-2-0.6-2.4-1.6c-0.2,1-0.6,1.9-1.3,2.7C9.3,17.8,7.9,19.4,7,21c-0.6,1-1.2,2.7-1.8,4.4  c-0.5,1.7-1,3.4-1.3,4.5c-0.1,0.4-0.3,0.7-0.6,0.8l0,0c1,0.2,2-0.4,2.3-1.3l1.9-4.7c0.5-1.3,1.8-2.1,3.1-2.1H18v-7H14z M12.4,21.4  c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2s2.2,1,2.2,2.2S13.6,21.4,12.4,21.4z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M32.1,29.8c-0.3-1.1-0.7-2.8-1.3-4.5C30.2,23.6,29.6,22,29,21c-0.9-1.5-2.3-3.2-3.4-4.4c-0.7-0.8-1.1-1.7-1.3-2.7  c-0.4,1-1.3,1.6-2.4,1.6h-4v7h7.3c1.4,0,2.6,0.8,3.1,2.1l1.9,4.7c0.4,0.9,1.3,1.5,2.3,1.3l0,0C32.4,30.5,32.2,30.2,32.1,29.8z   M23.6,21.4c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2s2.2,1,2.2,2.2S24.9,21.4,23.6,21.4z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M32.1,9c-0.1-0.1-0.3-0.1-0.6-0.2V8.2c0-0.2-0.1-0.4-0.3-0.5c-0.5-0.3-1.8-1-3.1-1c-1.7,0-1.7,0.6-1.7,0.6v0.5  c-0.4,0-0.8-0.1-1.2-0.1l0,0c0.2,0.2,0.3,0.6,0.3,0.9l-0.5,3l0,0l0,0l-0.1,0.7c-0.2,1.4,0.2,2.8,1.1,3.8c1.1,1.2,2.5,3,3.5,4.5  c0.6,1.1,1.3,2.8,1.8,4.5c0.5,1.7,1,3.4,1.3,4.5c0.1,0.5,0.6,0.8,1.1,0.6l0.1,0c0.5-0.3,1-0.8,1.2-1.4c0.4-1.2,0.9-3.1,0.9-5.8  C36,18,33.2,9.6,32.1,9z M29.2,10.1c0.6,0,1.1,0.5,1.1,1.1s-0.5,1.1-1.1,1.1s-1.1-0.5-1.1-1.1S28.6,10.1,29.2,10.1z M25.9,9.9  l0.3-0.6C26.4,9,26.7,8.9,27,9.1c0.3,0.1,0.4,0.5,0.3,0.8l-0.3,0.6c-0.1,0.3-0.5,0.4-0.8,0.3C25.9,10.5,25.8,10.2,25.9,9.9z   M27,14.6c-0.6,0-1.1-0.5-1.1-1.1s0.5-1.1,1.1-1.1s1.1,0.5,1.1,1.1S27.6,14.6,27,14.6z M29.2,16.9c-0.6,0-1.1-0.5-1.1-1.1  s0.5-1.1,1.1-1.1s1.1,0.5,1.1,1.1S29.9,16.9,29.2,16.9z M31.5,14.6c-0.6,0-1.1-0.5-1.1-1.1s0.5-1.1,1.1-1.1s1.1,0.5,1.1,1.1  S32.1,14.6,31.5,14.6z",
                        }),
                      )
                    : i.createElement(
                        "svg",
                        {
                          xmlns: "http://www.w3.org/2000/svg",
                          viewBox: "0 0 36 36",
                          fill: "none",
                          ...o,
                        },
                        i.createElement("path", {
                          fill: "currentColor",
                          fillRule: "evenodd",
                          clipRule: "evenodd",
                          d: "M4.5 8.77962V8.17604C4.5 7.98797 4.59324 7.8129 4.75606 7.71875C5.29052 7.40971 6.58276 6.75 7.875 6.75C9.5625 6.75 9.5625 7.3125 9.5625 7.3125V7.79346C9.92732 7.74841 10.3079 7.7053 10.7038 7.66469L10.7001 7.66881C10.4768 7.91891 10.3639 8.22982 10.4289 8.58762L11.114 12.3555C11.3614 13.7163 10.9231 15.1154 9.99052 16.155C8.88458 17.3878 7.44481 19.1078 6.50883 20.6678C5.85918 21.7505 5.21964 23.4605 4.67636 25.1549C4.13086 26.8562 3.67463 28.5672 3.3961 29.6673C3.27268 30.1547 2.76181 30.4366 2.2902 30.2794L2.14425 30.2308C1.59878 29.9208 1.15999 29.4611 0.929107 28.8508C0.480791 27.6656 0 25.7647 0 23.0625C0 18 2.8125 9.5625 3.9375 9C4.07055 8.93348 4.25867 8.85908 4.5 8.77962ZM5.625 11.25C5.625 10.9393 5.87684 10.6875 6.1875 10.6875H7.3125C7.62316 10.6875 7.875 10.9393 7.875 11.25V12.142C7.875 12.2912 7.81574 12.4343 7.71025 12.5398L7.14775 13.1023C6.92808 13.3219 6.57192 13.3219 6.35225 13.1023L5.78975 12.5398C5.68426 12.4343 5.625 12.2912 5.625 12.142V11.25ZM5.625 16.3125C5.625 16.6232 5.87684 16.875 6.1875 16.875H7.3125C7.62316 16.875 7.875 16.6232 7.875 16.3125V15.4205C7.875 15.2713 7.81574 15.1282 7.71025 15.0227L7.14775 14.4602C6.92808 14.2406 6.57192 14.2406 6.35225 14.4602L5.78975 15.0227C5.68426 15.1282 5.625 15.2713 5.625 15.4205V16.3125ZM9.84375 14.3438C9.84375 14.6544 9.59191 14.9062 9.28125 14.9062H8.38924C8.24006 14.9062 8.09699 14.847 7.9915 14.7415L7.429 14.179C7.20933 13.9593 7.20933 13.6032 7.429 13.3835L7.9915 12.821C8.09699 12.7155 8.24006 12.6562 8.38925 12.6562H9.28125C9.59191 12.6562 9.84375 12.9081 9.84375 13.2188V14.3438ZM4.21875 14.9062C3.90809 14.9062 3.65625 14.6544 3.65625 14.3438V13.2188C3.65625 12.9081 3.90809 12.6562 4.21875 12.6562H5.11076C5.25994 12.6562 5.40301 12.7155 5.5085 12.821L6.071 13.3835C6.29067 13.6032 6.29067 13.9593 6.071 14.179L5.5085 14.7415C5.40301 14.847 5.25994 14.9062 5.11076 14.9062H4.21875ZM9.0297 9.05937C9.30756 8.92044 9.64544 9.03307 9.78437 9.31093L10.0656 9.87343C10.2046 10.1513 10.0919 10.4892 9.81406 10.6281C9.5362 10.767 9.19832 10.6544 9.05939 10.3765L8.77814 9.81404C8.63921 9.53618 8.75183 9.1983 9.0297 9.05937Z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M18 7.3125C15.7603 7.3125 13.748 7.4035 11.9892 7.54668C11.9209 7.57082 11.8551 7.59586 11.7919 7.62185C11.4768 7.75142 11.2526 7.89452 11.1197 8.04343C10.9961 8.18189 10.9523 8.32182 10.9824 8.48699L11.5138 11.4097L12.1573 13.5129C12.4103 14.3408 13.1744 14.9062 14.0401 14.9062H21.9642C22.8281 14.9062 23.591 14.3431 23.8456 13.5176L24.4729 11.483L25.0176 8.48699C25.0463 8.32909 25.0039 8.1935 24.8798 8.05684C24.7463 7.90988 24.5214 7.76808 24.2057 7.6392C24.1215 7.60486 24.0327 7.57213 23.9398 7.54094C22.1978 7.40107 20.2096 7.3125 18 7.3125Z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          fillRule: "evenodd",
                          clipRule: "evenodd",
                          d: "M3.37124 30.6556L3.34019 30.6503C3.62833 30.4606 3.84996 30.1665 3.94139 29.8054C4.2185 28.7109 4.67149 27.0124 5.212 25.3266C5.75474 23.6339 6.37801 21.9791 6.99117 20.9572C7.89825 19.4454 9.30802 17.7581 10.4092 16.5306C11.085 15.7773 11.5326 14.8493 11.6859 13.8677C12.0647 14.8275 12.9948 15.4687 14.0401 15.4687H21.9642C23.0065 15.4687 23.9345 14.8312 24.3153 13.8755C24.4698 14.8543 24.9168 15.7794 25.5908 16.5306C26.692 17.7581 28.1017 19.4454 29.0088 20.9572C29.622 21.9791 30.2453 23.6339 30.788 25.3266C31.3285 27.0124 31.7815 28.7109 32.0586 29.8054C32.15 30.1664 32.3717 30.4606 32.6598 30.6503L32.6288 30.6556C31.6413 30.8202 30.6725 30.275 30.3007 29.3455L28.4111 24.6216C27.8986 23.3402 26.6576 22.5 25.2775 22.5H10.7225C9.34243 22.5 8.10142 23.3402 7.58888 24.6216L5.69928 29.3455C5.3275 30.275 4.35868 30.8202 3.37124 30.6556ZM25.875 19.125C25.875 20.3676 24.8676 21.375 23.625 21.375C22.3824 21.375 21.375 20.3676 21.375 19.125C21.375 17.8824 22.3824 16.875 23.625 16.875C24.8676 16.875 25.875 17.8824 25.875 19.125ZM12.375 21.375C13.6176 21.375 14.625 20.3676 14.625 19.125C14.625 17.8824 13.6176 16.875 12.375 16.875C11.1324 16.875 10.125 17.8824 10.125 19.125C10.125 20.3676 11.1324 21.375 12.375 21.375Z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          fillRule: "evenodd",
                          clipRule: "evenodd",
                          d: "M33.7098 30.2794L33.8557 30.2308C34.4012 29.9208 34.84 29.4611 35.0709 28.8508C35.5192 27.6656 36 25.7647 36 23.0625C36 18 33.1875 9.5625 32.0625 9C31.9295 8.93348 31.7413 8.85908 31.5 8.77962V8.17604C31.5 7.98797 31.4068 7.8129 31.2439 7.71875C30.7095 7.40971 29.4172 6.75 28.125 6.75C26.4375 6.75 26.4375 7.3125 26.4375 7.3125V7.79346C26.0683 7.74787 25.683 7.70427 25.282 7.66324L25.2962 7.67864C25.52 7.92502 25.6356 8.23268 25.5711 8.58762L25.0274 11.5776L25.0319 11.579L25.0203 11.6166L24.886 12.3555C24.6386 13.7163 25.0769 15.1154 26.0095 16.155C27.1154 17.3878 28.5552 19.1078 29.4912 20.6678C30.1408 21.7505 30.7804 23.4605 31.3236 25.1549C31.8691 26.8562 32.3254 28.5672 32.6039 29.6673C32.7273 30.1547 33.2382 30.4366 33.7098 30.2794ZM26.2156 9.31093C26.3546 9.03307 26.6924 8.92044 26.9703 9.05937C27.2482 9.1983 27.3608 9.53618 27.2219 9.81404L26.9406 10.3765C26.8017 10.6544 26.4638 10.767 26.1859 10.6281C25.9081 10.4892 25.7954 10.1513 25.9344 9.87343L26.2156 9.31093ZM30.375 15.75C30.375 16.3713 29.8713 16.875 29.25 16.875C28.6287 16.875 28.125 16.3713 28.125 15.75C28.125 15.1287 28.6287 14.625 29.25 14.625C29.8713 14.625 30.375 15.1287 30.375 15.75ZM31.5 14.625C32.1213 14.625 32.625 14.1213 32.625 13.5C32.625 12.8787 32.1213 12.375 31.5 12.375C30.8787 12.375 30.375 12.8787 30.375 13.5C30.375 14.1213 30.8787 14.625 31.5 14.625ZM30.375 11.25C30.375 11.8713 29.8713 12.375 29.25 12.375C28.6287 12.375 28.125 11.8713 28.125 11.25C28.125 10.6287 28.6287 10.125 29.25 10.125C29.8713 10.125 30.375 10.6287 30.375 11.25ZM27 14.625C27.6213 14.625 28.125 14.1213 28.125 13.5C28.125 12.8787 27.6213 12.375 27 12.375C26.3787 12.375 25.875 12.8787 25.875 13.5C25.875 14.1213 26.3787 14.625 27 14.625Z",
                        }),
                      )
                  : "switchpro" == t
                    ? i.createElement(
                        "svg",
                        {
                          xmlns: "http://www.w3.org/2000/svg",
                          viewBox: "0 0 36 36",
                          fill: "none",
                          ...o,
                        },
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M3.375 30.375C0 30.375 0 25.875 0 25.875C0 25.875 0.679114 19.5689 1.65511 14.6014C2.11919 15.2235 2.72448 16.0277 3.42078 16.936C4.97674 18.9655 6.99227 21.5211 8.90421 23.7256C8.37233 24.3118 7.95006 25.2335 7.50451 26.2061C6.59778 28.1853 5.59464 30.375 3.375 30.375Z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          fillRule: "evenodd",
                          clipRule: "evenodd",
                          d: "M9.94135 23.2037C10.5784 23.0625 11.25 23.0625 11.25 23.0625H24.75C24.75 23.0625 25.4216 23.0625 26.0586 23.2037C28.0029 20.9779 30.0841 18.3414 31.6864 16.2515C32.493 15.1994 33.1768 14.2877 33.6589 13.639C33.8038 13.444 33.9305 13.2728 34.0368 13.1288C33.6024 11.1876 33.1223 9.62156 32.625 8.99998C30.9375 6.75 24.75 6.75 24.75 6.75H11.25C11.25 6.75 5.0625 6.75 3.375 8.99998C2.87774 9.62156 2.39764 11.1876 1.96319 13.1288C2.06947 13.2728 2.19616 13.444 2.34111 13.639C2.82318 14.2877 3.50702 15.1994 4.31359 16.2515C5.91589 18.3414 7.99714 20.9779 9.94135 23.2037ZM27.5062 9.11247C28.2829 9.11247 28.9125 9.74207 28.9125 10.5187C28.9125 11.2954 28.2829 11.925 27.5062 11.925C26.7296 11.925 26.1 11.2954 26.1 10.5187C26.1 9.74207 26.7296 9.11247 27.5062 9.11247ZM8.1 15.1875C9.34264 15.1875 10.35 14.1801 10.35 12.9375C10.35 11.6949 9.34264 10.6875 8.1 10.6875C6.85736 10.6875 5.85 11.6949 5.85 12.9375C5.85 14.1801 6.85736 15.1875 8.1 15.1875ZM22.725 20.25C23.9676 20.25 24.975 19.2426 24.975 18C24.975 16.7574 23.9676 15.75 22.725 15.75C21.4824 15.75 20.475 16.7574 20.475 18C20.475 19.2426 21.4824 20.25 22.725 20.25ZM31.725 13.1063C31.725 13.8829 31.0954 14.5125 30.3187 14.5125C29.5421 14.5125 28.9125 13.8829 28.9125 13.1063C28.9125 12.3296 29.5421 11.7 30.3187 11.7C31.0954 11.7 31.725 12.3296 31.725 13.1063ZM24.6937 14.5125C25.4704 14.5125 26.1 13.8829 26.1 13.1063C26.1 12.3296 25.4704 11.7 24.6937 11.7C23.9171 11.7 23.2875 12.3296 23.2875 13.1063C23.2875 13.8829 23.9171 14.5125 24.6937 14.5125ZM28.9125 15.4688C28.9125 14.6921 28.2829 14.0625 27.5062 14.0625C26.7296 14.0625 26.1 14.6921 26.1 15.4688C26.1 16.2454 26.7296 16.875 27.5062 16.875C28.2829 16.875 28.9125 16.2454 28.9125 15.4688ZM11.5312 17.1562V16.3125C11.5312 16.0018 11.7831 15.75 12.0938 15.75H13.2188C13.5294 15.75 13.7812 16.0018 13.7812 16.3125V17.1562H14.625C14.9357 17.1562 15.1875 17.4081 15.1875 17.7188V18.8438C15.1875 19.1544 14.9357 19.4062 14.625 19.4062H13.7812V20.25C13.7812 20.5607 13.5294 20.8125 13.2188 20.8125H12.0938C11.7831 20.8125 11.5312 20.5607 11.5312 20.25V19.4062H10.6875C10.3768 19.4062 10.125 19.1544 10.125 18.8438V17.7188C10.125 17.4081 10.3768 17.1562 10.6875 17.1562H11.5312Z",
                        }),
                        i.createElement("path", {
                          fill: "currentColor",
                          d: "M34.3449 14.6014C33.8808 15.2235 33.2755 16.0277 32.5792 16.936C31.0233 18.9655 29.0077 21.5211 27.0958 23.7256C27.6277 24.3118 28.0499 25.2335 28.4955 26.2061C29.4022 28.1853 30.4054 30.375 32.625 30.375C36 30.375 36 25.875 36 25.875C36 25.875 35.3209 19.5689 34.3449 14.6014Z",
                        }),
                      )
                    : "hori" == t
                      ? i.createElement(
                          "svg",
                          {
                            xmlns: "http://www.w3.org/2000/svg",
                            viewBox: "0 0 279 190",
                            fill: "none",
                            ...e,
                          },
                          i.createElement("path", {
                            fill: "currentColor",
                            d: "M276.557 118.966L276.377 117.587C276.377 117.575 274.727 107.206 273.807 102.575C269.077 78.747 262.957 53.718 255.596 28.199C255.448 27.679 255.207 27.26 255.037 26.988C254.957 26.869 254.867 26.759 254.766 26.658C254.766 26.658 249.118 21.029 248.778 20.67C248.038 19.889 247.266 19.08 246.438 18.549C246.297 18.459 245.557 18.139 245.288 18.01C244.495 17.629 243.956 17.379 243.556 17.209C243.546 17.17 243.536 17.129 243.527 17.09C243.496 17.01 243.476 16.94 243.447 16.86C243.426 16.819 243.406 16.78 243.386 16.751C242.585 15.05 241.675 13.36 240.796 11.72L240.505 11.159C240.386 10.94 240.263 10.751 240.073 10.591C239.891 10.402 239.675 10.28 239.565 10.21C239.545 10.2 239.276 10.03 239.165 9.98C233.625 7.511 222.858 3.701 222.846 3.701C219.718 2.41 216.278 1.191 212.038 -0.149C210.688 -0.579 208.877 -1.079 206.926 -1.079C206.127 -1.079 205.346 -0.989 204.617 -0.819C202.926 -1.13 201.287 -1.409 199.717 -1.639C199.688 -1.649 197.457 -1.94 197.197 -1.969C197.047 -1.998 196.916 -1.998 196.787 -1.998C196.057 -1.998 195.346 -1.719 194.807 -1.219C194.647 -1.1 194.516 -0.949 194.397 -0.78C194.137 -0.44 192.708 1.441 191.688 2.762C177.307 1.89 161.506 1.431 142.077 1.332C142.067 1.332 126.397 1.41 126.097 1.41C126.097 1.41 106.898 1.832 98.2062 2.192C96.7762 2.262 95.4972 2.311 94.2672 2.362C91.9492 2.442 89.7382 2.522 87.0972 2.741C86.2072 1.568 85.1272 0.138 84.3972 -0.842C84.2972 -0.981 84.1762 -1.102 84.0472 -1.201C83.5862 -1.592 82.8462 -2 81.7762 -2C81.1862 -2 80.6712 -1.873 80.2082 -1.791C79.9482 -1.744 75.8272 -1.121 74.1872 -0.82C73.4472 -0.99 72.6672 -1.08 71.8472 -1.08C70.7772 -1.08 69.6172 -0.932 68.4272 -0.631C68.3982 -0.621 68.3662 -0.621 68.3372 -0.611C64.0462 0.649 59.8762 2.1 55.9682 3.69C55.9472 3.7 55.9272 3.71 55.9072 3.719C50.6372 5.408 45.1672 7.51 39.6372 9.979C39.3262 10.12 39.0262 10.35 38.8262 10.629L38.7172 10.779C38.7172 10.779 38.4242 11.22 38.2662 11.439C36.8362 13.548 35.8972 15.429 35.4162 17.148C34.9962 17.308 34.4262 17.58 33.5252 18.009C33.2552 18.138 32.7962 18.339 32.7752 18.349C32.0862 18.599 31.5152 19.148 30.6562 20.038C30.5062 20.188 30.4062 20.308 30.3362 20.368C30.3162 20.388 28.7562 21.948 28.7562 21.948C28.0572 22.657 26.4672 24.237 26.4362 24.268C26.2172 24.508 25.8872 24.817 25.5462 25.147C24.8362 25.829 24.1162 26.518 23.6062 27.249C23.5462 27.339 23.4972 27.429 23.4472 27.519C23.4072 27.619 23.3562 27.738 23.3272 27.839C22.5872 30.359 21.8172 33.038 21.1062 35.577C19.0462 42.827 16.9662 50.677 14.5372 60.247C10.0162 78.858 5.34716 98.065 2.43616 117.526C2.43616 117.546 2.33616 118.296 2.33616 118.296C0.536161 131.837 -1.33384 145.837 1.32616 159.616C2.81616 167.177 5.24616 173.155 8.77516 177.915C12.3162 182.905 17.4162 186.677 23.0952 188.507C26.2162 189.446 29.3752 189.927 32.5352 189.927C38.5052 189.927 44.0242 188.245 48.4852 185.075C59.3742 177.235 65.4952 162.106 70.8852 148.757C71.9242 146.187 73.9052 141.437 73.9142 141.405C74.1642 140.745 74.4532 139.995 74.7732 139.266C74.9942 138.846 75.9742 137.455 76.1442 137.196C76.3042 137.016 76.9842 136.257 77.1542 136.065C79.5332 133.805 82.6482 132.481 85.7182 132.45C85.7182 132.45 85.8862 132.448 86.1632 132.427H188.003C189.583 132.427 191.153 132.427 192.714 132.437C196.464 132.447 200.064 134.107 202.343 136.857C203.105 137.796 203.663 138.607 204.083 139.377C204.083 139.377 206.903 146.246 207.954 148.848C213.263 161.996 219.294 176.897 230.013 184.858C234.542 188.178 240.152 189.938 246.254 189.938C249.404 189.938 252.574 189.458 255.674 188.518C261.225 186.717 266.235 183.077 269.805 178.247C273.616 173.108 276.225 166.667 277.555 159.099C280.077 145.726 278.288 132.117 276.557 118.966ZM59.3422 67.242C51.7742 67.242 45.6172 61.086 45.6172 53.519C45.6172 45.951 51.7732 39.796 59.3422 39.796C66.9082 39.796 73.0652 45.95 73.0652 53.519C73.0652 61.085 66.9092 67.242 59.3422 67.242ZM121.963 93.212C121.965 93.267 121.955 93.294 121.947 93.335C121.586 95.048 120.058 96.29 118.31 96.29H108.806C108.769 96.29 108.755 96.292 108.701 96.29C108.453 96.347 108.267 96.546 108.267 96.811L108.3 106.147C108.3 106.182 108.302 106.217 108.302 106.258C108.302 108.006 107.062 109.535 105.349 109.893C105.337 109.897 105.324 109.899 105.312 109.899C103.865 110.2 102.408 110.35 100.951 110.35C99.4922 110.35 98.0332 110.198 96.5842 109.897C96.5742 109.897 96.5642 109.895 96.5552 109.893C94.8522 109.538 93.6142 108.022 93.6022 106.282V106.276V96.831C93.6022 96.788 93.6062 96.802 93.6022 96.759C93.5862 96.519 93.3872 96.325 93.1512 96.29C93.1162 96.292 93.0962 96.29 93.0632 96.29H83.6492C83.6452 96.29 83.6372 96.29 83.6332 96.29C81.8832 96.29 80.3562 95.048 79.9962 93.335C79.9922 93.323 79.9922 93.312 79.9902 93.3C79.3882 90.404 79.3882 87.47 79.9922 84.575C79.9922 84.563 79.9942 84.552 79.9962 84.54C80.3552 82.829 81.8812 81.622 83.6292 81.622C83.6762 81.622 83.7112 81.626 83.7642 81.624H93.0632C93.3482 81.624 93.5752 81.433 93.6272 81.179C93.6352 81.138 93.6312 81.113 93.6312 81.079L93.6022 71.6C93.6022 69.834 94.8442 68.303 96.5552 67.946C96.6062 67.936 96.6332 67.928 96.6862 67.919C99.5162 67.345 102.403 67.343 105.235 67.919C105.309 67.939 105.309 67.939 105.35 67.948C107.063 68.303 108.26 69.835 108.26 71.583C108.26 71.63 108.27 71.665 108.268 71.714V81.066C108.268 81.375 108.518 81.625 108.825 81.625L118.198 81.594C118.255 81.594 118.272 81.588 118.311 81.588C120.059 81.588 121.532 82.83 121.891 84.541C121.901 84.59 121.914 84.621 121.936 84.697C122.51 87.527 122.541 90.38 121.963 93.212ZM139.012 41.652C132.371 41.652 126.967 36.25 126.967 29.608C126.967 22.965 132.371 17.561 139.012 17.561C145.657 17.561 151.059 22.965 151.059 29.608C151.059 36.249 145.657 41.652 139.012 41.652ZM177.129 102.644C169.563 102.644 163.406 96.488 163.406 88.921C163.406 81.353 169.562 75.198 177.129 75.198C184.697 75.198 190.854 81.352 190.854 88.921C190.854 96.488 184.698 102.644 177.129 102.644ZM201.75 62.714C196.811 62.714 192.791 58.694 192.791 53.755C192.791 48.816 196.811 44.794 201.75 44.794C206.691 44.794 210.711 48.815 210.711 53.755C210.711 58.695 206.692 62.714 201.75 62.714ZM222.356 82.827C217.417 82.827 213.397 78.811 213.397 73.87C213.397 68.929 217.417 64.909 222.356 64.909C227.297 64.909 231.316 68.929 231.316 73.87C231.316 78.811 227.297 82.827 222.356 82.827ZM222.356 41.673C217.417 41.673 213.397 37.653 213.397 32.715C213.397 27.774 217.417 23.756 222.356 23.756C227.297 23.756 231.316 27.774 231.316 32.715C231.317 37.654 227.297 41.673 222.356 41.673ZM242.657 62.714C237.715 62.714 233.696 58.694 233.696 53.755C233.696 48.816 237.716 44.794 242.657 44.794C247.598 44.794 251.618 48.815 251.618 53.755C251.618 58.695 247.598 62.714 242.657 62.714Z",
                          }),
                        )
                      : i.createElement(l, { ...o });
        }
        function m(e) {
          const { controllerType: t, ...n } = e;
          switch (t) {
            case 4:
              return i.createElement(d, { ...n });
            case 34:
            case 47:
              return i.createElement(c, { type: "ps4", ...n });
            case 45:
            case 48:
              return i.createElement(c, { type: "ps5", ...n });
            case 2:
              return i.createElement(c, { type: "steam", ...n });
            case 31:
            case 32:
            case 46:
              return i.createElement(c, { type: "xbox", ...n });
            case 42:
            case 39:
            case 40:
            case 41:
            case 38:
            case 44:
              return i.createElement(c, { type: "switchpro", ...n });
            case 49:
              return i.createElement(c, { type: "hori", ...n });
            default:
              return i.createElement(c, { type: "generic", ...n });
          }
        }
        function d(e) {
          const { type: t, partial: n, ...o } = e;
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...o,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M0 11C0 9.89543 0.895431 9 2 9H34C35.1046 9 36 9.89543 36 11V24C36 25.6569 34.6569 27 33 27H3C1.34315 27 0 25.6569 0 24V11ZM33 16C33 16.5523 32.5523 17 32 17C31.4477 17 31 16.5523 31 16C31 15.4477 31.4477 15 32 15C32.5523 15 33 15.4477 33 16ZM32 13C32.5523 13 33 12.5523 33 12C33 11.4477 32.5523 11 32 11C31.4477 11 31 11.4477 31 12C31 12.5523 31.4477 13 32 13ZM35 14C35 14.5523 34.5523 15 34 15C33.4477 15 33 14.5523 33 14C33 13.4477 33.4477 13 34 13C34.5523 13 35 13.4477 35 14ZM30 15C30.5523 15 31 14.5523 31 14C31 13.4477 30.5523 13 30 13C29.4477 13 29 13.4477 29 14C29 14.5523 29.4477 15 30 15ZM6 14C6 15.1046 5.10457 16 4 16C2.89543 16 2 15.1046 2 14C2 12.8954 2.89543 12 4 12C5.10457 12 6 12.8954 6 14ZM2.5 21C2.22386 21 2 21.2239 2 21.5V24.5C2 24.7761 2.22386 25 2.5 25H5.5C5.77614 25 6 24.7761 6 24.5V21.5C6 21.2239 5.77614 21 5.5 21H2.5ZM30 21.5C30 21.2239 30.2239 21 30.5 21H33.5C33.7761 21 34 21.2239 34 21.5V24.5C34 24.7761 33.7761 25 33.5 25H30.5C30.2239 25 30 24.7761 30 24.5V21.5ZM28 11H8V25H28V11Z",
            }),
          );
        }
        function u(e) {
          return e.flVolume < Number.EPSILON
            ? i.createElement(g, { color: e.color })
            : e.flVolume < 0.3 + Number.EPSILON
              ? i.createElement(_, { color: e.color })
              : e.flVolume < 0.6 + Number.EPSILON
                ? i.createElement(p, { color: e.color })
                : i.createElement(h, { color: e.color });
        }
        function h(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M5.63636 13L10 7H13V29H10L5.63636 23H2V13H5.63636Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M24.7279 30.7279C31.7573 23.6985 31.7573 12.3015 24.7279 5.27209L27.5563 2.44366C36.1479 11.0352 36.1479 24.9648 27.5563 33.5564L24.7279 30.7279Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M20.4853 9.51471C25.1716 14.201 25.1716 21.799 20.4853 26.4853L23.3137 29.3137C29.5621 23.0653 29.5621 12.9347 23.3137 6.68628L20.4853 9.51471Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M16.2426 13.7574C18.5858 16.1005 18.5858 19.8995 16.2426 22.2426L19.071 25.0711C22.9763 21.1658 22.9763 14.8342 19.071 10.9289L16.2426 13.7574Z",
              fill: "currentColor",
            }),
          );
        }
        function p(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M5.63636 13L10 7H13V29H10L5.63636 23H2V13H5.63636Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              opacity: "0.5",
              d: "M24.7279 30.7279C31.7573 23.6985 31.7573 12.3015 24.7279 5.27209L27.5563 2.44366C36.1479 11.0352 36.1479 24.9648 27.5563 33.5564L24.7279 30.7279Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M20.4853 9.51471C25.1716 14.201 25.1716 21.799 20.4853 26.4853L23.3137 29.3137C29.5621 23.0653 29.5621 12.9347 23.3137 6.68628L20.4853 9.51471Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M16.2426 13.7574C18.5858 16.1005 18.5858 19.8995 16.2426 22.2426L19.071 25.0711C22.9763 21.1658 22.9763 14.8342 19.071 10.9289L16.2426 13.7574Z",
              fill: "currentColor",
            }),
          );
        }
        function _(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M5.63636 13L10 7H13V29H10L5.63636 23H2V13H5.63636Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              opacity: "0.5",
              d: "M24.7279 30.7279C31.7573 23.6985 31.7573 12.3015 24.7279 5.27209L27.5563 2.44366C36.1479 11.0352 36.1479 24.9648 27.5563 33.5564L24.7279 30.7279Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              opacity: "0.5",
              d: "M20.4853 9.51471C25.1716 14.201 25.1716 21.799 20.4853 26.4853L23.3137 29.3137C29.5621 23.0653 29.5621 12.9347 23.3137 6.68628L20.4853 9.51471Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M16.2426 13.7574C18.5858 16.1005 18.5858 19.8995 16.2426 22.2426L19.071 25.0711C22.9763 21.1658 22.9763 14.8342 19.071 10.9289L16.2426 13.7574Z",
              fill: "currentColor",
            }),
          );
        }
        function g(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M5.63636 13L10 7H13V29H10L5.63636 23H2V13H5.63636Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M27.8284 18L33.4142 23.5858L30.5858 26.4142L25 20.8285L19.4142 26.4142L16.5858 23.5858L22.1716 18L16.5858 12.4142L19.4142 9.58578L25 15.1716L30.5858 9.58578L33.4142 12.4142L27.8284 18Z",
              fill: "currentColor",
            }),
          );
        }
        function C(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M2 9H34V27H2V9ZM5 13H7V15H5V13ZM7 21H5V23H7V21ZM5 17H9V19H5V17ZM11 13H9V15H11V13ZM9 21H27V23H9V21ZM15 13H13V15H15V13ZM11 17H13V19H11V17ZM19 13H17V15H19V13ZM15 17H17V19H15V17ZM21 17H19V19H21V17ZM21 13H23V15H21V13ZM25 17H23V19H25V17ZM25 13H27V15H25V13ZM31 13H29V15H31V13ZM29 21H31V23H29V21ZM31 17H27V19H31V17Z",
            }),
          );
        }
        function f(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M14 3C10.6863 3 8 5.68629 8 9V23C8 28.5228 12.4772 33 18 33C23.5228 33 28 28.5228 28 23V9C28 5.68629 25.3137 3 22 3H21V14C21 15.6569 19.6569 17 18 17C16.3431 17 15 15.6569 15 14V3H14Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M17 5H19V11H17V5Z",
            }),
          );
        }
        function S(e) {
          const { direction: t, ...n } = e;
          switch (t) {
            case "up":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...n,
                },
                i.createElement("path", {
                  d: "M17.98 10.23L3.20996 25H32.75L17.98 10.23Z",
                  fill: "currentColor",
                }),
              );
            case "down":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...n,
                },
                i.createElement("path", {
                  d: "M17.98 26.54L3.20996 11.77H32.75L17.98 26.54Z",
                  fill: "currentColor",
                }),
              );
            case "left":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...n,
                },
                i.createElement("path", {
                  d: "M9.82497 18.385L24.595 3.61499L24.595 33.155L9.82497 18.385Z",
                  fill: "currentColor",
                }),
              );
            case "right":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...n,
                },
                i.createElement("path", {
                  d: "M26.135 18.385L11.365 33.155L11.365 3.61503L26.135 18.385Z",
                  fill: "currentColor",
                }),
              );
          }
        }
        function v(e) {
          const { direction: t, ...n } = e;
          switch (t) {
            case "up":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  fill: "currentColor",
                  d: "M31 15.6394L18.0204 3L5 15.6394L8.60376 19.1432L18.0204 10.0076L27.4166 19.1432L31 15.6394ZM27.3962 33L18.0204 23.8644L8.62412 33L5 29.4962L18.0204 16.8568L31 29.4962L27.3962 33Z",
                }),
              );
            case "down":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  fill: "currentColor",
                  d: "M31 20.3606L18.0204 33L5 20.3606L8.60376 16.8568L18.0204 25.9924L27.4166 16.8568L31 20.3606ZM27.3962 3L18.0204 12.1356L8.62412 3L5 6.50379L18.0204 19.1432L31 6.50379L27.3962 3Z",
                }),
              );
            case "left":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  d: "M14.23 30.75L1.45996 18L14.23 5.20999L17.77 8.74999L8.53996 18L17.77 27.23L14.23 30.75ZM31.77 27.21L22.54 18L31.77 8.76999L28.23 5.20999L15.46 18L28.23 30.75L31.77 27.21Z",
                  fill: "currentColor",
                }),
              );
            case "right":
              return i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  d: "M19 30.75L31.77 18L19 5.20999L15.46 8.74999L24.69 18L15.46 27.23L19 30.75ZM1.46002 27.21L10.69 18L1.46002 8.76999L5.00002 5.20999L17.77 18L5.00002 30.75L1.46002 27.21Z",
                  fill: "currentColor",
                }),
              );
          }
        }
        function b(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M7.5 32.135a1 1 0 0 1-1.5-.866V4.73a1 1 0 0 1 1.5-.866l22.999 13.269a1 1 0 0 1 0 1.732l-23 13.269Z",
              fill: "currentColor",
            }),
          );
        }
        function I(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M32.12 7.41L28.59 3.88L18 14.46L7.41 3.88L3.88 7.41L14.46 18L3.88 28.59L7.41 32.12L18 21.54L28.59 32.12L32.12 28.59L21.54 18L32.12 7.41Z",
              fill: "currentColor",
            }),
          );
        }
        function w(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M7 2V34H29V2H7ZM18 32C17.5055 32 17.0222 31.8534 16.6111 31.5787C16.2 31.304 15.8795 30.9135 15.6903 30.4567C15.5011 29.9999 15.4516 29.4972 15.548 29.0123C15.6445 28.5273 15.8826 28.0819 16.2322 27.7322C16.5819 27.3826 17.0273 27.1445 17.5123 27.048C17.9972 26.9516 18.4999 27.0011 18.9567 27.1903C19.4135 27.3795 19.804 27.7 20.0787 28.1111C20.3534 28.5222 20.5 29.0055 20.5 29.5C20.5 29.8283 20.4353 30.1534 20.3097 30.4567C20.1841 30.76 19.9999 31.0356 19.7678 31.2678C19.5356 31.4999 19.26 31.6841 18.9567 31.8097C18.6534 31.9353 18.3283 32 18 32ZM25 25H11V6H25V25Z",
              fill: "currentColor",
            }),
          );
        }
        function y(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
              className: (0, s.A)(e.className, r().Spinner),
            },
            i.createElement("path", {
              d: "M18 10C17.4696 10 16.9609 9.78929 16.5858 9.41421C16.2107 9.03914 16 8.53043 16 8V3H20V8C20 8.53043 19.7893 9.03914 19.4142 9.41421C19.0391 9.78929 18.5304 10 18 10Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M23.66 12.34C23.2875 11.9653 23.0784 11.4584 23.0784 10.93C23.0784 10.4016 23.2875 9.89473 23.66 9.52L27.19 6L30 8.81L26.47 12.34C26.0957 12.7095 25.5909 12.9166 25.065 12.9166C24.5391 12.9166 24.0343 12.7095 23.66 12.34Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M33 20H28C27.4696 20 26.9609 19.7893 26.5858 19.4142C26.2107 19.0391 26 18.5304 26 18C26 17.4696 26.2107 16.9609 26.5858 16.5858C26.9609 16.2107 27.4696 16 28 16H33V20Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M27.19 30L23.66 26.46C23.2875 26.0853 23.0784 25.5783 23.0784 25.05C23.0784 24.5216 23.2875 24.0147 23.66 23.64C23.8458 23.454 24.0663 23.3065 24.3091 23.2059C24.5519 23.1052 24.8122 23.0534 25.075 23.0534C25.3378 23.0534 25.5981 23.1052 25.8409 23.2059C26.0837 23.3065 26.3043 23.454 26.49 23.64L30 27.19L27.19 30Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M20 33H16V28C16 27.4696 16.2107 26.9609 16.5858 26.5858C16.9609 26.2107 17.4696 26 18 26C18.5304 26 19.0391 26.2107 19.4142 26.5858C19.7893 26.9609 20 27.4696 20 28V33Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M8.81 30L6 27.19L9.53 23.66C9.71575 23.474 9.93632 23.3265 10.1791 23.2259C10.4219 23.1252 10.6822 23.0734 10.945 23.0734C11.2078 23.0734 11.4681 23.1252 11.7109 23.2259C11.9537 23.3265 12.1743 23.474 12.36 23.66C12.7325 24.0347 12.9416 24.5416 12.9416 25.07C12.9416 25.5984 12.7325 26.1053 12.36 26.48L8.81 30Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M8 20H3V16H8C8.53043 16 9.03914 16.2107 9.41421 16.5858C9.78929 16.9609 10 17.4696 10 18C10 18.5304 9.78929 19.0391 9.41421 19.4142C9.03914 19.7893 8.53043 20 8 20Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M9.51 12.34L6 8.81L8.81 6L12.34 9.54C12.7125 9.91472 12.9216 10.4216 12.9216 10.95C12.9216 11.4784 12.7125 11.9853 12.34 12.36C12.1529 12.5446 11.9313 12.6906 11.6878 12.7895C11.4443 12.8885 11.1837 12.9385 10.9209 12.9366C10.658 12.9347 10.3981 12.8811 10.156 12.7787C9.91396 12.6764 9.69443 12.5273 9.51 12.34Z",
              fill: "currentColor",
            }),
          );
        }
        function E(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M7 14H29L27 32H9L7 14ZM24 6L22 2H14L12 6H4V10H32V6H24Z",
              fill: "currentColor",
            }),
          );
        }
        function D(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M30 32H6V31C6 27.8174 7.26428 24.7652 9.51472 22.5147C11.7652 20.2643 14.8174 19 18 19C21.1826 19 24.2348 20.2643 26.4853 22.5147C28.7357 24.7652 30 27.8174 30 31V32ZM18 3C16.8133 3 15.6533 3.35189 14.6666 4.01118C13.6799 4.67047 12.9108 5.60754 12.4567 6.7039C12.0026 7.80026 11.8838 9.00666 12.1153 10.1705C12.3468 11.3344 12.9182 12.4035 13.7574 13.2426C14.5965 14.0818 15.6656 14.6532 16.8295 14.8847C17.9933 15.1162 19.1997 14.9974 20.2961 14.5433C21.3925 14.0892 22.3295 13.3201 22.9888 12.3334C23.6481 11.3467 24 10.1867 24 9C24 7.4087 23.3679 5.88258 22.2426 4.75736C21.1174 3.63214 19.5913 3 18 3Z",
              fill: "currentColor",
            }),
          );
        }
        function A(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M9.66645 5.52796C12.1332 3.87973 15.0333 3 18 3C19.9698 3 21.9204 3.38799 23.7403 4.14181C25.5601 4.89563 27.2137 6.00052 28.6066 7.3934C29.9995 8.78628 31.1044 10.4399 31.8582 12.2597C32.612 14.0796 33 16.0302 33 18C33 20.9667 32.1203 23.8668 30.472 26.3336C28.8238 28.8003 26.4811 30.7229 23.7403 31.8582C20.9994 32.9935 17.9834 33.2906 15.0737 32.7118C12.1639 32.133 9.49119 30.7044 7.3934 28.6066C5.29562 26.5088 3.86701 23.8361 3.28823 20.9264C2.70945 18.0166 3.0065 15.0006 4.14181 12.2597C5.27713 9.51886 7.19972 7.17618 9.66645 5.52796ZM9.5056 13.3333C9.17595 13.8266 9.00001 14.4067 9.00001 15C9.00001 15.7956 9.31608 16.5587 9.87869 17.1213C10.4413 17.6839 11.2044 18 12 18C12.5934 18 13.1734 17.8241 13.6667 17.4944C14.1601 17.1648 14.5446 16.6962 14.7716 16.1481C14.9987 15.5999 15.0581 14.9967 14.9424 14.4147C14.8266 13.8328 14.5409 13.2982 14.1213 12.8787C13.7018 12.4591 13.1672 12.1734 12.5853 12.0576C12.0033 11.9419 11.4001 12.0013 10.852 12.2284C10.3038 12.4554 9.83524 12.8399 9.5056 13.3333ZM22.3333 17.4944C22.8266 17.8241 23.4067 18 24 18C24.7957 18 25.5587 17.6839 26.1213 17.1213C26.6839 16.5587 27 15.7956 27 15C27 14.4067 26.8241 13.8266 26.4944 13.3333C26.1648 12.8399 25.6962 12.4554 25.1481 12.2284C24.5999 12.0013 23.9967 11.9419 23.4147 12.0576C22.8328 12.1734 22.2982 12.4591 21.8787 12.8787C21.4591 13.2982 21.1734 13.8328 21.0576 14.4147C20.9419 14.9967 21.0013 15.5999 21.2284 16.1481C21.4554 16.6962 21.8399 17.1648 22.3333 17.4944ZM23 22C23 23.3261 22.4732 24.5979 21.5355 25.5355C20.5979 26.4732 19.3261 27 18 27C16.6739 27 15.4021 26.4732 14.4645 25.5355C13.5268 24.5979 13 23.3261 13 22H23Z",
              fill: "currentColor",
            }),
          );
        }
        function T(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M2 6.05005V30.05H34V6.05005H2ZM8 27.05H5V23.05H8V27.05ZM8 20.05H5V16.05H8V20.05ZM8 13.05H5V9.05005H8V13.05ZM14 23.82V12.28L24 18.05L14 23.82ZM31 27.05H28V23.05H31V27.05ZM31 20.05H28V16.05H31V20.05ZM31 13.05H28V9.05005H31V13.05Z",
              fill: "currentColor",
            }),
          );
        }
        function M(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M12.73 28.34C15.6223 29.3235 18.732 29.4785 21.7078 28.7876C24.6836 28.0966 27.4069 26.5873 29.57 24.43L36 18L29.57 11.57C28 10 26.5 9 23.94 7.94C20.9843 6.77796 17.7541 6.50244 14.6444 7.14712C11.5346 7.7918 8.68012 9.32875 6.43 11.57L0 18L6.43 24.43C8.10419 26.1042 10.2596 27.5 12.73 28.34ZM18 25C21.866 25 25 21.866 25 18C25 14.134 21.866 11 18 11C14.134 11 11 14.134 11 18C11 21.866 14.134 25 18 25Z",
              fill: "currentColor",
            }),
          );
        }
        function R(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M29.57 11.57L24.82 16.32C24.9485 16.8705 25.0089 17.4347 25 18C25 19.8565 24.2625 21.637 22.9497 22.9497C21.637 24.2625 19.8565 25 18 25C17.423 24.9983 16.8486 24.9244 16.29 24.78L12.73 28.34C15.6223 29.3235 18.732 29.4785 21.7078 28.7876C24.6836 28.0966 27.4069 26.5873 29.57 24.43L36 18L29.57 11.57Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M28.94 2.94L23.94 7.94C20.9843 6.77797 17.7541 6.50244 14.6444 7.14712C11.5346 7.79181 8.68012 9.32876 6.43 11.57L0 18L6.43 24.43C6.6 24.6 6.79 24.75 6.97 24.91L3.44 28.44L5.56 30.56L31.06 5.06L28.94 2.94ZM11 18C11.0002 16.8706 11.2736 15.7581 11.7969 14.7573C12.3203 13.7565 13.078 12.8971 14.0054 12.2527C14.9328 11.6082 16.0024 11.1977 17.1229 11.0561C18.2434 10.9146 19.3815 11.0463 20.44 11.44L11.44 20.44C11.1493 19.6593 11.0003 18.833 11 18Z",
              fill: "currentColor",
            }),
          );
        }
        function k(e) {
          return i.createElement(
            "svg",
            {
              width: "5",
              height: "19",
              viewBox: "0 0 5 19",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              d: "M5 0H3C1.34315 0 0 1.34315 0 3V16C0 17.6569 1.34315 19 3 19H5V0Z",
              fill: "white",
            }),
          );
        }
        function L(e) {
          return i.createElement(
            "svg",
            {
              width: "5",
              height: "19",
              viewBox: "0 0 5 19",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              d: "M0 0H2C3.65685 0 5 1.34315 5 3V16C5 17.6569 3.65685 19 2 19H0V0Z",
              fill: "white",
            }),
          );
        }
      },
      11315: (e, t, n) => {
        "use strict";
        n.d(t, { H: () => a, P: () => s });
        var i = n(63696),
          o = n(46384),
          r = n.n(o);
        const a = () =>
            i.createElement(
              "div",
              { className: r().FriendsListInsetShadowCtn },
              i.createElement("div", {
                className: r().FriendListInsetShadowTop,
              }),
            ),
          s = () =>
            i.createElement(
              "div",
              { className: r().FriendsListInsetShadowCtn },
              i.createElement("div", {
                className: r().FriendListInsetShadowBottom,
              }),
            );
      },
      50694: (e, t, n) => {
        "use strict";
        n.d(t, { L: () => y });
        var i = n(63696);
        function o(e) {
          const [t, n] = (0, i.useState)(!0);
          return (
            (0, i.useEffect)(() => {
              (0, i.startTransition)(() => {
                n(!0);
              });
            }, []),
            t ? e.children : (e.fallback ?? null)
          );
        }
        var r = n(69168),
          a = n(1808),
          s = n(78325),
          l = n(22433),
          c = n(27816),
          m = n(49391),
          d = n(82099),
          u = n(17070);
        function h(e) {
          const { Modal: t } = e,
            { name: n, modalProps: o, options: a } = t,
            h = (0, r.R7)().ownerWindow,
            { popup: p, element: _ } = (0, l.OJ)(
              n,
              {
                title: o.strTitle,
                html_class:
                  "client_chat_frame fullheight ModalDialogPopup LegacyPopup " +
                  (o.className || ""),
                body_class: "fullheight ModalDialogBody",
                popup_class: "fullheight popup_chat_frame",
                owner_window: void 0,
                replace_existing_popup: !0,
                target_browser: o.browserContext,
                availscreenwidth: h.screen.availWidth,
                availscreenheight: h.screen.availHeight,
                bModal: o.bHideMainWindowForPopouts,
              },
              {
                updateParamsBeforeShow: (e) =>
                  (function (e, t, n, i) {
                    let o,
                      r,
                      a,
                      s = t.popupWidth || 500,
                      l = t.popupHeight || 400;
                    if (u.TS.IN_CLIENT && i?.SteamClient?.Browser?.GetBrowserID)
                      a = i.SteamClient.Browser.GetBrowserID();
                    else {
                      let e = i.screen;
                      (o = (e.availWidth - s) / 2),
                        (r = (e.availHeight - l) / 2);
                      let t = e;
                      void 0 !== t.availLeft &&
                        void 0 !== t.availTop &&
                        ((o += t.availLeft), (r += t.availTop));
                    }
                    return {
                      ...e,
                      dimensions: { width: s, height: l, left: o, top: r },
                      center_on_window: n.bCenterOnWindow ? i : void 0,
                      window_opener_id: a,
                    };
                  })(e, o, a, h),
                onClose: () => o.fnOnClose && o.fnOnClose(),
              },
            ),
            g = a?.bHideActions,
            C =
              "number" == typeof a?.nDragAreaHeight
                ? { height: a.nDragAreaHeight }
                : void 0;
          return _
            ? s.createPortal(
                i.createElement(
                  r.kc,
                  { ownerWindow: p },
                  i.createElement(
                    "div",
                    { className: "PopupFullWindow", onContextMenu: c.aE },
                    i.createElement(d.c, {
                      hideMin: !0,
                      hideMax: !0,
                      popup: p,
                      hideActions: g,
                      style: C,
                    }),
                    i.createElement(
                      m.EO,
                      {
                        browserInfo: o.browserContext,
                        bCenterPopupsOnWindow: a.bCenterOnWindow,
                      },
                      t.element,
                    ),
                  ),
                ),
                _,
              )
            : null;
        }
        function p(e) {
          const { ModalManager: t } = e,
            [n, o] = i.useState(void 0),
            [r, a] = i.useState(!0),
            s = i.useRef(0),
            l = i.useCallback(() => {
              i.startTransition(() => {
                a(!0);
              });
            }, []);
          i.useEffect(
            () => t.RegisterMeasureModalCallback(l).Unregister,
            [t, l],
          ),
            i.useLayoutEffect(() => {
              n ||
                i.startTransition(() => {
                  o(t.TakeMeasureModalRequest()), a(!1);
                });
            }, [t, n, r]);
          const c = i.useCallback((e) => {
            s.current++,
              i.startTransition(() => {
                o((t) => (t === e ? void 0 : t));
              });
          }, []);
          return n
            ? i.createElement(_, {
                key: s.current,
                onMeasureComplete: c,
                request: n,
              })
            : null;
        }
        function _(e) {
          const [t, n] = i.useState(),
            o = (0, r.R7)().ownerWindow;
          return (
            i.useLayoutEffect(() => {
              const e = o.document.body,
                t = o.document.createElement("div");
              return (
                (t.style.position = "absolute"),
                (t.style.visibility = "hidden"),
                e.appendChild(t),
                n(t),
                () => {
                  e.removeChild(t);
                }
              );
            }, [o]),
            t
              ? s.createPortal(i.createElement(g, { ...e, elContainer: t }), t)
              : null
          );
        }
        function g(e) {
          const { elContainer: t, onMeasureComplete: n, request: o } = e;
          return (
            i.useEffect(() => {
              let e = !1;
              const i = (t) => {
                e || (o.fnResults(t), n(o), (e = !0));
              };
              return (
                (async function (e, t) {
                  t && (await t);
                  let n = document;
                  u.TS.IN_STEAMUI && n.fonts && (await n.fonts.ready);
                  const i = e.getBoundingClientRect(),
                    o = Math.ceil(i.height),
                    r = Math.ceil(i.width);
                  return { height: o, width: r };
                })(t, o.promiseContentReady).then(i),
                () => i(void 0)
              );
            }, [t, n, o]),
            i.createElement(a.tH, null, o.rctToMeasure)
          );
        }
        var C = n(77171),
          f = n(82924),
          S = n(46618),
          v = n(17867),
          b = n(79880),
          I = n(97229);
        function w(e) {
          i.useEffect(() => {
            if (e)
              return (
                document.body.classList.add(b.BodyNoScrollDialog),
                () => document.body.classList.remove(b.BodyNoScrollDialog)
              );
          }, [e]);
        }
        function y(e) {
          let {
            ModalManager: t,
            bRegisterModalManager: n = !0,
            DialogWrapper: a,
            rctActiveContextMenus: s,
            bUseDialogElement: l = !0,
            style: c,
            ...m
          } = e;
          const d = t.modals,
            u = d && !!d.length,
            h = t.active_modal;
          w(u),
            (function (e) {
              const t = (0, r.R7)().ownerWindow,
                n = (0, f.CH)(),
                o = i.useCallback(() => {
                  t?.SteamClient?.Window && t.SteamClient.Window.BringToFront();
                }, [t]);
              i.useEffect(() => e.RegisterOverlay(n), [e, n]),
                i.useEffect(
                  () => e.RegisterOnModalShownCallback(o).Unregister,
                  [e, o],
                );
            })(t);
          const _ = (function (e, t) {
            return (0, f.QS)(
              (n) => {
                if (!n || !t) return;
                const i = n.ownerDocument.defaultView;
                return v.BR.RegisterModalManager(e, i);
              },
              [e],
            );
          })(t, n);
          let g = null,
            b = !l;
          return (
            d && d.length
              ? (g = d.map((e) => {
                  const t = e == h,
                    n = {
                      key: e.key,
                      active: t,
                      rctActiveContextMenus: t && l ? s : void 0,
                    };
                  return e instanceof S._F
                    ? i.createElement(D, { ...n, modal: e, Component: a ?? A })
                    : e instanceof S.$9
                      ? i.createElement(E, {
                          ...n,
                          modal: e,
                          bUseDialogElement: l,
                        })
                      : void 0;
                }))
              : ((b = !0), (c = { ...c, display: "none" })),
            i.createElement(
              i.Fragment,
              null,
              i.createElement(
                o,
                null,
                i.createElement(
                  "div",
                  {
                    ...m,
                    style: c,
                    ref: _,
                    className: (0, C.A)(m.className, "FullModalOverlay"),
                  },
                  i.createElement("div", {
                    className: "ModalOverlayContent ModalOverlayBackground",
                  }),
                  g,
                ),
                b && s,
              ),
              i.createElement(p, { ModalManager: t }),
              i.createElement(M, { ModalManager: t }),
            )
          );
        }
        function E(e) {
          const {
            modal: t,
            rctActiveContextMenus: n,
            active: o,
            bUseDialogElement: r,
          } = e;
          i.useEffect(() => {
            if (o)
              return (
                t.SetActive(o),
                () => {
                  t.SetActive(!1);
                }
              );
          }, [t, o]);
          const s = i.createElement(
            a.tH,
            null,
            i.createElement("div", {
              className: (0, C.A)(
                "ModalOverlayContent",
                o ? "active" : "inactive",
              ),
              ref: t.RefModalElement,
            }),
            n,
          );
          return r ? i.createElement(T, { active: o }, s) : s;
        }
        function D(e) {
          const {
              modal: t,
              active: n,
              rctActiveContextMenus: o,
              Component: r,
            } = e,
            s = (0, f.CH)();
          return (
            (0, f.hL)(t.ModalUpdatedCallback, s),
            i.createElement(
              a.tH,
              null,
              i.createElement(
                r,
                {
                  className: (0, C.A)(
                    "ModalOverlayContent",
                    n ? "active" : "inactive",
                  ),
                  active: n,
                  modalKey: t.key,
                },
                o,
                t.element,
              ),
            )
          );
        }
        function A(e) {
          const { className: t, active: n, children: o } = e;
          return i.createElement(
            T,
            { active: n },
            i.createElement(
              I.C$,
              null,
              i.createElement("div", { className: t, tabIndex: -1 }, o),
            ),
          );
        }
        function T(e) {
          const { active: t, children: n } = e,
            o = i.useRef(null);
          return (
            i.useEffect(() => {
              const e = o.current;
              if (t && e) return e.showModal(), () => e.close();
            }, [t]),
            i.createElement(
              "dialog",
              {
                ref: o,
                className: b.ModalDialog,
                onCancel: (e) => e.preventDefault(),
              },
              e.children,
            )
          );
        }
        function M(e) {
          const { ModalManager: t } = e,
            n = (0, f.CH)();
          return (
            (0, f.hL)(t.LegacyPopupModalCountChangedCallbacks, n),
            i.createElement(
              i.Fragment,
              null,
              t.legacy_popup_modals.map((e) =>
                i.createElement(h, { key: e.key, Modal: e }),
              ),
            )
          );
        }
      },
      55656: (e, t, n) => {
        "use strict";
        n.d(t, {
          KG: () => h,
          ZH: () => m,
          Zw: () => _,
          nd: () => d,
          o0: () => u,
        });
        var i = n(34629),
          o = n(41230),
          r = n(63696),
          a = (n(27816), n(89021)),
          s = n(14355),
          l = n(74002),
          c = n(55098);
        function m(e, t, n, i, o, a, s) {
          return new Promise((l, c) => {
            e(
              r.createElement(u, {
                strTitle: t,
                strDescription: n,
                strOKButtonText: i,
                strCancelButtonText: o,
                onOK: l,
                onCancel: c,
                bDestructiveWarning: a,
                children: s,
              }),
            );
          });
        }
        function d(e, t, n, i, o) {
          return new Promise((a, s) => {
            e(
              r.createElement(u, {
                bAlertDialog: !0,
                strTitle: t,
                strDescription: n,
                strOKButtonText: i,
                onOK: a,
                onCancel: a,
                children: o,
              }),
            );
          });
        }
        let u = class extends r.Component {
          Cancel(e) {
            return () => {
              e && e(), this.props.closeModal && this.props.closeModal();
            };
          }
          render() {
            const {
                strTitle: e,
                strDescription: t,
                strOKButtonText: n,
                strCancelButtonText: i,
                onGamepadCancel: o,
                strMiddleButtonText: s,
                onMiddleButton: m,
                bAlertDialog: d,
                children: u,
                ...h
              } = this.props,
              p = n || (0, l.we)("#Button_Close");
            let _ = r.createElement(a.CB, {
              bOKDisabled: this.props.bOKDisabled,
              bCancelDisabled: this.props.bCancelDisabled,
              strOKText: n,
              onCancel: this.Cancel(this.props.onCancel),
              strCancelText: i,
            });
            return (
              d
                ? (_ = r.createElement(a.jn, null, p))
                : m &&
                  (_ = r.createElement(a.VQ, {
                    bOKDisabled: this.props.bOKDisabled,
                    bCancelDisabled: this.props.bCancelDisabled,
                    strOKText: n,
                    onCancel: this.Cancel(this.props.onCancel),
                    strCancelText: i,
                    onUpdate: () => {
                      m(), this.props.closeModal && this.props.closeModal();
                    },
                    strUpdateText: s,
                    bUpdateDisabled: this.props.bMiddleDisabled,
                  })),
              r.createElement(
                c.e,
                { ...h },
                r.createElement(
                  a.Y9,
                  null,
                  " ",
                  e || r.createElement(r.Fragment, null, " "),
                  " ",
                ),
                r.createElement(
                  a.f3,
                  { onCancelButton: this.Cancel(o || this.props.onCancel) },
                  r.createElement(a.a3, null, t, u),
                  r.createElement(a.wi, null, _),
                ),
              )
            );
          }
        };
        u = (0, i.Cg)([o.PA], u);
        let h = class extends r.Component {
          render() {
            const e = {
              strTitle: (0, l.we)("#Error_FailureNotice"),
              strDescription: (0, l.we)("#Error_GenericFailureDescription"),
              bAlertDialog: !0,
              bDestructiveWarning: !0,
              onOK: () => {},
              onCancel: () => {},
              ...this.props,
            };
            return r.createElement(u, { ...e });
          }
        };
        h = (0, i.Cg)([o.PA], h);
        let p = class extends r.Component {
          render() {
            let e = {
              onOK: () => {},
              onCancel: () => {},
              bAlertDialog: !0,
              ...this.props,
            };
            return (
              (e.strDescription = r.createElement(
                "span",
                { style: { whiteSpace: "pre-line" } },
                " ",
                e.strDescription,
                " ",
              )),
              r.createElement(u, { ...e })
            );
          }
        };
        function _(e, t, n) {
          (0, s.pg)(r.createElement(p, { strTitle: e, strDescription: t }), n);
        }
        p = (0, i.Cg)([o.PA], p);
      },
      55098: (e, t, n) => {
        "use strict";
        n.d(t, { e: () => m });
        var i = n(41230),
          o = n(63696),
          r = n(89021),
          a = n(77765),
          s = n(77171),
          l = n(17070),
          c = n(21787);
        const m = (0, i.PA)((e) => {
          const { onCancel: t, closeModal: n, bOKDisabled: i, onOK: m } = e,
            d = (0, l.Qn)();
          (0, a.w)(
            n || t,
            `Either closeModal or onCancel should be passed to GenericDialog. Classes: ${e.className} ${e.modalClassName}`,
          );
          const u = o.useCallback(() => {
              (t && t()) || (n && n());
            }, [t, n]),
            h = o.useCallback(async () => {
              i || (m && (await m()), n && n());
            }, [i, m, n]);
          return o.createElement(
            c.x_,
            {
              onEscKeypress: u,
              className: e.modalClassName,
              bDestructiveWarning: e.bDestructiveWarning,
              bDisableBackgroundDismiss: e.bDisableBackgroundDismiss,
              bHideCloseIcon: e.bHideCloseIcon,
            },
            o.createElement(
              r.U9,
              {
                classNameContent: (0, s.A)(
                  "GenericConfirmDialog",
                  e.bAllowFullSize && "DialogContentFullSize",
                  e.className,
                ),
                onSubmit: h,
                bCenterVertically: !d,
              },
              e.children,
            ),
          );
        });
      },
      25444: (e, t, n) => {
        "use strict";
        n.d(t, {
          o0: () => m.o0,
          eV: () => d.e,
          KG: () => m.KG,
          x_: () => c.x_,
          nd: () => m.nd,
          ZH: () => m.ZH,
          EN: () => l,
        });
        var i = n(63696),
          o = (n(89021), n(78325)),
          r = n(49391),
          a = n(17867),
          s = n(97229);
        function l(e) {
          const { active: t, children: n } = e,
            l = (0, r.yk)() || (0, a.tx)(window),
            c = (0, r.oJ)(),
            [m, d] = i.useState(null),
            [u, h] = i.useState(!1),
            p = i.useRef();
          if (
            (i.useEffect(() => {
              if (t) {
                const e = l.ShowPortalModal(),
                  t = e.OnElementReadyCallbacks.Register(d),
                  n = e.OnModalActiveCallbacks.Register(h);
                return (
                  (p.current = e.key),
                  () => {
                    d(null), h(!1), e.Close(), t.Unregister(), n.Unregister();
                  }
                );
              }
            }, [l, t]),
            !m || !t)
          )
            return null;
          let _ = i.createElement(s.C$, null, n);
          return (
            c &&
              (_ = i.createElement(c, { active: u, modalKey: p.current }, _)),
            o.createPortal(_, m)
          );
        }
        var c = n(21787);
        n(22433), n(27816), n(82099), n(82924), n(69168), n(17070), n(96242);
        n(50694), n(79880);
        var m = n(55656),
          d = n(55098);
      },
      46618: (e, t, n) => {
        "use strict";
        n.d(t, { $9: () => l, IA: () => c, _F: () => s });
        var i = n(34629),
          o = n(69450),
          r = n(9907);
        class a {
          key;
          static sm_lastKey = 0;
          constructor() {
            this.key = "Modal_" + a.sm_lastKey++;
          }
        }
        class s extends a {
          element;
          ModalUpdatedCallback = new r.lu();
          constructor(e) {
            super(), (this.element = e);
          }
          UpdateModal(e) {
            (this.element = e), this.ModalUpdatedCallback.Dispatch();
          }
        }
        class l extends a {
          m_OnElementReadyCallbacks = new r.lu();
          m_OnActiveModalCallbacks = new r.lu();
          constructor() {
            super();
          }
          get OnElementReadyCallbacks() {
            return this.m_OnElementReadyCallbacks;
          }
          get OnModalActiveCallbacks() {
            return this.m_OnActiveModalCallbacks;
          }
          RefModalElement(e) {
            e && this.m_OnElementReadyCallbacks.Dispatch(e);
          }
          SetActive(e) {
            this.m_OnActiveModalCallbacks.Dispatch(e);
          }
        }
        (0, i.Cg)([o.o], l.prototype, "RefModalElement", null);
        class c extends s {
          m_strName;
          m_modalProps;
          m_options;
          constructor(e, t, n, i) {
            super(t),
              (this.m_strName = e),
              (this.m_modalProps = n),
              (this.m_options = i);
          }
          get name() {
            return this.m_strName;
          }
          get modalProps() {
            return this.m_modalProps;
          }
          get options() {
            return this.m_options;
          }
        }
      },
      49391: (e, t, n) => {
        "use strict";
        n.d(t, { EO: () => D, uH: () => M, oJ: () => T, yk: () => A });
        var i = n(63114),
          o = n(63696),
          r = n(78325),
          a = n(94762),
          s = n(28915),
          l = n(69168),
          c = n(82924);
        const m = o.createContext(null);
        function d(e) {
          const {
              refContextMenuManager: t,
              bRegisterMenuManager: n = !0,
              children: i,
            } = e,
            r = (0, l.R7)(),
            d = r?.ownerWindow || window,
            u = o.useRef();
          return (
            u.current || (u.current = new s.z()),
            o.useLayoutEffect(() => {
              if (n)
                return (
                  a.XX.SetMenuManager(d, u.current),
                  () => a.XX.SetMenuManager(d, void 0)
                );
            }, [d, n]),
            o.useLayoutEffect(
              () => ((0, c.cZ)(t, u.current), () => (0, c.cZ)(t, void 0)),
              [t],
            ),
            o.createElement(m.Provider, { value: u.current }, i)
          );
        }
        var u = n(56132),
          h = n(22433),
          p = n(27816),
          _ = n(26765),
          g = n.n(_),
          C = n(1808),
          f = n(50622);
        function S(e) {
          const { managerOverride: t, bSuppressMouseOverlay: n } = e,
            i = (0, c.CH)(),
            r = (0, l.k5)(),
            a = o.useContext(m),
            s = t ?? a;
          (0, c.hL)(s.OnMenusChanged, i);
          const d = !n && s.BShouldRenderMouseOverlay(),
            u = s.GetAllMenus();
          return o.createElement(
            o.Fragment,
            null,
            d && o.createElement(p.il, null),
            u.map((e) =>
              o.createElement(
                C.tH,
                { key: e.key },
                o.createElement(v, { instance: e, browserInfo: r }),
              ),
            ),
          );
        }
        function v(e) {
          const { instance: t, browserInfo: n, children: i } = e,
            r = A(),
            a = (0, l.R7)().ownerWindow,
            s = o.useRef(void 0);
          void 0 === s.current &&
            (s.current =
              (t.options.bForcePopup ||
                a.innerWidth < 400 ||
                r?.BOnlyPopups()) &&
              !!a.SteamClient?.Window);
          const c = o.useMemo(
              () => ({ instance: t, styles: g(), presentation: 0 }),
              [t],
            ),
            m = i || t.ReactElement;
          return o.createElement(
            p.P.Provider,
            { value: c },
            s.current
              ? o.createElement(I, { instance: t, browserInfo: n, children: m })
              : o.createElement(b, { instance: t, children: m }),
          );
        }
        function b(e) {
          const { instance: t, children: n } = e;
          return o.createElement(p.ai, { ...t.position }, n);
        }
        function I(e) {
          const { instance: t, browserInfo: n, children: i } = e,
            a = o.useRef(null),
            s = (0, l.R7)().ownerWindow,
            c = s.SteamClient.Browser.GetBrowserID(),
            m = o.useCallback(
              (e) => {
                const { options: n, position: i } = t,
                  o = i.element;
                if (n.bScreenCoordinates)
                  e.dimensions = {
                    left: i.clientX,
                    top: i.clientY,
                    width: 2,
                    height: 1,
                  };
                else {
                  let t = f.pd(s, o.getBoundingClientRect());
                  (e.dimensions = {
                    left: t.right,
                    top: t.top,
                    width: 2,
                    height: 1,
                  }),
                    (e.availscreenwidth = s.screen.availWidth),
                    (e.availscreenheight = s.screen.availHeight);
                }
                return e;
              },
              [s, t],
            );
          let d = t.options.bStandalone
            ? (0, l.yq)(l.Dr.StandaloneContextMenu)
            : (0, l.yq)(l.Dr.PopupContextMenu);
          t.options.bCreateHidden && (d |= l.Wf.Hidden),
            t.options.bAlwaysOnTop && (d |= l.Wf.AlwaysOnTop);
          const { popupObj: _, element: C } = (0, h.OJ)(
            "contextmenu_" + t.key,
            {
              title: t.options.title || "Menu",
              html_class: g().ContextMenuPopup + " client_chat_frame",
              body_class: "ContextMenuPopupBody",
              replace_existing_popup: !1,
              target_browser: n,
              window_opener_id: c,
              bHideOnClose: !0,
              eCreationFlags: d,
            },
            { updateParamsBeforeShow: m },
          );
          return (
            (0, o.useEffect)(() => {
              if (_)
                if (t.visible) {
                  a.current && a.current.PositionMenu(),
                    a.current && a.current.PositionPopupWindow();
                  let e = t.options.bNoFocusWhenShown
                    ? u.iE.k_EWindowBringToFrontWithoutForcingOS
                    : u.iE.k_EWindowBringToFrontAndForceOS;
                  t.TakeFocus(e);
                } else
                  t.options.bRetainOnHide &&
                    window.setTimeout(() => {
                      _.window?.SteamClient.Window.HideWindow();
                    }, 30);
            }, [_, t, t.visible]),
            M(_.window),
            o.useEffect(() => {
              t.SetPopup(_);
            }, [t, _]),
            C
              ? r.createPortal(
                  o.createElement(
                    p.ai,
                    { ref: a, ...t.position, parentWin: s, popup: _ },
                    i,
                  ),
                  C,
                )
              : null
          );
        }
        var w = n(50694),
          y = n(17867);
        const E = o.createContext({}),
          D = o.memo(function (e) {
            const {
                children: t,
                bRenderOverlayAtRoot: n,
                refModalManager: a,
                DialogWrapper: s,
                bUseDialogElement: l = !0,
                ContextMenuComponent: c = S,
                refContextMenuManager: m,
                browserInfo: u,
                bUsePopups: h,
                bOnlyPopups: p,
                bCenterPopupsOnWindow: _,
                bRegisterManagersWithWindow: g = !0,
                ...f
              } = e,
              v = o.useRef();
            v.current || (v.current = new y.SZ());
            let b = o.createElement(w.L, {
              ...f,
              DialogWrapper: s,
              ModalManager: v.current,
              bUseDialogElement: l,
              bRegisterModalManager: g,
              rctActiveContextMenus: o.createElement(c, null),
            });
            e.bRenderOverlayAtRoot &&
              "undefined" != typeof document &&
              "body" in document &&
              (b = r.createPortal(b, document.body)),
              (0, i.D5)(a, v.current),
              void 0 !== h && v.current?.SetUsePopups(h),
              void 0 !== _ && v.current?.SetCenterPopupsOnWindow(_),
              void 0 !== p && v.current?.SetOnlyPopups(p),
              v.current.SetBrowserInfo(u);
            const I = o.useMemo(
              () => ({ ModalManager: v.current, DialogWrapper: s }),
              [s],
            );
            return o.createElement(
              E.Provider,
              { value: I },
              o.createElement(
                d,
                { refContextMenuManager: m, bRegisterMenuManager: g },
                o.createElement(C.tH, null, b),
                e.children,
              ),
            );
          });
        function A() {
          return o.useContext(E).ModalManager;
        }
        function T() {
          return o.useContext(E).DialogWrapper;
        }
        function M(e) {
          const t = A();
          o.useEffect(() => {
            if (e) return y.BR.RegisterModalManager(t, e);
          }, [e, t]);
        }
      },
      17867: (e, t, n) => {
        "use strict";
        n.d(t, { BR: () => s, SZ: () => a, tx: () => l });
        n(63696);
        var i = n(77765),
          o = n(9907),
          r = (n(82924), n(46618));
        n(49391);
        class a {
          m_bUsePopups = !0;
          m_bOnlyPopups = !1;
          m_bCenterPopupsOnWindow = !1;
          m_rgModals = [];
          m_OnModalCountChangedCallbacks = new o.lu();
          m_OnModalShownCallbacks = new o.lu();
          m_OnModalHiddenCallbacks = new o.lu();
          m_cMountedOverlays = 0;
          m_rgMeasureModalRequests = [];
          m_OnMeasureModal = new o.lu();
          m_rgLegacyPopupModals = [];
          m_OnLegacyPopupModalCountChanged = new o.lu();
          m_browserInfo;
          get ModalCountChangedCallbacks() {
            return this.m_OnModalCountChangedCallbacks;
          }
          get LegacyPopupModalCountChangedCallbacks() {
            return this.m_OnLegacyPopupModalCountChanged;
          }
          RegisterOnModalShownCallback(e) {
            return this.m_OnModalShownCallbacks.Register(e);
          }
          RegisterOnModalHiddenCallback(e) {
            return this.m_OnModalHiddenCallbacks.Register(e);
          }
          RegisterMeasureModalCallback(e) {
            return this.m_OnMeasureModal.Register(e);
          }
          TakeMeasureModalRequest() {
            return this.m_rgMeasureModalRequests.length
              ? this.m_rgMeasureModalRequests.shift()
              : void 0;
          }
          RegisterOverlay(e) {
            (0, i.w)(
              0 == this.m_cMountedOverlays,
              "Duplicate modal DialogOverlay; modals will appear in both",
            ),
              this.m_cMountedOverlays++;
            const t = this.m_OnModalCountChangedCallbacks.Register(e);
            return () => {
              this.m_cMountedOverlays--, t.Unregister();
            };
          }
          OnModalCountChanged(e) {
            "show" == e &&
              0 == this.m_cMountedOverlays &&
              window.setTimeout(() => {
                (0, i.w)(
                  this.m_cMountedOverlays > 0,
                  "Modal was shown but ModalManager has no associated DialogOverlay",
                );
              }, 50),
              this.m_OnModalCountChangedCallbacks.Dispatch(
                this.m_rgModals.length,
              ),
              "show" == e
                ? this.m_OnModalShownCallbacks.Dispatch(this.m_rgModals.length)
                : "hide" == e &&
                  this.m_OnModalHiddenCallbacks.Dispatch(
                    this.m_rgModals.length,
                  );
          }
          get modals() {
            return this.m_rgModals;
          }
          get active_modal() {
            return this.m_rgModals.length
              ? this.m_rgModals[this.m_rgModals.length - 1]
              : void 0;
          }
          ShowModal(e) {
            return this.ShowModalInternal(e);
          }
          RemoveModal(e) {
            let t = this.m_rgModals.indexOf(e);
            -1 != t && this.m_rgModals.splice(t, 1),
              this.OnModalCountChanged("hide");
          }
          ShowModalInternal(e) {
            (0, i.w)(
              !this.m_bOnlyPopups,
              "Attempting to show modal in popup-only modal manager; will not display.",
            );
            const t = new r._F(e);
            this.m_rgModals.push(t);
            const n = {
              Close: () => {
                this.RemoveModal(t);
              },
              Update: (e) => {
                t.UpdateModal(e);
              },
            };
            return this.OnModalCountChanged("show"), n;
          }
          ShowPortalModal() {
            (0, i.w)(
              !this.m_bOnlyPopups,
              "Attempting to show modal in popup-only modal manager; will not display.",
            );
            const e = new r.$9();
            return (
              this.m_rgModals.push(e),
              this.OnModalCountChanged("show"),
              {
                key: e.key,
                Close: () => {
                  this.RemoveModal(e);
                },
                OnElementReadyCallbacks: e.OnElementReadyCallbacks,
                OnModalActiveCallbacks: e.OnModalActiveCallbacks,
              }
            );
          }
          SetUsePopups(e) {
            this.m_bUsePopups = e;
          }
          BUsePopups() {
            return this.m_bUsePopups || this.m_bOnlyPopups;
          }
          SetOnlyPopups(e) {
            this.m_bOnlyPopups = e;
          }
          BOnlyPopups() {
            return this.m_bOnlyPopups;
          }
          SetBrowserInfo(e) {
            this.m_browserInfo = e;
          }
          GetBrowserInfo() {
            return this.m_browserInfo;
          }
          SetCenterPopupsOnWindow(e) {
            this.m_bCenterPopupsOnWindow = e;
          }
          BCenterPopupsOnWindow() {
            return this.m_bCenterPopupsOnWindow;
          }
          RequestModalMeasure(e, t, n) {
            this.m_rgMeasureModalRequests.push({
              rctToMeasure: e,
              fnResults: t,
              promiseContentReady: n,
            }),
              this.m_OnMeasureModal.Dispatch();
          }
          get legacy_popup_modals() {
            return this.m_rgLegacyPopupModals;
          }
          ShowLegacyPopupModal(e, t, n, i) {
            const o = () => {
                let e = this.m_rgLegacyPopupModals.indexOf(a);
                -1 != e && this.m_rgLegacyPopupModals.splice(e, 1),
                  this.m_OnLegacyPopupModalCountChanged.Dispatch(
                    this.m_rgLegacyPopupModals.length,
                  ),
                  n.fnOnClose && n.fnOnClose();
              },
              a = new r.IA(
                e,
                t,
                { ...n, fnOnClose: o },
                { bCenterOnWindow: this.m_bCenterPopupsOnWindow, ...i },
              );
            return (
              this.m_rgLegacyPopupModals.push(a),
              this.m_OnLegacyPopupModalCountChanged.Dispatch(
                this.m_rgLegacyPopupModals.length,
              ),
              {
                Close: o,
                Update: (e) => {
                  a.UpdateModal(e);
                },
              }
            );
          }
        }
        const s = new (class {
          m_mapModalManager = new WeakMap();
          GetModalManager(e) {
            let t = this.m_mapModalManager.get(e);
            return (
              t ||
                (console.assert(
                  !1,
                  `Early access to modal manager, creating one for ${e.document.title}`,
                ),
                (t = new a()),
                this.m_mapModalManager.set(e, t)),
              t
            );
          }
          RegisterModalManager(e, t) {
            (0, i.w)(
              !this.m_mapModalManager.has(t) || t == window,
              `Stomping CModalManager for ${t.document.title}!`,
            );
            const n = this.m_mapModalManager.get(t);
            return (
              this.m_mapModalManager.set(t, e),
              () => {
                n
                  ? this.m_mapModalManager.set(t, n)
                  : this.m_mapModalManager.delete(t);
              }
            );
          }
          UnregisterModalManager(e) {
            this.m_mapModalManager.delete(e);
          }
        })();
        function l(e) {
          return s.GetModalManager(e);
        }
      },
      21787: (e, t, n) => {
        "use strict";
        n.d(t, { x_: () => c });
        var i = n(63696),
          o = n(1808),
          r = n(81734),
          a = n(50622);
        const s = i.createContext({}),
          l = () => i.useContext(s);
        function c(e) {
          const t = l().ModalPosition ?? m;
          return i.createElement(t, { ...e });
        }
        function m(e) {
          let t,
            n = {};
          e.onEscKeypress &&
            ((n.tabIndex = 0),
            (n.onKeyDown = (t) => {
              27 == t.keyCode && e.onEscKeypress();
            }),
            (n.onMouseDown = (t) => {
              t.currentTarget !== t.target ||
                e.bDisableBackgroundDismiss ||
                e.onEscKeypress();
            }),
            (t = (e) => {
              e && (a.id(e, e.ownerDocument.activeElement) || e.focus());
            }));
          let s = ["ModalPosition"];
          e.className && s.push(e.className),
            e.bDestructiveWarning && s.push("Destructive");
          const l =
              e.renderContent || ((e) => i.createElement("div", { ...e })),
            c = i.createElement(
              i.Fragment,
              null,
              !e.hideTopBar &&
                i.createElement("div", { className: "ModalPosition_TopBar" }),
              e.onEscKeypress &&
                !e.bHideCloseIcon &&
                i.createElement(
                  "div",
                  { className: "ModalPosition_Dismiss" },
                  i.createElement(
                    "div",
                    {
                      className: "closeButton",
                      onClick: (t) => {
                        t.stopPropagation(), e.onEscKeypress();
                      },
                    },
                    i.createElement(r.sED, null),
                  ),
                ),
              i.createElement(o.tH, null, e.children),
            );
          return i.createElement(
            "div",
            { className: s.join(" "), ...n, ref: t },
            l({ className: "ModalPosition_Content", children: c }),
          );
        }
      },
      14355: (e, t, n) => {
        "use strict";
        n.d(t, { HT: () => d, mK: () => c, pg: () => m, x_: () => r.x_ });
        var i = n(63696),
          o = n(17867),
          r = n(21787),
          a = n(77765),
          s = n(74002),
          l = n(17070);
        async function c(e, t, n) {
          const r = (0, o.tx)(t),
            l = n?.bForcePopOut || h(r);
          (0, a.w)(
            !(l && n?.bNeverPopOut),
            "Conflicting popout options; will ignore bNeverPopOut",
          );
          const c = !l && !0 === n?.bNeverPopOut;
          let m;
          if (
            (h(r) || (!c && u(r, t))) &&
            !(l && n?.popupWidth && n?.popupHeight)
          ) {
            const t = i.cloneElement(e, { closeModal: () => {} });
            m = await (async function (e, t, n) {
              return new Promise((i, o) => {
                e.RequestModalMeasure(t, i, n);
              });
            })(r, t, n?.promiseRenderComplete);
          }
          const p =
            m && m.height / t.innerHeight < 0.9 && m.width / t.innerWidth < 0.8;
          if (c || (!l && p))
            return d(e, t, void 0, { fnOnClose: n?.fnOnClose });
          {
            const i = {
                strTitle:
                  n?.strTitle || (0, s.we)("#Dialog_DefaultWindowTitle"),
                fnOnClose: n?.fnOnClose,
                popupWidth: n?.popupWidth || m?.width,
                popupHeight: n?.popupHeight || m?.height,
                bHideMainWindowForPopouts: n?.bHideMainWindowForPopouts,
                className: n?.className,
              },
              o = { bHideActions: n?.bHideActionIcons },
              a = n?.browserContext || t.browserInfo;
            return d(e, t, i.strTitle, i, a, o, r);
          }
        }
        async function m(e, t, n) {
          return c(e, t, { bHideMainWindowForPopouts: !0, ...n });
        }
        function d(e, t, n, a, s, l, c) {
          let m, d;
          const h = e.props.closeModal,
            p = () => {
              d && d.Close(), h && h(), a?.fnOnClose && a.fnOnClose();
            },
            _ = () => {
              m && m.Close(), p();
            },
            g = i.cloneElement(e, { closeModal: _ });
          if (u((c = c || (0, o.tx)(t)), t) && a && n) {
            if (a.bHideMainWindowForPopouts) {
              const e = i.createElement(
                r.x_,
                {
                  className: "Hidden",
                  onEscKeypress: g.props.bDisableBackgroundDismiss ? void 0 : _,
                },
                i.createElement("div", null),
              );
              d = c.ShowModal(e);
            }
            const e = { ...a, fnOnClose: p, browserContext: s };
            m = c.ShowLegacyPopupModal(n, g, e, l);
          } else m = c.ShowModal(g);
          return m;
        }
        function u(e, t) {
          return (
            (e = e || (0, o.tx)(t || window)), l.TS.USE_POPUPS && e.BUsePopups()
          );
        }
        function h(e) {
          return e.BOnlyPopups && e.BOnlyPopups();
        }
      },
      81734: (e, t, n) => {
        "use strict";
        n.d(t, {
          $4X: () => We,
          $rC: () => p,
          Aj0: () => Ce,
          BeN: () => k,
          CeX: () => te,
          DK4: () => g,
          DQe: () => Je,
          Dp6: () => ye,
          EQ9: () => v,
          ETd: () => Xe,
          Em3: () => ge,
          F2T: () => re,
          GB9: () => _,
          GSe: () => _e,
          Gkr: () => je,
          Gq2: () => T,
          Gv$: () => V,
          IrQ: () => ie,
          Jlk: () => X,
          K7s: () => Ee,
          KOs: () => I,
          LeN: () => R,
          MUh: () => Re,
          MvQ: () => me,
          MxO: () => U,
          N8C: () => Ge,
          NCC: () => ze,
          OWN: () => A,
          OeC: () => K,
          P7C: () => Se,
          P7r: () => Le,
          PRY: () => ue,
          Q38: () => c,
          QQ4: () => De,
          Qte: () => ve,
          RO3: () => P,
          Rkk: () => m,
          T4m: () => He,
          V5W: () => pe,
          VR: () => Me,
          WX$: () => $e,
          X: () => y,
          X4B: () => Y,
          XH_: () => Ye,
          XTb: () => b,
          Xjb: () => le,
          Xz0: () => Be,
          YJl: () => F,
          YNO: () => w,
          YuU: () => ke,
          ZWw: () => ce,
          _V3: () => ne,
          _VW: () => Oe,
          _h6: () => Ne,
          aVR: () => Ze,
          aeP: () => ae,
          apU: () => we,
          bPr: () => Ae,
          c_I: () => ee,
          eSy: () => C,
          eTF: () => J,
          f5w: () => O,
          fSs: () => z,
          fpT: () => G,
          gxp: () => $,
          h20: () => de,
          h28: () => xe,
          hz4: () => se,
          i3G: () => oe,
          jGG: () => Z,
          jIP: () => Qe,
          jZW: () => Ve,
          jZl: () => Fe,
          kPc: () => Pe,
          lMJ: () => he,
          lRD: () => qe,
          m59: () => h,
          mrd: () => D,
          nGC: () => q,
          o5Q: () => Ke,
          pDR: () => W,
          qnF: () => Ue,
          qzq: () => Ie,
          rfv: () => Te,
          sED: () => E,
          sdo: () => N,
          t$Q: () => L,
          tID: () => fe,
          tcj: () => M,
          tmR: () => S,
          u9R: () => j,
          vRz: () => Q,
          wB_: () => d,
          wbc: () => u,
          xv8: () => H,
          yFA: () => B,
          yUp: () => x,
          y_e: () => be,
          zD7: () => f,
        });
        var i = n(63696),
          o = n(77171),
          r = n(75223),
          a = n.n(r),
          s = n(17070),
          l = n(4532);
        function c(e) {
          const [t, n] = (0, l.l)();
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 15 23",
              fill: "none",
              ...e,
            },
            i.createElement(
              "g",
              { clipPath: n },
              i.createElement("path", {
                fill: "currentColor",
                fillRule: "evenodd",
                clipRule: "evenodd",
                d: "M6.9955 11.5L15 3.4955L11.5045 -1.52793e-07L0.00450275 11.5L11.5045 23L15 19.5045L6.9955 11.5Z",
              }),
            ),
            i.createElement(
              "defs",
              null,
              i.createElement(
                "clipPath",
                { id: t },
                i.createElement("rect", {
                  fill: "currentColor",
                  width: "15",
                  height: "23",
                }),
              ),
            ),
          );
        }
        function m(e) {
          const { className: t } = e;
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)(t, "SVGIcon_Button SVGIcon_Hyperlink"),
              "data-name": "Layer 1",
              viewBox: "0 0 100 100",
              x: "0px",
              y: "0px",
            },
            i.createElement(
              "g",
              { "data-name": "Group" },
              i.createElement("path", {
                "data-name": "Path",
                d: "M50.86,20.23l-9,9,4.24,4.24,9-9c6.35-6.35,16.09-6.93,21.73-1.3s5,15.38-1.3,21.73l-9,9,4.24,4.24,9-9c8.69-8.69,9.27-22.24,1.3-30.21S59.55,11.55,50.86,20.23Z",
              }),
              i.createElement("path", {
                "data-name": "Path",
                d: "M44.89,75.53a17.22,17.22,0,0,1-11.28,5.13A13.23,13.23,0,0,1,19.34,66.39a17.22,17.22,0,0,1,5.13-11.28l9-9-4.24-4.24-9,9a23.21,23.21,0,0,0-6.88,15.22c0,.37,0,.74,0,1.11A19.19,19.19,0,0,0,33.91,86.66a23.21,23.21,0,0,0,15.22-6.88l9-9-4.24-4.24Z",
              }),
              i.createElement("rect", {
                "data-name": "Path",
                className: "Link1",
                x: "28.75",
                y: "47",
                width: "42.48",
                height: "6",
                transform: "translate(-20.71 50) rotate(-45)",
              }),
            ),
          );
        }
        function d(e) {
          const t = (0, o.A)("SVGIcon_Button", "SVGIcon_Settings", e.className);
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: t,
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "-305.5 396.5 256 256",
              enableBackground: "new -305.5 396.5 256 256",
            },
            i.createElement("path", {
              d: "M-232.755,589.942l3.103,2.408c5.78,4.492,11.973,8.18,18.409,10.959l3.581,1.547l2.276,33.783 c0.089,1.33,1.385,2.54,2.715,2.54h48.62c1.355,0,2.745-1.273,2.852-2.621l2.74-33.284l3.602-1.496 c6.406-2.656,12.646-6.262,18.554-10.707l3.137-2.366l30.578,15.009c1.155,0.571,2.924,0.017,3.563-1.087l24.303-42.1 c0.674-1.173,0.265-3.014-0.852-3.785l-27.872-19.309l0.469-3.832c0.495-4.032,0.725-7.395,0.725-10.57 c0-3.129-0.227-6.5-0.687-10.307l-0.469-3.896l28.699-19.253c1.112-0.741,1.509-2.473,0.84-3.627l-24.3-42.104 c-0.657-1.139-2.502-1.727-3.7-1.155l-31.208,14.748l-3.091-2.341c-5.571-4.224-11.466-7.688-17.522-10.306l-3.58-1.548 l-2.34-34.887c-0.089-1.33-1.381-2.536-2.715-2.536h-48.617c-1.355,0-2.74,1.274-2.851,2.626l-2.834,34.371l-3.593,1.501 c-6.082,2.535-12.028,5.924-17.667,10.071l-3.124,2.302l-31.392-15.413c-1.168-0.575-2.924-0.025-3.559,1.074l-24.309,42.107 c-0.678,1.172-0.264,3.014,0.848,3.781l28.068,19.444l-0.524,3.883c-0.592,4.378-0.865,8.018-0.865,11.462 c0,2.988,0.179,6.065,0.55,9.403l0.431,3.853l-28.528,19.125c-1.108,0.742-1.509,2.468-0.84,3.632l24.308,42.1 c0.656,1.142,2.489,1.726,3.7,1.154L-232.755,589.942z M-177.498,560.051c-19.311,0-35.02-15.709-35.02-35.02 s15.709-35.02,35.02-35.02s35.02,15.709,35.02,35.02S-158.188,560.051-177.498,560.051z",
              fill: "currentColor",
            }),
          );
        }
        function u(e) {
          return i.createElement(
            "svg",
            {
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M22 6H2V27H12L18 34L24 27H34V21H27C24.2386 21 22 18.7614 22 16V6ZM8.11107 18.5787C8.5222 18.8534 9.00555 19 9.5 19C9.8283 19 10.1534 18.9353 10.4567 18.8097C10.76 18.6841 11.0356 18.4999 11.2678 18.2678C11.4999 18.0356 11.6841 17.76 11.8097 17.4567C11.9353 17.1534 12 16.8283 12 16.5C12 16.0055 11.8534 15.5222 11.5787 15.1111C11.304 14.7 10.9135 14.3795 10.4567 14.1903C9.99989 14.0011 9.49723 13.9516 9.01227 14.048C8.52732 14.1445 8.08186 14.3826 7.73223 14.7322C7.3826 15.0819 7.1445 15.5273 7.04804 16.0123C6.95157 16.4972 7.00108 16.9999 7.1903 17.4567C7.37952 17.9135 7.69995 18.304 8.11107 18.5787ZM16.6111 18.5787C17.0222 18.8534 17.5055 19 18 19C18.3283 19 18.6534 18.9353 18.9567 18.8097C19.26 18.6841 19.5356 18.4999 19.7678 18.2678C19.9999 18.0356 20.1841 17.76 20.3097 17.4567C20.4353 17.1534 20.5 16.8283 20.5 16.5C20.5 16.0055 20.3534 15.5222 20.0787 15.1111C19.804 14.7 19.4135 14.3795 18.9567 14.1903C18.4999 14.0011 17.9972 13.9516 17.5123 14.048C17.0273 14.1445 16.5819 14.3826 16.2322 14.7322C15.8826 15.0819 15.6445 15.5273 15.548 16.0123C15.4516 16.4972 15.5011 16.9999 15.6903 17.4567C15.8795 17.9135 16.2 18.304 16.6111 18.5787Z",
              fill: "currentColor",
            }),
          );
        }
        function h() {
          return (0, s.Qn)()
            ? i.createElement(
                "svg",
                {
                  width: "36",
                  height: "36",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                },
                i.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M31.7 15.75C31.703 13.1045 30.94 10.5148 29.5031 8.2936C28.0663 6.07238 26.0171 4.31465 23.603 3.23272C21.189 2.15079 18.5133 1.79092 15.8991 2.19659C13.285 2.60226 10.8442 3.75611 8.87157 5.51878C6.89893 7.28145 5.47882 9.57755 4.78275 12.1298C4.08667 14.682 4.14441 17.3811 4.94899 19.9013C5.75356 22.4214 7.27057 24.6546 9.31678 26.3313C11.363 28.008 13.8509 29.0565 16.48 29.35V35.05L27.31 25.79C28.6947 24.5098 29.7995 22.9569 30.555 21.2291C31.3105 19.5012 31.7003 17.6358 31.7 15.75ZM27 14.572V17.428L24.63 17.86C24.4791 18.3905 24.2677 18.9018 24 19.384L25.374 21.34L23.352 23.362L21.384 22C20.9023 22.2718 20.391 22.4872 19.86 22.642L19.428 25H16.572L16.14 22.63C15.6096 22.4791 15.0982 22.2677 14.616 22L12.648 23.374L10.626 21.352L12 19.384C11.7282 18.9023 11.5128 18.391 11.358 17.86L9 17.428V14.572L11.358 14.14C11.5128 13.609 11.7282 13.0977 12 12.616L10.626 10.648L12.648 8.626L14.616 10C15.0977 9.72818 15.609 9.51276 16.14 9.358L16.572 7H19.428L19.86 9.358C20.391 9.51276 20.9023 9.72818 21.384 10L23.352 8.626L25.362 10.648L24 12.616C24.2718 13.0977 24.4872 13.609 24.642 14.14L27 14.572ZM16.3333 18.4944C16.8266 18.8241 17.4067 19 18 19C18.394 19 18.7841 18.9224 19.1481 18.7716C19.512 18.6209 19.8427 18.3999 20.1213 18.1213C20.3999 17.8427 20.6209 17.512 20.7716 17.1481C20.9224 16.7841 21 16.394 21 16C21 15.4067 20.8241 14.8266 20.4944 14.3333C20.1648 13.8399 19.6962 13.4554 19.1481 13.2284C18.5999 13.0013 17.9967 12.9419 17.4147 13.0576C16.8328 13.1734 16.2982 13.4591 15.8787 13.8787C15.4591 14.2982 15.1734 14.8328 15.0576 15.4147C14.9419 15.9967 15.0013 16.5999 15.2284 17.1481C15.4554 17.6962 15.8399 18.1648 16.3333 18.4944Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_ChatSettings",
                  version: "1.1",
                  x: "0px",
                  y: "0px",
                  viewBox: "0 0 600 600",
                },
                i.createElement(
                  "g",
                  null,
                  i.createElement("path", {
                    d: "M256,0C126.6,0,21.3,104.7,21.3,233.7c0,65.9,26.5,125.4,74.7,168.3v99.3c0,3.8,2,7.4,5.3,9.2c1.7,1,3.5,1.5,5.3,1.5   c1.8,0,3.7-0.5,5.4-1.5l85.8-50.3c18.9,4.8,38.4,7.3,58.1,7.3c129.4,0,234.7-104.9,234.7-233.7C490.7,104.7,385.4,0,256,0z    M405.3,254.1L370,260c-3,13.5-8.3,26-15.5,37.3l20.8,29.2L347.8,354l-29.2-20.8c-11.3,7.2-23.8,12.5-37.3,15.5l-5.9,35.3h-39   l-5.9-35.3c-13.5-3-26-8.3-37.3-15.5L164.2,354l-27.5-27.5l20.8-29.2C150.3,286,145,273.5,142,260l-35.3-5.9v-39l35.3-5.9   c3-13.5,8.3-26,15.5-37.3l-20.8-29.2l27.5-27.5l29.2,20.8c11.3-7.2,23.8-12.5,37.3-15.5l5.9-35.3h39l5.9,35.3   c13.5,3,26,8.3,37.3,15.5l29.2-20.8l27.5,27.5L354.5,172c7.2,11.3,12.5,23.8,15.5,37.3l35.3,5.9V254.1z",
                  }),
                  i.createElement("circle", {
                    cx: "256",
                    cy: "234.6",
                    r: "45.9",
                  }),
                ),
              );
        }
        function p() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              className: "SVGIcon_Button SVGIcon_CopyToClipboard",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polyline", {
              fill: "none",
              className: "line",
              strokeWidth: "12",
              strokeLinecap: "round",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points:
                "178.25,197.25 247,197.25 247,82.5 175,10.25 111.5,10.25 111.5,56 ",
            }),
            i.createElement("polygon", {
              fill: "none",
              className: "line",
              strokeWidth: "12",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points: "155,133 83,60.75 11,60.75 11,247.75 155,247.75 ",
            }),
            i.createElement("polyline", {
              fill: "none",
              className: "line",
              strokeWidth: "12",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points: "83,60.75 83,133 155,133 ",
            }),
            i.createElement("polyline", {
              fill: "none",
              className: "line",
              strokeWidth: "12",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points: "175,10.25 175,82.5 247,82.5 ",
            }),
          );
        }
        function _() {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_DownArrowContextMenu",
              "data-name": "Layer 1",
              viewBox: "0 0 128 128",
              x: "0px",
              y: "0px",
            },
            i.createElement("polygon", {
              points:
                "50 59.49 13.21 22.89 4.74 31.39 50 76.41 95.26 31.39 86.79 22.89 50 59.49",
            }),
          );
        }
        function g(e) {
          return i.createElement(
            "svg",
            {
              style: { transform: `rotate(${e.angle}deg)` },
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              width: "24.833px",
              height: "21.917px",
              viewBox: "0 0 24.833 21.917",
            },
            i.createElement("polygon", {
              points:
                "12.5,14.873 3.302,5.723 1.185,7.848 12.5,19.103 23.814,7.848 21.697,5.723 ",
            }),
          );
        }
        function C(e) {
          let t = "SVGIcon_Button SVGIcon_MagnifyingGlass";
          return (
            e.className && (t += ` ${e.className}`),
            i.createElement(
              "svg",
              {
                xmlns: "http://www.w3.org/2000/svg",
                className: t,
                version: "1.1",
                x: "0px",
                y: "0px",
                viewBox: "0 0 100 100",
              },
              i.createElement(
                "g",
                { transform: "translate(0,-952.36218)" },
                i.createElement("path", {
                  className: "ColorSelector",
                  d: "m 40.99855,964.36216 c -15.9798,0 -28.9986,13.01864 -28.9986,28.99862 0,15.97992 13.0188,28.99862 28.9986,28.99862 6.9189,0 13.2881,-2.4349 18.2803,-6.4997 l 23.5927,23.6239 c 1.1714,1.1714 3.0784,1.1715 4.2498,0 1.1716,-1.1715 1.1716,-3.0783 0,-4.2498 l -23.6239,-23.5926 c 4.0649,-4.9923 6.4997,-11.3615 6.4997,-18.28042 0,-15.97998 -13.0187,-28.99862 -28.9986,-28.99862 z m 0,5.99972 c 12.7374,0 22.9989,10.26145 22.9989,22.9989 0,12.73732 -10.2615,22.99892 -22.9989,22.99892 -12.7374,0 -22.9989,-10.2616 -22.9989,-22.99892 0,-12.73745 10.2615,-22.9989 22.9989,-22.9989 z",
                  fill: "currentColor",
                  fillOpacity: "1",
                  stroke: "none",
                  visibility: "visible",
                  display: "inline",
                  overflow: "visible",
                }),
              ),
            )
          );
        }
        function f() {
          return i.createElement(
            "svg",
            {
              className: "SVGIcon_Button SVGIcon_Clock",
              version: "1.1",
              x: "0px",
              y: "0px",
              width: "20px",
              height: "20px",
              viewBox: "0 0 20 20",
            },
            i.createElement("path", {
              d: "M15.999 15c-.15 0-.303-.034-.446-.105l-4-2A1.001 1.001 0 0111 12V5a1 1 0 012 0v6.382l3.447 1.724A1 1 0 0115.999 15zM12 24C5.383 24 0 18.617 0 12S5.383 0 12 0s12 5.383 12 12-5.383 12-12 12zm0-22C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2z",
            }),
          );
        }
        function S(e) {
          let t = "SVGIcon_Button SVGIcon_Microphone";
          return (
            e.className && (t += ` ${e.className}`),
            i.createElement(
              "svg",
              {
                version: "1.1",
                xmlns: "http://www.w3.org/2000/svg",
                className: t,
                x: "0px",
                y: "0px",
                width: "256px",
                height: "256px",
                viewBox: "-127.5 664.5 256 256",
              },
              i.createElement(
                "g",
                { className: "MicBase" },
                i.createElement(
                  "g",
                  null,
                  i.createElement(
                    "g",
                    null,
                    i.createElement("path", {
                      d: "M-64.7,826.3c-0.5-2.9-0.8-5.8-0.8-8.7v-38.2h11.2v36.5L-64.7,826.3z",
                    }),
                    i.createElement("path", {
                      d: "M-54.8,779.9v35.8l-9.6,9.6c-0.4-2.6-0.6-5.1-0.6-7.6v-37.7H-54.8 M-53.8,778.9H-66v38.7c0,3.3,0.4,6.5,1,9.7l11.2-11.2 V778.9L-53.8,778.9z",
                    }),
                  ),
                  i.createElement(
                    "g",
                    null,
                    i.createElement("path", {
                      d: "M56.8,817.6c0,24.7-24.8,44.9-55.3,44.9c-16.6,0-31.6-6-41.7-15.5l-8.6,8.6c11.1,10.5,26.7,17.5,44.2,18.8v25.1h-35.2 c-2.1,0-3.8,2.7-3.8,6.1c0,3.4,1.7,6.1,3.8,6.1h35.5H7.3h35.5c2.1,0,3.8-2.7,3.8-6.1c0-3.4-1.7-6.1-3.8-6.1H7.6v-25.1 C42,871.8,69,847.3,69,817.6v-38.7H56.8V817.6z",
                    }),
                    i.createElement("path", {
                      d: "M69,778.9H56.8v38.7c0,24.7-24.8,44.9-55.3,44.9c-16.6,0-31.6-6-41.7-15.5l-8.6,8.6c11.1,10.5,26.7,17.5,44.2,18.8v25.1 h-35.2c-2.1,0-3.8,2.7-3.8,6.1c0,3.4,1.7,6.1,3.8,6.1h35.5H7.3h35.5c2.1,0,3.8-2.7,3.8-6.1c0-3.4-1.7-6.1-3.8-6.1H7.6v-25.1 C42,871.8,69,847.3,69,817.6V778.9L69,778.9z",
                    }),
                  ),
                ),
                i.createElement(
                  "g",
                  null,
                  i.createElement("path", {
                    d: "M40.6,712.5c0-21.6-17.5-39.1-39.1-39.1c-21.6,0-39.1,17.5-39.1,39.1v87.4l10-10v-72.4h0v-5c0-16.1,13.1-29.1,29.1-29.1 c16.1,0,29.1,13.1,29.1,29.1v5v14.1l10-10V712.5z",
                  }),
                ),
                i.createElement(
                  "g",
                  null,
                  i.createElement("path", {
                    d: "M-4.7,835.4c-2.2-0.5-4.4-1.2-6.4-2.2C-9.1,834.2-6.9,834.9-4.7,835.4z",
                  }),
                  i.createElement("path", {
                    d: "M-0.1,836c-0.2,0-0.4,0-0.6,0C-0.6,836-0.4,836-0.1,836z",
                  }),
                  i.createElement("path", {
                    d: "M30.6,806.9C30.6,806.9,30.6,806.9,30.6,806.9v-16.6",
                  }),
                  i.createElement("path", {
                    d: "M-11.9,832.8c0.2,0.1,0.5,0.2,0.7,0.3C-11.4,833-11.7,832.9-11.9,832.8L-11.9,832.8z",
                  }),
                  i.createElement("path", {
                    d: "M-1.7,835.9c-0.3,0-0.5-0.1-0.8-0.1C-2.3,835.8-2,835.8-1.7,835.9z",
                  }),
                  i.createElement("path", {
                    d: "M-3.3,835.7c-0.3-0.1-0.6-0.1-1-0.2C-3.9,835.6-3.6,835.6-3.3,835.7z",
                  }),
                  i.createElement("path", {
                    d: "M30.6,776.1v14.1v16.6c0,0,0,0,0,0s0,0,0,0c0,16.1-13,29.1-29.1,29.1c-0.5,0-1.1,0-1.6,0c-0.2,0-0.4,0-0.6,0 c-0.3,0-0.6,0-1-0.1c-0.3,0-0.5-0.1-0.8-0.1c-0.2,0-0.5-0.1-0.7-0.1c-0.3-0.1-0.6-0.1-1-0.2c-0.2,0-0.3-0.1-0.5-0.1 c-2.2-0.5-4.4-1.2-6.4-2.2c0,0-0.1,0-0.1,0c-0.2-0.1-0.5-0.2-0.7-0.3l0,0c-3-1.6-5.7-3.6-8-6.1l-7.1,7.1 c7.1,7.6,17.3,12.3,28.5,12.3c21.6,0,39.1-17.5,39.1-39.1v-40.8L30.6,776.1z",
                  }),
                  i.createElement("path", {
                    d: "M-0.8,836c-0.3,0-0.6-0.1-1-0.1C-1.4,835.9-1.1,835.9-0.8,836z",
                  }),
                  i.createElement("path", {
                    d: "M1.5,836.1c-0.5,0-1.1,0-1.6,0C0.4,836,0.9,836.1,1.5,836.1z",
                  }),
                  i.createElement("path", {
                    d: "M-2.6,835.8c-0.2,0-0.5-0.1-0.7-0.1C-3,835.7-2.8,835.7-2.6,835.8z",
                  }),
                  i.createElement("path", {
                    d: "M1.5,836.1c16.1,0,29.1-13,29.1-29.1c0,0,0,0,0,0C30.6,823,17.6,836.1,1.5,836.1z",
                  }),
                  i.createElement("path", {
                    d: "M-4.2,835.5c-0.2,0-0.3-0.1-0.5-0.1C-4.5,835.4-4.4,835.5-4.2,835.5z",
                  }),
                  i.createElement("path", {
                    d: "M-11.1,833.2C-11.1,833.2-11.2,833.2-11.1,833.2C-11.2,833.2-11.1,833.2-11.1,833.2z",
                  }),
                ),
              ),
              i.createElement(
                "g",
                { className: "MicFill" },
                i.createElement(
                  "g",
                  null,
                  i.createElement("path", {
                    d: "M-53.8,816.1L-65,827.3c2.2,10.8,7.9,20.5,16.2,28.3l8.6-8.6c-8.5-7.9-13.6-18.2-13.6-29.4V816.1L-53.8,816.1z",
                  }),
                ),
                i.createElement(
                  "g",
                  null,
                  i.createElement("path", {
                    d: "M1.5,834.6c-15.2,0-27.6-12.4-27.6-27.6v-94.5c0-15.2,12.4-27.6,27.6-27.6c15.2,0,27.6,12.4,27.6,27.6v94.5 C29.1,822.2,16.7,834.6,1.5,834.6z",
                  }),
                  i.createElement("path", {
                    d: "M1.5,696.3c8.9,0,16.1,7.2,16.1,16.1v94.5c0,8.9-7.2,16.1-16.1,16.1c-8.9,0-16.1-7.2-16.1-16.1v-94.5 C-14.6,703.6-7.4,696.3,1.5,696.3 M1.5,673.3c-21.6,0-39.1,17.5-39.1,39.1v94.5c0,21.6,17.5,39.1,39.1,39.1s39.1-17.5,39.1-39.1 v-94.5C40.6,690.8,23.1,673.3,1.5,673.3L1.5,673.3z",
                  }),
                ),
              ),
              i.createElement(
                "g",
                { className: "MicStrike", fill: "none", strokeWidth: "1" },
                i.createElement("line", {
                  x1: "-82.5",
                  y1: "866.5",
                  x2: "83.5",
                  y2: "700.4",
                }),
              ),
            )
          );
        }
        function v(e) {
          const { off: t, ...n } = e;
          return t
            ? i.createElement(
                "svg",
                {
                  viewBox: "0 0 36 36",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  ...n,
                },
                i.createElement("path", {
                  d: "M14.6999 25.42L18.0799 22.05L33.0599 7.06005L30.9399 4.94005L23.9999 11.88V8.05005C23.9999 6.45875 23.3678 4.93263 22.2426 3.80741C21.1174 2.68219 19.5912 2.05005 17.9999 2.05005C16.4086 2.05005 14.8825 2.68219 13.7573 3.80741C12.6321 4.93263 11.9999 6.45875 11.9999 8.05005V16.05C12.0021 17.0575 12.2579 18.0482 12.7437 18.9308C13.2296 19.8134 13.9298 20.5594 14.7799 21.1L11.9999 23.84C10.6491 22.6903 9.65647 21.1771 9.13994 19.48L5.34994 20.6201C6.05673 22.9386 7.39296 25.0157 9.20994 26.6201L4.93994 30.9401L7.05994 33.0601L14.6999 25.42Z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  d: "M18.3299 26L14.7399 29.58C15.1551 29.6912 15.5757 29.7813 15.9999 29.85V34.01H19.9999V29.89C22.4663 29.5004 24.7732 28.4243 26.6566 26.785C28.54 25.1456 29.9239 23.0091 30.6499 20.6201L26.8199 19.48C26.2501 21.3098 25.1284 22.9186 23.6084 24.0858C22.0885 25.2531 20.2448 25.9217 18.3299 26Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  viewBox: "0 0 36 36",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  ...n,
                },
                i.createElement("path", {
                  d: "M30.65 20.6201L26.82 19.48C26.25 21.376 25.0842 23.0378 23.4955 24.2191C21.9068 25.4004 19.9797 26.0383 18 26.0383C16.0202 26.0383 14.0931 25.4004 12.5044 24.2191C10.9157 23.0378 9.74999 21.376 9.17998 19.48L5.34998 20.6201C6.07599 23.0091 7.45988 25.1456 9.3433 26.785C11.2267 28.4243 13.5336 29.5004 16 29.89V34.05H20V29.89C22.4664 29.5004 24.7732 28.4243 26.6567 26.785C28.5401 25.1456 29.924 23.0091 30.65 20.6201Z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  d: "M18 22.05C19.5913 22.05 21.1174 21.4179 22.2426 20.2927C23.3678 19.1675 24 17.6413 24 16.05V8.05005C24 6.45875 23.3678 4.93263 22.2426 3.80741C21.1174 2.68219 19.5913 2.05005 18 2.05005C16.4087 2.05005 14.8826 2.68219 13.7573 3.80741C12.6321 4.93263 12 6.45875 12 8.05005V16.05C12 17.6413 12.6321 19.1675 13.7573 20.2927C14.8826 21.4179 16.4087 22.05 18 22.05Z",
                  fill: "currentColor",
                }),
              );
        }
        function b(e) {
          return i.createElement(
            "svg",
            {
              width: "24",
              height: "24",
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Submit",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M4.16683 8.982C4.10732 8.3908 3.83847 7.42693 4.15486 7.17995C4.46877 6.93489 4.7797 6.90487 5.90123 7.31306L31.1931 17.2282C32.2693 17.6503 32.2686 18.335 31.1931 18.7564L5.90123 28.6715C4.77972 29.1235 4.46864 29.0497 4.15487 28.8049C3.83836 28.5579 4.0953 27.5939 4.15484 27.0028L4.7797 21.2151C4.89862 20.0374 5.92644 18.9801 7.0706 18.854L15.467 18.4429C24.1686 17.9924 24.1686 17.9924 15.467 17.5419L7.0706 17.1313C5.92423 17.0053 4.89825 15.9476 4.7797 14.7706L4.16683 8.982Z",
              fill: "currentColor",
            }),
          );
        }
        function I() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_ResizeIcon",
              x: "0px",
              y: "0px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                fill: "#020202",
                d: "M115.512,137.263l21.6-21.6c0,0,25.5,25.5,45.8,45.8l35-35v91.6h-91.6l35-35 C141.012,162.763,115.512,137.263,115.512,137.263z",
              }),
              i.createElement("path", {
                fill: "#020202",
                d: "M108.312,129.763c-20.3-20.3-35.8-35.8-35.8-35.8l21.6-21.601c0,0,15.5,15.5,35.8,35.801L108.312,129.763z",
              }),
              i.createElement("path", {
                fill: "#020202",
                d: "M54.312,75.763c-20.3-20.3-15.8-15.8-15.8-15.8l21.6-21.601c0,0-4.5-4.5,15.8,15.801L54.312,75.763z",
              }),
            ),
          );
        }
        function w() {
          return i.createElement(
            "svg",
            {
              fill: "#FFFFFF",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Popout",
              viewBox: "0 0 8 8",
              x: "0px",
              y: "0px",
            },
            i.createElement("path", {
              d: "M0 0v8h8v-2h-1v1h-6v-6h1v-1h-2zm4 0l1.5 1.5-2.5 2.5 1 1 2.5-2.5 1.5 1.5v-4h-4z",
            }),
          );
        }
        function y(e) {
          return i.createElement(
            "svg",
            {
              fill: "#FFFFFF",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_X",
              version: "1.1",
              x: "0px",
              y: "0px",
              viewBox: "-165 95 100 100",
              ...e,
            },
            i.createElement(
              "g",
              null,
              i.createElement("polygon", {
                points:
                  "-74.9,117.2 -102.2,145 -74.9,172.8 -89.1,186.8 -116.2,159.3 -143.2,186.8 -157.5,172.8 -130.2,145 -157.5,117.2 -143.2,103.2 -116.2,130.7 -89.1,103.2",
              }),
            ),
          );
        }
        function E(e) {
          const t = e.color || "#FFFFFF";
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)(
                "SVGIcon_Button",
                "SVGIcon_X_Line",
                e.className,
              ),
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("line", {
              fill: "none",
              stroke: t,
              strokeWidth: "45",
              strokeMiterlimit: "10",
              x1: "212",
              y1: "212",
              x2: "44",
              y2: "44",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: t,
              strokeWidth: "45",
              strokeMiterlimit: "10",
              x1: "44",
              y1: "212",
              x2: "212",
              y2: "44",
            }),
          );
        }
        function D(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_VoiceRoom",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M31.7 15.75C31.703 13.1045 30.94 10.5148 29.5031 8.2936C28.0663 6.07238 26.0171 4.31465 23.603 3.23272C21.189 2.15079 18.5133 1.79092 15.8991 2.19659C13.285 2.60226 10.8442 3.75611 8.87157 5.51878C6.89893 7.28145 5.47882 9.57755 4.78275 12.1298C4.08667 14.682 4.14441 17.3811 4.94899 19.9013C5.75356 22.4214 7.27057 24.6546 9.31678 26.3313C11.363 28.008 13.8509 29.0565 16.48 29.35V35.05L27.31 25.79C28.6947 24.5098 29.7995 22.9569 30.555 21.2291C31.3105 19.5012 31.7003 17.6358 31.7 15.75ZM14.25 9.79997C14.25 8.80541 14.6451 7.85158 15.3483 7.14832C16.0516 6.44506 17.0054 6.04997 18 6.04997C18.9945 6.04997 19.9484 6.44506 20.6516 7.14832C21.3549 7.85158 21.75 8.80541 21.75 9.79997V14.8C21.75 15.7945 21.3549 16.7484 20.6516 17.4516C19.9484 18.1549 18.9945 18.55 18 18.55C17.0054 18.55 16.0516 18.1549 15.3483 17.4516C14.6451 16.7484 14.25 15.7945 14.25 14.8V9.79997ZM19.25 23.45V26.05H16.75V23.45C15.2086 23.2066 13.7667 22.5346 12.5891 21.5107C11.4114 20.4869 10.5454 19.1525 10.09 17.66L12.49 16.94C12.8494 18.1186 13.5778 19.1505 14.568 19.8838C15.5582 20.6171 16.7578 21.0129 17.99 21.0129C19.2221 21.0129 20.4217 20.6171 21.4119 19.8838C22.4021 19.1505 23.1306 18.1186 23.49 16.94L25.89 17.66C25.4361 19.1498 24.5731 20.4824 23.3992 21.5059C22.2254 22.5295 20.7878 23.2031 19.25 23.45Z",
              fill: "currentColor",
            }),
          );
        }
        function A() {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 26 26",
              fill: "none",
            },
            i.createElement("path", {
              fill: "currentColor",
              d: "M7.69668 14.4444L11.0087 17.7564L8.9659 19.7992L2.16675 13L8.9659 6.20086L11.0087 8.24362L7.69672 11.5556L16.4873 11.5556V14.4444H7.69668Z",
            }),
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M16.6113 20.9444H20.2225L20.2225 5.05555H16.6113L16.6113 2.16666L23.1113 2.16666L23.1113 23.8333H16.6113V20.9444Z",
            }),
          );
        }
        function T() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_ExitIcon",
              x: "0px",
              y: "0px",
              width: "64px",
              height: "64px",
              viewBox: "0 0 64 64",
              enableBackground: "new 0 0 64 64",
            },
            i.createElement(
              "g",
              { className: "Arrow" },
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "2",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                points: "41,30.7 14.5,30.7 23.5,19.4 ",
              }),
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "2",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                points: "41,30.7 14.5,30.7 23.5,42 ",
              }),
            ),
            i.createElement(
              "g",
              null,
              i.createElement("polyline", {
                className: "ExitDoor",
                strokeLinecap: "round",
                strokeMiterlimit: "1",
                strokeWidth: "2px",
                fill: "none",
                points:
                  "32.5,22.1 32.5,17.7 47.7,17.7 47.7,43.8 32.5,43.8 32.5,39.5",
              }),
            ),
          );
        }
        function M() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_TextRoom",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
              stroke: "#000",
              strokeWidth: "10px",
            },
            i.createElement(
              "g",
              { className: "ScratchPad" },
              i.createElement("path", {
                fill: "none",
                strokeWidth: "0",
                strokeMiterlimit: "10",
                d: "M179.751,40.994h14.869 c8.388,0,15.25,6.862,15.25,15.25v141.193c0,8.388-6.862,15.25-15.25,15.25H57.37c-8.388,0-15.25-6.862-15.25-15.25V56.244 c0-8.388,6.862-15.25,15.25-15.25h14.869H179.751z",
              }),
              i.createElement("line", {
                fill: "none",
                strokeWidth: "0",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "74.495",
                y1: "27.313",
                x2: "74.495",
                y2: "54.063",
              }),
              i.createElement("line", {
                fill: "none",
                strokeWidth: "0",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "124.495",
                y1: "27.313",
                x2: "124.495",
                y2: "54.063",
              }),
              i.createElement("line", {
                fill: "none",
                strokeWidth: "0",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "174.745",
                y1: "27.313",
                x2: "174.745",
                y2: "54.063",
              }),
            ),
            i.createElement("line", {
              className: "TextLines",
              x1: "71.6",
              y1: "115.4",
              x2: "179.4",
              y2: "115.4",
            }),
            i.createElement("line", {
              className: "TextLines",
              x1: "71.6",
              y1: "145.8",
              x2: "143.3",
              y2: "145.8",
            }),
            i.createElement("line", {
              className: "TextLines",
              x1: "71.6",
              y1: "175.9",
              x2: "179.4",
              y2: "175.9",
            }),
            i.createElement("line", {
              className: "TextLines",
              x1: "73.7",
              y1: "82.7",
              x2: "166.8",
              y2: "82.7",
            }),
          );
        }
        function R(e) {
          const { off: t, ...n } = e;
          return t
            ? i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...n,
                },
                i.createElement("path", {
                  d: "M31.06 13L27.82 16.24C27.9314 16.8338 27.9916 17.436 28 18.04C28.001 19.0585 27.8424 20.0707 27.53 21.04H24L21 29.04L26 32.04C31.07 25.77 31.74 20.69 31.74 20.69C31.9114 19.8205 31.9985 18.9364 32 18.05C32.0008 16.3231 31.6821 14.611 31.06 13Z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  d: "M33.06 6.76005L30.94 4.64005L27.65 7.93005C25.6668 6.04325 23.1741 4.77921 20.48 4.2943C17.786 3.80939 15.0089 4.12489 12.4923 5.20176C9.97574 6.27863 7.83004 8.06963 6.32066 10.3532C4.81129 12.6368 4.00447 15.3127 4 18.05C4.00415 18.94 4.09458 19.8275 4.27 20.7C4.8128 23.3864 5.8541 25.9472 7.34 28.25L3.94 31.64L6.06 33.76L33.06 6.76005ZM12.69 22.89L12 21.05H8.47C8.15762 20.0807 7.99903 19.0685 8 18.05C8.00457 16.104 8.57689 14.2015 9.6468 12.5759C10.7167 10.9503 12.2377 9.67215 14.0233 8.89825C15.8089 8.12435 17.7815 7.88828 19.6993 8.21899C21.6171 8.54969 23.3967 9.4328 24.82 10.76L12.69 22.89Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...n,
                },
                i.createElement("path", {
                  d: "M32 18.05C32 14.337 30.525 10.7761 27.8995 8.15055C25.274 5.52504 21.713 4.05005 18 4.05005C14.287 4.05005 10.726 5.52504 8.1005 8.15055C5.475 10.7761 4 14.337 4 18.05C4.00415 18.94 4.09457 19.8275 4.27 20.7001C4.27 20.7001 4.93 25.78 10 32.05L15 29.05L12 21.05H8.47C8.15762 20.0807 7.99903 19.0685 8 18.05C8 15.3979 9.05357 12.8543 10.9289 10.979C12.8043 9.10362 15.3478 8.05005 18 8.05005C20.6522 8.05005 23.1957 9.10362 25.0711 10.979C26.9464 12.8543 28 15.3979 28 18.05C28.001 19.0685 27.8424 20.0807 27.53 21.05H24L21 29.05L26 32.05C31.07 25.78 31.74 20.7001 31.74 20.7001C31.9121 19.8272 31.9991 18.9397 32 18.05Z",
                  fill: "currentColor",
                }),
              );
        }
        function k(e) {
          return i.createElement(
            "svg",
            {
              width: "24",
              height: "24",
              viewBox: "0 0 24 24",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M21.1334 10.5001C21.1353 8.73644 20.6267 7.00996 19.6688 5.52915C19.5205 5.29997 19.3625 5.0782 19.1953 4.86435L17.452 6.60766L16.0589 5.21472L17.8215 3.45216C17.1909 2.93055 16.4899 2.49338 15.7354 2.15523C14.126 1.43394 12.3422 1.19403 10.5995 1.46448C8.8567 1.73492 7.22951 2.50415 5.91442 3.67927C4.59933 4.85438 3.65259 6.38512 3.18854 8.08659C2.72449 9.78807 2.76298 11.5875 3.29937 13.2676C3.83575 14.9477 4.84709 16.4365 6.21123 17.5543C7.57537 18.6721 9.23396 19.3711 10.9867 19.5667V23.3667L18.2067 17.1934C19.1298 16.3399 19.8664 15.3047 20.37 14.1528C20.8737 13.0009 21.1336 11.7573 21.1334 10.5001ZM14.4972 9.56583L16.3388 7.72437L14.9458 6.33143L13.1041 8.17289L14.4972 9.56583ZM7.33337 15.3334L7.33337 9.42369H9.30347L9.30347 11.9688L11.9907 9.2858L13.3816 10.6766L10.6983 13.3635H13.2437V15.3334H7.33337Z",
              fill: "currentColor",
            }),
          );
        }
        function L(e) {
          return i.createElement(
            "svg",
            {
              width: "36",
              height: "36",
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M31.7 15.75C31.703 13.1045 30.94 10.5148 29.5031 8.2936C28.0663 6.07238 26.0171 4.31465 23.603 3.23272C21.189 2.15079 18.5133 1.79092 15.8991 2.19659C13.285 2.60226 10.8442 3.75611 8.87157 5.51878C6.89893 7.28145 5.47882 9.57755 4.78275 12.1298C4.08667 14.682 4.14441 17.3811 4.94899 19.9013C5.44737 21.4623 6.2191 22.9133 7.22063 24.1901L9.32215 22.0886L11.4117 24.178L9.28472 26.305C9.29539 26.3138 9.30608 26.3226 9.31678 26.3313C11.363 28.008 13.8509 29.0565 16.48 29.35V35.05L27.31 25.79C28.6947 24.5098 29.7995 22.9569 30.555 21.2291C31.3105 19.5012 31.7003 17.6358 31.7 15.75ZM24.5 9V17.8646H21.5449V14.0469L17.5141 18.0714L15.4277 15.9853L19.4526 11.9549H15.6346V9H24.5ZM13.7543 17.6514L10.9918 20.4136L13.0814 22.503L15.8439 19.7408L13.7543 17.6514Z",
              fill: "currentColor",
            }),
          );
        }
        function G(e) {
          return i.createElement(
            "svg",
            {
              width: "36",
              height: "36",
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M31.7 15.75C31.703 13.1045 30.94 10.5148 29.5031 8.2936C28.0663 6.07238 26.0171 4.31465 23.603 3.23272C21.189 2.15079 18.5133 1.79092 15.8991 2.19659C13.285 2.60226 10.8442 3.75611 8.87157 5.51878C6.89893 7.28145 5.47882 9.57755 4.78275 12.1298C4.08667 14.682 4.14441 17.3811 4.94899 19.9013C5.75356 22.4214 7.27057 24.6546 9.31678 26.3313C11.363 28.008 13.8509 29.0565 16.48 29.35V35.05L27.31 25.79C28.6947 24.5098 29.7995 22.9569 30.555 21.2291C31.3105 19.5012 31.7003 17.6358 31.7 15.75ZM18 26.75C24.0751 26.75 29 21.8251 29 15.75C29 9.67487 24.0751 4.75 18 4.75C11.9249 4.75 7 9.67487 7 15.75C7 21.8251 11.9249 26.75 18 26.75Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M16.3333 21H13V11H16.3333V21ZM23 11H19.6667V21H23V11Z",
              fill: "currentColor",
            }),
          );
        }
        function F(e) {
          return (0, s.Qn)()
            ? i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_Group",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  d: "M7.71001 20.11C7.23859 21.3527 6.99798 22.6709 7.00001 24V30H1.23001V25.38C1.23001 24.6726 1.3695 23.9722 1.64049 23.3189C1.91149 22.6655 2.30867 22.0719 2.80931 21.5722C3.30995 21.0725 3.90422 20.6764 4.5581 20.4067C5.21199 20.1369 5.91266 19.9987 6.62001 20C6.98607 20.001 7.35115 20.0378 7.71001 20.11ZM6.50001 10C5.80778 10 5.13109 10.2053 4.55552 10.5899C3.97994 10.9744 3.53134 11.5211 3.26643 12.1606C3.00153 12.8002 2.93221 13.5039 3.06726 14.1828C3.20231 14.8618 3.53565 15.4854 4.02514 15.9749C4.51462 16.4644 5.13826 16.7977 5.81719 16.9328C6.49613 17.0678 7.19986 16.9985 7.8394 16.7336C8.47894 16.4687 9.02557 16.0201 9.41016 15.4445C9.79474 14.8689 10 14.1922 10 13.5C10 12.5717 9.63126 11.6815 8.97488 11.0251C8.31851 10.3688 7.42827 10 6.50001 10ZM13.5 9.5C13.5 8.60999 13.7639 7.73996 14.2584 6.99994C14.7529 6.25991 15.4557 5.68314 16.2779 5.34254C17.1002 5.00195 18.005 4.91283 18.8779 5.08647C19.7508 5.2601 20.5527 5.68868 21.182 6.31802C21.8113 6.94736 22.2399 7.74918 22.4135 8.6221C22.5872 9.49501 22.4981 10.3998 22.1575 11.2221C21.8169 12.0443 21.2401 12.7471 20.5001 13.2416C19.7601 13.7361 18.89 14 18 14C17.4087 14.0013 16.8229 13.8858 16.2764 13.6601C15.7298 13.4345 15.2332 13.103 14.8151 12.6849C14.397 12.2668 14.0655 11.7702 13.8399 11.2236C13.6142 10.6771 13.4987 10.0913 13.5 9.5ZM25 24V30H11V24C11 22.1435 11.7375 20.363 13.0503 19.0503C14.363 17.7375 16.1435 17 18 17C19.8565 17 21.637 17.7375 22.9498 19.0503C24.2625 20.363 25 22.1435 25 24ZM35 25.38V30H29V24C29.0038 22.6921 28.77 21.3944 28.31 20.17C28.7376 20.0576 29.1779 20.0004 29.62 20C31.0469 20 32.4153 20.5668 33.4242 21.5758C34.4332 22.5847 35 23.9531 35 25.38ZM29.5 17C28.8078 17 28.1311 16.7947 27.5555 16.4101C26.9799 16.0256 26.5313 15.4789 26.2664 14.8394C26.0015 14.1999 25.9322 13.4961 26.0673 12.8172C26.2023 12.1383 26.5357 11.5146 27.0251 11.0251C27.5146 10.5356 28.1383 10.2023 28.8172 10.0673C29.4961 9.9322 30.1999 10.0015 30.8394 10.2664C31.4789 10.5313 32.0256 10.9799 32.4102 11.5555C32.7947 12.1311 33 12.8078 33 13.5C33 14.4283 32.6313 15.3185 31.9749 15.9749C31.3185 16.6313 30.4283 17 29.5 17Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  version: "1.1",
                  id: "Layer_5",
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_Group",
                  x: "0px",
                  y: "0px",
                  width: "256px",
                  height: "256px",
                  viewBox: "0 0 256 256",
                },
                i.createElement(
                  "g",
                  { transform: "translate(0,-952.36218)" },
                  i.createElement("path", {
                    d: "M58.6,970.4c-15.4,0-28.1,12.7-28.1,28.1c0,15.4,12.7,28.1,28.1,28.1s28.1-12.7,28.1-28.1\tC86.7,983,74,970.4,58.6,970.4z M202.1,970.4c-15.4,0-28.1,12.7-28.1,28.1c0,15.4,12.7,28.1,28.1,28.1s28.1-12.7,28.1-28.1 C230.2,983,217.6,970.4,202.1,970.4z M130.4,986c-15.4,0-28.1,12.7-28.1,28.1c0,15.4,12.7,28.1,28.1,28.1s28.1-12.7,28.1-28.1 C158.5,998.6,145.8,986,130.4,986z M242.8,1110.6c0-0.1,0-17.9,0-18l-0.1-16.1c0-22.4-18.2-40.6-40.6-40.6 c-17.8,0-30,7.7-36.3,18.8c-2,3.5-3.4,7.3-4.5,11.1c-7.5-8.7-18.6-14.3-31-14.3s-23.5,5.6-31,14.3c-1.1-3.9-2.5-7.6-4.5-11.1 c-6.3-11.1-18.4-18.8-36.3-18.8c-22.4,0-40.6,18.2-40.6,40.6v46.8c0,3.4,2.8,6.2,6.2,6.2h12.5v31.2c0,3.4,2.8,6.2,6.2,6.2h31.2 c3.4,0,6.2-2.8,6.2-6.2v-31.2h9.4v9.4c0,3.4,2.8,6.2,6.2,6.2h12.5v31.2c0,3.4,2.8,6.2,6.2,6.2H146c3.4,0,6.2-2.8,6.2-6.2v-31.2 h12.5c3.4,0,6.2-2.8,6.2-6.2v-9.4h9.4v31.2c0,3.4,2.8,6.2,6.2,6.2h31.2c3.4,0,6.2-2.8,6.2-6.2v-31.2h12.5c3.4,0,6.3-2.7,6.3-6.2\tV1110.6z",
                  }),
                ),
              );
        }
        function P(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_RecentChats",
              viewBox: "0 0 22 22",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M0.333252 0.666626V8.66663V11.3333L3.66659 8.66663H14.9999V0.666626H0.333252ZM6.99992 11.3333V19.3333H18.3333L21.6666 22V19.3333V11.3333H6.99992Z",
            }),
          );
        }
        function B(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_ScratchPad",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M28 6V2H24V6H12V2H8V6H4V32H26C27.5913 32 29.1174 31.3679 30.2426 30.2426C31.3679 29.1174 32 27.5913 32 26V6H28ZM18 25H10V21H18V25ZM26 17H10V13H26V17Z",
              fill: "currentColor",
            }),
          );
        }
        function x(e) {
          let t = "SVGIcon_Button SVGIcon_Pin";
          return (
            e.bPinned && (t += " Pinned"),
            i.createElement(
              "svg",
              {
                version: "1.1",
                xmlns: "http://www.w3.org/2000/svg",
                className: t,
                x: "0px",
                y: "0px",
                width: "256px",
                height: "256px",
                viewBox: "0 0 256 256",
              },
              i.createElement("path", {
                className: "point",
                d: "M134.787,129.241v52.051v26.025c0.041,4.334-0.092,8.677,0.094,13.009c-1.493,4.332-3.129,8.675-5.239,13.009 c-2.109-4.334-3.734-8.677-5.237-13.009c0.186-4.333,0.05-8.677,0.092-33.009v-26.025v-32.051v-5.146h10.291V129.241z",
              }),
              i.createElement("path", {
                className: "head",
                d: "M186.55,151.049H73.351l-5.146-5.146c0-23.791,11.186-40.359,30.871-46.091V39.394 c-6.843-3.478-17.164-10.034-17.154-27.312l5.146-5.146h85.167l5.146,5.146c0,17.227-9.828,23.803-16.537,27.292v60.521 c19.664,6.062,30.852,22.609,30.852,46.01L186.55,151.049z",
              }),
              i.createElement("line", {
                className: "ground",
                opacity: e.bPinned ? 1 : 0,
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "16",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "33.833",
                y1: "238.5",
                x2: "221.834",
                y2: "238.5",
              }),
            )
          );
        }
        function O(e) {
          const { className: t } = e;
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)("SVGIcon_Button SVGIcon_PlusCircle", t),
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            !e.nocircle &&
              i.createElement("circle", {
                fill: "none",
                strokeWidth: "10",
                strokeMiterlimit: "10",
                cx: "128",
                cy: "128",
                r: "95.333",
              }),
            i.createElement("line", {
              className: "horizontalLine",
              fill: "none",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              x1: "73.333",
              y1: "128",
              x2: "183.333",
              y2: "128",
            }),
            !e.minus &&
              i.createElement("line", {
                className: "verticalLine",
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "128.333",
                y1: "73.335",
                x2: "128.333",
                y2: "183.333",
              }),
          );
        }
        function N(e) {
          return (0, s.Qn)()
            ? i.createElement(
                "svg",
                {
                  width: "36",
                  height: "36",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  ...e,
                },
                i.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M5.63604 19.636C7.32387 17.9482 9.61305 17 12 17C12.4664 17 12.9292 17.0362 13.3844 17.1071C13.1338 18.0289 13 18.9988 13 20C13 25.0351 16.383 29.2801 21 30.5859V31H3V26C3 23.6131 3.94821 21.3239 5.63604 19.636ZM14.7779 13.1573C13.9556 13.7068 12.9889 14 12 14C10.6739 14 9.40215 13.4732 8.46447 12.5355C7.52678 11.5979 7 10.3261 7 9C7 8.0111 7.29324 7.0444 7.84265 6.22215C8.39206 5.39991 9.17295 4.75904 10.0866 4.3806C11.0002 4.00217 12.0055 3.90315 12.9755 4.09608C13.9454 4.289 14.8363 4.76521 15.5355 5.46447C16.2348 6.16373 16.711 7.05465 16.9039 8.02455C17.0969 8.99446 16.9978 9.99979 16.6194 10.9134C16.241 11.827 15.6001 12.6079 14.7779 13.1573Z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M24 28C28.4183 28 32 24.4183 32 20C32 15.5817 28.4183 12 24 12C19.5817 12 16 15.5817 16 20C16 24.4183 19.5817 28 24 28ZM22.5 21.5V26H25.5V21.5H30V18.5H25.5V14H22.5V18.5H18V21.5H22.5Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  version: "1.1",
                  id: "Layer_1",
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_AddFriend",
                  x: "0px",
                  y: "0px",
                  width: "256px",
                  height: "256px",
                  viewBox: "0 0 256 256",
                },
                i.createElement(
                  "g",
                  {
                    className: "friendHead",
                    transform: "matrix(1.34048,0,0,1.34048,-10.0942,-5.50445)",
                  },
                  i.createElement("circle", {
                    cx: "86.296",
                    cy: "47.419",
                    r: "33.526",
                    fill: "currentcolor",
                  }),
                ),
                i.createElement("path", {
                  className: "friendBody",
                  d: "M100.353,170.882c0-23.589,10.397-44.736,26.842-59.152c-3.352-0.423-6.773-0.649-10.257-0.649H94.231\tc-39.775,0-56.481,28.271-56.481,63.099v41.88c0,0-0.3,16.369,35.917,21.813c36.217,5.444,73.651,5,73.651,5 C119.666,230.681,100.353,203.044,100.353,170.882z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  className: "plusCircle",
                  d: "M179.01,103.892c-36.998,0-66.99,29.992-66.99,66.99s29.994,66.989,66.99,66.989c36.997,0,66.99-29.991,66.99-66.989 S216.008,103.892,179.01,103.892z M217.893,175.882h-33.647v33.882c0,2.762-2.239,5-5,5s-5-2.238-5-5v-33.882h-33.647 c-2.762,0-5-2.238-5-5c0-2.763,2.238-5,5-5h33.647V132.47c0-2.762,2.239-5,5-5s5,2.238,5,5v33.412h33.647c2.762,0,5,2.237,5,5 C222.893,173.643,220.654,175.882,217.893,175.882z",
                  fill: "currentColor",
                }),
              );
        }
        function V() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_4",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_FriendRequest",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              {
                className: "friendHead",
                transform: "matrix(1.34048,0,0,1.34048,-10.0942,-5.50445)",
              },
              i.createElement("circle", {
                cx: "85.923",
                cy: "47.419",
                r: "33.526",
              }),
            ),
            i.createElement("path", {
              className: "friendBody",
              d: "M100.353,170.882c0-23.589,10.397-44.736,26.842-59.152c-3.352-0.423-6.773-0.649-10.257-0.649H94.231\tc-39.775,0-56.481,28.271-56.481,63.099v41.88c0,0-0.3,16.369,35.917,21.813c36.217,5.444,73.651,5,73.651,5 C119.666,230.681,100.353,203.044,100.353,170.882z",
            }),
            i.createElement("path", {
              className: "friendBodyFull",
              d: "M176.504,217.922v-42.624c0-35.443-17.002-64.217-57.483-64.217H106.96h-1.017H94.898 c-40.48,0.001-57.484,28.774-57.484,64.217v42.624c0,0,0,22.197,69.544,22.197C177.521,240.121,176.504,217.922,176.504,217.922z",
            }),
            i.createElement("path", {
              className: "friendArm",
              d: "M18.167,63.833c6.53-0.734,39.348,39.127,50.007,47.647s21.327,16.686,15.16,25.353s-20.646,16.74-36.167,2.5 S-1.349,90.532,0,85.333S8.599,64.909,18.167,63.833z",
            }),
            i.createElement("path", {
              className: "redCircle",
              d: "M178.51,103.892c-36.998,0-66.99,29.992-66.99,66.99s29.994,66.99,66.99,66.99c36.997,0,66.99-29.992,66.99-66.99 S215.508,103.892,178.51,103.892z",
            }),
          );
        }
        function U(e) {
          return (0, s.Qn)()
            ? i.createElement(
                "svg",
                {
                  width: "36",
                  height: "36",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  className: "SVGIcon_Button SVGIcon_Invite",
                  xmlns: "http://www.w3.org/2000/svg",
                  ...e,
                },
                i.createElement("path", {
                  d: "M5.5 7C5.5 6.20888 5.7346 5.43552 6.17412 4.77772C6.61365 4.11992 7.23836 3.60723 7.96927 3.30448C8.70017 3.00173 9.50444 2.92252 10.2804 3.07686C11.0563 3.2312 11.769 3.61216 12.3284 4.17157C12.8878 4.73098 13.2688 5.44372 13.4231 6.21964C13.5775 6.99556 13.4983 7.79983 13.1955 8.53074C12.8928 9.26164 12.3801 9.88635 11.7223 10.3259C11.0645 10.7654 10.2911 11 9.5 11C8.43913 11 7.42172 10.5786 6.67157 9.82843C5.92143 9.07828 5.5 8.06087 5.5 7ZM9.5 14C7.51088 14 5.60322 14.7902 4.1967 16.1967C2.79018 17.6032 2 19.5109 2 21.5V26H5.2L6 35H13L13.8 26H17V21.5C17 19.5109 16.2098 17.6032 14.8033 16.1967C13.3968 14.7902 11.4891 14 9.5 14Z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M34.959 9.48904C34.9608 7.85167 34.4886 6.24879 33.5993 4.87399C32.7099 3.49918 31.4416 2.41125 29.9474 1.7416C28.4533 1.07195 26.7972 0.849212 25.1792 1.1003C23.5612 1.35138 22.0505 2.06555 20.8295 3.15654C19.6086 4.24753 18.7296 5.66868 18.2988 7.24834C17.868 8.82801 17.9037 10.4986 18.4017 12.0584C18.8997 13.6182 19.8386 15.0005 21.1051 16.0383C22.3716 17.0761 23.9114 17.725 25.5387 17.9066V21.4346L32.2418 15.7032C33.0989 14.9108 33.7827 13.9497 34.2503 12.8803C34.7179 11.8109 34.9592 10.6562 34.959 9.48904ZM24.8116 11.2173V14.6231H28.2173V11.2173H31.6231V7.81157H28.2173V4.4058H24.8116V7.81157H21.4058V11.2173H24.8116Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  version: "1.1",
                  id: "Layer_5",
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_Invite",
                  x: "0px",
                  y: "0px",
                  width: "256px",
                  height: "255.999px",
                  viewBox: "0 0 256 255.999",
                },
                i.createElement("path", {
                  d: "M165.678,20.535c-17.251,0-31.386,14.135-31.386,31.386c0,17.252,14.135,31.386,31.386,31.386 c17.251,0,31.386-14.134,31.386-31.386C197.063,34.67,182.929,20.535,165.678,20.535z",
                }),
                i.createElement("path", {
                  d: "M165.678,93.121c24.995,0,45.335,20.34,45.335,45.335v52.31c0,3.853-3.123,6.975-6.975,6.975h-13.95v34.874 c0,3.852-3.123,6.974-6.974,6.975h-34.874c-3.852-0.001-6.974-3.123-6.975-6.975v-34.874h-13.95c-3.852,0-6.974-3.123-6.974-6.975 v-52.31C120.343,113.461,140.683,93.121,165.678,93.121z",
                }),
                i.createElement(
                  "g",
                  { className: "invitePlus" },
                  i.createElement("line", {
                    fill: "none",
                    stroke: "#ffffff",
                    strokeWidth: "22",
                    strokeMiterlimit: "10",
                    x1: "14",
                    y1: "128",
                    x2: "101.5",
                    y2: "128",
                  }),
                  i.createElement("line", {
                    fill: "none",
                    stroke: "#ffffff",
                    strokeWidth: "22",
                    strokeMiterlimit: "10",
                    x1: "57.75",
                    y1: "84.25",
                    x2: "57.75",
                    y2: "171.75",
                  }),
                ),
              );
        }
        function H() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_5",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Paperclip",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fill: "none",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M167.768,62.647 l-0.012,123.052c0,24.729-19.334,44.856-43.096,44.866c-23.765-0.006-43.099-20.134-43.096-44.872L81.557,48.851 c0-15.345,14.483-27.827,29.83-27.83c15.342,0.003,27.827,12.488,27.833,27.833l-0.002,139.245 c0.003,6.376-8.546,12.925-14.925,12.925c0,0-13.929-0.166-13.929-12.928l0.003-124.839",
            }),
          );
        }
        function W(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              d: "M25.1181 30.1923C23.8364 31.4691 22.2052 32.3377 20.4303 32.6884C18.6554 33.0391 16.8165 32.8562 15.1454 32.1628C13.4744 31.4693 12.0462 30.2965 11.0411 28.7922C10.0359 27.2879 9.49891 25.5196 9.49776 23.7104L9.49776 7.91381C9.65271 6.56298 10.2991 5.31635 11.3139 4.41135C12.3286 3.50635 13.6408 3.00623 15.0005 3.00623C16.3601 3.00623 17.6723 3.50635 18.6871 4.41135C19.7018 5.31635 20.3482 6.56298 20.5032 7.9138L20.5032 23.9715H16.8086L16.7955 7.91381C16.7858 7.43731 16.5922 6.98305 16.2552 6.64605C15.9182 6.30905 15.4639 6.11542 14.9874 6.10568C14.5109 6.11542 14.0567 6.30905 13.7197 6.64605C13.3827 6.98305 13.189 7.43732 13.1793 7.91381L13.1858 23.717C13.2181 25.1446 13.8079 26.5028 14.829 27.5011C15.8501 28.4993 17.2214 29.0582 18.6494 29.0582C20.0773 29.0582 21.4486 28.4993 22.4697 27.5011C23.4908 26.5028 24.0806 25.1446 24.1129 23.717V6.45816L27.8271 6.42553L27.8075 23.717C27.8046 26.1465 26.8373 28.4755 25.1181 30.1923Z",
            }),
          );
        }
        function z(e) {
          const { muted: t, className: n } = e;
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)("SVGIcon_Button", "SVGIcon_Volume", n),
              x: "0px",
              y: "0px",
              width: "256px",
              height: "255.999px",
              viewBox: "0 0 256 255.999",
            },
            i.createElement(
              "g",
              { className: "Speaker" },
              i.createElement("path", {
                d: "M93.785,52.265c-0.946,0-2.357,0.63-3.304,1.577L40.284,98.022c-0.947,0.789-2.831,1.578-4.093,1.578H9.367 C8.104,99.6,7,100.706,7,101.967v52.069c0,1.264,1.104,2.367,2.367,2.367H36.19c1.262,0,3.146,0.632,4.093,1.578l50.197,44.181 c0.947,0.789,2.516,1.578,3.304,1.578s1.578-1.104,1.578-2.367V54.631C95.363,53.369,94.731,52.265,93.785,52.265z",
              }),
            ),
            !t &&
              i.createElement(
                "g",
                { className: "SoundWaves" },
                i.createElement("path", {
                  className: "SoundWavesHighest",
                  d: "M193.826,30.402c24.959,24.958,40.349,59.403,40.349,97.604c0,38.199-15.388,72.645-40.349,97.603l9.916,9.916 c28.067-28.067,44.263-64.673,44.263-107.521c0-42.847-16.196-79.455-44.263-107.521",
                }),
                i.createElement("path", {
                  className: "SoundWavesHigh",
                  d: "M175.737,47.628l-8.924,8.924c18.271,18.27,29.536,43.484,29.536,71.448s-11.264,53.178-29.536,71.448l8.924,8.924 c20.546-20.546,33.234-49.008,33.234-80.374c0-31.366-12.688-59.829-33.234-80.374V47.628z",
                }),
                i.createElement("path", {
                  className: "SoundWavesMed",
                  d: "M148.913,74.454l-8.925,8.925c11.488,11.488,18.491,27.236,18.491,44.624c0,17.388-7.054,33.281-18.491,44.575l8.875,8.975 c13.811-13.635,22.239-32.753,22.239-53.55c0-20.797-8.432-39.793-22.189-53.55V74.454z",
                }),
                i.createElement("path", {
                  className: "SoundWavesLow",
                  d: "M121.989,101.229l-8.778,9.073c4.641,4.516,7.397,10.706,7.397,17.702c0,6.995-2.755,13.186-7.397,17.702l8.778,9.073 c7.035-6.844,11.243-16.413,11.243-26.775C133.232,117.643,129.024,108.075,121.989,101.229z",
                }),
              ),
            i.createElement(
              "g",
              { className: "SoundX" },
              i.createElement("line", {
                fill: "none",
                strokeWidth: t ? 10 : 0,
                stroke: "#fff",
                strokeMiterlimit: "10",
                x1: "137",
                y1: "170.667",
                x2: "223.167",
                y2: "84.5",
              }),
              i.createElement("line", {
                fill: "none",
                strokeWidth: t ? 10 : 0,
                stroke: "#fff",
                strokeMiterlimit: "10",
                x1: "137",
                y1: "84.5",
                x2: "223.167",
                y2: "170.667",
              }),
            ),
          );
        }
        function j() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_NewChatGroup",
              x: "0px",
              y: "0px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "Bubble",
              strokeWidth: "12",
              strokeMiterlimit: "10",
              d: "M127.393,10.833 c64.854,0,117.46,52.609,117.46,117.013c0,24.035-7.254,45.804-19.5,63.943c-4.99,7.711,13.15,39.457,20.408,51.705 c4.989,8.612-51.701-19.05-59.412-14.514c-17.233,9.979-37.188,15.872-58.957,15.872c-64.859,0-117.465-52.607-117.465-117.008 C9.928,63.442,62.534,10.833,127.393,10.833z",
            }),
            i.createElement("line", {
              strokeWidth: "22",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              x1: "83.5",
              y1: "128.886",
              x2: "176.184",
              y2: "128.886",
            }),
            i.createElement("line", {
              strokeWidth: "22",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              x1: "129.842",
              y1: "82.544",
              x2: "129.842",
              y2: "175.228",
            }),
          );
        }
        function q(e) {
          return i.createElement(
            "svg",
            {
              width: "36",
              height: "36",
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              ...e,
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M31.7 15.75C31.703 13.1045 30.94 10.5148 29.5031 8.2936C28.0663 6.07238 26.0171 4.31465 23.603 3.23272C21.189 2.15079 18.5133 1.79092 15.8991 2.19659C13.285 2.60226 10.8442 3.75611 8.87157 5.51878C6.89893 7.28145 5.47882 9.57755 4.78275 12.1298C4.08667 14.682 4.14441 17.3811 4.94899 19.9013C5.75356 22.4214 7.27057 24.6546 9.31678 26.3313C11.363 28.008 13.8509 29.0565 16.48 29.35V35.05L27.31 25.79C28.6947 24.5098 29.7995 22.9569 30.555 21.2291C31.3105 19.5012 31.7003 17.6358 31.7 15.75ZM16.25 17.75V23H19.75V17.75H25V14.25H19.75V9H16.25V14.25H11V17.75H16.25Z",
              fill: "currentColor",
            }),
          );
        }
        function K() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Crown",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                d: "M239.874,94.963l-31.115,21.325c-18.18,12.586-43.351,5.594-52.44-14.333l-23.772-50.692c-2.099-4.194-8.041-4.194-9.789,0 l-23.074,50.343c-9.439,20.627-35.31,27.27-53.49,13.983L16.128,93.565c-4.195-3.147-10.139,1.049-8.391,6.293l31.464,106.628 c0.35,1.049,1.398,1.397,2.098,1.397h173.752c1.049,0,1.749-0.698,2.098-1.397l31.115-104.53 C250.012,96.36,244.068,91.816,239.874,94.963z",
              }),
            ),
          );
        }
        function Z() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Play",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "playTriangle",
              d: "M65.321,33.521c-11.274-6.615-20.342-1.471-20.342,11.52V210.96c0,12.989,9.068,18.135,20.342,11.521l137.244-82.348 c11.274-6.618,11.274-17.646,0-24.509L65.321,33.521z",
            }),
          );
        }
        function Q() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Pause",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              d: "M44.979,219.364c0,3.3,2.7,6,6,6h49.753c3.3,0,6-2.7,6-6V36.5c0-3.3-2.7-6-6-6H50.979c-3.3,0-6,2.7-6,6V219.364z",
            }),
            i.createElement("path", {
              d: "M149.267,219.364c0,3.3,2.7,6,6,6h49.753c3.3,0,6-2.7,6-6V36.5c0-3.3-2.7-6-6-6h-49.753c-3.3,0-6,2.7-6,6V219.364z",
            }),
          );
        }
        function $() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_SortBy",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              { className: "time" },
              i.createElement("circle", {
                fill: "none",
                strokeWidth: "10",
                strokeMiterlimit: "10",
                cx: "91.735",
                cy: "128.014",
                r: "64",
              }),
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points: "91.735,90.833 91.735,128.014 116.58,152.086 \t",
              }),
            ),
            i.createElement(
              "g",
              { className: "alphabet" },
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                points: "70.268,109.934 94.483,63.635 119.77,109.934",
              }),
              i.createElement("line", {
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                x1: "77.458",
                y1: "97.861",
                x2: "112.135",
                y2: "97.861",
              }),
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                points:
                  "70.045,145.379 119.547,145.379 70.045,192.032 119.547,192.032",
              }),
            ),
            i.createElement(
              "g",
              { className: "Arrow" },
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                points: "199.735,63.66 199.735,192.366 171.207,163.675",
              }),
              i.createElement("polyline", {
                fill: "none",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "10",
                points: "199.735,63.66 199.735,192.366 228.266,163.675",
              }),
            ),
          );
        }
        function X(e) {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Check",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
              strokeWidth: "24",
              stroke: e.color ?? "#fff",
              strokeLinecap: "round",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              ...e,
            },
            i.createElement("polyline", {
              fill: "none",
              points: "49.5,147.75 95,210.75 206.5,45.25 ",
            }),
          );
        }
        function Y(e) {
          let t = e.highlightColor || "#00ccff",
            n = e.color || "#2d73ff";
          const [o, r] = (0, l.l)(),
            [a, s] = (0, l.l)(),
            [c] = (0, i.useState)(Math.random().toString());
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_DialogCheck",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "defs",
              null,
              i.createElement(
                "linearGradient",
                { id: o, x1: "0%", y1: "0%", x2: "100%", y2: "100%" },
                i.createElement("stop", { offset: "0%", stopColor: t }),
                i.createElement("stop", { offset: "100%", stopColor: n }),
              ),
              i.createElement(
                "filter",
                { id: a, x: "0", y: "0", width: "200%", height: "200%" },
                i.createElement("feOffset", {
                  result: "offOut",
                  in: "SourceAlpha",
                  dx: "20",
                  dy: "20",
                }),
                i.createElement("feGaussianBlur", {
                  result: "blurOut",
                  in: "offOut",
                  stdDeviation: "10",
                }),
                i.createElement("feBlend", {
                  in: "SourceGraphic",
                  in2: "blurOut",
                  mode: "normal",
                }),
              ),
            ),
            i.createElement("path", {
              fill: "none",
              stroke: r,
              strokeWidth: "24",
              strokeLinecap: "round",
              strokeLinejoin: "miter",
              strokeMiterlimit: "10",
              d: "M206.5,45.25L95,210.75l-45.5-63",
              strokeDasharray: "365.19 365.19",
              strokeDashoffset: "0.00",
            }),
            i.createElement("path", {
              fill: "none",
              opacity: ".2",
              filter: s,
              stroke: r,
              strokeWidth: "24",
              strokeLinecap: "round",
              strokeLinejoin: "miter",
              strokeMiterlimit: "10",
              d: "M206.5,45.25L95,210.75l-45.5-63",
              strokeDasharray: "365.19 365.19",
              strokeDashoffset: "0.00",
            }),
          );
        }
        function J(e) {
          const { className: t, color: n = "#020202" } = e;
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)("SVGIcon_Button", "SVGIcon_Caution", t),
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              { className: "triangle" },
              i.createElement("path", {
                stroke: n,
                strokeWidth: "16",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                d: "M127.9,76.632",
              }),
              i.createElement("path", {
                fill: "none",
                stroke: n,
                strokeWidth: "11",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                strokeMiterlimit: "5",
                d: "M128.001,226.606c42.507,0,81.538,0,87.756,0c31.222,0,36.95-14.974,24.045-34.771c-6.921-10.617-78.297-122.962-89.163-140.254\tC141.859,37.613,138.542,29.393,128,29.393l0,0c-10.543,0-13.86,8.222-22.639,22.189C94.495,68.874,23.119,181.219,16.198,191.836 c-12.905,19.797-7.175,34.771,24.045,34.771C46.463,226.606,85.494,226.606,128.001,226.606",
              }),
              i.createElement("path", { fill: n, d: "M127.9,208.12" }),
            ),
            i.createElement(
              "g",
              { className: "exclamation" },
              i.createElement("line", {
                fill: "none",
                stroke: n,
                strokeWidth: "16",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "127.9",
                y1: "76.632",
                x2: "127.9",
                y2: "160.07",
              }),
              i.createElement("path", {
                fill: n,
                d: "M127.9,208.12c-6.377,0-11.548-5.17-11.548-11.548c0-6.377,5.17-11.547,11.548-11.547 c6.377,0,11.547,5.17,11.547,11.547C139.447,202.95,134.277,208.12,127.9,208.12",
              }),
            ),
          );
        }
        function ee() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Lock",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "topLock",
              d: "M203.553,197.794c0,21.929-17.778,39.706-39.706,39.706H92.154c-21.929,0-39.706-17.777-39.706-39.706v-71.693 c0-21.928,17.778-39.706,39.706-39.706h71.692c21.928,0,39.706,17.778,39.706,39.706V197.794z M128.001,129.664 c-8.941,0-16.19,7.248-16.19,16.189c0,5.589,2.833,10.518,7.137,13.427c2.066,1.395,0.318,23.508,0.318,32.842 c0,2.292-0.078,3.65,8.734,3.65c8.676,0,8.75-1.221,8.75-3.654c0-9.348-1.708-31.469,0.368-32.886 c4.269-2.916,7.071-7.821,7.071-13.38C144.191,136.912,136.941,129.664,128.001,129.664z",
            }),
            i.createElement("path", {
              className: "baseLock",
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "22",
              strokeMiterlimit: "10",
              d: "M84.813,172.74V73.688l0,0 c0-23.85,19.335-43.188,43.187-43.188l0,0c23.852,0,43.188,19.337,43.188,43.188l0,0v23.885",
            }),
          );
        }
        function te() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Video",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "videoPlayButton",
              d: "M165.399,124.063L109.118,92.06c-1.399-0.797-3.118-0.787-4.508,0.026c-1.39,0.805-2.25,2.295-2.25,3.905v64.008 c0,1.609,0.86,3.1,2.25,3.913c0.705,0.412,1.491,0.613,2.277,0.613c0.768,0,1.546-0.191,2.241-0.596l56.283-32.003 c1.416-0.806,2.285-2.306,2.285-3.934C167.694,126.368,166.816,124.869,165.399,124.063z",
            }),
            i.createElement("path", {
              d: "M238.069,40.646H214.25h-28.82h-28.82h-28.458h-0.36H99.333H70.536H41.727h-23.82c-3.184,0-5.773,2.59-5.773,5.772v23.856 v120.441v18.867c0,3.184,2.589,5.771,5.773,5.771h2.415h21.394h28.82h28.82h28.459h0.361h28.457h28.82h28.82h23.82 c3.184,0,5.773-2.589,5.773-5.771v-18.867V70.274V46.418C243.844,43.223,241.254,40.646,238.069,40.646z M191.215,47.181h17.273  V64.5h-17.273V47.181L191.215,47.181z M162.396,47.181h17.272V64.5h-17.272V47.181z M133.938,47.181h16.912V64.5h-16.912V47.181z\tM105.128,47.181h16.912V64.5h-16.912V47.181z M76.309,47.181h17.273V64.5H76.309V47.181z M47.488,47.181h17.273V64.5H47.488V47.181 z M18.681,47.181h17.273V64.5H18.681V47.181z M35.954,208.811H18.681v-17.319h17.273V208.811z M64.763,208.811H47.489v-17.319 h17.273V208.811L64.763,208.811z M93.583,208.811H76.31v-17.319h17.273V208.811z M122.041,208.811h-16.912v-17.319h16.912V208.811z M150.849,208.811h-16.912v-17.319h16.912V208.811z M179.668,208.811h-17.272v-17.319h17.272V208.811z M208.488,208.811h-17.273 v-17.319h17.273V208.811z M237.297,208.811h-17.273v-17.319h17.273V208.811L237.297,208.811z M237.297,184.943H214.25h-28.819 h-28.82h-28.458h-0.361H99.333H70.537H41.728H18.682V71.047h23.046h28.82h28.82h28.458h0.36h28.458h28.82h28.82h23.045v113.896 H237.297z M237.297,64.5h-17.273V47.181h17.273V64.5L237.297,64.5z",
            }),
          );
        }
        function ne() {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              version: "1.1",
              className: "SVGIcon_Button SVGIcon_Image",
              x: "0px",
              y: "0px",
              viewBox: "0 0 100 100",
              enableBackground: "new 0 0 100 100",
            },
            i.createElement("path", {
              stroke: "#ffffff",
              fill: "#ffffff",
              d: "M83.086,12.091H16.913C10.344,12.091,5,17.435,5,24.004v51.992l0.005,0.102c0.056,6.514,5.396,11.813,11.908,11.813h66.173  c6.531,0,11.874-5.314,11.906-11.764L95,24.004C95,17.435,89.654,12.091,83.086,12.091z M83.086,82.989H16.913  c-3.516,0-6.488-2.653-6.93-6.106l18.899-20.615c1.226-1.34,2.85-2.076,4.574-2.076c1.723,0,3.347,0.736,4.574,2.078l19.611,21.393  c0.885,0.961,2.508,1.029,3.473,0.148c1-0.916,1.068-2.476,0.152-3.478l-4.113-4.485l8.406-8.918  c1.258-1.332,2.926-2.064,4.696-2.064c1.772,0,3.44,0.732,4.696,2.064l15.061,15.973C89.564,80.346,86.594,82.989,83.086,82.989z   M90.08,69.801L78.532,57.555c-2.194-2.328-5.132-3.609-8.275-3.609c-3.142,0-6.08,1.281-8.272,3.609l-8.164,8.656l-12.162-13.27  c-2.171-2.366-5.084-3.67-8.201-3.67c-3.119,0-6.031,1.304-8.202,3.67L9.92,69.673V24.004c0-3.856,3.137-6.994,6.993-6.994h66.173  c3.857,0,6.994,3.137,6.994,6.994V69.801z",
            }),
            i.createElement("path", {
              stroke: "#ffffff",
              fill: "#ffffff",
              d: "M68.907,22.489c-6.569,0-11.914,5.344-11.914,11.914c0,6.569,5.345,11.913,11.914,11.913  c6.567,0,11.913-5.344,11.913-11.913C80.82,27.833,75.477,22.489,68.907,22.489z M68.907,41.396c-3.856,0-6.993-3.137-6.993-6.993  s3.137-6.994,6.993-6.994c3.854,0,6.991,3.138,6.991,6.994S72.764,41.396,68.907,41.396z",
            }),
          );
        }
        function ie(e) {
          return (0, s.Qn)()
            ? i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_Bell",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M32 24V26H4V24L8 19V12C8 9.34784 9.05357 6.8043 10.9289 4.92893C12.8043 3.05357 15.3478 2 18 2C20.6522 2 23.1957 3.05357 25.0711 4.92893C26.9464 6.8043 28 9.34784 28 12V19L32 24ZM18 34C19.2396 33.9986 20.4483 33.6133 21.46 32.897C22.4718 32.1807 23.2368 31.1687 23.65 30H12.35C12.7632 31.1687 13.5282 32.1807 14.54 32.897C15.5517 33.6133 16.7604 33.9986 18 34Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  version: "1.1",
                  id: "base",
                  xmlns: "http://www.w3.org/2000/svg",
                  className: "SVGIcon_Button SVGIcon_Bell",
                  x: "0px",
                  y: "0px",
                  width: "256px",
                  height: "256px",
                  viewBox: "0 0 256 256",
                },
                i.createElement("path", {
                  d: "M107.785,33.965c-34.875,8.972-60.644,40.618-60.644,78.308v53.903c0,4.965-4.035,8.99-8.975,8.99 c-9.929,0-17.978,8.066-17.978,17.971c0,9.924,8.059,17.969,18.013,17.969h179.598c9.948,0,18.014-8.066,18.014-17.969 c0-9.926-8.087-17.971-17.979-17.971c-4.956,0-8.975-3.993-8.975-8.99v-53.903c0-37.676-25.763-69.333-60.644-78.308v-9.281 c0-11.193-9.052-20.219-20.215-20.219c-11.143,0-20.215,9.052-20.215,20.219V33.965L107.785,33.965z M96.554,220.09h62.891 c0,17.366-14.079,31.445-31.445,31.445C110.633,251.535,96.554,237.458,96.554,220.09z",
                }),
              );
        }
        function oe(e) {
          return i.createElement(
            "svg",
            {
              style: { transform: `rotate(${e.angle}deg)` },
              version: "1.1",
              id: "arrowBase",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Arrow",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polyline", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points: "128,247.688 128,8.313 181.061,61.674 ",
            }),
            i.createElement("polyline", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeLinejoin: "round",
              strokeMiterlimit: "10",
              points: "128,247.688 128,8.313 74.939,61.674 ",
            }),
          );
        }
        function re(e) {
          return i.createElement(
            "svg",
            {
              style: { transform: `rotate(${e.angle}deg)` },
              version: "1.1",
              id: "arrowBase",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_DoubleArrow",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polyline", {
              className: "Arrow1",
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "23",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              points: "135.65,21.667 30.081,127.235 137.18,234.333 ",
            }),
            !e.singlearrow &&
              i.createElement("polyline", {
                className: "Arrow2",
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "23",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points: "224.389,21.667 118.821,127.235 225.92,234.333 ",
              }),
          );
        }
        function ae() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "arrowBase",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_DoubleArrow",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polyline", {
              className: "Arrow1",
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "23",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              points: "135.65,21.667 30.081,127.235 137.18,234.333 ",
            }),
            i.createElement("polyline", {
              className: "Arrow2",
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "23",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              points: "224.389,21.667 118.821,127.235 225.92,234.333 ",
            }),
          );
        }
        function se() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Maximize",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("rect", {
              x: "24",
              y: "42.167",
              fill: "none",
              stroke: "rgb(120, 138, 146)",
              strokeWidth: "18",
              strokeMiterlimit: "10",
              width: "208",
              height: "171.667",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: "rgb(120, 138, 146)",
              strokeWidth: "42",
              strokeMiterlimit: "10",
              x1: "24",
              y1: "54.01",
              x2: "232",
              y2: "54.01",
            }),
          );
        }
        function le() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Minimize",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("line", {
              fill: "none",
              stroke: "rgb(120, 138, 146)",
              strokeWidth: "18",
              strokeMiterlimit: "10",
              x1: "24",
              y1: "209.01",
              x2: "232",
              y2: "209.01",
            }),
          );
        }
        function ce() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Restore",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polyline", {
              fill: "none",
              stroke: "rgb(120, 138, 146)",
              strokeWidth: "12",
              strokeMiterlimit: "10",
              points: "83,90.861 83,42.167 232,42.167 232,165.14 173,165.14 ",
            }),
            i.createElement("rect", {
              x: "24",
              y: "90.861",
              fill: "none",
              stroke: "rgb(120, 138, 146)",
              strokeWidth: "18",
              strokeMiterlimit: "10",
              width: "149",
              height: "122.973",
            }),
          );
        }
        function me() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Reload",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "30",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M229.809,147.639 c-9.178,47.863-51.27,84.027-101.809,84.027c-57.253,0-103.667-46.412-103.667-103.666S70.747,24.334,128,24.334 c34.107,0,64.368,16.472,83.261,41.895",
            }),
            i.createElement("polygon", {
              points: "147.639,108.361 245.755,10.166 245.834,108.361 ",
            }),
          );
        }
        function de() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Trade",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              d: "M132.025,162.943h40.246c0,0,3.219,56.879-31.303,79.599c-12.298,8.094,71.103-6.708,75.574-79.599h35.775l-60.146-74.681 L132.025,162.943z",
            }),
            i.createElement("path", {
              d: "M123.975,93.056H83.729c0,0-3.219-56.879,31.303-79.599c12.298-8.094-71.103,6.708-75.574,79.599H3.682l60.146,74.681 L123.975,93.056z",
            }),
          );
        }
        function ue(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M7 14H29L27 32H9L7 14ZM24 6L22 2H14L12 6H4V10H32V6H24Z",
              fill: "currentColor",
            }),
          );
        }
        function he() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Trash",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              { className: "base" },
              i.createElement("path", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                d: "M216.773,43.909 l-7.399,177.589c-0.37,8.893-7.919,16.1-16.812,16.1H63.437c-8.914,0-16.442-7.24-16.812-16.1L39.226,43.909",
              }),
            ),
            i.createElement(
              "g",
              { className: "lines" },
              i.createElement("path", {
                className: "line1",
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                d: "M128,68.12v137.197",
              }),
              i.createElement("path", {
                className: "line2",
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                d: "M83.613,68.12 l4.035,137.197",
              }),
              i.createElement("path", {
                className: "line3",
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                d: "M172.387,68.12 l-4.035,137.197",
              }),
            ),
            i.createElement(
              "g",
              { className: "lid" },
              i.createElement("path", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                d: "M27.121,38.577H228.88",
              }),
              i.createElement("path", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                d: "M87.648,38.577l4.319-10.796c2.072-5.181,8.292-9.379,13.84-9.379h44.386 c5.572,0,11.761,4.18,13.841,9.379l4.319,10.796",
              }),
            ),
          );
        }
        function pe(e) {
          return i.createElement(
            "svg",
            {
              style: { transform: `rotate(${e.angle}deg)` },
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_FlatArrow",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polygon", {
              points: "13.913,141 128,59 242.087,141 ",
              fill: "#ffffff",
            }),
          );
        }
        function _e(e) {
          let { bPending: t, bShowArm: n, className: r, ...a } = e;
          return (0, s.Qn)({ bSuppressAssert: !0 })
            ? i.createElement(
                "svg",
                {
                  className: (0, o.A)(
                    "SVGIcon_Button",
                    "SVGIcon_FriendIcon",
                    r,
                  ),
                  viewBox: "0 0 36 36",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  ...a,
                },
                i.createElement("path", {
                  d: "M18 17C15.6131 17 13.3239 17.9482 11.636 19.636C9.94821 21.3239 9 23.6131 9 26V31H27V26C27 23.6131 26.0518 21.3239 24.364 19.636C22.6761 17.9482 20.3869 17 18 17ZM18 14C18.9889 14 19.9556 13.7068 20.7779 13.1573C21.6001 12.6079 22.241 11.827 22.6194 10.9134C22.9978 9.99979 23.0969 8.99446 22.9039 8.02455C22.711 7.05465 22.2348 6.16373 21.5355 5.46447C20.8363 4.76521 19.9454 4.289 18.9755 4.09608C18.0055 3.90315 17.0002 4.00217 16.0866 4.3806C15.173 4.75904 14.3921 5.39991 13.8427 6.22215C13.2932 7.0444 13 8.0111 13 9C13 10.3261 13.5268 11.5979 14.4645 12.5355C15.4021 13.4732 16.6739 14 18 14Z",
                  fill: "currentColor",
                }),
                i.createElement("path", {
                  className: "WavingArm",
                  opacity: n ? "1" : "0",
                  d: "M4.67541 11.8555C5.6007 10.8308 7.18156 10.7501 8.20635 11.6754L18.9515 21.3773L15.6007 25.0884L4.85556 15.3865C3.83077 14.4612 3.75011 12.8803 4.67541 11.8555V11.8555Z",
                  fill: "currentColor",
                  strokeWidth: "0",
                }),
                i.createElement("path", {
                  opacity: n ? "1" : "0",
                  d: "M32.3573 11.8876C33.2626 12.93 33.1515 14.509 32.109 15.4144L23.2784 23.083L20 19.3078L28.8305 11.6392C29.873 10.7339 31.452 10.8451 32.3573 11.8876Z",
                  fill: "currentColor",
                  strokeWidth: "0",
                }),
              )
            : i.createElement(
                "svg",
                {
                  version: "1.1",
                  xmlns: "http://www.w3.org/2000/svg",
                  className: (0, o.A)(
                    "SVGIcon_Button",
                    "SVGIcon_FriendIcon",
                    t ? " SVGIcon_FriendIcon_Pending" : "",
                    r,
                  ),
                  x: "0px",
                  y: "0px",
                  width: "256px",
                  height: "256px",
                  viewBox: "0 0 256 256",
                },
                i.createElement(
                  "g",
                  { className: "Outline" },
                  i.createElement(
                    "g",
                    {
                      transform:
                        "matrix(1.34048,0,0,1.34048,-10.0942,-5.50445)",
                    },
                    i.createElement("path", {
                      d: "M102.239,90.394c-22.556,0-40.906-18.351-40.906-40.906c0-22.556,18.35-40.906,40.906-40.906s40.906,18.35,40.906,40.906 C143.145,72.043,124.795,90.394,102.239,90.394z",
                    }),
                  ),
                  i.createElement("path", {
                    d: "M127.453,250.212c-30.208,0-52.086-4.188-65.028-12.45c-12.507-7.983-13.141-17.484-13.141-19.308v-41.781 c0-20.554,5.356-38.104,15.489-50.754c11.63-14.519,29.216-22.193,50.858-22.194h23.646c21.643,0,39.229,7.674,50.858,22.193 c10.133,12.65,15.488,30.201,15.488,50.754v41.751c0.011,2.202-0.586,8.058-6.43,14.175 c-11.164,11.687-35.301,17.613-71.732,17.613C127.458,250.212,127.458,250.212,127.453,250.212z",
                  }),
                  i.createElement("path", {
                    className: "WavingArm",
                    opacity: t ? "1" : "0",
                    d: "M87.625,170.102c-5.877,0-14.85-1.804-24.219-10.4c-8.677-7.961-20.959-20.438-30.563-31.048 c-18.766-20.732-21.125-26.658-19.522-32.832c1.463-5.64,10.288-27.077,26.729-28.926c0.429-0.048,0.867-0.072,1.303-0.072 c7.609,0,14.543,6.335,38.063,31.516c7.141,7.645,14.524,15.549,18.002,18.33l0.803,0.641c5.551,4.432,11.291,9.015,15.104,14.136 c8.477,11.383,3.634,20.705,1.158,24.185C108.034,164.692,97.995,170.102,87.625,170.102z",
                  }),
                ),
                i.createElement(
                  "g",
                  { className: "foreground" },
                  i.createElement(
                    "g",
                    {
                      transform:
                        "matrix(1.34048,0,0,1.34048,-10.0942,-5.50445)",
                    },
                    i.createElement("circle", {
                      fill: "currentColor",
                      cx: "102.239",
                      cy: "49.488",
                      r: "33.446",
                    }),
                  ),
                  i.createElement("path", {
                    fill: "currentColor",
                    d: "M195.624,218.454v-41.781c0-34.743-16.666-62.948-56.347-62.948h-11.822h-0.997h-10.826 c-39.68,0.001-56.348,28.205-56.348,62.948v41.781c0,0,0,21.758,68.169,21.758C196.62,240.214,195.624,218.454,195.624,218.454z",
                  }),
                  i.createElement("path", {
                    className: "WavingArm",
                    opacity: t ? "1" : "0",
                    d: "M41.167,76.833c6.53-0.734,39.348,39.127,50.007,47.647c10.659,8.52,21.327,16.686,15.16,25.353 s-20.646,16.74-36.167,2.5 s-48.516-48.801-47.167-54S31.599,77.909,41.167,76.833z",
                  }),
                ),
              );
        }
        function ge(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_FavoriteFriends",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              d: "M18 34.05H2C2 31.9283 2.84285 29.8935 4.34315 28.3932C5.84344 26.8929 7.87827 26.05 10 26.05C12.1217 26.05 14.1566 26.8929 15.6569 28.3932C17.1571 29.8935 18 31.9283 18 34.05ZM10 23.05C10.89 23.05 11.76 22.7861 12.5001 22.2917C13.2401 21.7972 13.8169 21.0944 14.1575 20.2721C14.4981 19.4499 14.5872 18.5451 14.4135 17.6721C14.2399 16.7992 13.8113 15.9974 13.182 15.3681C12.5526 14.7387 11.7508 14.3101 10.8779 14.1365C10.005 13.9629 9.10019 14.052 8.27792 14.3926C7.45566 14.7332 6.75285 15.31 6.25839 16.05C5.76392 16.79 5.5 17.66 5.5 18.55C5.49868 19.1414 5.61418 19.7271 5.83986 20.2737C6.06554 20.8202 6.39695 21.3168 6.81508 21.735C7.23321 22.1531 7.72981 22.4845 8.27637 22.7102C8.82293 22.9359 9.40868 23.0514 10 23.05ZM31.66 28.39C30.186 26.916 28.1949 26.0755 26.1105 26.0474C24.0261 26.0194 22.0131 26.8061 20.5 28.24C21.4889 30.0165 22.0054 32.0169 22 34.05H34C34.0008 32.9992 33.7946 31.9584 33.3931 30.9873C32.9916 30.0161 32.4027 29.1336 31.66 28.39ZM21.5 18.55C21.5 19.4401 21.7639 20.3101 22.2584 21.0501C22.7529 21.7901 23.4557 22.3669 24.2779 22.7075C25.1002 23.0481 26.005 23.1372 26.8779 22.9636C27.7508 22.7899 28.5526 22.3614 29.182 21.732C29.8113 21.1027 30.2399 20.3009 30.4135 19.428C30.5872 18.555 30.4981 17.6502 30.1575 16.828C29.8169 16.0057 29.2401 15.3029 28.5001 14.8084C27.76 14.314 26.89 14.05 26 14.05C25.4087 14.0487 24.8229 14.1642 24.2764 14.3899C23.7298 14.6156 23.2332 14.947 22.8151 15.3651C22.397 15.7833 22.0655 16.2799 21.8399 16.8264C21.6142 17.373 21.4987 17.9587 21.5 18.55ZM20.83 6.91005L23.65 4.16005L19.75 3.59005L18 0.0500488L16.25 3.59005L12.35 4.16005L15.17 6.91005L14.51 10.81L18 9.00005L21.49 10.84L20.83 6.91005Z",
              fill: "currentColor",
            }),
          );
        }
        function Ce() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_DoNotDisturb",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("circle", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "24",
              strokeMiterlimit: "10",
              cx: "128",
              cy: "128",
              r: "101.5",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "24",
              strokeMiterlimit: "10",
              x1: "73",
              y1: "128",
              x2: "183",
              y2: "128",
            }),
          );
        }
        function fe(e) {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              style: { transform: `scaleX(${e.bFlipHorizontal ? -1 : 1})` },
              className: "SVGIcon_Button SVGIcon_MediaControls",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "Arrow",
              d: "M77.003,54.763h32.784c3.794,0,9.113,2.181,11.814,4.848l63.604,62.773c2.703,2.667,2.727,7.054,0.05,9.748 l-63.705,64.206c-2.674,2.693-7.968,4.898-11.763,4.898H77.003",
            }),
            i.createElement("polyline", {
              className: "preArrowBox",
              opacity: e.bHidePreArrow ? "0" : "1",
              points:
                "6.833,54.763 46.71,54.763 46.71,201.236 6.833,201.236 \t",
            }),
            i.createElement("polyline", {
              className: "jumpAheadBox",
              opacity: e.bShowJumpAheadBox ? "1" : "0",
              points:
                "6.833,54.764 86.386,54.764 86.386,201.236 6.833,201.236 \t",
            }),
            i.createElement("polyline", {
              className: "postArrowBox",
              opacity: e.bHidePostArrow ? "0" : "1",
              points:
                "209.29,54.763 249.167,54.763 249.167,201.236 209.29,201.236 \t",
            }),
          );
        }
        function Se() {
          const [e, t] = (0, l.l)(),
            [n, o] = (0, l.l)();
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_SteamTV",
              x: "0px",
              y: "0px",
              width: "1024px",
              height: "256px",
              viewBox: "0 0 1024 256",
            },
            i.createElement(
              "defs",
              null,
              i.createElement(
                "linearGradient",
                { id: e, x1: "0%", y1: "0%", x2: "100%", y2: "0%" },
                i.createElement("stop", {
                  offset: "0%",
                  stopColor: "rgb(55, 102, 251)",
                }),
                i.createElement("stop", {
                  offset: "100%",
                  stopColor: "rgb(91, 106, 219)",
                }),
              ),
              i.createElement(
                "linearGradient",
                { id: n, x1: "0%", y1: "0%", x2: "100%", y2: "0%" },
                i.createElement("stop", {
                  offset: "0%",
                  stopColor: "rgb(91, 106, 219)",
                }),
                i.createElement("stop", {
                  offset: "100%",
                  stopColor: "rgb(125, 110, 188)",
                }),
              ),
            ),
            i.createElement("circle", {
              className: "logoBG",
              opacity: "0",
              fill: "#000000",
              cx: "156.586",
              cy: "128",
              r: "125.914",
            }),
            i.createElement(
              "g",
              { id: "logo" },
              i.createElement("path", {
                fill: t,
                d: "M156.374,5.355c-64.404,0-117.167,49.661-122.18,112.77l65.712,27.171 c5.567-3.808,12.293-6.032,19.53-6.032c0.649,0,1.294,0.016,1.934,0.051l29.226-42.355c0-0.202-0.005-0.399-0.005-0.598 c0-25.496,20.74-46.241,46.237-46.241c25.498,0,46.239,20.745,46.239,46.241c0,25.494-20.741,46.241-46.239,46.241 c-0.352,0-0.698-0.01-1.047-0.021l-41.68,29.741c0.022,0.546,0.041,1.095,0.041,1.644c0,19.14-15.569,34.707-34.706,34.707 c-16.796,0-30.843-11.991-34.026-27.87l-46.993-19.429c14.55,51.464,61.831,89.19,117.957,89.19 c67.713,0,122.605-54.893,122.605-122.604C278.978,60.244,224.086,5.355,156.374,5.355",
              }),
              i.createElement("path", {
                fill: "rgb(67, 104, 241)",
                d: "M111.026,191.387l-15.061-6.22c2.67,5.56,7.285,10.208,13.418,12.767 c13.25,5.521,28.531-0.771,34.054-14.028c2.674-6.416,2.694-13.5,0.04-19.929c-2.646-6.431-7.64-11.451-14.063-14.129 c-6.371-2.648-13.196-2.552-19.198-0.291l15.561,6.436c9.776,4.074,14.396,15.299,10.324,25.072 C132.031,190.841,120.801,195.464,111.026,191.387",
              }),
              i.createElement("path", {
                fill: "rgb(79, 105, 230)",
                d: "M227.639,96.359c0-16.987-13.82-30.809-30.809-30.809c-16.987,0-30.812,13.821-30.812,30.809 c0,16.988,13.824,30.806,30.812,30.806C213.818,127.165,227.639,113.347,227.639,96.359 M173.736,96.306 c0-12.783,10.364-23.142,23.145-23.142c12.783,0,23.145,10.359,23.145,23.142c0,12.783-10.361,23.142-23.145,23.142 C184.1,119.447,173.736,109.089,173.736,96.306",
              }),
            ),
            i.createElement(
              "g",
              { id: "steam" },
              i.createElement("path", {
                fill: "rgb(92, 106, 218)",
                d: "M404.52,91.9l-7.968,14.006c-6.138-4.287-14.455-6.862-21.717-6.862c-8.299,0-13.437,3.43-13.437,9.586 c0,7.473,9.124,9.212,22.682,14.082c14.574,5.149,22.948,11.21,22.948,24.558c0,18.264-14.359,28.519-34.998,28.519 c-10.063,0-22.195-2.595-31.53-8.265l5.815-15.539c7.579,4.008,16.644,6.381,24.722,6.381c10.897,0,16.071-4.021,16.071-9.96 c0-6.802-7.893-8.843-20.641-13.06c-14.521-4.856-24.586-11.213-24.586-25.992c0-16.658,13.34-26.225,32.538-26.225 C387.797,83.128,398.551,87.367,404.52,91.9",
              }),
              i.createElement("polygon", {
                fill: "rgb(99, 107, 211)",
                points:
                  "468.163,100.753 468.163,174.252 449.402,174.252 449.402,100.753 422.166,100.753 422.166,84.663 495.315,84.663 495.315,100.753 \t",
              }),
              i.createElement("polygon", {
                fill: "rgb(108, 108, 203)",
                points:
                  "533.512,100.706 533.512,120.896 569.417,120.896 569.417,136.982 533.512,136.982 533.512,158.014 575.173,158.014 575.173,174.253 514.757,174.253 514.757,84.665 575.173,84.665 575.173,100.706",
              }),
              i.createElement("path", {
                fill: "rgb(117, 109, 195)",
                d: "M617.054,156.857l-5.932,17.396h-19.67l33.593-89.594h18.888l34.539,89.594h-20.336l-6.061-17.396H617.054z M634.378,106.035l-12.23,35.87h24.723L634.378,106.035z",
              }),
              i.createElement("polygon", {
                fill: "rgb(125, 110, 188)",
                points:
                  "773.403,119.291 748.888,171.645 738.302,171.645 714.182,119.758 714.182,174.253 696.212,174.253 696.212,84.665 714.138,84.665 744.251,149.33 773.285,84.665 791.374,84.665 791.374,174.253 773.406,174.253",
              }),
            ),
            i.createElement(
              "g",
              { id: "tv" },
              i.createElement("polygon", {
                fill: "rgb(125, 110, 188)",
                points:
                  "853.961,92.664 823.506,92.664 823.506,84.147 893.835,84.147 893.835,92.664 863.51,92.664 863.51,174.479 853.961,174.479",
              }),
              i.createElement("polygon", {
                fill: "rgb(125, 110, 188)",
                points:
                  "909.835,84.147 920.286,84.147 950.612,165.831 980.033,84.147 990.487,84.147 956.421,174.479 944.159,174.479",
              }),
            ),
          );
        }
        function ve(e) {
          const t = (0, o.A)(
            "SVGIcon_Button",
            "SVGIcon_SteamLogo",
            e && e.className,
          );
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              fill: "#FFFFFF",
              className: t,
              x: "0px",
              y: "0px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fill: "currentColor",
              d: "M127.374,5.355c-64.404,0-117.167,49.661-122.18,112.77l65.712,27.171 c5.567-3.808,12.293-6.032,19.53-6.032c0.649,0,1.294,0.017,1.934,0.051l29.226-42.354c0-0.202-0.005-0.399-0.005-0.598 c0-25.496,20.74-46.241,46.237-46.241c25.498,0,46.238,20.745,46.238,46.241c0,25.494-20.74,46.242-46.238,46.242 c-0.352,0-0.698-0.011-1.047-0.021l-41.68,29.741c0.022,0.546,0.041,1.095,0.041,1.644c0,19.141-15.569,34.707-34.706,34.707 c-16.796,0-30.843-11.99-34.026-27.869l-46.993-19.43c14.55,51.464,61.831,89.189,117.957,89.189 c67.713,0,122.604-54.893,122.604-122.604C249.979,60.244,195.086,5.355,127.374,5.355",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M82.026,191.387l-15.061-6.22c2.67,5.56,7.285,10.208,13.418,12.767 c13.25,5.521,28.531-0.771,34.054-14.027c2.674-6.416,2.694-13.5,0.04-19.93c-2.646-6.431-7.64-11.451-14.063-14.129 c-6.371-2.647-13.196-2.552-19.198-0.291l15.561,6.437c9.776,4.073,14.396,15.299,10.324,25.071 C103.031,190.841,91.801,195.464,82.026,191.387",
            }),
            i.createElement("path", {
              fill: "currentColor",
              d: "M198.639,96.359c0-16.987-13.82-30.809-30.809-30.809c-16.987,0-30.813,13.821-30.813,30.809 c0,16.988,13.824,30.806,30.813,30.806S198.639,113.347,198.639,96.359 M144.736,96.306c0-12.783,10.363-23.142,23.145-23.142 c12.783,0,23.145,10.359,23.145,23.142c0,12.783-10.36,23.142-23.145,23.142C155.1,119.447,144.736,109.089,144.736,96.306",
            }),
          );
        }
        function be() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Viewers",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "frontGuy",
              fill: "#666666",
              d: "M181.732,53.151c-17.255,0-31.321,13.316-31.321,32.634v25.132 c0,18.005,24.006,21.006,24.382,21.381c-10.691,2.813-30.947,8.252-40.888,15.566c-8.252,6.003-11.44,18.005-13.128,22.882 c-0.75,2.063-1.688,5.064-1.688,7.127c0,0,0,9.94,0,19.881s12.941,16.505,18.005,16.505h89.65c4.877,0,18.006-5.627,18.006-16.505 s0-19.881,0-19.881c0-2.251-0.938-5.627-1.688-7.689c-4.313-10.878-4.688-16.316-13.315-22.319 c-9.941-6.939-30.009-12.19-40.512-15.004c0.374-0.563,24.193-4.127,24.193-22.131V85.785 C213.053,66.467,198.986,53.151,181.732,53.151L181.732,53.151z",
            }),
            i.createElement("path", {
              className: "backGuy",
              fill: "rgb(144, 153, 161)",
              d: "M84.204,34.396c-20.068,0-36.385,15.38-36.385,38.074v29.258c0,20.818,27.945,24.382,28.32,24.944 c-12.378,3.189-36.01,9.565-47.638,18.006c-9.753,7.127-13.504,21.006-15.379,26.632c-0.75,2.251-1.876,6.002-1.876,8.253  c0,0,0,11.44,0,23.257c0,11.815,15.004,19.13,20.819,19.13h104.279c5.814,0,20.818-6.564,20.818-19.13c0-12.566,0-23.257,0-23.257 c0-2.438-1.125-6.564-2.063-8.815c-5.063-12.566-5.438-18.942-15.566-26.069c-11.628-8.065-34.885-14.067-47.076-17.443 c0.375-0.563,28.133-4.876,28.133-25.695V72.469C120.59,49.775,104.272,34.396,84.204,34.396L84.204,34.396z",
            }),
          );
        }
        function Ie() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_5",
              className: "SVGIcon_Button SVGIcon_Globe",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              viewBox: "0 0 64 64",
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                d: "M32.5,5C17.9,5,6,16.9,6,31.5C6,46.1,17.9,58,32.5,58S59,46.1,59,31.5C59,16.9,47.1,5,32.5,5 M32.5,54.7c-1.2,0-2.5-0.1-3.7-0.3c-1.1-1.1-2.1-2.8-3-4.8c-0.8-1.8-1.4-3.8-2-6c2.7-0.3,5.6-0.5,8.6-0.5c3,0,5.9,0.2,8.6,0.5c-0.5,2.2-1.2,4.2-2,6c-0.9,2-1.9,3.7-3,4.8C35,54.6,33.7,54.7,32.5,54.7 M32.5,41.4c-3.2,0-6.2,0.2-9,0.5c-0.6-3-0.9-6.2-1-9.6h19.9c0,3.4-0.4,6.6-1,9.6C38.7,41.6,35.7,41.4,32.5,41.4 M32.5,8.3c1.2,0,2.5,0.1,3.7,0.3c1.1,1.1,2.1,2.8,3,4.8c0.8,1.8,1.4,3.8,2,6c-2.7,0.3-5.6,0.5-8.6,0.5c-3,0-5.9-0.2-8.6-0.5c0.5-2.2,1.2-4.2,2-6c0.9-2,1.9-3.7,3-4.8C30,8.4,31.3,8.3,32.5,8.3 M32.5,21.6c3.2,0,6.2-0.2,9-0.5c0.6,3,0.9,6.2,1,9.6H22.6c0-3.4,0.4-6.6,1-9.6C26.3,21.4,29.3,21.6,32.5,21.6 M44.1,30.7c0-3.5-0.4-6.8-1-9.8c3.4-0.5,6.4-1.1,8.8-2c2.3,3.5,3.6,7.5,3.7,11.8H44.1z M20.9,30.7H9.3c0.1-4.2,1.4-8.3,3.7-11.8c2.5,0.8,5.5,1.5,8.8,2C21.3,23.9,21,27.2,20.9,30.7 M20.9,32.3c0,3.5,0.4,6.8,1,9.8c-3.4,0.5-6.4,1.1-8.8,2c-2.3-3.5-3.6-7.5-3.7-11.8H20.9z M44.1,32.3h11.6c-0.1,4.2-1.4,8.3-3.7,11.8c-2.5-0.8-5.5-1.5-8.8-2C43.7,39.1,44,35.8,44.1,32.3 M51,17.5c-0.1,0-0.2,0.1-0.3,0.1c-2.3,0.7-5,1.3-7.9,1.7c-0.9-4.1-2.3-7.6-4-10.1c3.8,1.1,7.3,3.1,10.2,5.9C49.6,15.9,50.3,16.6,51,17.5 M26.3,9.2c-1.7,2.5-3.1,6-4,10.1c-2.9-0.4-5.6-1-7.9-1.7c-0.1,0-0.2-0.1-0.3-0.1c0.6-0.8,1.3-1.6,2.1-2.4C19,12.2,22.5,10.2,26.3,9.2 M14,45.5c0.1,0,0.2-0.1,0.3-0.1c2.3-0.7,5-1.3,7.9-1.7c0.9,4.1,2.3,7.6,4,10.1c-3.8-1.1-7.3-3.1-10.2-5.9C15.4,47.1,14.7,46.4,14,45.5 M38.7,53.8c1.7-2.5,3.1-6,4-10.1c2.9,0.4,5.6,1,7.9,1.7c0.1,0,0.2,0.1,0.3,0.1c-0.6,0.8-1.3,1.6-2.1,2.4C46,50.8,42.5,52.8,38.7,53.8",
              }),
            ),
          );
        }
        function we() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_STVTimelineGrabber",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              { className: "leftarrow", opacity: "0" },
              i.createElement("polygon", {
                points: "127.817,4.403 4,128 127.817,251.598",
              }),
            ),
            i.createElement(
              "g",
              { className: "rightarrow", opacity: "0" },
              i.createElement("polygon", {
                points: "127.816,4.403 251.633,128 127.816,251.598",
              }),
            ),
            i.createElement(
              "g",
              { className: "grabber" },
              i.createElement("polygon", {
                points:
                  "145.692,22.132 145.692,234.361 127.817,251.598 110.307,234.361 110.307,22.132 127.817,4.403",
              }),
            ),
          );
        }
        function ye() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_STVTimelineMarker",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("polygon", {
              className: "pointer",
              points:
                "128,154.979 46.374,230.548 46.374,253.333 209.626,253.333 209.626,230.548 \t",
            }),
            i.createElement("rect", {
              className: "line",
              x: "116.271",
              y: "3.168",
              width: "23.459",
              height: "137.332",
            }),
          );
        }
        function Ee(e) {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_HideShowChat",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement(
              "g",
              { id: "hidechat", opacity: e.showChat ? "0" : "1" },
              i.createElement("polyline", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points:
                  "156.001,189.834 116.375,189.834 67.31,222.538 67.31,189.834 39.834,189.834 39.834,59.011 59.25,59.011",
              }),
              i.createElement("polyline", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points:
                  "109.427,59.011 225.299,59.011 225.299,189.834 207,189.834",
              }),
              i.createElement("line", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                x1: "49.786",
                y1: "15.012",
                x2: "214.409",
                y2: "233.723",
              }),
            ),
            i.createElement(
              "g",
              { id: "showchat", opacity: e.showChat ? "1" : "0" },
              i.createElement("polygon", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points:
                  "116.375,189.834 67.31,222.538 67.31,189.834 39.834,189.834 39.834,59.011 225.299,59.011 225.299,189.834",
              }),
            ),
            i.createElement(
              "g",
              { id: "textlines", opacity: e.showChat ? "1" : "0" },
              i.createElement("line", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeMiterlimit: "10",
                x1: "72.333",
                y1: "124.75",
                x2: "194.167",
                y2: "124.75",
              }),
              i.createElement("line", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeMiterlimit: "10",
                x1: "72.333",
                y1: "155.75",
                x2: "194.167",
                y2: "155.75",
              }),
              i.createElement("line", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeMiterlimit: "10",
                x1: "72.333",
                y1: "93.75",
                x2: "179.926",
                y2: "93.75",
              }),
              i.createElement("polyline", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points:
                  "156.001,189.834 116.375,189.834 67.31,222.538 67.31,189.834 39.834,189.834 39.834,59.011 59.25,59.011 ",
              }),
              i.createElement("polyline", {
                fill: "none",
                stroke: "#ffffff",
                strokeWidth: "10",
                strokeLinecap: "round",
                strokeMiterlimit: "10",
                points:
                  "109.427,59.011 225.299,59.011 225.299,189.834 207,189.834",
              }),
            ),
          );
        }
        function De() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_ShowBothChats",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("circle", {
              opacity: "0",
              fill: "#FFFFFF",
              strokeWidth: "0",
              cx: "166.241",
              cy: "161.906",
              r: "75.259",
            }),
            i.createElement("polyline", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "8",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              points:
                "92.367,155.634 51.311,183 51.311,150.296 23.834,150.296 23.834,19.473 140.5,19.473 140.5,91.5",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "8",
              strokeMiterlimit: "10",
              x1: "48.529",
              y1: "82.167",
              x2: "113.379",
              y2: "82.167",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "8",
              strokeMiterlimit: "10",
              x1: "48.529",
              y1: "113.167",
              x2: "113.379",
              y2: "113.167",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: "#ffffff",
              strokeWidth: "8",
              strokeMiterlimit: "10",
              x1: "48.529",
              y1: "51.167",
              x2: "99.138",
              y2: "51.167",
            }),
            i.createElement("path", {
              d: "M166.241,82.167c-43.933,0-79.74,35.807-79.74,79.74c0,43.932,35.808,79.739,79.74,79.739 c43.932,0,79.739-35.808,79.739-79.739C245.98,117.975,210.173,82.167,166.241,82.167 M166.241,231.717 c-3.611,0-7.522-0.301-11.134-0.902c-3.31-3.311-6.318-8.426-9.027-14.444c-2.407-5.416-4.212-11.434-6.018-18.054  8.124-0.902,16.851-1.505,25.878-1.505c9.026,0,17.753,0.603,25.877,1.505c-1.504,6.62-3.61,12.638-6.018,18.054 c-2.708,6.019-5.718,11.134-9.027,14.444C173.764,231.416,169.852,231.717,166.241,231.717 M166.241,191.696 c-9.629,0-18.656,0.602-27.082,1.505c-1.805-9.027-2.708-18.656-3.009-28.887h59.88c0,10.23-1.203,19.859-3.009,28.887 C184.896,192.298,175.87,191.696,166.241,191.696 M166.241,92.097c3.61,0,7.522,0.301,11.133,0.903 c3.311,3.31,6.319,8.425,9.027,14.443c2.407,5.416,4.213,11.435,6.019,18.055c-8.125,0.902-16.851,1.504-25.878,1.504  s-17.753-0.602-25.878-1.504c1.505-6.62,3.611-12.639,6.019-18.055c2.708-6.018,5.717-11.133,9.026-14.443 \tC158.719,92.398,162.63,92.097,166.241,92.097 M166.241,132.117c9.629,0,18.655-0.602,27.081-1.504 \tc1.806,9.026,2.708,18.655,3.009,28.887h-59.88c0-10.231,1.204-19.86,3.01-28.887 \tC147.585,131.516,156.612,132.117,166.241,132.117 M201.146,159.5c0-10.532-1.203-20.462-3.009-29.488 c10.23-1.505,19.258-3.311,26.479-6.019c6.921,10.531,10.833,22.567,11.134,35.507H201.146z M131.336,159.5H96.432 c0.301-12.639,4.212-24.976,11.133-35.507c7.522,2.407,16.55,4.514,26.479,6.019C132.54,139.038,131.637,148.968,131.336,159.5 M131.336,164.314c0,10.531,1.204,20.461,3.01,29.488c-10.231,1.505-19.259,3.31-26.48,6.018 c-6.921-10.531-10.832-22.567-11.133-35.506H131.336z M201.146,164.314h34.905c-0.301,12.638-4.213,24.975-11.134,35.506 c-7.522-2.406-16.55-4.513-26.479-6.018C199.942,184.775,200.845,174.846,201.146,164.314 M221.908,119.78 c-0.301,0-0.602,0.301-0.903,0.301c-6.92,2.106-15.045,3.912-23.771,5.115c-2.708-12.337-6.921-22.868-12.036-30.391 c11.434,3.31,21.966,9.328,30.691,17.753C217.695,114.966,219.802,117.072,221.908,119.78 M147.585,94.806 c-5.115,7.522-9.328,18.054-12.036,30.391c-8.727-1.203-16.851-3.009-23.771-5.115c-0.301,0-0.602-0.301-0.902-0.301 c1.805-2.407,3.911-4.814,6.318-7.222C125.619,103.833,136.15,97.814,147.585,94.806 M110.574,204.033 c0.301,0,0.602-0.301,0.902-0.301c6.921-2.106,15.045-3.912,23.771-5.115c2.708,12.337,6.921,22.869,12.036,30.392 c-11.435-3.311-21.966-9.328-30.692-17.754C114.786,208.848,112.68,206.742,110.574,204.033 M184.896,229.009 c5.116-7.522,9.329-18.055,12.036-30.392c8.727,1.203,16.852,3.009,23.771,5.115c0.301,0,0.603,0.301,0.903,0.301 c-1.806,2.407-3.912,4.814-6.319,7.222C206.863,219.981,196.331,226,184.896,229.009",
            }),
          );
        }
        function Ae() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_BigPicture",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fill: "currentColor",
              d: "M213.771,68.659c-4.108-7.066-46.007-7.231-49.293-7.231H128H91.522c-3.286,0-45.186,0.165-49.293,7.231 c-19.555,29.248-27.385,100.263-27.276,104.01c0.238,8.294,2.11,24.583,16.595,35.162c9.201,6.72,22.183,8.709,29.083,3.614 c4.989-3.682,11.995-19.224,19.061-32.204c7.064-12.981,9.202-11.174,12.98-12.159c3.78-0.986,36.066-0.74,36.066-0.74 s30.809-0.247,34.588,0.74c3.777,0.985,5.915-0.822,12.98,12.159c7.064,12.98,14.07,28.522,19.061,32.204 c6.9,5.095,19.882,3.106,29.083-3.614c14.485-10.58,16.356-26.868,16.595-35.162C241.154,168.922,233.325,97.906,213.771,68.659z M67.251,128.14c-14.974,0-27.112-12.137-27.112-27.111c0-14.975,12.137-27.112,27.112-27.112 c14.973,0,27.111,12.137,27.111,27.112C94.362,116.003,82.224,128.14,67.251,128.14z M188.749,128.14 c-14.974,0-27.111-12.137-27.111-27.111c0-14.975,12.138-27.112,27.111-27.112c14.973,0,27.111,12.137,27.111,27.112 C215.86,116.003,203.722,128.14,188.749,128.14z",
            }),
          );
        }
        function Te(e) {
          const { className: t } = e;
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)("SVGIcon_Button", "SVGIcon_MobilePhone", t),
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              d: "M165.693,45.186H91.368c-7.963,0-14.41,6.447-14.41,14.41V210.9c0,7.964,6.447,14.41,14.41,14.41h74.134 c7.965,0,14.41-6.447,14.41-14.41V59.596C180.102,51.633,173.657,45.186,165.693,45.186z M113.172,57.509h30.717 c1.707,0,3.223,1.327,3.223,3.224c0,1.896-1.328,3.223-3.223,3.223h-30.717c-1.707,0-3.223-1.328-3.223-3.223 C109.949,58.837,111.465,57.509,113.172,57.509z M128.529,213.554c-4.551,0-8.152-3.603-8.152-8.153c0-4.55,3.604-8.152,8.152-8.152 s8.151,3.603,8.151,8.152C136.682,209.761,133.081,213.554,128.529,213.554z M169.105,186.819h-81.15V74.384h81.15V186.819 L169.105,186.819z",
            }),
          );
        }
        function Me(e) {
          return i.createElement(
            "svg",
            {
              width: "36",
              height: "36",
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button",
              ...e,
            },
            i.createElement("path", {
              d: "M11.45 26.5H7.625L1 9H5.025L9.625 22.325L14.1 9H18.125L11.45 26.5Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M34.552 26.5H30.477L26.952 20.6H26.527H23.927V26.5H20.252V9H26.802C29.202 9 30.9686 9.48333 32.102 10.45C33.2353 11.4 33.802 12.7333 33.802 14.45C33.802 15.8 33.502 16.925 32.902 17.825C32.3186 18.725 31.4936 19.4083 30.427 19.875L34.552 26.5ZM23.927 12.125V17.45H26.802C27.7686 17.45 28.5186 17.2083 29.052 16.725C29.602 16.225 29.877 15.5417 29.877 14.675C29.877 13.825 29.6103 13.1917 29.077 12.775C28.5603 12.3417 27.727 12.125 26.577 12.125H23.927Z",
              fill: "currentColor",
            }),
          );
        }
        function Re(e) {
          const [t, n] = (0, l.l)();
          return i.createElement(
            "svg",
            {
              width: "36",
              height: "36",
              viewBox: "0 0 36 36",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)("SVGIcon_Button", "SVGIcon_VRIcon"),
              ...e,
            },
            i.createElement(
              "g",
              { clipPath: n },
              i.createElement("path", {
                fillRule: "evenodd",
                clipRule: "evenodd",
                d: "M0.400879 7.38525H36.4009V29.7798H0.400879V7.38525ZM12.6345 26.2414H9.28326L3.47884 10.909H7.0053L11.0355 22.5835L14.9563 10.909H18.4827L12.6345 26.2414ZM29.3047 26.2414H32.875L29.2609 20.437C30.1954 20.0281 30.9182 19.4294 31.4294 18.6409C31.9551 17.8524 32.2179 16.8667 32.2179 15.6839C32.2179 14.1799 31.7214 13.0117 30.7285 12.1794C29.7354 11.3324 28.1877 10.909 26.0849 10.909H20.3462V26.2414H23.566V21.0722H25.844H26.2163L29.3047 26.2414ZM23.566 18.3124V13.6469H25.8878C26.8954 13.6469 27.6254 13.8368 28.0781 14.2164C28.5454 14.5815 28.7791 15.1363 28.7791 15.8811C28.7791 16.6404 28.5381 17.2391 28.0562 17.6772C27.5889 18.1006 26.9318 18.3124 26.0849 18.3124H23.566Z",
                fill: "currentColor",
              }),
            ),
            i.createElement(
              "defs",
              null,
              i.createElement(
                "clipPath",
                { id: t },
                i.createElement("rect", {
                  width: "36",
                  height: "36",
                  fill: "currentColor",
                  transform: "translate(0.400879 0.825195)",
                }),
              ),
            ),
          );
        }
        function ke() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_YouTube",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              d: "M243.402,70.101c-2.775-10.309-10.906-18.439-21.217-21.217c-18.838-5.152-94.185-5.152-94.185-5.152 s-75.348,0-94.185,4.957c-10.112,2.775-18.44,11.104-21.216,21.413C7.644,88.94,7.644,128,7.644,128s0,39.257,4.957,57.896 c2.775,10.313,10.905,18.439,21.216,21.219c19.036,5.154,94.185,5.154,94.185,5.154s75.347,0,94.185-4.957 c10.311-2.771,18.441-10.906,21.217-21.217c4.953-18.838,4.953-57.898,4.953-57.898S248.557,88.94,243.402,70.101z M104.008,164.088 V91.912L166.668,128L104.008,164.088z",
            }),
          );
        }
        function Le() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_2",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_CSGO",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M236.979,138.059c0.548,0.078,6.91,0.101,7.772,0.032 c1.215-0.095,1.396,0.068,1.388,0.708c-0.01,0.397,0.012,3.039-2.365,7.32c-3.301,5.948-12.079,10.436-12.55,10.672 c-0.47,0.233-0.53,0.484-0.136,0.75c0.434,0.295,8.068,1.454,9.084,1.611c1.017,0.154,0.637,1.001,0.637,1.001 s-0.704,2.621-2.895,5.36c-2.189,2.738-9.311,6.123-8.583,6.123c0.731,0,7.187,0.159,6.181,1.422 c-3.019,3.786-13.603,9.528-18.43,13.813c-13.388,11.885-13.217,12.864-15.52,15.09c-0.983-3.298-3.02-12.658-3.02-12.658 l-6.105-11.467c4.413,0.18,6.364,0.081,8.952,0.081c9.214,0,17.525-2.185,22.234-5.841l2.371-1.843l-2.911-0.728 c-2.131-0.528-7.121-1.782-11.896-2.979c2.184-0.104,10.803-1.299,14.413-5.339c0.136-0.151,0.276-0.321,0.406-0.494l1.245-1.664 l-2.404-0.735c-2.607-0.799-5.948-1.682-8.517-2.335c3.173-1.572,7.585-3.942,10.048-6.088c4.83-4.203,7.226-9.709,7.322-9.943 l0.9-2.098l-10.772,0.318c1.503-1.483,3.218-3.197,3.939-3.991c1.43-1.571,4.053-6.221,4.198-9.896l0.072-1.787l-1.763,0.288 c-1.979,0.322-5.301,1.279-8.179,2.173c2.025-2.193,4.296-4.767,5.46-6.484c2.687-3.964,2.76-8.371,2.597-12.916l-0.104-2.881 l-2.261,1.79c-2.559,2.028-7.595,5.031-11.097,7.047c1.538-3.644,3.54-8.752,3.813-11.276c0.5-4.681-0.248-10.196-0.248-10.196 l-10.76,9.394c0.885-1.953,1.684-4.013,2.117-5.832c1.735-7.29,0.055-17.892-0.021-18.338l-0.452-2.807l-7.777,7.739 c0.722-3.535,1.465-8.253,1.23-11.789c-0.426-6.321-2.278-10.517-2.359-10.694l-1.01-2.251l-6.465,8.577 c0.231-4.285,0.27-10.24-0.948-13.547c-1.934-5.262-3.651-8.007-3.723-8.121l-1.232-1.958l-3.057,4.85 c0.018-2.967-0.11-6.475-0.69-8.68c-1.202-4.543-2.825-6.396-3.002-6.592l-1.325-1.433l-1.623,2.705 c-0.278-3.19-1.112-7.084-3.343-9.478l-0.814-0.872l-1.012,0.623c-0.327,0.201-0.714,0.497-1.104,0.823 c-0.154-1.135-0.365-2.451-0.639-3.691c0.563-4.733,1.186-10.03,1.206-10.452c0.027-0.547,0.274-0.767,1.017-0.391 c0.898,0.452,3.156,2.064,5.187,6.133c2.036,4.067,3.132,11.324,3.117,12.044c-0.009,0.383,0.291,0.757,0.438,0.151 c0.145-0.607,0.478-7.591,0.623-8.312c0.081-0.383,0.199-0.484,0.737-0.212c0.496,0.249,2.959,2.181,4.899,6.463 c1.179,2.599,1.634,11.946,1.574,12.653c-0.106,1.278,0.313,0.891,0.339,0.883c-0.009,0.013-0.025,0.04-0.03,0.049 c0.03-0.041,0.036-0.049,0.03-0.049c0.573-0.841,4.21-8.99,4.519-9.377c0.313-0.39,0.521-0.395,0.835,0.002 c0.262,0.33,2.095,1.717,4.049,10.088c1.902,8.135,1.949,11.542,1.848,12.682c-0.08,0.86,0.339,0.993,0.731,0.524 c0.389-0.47,5.104-9.201,5.497-9.515c0.389-0.313,0.613-0.309,0.927,0.161c0.312,0.469,2.718,4.762,3.684,11.448 c0.861,5.947,0.608,13.599,0.375,14.381c-0.235,0.782-0.135,1.077,0.493,0.53c0.623-0.548,10.299-8.412,11.004-9.038 c0.703-0.627,1.18-0.65,1.34-0.046c0.172,0.654,0.822,8.654,0.275,15.225c-0.549,6.571-2.626,12.752-2.94,13.145 c-0.312,0.391,0.087,0.712,0.478,0.555c0.394-0.157,11.902-10.018,12.645-10.402c0.711-0.367,1.043,0.005,1.105,0.507 c0.068,0.544,0.966,3.098-0.419,11.269c-0.959,5.65-3.54,11.876-3.855,12.033c-0.313,0.157-0.077,0.336,0.234,0.259 c0.315-0.079,8.324-3.488,8.872-3.567c0.546-0.079,0.671,0.339,0.514,0.808c-0.158,0.469-0.458,6.273-2.534,11.639 c-2.603,6.732-6.056,11.001-6.056,11.001s-0.252,0.519,0.217,0.519s9.266-0.186,9.813-0.263c0.547-0.079,0.627,0.156,0.547,0.704 c-0.077,0.547,0.858,9.116-8.624,14.601C236.524,137.734,236.432,137.979,236.979,138.059z M174.473,24.823 c1.981,3.34,2.018,9.248,1.836,11.469l-0.52,6.238l5.25-8.744c0.395,0.843,0.85,2.003,1.25,3.524 c1.02,3.877,0.422,13.082,0.417,13.173l-0.384,5.752l6.435-10.212c0.628,1.27,1.45,3.097,2.32,5.459 c1.466,3.983,0.772,13.806,0.381,17.257l-0.602,5.308l9.568-12.69c0.493,1.707,1.058,4.21,1.259,7.227 c0.39,5.821-2.272,15.731-2.299,15.83l-1.428,5.26l11.125-11.068c0.377,3.586,0.772,9.774-0.304,14.302 c-1.2,5.057-5.778,12.588-5.823,12.664l-1.806,3.992l16.878-14.09c-0.116,1.366-0.262,2.944-0.423,4.435 c-0.312,2.935-3.954,11.389-5.335,14.399l-1.827,4.002l3.856-2.115c0.381-0.208,8.027-4.41,12.979-7.778 c-0.039,3.484-0.537,6.042-2.139,8.4c-2.189,3.234-9.05,10.198-9.118,10.268l-4.352,4.408l5.861-2.004 c0.08-0.025,6.868-2.34,11.188-3.41c-0.675,2.445-2.208,5.125-3.11,6.118c-1.319,1.449-6.429,6.429-6.48,6.482l-2.682,2.614 l13.475-0.404c-1.06,1.837-2.89,4.549-5.457,6.783c-3.727,3.244-12.956,7.341-13.048,7.383l-3.952,1.746l4.201,1.008 c0.062,0.015,5.637,1.354,10.266,2.67c-3.412,2.191-9.291,3.081-10.948,3.138c-2.06,0.072-11.075,0.125-11.075,0.125l-11.51,0.069 l11.162,2.804c0,0,12.587,3.164,19.486,4.894c-4.398,2.216-10.717,3.493-17.657,3.493c-3.102,0-10.335-0.284-15.048-0.483 c4.064,6.069,7.041,11.004,7.992,13.681c2.813,7.915,6.777,28.269,6.889,48.907c0.039,6.572-1.081,11.649-9.022,11.649 c-0.288,0-0.597-0.038-0.908-0.092c-1.846,0.339-4.351,0.595-5.438-0.095c-1.805-1.149-3.163-2.627-3.544-3.957 c-0.383-1.334-1.146-9.374-3.106-20.675c-1.92-11.046-4.038-19.431-4.237-19.525c-1.535-0.731-9.358-18.45-9.358-18.45 l-37.23-47.615c0,0-20.737,23.917-37.455,47.8c-0.867,1.235-5.994,11.251-9.275,17.989c-0.212,0.437-0.181,0.475-0.281,0.808 c-0.604,2.015-2.396,9.525-4.039,18.994c-1.962,11.301-2.725,19.341-3.105,20.675c-0.384,1.33-1.74,2.808-3.546,3.957 c-1.085,0.689-3.592,0.434-5.437,0.095c-0.313,0.054-0.621,0.092-0.909,0.092c-7.941,0-9.061-5.077-9.024-11.649 c0.114-20.639,4.078-40.992,6.892-48.907c0.95-2.677,3.926-7.611,7.993-13.681c-4.714,0.199-11.946,0.483-15.051,0.483 c-6.939,0-13.26-1.277-17.653-3.493c6.896-1.729,19.486-4.894,19.486-4.894l11.159-2.804l-11.508-0.069 c0,0-9.019-0.053-11.076-0.125c-1.66-0.057-7.537-0.946-10.949-3.138c4.629-1.315,10.202-2.655,10.264-2.67l4.201-1.008l-3.95-1.746 c-0.094-0.042-9.324-4.139-13.049-7.383c-2.566-2.234-4.397-4.946-5.458-6.783l13.477,0.404l-2.684-2.614 c-0.05-0.054-5.16-5.033-6.48-6.482c-0.9-0.993-2.436-3.673-3.108-6.118c4.319,1.069,11.108,3.384,11.188,3.41l5.861,2.004 l-4.352-4.408c-0.069-0.069-6.928-7.033-9.12-10.268c-1.601-2.358-2.099-4.916-2.139-8.4c4.953,3.368,12.601,7.57,12.98,7.778 l3.858,2.115l-1.829-4.002c-1.379-3.011-5.022-11.465-5.334-14.399c-0.161-1.491-0.305-3.068-0.421-4.435l16.877,14.09l-1.806-3.992 c-0.046-0.076-4.622-7.607-5.821-12.664c-1.078-4.528-0.682-10.716-0.307-14.302L58.57,89.672l-1.426-5.26 c-0.025-0.098-2.688-10.008-2.3-15.83c0.203-3.017,0.767-5.52,1.26-7.227l9.566,12.69l-0.601-5.308 c-0.391-3.451-1.083-13.274,0.381-17.257c0.871-2.362,1.693-4.189,2.32-5.459l6.435,10.212l-0.382-5.752 c-0.006-0.091-0.604-9.295,0.416-13.173c0.401-1.521,0.854-2.681,1.251-3.524l5.249,8.744l-0.52-6.238 c-0.181-2.221-0.144-8.129,1.836-11.469c0.596,0.522,1.248,1.148,1.67,1.575l2.215,2.245l0.276-3.142 c0.162-1.838,0.783-7.003,1.703-8.813c1.342-2.635,4.69-3.91,7.104-4.505c-6.691,13.614-36.889,77.59-36.889,122.937 c0,23.658,16.206,23.931,16.368,23.931c4.881,0,6.947-7.914,6.947-11.063V133.45c0-2.744,1.148-2.744,1.835-2.744 c5.807,0,10.48,3.196,13.855,6.69c8.813-11.615,15.81-20.526,15.81-20.526s0.16-0.182,0.248-0.345 c-1.03-2.443-7.165-16.995-7.165-16.995l1.708-43.717c0,0-0.278-3.797,1.044-6.052c1.314-2.245,4.247-3.175,4.247-3.175 l13.307,41.443c0,0-4.107,0.866-4.107,5.585c0,2.982,2.658,4.99,6.227,5.013c3.572-0.022,6.227-2.031,6.227-5.013 c0-4.719-4.109-5.585-4.109-5.585l13.311-41.443c0,0,2.93,0.93,4.245,3.175c1.322,2.255,1.043,6.052,1.043,6.052l1.709,43.717 l-7.309,17.34c0,0,6.997,8.911,15.809,20.526c3.375-3.494,8.048-6.69,13.855-6.69c0.687,0,1.833,0,1.833,2.744v14.538 c0,3.148,2.068,11.063,6.95,11.063c0.159,0,16.367-0.272,16.367-23.931c0-45.347-30.197-109.322-36.888-122.937 c2.412,0.595,5.761,1.87,7.104,4.505c0.92,1.809,1.541,6.975,1.705,8.813l0.275,3.142l2.213-2.245 C173.226,25.972,173.875,25.345,174.473,24.823z M176.157,181.396c-1.644-2.189-41.07-55.856-41.07-55.856l-6.723,8.809 l-0.946-1.233l-0.829-1.082l-5.053-6.594l-0.095,0.101c0,0-39.427,53.667-41.07,55.856c-1.643,2.191-4.777,6.708-6.058,9.322 c-1.279,2.614-8.946,39.306-8.946,42.592c0,2.005,0.041,8.618,0.071,13.47c1.536,0.2,3.411,0.761,4.357,0.125 c1.624-1.093,2.363-2.323,2.491-3.372c0.128-1.048,1.367-12.969,2.69-20.812c1.779-10.547,4.571-19.005,4.415-18.97 c3.213-6.672,8.966-17.938,9.887-19.252c17.808-25.439,38.994-49.947,38.994-49.947s21.166,24.502,38.978,49.947 c0.921,1.313,6.672,12.58,9.888,19.252c-0.158-0.035,2.635,8.423,4.414,18.97c1.322,7.843,2.562,19.764,2.688,20.812 c0.131,1.049,0.87,2.279,2.493,3.372c0.944,0.636,2.818,0.075,4.355-0.125c0.032-4.852,0.073-11.465,0.073-13.47 c0-3.286-7.667-39.978-8.948-42.592C180.936,188.104,177.801,183.588,176.157,181.396z M82.538,21.517l-1.014-0.623l-0.813,0.872 c-2.231,2.394-3.063,6.287-3.342,9.478l-1.624-2.705l-1.323,1.433c-0.179,0.197-1.801,2.049-3.004,6.592 c-0.581,2.205-0.709,5.712-0.689,8.68l-3.057-4.85l-1.234,1.958c-0.072,0.114-1.787,2.859-3.722,8.121 c-1.22,3.307-1.179,9.262-0.949,13.547l-6.463-8.577l-1.012,2.251c-0.08,0.177-1.934,4.373-2.359,10.694 c-0.234,3.536,0.51,8.253,1.231,11.789l-7.778-7.739l-0.453,2.807c-0.073,0.446-1.754,11.048-0.02,18.338 c0.433,1.819,1.231,3.879,2.117,5.832l-10.759-9.394c0,0-0.749,5.515-0.248,10.196c0.271,2.523,2.272,7.632,3.813,11.276 c-3.503-2.016-8.539-5.019-11.099-7.047l-2.259-1.79l-0.106,2.881c-0.162,4.545-0.087,8.952,2.6,12.916 c1.161,1.717,3.433,4.291,5.459,6.484c-2.877-0.894-6.201-1.851-8.179-2.173l-1.763-0.288l0.071,1.787 c0.148,3.675,2.771,8.324,4.198,9.896c0.723,0.794,2.436,2.508,3.941,3.991L21.93,137.83l0.896,2.098 c0.1,0.234,2.493,5.74,7.324,9.943c2.464,2.146,6.876,4.516,10.047,6.088c-2.57,0.653-5.908,1.536-8.518,2.335l-2.402,0.735 l1.246,1.664c0.13,0.173,0.27,0.343,0.407,0.494c3.608,4.04,12.229,5.234,14.412,5.339c-4.774,1.197-9.767,2.451-11.896,2.979 l-2.911,0.728l2.371,1.843c4.708,3.656,13.02,5.841,22.233,5.841c2.588,0,4.539,0.099,8.954-0.081l-6.105,11.467 c0,0-2.038,9.36-3.02,12.658c-2.304-2.226-2.133-3.205-15.52-15.09c-4.829-4.284-15.411-10.026-18.429-13.813 c-1.005-1.263,5.449-1.422,6.179-1.422c0.73,0-6.393-3.385-8.582-6.123c-2.191-2.739-2.895-5.36-2.895-5.36s-0.38-0.847,0.637-1.001 c1.018-0.157,8.65-1.316,9.084-1.611c0.395-0.266,0.332-0.517-0.137-0.75c-0.469-0.236-9.248-4.724-12.548-10.672 c-2.375-4.281-2.357-6.923-2.364-7.32c-0.01-0.64,0.17-0.803,1.385-0.708c0.862,0.068,7.226,0.046,7.774-0.032 c0.546-0.08,0.453-0.324,0.019-0.576c-9.483-5.484-8.546-14.054-8.624-14.601c-0.079-0.548,0-0.783,0.548-0.704 c0.546,0.077,9.342,0.263,9.812,0.263c0.469,0,0.218-0.519,0.218-0.519s-3.452-4.27-6.056-11.001 c-2.077-5.366-2.377-11.169-2.533-11.639c-0.157-0.469-0.034-0.887,0.514-0.808c0.549,0.079,8.558,3.488,8.87,3.567 c0.313,0.077,0.548-0.103,0.235-0.259c-0.314-0.157-2.896-6.383-3.855-12.033c-1.384-8.17-0.488-10.725-0.42-11.269 c0.063-0.502,0.397-0.874,1.105-0.507c0.743,0.385,12.255,10.245,12.646,10.402c0.391,0.157,0.79-0.164,0.477-0.555 c-0.313-0.392-2.392-6.574-2.938-13.145c-0.548-6.571,0.1-14.571,0.274-15.225c0.161-0.604,0.635-0.581,1.339,0.046 c0.704,0.626,10.381,8.489,11.006,9.038c0.625,0.547,0.727,0.252,0.492-0.53c-0.235-0.782-0.484-8.435,0.375-14.381 c0.965-6.686,3.372-10.979,3.685-11.448s0.536-0.474,0.927-0.161c0.391,0.313,5.106,9.045,5.497,9.515 c0.391,0.469,0.809,0.336,0.732-0.524c-0.104-1.14-0.057-4.547,1.845-12.682c1.956-8.371,3.789-9.758,4.052-10.088 c0.313-0.396,0.521-0.392,0.833-0.002c0.309,0.387,3.945,8.536,4.519,9.377c-0.005,0,0,0.008,0.031,0.049 c-0.007-0.009-0.022-0.036-0.031-0.049c0.025,0.008,0.446,0.395,0.34-0.883c-0.058-0.707,0.396-10.055,1.574-12.653 c1.941-4.282,4.404-6.214,4.899-6.463c0.54-0.272,0.658-0.171,0.737,0.212c0.146,0.721,0.478,7.705,0.625,8.312 c0.146,0.606,0.444,0.232,0.437-0.151c-0.015-0.72,1.081-7.977,3.115-12.044c2.033-4.069,4.292-5.681,5.188-6.133 c0.742-0.376,0.989-0.156,1.018,0.391c0.022,0.422,0.645,5.719,1.206,10.452c-0.272,1.24-0.484,2.556-0.639,3.691 C83.251,22.014,82.866,21.718,82.538,21.517z M127.35,141.814c-1.158,12.032-4.978,23.045-6.326,29.486 c-1.643,7.849-4.788,18.061-6.793,20.931c-4.433,6.343-18.036,18.547-20.403,19.732c-1.094,0.547-6.376-4.115-6.56-4.846 c-0.182-0.728,2.883-3.993,2.154-3.627c-0.731,0.364-4.104,0.906-5.06,0.87c-0.753-0.026,0.633-2.728,0.633-2.728 s-1.484,2.217-3.021,2.947c-0.03,0.015,9.433-18.119,9.433-18.119S127.52,140.043,127.35,141.814z M119.7,169.39l3.104-10.647 l-1.869-0.559l-3.152,10.656L119.7,169.39z M114.072,167.242l4.687-10.051l-1.764-0.838l-4.735,10.055L114.072,167.242z  M126.961,159.319l-0.82,11.06l-1.991-0.139l0.867-11.079L126.961,159.319z M131.727,170.391l-1.986,0.167l-0.828-11.078 l1.944-0.144L131.727,170.391z M164.422,186.462c0,0,9.463,18.134,9.434,18.119c-1.54-0.73-3.021-2.947-3.021-2.947 s1.384,2.701,0.633,2.728c-0.957,0.036-4.33-0.506-5.06-0.87c-0.731-0.366,2.334,2.899,2.153,3.627 c-0.185,0.73-5.467,5.393-6.56,4.846c-2.368-1.186-15.973-13.39-20.404-19.732c-2.007-2.87-5.149-13.082-6.792-20.931 c-1.349-6.441-4.621-17.127-5.778-29.16C128.854,140.373,164.422,186.462,164.422,186.462z M142.029,167.242l1.813-0.834 l-4.735-10.055l-1.762,0.838L142.029,167.242z M136.402,169.39l1.917-0.55l-3.152-10.656l-1.868,0.559L136.402,169.39z",
            }),
          );
        }
        function Ge() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_ClosedCaption",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              className: "CCBox",
              fill: "none",
              stroke: "#000000",
              strokeWidth: "10",
              strokeMiterlimit: "10",
              d: "M238,210c0,6.627-5.373,12-12,12H30 c-6.627,0-12-5.373-12-12V46c0-6.627,5.373-12,12-12h196c6.627,0,12,5.373,12,12V210z",
            }),
            i.createElement("path", {
              className: "C1",
              d: "M90.505,173.207c11.431,0,22.338-4.276,30.72-12.036c2.6-2.407,2.753-6.47,0.347-9.068c-2.41-2.604-6.47-2.757-9.072-0.349 c-5.998,5.559-13.811,8.62-21.995,8.62c-17.852,0-32.373-14.524-32.373-32.372c0-17.849,14.521-32.373,32.373-32.373 c8.177,0,15.981,3.055,21.979,8.603c2.603,2.407,6.662,2.25,9.072-0.353c2.407-2.602,2.249-6.662-0.353-9.068 c-8.375-7.751-19.276-12.019-30.694-12.019c-24.931,0-45.209,20.281-45.209,45.209C45.3,152.93,65.574,173.207,90.505,173.207z",
            }),
            i.createElement("path", {
              className: "C1",
              d: "M177.926,173.207c11.431,0,22.338-4.276,30.721-12.036c2.6-2.407,2.754-6.47,0.347-9.068 c-2.41-2.604-6.47-2.757-9.072-0.349c-5.998,5.559-13.812,8.62-21.995,8.62c-17.852,0-32.372-14.524-32.372-32.372 c0-17.849,14.521-32.373,32.372-32.373c8.178,0,15.981,3.055,21.979,8.603c2.604,2.407,6.663,2.25,9.072-0.353 c2.407-2.602,2.25-6.662-0.353-9.068c-8.375-7.751-19.277-12.019-30.694-12.019c-24.932,0-45.209,20.281-45.209,45.209 C132.721,152.93,152.996,173.207,177.926,173.207z",
            }),
          );
        }
        function Fe() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_Hidden",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
            },
            i.createElement("path", {
              fill: "none",
              stroke: "#FFFFFF",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M62.499,172.263 c-32.755-16.197-47.415-39.509-47.415-39.509",
            }),
            i.createElement("path", {
              fill: "none",
              stroke: "#FFFFFF",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M177.948,85.392 c48.213,14.998,68.451,47.362,68.451,47.362s-36.393,54.737-115.689,54.737c-17.938,0-33.591-2.671-47.096-6.832",
            }),
            i.createElement("path", {
              fill: "none",
              stroke: "#FFFFFF",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M15.084,132.754 c0,0,32.933-56.576,115.674-54.785c8.505,0.185,16.486,0.913,23.96,2.072",
            }),
            i.createElement("path", {
              fill: "none",
              stroke: "#FFFFFF",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M93.981,141.131 c-0.475-2.385-0.725-4.852-0.725-7.377c0-20.711,16.789-37.5,37.5-37.5c2.42,0,4.787,0.229,7.08,0.668",
            }),
            i.createElement("path", {
              fill: "none",
              stroke: "#FFFFFF",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              d: "M156.528,106.512 c7.223,6.836,11.729,16.513,11.729,27.242c0,20.711-16.789,37.5-37.5,37.5c-10.609,0-20.189-4.405-27.012-11.487",
            }),
            i.createElement("line", {
              fill: "none",
              stroke: "#FFFFFF",
              strokeWidth: "10",
              strokeLinecap: "round",
              strokeMiterlimit: "10",
              x1: "53.007",
              y1: "210.504",
              x2: "208.507",
              y2: "55.004",
            }),
          );
        }
        function Pe(e) {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "base",
              xmlns: "http://www.w3.org/2000/svg",
              className: "SVGIcon_Button SVGIcon_AppleLogo",
              x: "0px",
              y: "0px",
              width: "256px",
              height: "256px",
              viewBox: "0 0 256 256",
              ...e,
            },
            i.createElement("path", {
              d: "M138.365,26.557c16.139-21.272,38.578-21.376,38.578-21.376s3.336,19.999-12.696,39.266 c-17.12,20.572-36.58,17.206-36.58,17.206S124.012,45.473,138.365,26.557z",
            }),
            i.createElement("path", {
              d: "M129.719,75.662c8.305,0,23.713-11.413,43.771-11.413c34.527,0,48.109,24.566,48.109,24.566s-26.565,13.583-26.565,46.54 c0,37.179,33.093,49.991,33.093,49.991s-23.134,65.112-54.38,65.112c-14.353,0-25.509-9.672-40.631-9.672 c-15.41,0-30.702,10.032-40.662,10.032c-28.533,0-64.581-61.765-64.581-111.414c0-48.849,30.512-74.474,59.13-74.474 C105.61,64.933,120.047,75.662,129.719,75.662z",
            }),
          );
        }
        function Be() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              className: "SVGIcon_Button SVGIcon_WindowsLogo",
              width: "100%",
              height: "100%",
              viewBox: "0 0 128 128",
              enableBackground: "new 0 0 128 128",
            },
            i.createElement("rect", {
              fill: "currentColor",
              width: "60.834",
              height: "60.835",
            }),
            i.createElement("rect", {
              x: "67.165",
              fill: "currentColor",
              width: "60.835",
              height: "60.835",
            }),
            i.createElement("rect", {
              y: "67.164",
              fill: "currentColor",
              width: "60.834",
              height: "60.836",
            }),
            i.createElement("rect", {
              x: "67.165",
              y: "67.164",
              fill: "currentColor",
              width: "60.835",
              height: "60.836",
            }),
          );
        }
        function xe() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              viewBox: "0 0 100 100",
            },
            i.createElement("circle", {
              style: { fill: "currentColor" },
              cx: "51.8",
              cy: "22.5",
              r: "6.5",
            }),
            i.createElement("circle", {
              style: { fill: "currentColor" },
              cx: "51.8",
              cy: "48.3",
              r: "6.5",
            }),
            i.createElement("circle", {
              style: { fill: "currentColor" },
              cx: "51.8",
              cy: "74.2",
              r: "6.5",
            }),
          );
        }
        function Oe() {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 100 100",
              x: "0px",
              y: "0px",
            },
            i.createElement("path", {
              d: "M50,7A43,43,0,1,1,7,50,43,43,0,0,1,50,7m0-7a50,50,0,1,0,50,50A50,50,0,0,0,50,0h0Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M50.79,25a45.51,45.51,0,0,1,5.29.87c5.33,1.51,8.5,5.77,8.9,11.43a10.4,10.4,0,0,1-4.21,9.5c-1.42,1.1-2.91,2.1-4.34,3.18a7.06,7.06,0,0,0-3.18,6.3,4,4,0,0,1-2.88,4,4.42,4.42,0,0,1-5.18-1.55,4.19,4.19,0,0,1-.59-2.07A13.89,13.89,0,0,1,50.3,45,41.55,41.55,0,0,0,54.83,41,5,5,0,0,0,56,38.19c0.23-2.83-1.59-4.65-4.52-4.84-3.54-.23-6.52.69-8.6,3.82a4.19,4.19,0,0,1-4.35,2c-3-.5-4.29-2.94-3.06-5.75a12.84,12.84,0,0,1,6.25-6.2A21.71,21.71,0,0,1,50.79,25Z",
              fill: "currentColor",
            }),
            i.createElement("path", {
              d: "M53.78,69.88C53.8,73.09,52,75,48.85,75s-5.25-1.84-5.26-4.53c0-3.73,1.67-5.59,5-5.69C51.3,64.7,54.12,66.36,53.78,69.88Z",
              fill: "currentColor",
            }),
          );
        }
        function Ne(e, t) {
          return (0, s.Qn)()
            ? i.createElement(
                "svg",
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 36 36",
                  fill: "none",
                  ...e,
                },
                i.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M2 4V16V20L7 16H24V4H2ZM12 20V32H29L34 36V32V20H12Z",
                  fill: "currentColor",
                }),
              )
            : i.createElement(
                "svg",
                {
                  version: "1.1",
                  id: "Layer_2",
                  xmlns: "http://www.w3.org/2000/svg",
                  className: e.className,
                  x: "0px",
                  y: "0px",
                  width: "256px",
                  height: "256px",
                  viewBox: "0 0 409.6 409.6",
                },
                i.createElement("path", {
                  d: "M109.9,96.2H302c16.3,0,29.6,13,29.6,29v101.4c0,16-13.2,29-29.6,29h-90.1l-57.6,57.9L138,255.6h-28.1\n\t\t\t\tc-16.3,0-29.6-13-29.6-29V125.2C80.4,109.2,93.6,96.2,109.9,96.2z",
                }),
              );
        }
        function Ve(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 36 36",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M18 3C15.0333 3 12.1332 3.87973 9.66645 5.52796C7.19972 7.17618 5.27713 9.51886 4.14181 12.2597C3.0065 15.0006 2.70945 18.0166 3.28823 20.9264C3.86701 23.8361 5.29562 26.5088 7.3934 28.6066C9.49119 30.7044 12.1639 32.133 15.0737 32.7118C17.9834 33.2906 20.9994 32.9935 23.7403 31.8582C26.4811 30.7229 28.8238 28.8003 30.472 26.3336C32.1203 23.8668 33 20.9667 33 18C33 16.0302 32.612 14.0796 31.8582 12.2597C31.1044 10.4399 29.9995 8.78628 28.6066 7.3934C27.2137 6.00052 25.5601 4.89563 23.7403 4.14181C21.9204 3.38799 19.9698 3 18 3ZM9.00001 15C9.00001 14.4067 9.17595 13.8266 9.5056 13.3333C9.83524 12.8399 10.3038 12.4554 10.852 12.2284C11.4001 12.0013 12.0033 11.9419 12.5853 12.0576C13.1672 12.1734 13.7018 12.4591 14.1213 12.8787C14.5409 13.2982 14.8266 13.8328 14.9424 14.4147C15.0581 14.9967 14.9987 15.5999 14.7716 16.1481C14.5446 16.6962 14.1601 17.1648 13.6667 17.4944C13.1734 17.8241 12.5934 18 12 18C11.2044 18 10.4413 17.6839 9.87869 17.1213C9.31608 16.5587 9.00001 15.7956 9.00001 15ZM24 18C23.4067 18 22.8266 17.8241 22.3333 17.4944C21.8399 17.1648 21.4554 16.6962 21.2284 16.1481C21.0013 15.5999 20.9419 14.9967 21.0576 14.4147C21.1734 13.8328 21.4591 13.2982 21.8787 12.8787C22.2982 12.4591 22.8328 12.1734 23.4147 12.0576C23.9967 11.9419 24.5999 12.0013 25.1481 12.2284C25.6962 12.4554 26.1648 12.8399 26.4944 13.3333C26.8241 13.8266 27 14.4067 27 15C27 15.7956 26.6839 16.5587 26.1213 17.1213C25.5587 17.6839 24.7957 18 24 18ZM26.3149 23.6788C26.7672 22.8295 27 21.9193 27 21H18H9C9 21.9193 9.23279 22.8295 9.68508 23.6788C10.1374 24.5281 10.8003 25.2997 11.636 25.9497C12.4718 26.5998 13.4639 27.1154 14.5558 27.4672C15.6478 27.8189 16.8181 28 18 28C19.1819 28 20.3522 27.8189 21.4442 27.4672C22.5361 27.1154 23.5282 26.5998 24.364 25.9497C25.1997 25.2997 25.8626 24.5281 26.3149 23.6788Z",
            }),
          );
        }
        function Ue(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 100 100",
              ...e,
            },
            i.createElement("polygon", {
              stroke: "currentColor",
              fill: "currentColor",
              points:
                "50 4.7 61.1 38.9 97.2 38.9 68 60.1 79.2 94.4 50 73.2 20.8 94.4 32 60.1 2.8 38.9 38.9 38.9 50 4.7",
              strokeLinejoin: "round",
              strokeWidth: "5",
            }),
          );
        }
        function He(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 100 100",
              ...e,
            },
            i.createElement("polygon", {
              stroke: "currentColor",
              fill: "none",
              points:
                "50 4.7 61.1 38.9 97.2 38.9 68 60.1 79.2 94.4 50 73.2 20.8 94.4 32 60.1 2.8 38.9 38.9 38.9 50 4.7",
              strokeLinejoin: "round",
              strokeWidth: "5",
            }),
          );
        }
        function We() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              viewBox: "0 0 32 32",
              enableBackground: "new 0 0 32 32",
            },
            i.createElement("path", {
              fill: "white",
              d: "M24.68,19.53l6.9-5.69c0.98-0.81,0.47-2.39-0.81-2.46l-8.89-0.54c-0.54-0.03-1.01-0.37-1.21-0.88L17.4,1.61\n\t\t\tc-0.47-1.18-2.12-1.18-2.59,0l-3.27,8.32c-0.2,0.51-0.67,0.84-1.21,0.88l-8.92,0.54c-1.28,0.07-1.78,1.65-0.81,2.46l6.9,5.66\n\t\t\tc0.4,0.34,0.61,0.91,0.47,1.41l-2.26,8.65c-0.3,1.21,1.01,2.19,2.09,1.52l7.51-4.81c0.47-0.3,1.04-0.3,1.48,0l7.54,4.81\n\t\t\tc1.08,0.67,2.39-0.3,2.09-1.52l-2.26-8.62C24.07,20.4,24.24,19.86,24.68,19.53z",
            }),
          );
        }
        function ze() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              viewBox: "0 0 32 32",
              enableBackground: "new 0 0 32 32",
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                fill: "white",
                d: "M28.4,1.49H3.79c-1.99,0-3.6,1.61-3.6,3.6v14.88c0,1.99,1.61,3.6,3.6,3.6h2.37c0,1.61-0.38,3.7-1.51,5.88\n\t\t\tc-0.28,0.57-0.19,1.33,0.19,1.8c0.28,0.38,0.76,0.47,1.14,0.47c0.19,0,0.38,0,0.57-0.09c4.07-1.61,7.57-5.59,9.47-8.05h12.4\n\t\t\tc1.99,0,3.6-1.61,3.6-3.6V5.1C31.91,3.11,30.3,1.49,28.4,1.49z M8.23,14.97c-1.33,0-2.37-1.04-2.37-2.37s1.04-2.37,2.37-2.37\n\t\t\ts2.37,1.04,2.37,2.37S9.56,14.97,8.23,14.97z M15.99,14.97c-1.33,0-2.37-1.04-2.37-2.37s1.04-2.37,2.37-2.37\n\t\t\tc1.33,0,2.37,1.04,2.37,2.37S17.32,14.97,15.99,14.97z M23.85,14.97c-1.33,0-2.37-1.04-2.37-2.37s1.04-2.37,2.37-2.37\n\t\t\tc1.33,0,2.37,1.04,2.37,2.37S25.18,14.97,23.85,14.97z",
              }),
            ),
          );
        }
        function je() {
          return i.createElement(
            "svg",
            {
              version: "1.1",
              id: "Layer_1",
              xmlns: "http://www.w3.org/2000/svg",
              x: "0px",
              y: "0px",
              viewBox: "0 0 32 32",
              enableBackground: "new 0 0 32 32",
            },
            i.createElement(
              "g",
              null,
              i.createElement("path", {
                fill: "white",
                d: "M23.32,28.28C23,25.55,20.68,23.52,18,23.52h-3.78c-2.73,0-5,2.03-5.33,4.76L8.56,30.8h15.09L23.32,28.28z",
              }),
              i.createElement("path", {
                fill: "white",
                d: "M16.08,22.15c2.82,0,5.1-2.28,5.1-5.1c0-2.82-2.28-5.1-5.1-5.1s-5.1,2.28-5.1,5.1\n\t\t\tC10.98,19.86,13.27,22.15,16.08,22.15z",
              }),
              i.createElement(
                "g",
                null,
                i.createElement("path", {
                  fill: "white",
                  d: "M24.09,10.21c-0.94-1.22-2.18-2.23-3.57-2.9c-1.39-0.68-2.94-1.02-4.48-1.01l-0.02,0L16,6.3\n\t\t\t\tc-0.03,0-0.05,0-0.08,0c-1.52,0-3.04,0.35-4.4,1.01c-1.39,0.68-2.62,1.68-3.57,2.9c-0.94,1.22-1.6,2.67-1.91,4.18\n\t\t\t\tc-0.3,1.51-0.25,3.1,0.15,4.59c0.14,0.55,0.62,0.92,1.18,0.92c0.01,0,0.02,0,0.04,0h0.27l0.03-0.01c0.32-0.08,0.59-0.29,0.76-0.57\n\t\t\t\tl0.07-0.1c0.14-0.21,0.18-0.46,0.11-0.7L8.6,18.38c-0.18-0.62-0.27-1.27-0.29-1.92c0-4.24,3.45-7.68,7.69-7.68h0.04\n\t\t\t\tc4.24,0,7.69,3.45,7.69,7.68c-0.02,0.65-0.11,1.3-0.29,1.92l-0.04,0.15c-0.07,0.24-0.03,0.49,0.11,0.7l0.07,0.1\n\t\t\t\tc0.17,0.28,0.44,0.49,0.76,0.57l0.03,0.01l0.26,0c0.01,0,0.02,0,0.04,0c0.56,0,1.04-0.37,1.18-0.92c0.4-1.49,0.46-3.08,0.15-4.59\n\t\t\t\tC25.69,12.88,25.04,11.44,24.09,10.21z",
                }),
                i.createElement("path", {
                  fill: "white",
                  d: "M16.02,0.68c-8.83,0-15.99,7.16-16,15.99h0.01c-0.02,2.68,0.74,5.31,2.18,7.57l0,0.01l0.01,0.01\n\t\t\t\tc0.37,0.43,1,0.51,1.47,0.19c0.47-0.32,0.62-0.94,0.36-1.44l0,0l0,0c-1.19-1.89-1.81-4.09-1.79-6.32v0v0\n\t\t\t\tc0-7.6,6.16-13.76,13.76-13.76c7.6,0,13.76,6.16,13.76,13.76v0v0c0.03,2.24-0.59,4.43-1.79,6.32l0,0l0,0\n\t\t\t\tc-0.26,0.5-0.11,1.12,0.36,1.44c0.47,0.32,1.1,0.24,1.47-0.19l0.01-0.01l0-0.01c1.45-2.26,2.2-4.89,2.18-7.57h0.01\n\t\t\t\tC32.02,7.84,24.86,0.68,16.02,0.68",
                }),
              ),
            ),
          );
        }
        function qe(e) {
          const { className: t, ...n } = e;
          return i.createElement(
            "svg",
            {
              className: (0, o.A)(a().SteamDeckCompatLogo, t),
              ...n,
              viewBox: "0 0 20 20",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              opacity: "0.84",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M7.77715 4.30197C10.9241 4.30197 13.4752 6.85305 13.4752 9.99997C13.4752 13.1469 10.9241 15.698 7.77715 15.698V18.8889C12.6864 18.8889 16.666 14.9092 16.666 9.99997C16.666 5.09078 12.6864 1.11108 7.77715 1.11108V4.30197ZM7.77756 13.8889C9.92533 13.8889 11.6664 12.1477 11.6664 9.99997C11.6664 7.8522 9.92533 6.11108 7.77756 6.11108C5.62979 6.11108 3.88867 7.8522 3.88867 9.99997C3.88867 12.1477 5.62979 13.8889 7.77756 13.8889Z",
              fill: "white",
            }),
          );
        }
        function Ke(e) {
          const { className: t, ...n } = e;
          return i.createElement(
            "svg",
            {
              className: (0, o.A)(
                a().SteamDeckCompatIcon,
                a().SteamDeckCompatVerified,
                t,
              ),
              ...n,
              viewBox: "0 0 20 20",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M10 19C14.9706 19 19 14.9706 19 10C19 5.02944 14.9706 1 10 1C5.02944 1 1 5.02944 1 10C1 14.9706 5.02944 19 10 19ZM8.33342 11.9222L14.4945 5.76667L16.4556 7.72779L8.33342 15.8556L3.26675 10.7833L5.22786 8.82223L8.33342 11.9222Z",
              fill: "currentColor",
            }),
          );
        }
        function Ze(e) {
          const { className: t, ...n } = e;
          return i.createElement(
            "svg",
            {
              className: (0, o.A)(
                a().SteamDeckCompatIcon,
                a().SteamDeckCompatPlayable,
                t,
              ),
              ...n,
              viewBox: "0 0 20 20",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M10 19C14.9706 19 19 14.9706 19 10C19 5.02944 14.9706 1 10 1C5.02944 1 1 5.02944 1 10C1 14.9706 5.02944 19 10 19ZM8.61079 9.44444V15H11.3886V9.44444H8.61079ZM9.07372 8.05245C9.34781 8.23558 9.67004 8.33333 9.99967 8.33333C10.4417 8.33333 10.8656 8.15774 11.1782 7.84518C11.4907 7.53262 11.6663 7.10869 11.6663 6.66667C11.6663 6.33703 11.5686 6.0148 11.3855 5.74072C11.2023 5.46663 10.942 5.25301 10.6375 5.12687C10.3329 5.00072 9.99783 4.96771 9.67452 5.03202C9.35122 5.09633 9.05425 5.25507 8.82116 5.48815C8.58808 5.72124 8.42934 6.01821 8.36503 6.34152C8.30072 6.66482 8.33373 6.99993 8.45988 7.30447C8.58602 7.60902 8.79964 7.86931 9.07372 8.05245Z",
              fill: "currentColor",
            }),
          );
        }
        function Qe(e) {
          const { className: t, ...n } = e;
          return i.createElement(
            "svg",
            {
              className: (0, o.A)(
                a().SteamDeckCompatIcon,
                a().SteamDeckCompatUnsupported,
                t,
              ),
              ...n,
              viewBox: "0 0 20 20",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M14.1931 15.6064C13.0246 16.4816 11.5733 17 10.001 17C6.13498 17 3.00098 13.866 3.00098 10C3.00098 8.42766 3.51938 6.97641 4.39459 5.80783L14.1931 15.6064ZM15.6074 14.1922C16.4826 13.0236 17.001 11.5723 17.001 10C17.001 6.13401 13.867 3 10.001 3C8.42864 3 6.97739 3.5184 5.80881 4.39362L15.6074 14.1922ZM19.001 10C19.001 14.9706 14.9715 19 10.001 19C5.03041 19 1.00098 14.9706 1.00098 10C1.00098 5.02944 5.03041 1 10.001 1C14.9715 1 19.001 5.02944 19.001 10Z",
              fill: "currentColor",
            }),
          );
        }
        function $e(e) {
          const { className: t, ...n } = e;
          return i.createElement(
            "svg",
            {
              className: (0, o.A)(
                a().SteamDeckCompatIcon,
                a().SteamDeckCompatUnknown,
                t,
              ),
              ...n,
              viewBox: "0 0 20 20",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
            },
            i.createElement("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M17.3972 11.2461L18.8767 11.4932C18.9578 11.0075 19 10.5087 19 10C19 9.49131 18.9578 8.99248 18.8767 8.50682L17.3972 8.75386C17.4647 9.15821 17.5 9.57442 17.5 10C17.5 10.4256 17.4647 10.8418 17.3972 11.2461ZM17.0295 7.3783L18.4348 6.8539C18.0814 5.90668 17.5729 5.03501 16.9403 4.26971L15.7842 5.22538C16.3119 5.86387 16.7354 6.59021 17.0295 7.3783ZM14.7746 4.21582L15.7303 3.05967C14.965 2.42708 14.0933 1.91864 13.1461 1.56519L12.6217 2.97054C13.4098 3.26461 14.1361 3.68805 14.7746 4.21582ZM11.2461 2.60281L11.4932 1.1233C11.0075 1.0422 10.5087 1 10 1C9.49131 1 8.99248 1.0422 8.50682 1.1233L8.75386 2.60281C9.15821 2.5353 9.57442 2.5 10 2.5C10.4256 2.5 10.8418 2.5353 11.2461 2.60281ZM7.3783 2.97054L6.8539 1.56519C5.90668 1.91864 5.03501 2.42708 4.26971 3.05967L5.22538 4.21582C5.86387 3.68805 6.59021 3.26461 7.3783 2.97054ZM4.21582 5.22538L3.05967 4.26971C2.42708 5.03501 1.91864 5.90668 1.56519 6.8539L2.97054 7.3783C3.26461 6.59022 3.68805 5.86387 4.21582 5.22538ZM1 10C1 9.49131 1.0422 8.99248 1.1233 8.50682L2.60281 8.75386C2.5353 9.15821 2.5 9.57442 2.5 10C2.5 10.4256 2.5353 10.8418 2.60281 11.2461L1.1233 11.4932C1.0422 11.0075 1 10.5087 1 10ZM2.97054 12.6217L1.56519 13.1461C1.91864 14.0933 2.42708 14.965 3.05967 15.7303L4.21582 14.7746C3.68805 14.1361 3.26461 13.4098 2.97054 12.6217ZM5.22538 15.7842L4.26971 16.9403C5.03501 17.5729 5.90668 18.0814 6.8539 18.4348L7.3783 17.0295C6.59022 16.7354 5.86387 16.3119 5.22538 15.7842ZM8.75386 17.3972L8.50682 18.8767C8.99248 18.9578 9.49131 19 10 19C10.5087 19 11.0075 18.9578 11.4932 18.8767L11.2461 17.3972C10.8418 17.4647 10.4256 17.5 10 17.5C9.57442 17.5 9.15821 17.4647 8.75386 17.3972ZM12.6217 17.0295L13.1461 18.4348C14.0933 18.0814 14.965 17.5729 15.7303 16.9403L14.7746 15.7842C14.1361 16.3119 13.4098 16.7354 12.6217 17.0295ZM15.7842 14.7746L16.9403 15.7303C17.5729 14.965 18.0814 14.0933 18.4348 13.1461L17.0295 12.6217C16.7354 13.4098 16.3119 14.1361 15.7842 14.7746ZM9.2425 14.7702C9.46679 14.92 9.73048 15 10.0002 15C10.362 15 10.7089 14.8563 10.9646 14.6006C11.2204 14.3448 11.3641 13.998 11.3641 13.6363C11.3641 13.3666 11.2841 13.1029 11.1343 12.8787C10.9844 12.6544 10.7714 12.4796 10.5222 12.3764C10.2729 12.2732 9.99872 12.2462 9.73415 12.2988C9.46958 12.3514 9.22656 12.4813 9.03582 12.672C8.84508 12.8628 8.71518 13.1057 8.66255 13.3703C8.60993 13.6348 8.63694 13.909 8.74016 14.1582C8.84339 14.4074 9.01821 14.6203 9.2425 14.7702ZM11.0981 10.3552C11.1722 10.2348 11.2765 10.1358 11.4005 10.068C11.8099 9.82315 12.1479 9.47526 12.3808 9.05903C12.6137 8.64279 12.7333 8.17276 12.7278 7.69584C12.7223 7.21892 12.5918 6.75179 12.3493 6.34105C12.1069 5.93031 11.7609 5.59033 11.346 5.35502C10.9311 5.11972 10.4617 4.99732 9.98466 5.00004C9.50764 5.00277 9.03969 5.13052 8.62748 5.37054C8.21527 5.61057 7.87321 5.95448 7.63545 6.36796C7.39769 6.78144 7.27253 7.25004 7.27246 7.72699H9.23191C9.23191 7.6261 9.25178 7.52621 9.29039 7.43301C9.32901 7.3398 9.3856 7.25511 9.45694 7.18378C9.52829 7.11244 9.61299 7.05586 9.70621 7.01725C9.79942 6.97865 9.89933 6.95878 10.0002 6.95878C10.1659 6.96387 10.3255 7.02207 10.4556 7.12479C10.5856 7.22751 10.6792 7.3693 10.7225 7.52925C10.7658 7.6892 10.7565 7.85883 10.6961 8.01311C10.6356 8.16739 10.5271 8.29816 10.3867 8.3861C9.97322 8.62846 9.63003 8.97429 9.39088 9.38955C9.15173 9.80482 9.02487 10.2752 9.02278 10.7544V11.3635H10.9777V10.7544C10.9825 10.6131 11.024 10.4755 11.0981 10.3552Z",
              fill: "currentColor",
            }),
          );
        }
        function Xe(e) {
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 22 20",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              d: "M5.55344 11.3334L7.94011 13.7267L6.06011 15.6067L0.446777 10.0001L6.06011 4.39341L7.94011 6.27341L5.55344 8.66675H13.6668V11.3334H5.55344ZM12.4334 0.666748H11.0001V3.33341H12.4334C14.2016 3.33341 15.8972 4.03579 17.1475 5.28604C18.3977 6.53628 19.1001 8.23197 19.1001 10.0001C19.1001 11.7682 18.3977 13.4639 17.1475 14.7141C15.8972 15.9644 14.2016 16.6667 12.4334 16.6667H11.0001V19.3334H12.4334C14.9088 19.3334 17.2828 18.3501 19.0331 16.5997C20.7834 14.8494 21.7668 12.4754 21.7668 10.0001C21.7668 7.52473 20.7834 5.15076 19.0331 3.40042C17.2828 1.65008 14.9088 0.666748 12.4334 0.666748Z",
            }),
          );
        }
        function Ye(e) {
          return i.createElement(
            "svg",
            {
              width: "26",
              height: "26",
              xmlns: "http://www.w3.org/2000/svg",
              viewBox: "0 0 26 26",
              fill: "none",
              ...e,
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M17.5133 4.65595C15.8046 6.36468 17.0366 9.2803 19.4284 9.28035C20.446 9.28035 21.0261 8.76331 21.2519 8.56209C21.2963 8.5225 21.327 8.49513 21.3447 8.48633C22.4018 7.42917 22.4024 5.71423 21.3441 4.65595C20.2817 3.59714 18.5699 3.59936 17.5133 4.65595ZM18.5553 7.44735C17.4045 6.30173 19.1522 4.54882 20.301 5.69597V5.69586C20.7836 6.18159 20.783 6.96269 20.301 7.44422C19.8189 7.92684 19.0348 7.92415 18.5553 7.44735ZM0.583974 13.873L14.455 0L24.4165 1.583L26 11.5449L12.1289 25.416C11.7368 25.805 11.2252 26 10.7156 26C10.2065 26 9.69489 25.805 9.30552 25.416L0.583974 16.6976C0.194954 16.305 0 15.7933 0 15.2843C0 14.7742 0.194948 14.2625 0.583974 13.873ZM9.26632 17.5853L8.88665 17.965C8.62416 18.2274 8.43667 18.5227 8.32418 18.8509C8.21403 19.1766 8.19645 19.5106 8.27145 19.8528C8.34879 20.1926 8.53979 20.5148 8.84446 20.8195C9.14445 21.1195 9.46318 21.307 9.80066 21.382C10.1428 21.457 10.4756 21.4382 10.7991 21.3257C11.1272 21.2132 11.4225 21.0257 11.6849 20.7633L12.0646 20.3836C12.3271 20.1211 12.5146 19.8281 12.6271 19.5047C12.7419 19.179 12.7618 18.8473 12.6868 18.5099C12.6142 18.17 12.4255 17.8478 12.1209 17.5431C11.8209 17.2431 11.4986 17.0545 11.1541 16.9771C10.8143 16.8998 10.4791 16.9162 10.1487 17.0263C9.82293 17.1365 9.5288 17.3228 9.26632 17.5853ZM9.6038 18.6821L9.98347 18.3024C10.2014 18.0845 10.4487 17.9427 10.7252 17.8771C11.0065 17.8115 11.2701 17.9017 11.5162 18.1478C11.7693 18.4009 11.8584 18.6634 11.7834 18.9352C11.7107 19.2047 11.5654 19.4485 11.3475 19.6664L10.9678 20.0461C10.7498 20.2641 10.5026 20.4082 10.226 20.4785C9.95417 20.5488 9.6952 20.4609 9.44912 20.2148C9.19601 19.9617 9.10344 19.6981 9.1714 19.4239C9.24171 19.1473 9.38584 18.9001 9.6038 18.6821ZM9.80066 9.87944L9.421 10.2591C9.15851 10.5216 8.97102 10.8169 8.85853 11.145C8.74837 11.4708 8.7308 11.8047 8.80579 12.1469C8.88313 12.4867 9.07414 12.809 9.37881 13.1136C9.6788 13.4136 9.99753 13.6011 10.335 13.6761C10.6772 13.7511 11.01 13.7324 11.3334 13.6199C11.6615 13.5074 11.9568 13.3199 12.2193 13.0574L12.599 12.6777C12.8614 12.4152 13.0489 12.1223 13.1614 11.7989C13.2763 11.4731 13.2962 11.1415 13.2212 10.804C13.1485 10.4642 12.9599 10.1419 12.6552 9.83725C12.3552 9.53727 12.033 9.34861 11.6885 9.27127C11.3486 9.19393 11.0135 9.21033 10.683 9.32048C10.3573 9.43063 10.0632 9.61695 9.80066 9.87944ZM10.1381 10.9763L10.5178 10.5966C10.7358 10.3786 10.983 10.2368 11.2596 10.1712C11.5408 10.1056 11.8045 10.1958 12.0506 10.4419C12.3037 10.695 12.3927 10.9575 12.3177 11.2294C12.2451 11.4989 12.0998 11.7426 11.8818 11.9606L11.5021 12.3403C11.2842 12.5582 11.0369 12.7023 10.7604 12.7726C10.4885 12.843 10.2295 12.7551 9.98347 12.509C9.73036 12.2559 9.63778 11.9922 9.70575 11.718C9.77606 11.4415 9.92019 11.1942 10.1381 10.9763ZM16.3675 13.7464L4.21814 15.9963L5.01966 16.7978L17.169 14.5479L16.3675 13.7464Z",
            }),
          );
        }
        function Je(e) {
          const { className: t } = e;
          return i.createElement(
            "svg",
            {
              xmlns: "http://www.w3.org/2000/svg",
              className: (0, o.A)("SVGIcon_Button", "SVGIcon_SteamDeck", t),
              viewBox: "0 0 36 36",
              fill: "none",
            },
            i.createElement("path", {
              fill: "currentColor",
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M0 11C0 9.89543 0.895431 9 2 9H34C35.1046 9 36 9.89543 36 11V24C36 25.6569 34.6569 27 33 27H3C1.34315 27 0 25.6569 0 24V11ZM33 16C33 16.5523 32.5523 17 32 17C31.4477 17 31 16.5523 31 16C31 15.4477 31.4477 15 32 15C32.5523 15 33 15.4477 33 16ZM32 13C32.5523 13 33 12.5523 33 12C33 11.4477 32.5523 11 32 11C31.4477 11 31 11.4477 31 12C31 12.5523 31.4477 13 32 13ZM35 14C35 14.5523 34.5523 15 34 15C33.4477 15 33 14.5523 33 14C33 13.4477 33.4477 13 34 13C34.5523 13 35 13.4477 35 14ZM30 15C30.5523 15 31 14.5523 31 14C31 13.4477 30.5523 13 30 13C29.4477 13 29 13.4477 29 14C29 14.5523 29.4477 15 30 15ZM6 14C6 15.1046 5.10457 16 4 16C2.89543 16 2 15.1046 2 14C2 12.8954 2.89543 12 4 12C5.10457 12 6 12.8954 6 14ZM2.5 21C2.22386 21 2 21.2239 2 21.5V24.5C2 24.7761 2.22386 25 2.5 25H5.5C5.77614 25 6 24.7761 6 24.5V21.5C6 21.2239 5.77614 21 5.5 21H2.5ZM30 21.5C30 21.2239 30.2239 21 30.5 21H33.5C33.7761 21 34 21.2239 34 21.5V24.5C34 24.7761 33.7761 25 33.5 25H30.5C30.2239 25 30 24.7761 30 24.5V21.5ZM28 11H8V25H28V11Z",
            }),
          );
        }
      },
      4532: (e, t, n) => {
        "use strict";
        n.d(t, { l: () => r });
        var i = n(63696);
        let o = 0;
        function r() {
          const e = i.useRef();
          return (
            void 0 === e.current && (e.current = "svgid_" + o++),
            [e.current, `url(#${e.current})`]
          );
        }
      },
      74977: (e, t, n) => {
        "use strict";
        n.d(t, { t: () => m });
        var i = n(63696),
          o = n(77171),
          r = n(97671),
          a = n.n(r);
        const s = n.p + "images/webui/8669e97b288da32670e77181618c3dfb.png";
        var l = n(66651),
          c = n(7884);
        const m = i.memo(function (e) {
          const {
            className: t,
            size: n,
            string: r,
            position: m,
            static: u,
            msDelayAppear: h,
          } = e;
          let p = [a().LoadingWrapper, "SteamLogoThrobber", d(n)];
          const [_, g] = i.useState(!h),
            C = !(0, l.q)();
          return (
            (0, i.useEffect)(() => {
              if (_) return;
              const e = setTimeout(() => g(!0), h);
              return () => clearTimeout(e);
            }, [h, _]),
            void 0 === r && p.push(a().noString),
            t && p.push(t),
            u && p.push(a().Static),
            i.createElement(
              "div",
              {
                className: (0, o.A)(
                  "center" == m && a().throbber_center_wrapper,
                  !!h && a().ThrobberDelayAppear,
                  _ && a().Visible,
                ),
              },
              _ &&
                C &&
                i.createElement(
                  "div",
                  { className: p.join(" ") },
                  i.createElement(
                    "div",
                    { className: a().NewThrobber },
                    i.createElement("img", { src: (0, c.YJ)(s) }),
                  ),
                ),
              Boolean(r) &&
                i.createElement("div", { className: a().ThrobberText }, r),
            )
          );
        });
        i.memo(function (e) {
          const {
            className: t,
            size: n,
            string: r,
            position: s,
            static: l,
            msDelayAppear: c,
          } = e;
          let m = [a().LoadingWrapper, "SteamLogoThrobber", d(n)];
          const [h, p] = i.useState(!c);
          return (
            (0, i.useEffect)(() => {
              if (h) return;
              const e = setTimeout(() => p(!0), c);
              return () => clearTimeout(e);
            }, [c, h]),
            void 0 === r && m.push(a().noString),
            t && m.push(t),
            l && m.push(a().Static),
            i.createElement(
              "div",
              {
                className: (0, o.A)(
                  "center" == s && a().throbber_center_wrapper,
                  !!c && a().ThrobberDelayAppear,
                  h && a().Visible,
                ),
              },
              h &&
                i.createElement(
                  "div",
                  { className: m.join(" ") },
                  i.createElement(
                    "div",
                    { className: a().Throbber },
                    i.createElement(u, { className: a().base }),
                    i.createElement(u, { className: a().blur }),
                  ),
                ),
              Boolean(r) &&
                i.createElement("div", { className: a().ThrobberText }, r),
            )
          );
        });
        function d(e) {
          switch (e) {
            case "small":
              return a().throbber_small;
            case "medium":
              return a().throbber_medium;
            case "xlarge":
              return a().throbber_xlarge;
            case "xxlarge":
              return a().throbber_xxlarge;
            default:
              return a().throbber_large;
          }
        }
        function u(e) {
          let t = "SVGIcon_Button SVGIcon_Throbber ";
          return (
            e.className && (t += e.className),
            i.createElement(
              "svg",
              {
                version: "1.1",
                id: "base",
                xmlns: "http://www.w3.org/2000/svg",
                className: t,
                x: "0px",
                y: "0px",
                width: "256px",
                height: "256px",
                viewBox: "0 0 256 256",
              },
              i.createElement(
                "g",
                { className: a().partCircle },
                i.createElement("path", {
                  className: a().roundOuter,
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895",
                }),
                i.createElement("path", {
                  className: a().roundOuter,
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M201.432,101.166",
                }),
                i.createElement("path", {
                  className: a().roundOuter,
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754",
                }),
              ),
              i.createElement(
                "g",
                { className: a().mainOutline },
                i.createElement("path", {
                  className: a().roundFill,
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundOuterOutline,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber01,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber02,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber03,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber04,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber05,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber06,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber07,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber08,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber09,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber10,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber11,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber12,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber13,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber14,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
                i.createElement("path", {
                  className: a().roundThrobber15,
                  strokeLinecap: "butt",
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  d: "M127.82,23.895 c-54.686,0-99.487,42.167-103.745,95.754l55.797,23.069c4.729-3.231,10.44-5.122,16.584-5.122c0.551,0,1.098,0.014,1.642,0.047 l24.815-35.968c0-0.17-0.004-0.338-0.004-0.509c0-21.647,17.61-39.261,39.26-39.261s39.263,17.613,39.263,39.261 c0,21.65-17.611,39.264-39.263,39.264c-0.299,0-0.593-0.007-0.887-0.014l-35.392,25.251c0.018,0.462,0.035,0.931,0.035,1.396 c0,16.252-13.22,29.472-29.469,29.472c-14.265,0-26.19-10.185-28.892-23.666L27.66,156.37 c12.355,43.698,52.503,75.733,100.16,75.733c57.495,0,104.104-46.61,104.104-104.105S185.314,23.895,127.82,23.895z",
                }),
              ),
              i.createElement(
                "g",
                { className: a().bottomCircle },
                i.createElement("path", {
                  fill: "#ffffff",
                  d: "M89.226,181.579L76.5,176.321c2.256,4.696,6.159,8.628,11.339,10.786 c11.197,4.668,24.11-0.647,28.779-11.854c2.259-5.425,2.274-11.405,0.033-16.841c-2.237-5.436-6.46-9.675-11.886-11.938 c-5.384-2.24-11.151-2.156-16.22-0.244l13.146,5.436c8.261,3.443,12.166,12.93,8.725,21.189 C106.976,181.115,97.486,185.022,89.226,181.579",
                }),
              ),
              i.createElement(
                "g",
                { className: a().topCircle },
                i.createElement("circle", {
                  fill: "none",
                  stroke: "#ffffff",
                  strokeWidth: "6",
                  strokeMiterlimit: "10",
                  cx: "161.731",
                  cy: "101.274",
                  r: "23.019",
                }),
              ),
            )
          );
        }
      },
      82099: (e, t, n) => {
        "use strict";
        n.d(t, { c: () => h });
        var i = n(63696),
          o = n(42674),
          r = n(81734),
          a = n(77171),
          s = n(31475),
          l = n(17070);
        function c(e) {
          const { popup: t, onMaximize: n, bOSX: l } = e,
            c = (0, s.GD)(t),
            m = i.useCallback(() => {
              n
                ? n()
                : (0, o.Fj)(t, "Window.ToggleMaximize") &&
                  t.SteamClient.Window.ToggleMaximize();
            }, [t, n]);
          return i.createElement(
            u,
            {
              className: (0, a.A)(
                c ? "restoreButton" : "maximizeButton",
                "windowControlButton",
              ),
              onClick: m,
            },
            !l &&
              (c ? i.createElement(r.ZWw, null) : i.createElement(r.hz4, null)),
          );
        }
        function m(e) {
          const { popup: t, onMinimize: n, bOSX: o } = e,
            a = i.useCallback(() => {
              t.SteamClient.Window.Minimize();
            }, [t]);
          return i.createElement(
            u,
            {
              className: "minimizeButton windowControlButton",
              onClick: n ?? a,
            },
            !o && i.createElement(r.Xjb, null),
          );
        }
        function d(e) {
          const { popup: t, onClose: n, bOSX: a } = e,
            s = i.useCallback(() => {
              t &&
                ((0, o.Fj)(t, "Window.Close")
                  ? t.SteamClient.Window.Close()
                  : t.close());
            }, [t]);
          return i.createElement(
            u,
            { className: "closeButton windowControlButton", onClick: n ?? s },
            !a && i.createElement(r.sED, null),
          );
        }
        function u(e) {
          const { className: t, onClick: n, children: o } = e,
            r = i.useCallback(
              (e) => {
                n && (e.stopPropagation(), n(e));
              },
              [n],
            );
          return i.createElement(
            "div",
            { className: (0, a.A)("title-area-icon", t), onClick: r },
            i.createElement("div", { className: "title-area-icon-inner" }, o),
          );
        }
        function h(e) {
          const {
              className: t,
              style: n,
              hideActions: o,
              hideClose: r,
              hideMin: u,
              hideMax: h,
              bOSX: p = (0, l.Pr)(),
              bForceWindowFocused: _,
              onMinimize: g,
              onMaximize: C,
              onClose: f,
              extraActions: S,
              popup: v,
              children: b,
            } = e,
            I = (0, s.jt)(v);
          return i.createElement(
            "div",
            {
              className: (0, a.A)(
                "TitleBar",
                "title-area",
                p && "OSX",
                (I || _) && "WindowFocus",
                t,
              ),
              style: n,
            },
            i.createElement("div", { className: "title-area-highlight" }),
            i.createElement("div", { className: "title-area-children" }, b),
            !o &&
              i.createElement(
                i.Fragment,
                null,
                S &&
                  i.createElement(
                    "div",
                    { className: "title-bar-actions extra-actions" },
                    S,
                  ),
                i.createElement(
                  "div",
                  { className: "title-bar-actions window-controls" },
                  !r && i.createElement(d, { popup: v, onClose: f, bOSX: p }),
                  !h &&
                    i.createElement(c, { popup: v, onMaximize: C, bOSX: p }),
                  !u &&
                    i.createElement(m, { popup: v, onMinimize: g, bOSX: p }),
                ),
              ),
          );
        }
      },
      97229: (e, t, n) => {
        "use strict";
        n.d(t, {
          C$: () => h,
          Gq: () => g,
          fS: () => S,
          he: () => p,
          m9: () => _,
        });
        var i = n(63696),
          o = n(78325),
          r = n(23812),
          a = n(77889),
          s = n(77171),
          l = n(74002),
          c = n(1150),
          m = n.n(c);
        const d = i.createContext({}),
          u = () => i.useContext(d);
        function h(e) {
          const [t, n] = i.useState(null),
            o = i.useMemo(() => ({ targetElement: t }), [t]);
          return i.createElement(
            d.Provider,
            { value: o },
            i.createElement("div", { ref: n }),
            e.children,
          );
        }
        function p(e) {
          const { divProps: t, tooltipProps: n } = C({
            ...e,
            toolTipContent: e.toolTipContent
              ? i.createElement(v, null, f(e.toolTipContent))
              : null,
          });
          return i.createElement(
            r.ml,
            {
              className: "tool-tip-source",
              noFocusRing: !0,
              focusable: e.bNavStop ?? !!t.onClick,
              ...t,
            },
            i.createElement(b, { ...n }),
            e.children,
          );
        }
        function _(e) {
          const { divProps: t, tooltipProps: n } = C(e);
          return i.createElement(
            r.ml,
            {
              className: "tool-tip-source",
              noFocusRing: !0,
              focusable: e.bNavStop ?? !!t.onClick,
              ...t,
            },
            i.createElement(b, { ...n }),
            e.children,
          );
        }
        function g(e) {
          const { children: t } = e,
            { divProps: n, tooltipProps: o } = C({
              ...e,
              toolTipContent: e.toolTipContent
                ? i.createElement(v, null, f(e.toolTipContent))
                : null,
            });
          return i.createElement(
            i.Fragment,
            null,
            i.cloneElement(t, { ...n, ...t.props }),
            i.createElement(b, { ...o }),
          );
        }
        function C(e) {
          const {
              toolTipContent: t,
              nDelayShowMS: n = 300,
              bDisabled: o,
              direction: r,
              nBodyAlignment: a,
              nBodyDistance: s,
              nAllowOffscreenPx: l,
              nMaxLateralMoveOnScreen: c,
              strTooltipClassname: m,
              bNavStop: d,
              bTopmost: u,
              children: h,
              ...p
            } = e,
            _ = {
              direction: r,
              nBodyAlignment: a,
              nBodyDistance: s,
              nAllowOffscreenPx: l,
              nMaxLateralMoveOnScreen: c,
              className: m,
              bTopmost: u,
            },
            [g, C] = i.useState(!1),
            [f, S] = i.useState();
          return {
            divProps: {
              ...p,
              onMouseEnter: i.useCallback((e) => {
                C(!0), S(e.currentTarget);
              }, []),
              onMouseLeave: i.useCallback(() => {
                C(!1);
              }, []),
            },
            stateHandlers: { setTarget: S, setHovered: C },
            tooltipProps: {
              active: g && !o,
              target: f,
              nDelayShowMS: n,
              hoverPositionProps: _,
              children: t,
            },
          };
        }
        function f(e) {
          return "string" == typeof e ? (0, l.we)(e) : e;
        }
        function S(e) {
          const { divProps: t, tooltipProps: n, stateHandlers: o } = C(e);
          return {
            divProps: t,
            stateHandlers: o,
            tooltip: i.createElement(b, { ...n }),
          };
        }
        function v(e) {
          return i.createElement("div", {
            ...e,
            className: (0, s.A)(m().TextToolTip, e.className),
          });
        }
        function b(e) {
          const {
              active: t,
              target: n,
              nDelayShowMS: r = 300,
              hoverPositionProps: s,
              children: l,
            } = e,
            [c, m] = i.useState(t),
            d = u();
          if (
            (i.useEffect(() => {
              if (t) {
                if (r) {
                  const e = window.setTimeout(() => m(!0), r);
                  return () => window.clearTimeout(e);
                }
                m(!0);
              } else m(!1);
            }, [t]),
            !c)
          )
            return null;
          if (!l || !n) return null;
          const { targetElement: h } = d;
          return o.createPortal(
            i.createElement(a.g, { target: n, ...s }, l),
            h ?? n.ownerDocument.body,
          );
        }
      },
      24803: (e, t, n) => {
        "use strict";
        n.d(t, {
          AJ: () => C,
          EP: () => b,
          Id: () => p,
          Ri: () => I,
          W4: () => v,
          i_: () => w,
          uU: () => _,
          xE: () => S,
        });
        var i = n(34629),
          o = n(89193),
          r = n(63696),
          a = n(94762),
          s = n(31418),
          l = n(42674),
          c = n(77171),
          m = n(50622),
          d = n(74002),
          u = n(17070),
          h = n(27816);
        function p(e, t) {
          let n;
          (n =
            "currentTarget" in e
              ? e.currentTarget.ownerDocument.defaultView
              : e),
            0 == t.indexOf("steam://")
              ? (0, l.Fj)(n, "URL.ExecuteSteamURL")
                ? n.SteamClient.URL.ExecuteSteamURL(t)
                : (n.location.href = t)
              : n.open(
                  t,
                  void 0,
                  "menubar,location,resizable,scrollbars,status,noopener",
                );
        }
        function _(e) {
          let {
            bDisableContextMenu: t,
            onContextMenu: n,
            bForceExternal: i,
            href: o,
            bUseLinkFilter: a,
            getPIDFromEvent: l,
            ...c
          } = e;
          return (
            t || n || (n = C),
            a &&
              o &&
              (o =
                (u.TS.IN_CLIENT ? "steam://openurl_external/" : "") +
                (0, s.E)(o)),
            l || (l = () => 0),
            r.createElement(
              "a",
              {
                ...c,
                href: o,
                onClick: (e) => {
                  e.preventDefault(),
                    b(window, o, {
                      bForceExternal: !!i,
                      bUseLinkFilter: !!a,
                      unPID: l(e),
                    });
                },
                onContextMenu: n,
                rel: a ? "noopener noreferrer" : void 0,
              },
              e.children,
            )
          );
        }
        function g(e) {
          const { strURL: t, unPID: n } = e;
          return r.createElement(
            r.Fragment,
            null,
            r.createElement(
              h.kt,
              {
                onSelected: () => {
                  m.YQ(t);
                },
              },
              (0, d.we)("#ContextMenu_CopyLinkURL"),
            ),
            r.createElement(
              h.kt,
              {
                onSelected: (e) => {
                  b(e, t, { unPID: n });
                },
              },
              (0, d.we)("#ContextMenu_OpenLinkInNewWindow"),
            ),
          );
        }
        function C(e, t) {
          let n = e.currentTarget;
          return (0, a.lX)(
            r.createElement(
              h.tz,
              null,
              r.createElement(g, { strURL: n.href, unPID: t }),
            ),
            e,
          );
        }
        function f(e) {
          const { strFullImageURL: t, unPID: n } = e;
          return r.createElement(
            r.Fragment,
            null,
            r.createElement(
              h.kt,
              {
                onSelected: () => {
                  m.YQ(t);
                },
              },
              (0, d.we)("#ContextMenu_CopyImageURL"),
            ),
            r.createElement(
              h.kt,
              {
                onSelected: (e) => {
                  b(e, t, { unPID: n });
                },
              },
              (0, d.we)("#ContextMenu_OpenImageInNewWindow"),
            ),
          );
        }
        function S(e, t, n) {
          return v(e, e.currentTarget.src, t, n);
        }
        function v(e, t, n, i) {
          return (0, a.lX)(
            r.createElement(
              h.tz,
              null,
              n && r.createElement(g, { strURL: n }),
              r.createElement(f, { strFullImageURL: t, unPID: i }),
            ),
            e,
          );
        }
        function b(e, t, n = {}) {
          const { bForceExternal: i, unPID: o, bUseLinkFilter: r } = n;
          let a;
          (a =
            "currentTarget" in e
              ? e.currentTarget.ownerDocument.defaultView
              : e),
            "undefined" != typeof SteamClient && void 0 !== SteamClient.WebChat
              ? SteamClient.WebChat.OpenURLInClient(t, o || 0, !!i)
              : 0 == t.indexOf("steam://") &&
                  0 != t.indexOf("steam://remoteplay/connect")
                ? (a.location.href = t)
                : a.open(
                    t,
                    void 0,
                    "menubar,location,resizable,scrollbars,status,noopener" +
                      (r ? ",noreferrer" : ""),
                  );
        }
        function I(e) {
          return r.forwardRef(function (t, n) {
            return r.createElement("div", {
              ...t,
              className: (0, c.A)(e, t.className),
              ref: n,
            });
          });
        }
        function w(e) {
          if ("string" != typeof e) return NaN;
          const t = !e.includes("ms") && e.includes("s");
          let n = Number.parseFloat(e);
          return t && (n *= 1e3), n;
        }
        (0, i.Cg)(
          [o.sH],
          class {
            m_Promise;
            m_Value = void 0;
            constructor(e) {
              (0, o.Gn)(this), (this.promise = e);
            }
            set promise(e) {
              (this.m_Promise = e),
                (this.m_Value = void 0),
                e?.then((t) => {
                  this.m_Promise === e && (this.m_Value = t);
                });
            }
            get promise() {
              return this.m_Promise;
            }
            get value() {
              return this.m_Value;
            }
          }.prototype,
          "m_Value",
          void 0,
        );
      },
      27281: (e, t, n) => {
        "use strict";
        n.d(t, { L: () => a, p: () => r });
        var i = n(63696),
          o = n(46147);
        function r(e) {
          const { children: t, name: n } = e;
          var r;
          return (
            (r = n),
            i.useEffect(() => {
              o.y.ReportTrackedComponent(r);
            }, [r]),
            i.createElement(i.Fragment, null, t)
          );
        }
        function a(e) {
          o.y.ReportTrackedAction(e);
        }
      },
      18427: (e, t, n) => {
        "use strict";
        n.d(t, { o: () => l });
        var i = n(63696),
          o = n(97229),
          r = n(23568),
          a = n(81734),
          s = n(77171);
        function l(e) {
          return i.createElement(
            o.he,
            {
              toolTipContent: e.tooltip,
              className: (0, s.A)(
                r.HelperTooltip,
                "HelperTooltip",
                e.className,
              ),
            },
            " ",
            i.createElement(a._VW, null),
          );
        }
      },
      96242: (e, t, n) => {
        "use strict";
        n.d(t, { Z: () => s });
        var i = n(63696),
          o = n(42674),
          r = n(77171),
          a = n(31475);
        function s(e) {
          const { popup: t, className: n, ...s } = e,
            l = (0, a.GD)(t),
            c = i.useRef(null);
          return (
            i.useEffect(() => {
              const e = c.current;
              if (e && (0, o.Fj)(t, "Window.SetResizeGrip")) {
                let n = 0,
                  i = 0;
                const o = e.getBoundingClientRect(),
                  r = e.ownerDocument.defaultView;
                o &&
                  r &&
                  !l &&
                  ((n = Math.ceil(r.innerWidth - o.left)),
                  (i = Math.ceil(r.innerHeight - o.top))),
                  t.SteamClient.Window.SetResizeGrip(n, i);
              }
              return () => {
                (0, o.Fj)(t, "Window.SetResizeGrip") &&
                  t.SteamClient.Window.SetResizeGrip(0, 0);
              };
            }, [t, l]),
            l
              ? null
              : i.createElement("div", {
                  className: (0, r.A)("window_resize_grip", n),
                  ref: c,
                  ...s,
                })
          );
        }
      },
      6e3: (e, t, n) => {
        "use strict";
        n.d(t, { N: () => _, o: () => h });
        var i,
          o = n(34629),
          r = n(63696),
          a = n(37779),
          s = n(20590),
          l = n(82924),
          c = n(77171),
          m = n(74977);
        !(function (e) {
          (e[(e.NotLoaded = 0)] = "NotLoaded"),
            (e[(e.Loading = 1)] = "Loading"),
            (e[(e.Loaded = 2)] = "Loaded");
        })(i || (i = {}));
        let d = i.NotLoaded,
          u = [];
        function h(e) {
          if (d == i.Loaded) return void e();
          if (d == i.NotLoaded) {
            let e = document.createElement("script");
            e.src = "https://www.youtube.com/iframe_api";
            let t = document.getElementsByTagName("script")[0];
            t.parentNode.insertBefore(e, t),
              (window.onYouTubeIframeAPIReady = p);
          }
          u.findIndex((t) => e == t) < 0 && u.push(e);
        }
        function p() {
          d = i.Loaded;
          for (let e of u) e();
          u = [];
        }
        class _ extends r.Component {
          m_strPlayerID = "";
          m_player = null;
          m_playerContainer = null;
          m_bPlayerReady = !1;
          static s_nPlayerIndex = 0;
          constructor(e) {
            super(e),
              (this.m_strPlayerID = "YoutubePlayer_" + _.s_nPlayerIndex++),
              (this.state = { bYoutubeLoaded: !1 });
          }
          componentWillUnmount() {
            var e;
            this.DestroyPlayer(), (e = this.OnYoutubeScriptsReady), a.x9(u, e);
          }
          shouldComponentUpdate(e, t) {
            if (!this.m_player) return !1;
            const n = this.props;
            return n.autoplay != e.autoplay ||
              n.controls != e.controls ||
              n.showInfo != e.showInfo ||
              n.video != e.video
              ? (this.CreatePlayer(e), !1)
              : ((n.width == e.width && n.height == e.height) ||
                  (this.m_bPlayerReady &&
                    e.width &&
                    e.height &&
                    this.m_player.setSize(e.width, e.height)),
                n.forcePause != e.forcePause);
          }
          componentDidUpdate(e) {
            e.forcePause != this.props.forcePause &&
              (this.props.forcePause
                ? this.m_player.pauseVideo()
                : this.m_player.playVideo());
          }
          DestroyPlayer() {
            if (this.m_player)
              try {
                this.m_player.stopVideo && this.m_player.stopVideo(),
                  this.m_player.destroy && this.m_player.destroy();
              } catch (e) {
              } finally {
                this.m_player = null;
              }
          }
          BindPlayerContainer(e) {
            this.m_playerContainer != e &&
              ((this.m_playerContainer = e),
              this.DestroyPlayer(),
              this.m_playerContainer && h(this.OnYoutubeScriptsReady));
          }
          OnYoutubeScriptsReady() {
            this.CreatePlayer(this.props);
          }
          CreatePlayer(e) {
            if ((this.DestroyPlayer(), !this.m_playerContainer)) return;
            const t = !1 === e.autoplay ? 0 : 1,
              n = !0 === e.showInfo ? 1 : 0,
              i = !0 === e.controls ? 1 : 0,
              o = !0 === e.showFullscreenBtn ? 1 : 0,
              r = !0 === e.playsInline ? 1 : 0;
            let a = {
                width: void 0 !== e.width ? String(e.width) : void 0,
                height: void 0 !== e.height ? String(e.height) : void 0,
                videoId: e.video,
                playerVars: {
                  autoplay: t,
                  showinfo: n,
                  autohide: 1,
                  fs: o,
                  modestbranding: 1,
                  rel: 0,
                  playsinline: r,
                  iv_load_policy: 3,
                  controls: i,
                  start: e.startSeconds,
                },
                events: {
                  onReady: this.OnPlayerReady,
                  onStateChange: this.OnPlayerStateChange,
                  onError: this.OnError,
                },
              },
              s = this.m_playerContainer.firstElementChild;
            (this.m_bPlayerReady = !1), (this.m_player = new YT.Player(s, a));
          }
          OnPlayerReady(e) {
            if (((this.m_bPlayerReady = !0), this.props.onVideoInfoChanged)) {
              let e = this.m_player.getVideoData(),
                t = { strAuthor: "", strTitle: "", strVideoID: "" };
              e.author && (t.strAuthor = e.author),
                e.title && (t.strTitle = e.title),
                e.video_id && (t.strVideoID = e.video_id),
                this.props.onVideoInfoChanged(t);
            }
            this.props.width &&
              this.props.height &&
              this.m_player.setSize(this.props.width, this.props.height),
              this.props.autoplay && this.m_player.playVideo(),
              this.props.onPlayerReady && this.props.onPlayerReady();
          }
          OnPlayerStateChange(e) {
            switch (e.data) {
              case YT.PlayerState.UNSTARTED:
                break;
              case YT.PlayerState.BUFFERING:
                this.props.onBuffering && this.props.onBuffering();
                break;
              case YT.PlayerState.PLAYING:
                this.props.onPlaying && this.props.onPlaying();
                break;
              case YT.PlayerState.PAUSED:
                this.props.onPaused && this.props.onPaused();
                break;
              case YT.PlayerState.ENDED:
                this.props.onMovieEnd && this.props.onMovieEnd();
            }
          }
          OnError(e) {
            console.log("Youtube: Playback failed", e),
              this.props.onError && this.props.onError(e);
          }
          OnPlayerLeftView() {
            this.props.autopause &&
              this.m_player &&
              this.m_bPlayerReady &&
              this.m_player.pauseVideo();
          }
          PlayVideo(e) {
            this.m_player &&
              this.m_bPlayerReady &&
              (e && this.m_player.seekTo(0, !0), this.m_player.playVideo());
          }
          render() {
            const e = r.createElement(
              "div",
              {
                key: this.m_strPlayerID,
                ref: this.BindPlayerContainer,
                className: (0, c.A)("YoutubePlayer", this.props.classnames),
              },
              r.createElement(m.t, { className: "YoutubePlayerThrobber" }),
            );
            return this.props.autopause
              ? r.createElement(s.Y, { onLeave: this.OnPlayerLeftView }, e)
              : e;
          }
        }
        (0, o.Cg)([l.oI], _.prototype, "BindPlayerContainer", null),
          (0, o.Cg)([l.oI], _.prototype, "OnYoutubeScriptsReady", null),
          (0, o.Cg)([l.oI], _.prototype, "CreatePlayer", null),
          (0, o.Cg)([l.oI], _.prototype, "OnPlayerReady", null),
          (0, o.Cg)([l.oI], _.prototype, "OnPlayerStateChange", null),
          (0, o.Cg)([l.oI], _.prototype, "OnError", null),
          (0, o.Cg)([l.oI], _.prototype, "OnPlayerLeftView", null),
          (0, o.Cg)([l.oI], _.prototype, "PlayVideo", null);
      },
      61305: (e, t, n) => {
        "use strict";
        n.d(t, { m: () => a });
        var i = n(83957),
          o = n.n(i),
          r = n(63696);
        function a(e) {
          const t = r.useRef(o().CancelToken.source());
          return (
            r.useEffect(() => {
              const n = t.current;
              return () => n.cancel(e ? `${e}: unmounting` : "unmounting");
            }, [e]),
            t.current
          );
        }
      },
      51860: (e, t, n) => {
        "use strict";
        n.d(t, { D0: () => o, Fg: () => a, LD: () => s, xr: () => i });
        const i = { x: "y", y: "x" };
        function o() {
          return { x: 0, y: 0 };
        }
        function r(e, t) {
          return e.x * t.x + e.y * t.y;
        }
        function a(e, t) {
          return { x: t.x - e.x, y: t.y - e.y };
        }
        function s(e, t) {
          const n = a(e, t);
          return Math.sqrt(r(n, n));
        }
      },
      67520: (e, t, n) => {
        "use strict";
        n.d(t, { JV: () => r, S2: () => o });
        var i = n(50622);
        class o {
          m_options;
          m_msStart;
          m_msEnd;
          m_bActive = !1;
          m_fnBoundAnimationFunc = void 0;
          m_window;
          constructor(e, t) {
            (this.m_window = e), (this.m_options = { timing: "sine", ...t });
          }
          Start() {
            let e;
            switch (
              ((this.m_msStart = performance.now()),
              (this.m_msEnd = this.m_msStart + this.m_options.msDuration),
              this.m_options.timing)
            ) {
              case "linear":
                e = function (e) {
                  return e;
                };
                break;
              case "cubic-in-out":
                e = function (e) {
                  return e < 0.5
                    ? 4 * e * e * e
                    : (e - 1) * (2 * e - 2) * (2 * e - 2) + 1;
                };
                break;
              default:
                e = function (e) {
                  return 0.5 - Math.cos(e * Math.PI) / 2;
                };
            }
            (this.m_bActive = !0),
              (this.m_fnBoundAnimationFunc = this.OnInterval.bind(this, e)),
              this.m_window.requestAnimationFrame(this.m_fnBoundAnimationFunc);
          }
          BIsActive() {
            return this.m_bActive;
          }
          End() {
            if (this.m_bActive) {
              try {
                this.Update(1);
              } catch {}
              this.ClearInterval(), this.FireOnComplete();
            }
          }
          FireOnComplete() {
            this.m_options.onComplete && this.m_options.onComplete();
          }
          Cancel() {
            this.m_bActive = !1;
          }
          OnInterval(e) {
            if (!this.m_bActive) return;
            let t = performance.now() - this.m_msStart;
            if (t >= this.m_options.msDuration) return void this.End();
            let n = t / this.m_options.msDuration;
            try {
              this.Update(e(n));
            } catch {}
            this.m_window.requestAnimationFrame(this.m_fnBoundAnimationFunc);
          }
          ClearInterval() {
            this.m_bActive = !1;
          }
        }
        class r extends o {
          m_object;
          m_propTargets;
          m_props = {};
          constructor(e, t, n) {
            super("ownerDocument" in e ? i.qf(e) : e, n),
              (this.m_object = e),
              (this.m_propTargets = t);
          }
          Start() {
            this.m_props = {};
            for (let e in this.m_propTargets) {
              let t = parseFloat(this.m_object[e]) || 0,
                n = this.m_propTargets[e];
              t != n && (this.m_props[e] = { start: t, end: n });
            }
            super.Start();
          }
          Update(e) {
            for (let t in this.m_props) {
              let n = this.m_props[t],
                i = n.start + (n.end - n.start) * e;
              this.m_object[t] = i;
            }
          }
        }
      },
      77765: (e, t, n) => {
        "use strict";
        function i(e, t, ...n) {
          try {
            console.assert
              ? 0 == n.length
                ? console.assert(!!e, t)
                : console.assert(!!e, t, ...n)
              : e || console.warn(t, ...n);
          } catch (e) {}
        }
        function o(e, t, ...n) {
          i(!1, t, ...n);
        }
        n.d(t, { w: () => i, z: () => o });
      },
      10672: (e, t, n) => {
        "use strict";
        n.d(t, { H: () => a });
        var i = n(83957),
          o = n.n(i),
          r = n(45518);
        function a(e) {
          if (o().isCancel(e))
            return { strErrorMsg: "Action Cancelled:" + e, errorCode: 52 };
          if (
            void 0 !== e.response &&
            e.response.data &&
            "object" == typeof e.response.data
          ) {
            if ("msg" in e.response.data)
              return {
                strErrorMsg: e.response.data.msg,
                errorCode: e.response.data.success,
              };
            if ("err_msg" in e.response.data)
              return {
                strErrorMsg: e.response.data.err_msg,
                errorCode: e.response.data.success,
              };
            if ("message" in e.response.data)
              return {
                strErrorMsg: e.response.data.message,
                errorCode: e.response.data.success,
              };
            if ("success" in e.response.data)
              return {
                strErrorMsg: "error code: " + e.response.data.success,
                errorCode: e.response.data.success,
              };
          } else if ("object" == typeof e.data) {
            if ("msg" in e.data)
              return { strErrorMsg: e.data.msg, errorCode: e.data.success };
            if ("err_msg" in e.data)
              return { strErrorMsg: e.data.err_msg, errorCode: e.data.success };
            if ("message" in e.data)
              return { strErrorMsg: e.data.message, errorCode: e.data.success };
            if ("success" in e.data)
              return {
                strErrorMsg: "error code: " + e.data.success,
                errorCode: e.data.success,
              };
          } else {
            if (void 0 !== e.success && void 0 !== e.msg)
              return { strErrorMsg: e.msg, errorCode: e.success };
            if (void 0 !== e.success && void 0 !== e.message)
              return { strErrorMsg: e.message, errorCode: e.success };
            if (void 0 !== e.success && void 0 !== e.err_msg)
              return { strErrorMsg: e.err_msg, errorCode: e.success };
            if ("string" == typeof e && e.length > 1024)
              console.groupCollapsed(
                "GetMsgAndErrorCodeFromResponse cannot parse: ",
              ),
                console.warn(e),
                console.groupEnd();
            else {
              if ("object" == typeof e && e instanceof r.w)
                return {
                  strErrorMsg: "" + e.GetErrorMessage(),
                  errorCode: e.GetEResult(),
                };
              console.warn("GetMsgAndErrorCodeFromResponse cannot parse: ", e);
            }
          }
          return "object" == typeof e && "status" in e
            ? {
                strErrorMsg:
                  "Unknown Error: " + e + "\nStatus Code:" + e.status,
                errorCode: 2,
              }
            : { strErrorMsg: "Unknown Error: " + e, errorCode: 2 };
        }
      },
      9907: (e, t, n) => {
        "use strict";
        n.d(t, { Ji: () => l, LU: () => s, RR: () => c, lu: () => a.l });
        var i = n(34629),
          o = n(37779),
          r = n(69450),
          a = n(10665);
        class s {
          m_schTimer;
          m_fnCallback;
          Schedule(e, t) {
            this.IsScheduled() && this.Cancel(),
              (this.m_fnCallback = t),
              (this.m_schTimer = window.setTimeout(this.ScheduledInternal, e));
          }
          IsScheduled() {
            return void 0 !== this.m_schTimer;
          }
          Cancel() {
            this.m_schTimer &&
              (clearTimeout(this.m_schTimer), (this.m_schTimer = void 0));
          }
          ScheduledInternal() {
            this.m_schTimer = void 0;
            const e = this.m_fnCallback;
            (this.m_fnCallback = void 0), e?.();
          }
        }
        (0, i.Cg)([r.o], s.prototype, "ScheduledInternal", null);
        class l {
          m_rgListeners = [];
          AddEventListener(e, t, n) {
            e.addEventListener(t, n),
              this.m_rgListeners.push({ element: e, type: t, listener: n });
          }
          Unregister() {
            for (const e of this.m_rgListeners)
              e.element.removeEventListener(e.type, e.listener);
            this.m_rgListeners = [];
          }
        }
        async function c(e) {
          const t = [],
            n = Object.keys(e);
          n.forEach((n) => t.push(e[n]));
          return (await Promise.all(t)).reduce(
            (e, t, i) => ((e[n[i]] = t), e),
            {},
          );
        }
        (0, i.Cg)(
          [r.o],
          class {
            m_vecCallbacks = [];
            Push(e) {
              this.m_vecCallbacks.push(e);
            }
            PushArrayRemove(e, t) {
              this.m_vecCallbacks.push(() => o.x9(e, t));
            }
            Unregister() {
              for (const e of this.m_vecCallbacks) e();
              this.m_vecCallbacks = [];
            }
            GetUnregisterFunc() {
              return this.Unregister;
            }
          }.prototype,
          "Unregister",
          null,
        );
      },
      77171: (e, t, n) => {
        "use strict";
        function i(...e) {
          return e.reduce(
            (e, t) =>
              t
                ? "string" == typeof t
                  ? e
                    ? `${e} ${t}`
                    : t
                  : "object" == typeof t
                    ? e
                      ? `${e} ${o(t)}`
                      : o(t)
                    : e
                : e,
            "",
          );
        }
        function o(e) {
          return Object.keys(e).reduce(
            (t, n) => (e[n] ? (t ? `${t} ${n}` : n) : t),
            "",
          );
        }
        n.d(t, { A: () => i });
      },
      90556: (e, t, n) => {
        "use strict";
        function i(e) {
          if (!r() || !window.document.cookie) return null;
          const t = document.cookie.match("(^|; )" + e + "=([^;]*)");
          return t && t[2] ? decodeURIComponent(t[2]) : null;
        }
        function o(e, t, n, i) {
          if (!r()) return;
          i || (i = "/");
          let o = "";
          if (void 0 !== n && n) {
            const e = new Date();
            e.setTime(e.getTime() + 864e5 * n),
              (o = "; expires=" + e.toUTCString());
          }
          document.cookie =
            encodeURIComponent(e) +
            "=" +
            encodeURIComponent(t) +
            o +
            ";path=" +
            i;
        }
        function r() {
          return !!window.document;
        }
        n.d(t, { VY: () => i, kI: () => r, lc: () => o });
      },
      7105: (e, t, n) => {
        "use strict";
        function i(e, t = !0) {
          return function (n, i, o) {
            const r = o.value;
            o.value = function (...n) {
              let o = this[i + "_DebounceProperties"];
              void 0 === o &&
                (o = this[i + "_DebounceProperties"] =
                  { hTimer: void 0, nPending: 0 }),
                void 0 === o.hTimer
                  ? (t ? r.apply(this, n) : (o.nPending += 1),
                    (o.hTimer = window.setInterval(() => {
                      o.nPending > 0
                        ? (r.apply(this, n), (o.nPending = 0))
                        : (window.clearInterval(o.hTimer), (o.hTimer = void 0));
                    }, e)))
                  : (o.nPending += 1);
            };
          };
        }
        n.d(t, { s: () => i });
      },
      50622: (e, t, n) => {
        "use strict";
        function i(e) {
          return null != e && void 0 !== e.focus;
        }
        function o(e) {
          if (!(e.clientX || e.clientY || e.screenX || e.screenY)) return !0;
          if (e.relatedTarget) return !r(e.currentTarget, e.relatedTarget);
          {
            const t = e.currentTarget.getBoundingClientRect();
            return (
              (e.clientX <= t.left ||
                e.clientX >= t.right ||
                e.clientY <= t.top ||
                e.clientY >= t.bottom) &&
              (console.log(
                `${e.clientX} <= ${t.left} || ${e.clientX} >= ${t.right} ||\n\t\t\t\t${e.clientY} <= ${t.top} || ${e.clientY} >= ${t.bottom}`,
              ),
              !0)
            );
          }
        }
        function r(e, t) {
          let n = t;
          for (; n; ) {
            if (
              (n.parentNode?.nodeType == Node.DOCUMENT_FRAGMENT_NODE &&
                (n = n.parentNode.host),
              n == e)
            )
              return !0;
            n = n.parentElement;
          }
          return !1;
        }
        function a(e, t) {
          let n = t;
          for (; n; ) if (((n = n.parentElement), n == e)) return !0;
          return !1;
        }
        function s(e) {
          const t = window.getSelection();
          if (!t) return !1;
          let n = 0;
          for (let i = 0; i < t.rangeCount; i++) {
            const o = t.getRangeAt(i);
            if (o.startOffset == o.endOffset) continue;
            r(e, o.commonAncestorContainer) && n++;
          }
          return t.rangeCount > 0 && t.rangeCount == n;
        }
        function l(e, t, n) {
          let i = 0,
            o = 0;
          return (
            t < e.left ? (i = e.left - t) : t > e.right && (i = t - e.right),
            n < e.top ? (o = e.top - n) : n > e.bottom && (o = n - e.bottom),
            Math.sqrt(i * i + o * o)
          );
        }
        function c(e, t) {
          let n = 0,
            i = 0;
          return (
            t.right < e.left
              ? (n = e.left - t.right)
              : t.left > e.right && (n = t.left - e.right),
            t.bottom < e.top
              ? (i = e.top - t.bottom)
              : t.top > e.bottom && (i = t.top - e.bottom),
            Math.sqrt(n * n + i * i)
          );
        }
        function m(e, t) {
          return {
            top: e.screenTop + t.top,
            bottom: e.screenTop + t.bottom,
            left: e.screenLeft + t.left,
            right: e.screenLeft + t.right,
          };
        }
        function d(e) {
          return e.right - e.left;
        }
        function u(e) {
          return e.bottom - e.top;
        }
        function h(e) {
          let t = 1,
            n = e;
          for (; null != n && "HTML" != n.tagName; ) {
            const e = getComputedStyle(n);
            if (e.zoom) {
              const n = Number.parseFloat(e.zoom);
              isNaN(n) || (t *= n);
            }
            n = n.parentElement;
          }
          return t;
        }
        function p(e) {
          let t;
          return (
            e &&
              i(e.currentTarget) &&
              (t = e.currentTarget.ownerDocument.defaultView),
            t
          );
        }
        function _(e) {
          let t;
          return e && (t = e.ownerDocument.defaultView), t;
        }
        function g(e) {
          let t = window.document;
          try {
            t = window.top.document;
          } catch (e) {}
          const n = t.createElement("textarea");
          (n.textContent = e),
            (n.style.position = "fixed"),
            t.body.appendChild(n),
            n.select();
          try {
            t.execCommand("copy");
          } catch (e) {
            console.warn("Copy to clipboard failed.", e);
          } finally {
            t.body.removeChild(n);
          }
        }
        function C(e) {
          const t = "steam://openurl/";
          e.startsWith(t) && (e = e.slice(16)), g(e);
        }
        function f(e) {
          if (!e) return null;
          if (0 == e.clipboardData.files.length) return null;
          return e.clipboardData.types.some(
            (e) => ("text" == e || e.startsWith("text/")) && "text/html" !== e,
          )
            ? null
            : e.clipboardData.files[0];
        }
        function S(e) {
          const t = e.ownerDocument;
          return (
            t.fullscreen ||
            t.webkitIsFullScreen ||
            t.mozFullScreen ||
            t.msFullscreenElement
          );
        }
        function v(e, t) {
          const n = e;
          n.requestFullscreen
            ? n.requestFullscreen()
            : n.webkitRequestFullscreen
              ? n.webkitRequestFullscreen()
              : t && t.webkitSetPresentationMode
                ? t.webkitSetPresentationMode("fullscreen")
                : n.mozRequestFullScreen
                  ? n.mozRequestFullScreen()
                  : n.msRequestFullscreen && n.msRequestFullscreen();
        }
        function b(e) {
          const t = e.ownerDocument;
          t.cancelFullscreen
            ? t.cancelFullscreen()
            : t.webkitCancelFullScreen
              ? t.webkitCancelFullScreen()
              : t.mozCancelFullScreen
                ? t.mozCancelFullScreen()
                : t.msExitFullscreen && t.msExitFullscreen();
        }
        function I(e) {
          S(e) ? b(e) : v(e);
        }
        n.d(t, {
          MS: () => b,
          NO: () => o,
          No: () => d,
          OG: () => g,
          Oe: () => D,
          SY: () => u,
          TN: () => a,
          UQ: () => l,
          Vr: () => I,
          WC: () => s,
          YQ: () => C,
          _f: () => y,
          a_: () => h,
          bZ: () => c,
          gr: () => f,
          id: () => r,
          kD: () => i,
          lc: () => A,
          pE: () => w,
          pd: () => m,
          qf: () => _,
          tl: () => v,
          uX: () => p,
          ww: () => S,
          yU: () => E,
        });
        function w(e, t) {
          const n = e;
          return (
            (n.lastModifiedDate = new Date()),
            (n.name = t || Date.now().toString()),
            e
          );
        }
        function y(e, t) {
          let n = e?.parentElement;
          for (; n; ) {
            if (i(n)) {
              if (!t || "x" == t) {
                const e = window.getComputedStyle(n);
                if (
                  "scroll" == e.overflowX ||
                  "auto" == e.overflowX ||
                  "fixed" == e.position
                )
                  break;
              }
              if (!t || "y" == t) {
                const e = window.getComputedStyle(n);
                if (
                  "scroll" == e.overflowY ||
                  "auto" == e.overflowY ||
                  "fixed" == e.position
                )
                  break;
              }
            }
            n = n.parentElement;
          }
          return i(n) ? n : null;
        }
        function E() {
          return (function (e) {
            const t = {};
            return (
              e.querySelectorAll('link[rel="stylesheet"]').forEach((e) => {
                t[e.href] = e;
              }),
              t
            );
          })(document);
        }
        function D(e, t) {
          A(e.document, t, !0);
        }
        function A(e, t, n) {
          const i = Object.assign({}, t),
            o = e.getElementsByTagName("head")[0],
            r = o.getElementsByTagName("link"),
            a = r.length;
          for (let e = 0; e < a; ++e) {
            const t = r[e];
            i[t.href] ? delete i[t.href] : n && t.parentNode?.removeChild(t);
          }
          const s = [];
          for (const t in i) {
            const n = i[t],
              o = e.createElement("link");
            for (let e = 0; e < n.attributes.length; e++) {
              const t = n.attributes.item(e);
              o.setAttribute(t.name, t.value);
            }
            s.push(o);
          }
          return o.prepend(...s), s;
        }
      },
      74002: (e, t, n) => {
        "use strict";
        n.d(t, {
          $w: () => c.$w,
          $z: () => c.$z,
          A0: () => m,
          Hq: () => c.Hq,
          NT: () => C,
          PP: () => u,
          TW: () => c.TW,
          Yp: () => _,
          _l: () => c._l,
          bi: () => S,
          cc: () => c.cc,
          l4: () => v,
          lQ: () => c.lQ,
          oW: () => h,
          pf: () => b,
          we: () => d,
        });
        var i = n(63696),
          o = n(56132),
          r = n(50669),
          a = n(17070),
          s = n(37779),
          l = n(9907),
          c = n(21400);
        class m {
          m_mapTokens = new Map();
          m_mapFallbackTokens = new Map();
          m_cbkTokensChanged = new l.lu();
          m_rgLocalesToUse;
          static sm_ErrorReportingStore;
          static InstallErrorReportingStore(e) {
            this.sm_ErrorReportingStore = e;
          }
          static GetLanguageFallback(e) {
            return "sc_schinese" === e ? "schinese" : "english";
          }
          static GetELanguageFallback(e) {
            return 29 === e ? 6 : 0;
          }
          static IsELanguageValidInRealm(e, t) {
            return (
              t ===
              (29 === e ? r.TU.k_ESteamRealmChina : r.TU.k_ESteamRealmGlobal)
            );
          }
          static GetLanguageListForRealms(e) {
            const t = new Array();
            for (let n = 0; n < 31; n++)
              for (const i of e)
                if (this.IsELanguageValidInRealm(n, i)) {
                  t.push(n);
                  break;
                }
            return t;
          }
          InitFromObjects(e, t, n, i, o) {
            o || this.m_mapTokens.clear();
            const r = { ...(n || {}), ...e },
              a = { ...(i || {}), ...(t || {}) };
            this.AddTokens(r, a), this.m_cbkTokensChanged.Dispatch();
          }
          InitDirect(e, t) {
            this.m_mapTokens.clear(),
              this.m_mapFallbackTokens.clear(),
              this.AddTokens(e, t),
              this.m_cbkTokensChanged.Dispatch();
          }
          AddTokens(e, t) {
            Object.keys(e).forEach((t) => {
              this.m_mapTokens.set(t, e[t]);
            }),
              t &&
                Object.keys(t).forEach((e) => {
                  this.m_mapTokens.has(e) || this.m_mapTokens.set(e, t[e]),
                    this.m_mapFallbackTokens.set(e, t[e]);
                });
          }
          GetTokensChangedCallbackList() {
            return this.m_cbkTokensChanged;
          }
          GetPreferredLocales() {
            return this.m_rgLocalesToUse
              ? this.m_rgLocalesToUse
              : navigator && navigator.languages
                ? navigator.languages
                : ["en-US"];
          }
          GetELanguageFallbackOrder(e = null) {
            let t = new Array();
            if (
              (t.push((0, o.sf)(a.TS.LANGUAGE)),
              (a.TS.SUPPORTED_LANGUAGES || []).forEach((e) => {
                e.value != a.TS.LANGUAGE && t.push((0, o.sf)(e.value));
              }),
              e)
            ) {
              m.GetLanguageListForRealms(e).forEach((e) => {
                -1 == t.indexOf(e) && t.push(e);
              });
            }
            return t;
          }
          SetPreferredLocales(e) {
            this.m_rgLocalesToUse = e;
          }
          BLooksLikeToken(e) {
            return !!e && e.length > 0 && "#" == e.charAt(0);
          }
          LocalizeIfToken(e, t) {
            return this.BLooksLikeToken(e) ? this.LocalizeString(e, t) : e;
          }
          LocalizeString(e, t) {
            if (!this.BLooksLikeToken(e)) return;
            let n = this.m_mapTokens.get(e.substring(1));
            if (void 0 !== n) return n;
            !t &&
              m.sm_ErrorReportingStore &&
              m.sm_ErrorReportingStore.ReportError(
                new Error(
                  `Unable to find localization token '${e}' for language '${a.TS.LANGUAGE}', ${this.m_mapTokens.size} tokens in map`,
                ),
                { bIncludeMessageInIdentifier: !0 },
              );
          }
          LocalizeStringFromFallback(e) {
            if (!e || 0 == e.length || "#" != e.charAt(0)) return;
            let t = this.m_mapFallbackTokens.get(e.substring(1));
            return void 0 !== t ? t : void 0;
          }
          static GetTokenWithFallback(e) {
            if (!e) return "";
            const t = (0, o.sf)(a.TS.LANGUAGE),
              n = e.find((e) => e.language == t);
            if (n) return n.localized_string;
            const i = m.GetELanguageFallback(t),
              r = e.find((e) => e.language == i);
            return r?.localized_string ?? "";
          }
          static BHasTokenLanguage(e, t) {
            return Boolean(t.find((t) => t.language == e));
          }
        }
        function d(e, ...t) {
          let n = b.LocalizeString(e);
          return void 0 === n ? e : g(n, ...t);
        }
        function u(e, ...t) {
          let n = b.LocalizeString(e);
          if (void 0 === n) return e;
          let o,
            r = [],
            a = /(.*?)%(\d+)\$s/g,
            s = 0;
          for (; (o = a.exec(n)); ) {
            (s += o[0].length), r.push(o[1]);
            let e = parseInt(o[2]);
            e >= 1 && e <= t.length && r.push(t[e - 1]);
          }
          return r.push(n.substr(s)), i.createElement(i.Fragment, null, ...r);
        }
        function h(e, ...t) {
          let n = b.LocalizeIfToken(e);
          return void 0 === n ? e : p(n, ...t);
        }
        function p(e, ...t) {
          let n,
            o = [],
            r = new RegExp(/(.*?)<(\d+)>(.*?)<\/(\2)>/, "gs"),
            a = 0;
          for (; (n = r.exec(e)); ) {
            (a += n[0].length), o.push(n[1]);
            let e = parseInt(n[2]),
              r = n[3] || "",
              s = p(r, ...t),
              l = (e >= 1 && e <= t.length ? t[e - 1] : null)
                ? i.cloneElement(t[e - 1], {}, r ? s : null)
                : r;
            o.push(l);
          }
          return o.push(e.substr(a)), i.createElement(i.Fragment, null, ...o);
        }
        function _(e, t, ...n) {
          return 1 === t || "1" === t
            ? d(e, t, ...n)
            : d(e + "_Plural", t, ...n);
        }
        function g(e, ...t) {
          return 0 == t.length
            ? e
            : (e = e.replace(/%(?:(\d+)\$)?s/g, function (e, n) {
                if (n <= t.length && n >= 1) {
                  let e = t[n - 1];
                  return String(null == e ? "" : e);
                }
                return e;
              }));
        }
        class C {
          static Set(e, t, n) {
            if (e.length <= t) {
              if (t >= 31) return e;
              e = (0, s.$Y)(e, t + 1, null);
            }
            return (e[t] = n), e;
          }
          static Get(e, t) {
            return (e && e.length > t && e[t]) || "";
          }
          static GetWithFallback(e, t) {
            if (e) {
              return C.Get(e, t) || C.Get(e, m.GetELanguageFallback(t));
            }
            return null;
          }
        }
        const f = {
            english: "en",
            german: "de",
            french: "fr",
            italian: "it",
            korean: "ko",
            latam: "es-419",
            spanish: "es",
            schinese: "zh-cn",
            tchinese: "zh-tw",
            russian: "ru",
            thai: "th",
            japanese: "ja",
            brazilian: "pt-br",
            portuguese: "pt",
            polish: "pl",
            danish: "da",
            dutch: "nl",
            finnish: "fi",
            norwegian: "no",
            swedish: "sv",
            hungarian: "hu",
            czech: "cs",
            romanian: "ro",
            turkish: "tr",
            arabic: "ar",
            bulgarian: "bg",
            greek: "el",
            ukrainian: "uk",
            vietnamese: "vi",
            indonesian: "id",
            sc_schinese: "zh-cn",
            koreana: "ko",
          },
          S = {
            "en-US": 0,
            "de-DE": 1,
            "fr-FR": 2,
            "it-IT": 3,
            "ko-KR": 4,
            "es-ES": 5,
            "zh-CH": 6,
            "zh-CN": 7,
            "ru-RU": 8,
            "th-TH": 9,
            "ja-JP": 10,
            "pt-PT": 11,
            "pl-PL": 12,
            "da-DK": 13,
            "nl-NL": 14,
            "fi-FI": 15,
            "nb-NO": 16,
            "sv-SE": 17,
            "hu-HU": 18,
            "cs-CZ": 19,
            "ro-RO": 20,
            "tr-TR": 21,
            "pt-BR": 22,
            "bg-BG": 23,
            "el-GR": 24,
            "ar-SA": 25,
            "uk-UA": 26,
            "es-419": 27,
            "vi-VN": 28,
            "id-ID": 30,
          };
        function v() {
          return f[a.TS.LANGUAGE] || null;
        }
        const b = new m();
        window.LocalizationManager = b;
      },
      21400: (e, t, n) => {
        "use strict";
        n.d(t, {
          $w: () => v,
          $z: () => c,
          Hq: () => s,
          KC: () => d,
          TW: () => l,
          _l: () => h,
          cc: () => b,
          dt: () => T,
          lQ: () => p,
          qZ: () => M,
          sq: () => y,
          u6: () => E,
          vl: () => w,
        });
        var i,
          o = n(59351),
          r = n(74002),
          a = n(28574);
        function s(e, t, n) {
          let o;
          if ("boolean" == typeof t) {
            o = {
              eSuffix: t ? i.None : i.Ago,
              bForceSingleUnits: n,
              bHighGranularity: !1,
            };
          } else
            o = {
              eSuffix: i.Ago,
              bForceSingleUnits: !1,
              bHighGranularity: !1,
              ...t,
            };
          let s = "#TimeInterval_";
          o.eSuffix == i.Ago
            ? (s = "#TimeSince_")
            : o.eSuffix == i.Remaining && (s = "#TimeRemaining_");
          let l = (e) => Math.floor(e);
          if (
            (o.bAllowDecimal && (l = (e) => Math.round(10 * e) / 10),
            e >= 2 * a.Kp.PerYear)
          )
            return (0, r.we)(s + "XYears", l(e / a.Kp.PerYear));
          if (e >= a.Kp.PerYear)
            return (e -= a.Kp.PerYear) >= 2 * a.Kp.PerMonth &&
              !o.bForceSingleUnits
              ? (0, r.we)(s + "1YearXMonths", l(e / a.Kp.PerMonth))
              : (0, r.we)(s + "1Year");
          if (e >= 2 * a.Kp.PerMonth)
            return (0, r.we)(s + "XMonths", l(e / a.Kp.PerMonth));
          if (e >= 2 * a.Kp.PerWeek)
            return (0, r.we)(s + "XWeeks", l(e / a.Kp.PerWeek));
          if (e >= a.Kp.PerWeek)
            return (0, r.we)(s + "1Week", l(e / a.Kp.PerWeek));
          if (e >= 2 * a.Kp.PerDay)
            return (0, r.we)(s + "XDays", l(e / a.Kp.PerDay));
          if (e >= a.Kp.PerDay)
            return (e -= a.Kp.PerDay) >= 2 * a.Kp.PerHour &&
              !o.bForceSingleUnits
              ? (0, r.we)(s + "1DayXHours", l(e / a.Kp.PerHour))
              : (0, r.we)(s + "1Day");
          if (e >= 2 * a.Kp.PerHour)
            return (0, r.we)(s + "XHours", l(e / a.Kp.PerHour));
          if (e >= a.Kp.PerHour)
            return (e -= a.Kp.PerHour) >= 2 * a.Kp.PerMinute &&
              !o.bForceSingleUnits
              ? (0, r.we)(s + "1HourXMinutes", l(e / a.Kp.PerMinute))
              : (0, r.we)(s + "1Hour");
          if (e >= 2 * a.Kp.PerMinute) {
            const t = Math.floor(e / a.Kp.PerMinute),
              n = e % a.Kp.PerMinute;
            return o.bHighGranularity && 0 != n
              ? 1 == n
                ? (0, r.we)(s + "XMinutes1Second", t)
                : (0, r.we)(s + "XMinutesXSeconds", t, n)
              : (0, r.we)(s + "XMinutes", l(e / a.Kp.PerMinute));
          }
          if (e >= a.Kp.PerMinute) {
            const t = e % a.Kp.PerMinute;
            return o.bHighGranularity && 0 != t
              ? 1 == t
                ? (0, r.we)(s + "1Minute1Second")
                : (0, r.we)(s + "1MinuteXSeconds", t)
              : (0, r.we)(s + "1Minute");
          }
          return o.bHighGranularity
            ? 1 == e
              ? (0, r.we)(s + "1Second")
              : (0, r.we)(s + "XSeconds", e)
            : (0, r.we)(s + "LessThanAMinute");
        }
        function l(e, t, n) {
          let i;
          i =
            void 0 === t || !0 === t || !1 === t
              ? { weekday: n ? "long" : "short", year: t ? void 0 : "numeric" }
              : t;
          let o = new Date(1e3 * e);
          const a = {
            weekday: "short",
            month: "long",
            day: "numeric",
            year: "numeric",
            ...i,
          };
          return o.toLocaleDateString(r.pf.GetPreferredLocales(), a);
        }
        function c(e, t) {
          const n = { year: "numeric", month: "short", day: "numeric", ...t };
          return new Date(1e3 * e).toLocaleDateString(
            r.pf.GetPreferredLocales(),
            n,
          );
        }
        !(function (e) {
          (e[(e.None = 0)] = "None"),
            (e[(e.Ago = 1)] = "Ago"),
            (e[(e.Remaining = 2)] = "Remaining");
        })(i || (i = {}));
        const m = new Map();
        function d(e, t, n) {
          const i = new Date(1e3 * e),
            o = r.pf.GetPreferredLocales(),
            a = {
              ...(t?.bForce24HourClock ||
              (function (e) {
                let t = m.get(e);
                if (!0 === t || !1 === t) return t;
                const n = new Date();
                return (
                  n.setHours(15),
                  (t =
                    n.toLocaleTimeString(e, { hour: "numeric" }) ==
                    n.toLocaleTimeString(e, { hour: "numeric", hour12: !1 })),
                  m.set(e, t),
                  t
                );
              })(o[0])
                ? { hour: "numeric", minute: "2-digit", hourCycle: "h23" }
                : { hour: "numeric", minute: "2-digit" }),
              ...n,
            };
          return i.toLocaleTimeString(o, a);
        }
        const u = new Map();
        function h(e, t, n = !0, i = !0, a = !1) {
          const s = new Date(),
            l = new Date(1e3 * e);
          if (l.getFullYear() != s.getFullYear()) return c(e);
          i && o.tB(new Date().setHours(24, 0, 0, 0) - s.getTime());
          const m = new Date();
          if ((m.setHours(0, 0, 0, 0), n))
            if (l >= m) {
              if ((m.setDate(m.getDate() + 1), l < m))
                return (0, r.we)("#Time_Today");
              if ((m.setDate(m.getDate() + 1), l < m))
                return (0, r.we)("#Time_Tomorrow");
            } else if ((m.setDate(m.getDate() - 1), l >= m))
              return (0, r.we)("#Time_Yesterday");
          const d = { month: t ? "long" : "short", day: "numeric" };
          a && (d.weekday = "long");
          const h = l.setHours(0, 0, 0, 0) + d.month;
          let p = u.get(h);
          return (
            p ||
            ((p = l.toLocaleDateString(r.pf.GetPreferredLocales(), d)),
            u.set(h, p),
            p)
          );
        }
        function p(e, t) {
          const n = new Date(1e3 * e),
            i = new Date(),
            s = {
              bGranularFutureTime: !1,
              bGranularTodayTimeOnly: !1,
              bGranularToday: !1,
              bGranularYesterday: !1,
              bGranularWeek: !1,
              bGranularPast: !1,
              bAbbreviateDayOfWeek: !1,
              bForce24HourClock: !1,
              ...t,
            };
          if (n > i) {
            if (!s.bGranularFutureTime)
              return (
                o.tB(n.getTime() - i.getTime()),
                n.getFullYear() == i.getFullYear() ? I(n) : y(n)
              );
            o.tB(new Date().setHours(24, 0, 0, 0) - i.getTime());
            let e = new Date();
            return (
              e.setHours(0, 0, 0, 0),
              e.setDate(e.getDate() + 1),
              n < e
                ? (0, r.we)("#Time_Today")
                : (e.setDate(e.getDate() + 1),
                  n < e
                    ? (0, r.we)("#Time_Tomorrow")
                    : (e.setDate(e.getDate() + 5),
                      n < e ? b(n) : v(n, !0, s.bAbbreviateDayOfWeek)))
            );
          }
          o.tB(new Date().setHours(24, 0, 0, 0) - i.getTime());
          let c = new Date();
          if ((c.setHours(0, 0, 0, 0), n >= c))
            return s.bGranularToday
              ? s.bGranularTodayTimeOnly
                ? d(e, { bForce24HourClock: s.bForce24HourClock })
                : (0, r.we)(
                    "#Time_Today_At",
                    d(e, { bForce24HourClock: s.bForce24HourClock }),
                  )
              : (0, r.we)("#Time_Today");
          if ((c.setDate(i.getDate() - 1), n >= c))
            return s.bGranularYesterday
              ? (0, r.we)(
                  "#Time_Yesterday_At",
                  d(e, { bForce24HourClock: s.bForce24HourClock }),
                )
              : (0, r.we)("#Time_Yesterday");
          c.setDate(i.getDate() - 6);
          const m = new Date(c);
          if (s.bGranularWeek && n >= m)
            return v(n, !1, !s.bAbbreviateDayOfWeek);
          if (s.bGranularPast)
            return (0, r.we)(
              "#Time_Past_At",
              l(e, n.getFullYear() == i.getFullYear(), !s.bAbbreviateDayOfWeek),
              d(e, { bForce24HourClock: s.bForce24HourClock }),
            );
          if (n >= m) return (0, r.we)("#TimeSince_ThisWeek");
          if (
            n.getMonth() == i.getMonth() &&
            n.getFullYear() == i.getFullYear()
          ) {
            const e =
              Math.floor((m.valueOf() - n.valueOf()) / (1e3 * a.Kp.PerWeek)) +
              1;
            return 1 == e
              ? (0, r.we)("#TimeSince_1Week")
              : (0, r.we)("#TimeSince_XWeeks", e);
          }
          return n.getFullYear() == i.getFullYear() ? I(n) : y(n);
        }
        const _ = new Map(),
          g = new Map(),
          C = new Map(),
          f = new Map(),
          S = new Map();
        new Map();
        function v(e, t = !1, n = !0) {
          const i = {
              weekday: n ? "long" : "short",
              day: "numeric",
              month: t ? "long" : "short",
            },
            o = e.setHours(0, 0, 0, 0) + i.weekday + i.month;
          let a = S.get(o);
          return (
            a ||
            ((a = e.toLocaleDateString(r.pf.GetPreferredLocales(), i)),
            S.set(o, a),
            a)
          );
        }
        function b(e) {
          let t = _.get(e.getDay());
          return (
            t ||
            ((t = e.toLocaleDateString(r.pf.GetPreferredLocales(), {
              weekday: "long",
            })),
            _.set(e.getDay(), t),
            t)
          );
        }
        function I(e) {
          let t = g.get(e.getMonth());
          return (
            t ||
            ((t = e.toLocaleDateString(r.pf.GetPreferredLocales(), {
              month: "long",
            })),
            g.set(e.getMonth(), t),
            t)
          );
        }
        function w(e) {
          let t = C.get(e.getFullYear());
          return (
            t ||
            ((t = e.toLocaleDateString(r.pf.GetPreferredLocales(), {
              year: "numeric",
            })),
            C.set(e.getFullYear(), t),
            t)
          );
        }
        function y(e) {
          const t = e.getMonth() + 12 * e.getFullYear();
          let n = f.get(t);
          return (
            n ||
            ((n = e.toLocaleDateString(r.pf.GetPreferredLocales(), {
              month: "long",
              year: "numeric",
            })),
            f.set(t, n),
            n)
          );
        }
        function E(e, t) {
          switch (e.getUTCMonth()) {
            case 0:
            case 1:
            case 2:
              return (0, r.we)(
                t
                  ? "#Time_QuarterOfYear_Expanded_Q1"
                  : "#Time_QuarterOfYear_Q1",
                e.getUTCFullYear(),
              );
            case 3:
            case 4:
            case 5:
              return (0, r.we)(
                t
                  ? "#Time_QuarterOfYear_Expanded_Q2"
                  : "#Time_QuarterOfYear_Q2",
                e.getUTCFullYear(),
              );
            case 6:
            case 7:
            case 8:
              return (0, r.we)(
                t
                  ? "#Time_QuarterOfYear_Expanded_Q3"
                  : "#Time_QuarterOfYear_Q3",
                e.getUTCFullYear(),
              );
            default:
              return (0, r.we)(
                t
                  ? "#Time_QuarterOfYear_Expanded_Q4"
                  : "#Time_QuarterOfYear_Q4",
                e.getUTCFullYear(),
              );
          }
        }
        function D(e, t, n) {
          for (; e.length < t; ) e = n + e;
          return e;
        }
        function A(e) {
          return (
            (void 0 === e || isNaN(e)) && (e = 0),
            {
              hours: Math.floor(e / 3600),
              minutes: Math.floor((e % 3600) / 60),
              seconds: Math.floor(e % 60),
              fraction: e - Math.floor(e),
            }
          );
        }
        function T(e, t, n) {
          let i = e < 0;
          const o = A((e = i ? 0 - e : e)),
            a = o.fraction.toFixed(2).split(".")[1],
            s = t ?? !0;
          let l = !s || "00" == a;
          i &&
            0 == o.hours &&
            0 == o.minutes &&
            0 == o.seconds &&
            l &&
            (i = !1);
          let c = "";
          if (o.hours) {
            const e = o.hours.toString(),
              t = D(o.minutes.toString(), 2, "0"),
              n = D(o.seconds.toString(), 2, "0"),
              i = s
                ? "#Duration_Abbreviation_HourMinuteSecondMillisecond"
                : "#Duration_Abbreviation_HourMinuteSecond";
            c = (0, r.we)(i, e, t, n, a);
          } else if (o.minutes) {
            const e = o.minutes.toString(),
              t = D(o.seconds.toString(), 2, "0"),
              n = s
                ? "#Duration_Abbreviation_MinuteSecondMillisecond"
                : "#Duration_Abbreviation_MinuteSecond";
            c = (0, r.we)(n, e, t, a);
          } else if (o.seconds) {
            const e = o.seconds.toString(),
              t = s
                ? "#Duration_Abbreviation_SecondMillisecond"
                : "#Duration_Abbreviation_Second";
            c = (0, r.we)(t, e, a);
          }
          return (
            i && (c = n ? (0, r.we)("#Duration_WrittenNegation", c) : "-" + c),
            c
          );
        }
        function M(e, t, n) {
          let i = e < 0;
          const o = A((e = i ? 0 - e : e)),
            a = D(o.seconds.toString(), 2, "0"),
            s = o.fraction.toFixed(2).split(".")[1],
            l = t ?? !0;
          let c = !l || "00" == s;
          i &&
            0 == o.hours &&
            0 == o.minutes &&
            0 == o.seconds &&
            c &&
            (i = !1);
          let m = "";
          if (o.hours) {
            const e = D(o.minutes.toString(), 2, "0"),
              t = l
                ? "#Duration_HourMinuteSecondMillisecond"
                : "#Duration_HourMinuteSecond";
            m = (0, r.we)(t, o.hours, e, a, s);
          } else {
            const e = o.minutes.toString(),
              t = l
                ? "#Duration_MinuteSecondMillisecond"
                : "#Duration_MinuteSecond";
            m = (0, r.we)(t, e, a, s);
          }
          return (
            i && (m = n ? (0, r.we)("#Duration_WrittenNegation", m) : "-" + m),
            m
          );
        }
      },
      80354: (e, t, n) => {
        "use strict";
        n.d(t, { Dq: () => r, dm: () => o });
        var i = n(74002);
        function o(e, t, n, o) {
          let r = t;
          r =
            "number" == typeof r
              ? {
                  nDigitsAfterDecimal: t,
                  bUseBinary1K: n || void 0 === n,
                  bValueIsInBytes: !o,
                  bValueIsRate: o,
                  nMinimumDigitsAfterDecimal: 0,
                }
              : {
                  nDigitsAfterDecimal: 2,
                  bUseBinary1K: !0,
                  bValueIsInBytes: !0,
                  bValueIsRate: !1,
                  nMinimumDigitsAfterDecimal: 0,
                  ...r,
                };
          const a = r.bUseBinary1K ? 1024 : 1e3,
            s = a * a,
            l = s * a,
            c = l * a;
          let m,
            d = "";
          e > c
            ? ((m = e / c), (d = "Tera"))
            : e > l
              ? ((m = e / l), (d = "Giga"))
              : e > s
                ? ((m = e / s), (d = "Mega"))
                : e > a
                  ? ((m = e / a), (d = "Kilo"))
                  : (m = e);
          const u =
            "#" +
            d +
            (r.bValueIsInBytes ? "bytes" : "bits") +
            (r.bValueIsRate ? "_PerSecond" : "");
          return (0, i.we)(
            u,
            m.toLocaleString(i.pf.GetPreferredLocales(), {
              minimumFractionDigits: r.nMinimumDigitsAfterDecimal,
              maximumFractionDigits: r.nDigitsAfterDecimal,
            }),
          );
        }
        function r(e) {
          return e ? e.toLocaleString(i.pf.GetPreferredLocales()) : "" + e;
        }
      },
      8805: (e, t, n) => {
        "use strict";
        n.d(t, { fi: () => c, wd: () => l });
        var i,
          o = n(34629),
          r = n(69450),
          a = n(55244),
          s = n(9907);
        !(function (e) {
          (e[(e.Debug = 0)] = "Debug"),
            (e[(e.Info = 1)] = "Info"),
            (e[(e.Warning = 2)] = "Warning"),
            (e[(e.Error = 3)] = "Error");
        })(i || (i = {}));
        class l {
          m_sName;
          m_fnIdGenerator = void 0;
          constructor(e, t) {
            (this.m_sName = e),
              (this.m_fnIdGenerator = t),
              c.Get().RegisterLogName(e);
          }
          Debug(...e) {
            this.Log(i.Debug, ...e);
          }
          Info(...e) {
            this.Log(i.Info, ...e);
          }
          Warning(...e) {
            this.Log(i.Warning, ...e);
          }
          Error(...e) {
            this.Log(i.Error, ...e);
          }
          Assert(e, ...t) {
            e || this.Log(i.Error, "Assertion failed:", ...t);
          }
          IsDebugEnabled() {
            return c.Get().IsDebugLogEnabled(this.m_sName);
          }
          Log(e, ...t) {
            const n = c.Get().IsDebugLogEnabled(this.m_sName);
            if (e == i.Debug && !n) return;
            let o = this.m_sName;
            const r = this.m_fnIdGenerator?.() ?? null;
            null != r && (o += " (" + r + ")");
            m(e, n, c.Get().IncludeBacktraceInLog, o, this.m_sName, ...t);
          }
        }
        (0, o.Cg)([r.o], l.prototype, "Debug", null),
          (0, o.Cg)([r.o], l.prototype, "Info", null),
          (0, o.Cg)([r.o], l.prototype, "Warning", null),
          (0, o.Cg)([r.o], l.prototype, "Error", null),
          (0, o.Cg)([r.o], l.prototype, "Assert", null);
        class c {
          static k_EnabledLogNames_StorageKey = "EnabledWebLogs";
          static k_IncludeBacktraceInLog_StorageKey = "IncludeBacktraceInLog";
          static s_Singleton = null;
          m_Storage = null;
          m_setKnownDebugLogs = new Set();
          m_setEnabledDebugLogs = new Set();
          m_bIncludeBacktraceInLog = !1;
          m_SettingsChangedCallback = new s.lu();
          m_bLoading = !1;
          constructor() {
            (this.m_Storage = new a.A()), this.LoadSettings();
          }
          LogAsLogManager(...e) {
            m(
              i.Info,
              !0,
              this.IncludeBacktraceInLog,
              "LogManager",
              "LogManager",
              ...e,
            );
          }
          async LoadSettings() {
            (this.m_bLoading = !0),
              (this.m_bIncludeBacktraceInLog =
                !!(await this.m_Storage?.GetObject(
                  c.k_IncludeBacktraceInLog_StorageKey,
                )));
            const e = await this.m_Storage?.GetObject(
              c.k_EnabledLogNames_StorageKey,
            );
            if (Array.isArray(e)) {
              this.m_setEnabledDebugLogs = new Set(e);
              for (const t of e) this.m_setKnownDebugLogs.add(t);
              this.LogAsLogManager(
                "Loaded debug enabled log names. Will print log messages for:",
                Array.from(this.m_setEnabledDebugLogs),
              );
            } else 0;
            (this.m_bLoading = !1), this.m_SettingsChangedCallback.Dispatch();
          }
          async SaveSettings() {
            await this.m_Storage?.StoreObject(
              c.k_EnabledLogNames_StorageKey,
              Array.from(this.m_setEnabledDebugLogs),
            ),
              await this.m_Storage?.StoreObject(
                c.k_IncludeBacktraceInLog_StorageKey,
                this.m_bIncludeBacktraceInLog,
              ),
              this.LogAsLogManager(
                "Saved enabled debug log names. Will print log messages for:",
                Array.from(this.m_setEnabledDebugLogs),
              );
          }
          static Get() {
            return (
              null == c.s_Singleton && (c.s_Singleton = new c()), c.s_Singleton
            );
          }
          get Loading() {
            return this.m_bLoading;
          }
          get LogNames() {
            return this.m_setKnownDebugLogs.values();
          }
          RegisterLogName(e) {
            this.m_setKnownDebugLogs.add(e);
          }
          IsLogName(e) {
            return this.m_setKnownDebugLogs.has(e);
          }
          IsDebugLogEnabled(e) {
            return this.m_setEnabledDebugLogs.has(e);
          }
          async ToggleDebugLogEnabled(e) {
            this.SetDebugLogEnabled(e, !this.IsDebugLogEnabled(e));
          }
          async SetDebugLogEnabled(e, t) {
            t
              ? this.m_setEnabledDebugLogs.add(e)
              : this.m_setEnabledDebugLogs.delete(e),
              this.m_SettingsChangedCallback.Dispatch(),
              await this.SaveSettings();
          }
          async SetAllDebugLogsEnabled(e) {
            (this.m_setEnabledDebugLogs = e
              ? new Set(this.m_setKnownDebugLogs)
              : new Set()),
              this.m_SettingsChangedCallback.Dispatch(),
              await this.SaveSettings();
          }
          RegisterForSettingsChanges(e) {
            return this.m_SettingsChangedCallback.Register(e);
          }
          get IncludeBacktraceInLog() {
            return this.m_bIncludeBacktraceInLog;
          }
          async SetIncludeBacktraceInLog(e) {
            (this.m_bIncludeBacktraceInLog = e),
              this.m_SettingsChangedCallback.Dispatch(),
              await this.SaveSettings();
          }
        }
        function m(e, t, n, o, r, ...a) {
          const s = (function (e) {
              let t = 0;
              for (let n = 0; n < e.length; n++)
                t = e.charCodeAt(n) + ((t << 5) - t);
              return [(t >> 0) & 255, (t >> 8) & 255, (t >> 16) & 255];
            })(r).map((e, t) =>
              Math.round(
                Math.max(
                  0,
                  Math.min(255, 255 * (0.8 * (e / 255 - 0.5) + 0.15)),
                ),
              ),
            ),
            l = (299 * (c = s)[0] + 587 * c[1] + 114 * c[2]) / 1e3 >= 128;
          var c;
          let m = o;
          n &&
            (m =
              (function (e) {
                switch (e) {
                  case i.Debug:
                    return String.fromCodePoint(128027);
                  case i.Info:
                    return String.fromCodePoint(8505);
                  case i.Warning:
                    return String.fromCodePoint(9888);
                  case i.Error:
                    return String.fromCodePoint(128165);
                }
              })(e) +
              " " +
              m);
          const d =
              a.length >= 1 && "string" == typeof a[0] && a[0].includes("%c"),
            u = d && a.shift();
          let h;
          if (
            ((h = t
              ? [
                  `%c${m}%c:${d ? " %c" + u : ""}`,
                  `color: ${l ? "black" : "white"}; background: rgb(${s.join(",")}); padding: 0 1ch; border-radius: 3px;`,
                  "color: transparent; margin-right: -1ch",
                  ...(d ? [""] : []),
                  ...a,
                ]
              : a),
            n)
          )
            console.groupCollapsed(...h),
              console.trace("Callstack"),
              console.groupEnd();
          else
            switch (e) {
              case i.Debug:
              case i.Info:
                console.log(...h);
                break;
              case i.Warning:
                console.warn(...h);
                break;
              case i.Error:
                console.clogerror
                  ? console.clogerror(3, ...h)
                  : console.error(...h);
            }
        }
        const d = () => [...c.Get().LogNames].sort(),
          u = (e, t) => {
            c.Get().IsLogName(e)
              ? c.Get().SetDebugLogEnabled(e, t)
              : console.warn(`No log named "${e}", available logs:`, d());
          };
        (window.DebugLogEnable = (...e) => e.forEach((e) => u(e, !0))),
          (window.DebugLogDisable = (...e) => e.forEach((e) => u(e, !1))),
          (window.DebugLogEnableAll = () => c.Get().SetAllDebugLogsEnabled(!0)),
          (window.DebugLogDisableAll = () =>
            c.Get().SetAllDebugLogsEnabled(!1)),
          (window.DebugLogEnableBacktrace = () =>
            c.Get().SetIncludeBacktraceInLog(!0)),
          (window.DebugLogDisableBacktrace = () =>
            c.Get().SetIncludeBacktraceInLog(!1)),
          (window.DebugLogNames = d),
          (window.EnableSteamConsole = (e = !0) =>
            c.Get().SetDebugLogEnabled("SteamClient", e));
      },
      49912: (e, t, n) => {
        "use strict";
        function i(e, t) {
          return (
            (e = Math.ceil(e)),
            (t = Math.floor(t)),
            Math.floor(Math.random() * (t - e + 1)) + e
          );
        }
        function o(e, t, n) {
          return null == e || isNaN(e) ? e : Math.max(t, Math.min(n, e));
        }
        function r(e, t, n, i, o) {
          return i + ((o - i) * (e - t)) / (n - t);
        }
        function a(e, t, n, i, r) {
          return o(
            i + ((r - i) * (e - t)) / (n - t),
            Math.min(i, r),
            Math.max(i, r),
          );
        }
        n.d(t, { Fu: () => r, OQ: () => o, Tg: () => i, bT: () => a });
      },
      82924: (e, t, n) => {
        "use strict";
        n.d(t, {
          CH: () => i.CH,
          DF: () => i.DF,
          Fd: () => r.Fd,
          QS: () => o.QS,
          Qi: () => i.Qi,
          RY: () => o.RY,
          Ue: () => o.Ue,
          X: () => a.X,
          XB: () => o.XB,
          _g: () => i._g,
          bs: () => i.bs,
          cZ: () => o.cZ,
          hL: () => i.hL,
          l6: () => i.l6,
          oI: () => s.o,
          uN: () => i.uN,
          vJ: () => i.vJ,
          wY: () => r.wY,
          xA: () => i.xA,
        });
        var i = n(8820),
          o = n(63114),
          r = n(84989),
          a = (n(62956), n(93708)),
          s = (n(15458), n(69450));
      },
      15458: (e, t, n) => {
        "use strict";
        n(63696), n(84989);
      },
      52146: (e, t, n) => {
        "use strict";
        n.d(t, { s: () => a });
        var i = n(63696),
          o = n(3715),
          r = n(65676);
        n(1808);
        function a(e) {
          const { steamUI: t } = e,
            n = i.useRef(s);
          i.useEffect(() => {
            s.setDefaultOptions({
              queries: {
                staleTime: 1 / 0,
                networkMode: t ? "offlineFirst" : void 0,
              },
            });
          }, [t]);
          let r = e.children;
          return e.debug, i.createElement(o.Ht, { client: n.current }, r);
        }
        const s = new r.E({});
      },
      39927: (e, t, n) => {
        "use strict";
        n.d(t, { w: () => r });
        var i = n(50622),
          o = n(67520);
        class r extends o.S2 {
          m_component;
          m_propTargets;
          m_props = {};
          m_setStateOnComplete;
          constructor(e, t, n) {
            super(i.qf(e.ref.current), n),
              (this.m_component = e),
              (this.m_propTargets = t),
              (this.m_setStateOnComplete = n.setStateOnComplete);
          }
          Start() {
            this.m_props = {};
            for (let e in this.m_propTargets) {
              let t = parseFloat(this.m_component.state[e]) || 0,
                n = this.m_propTargets[e];
              t != n && (this.m_props[e] = { start: t, end: n });
            }
            super.Start();
          }
          Update(e) {
            let t = {};
            for (let n in this.m_props) {
              let i = this.m_props[n],
                o = i.start + (i.end - i.start) * e;
              t[n] = o;
            }
            this.m_component.setState(t);
          }
          FireOnComplete() {
            super.FireOnComplete(),
              this.m_setStateOnComplete &&
                this.m_component.setState(this.m_setStateOnComplete);
          }
        }
      },
      93708: (e, t, n) => {
        "use strict";
        n.d(t, { X: () => r });
        var i = n(63696),
          o = n(84989);
        function r() {
          const [e, t] = i.useState(0),
            n = i.useCallback(
              (n) => {
                const i = n.target.clientHeight;
                i > e && t(i);
              },
              [e],
            );
          return {
            strMinHeightStyle: e + "px",
            refForResizeObserver: (0, o.wY)(n),
          };
        }
      },
      84989: (e, t, n) => {
        "use strict";
        n.d(t, { BL: () => l, Fd: () => c, wY: () => s });
        var i = n(63696),
          o = n(77765),
          r = n(63114);
        function a(e, t) {
          return (0, r.QS)(
            (n) => {
              if (!n) return;
              const i = t(n.ownerDocument.defaultView, (t) => {
                e(t[0]);
              });
              return i.observe(n), () => i.unobserve(n);
            },
            [e, t],
          );
        }
        function s(e) {
          return a(
            e,
            i.useCallback(
              (e, t) =>
                e.ResizeObserver
                  ? new e.ResizeObserver(t)
                  : ((0, o.w)(!1, "ResizeObserver is not available"),
                    {
                      observe: () => {},
                      unobserve: () => {},
                      disconnect: () => {},
                    }),
              [],
            ),
          );
        }
        function l(e, t) {
          return a(
            e,
            i.useCallback((e, n) => new e.IntersectionObserver(n, t), [t]),
          );
        }
        function c(e, ...t) {
          const n = new e.ownerDocument.defaultView.ResizeObserver(...t);
          return n.observe(e), n;
        }
      },
      62956: (e, t, n) => {
        "use strict";
        n(63696), n(84989);
      },
      63689: (e, t, n) => {
        "use strict";
        function i(e, t) {
          return e < t ? -1 : e > t ? 1 : 0;
        }
        function o(e, t) {
          return i(e.toLocaleLowerCase(), t.toLocaleLowerCase());
        }
        function r(e) {
          return (
            (e >= 55356 && e <= 57343) ||
            (e >= 8205 && e <= 11093) ||
            12953 == e ||
            12349 == e ||
            12336 == e ||
            65039 == e ||
            12951 == e ||
            169 == e ||
            (e >= 48 && e <= 57) ||
            35 == e ||
            42 == e ||
            10 == e ||
            174 == e
          );
        }
        function a(e) {
          let t = !1,
            n = !1,
            i = !0;
          for (let o = 0; o < e.length; o++) {
            let a = e.charCodeAt(o);
            if (
              ((i && a >= 48 && a <= 57) || 35 == a || 42 == a || 10 == a
                ? (n = !0)
                : r(a) && ((n = !0), (i = !1)),
              n && 0 == o)
            )
              (t = !0), (n = !1);
            else if (n && t) (t = !0), (n = !1);
            else if (!n) return (t = !1), !1;
            if (o > 20) return !1;
          }
          return !i && t;
        }
        function s(e) {
          let t = e.charCodeAt(0);
          return t >= 65 && t <= 90;
        }
        function l(e) {
          if (e.length <= 2) return e;
          let t = e.charAt(1),
            n = s(t);
          for (let i = 2; i < e.length; i++) {
            let o = e.charAt(i);
            if (n || !s(o)) {
              if (" " == o) {
                (o = e.charAt(i + 1)), o.length > 0 && (t = o);
                break;
              }
            } else (n = !0), (t = o);
          }
          return e.charAt(0) + t;
        }
        function c(e) {
          if (!e) return "";
          if (DOMParser) {
            return new DOMParser().parseFromString(e, "text/html")
              .documentElement.textContent;
          }
          return e;
        }
        function m(e, t = "") {
          return e.replace(/\bhttps?:\/\/\S+/gi, t);
        }
        function d(e, t, n = !0) {
          let i = e.trim();
          if (((i = i.replace(n ? /\s+/g : /[ \t]+/g, " ")), i.length > t)) {
            i = i.substring(0, t);
            let e = i.replace(/^(.*([.!?])) .*$/, "$1"),
              o = e.length;
            (o < 0.6 * t || o == t) && (e = i.replace(/ [^ ]*$/, "...")),
              (i = n ? e.replace(/(\r\n|\n|\r)/gm, "") : e);
          }
          return i;
        }
        function u(e) {
          if (e.startsWith("[emoticon")) {
            let t = e.match(/^(?:\[emoticon\][^\[]+\[\/emoticon\]\s*)+$/);
            if (t && t.length) {
              let t = e.match(/\[emoticon\][^\[]+\[\/emoticon\]/g);
              return t && t.length <= 6;
            }
          }
          return !1;
        }
        function h(e) {
          return e.length <= 1
            ? e.toUpperCase()
            : e.charAt(0).toUpperCase() + e.slice(1);
        }
        function p(e, t) {
          let n = e.lastIndexOf(t);
          return -1 == n ? "" : e.substr(n + t.length);
        }
        function _(e) {
          return atob(e.replace(/-/g, "+").replace(/_/g, "/"));
        }
        n.d(t, {
          EK: () => c,
          Xw: () => h,
          aQ: () => u,
          aX: () => m,
          bC: () => d,
          g: () => l,
          he: () => _,
          kd: () => i,
          lY: () => o,
          tC: () => p,
          tV: () => a,
        });
      },
      28574: (e, t, n) => {
        "use strict";
        n.d(t, {
          Ct: () => r,
          IP: () => a,
          JD: () => o,
          Kp: () => i,
          _2: () => s,
        });
        const i = {
          PerYear: 31536e3,
          PerMonth: 2628e3,
          PerWeek: 604800,
          PerDay: 86400,
          PerHour: 3600,
          PerMinute: 60,
        };
        function o(e, t) {
          return (
            e.getFullYear() == t.getFullYear() &&
            e.getMonth() == t.getMonth() &&
            e.getDate() == t.getDate()
          );
        }
        function r(e, t) {
          return e.getFullYear() == t.getFullYear();
        }
        function a(e) {
          return new Promise((t) => setTimeout(t, e));
        }
        function s() {
          return Math.floor(Date.now() / 1e3);
        }
      },
      89481: (e, t, n) => {
        "use strict";
        n.d(t, {
          IT: () => s,
          L$: () => l,
          NT: () => u,
          Ps: () => d,
          Qz: () => a,
          ZF: () => c,
          k2: () => m,
          wm: () => r,
        });
        var i = n(17070),
          o = (n(74002), n(72751));
        function r(e) {
          if (void 0 === e)
            return console.error("Cannot GetHostname on empty URL"), "";
          let t = new RegExp(
              "^(steam://openurl(_external)?/)?((f|ht)tps?://)?([^@/?#]*@)?([^/#?]+)",
              "im",
            ),
            n = e.match(t);
          return n && n.length > 5 ? n[6].toString() : e;
        }
        function a(e) {
          let t = r(e);
          return t.startsWith("www.") && (t = t.slice(4)), t;
        }
        function s(e) {
          let t = document.createElement("a");
          return (t.href = e), t.hostname.indexOf("xn--") >= 0 ? t.href : e;
        }
        function l(e) {
          return e
            ? 1 != i.TS.EUNIVERSE
              ? e
              : ("http:" == e.substring(0, 5) &&
                  (e = "https:" + e.substring(5)),
                (e = (e = (e = (e = (e = (e = (e = (e = (e = (e = (e = (e = (e =
                  (e = (e = (e = (e = (e = e.replace(
                    /https:\/\/media.steampowered.com\//g,
                    i.TS.MEDIA_CDN_URL,
                  )).replace(
                    /https:\/\/cdn.akamai.steamstatic.com\//g,
                    i.TS.MEDIA_CDN_URL,
                  )).replace(
                    /https:\/\/cdn.cloudflare.steamstatic.com\//g,
                    i.TS.MEDIA_CDN_URL,
                  )).replace(
                    /https:\/\/cdn.edgecast.steamstatic.com\//g,
                    i.TS.MEDIA_CDN_URL,
                  )).replace(
                    /https:\/\/cdn.fastly.steamstatic.com\//g,
                    i.TS.MEDIA_CDN_URL,
                  )).replace(
                    /https:\/\/cdn.dota2.com\//g,
                    i.TS.MEDIA_CDN_URL,
                  )).replace(
                  /https:\/\/storefront.steampowered.com\/v\/gfx\//g,
                  i.TS.MEDIA_CDN_URL + "steam/",
                )).replace(
                  /https:\/\/clan.akamai.steamstatic.com\//g,
                  i.TS.CLAN_CDN_ASSET_URL,
                )).replace(
                  /https:\/\/clan.cloudflare.steamstatic.com\//g,
                  i.TS.CLAN_CDN_ASSET_URL,
                )).replace(
                  /https:\/\/clan.fastly.steamstatic.com\//g,
                  i.TS.CLAN_CDN_ASSET_URL,
                )).replace(
                  /https:\/\/cdn.steamcommunity.com\//g,
                  i.TS.COMMUNITY_CDN_URL,
                )).replace(
                  /https:\/\/community.akamai.steamstatic.com\//g,
                  i.TS.COMMUNITY_CDN_URL,
                )).replace(
                  /https:\/\/community.cloudflare.steamstatic.com\//g,
                  i.TS.COMMUNITY_CDN_URL,
                )).replace(
                  /https:\/\/community.edgecast.steamstatic.com\//g,
                  i.TS.COMMUNITY_CDN_URL,
                )).replace(/{IMG_URL}/g, i.TS.IMG_URL)).replace(
                  /{MEDIA_CDN_URL}/g,
                  i.TS.MEDIA_CDN_URL,
                )).replace(
                  /{MEDIA_CDN_COMMUNITY_URL}/g,
                  i.TS.MEDIA_CDN_COMMUNITY_URL,
                )).replace(/{COMMUNITY_CDN_URL}/g, i.TS.COMMUNITY_CDN_URL)),
                (e = (0, o.TL)(e)))
            : e;
        }
        function c(e) {
          if (!e) return !0;
          const t = r(e).toLocaleLowerCase();
          return (
            [
              r(i.TS.COMMUNITY_CDN_URL).toLocaleLowerCase(),
              r(i.TS.MEDIA_CDN_URL).toLocaleLowerCase(),
              r(i.TS.MEDIA_CDN_COMMUNITY_URL).toLocaleLowerCase(),
              r(i.TS.STORE_CDN_URL).toLocaleLowerCase(),
              r(i.TS.BASE_URL_SHARED_CDN).toLocaleLowerCase(),
              r(i.TS.CLAN_CDN_ASSET_URL).toLocaleLowerCase(),
              r(i.TS.VIDEO_CDN_URL).toLocaleLowerCase(),
              "support.steampowered.com",
              "steamcdn-a.akamaihd.net",
              "cdn.cloudflare.steamstatic.com",
              "cdn.fastly.steamstatic.com",
              "cdn.akamai.steamstatic.com",
            ].indexOf(t) >= 0
          );
        }
        function m(e) {
          return i.TS.SNR &&
            i.TS.SNR.length > 0 &&
            e &&
            -1 == e.toLocaleLowerCase().indexOf("snr=")
            ? e + (e.indexOf("?") >= 0 ? "&" : "?") + "snr=" + i.TS.SNR
            : e;
        }
        function d(e, t) {
          try {
            const n = new URL(t),
              i = new URL(e);
            return n.href.replace(/\/$/, "") + i.pathname + i.search + i.hash;
          } catch (e) {
            return "";
          }
        }
        function u(e) {
          return (
            i.TS.IN_STEAMUI &&
              !e.startsWith("steam://") &&
              (e = `steam://openurl/${e}`),
            e
          );
        }
      },
      75699: (e, t, n) => {
        "use strict";
        function i(e, t) {
          return e + "economy/sticker/" + encodeURIComponent(t);
        }
        n.d(t, { G: () => i });
      },
      31475: (e, t, n) => {
        "use strict";
        n.d(t, { GD: () => a, jt: () => s });
        var i = n(63696),
          o = n(42674),
          r = n(82924);
        function a(e) {
          const [t, n] = i.useState(!1),
            a = i.useCallback(() => {
              (0, o.Fj)(e, "Window.IsWindowMaximized")
                ? e.SteamClient.Window.IsWindowMaximized().then((e) => {
                    n(e);
                  })
                : e?.screen &&
                  n(
                    e.screen.availWidth == e.innerWidth &&
                      e.screen.availHeight == e.innerHeight,
                  );
            }, [e]);
          return (
            i.useEffect(a, [a, e]),
            (0, r.l6)(e, "resize", a),
            (0, r.Qi)(e, ["window_moved"], a),
            t
          );
        }
        function s(e, t = 100) {
          const [n, o] = i.useState(!1),
            a = i.useCallback(() => o(!0), [o]),
            s = i.useCallback(() => o(!1), [o]);
          return (
            i.useEffect(
              () =>
                e
                  ? (e.addEventListener("focus", a),
                    e.addEventListener("blur", s),
                    () => {
                      e.removeEventListener("focus", a),
                        e.removeEventListener("blur", s);
                    })
                  : void 0,
              [e, a, s],
            ),
            (0, r.DF)(n, t)
          );
        }
      },
      8318: (e, t, n) => {
        "use strict";
        n.d(t, { B: () => K, Y: () => Z });
        var i = n(34629),
          o = n(63696),
          r = n(63689),
          a = n(41230),
          s = n(52124),
          l = n.n(s),
          c = n(17070),
          m = n(49912);
        function d(e, t, n) {
          return (
            c.TS.COMMUNITY_CDN_ASSET_URL + e + "/roomeffects/" + t + "/" + n
          );
        }
        class u extends o.Component {
          m_strSaleId;
          constructor(e) {
            super(e), (this.m_strSaleId = this.props.sale);
          }
          getAsset(e) {
            return d(this.m_strSaleId, this.props.effect.name, e);
          }
        }
        function h(e, t) {
          !(function (e) {
            const t = (0, o.useRef)({ bSet: !1 });
            t.current.bSet || (t.current = { bSet: !0, value: e() }),
              t.current.value;
          })(() => setTimeout(e, t));
        }
        const p = ({ msDelay: e, children: t }) =>
          (function (e) {
            const [t, n] = (0, o.useState)(!1);
            return h(() => n(!0), e), t;
          })(e)
            ? o.createElement(o.Fragment, null, t)
            : null;
        class _ extends o.Component {
          m_refContainer = o.createRef();
          m_rgFireworks = [];
          m_nCurrentDelay = 0;
          constructor(e) {
            super(e), (this.state = { bReady: !1 });
          }
          CreateFireworks(e) {
            (this.m_nCurrentDelay = 0),
              this.AddCluster(e),
              (this.m_nCurrentDelay += 200),
              this.RenderLong(e),
              (this.m_nCurrentDelay += 200),
              this.AddCluster(e),
              (this.m_nCurrentDelay += 600),
              this.AddCluster(e),
              (this.m_nCurrentDelay += 200),
              this.RenderLong(e),
              (this.m_nCurrentDelay += 200),
              this.RenderLong(e),
              (this.m_nCurrentDelay += 200),
              this.RenderLong(e),
              this.AddCluster(e),
              this.RenderLong(e),
              (this.m_nCurrentDelay += 200),
              this.AddCluster(e);
          }
          TestRender(e) {
            (0, m.Tg)(0, 70), (0, m.Tg)(0, 70);
            for (let t = 0; t < 1; t++)
              this.m_rgFireworks.push({
                x: "20%",
                y: "20%",
                nHueRotation: 0,
                nDelay: this.m_nCurrentDelay,
                flScale: e,
                burst: g,
              }),
                (this.m_nCurrentDelay += 500);
            this.m_rgFireworks.push({
              x: "0%",
              y: "0%",
              nHueRotation: 0,
              nDelay: this.m_nCurrentDelay,
              flScale: e,
              burst: C,
            }),
              this.m_rgFireworks.push({
                x: "30%",
                y: "30%",
                nHueRotation: 0,
                nDelay: this.m_nCurrentDelay,
                flScale: e,
                burst: f,
              });
          }
          CalcHueRotation() {
            return "lny2020" == this.props.sale
              ? 360 + (0, m.Tg)(-30, 10)
              : (0, m.Tg)(0, 360);
          }
          AddCluster(e) {
            let t = (0, m.Tg)(-5, 50),
              n = (0, m.Tg)(-10, 50),
              i = this.CalcHueRotation();
            this.m_rgFireworks.push({
              x: `${t}%`,
              y: `${n}%`,
              nHueRotation: i,
              nDelay: this.m_nCurrentDelay,
              flScale: e,
              burst: C,
            });
            let o = Math.random() * Math.PI * 2;
            const r = Math.floor(64 * e),
              a = Math.floor(60 * e),
              s = Math.floor(10 * e);
            let l = 0;
            for (let c = 0; c < 3; c++) {
              let m = `calc( ${t}% + ${r + Math.cos(o + l) * a}px )`,
                d = `calc( ${n}% + ${r + (Math.sin(o + l) * a + s)}px )`;
              c < 2 && (this.m_nCurrentDelay += 200),
                (i = this.CalcHueRotation()),
                this.m_rgFireworks.push({
                  x: m,
                  y: d,
                  nHueRotation: i,
                  nDelay: this.m_nCurrentDelay,
                  flScale: e,
                  burst: f,
                }),
                (l += 2.09);
            }
          }
          RenderLong(e) {
            const t = (0, m.Tg)(20, 60),
              n = (0, m.Tg)(-5, 50),
              i = this.CalcHueRotation();
            this.m_rgFireworks.push({
              x: `${t}%`,
              y: `${n}%`,
              nHueRotation: i,
              nDelay: this.m_nCurrentDelay,
              flScale: e,
              burst: g,
            });
          }
          componentDidMount() {
            if (!this.m_refContainer.current || this.m_rgFireworks.length > 0)
              return;
            let e = this.m_refContainer.current,
              t = e.offsetWidth,
              n = e.offsetHeight,
              i = (0, m.Fu)(t, 400, 1080, 0.5, 2);
            (i = (0, m.OQ)(i, 0.5, 2)),
              console.log(t, n, i),
              this.CreateFireworks(i),
              this.setState({ bReady: !0 });
          }
          render() {
            let e = [];
            return (
              this.state.bReady &&
                this.m_rgFireworks.forEach((t, n) => {
                  let i = `${n}`,
                    r = {
                      top: t.y,
                      left: t.x,
                      filter: `hue-rotate(${t.nHueRotation}deg)`,
                    };
                  e.push(
                    o.createElement(t.burst, {
                      key: i,
                      style: r,
                      msDelay: t.nDelay,
                      scale: t.flScale,
                      sale: this.props.sale,
                    }),
                  );
                }),
              o.createElement(
                "div",
                { ref: this.m_refContainer, className: l().FireworkContainer },
                e,
              )
            );
          }
        }
        function g(e) {
          const t = d(e.sale, "fireworks", "long_sheet.png");
          let n = e.style;
          return (
            (n.backgroundImage = `url(${t})`),
            (n.width = 256),
            (n.height = 256),
            (n.animation = `${l().fireworkLongX} 0.2s steps(9) 10, ${l().fireworkLongY} 2.0s steps(10) forwards`),
            (n.transformOrigin = "0 0"),
            (n.transform = `scale( ${e.scale} )`),
            o.createElement(
              p,
              { msDelay: e.msDelay },
              o.createElement("div", {
                style: e.style,
                className: l().FireworkPNG,
              }),
            )
          );
        }
        function C(e) {
          const t = d(e.sale, "fireworks", "big_sheet.png");
          let n = e.style;
          return (
            (n.backgroundImage = `url(${t})`),
            (n.width = 256),
            (n.height = 256),
            (n.animation = `${l().fireworkBigX} 0.2s steps(9) 4, ${l().fireworkBigY} 0.8s steps(4) forwards`),
            (n.transformOrigin = "0 0"),
            (n.transform = `scale( ${e.scale} )`),
            o.createElement(
              p,
              { msDelay: e.msDelay },
              o.createElement("div", {
                style: e.style,
                className: l().FireworkPNG,
              }),
            )
          );
        }
        function f(e) {
          const t = d(e.sale, "fireworks", "small_sheet.png");
          let n = e.style;
          return (
            (n.backgroundImage = `url(${t})`),
            (n.width = 256),
            (n.height = 256),
            (n.animation = `${l().fireworkSmallX} 0.15s steps(10) 6, ${l().fireworkSmallY} 0.9s steps(6) forwards`),
            (n.transformOrigin = "0 0"),
            (n.transform = `scale( ${e.scale / 2} )`),
            o.createElement(
              p,
              { msDelay: e.msDelay },
              o.createElement("div", {
                style: e.style,
                className: l().FireworkPNG,
              }),
            )
          );
        }
        var S = n(28168);
        const v = 8e3;
        var b;
        function I(e) {
          switch (e) {
            case b.Gold:
            case b.LNY2020:
              return `hsl(${51 + -16 * Math.random()}, 93%, 54%)`;
            default:
              return `hsl(${360 * Math.random()}, 100%, 40%)`;
          }
        }
        function w(e) {
          return e == b.LNY2020
            ? `hue-rotate(${360 + ((0, m.Tg))(-30, 10)}deg)`
            : "";
        }
        !(function (e) {
          (e[(e.Default = 0)] = "Default"),
            (e[(e.Gold = 1)] = "Gold"),
            (e[(e.LNY2020 = 2)] = "LNY2020");
        })(b || (b = {}));
        const y = (e, t) => {
            const { anim: n } = (0, S.zh)({
                anim: 1,
                from: { anim: 0 },
                config: { duration: v },
              }),
              i = (0, o.useMemo)(() => {
                let i = (function (e, t) {
                    const n = [];
                    if (!e) return n;
                    const { width: i, height: o } = e;
                    for (let e = 0; e < 200; e++) {
                      const e = Math.random(),
                        r = Math.random() * e,
                        a = Math.random() * r,
                        s = 4 * (Math.random() - 0.5) * Math.PI * 20,
                        l = Math.random() + 0.5,
                        c = [
                          Math.random() * o - o - 20,
                          o + 20 + Math.random() * o * l,
                        ],
                        m =
                          l * (i <= 1e3 ? 1 : i / 1e3) * (t == b.Gold ? 2 : 1),
                        d = (Math.random() - 0.5) * i,
                        u = (Math.random() - 0.5) * i,
                        h = [u, d + u],
                        p = I(t),
                        _ = w(t);
                      n.push({
                        rotationCoefficient: s,
                        rotationRatioY: r,
                        rotationRatioX: e,
                        rotationRatioZ: a,
                        yRange: c,
                        xRange: h,
                        scale: m,
                        colorHue: p,
                        filter: _,
                      });
                    }
                    return n;
                  })(e, t),
                  o = i.map((e) =>
                    (function (e, t, n) {
                      b.Default;
                      const {
                        rotationCoefficient: i,
                        rotationRatioY: o,
                        rotationRatioX: r,
                        rotationRatioZ: a,
                        yRange: s,
                        xRange: l,
                        scale: c,
                        colorHue: m,
                        filter: d,
                      } = e;
                      return {
                        backgroundColor: m,
                        fill: m,
                        filter: d,
                        flRandom: 0,
                        transform: t.interpolate((e) => {
                          const t = e * i * o,
                            n = e * i * r,
                            m = e * i * a,
                            d = e * (s[1] - s[0]) + s[0];
                          return `translate(${e * (l[1] - l[0]) + l[0]}px, ${d}px) rotateY(${t}rad) rotateX(${n}rad) rotateZ(${m}rad) scale(${c})`;
                        }),
                      };
                    })(e, n),
                  ),
                  r = i
                    .map((e) =>
                      (function (e, t, n) {
                        if (Math.random() > 0.1) return null;
                        const {
                          rotationCoefficient: i,
                          rotationRatioZ: o,
                          yRange: r,
                          xRange: a,
                          scale: s,
                          colorHue: l,
                          filter: c,
                        } = e;
                        return {
                          backgroundColor: void 0,
                          fill: l,
                          filter: c,
                          flRandom: Math.random(),
                          transform: t.interpolate((e) => {
                            const t = ((e * i) / 4) * o,
                              n = e * (r[1] - r[0]) + r[0];
                            return `translate(${e * (a[1] - a[0]) + a[0]}px, ${n}px) rotateZ(${t}rad) scale(${s})`;
                          }),
                        };
                      })(e, n),
                    )
                    .filter((e) => !!e);
                return { rgParticleStyles: o, rgStreamerStyles: r };
              }, [e, t, n]);
            return i;
          },
          E = { position: "absolute", left: "50%", top: 0 },
          D = {
            ...E,
            width: 10,
            height: 5,
            borderWidth: 1,
            borderColor: "black",
          },
          A = ({ eType: e }) => {
            b.Gold, b.LNY2020;
            const [t, n] = (function () {
              const [e, t] = (0, o.useState)(null),
                n = (0, o.useCallback)((e) => {
                  e &&
                    "function" == typeof e.getBoundingClientRect &&
                    t(e.getBoundingClientRect());
                }, []);
              return [e, n];
            })();
            let i,
              { rgParticleStyles: r, rgStreamerStyles: a } = y(t, e);
            switch (e) {
              case b.Gold:
                i = r.map((e, t) => o.createElement(M, { key: t, style: e }));
                break;
              case b.LNY2020:
                i = r.map((e, t) =>
                  t % 2
                    ? o.createElement(T, { key: t, style: e })
                    : o.createElement(R, { key: t, style: e }),
                );
                break;
              case b.Default:
                i = r.map((e, t) => o.createElement(T, { key: t, style: e }));
            }
            return o.createElement(
              "div",
              {
                style: {
                  position: "absolute",
                  top: 0,
                  left: 0,
                  right: 0,
                  bottom: 0,
                  overflow: "hidden",
                },
                ref: n,
              },
              i,
              a.map((e, t) =>
                e.flRandom > 0.5
                  ? o.createElement(L, { key: t, style: e })
                  : o.createElement(k, { key: t, style: e }),
              ),
            );
          },
          T = ({ style: e }) =>
            o.createElement(S.CS.div, { style: { ...D, ...e } }),
          M = ({ style: e }) => {
            const [t] = (0, o.useState)(Math.floor(Math.random() * G.length)),
              n = G[t];
            return o.createElement(n, {
              style: { ...E, ...e, backgroundColor: void 0 },
            });
          },
          R = ({ style: e }) => {
            const [t] = (0, o.useState)(Math.floor(Math.random() * F.length)),
              n = F[t];
            return o.createElement(n, {
              style: { ...E, ...e, backgroundColor: void 0 },
            });
          },
          k = ({ style: e }) =>
            o.createElement(
              S.CS.svg,
              {
                viewBox: "0 0 80 620",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg",
                style: { width: 10, height: 70, ...e },
              },
              o.createElement("path", {
                fillRule: "evenodd",
                clipRule: "evenodd",
                d: "M0.53418 0.446363C4.80788 7.96949 8.99436 15.2008 13.0073 22.1324C35.0383 60.1862 51.8397 89.2071 49.1318 107.895C48.8475 101.617 47.1164 95.1506 43.6182 89.4997C22.9652 56.1375 -2.34054 7.06674 0.53418 0.446363ZM56.8207 188.805C55.1885 180.279 48.7591 170.011 41.3806 161.521C37.204 156.715 9.25983 141.889 7.31883 141.711L7.31474 141.711L7.31468 141.71L7.31452 141.71L7.11268 139.174L6.5244 131.791L6.5251 131.791L6.52505 131.79L6.52672 131.791C34.8022 129.659 47.1567 121.526 49.1318 107.895C49.6795 119.989 44.859 131.385 36.9599 134.917C33.2606 136.571 29.1329 137.843 25.1609 138.813C32.3599 142.599 44.0294 149.927 51.5956 160.751C60.8324 173.966 58.2537 184.901 56.8207 188.805ZM14.1541 214.387C28.3318 211.43 49.5183 206.914 54.7559 200.428C57.1974 197.404 57.6912 193.352 56.8207 188.805C56.4544 189.804 56.163 190.342 56.163 190.342C50.7646 194.114 26.0806 200.624 11.3908 204.497L11.3906 204.497L11.3904 204.497C7.40758 205.548 4.15949 206.404 2.22967 206.96L2.67009 212.483L3.21786 219.36C12.4021 224.467 20.8538 228.732 28.2879 232.483C70.3706 253.717 79.8458 258.498 5.02032 306.544C5.02047 306.546 5.02063 306.548 5.02078 306.55C5.01989 306.548 5.019 306.547 5.01812 306.545C5.24371 309.369 5.53845 312.547 5.79092 315.269C5.89859 316.43 5.99858 317.508 6.08223 318.44C6.15188 319.464 6.19564 320.436 6.20554 321.424C6.20464 321.331 6.23688 321.223 6.30064 321.101C6.31949 321.398 6.32799 321.609 6.32408 321.719C6.27561 321.616 6.23528 321.518 6.20333 321.425C6.28038 321.817 6.31788 321.895 6.32408 321.719C7.33553 323.874 11.894 328.285 17.8731 334.069C41.6329 357.056 87.8264 401.748 23.0228 412.886C23.5764 419.833 23.1631 419.992 23.1631 419.992C23.1631 419.992 24.3205 419.752 26.2506 419.305C34.1052 423.989 55.3095 438.589 58.8169 442.625C66.1955 451.115 72.6248 461.382 74.2571 469.909C73.8908 470.907 73.5993 471.446 73.5993 471.446C68.4367 475.053 42.2327 481.635 25.7172 485.783L25.7152 485.783L25.7147 485.784L25.7135 485.784L25.7028 485.787C20.6602 487.053 16.5222 488.093 14.1645 488.751L13.6222 488.439L13.6585 488.894L13.653 488.896L13.6602 488.916L14.4124 498.36C47.1778 516.58 73.923 535.597 77.6114 557.121C77.1891 558.457 76.6366 559.776 75.9628 561.084C62.5946 587.039 41.1874 608.612 24.1016 619.88C66.6744 596.331 80.8095 575.784 77.6114 557.121C81.823 543.801 73.0945 528.757 42.6319 505.104L26.8056 496.013C27.3301 495.908 27.8664 495.802 28.4133 495.693L28.4153 495.693C43.5756 492.685 66.9267 488.052 72.1923 481.531C74.6338 478.508 75.1275 474.456 74.2571 469.909C75.69 466.004 78.2687 455.069 69.032 441.855C57.4339 425.262 36.1944 416.886 36.1944 416.886L35.6563 416.927C41.635 415.285 48.7178 413.074 54.4334 410.519C66.4332 405.154 68.2307 384.374 57.9941 367.838C51.515 357.372 43.7231 350.194 35.4751 342.596C27.6489 335.386 19.4122 327.798 11.4967 316.664C12.7089 315.779 14.0928 314.791 15.6091 313.709C40.2963 296.086 100.082 253.407 25.4758 221.439L14.1541 214.387Z",
                fill: e.fill,
              }),
            ),
          L = ({ style: e }) =>
            o.createElement(
              S.CS.svg,
              {
                viewBox: "0 0 203 295",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg",
                style: { width: 10, height: 20, ...e },
              },
              o.createElement("path", {
                fillRule: "evenodd",
                clipRule: "evenodd",
                d: "M104.427 22.6009L104.428 22.6013C125.146 59.4015 140.687 87.0059 133.282 102.839C134.662 95.3303 133.62 86.4659 129.246 79.1843C112.124 50.6796 91.1453 8.75528 93.5285 3.10091C97.2525 9.85693 100.914 16.3611 104.427 22.6009ZM142.726 166.38C141.373 159.096 136.043 150.323 129.926 143.069C127.078 139.691 110.154 127.651 103.342 123.396C101.494 123.638 100.371 123.725 100.371 123.725C100.371 123.725 100.713 123.589 100.254 117.655C119.247 116.187 129.407 111.125 133.282 102.839C131.985 109.898 128.547 115.759 123.726 117.978C120.124 119.637 116.182 120.838 112.579 121.699C116.941 123.721 130.418 130.653 138.395 142.414C146.052 153.705 143.914 163.045 142.726 166.38ZM103.389 188.664C103.824 188.575 104.268 188.484 104.721 188.392L104.722 188.392C117.291 185.827 136.649 181.876 141.015 176.307C143.039 173.725 143.448 170.264 142.726 166.38C142.423 167.232 142.181 167.693 142.181 167.693C137.901 170.772 116.177 176.387 102.486 179.926C98.3006 181.007 94.8659 181.895 92.9093 182.457L92.4596 182.191L92.4896 182.579C92.4878 182.58 92.486 182.58 92.4842 182.581L92.4914 182.602L93.1147 190.665C120.278 206.239 142.45 222.491 145.508 240.879C145.158 242.02 144.7 243.146 144.141 244.263C133.059 266.43 115.312 284.852 101.148 294.472C136.441 274.369 148.16 256.821 145.508 240.879C149 229.501 141.764 216.649 116.509 196.435L103.389 188.664Z",
                fill: e.fill,
              }),
            ),
          G = [
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 48 102",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 5, height: 10, ...e },
                },
                o.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M45.8382 77.0734L24 0L2.16179 77.0734C0.773631 79.3013 0 81.7786 0 84.3885C0 84.4894 0.00115761 84.5902 0.00346361 84.6908L0 84.703H0.00374963C0.23239 94.2845 10.8883 102 24 102C37.1117 102 47.7676 94.2845 47.9963 84.703H48L47.9965 84.6908C47.9988 84.5902 48 84.4894 48 84.3885C48 81.7786 47.2264 79.3013 45.8382 77.0734Z",
                  fill: "#F7D51E",
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 50 39",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 7, ...e },
                },
                o.createElement("path", {
                  d: "M48.444 16.0525L32.7132 0.633915C20.0884 16.8827 7.13568 21.7989 0.597293 21.9904C7.33478 28.5984 14.1472 37.4728 14.1472 37.4728C31.6473 38.7751 44.3035 23.7352 48.444 16.0525Z",
                  fill: "#C4C4C4",
                }),
                o.createElement("path", {
                  d: "M48.444 16.0525L32.7132 0.633915C20.0884 16.8827 7.13568 21.7989 0.597293 21.9904C7.33478 28.5984 14.1472 37.4728 14.1472 37.4728C31.6473 38.7751 44.3035 23.7352 48.444 16.0525Z",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 68 69",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 10, ...e },
                },
                o.createElement("rect", {
                  y: "34.6389",
                  width: "48",
                  height: "48",
                  transform: "rotate(-45 0 34.6389)",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 48 48",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 10, ...e },
                },
                o.createElement("path", {
                  fillRule: "evenodd",
                  clipRule: "evenodd",
                  d: "M24 0L0 24L24 47.9999L48 24L24 0ZM23.7089 8.48533L8.48527 23.7089L23.7089 38.9325L38.9324 23.7089L23.7089 8.48533Z",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 48 30",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 8, ...e },
                },
                o.createElement("ellipse", {
                  cx: "24",
                  cy: "15",
                  rx: "24",
                  ry: "15",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 48 30",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 8, ...e },
                },
                o.createElement("ellipse", {
                  cx: "24",
                  cy: "15",
                  rx: "24",
                  ry: "15",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 48 30",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 8, ...e },
                },
                o.createElement("ellipse", {
                  cx: "24",
                  cy: "15",
                  rx: "24",
                  ry: "15",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  viewBox: "0 0 48 39",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 8, ...e },
                },
                o.createElement("path", {
                  d: "M33.8287 29.6914L24.9705 21.1201C23.199 24.5487 23.4612 24.5487 21.4282 27.9773C19.3952 31.4058 13.4557 29.6914 12.57 27.9773C7.25553 22.8344 10.7985 17.6914 12.57 15.9773C19.656 5.69155 36.5247 4.54869 48 5.69155C47.4095 4.54865 45.5199 1.92 42.6855 0.548571C39.1425 -1.16571 1.94169 0.548571 0.170191 14.2629C-1.60131 27.9771 10.7992 38.2629 21.4282 38.2629C29.9314 38.2629 33.2382 32.5486 33.8287 29.6914Z",
                  fill: e.fill,
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  width: "48",
                  height: "35",
                  viewBox: "0 0 48 35",
                  fill: "none",
                  xmlns: "http://www.w3.org/2000/svg",
                  style: { width: 10, height: 7, ...e },
                },
                o.createElement("path", {
                  d: "M48 0H0L24 35L48 0Z",
                  fill: e.fill,
                }),
              ),
          ],
          F = [
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  xmlns: "http://www.w3.org/2000/svg",
                  viewBox: "0 0 54 47.18",
                  style: { width: 28, height: 28, ...e },
                },
                o.createElement("polygon", {
                  fill: "#60000e",
                  points: "10.02 14.06 10.02 14.06 10.02 14.06 10.02 14.06",
                }),
                o.createElement("path", {
                  fill: "#f93838",
                  d: "M54,9.53A9.52,9.52,0,0,0,37.74,2.79a10.82,10.82,0,0,0-2.25,3.54,21.52,21.52,0,0,0-1.19,4.08A16.55,16.55,0,0,0,27,8.73h-.24a16.38,16.38,0,0,0-7,1.69,22.41,22.41,0,0,0-1.2-4.09,10.82,10.82,0,0,0-2.25-3.54A9.52,9.52,0,1,0,2.79,16.26h0a10.82,10.82,0,0,0,3.54,2.25,23.87,23.87,0,0,0,5,1.36,16.34,16.34,0,0,0-.94,5.48h0v0a16.57,16.57,0,0,0,4.92,11.81A7.36,7.36,0,0,1,17.05,40a10.5,10.5,0,0,0,10,7.15,10.38,10.38,0,0,0,6.17-2,10.57,10.57,0,0,0,3.77-5.11,7.48,7.48,0,0,1,1.79-2.89,16.66,16.66,0,0,0,4-17.3l.65-.12a22.44,22.44,0,0,0,4.31-1.24,10.82,10.82,0,0,0,3.54-2.25L50.9,16l.31.31A9.5,9.5,0,0,0,54,9.53ZM32.11,21.28a9.27,9.27,0,0,1,2.68-.38,9.06,9.06,0,0,1,2.87.44.44.44,0,0,1,.28.56.44.44,0,0,1-.56.27,8.4,8.4,0,0,0-2.59-.39,8.59,8.59,0,0,0-2.43.34h0a.44.44,0,1,1-.26-.84Zm-7.88,8.64a9.27,9.27,0,0,1,2.68-.38,9.06,9.06,0,0,1,2.87.44.44.44,0,0,1,.28.56.44.44,0,0,1-.56.27,8.35,8.35,0,0,0-2.59-.39,8.46,8.46,0,0,0-2.42.34h0a.44.44,0,1,1-.26-.84ZM24.31,33a.45.45,0,0,1,.54-.32l2.16.55,2.14-.55a.45.45,0,0,1,.54.32.44.44,0,0,1-.32.53l-2.25.58a.41.41,0,0,1-.22,0l-2.27-.58h0A.44.44,0,0,1,24.31,33ZM21.9,21.34a.44.44,0,0,1,.28.56.44.44,0,0,1-.56.27A8.35,8.35,0,0,0,19,21.78a8.46,8.46,0,0,0-2.42.34h0a.44.44,0,0,1-.26-.84A9.27,9.27,0,0,1,19,20.9,9.06,9.06,0,0,1,21.9,21.34Zm-1.6,8.08h0v0a.41.41,0,0,1,0-.1c0-.08-.06-.19-.12-.33a4.39,4.39,0,0,0-.47-.95,2.16,2.16,0,0,0-.43-.5,1.11,1.11,0,0,0-.24-.16.7.7,0,0,0-.25-.05.88.88,0,0,0-.29.05,1.82,1.82,0,0,0-.4.24,5,5,0,0,0-1.16,1.3.66.66,0,0,1-.92.17.65.65,0,0,1-.17-.91,7.44,7.44,0,0,1,1.1-1.32A3.45,3.45,0,0,1,18,26.13a2.21,2.21,0,0,1,.75-.14,2,2,0,0,1,.87.21,2.37,2.37,0,0,1,.66.49,4.41,4.41,0,0,1,.84,1.21,7.08,7.08,0,0,1,.3.72c.1.27.14.45.15.46h0a.67.67,0,0,1-.47.81A.66.66,0,0,1,20.3,29.42Zm12.19,8.86a4.18,4.18,0,0,1-.92.52,7.57,7.57,0,0,1-1.11,2.55A4.85,4.85,0,0,1,28.58,43a3.56,3.56,0,0,1-3.16,0,4.71,4.71,0,0,1-1.33-1,7.14,7.14,0,0,1-1.66-3.24,4.18,4.18,0,0,1-.92-.52.44.44,0,0,1-.1-.61.45.45,0,0,1,.62-.1,2.89,2.89,0,0,0,1.76.61,3,3,0,0,0,1.58-.47,4.28,4.28,0,0,0,1.26-1.31.43.43,0,0,1,.74,0,4.28,4.28,0,0,0,1.26,1.31,3,3,0,0,0,1.58.47A2.89,2.89,0,0,0,32,37.57h0a.45.45,0,0,1,.62.1A.44.44,0,0,1,32.49,38.28ZM38,29.07a.66.66,0,0,1-.92-.17,6.25,6.25,0,0,0-.9-1.09,2.25,2.25,0,0,0-.66-.45.88.88,0,0,0-.29-.05.58.58,0,0,0-.28.07,1,1,0,0,0-.31.23,3.29,3.29,0,0,0-.58.84c-.1.21-.19.42-.25.59s-.12.37-.13.38h0a.66.66,0,0,1-.8.47.67.67,0,0,1-.47-.81s.07-.25.2-.58a6.91,6.91,0,0,1,.59-1.2,3.66,3.66,0,0,1,.69-.79,2.3,2.3,0,0,1,.56-.35,1.82,1.82,0,0,1,.78-.17,2.21,2.21,0,0,1,.75.14,3,3,0,0,1,.73.41,6.6,6.6,0,0,1,1.46,1.62A.65.65,0,0,1,38,29.07Z",
                }),
                o.createElement("path", {
                  fill: "#f93838",
                  d: "M27,40.35c1.12,0,1.55-.37,1.89-1.53a4.17,4.17,0,0,1-.73-.37A5,5,0,0,1,27,37.39a5,5,0,0,1-1.16,1.06,4.17,4.17,0,0,1-.73.37C25.45,40,25.88,40.35,27,40.35Z",
                }),
              ),
            ({ style: e }) =>
              o.createElement(
                S.CS.svg,
                {
                  version: "1.1",
                  xmlns: "http://www.w3.org/2000/svg",
                  x: "0px",
                  y: "0px",
                  viewBox: "0 0 14.5 22",
                  style: { width: 28, height: 28, ...e },
                },
                o.createElement("path", {
                  fill: "#fc1010",
                  d: "M1.6,10.1c0,0-0.1,0-0.4-0.1C1,10,0.8,9.9,0.8,9.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.2,0.1-0.4,0.3-0.6v0L1,9c0.1-0.1,0.2-0.3,0.5-0.6C1.8,8.1,2,7.8,2.2,7.5c0-0.1,0.1-0.1,0.1-0.2s0.1-0.1,0.1-0.2C2.6,7,2.7,6.8,2.8,6.5c0-0.1,0.1-0.2,0.1-0.3C3,6.1,3,6,3,5.9c0-0.2-0.1-0.4-0.2-0.5C2.6,5.3,2.4,5.3,2.1,5.3c-0.2,0-0.4,0-0.6,0.1c-0.1,0-0.4,0.1-0.7,0.3c0,0,0,0,0,0c0,0,0-0.1,0-0.1c0-0.2,0-0.4-0.1-0.8l0-0.6l0-0.3l0-0.2V3.5l0.5-0.2C1.6,3.2,2,3.1,2.5,3c0.5-0.1,0.9-0.1,1.4-0.1c0.4,0,0.8,0,1.1,0.1c0.4,0.1,0.7,0.2,0.9,0.4c0.6,0.4,0.9,1,0.9,1.8c0,0.4-0.1,0.8-0.4,1.2C6.1,6.8,5.7,7.2,5.1,7.6h0.5h0.5c0.2,0,0.4,0,0.5,0c0.2,0.1,0.3,0.1,0.3,0.3c0,0.2,0,0.5,0,0.8V9v0.3c0,0.2,0,0.4-0.1,0.5C6.6,10,6.5,10,6.2,10c0,0-0.1,0-0.2,0c-0.1,0-0.4,0-0.9,0H4H3.6H3.1H2.6C1.9,10.1,1.6,10.1,1.6,10.1z",
                }),
                o.createElement("path", {
                  fill: "#fc1010",
                  d: "M9.8,10.3c-0.1,0-0.2,0-0.3,0l-0.6-0.1c0,0-0.1,0-0.1-0.1c0,0-0.1,0-0.1,0c0,0,0,0-0.1,0c0,0,0,0,0-0.1c-0.1,0-0.2-0.1-0.3-0.1C8.1,9.8,8,9.8,8,9.7L7.8,9.6c-0.1,0-0.1-0.1-0.2-0.1C7.4,9.3,7.2,9,7.1,8.6C7,8.3,6.9,8,6.9,7.6c0-0.2,0-0.6,0-0.9c0-0.5,0-0.8,0.1-1.1c0-0.3,0.1-0.7,0.3-1.1c0.1,0,0.1-0.2,0.3-0.5c0,0,0.1-0.1,0.1-0.1s0-0.1,0.1-0.1c0,0,0,0,0-0.1s0-0.1,0.1-0.1c0.1,0,0.2-0.1,0.3-0.2c0,0,0.1-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.1C8.5,3.1,8.8,3,9.1,2.9c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.2,0c0.1,0,0.2,0,0.3,0c0.1,0,0.1,0,0.2,0c0.5,0,0.9,0,1.3,0.1c0.3,0,0.7,0.1,1.1,0.2c0,0,0.1,0,0.1,0c0.3,0.1,0.5,0.2,0.6,0.2c0.1,0,0.1,0.1,0.1,0.1v0.1c0.1,0,0.2,0,0.3,0.1s0.2,0.2,0.3,0.3c0.1,0.1,0.2,0.2,0.2,0.4c0,0.1,0.1,0.2,0.1,0.3c0.1,0,0.1,0,0.1,0s0,0,0,0.1c0,0.2,0.1,0.4,0.1,0.5c0,0.1,0,0.1,0.1,0.2c0,0.1,0,0.2,0.1,0.3l0,0.1l0,0.4v0.3c0,0.6,0,1.1-0.1,1.4C14.2,8.6,14,9,13.7,9.3c-0.1,0.1-0.3,0.2-0.4,0.3l-0.4,0.3c-0.2,0.1-0.4,0.1-0.5,0.2l-0.5,0.2c-0.3,0-0.6,0-0.9,0.1c-0.3,0-0.6,0.1-0.9,0.1C9.9,10.3,9.9,10.3,9.8,10.3z M11.2,8.3c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2,0-0.2l0-0.3c0-0.2,0-0.5,0-0.7c0-0.1,0-0.2,0-0.3c0-0.2,0-0.4-0.1-0.6c0-0.2-0.1-0.3-0.1-0.5c0-0.2-0.1-0.3-0.1-0.3c0-0.1,0-0.3-0.1-0.3c-0.1-0.1-0.1-0.1-0.3-0.1c-0.2,0-0.4,0.1-0.5,0.4c0,0.1-0.1,0.2-0.1,0.3c0,0,0,0.2,0,0.3L10,6.2C9.9,6.4,9.9,6.6,9.9,6.8c0,0.3,0,0.5,0.1,0.8c0,0.1,0,0.2,0.1,0.4s0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.2c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0C10.9,8.6,11.1,8.5,11.2,8.3z",
                }),
                o.createElement("path", {
                  fill: "#fc1010",
                  d: "M1.6,17.5c0,0-0.1,0-0.4-0.1c-0.2,0-0.4-0.1-0.4-0.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.2,0.1-0.4,0.3-0.6v0L1,16.4c0.1-0.1,0.2-0.3,0.5-0.6c0.2-0.2,0.4-0.5,0.7-0.9c0-0.1,0.1-0.1,0.1-0.2s0.1-0.1,0.1-0.2c0.1-0.1,0.2-0.3,0.3-0.6c0-0.1,0.1-0.2,0.1-0.3C3,13.5,3,13.4,3,13.3c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.1-0.4-0.1-0.7-0.1c-0.2,0-0.4,0-0.6,0.1c-0.1,0-0.4,0.1-0.7,0.3c0,0,0,0,0,0c0,0,0-0.1,0-0.1c0-0.2,0-0.4-0.1-0.8l0-0.6l0-0.3l0-0.2v-0.1l0.5-0.2c0.4-0.1,0.9-0.2,1.3-0.3c0.5-0.1,0.9-0.1,1.4-0.1c0.4,0,0.8,0,1.1,0.1c0.4,0.1,0.7,0.2,0.9,0.4c0.6,0.4,0.9,1,0.9,1.8c0,0.4-0.1,0.8-0.4,1.2c-0.3,0.4-0.7,0.8-1.3,1.2h0.5h0.5c0.2,0,0.4,0,0.5,0c0.2,0.1,0.3,0.1,0.3,0.3c0,0.2,0,0.5,0,0.8v0.3v0.3c0,0.2,0,0.4-0.1,0.5c-0.1,0.1-0.3,0.2-0.5,0.2c0,0-0.1,0-0.2,0c-0.1,0-0.4,0-0.9,0H4H3.6H3.1H2.6C1.9,17.5,1.6,17.5,1.6,17.5z",
                }),
                o.createElement("path", {
                  fill: "#fc1010",
                  d: "M9.8,17.7c-0.1,0-0.2,0-0.3,0l-0.6-0.1c0,0-0.1,0-0.1-0.1c0,0-0.1,0-0.1,0c0,0,0,0-0.1,0c0,0,0,0,0-0.1c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2-0.1-0.3-0.1L7.8,17c-0.1,0-0.1-0.1-0.2-0.1c-0.2-0.2-0.4-0.5-0.5-0.9C7,15.7,6.9,15.4,6.9,15c0-0.2,0-0.6,0-0.9c0-0.5,0-0.8,0.1-1.1c0-0.3,0.1-0.7,0.3-1.1c0.1,0,0.1-0.2,0.3-0.5c0,0,0.1-0.1,0.1-0.1s0-0.1,0.1-0.1c0,0,0,0,0-0.1s0-0.1,0.1-0.1c0.1,0,0.2-0.1,0.3-0.2c0,0,0.1-0.1,0.2-0.1c0.1-0.1,0.1-0.1,0.2-0.1c0.2-0.1,0.5-0.2,0.8-0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.2,0c0.1,0,0.2,0,0.3,0c0.1,0,0.1,0,0.2,0c0.5,0,0.9,0,1.3,0.1c0.3,0,0.7,0.1,1.1,0.2c0,0,0.1,0,0.1,0c0.3,0.1,0.5,0.2,0.6,0.2c0.1,0,0.1,0.1,0.1,0.1v0.1c0.1,0,0.2,0,0.3,0.1s0.2,0.2,0.3,0.3c0.1,0.1,0.2,0.2,0.2,0.4c0,0.1,0.1,0.2,0.1,0.3c0.1,0,0.1,0,0.1,0s0,0,0,0.1c0,0.2,0.1,0.4,0.1,0.5c0,0.1,0,0.1,0.1,0.2c0,0.1,0,0.2,0.1,0.3l0,0.1l0,0.4v0.3c0,0.6,0,1.1-0.1,1.4c-0.1,0.5-0.3,0.9-0.7,1.2c-0.1,0.1-0.3,0.2-0.4,0.3l-0.4,0.3c-0.2,0.1-0.4,0.1-0.5,0.2l-0.5,0.2c-0.3,0-0.6,0-0.9,0.1c-0.3,0-0.6,0.1-0.9,0.1C9.9,17.7,9.9,17.7,9.8,17.7z M11.2,15.7c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.2,0-0.2l0-0.3c0-0.2,0-0.5,0-0.7c0-0.1,0-0.2,0-0.3c0-0.2,0-0.4-0.1-0.6c0-0.2-0.1-0.3-0.1-0.5c0-0.2-0.1-0.3-0.1-0.3c0-0.1,0-0.3-0.1-0.3C10.9,12,10.8,12,10.7,12c-0.2,0-0.4,0.1-0.5,0.4c0,0.1-0.1,0.2-0.1,0.3c0,0,0,0.2,0,0.3L10,13.6c-0.1,0.2-0.1,0.4-0.1,0.6c0,0.3,0,0.5,0.1,0.8c0,0.1,0,0.2,0.1,0.4s0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.2,0.2c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0C10.9,16,11.1,15.9,11.2,15.7z",
                }),
              ),
          ];
        class P extends u {
          m_x;
          m_y;
          m_nRotate;
          m_splatRots;
          m_nPathAnimation;
          m_nKeyID;
          static sm_nUnique = 0;
          constructor(e) {
            super(e),
              (this.m_x = m.Tg(0, 70) + "%"),
              (this.m_y = m.Tg(0, 70) + "%"),
              (this.m_nRotate = Math.floor(90 * Math.random()) - 45),
              (this.m_splatRots = [
                360 * Math.random(),
                360 * Math.random(),
                360 * Math.random(),
              ]),
              (this.m_nPathAnimation = m.Tg(1, 6)),
              (this.m_nKeyID = P.sm_nUnique++),
              (this.m_strSaleId = "winter2019");
          }
          fragment(e, ...t) {
            let n = t.map((e) => l()[e]);
            return (
              n.push(l().snowball_fragment),
              o.createElement("img", {
                src: this.getAsset(e),
                className: n.join(" "),
              })
            );
          }
          Snowball(e, t, ...n) {
            let i = e < 0 ? l().SnowballImageCW : l().SnowballImageCCW;
            e > -5 && e < 5 && (i = "");
            let r = n.map((e) => l()[e]);
            return (
              r.push(l().snowball_fragment),
              o.createElement(
                "div",
                { style: { display: "inline-block" }, className: r.join(" ") },
                o.createElement("img", {
                  style: { transform: "rotation( 360deg )" },
                  className: `${l().SnowballImage} ${i}`,
                  src: this.getAsset(t),
                }),
              )
            );
          }
          residue() {
            return o.createElement(
              o.Fragment,
              null,
              o.createElement(
                "div",
                { style: { transform: `rotate(${this.m_splatRots[0]}deg)` } },
                this.fragment("splat1.png", "snowball-residue"),
              ),
              o.createElement(
                "div",
                { style: { transform: `rotate(${this.m_splatRots[1]}deg)` } },
                this.fragment("splat2.png", "snowball-residue"),
              ),
              o.createElement(
                "div",
                { style: { transform: `rotate(${this.m_splatRots[2]}deg)` } },
                this.fragment("splat3.png", "snowball-residue"),
              ),
            );
          }
          render() {
            let e = `snowball-path-${this.m_nPathAnimation}`,
              t = { animationName: l()[e] };
            return o.createElement(
              o.Fragment,
              { key: `${this.m_nKeyID}` },
              o.createElement(
                "div",
                { className: l()["snowball-path"], style: t },
                o.createElement(
                  "div",
                  {
                    className: l()["snowball-container"],
                    style: {
                      left: this.m_x,
                      top: this.m_y,
                      transform: `rotate( ${this.m_nRotate}deg )`,
                    },
                  },
                  this.Snowball(this.m_nRotate, "snowball.png", "snowball"),
                  this.fragment("slide-out-tl.png", "slide-out-tl"),
                  this.fragment("slide-out-tr.png", "slide-out-tr"),
                  this.fragment("slide-out-bottom.png", "slide-out-bottom"),
                  this.residue(),
                  this.fragment(
                    "snowball_1.png",
                    "snowball-chunk",
                    "snowball-chunk-1",
                  ),
                  this.fragment(
                    "snowball_2.png",
                    "snowball-chunk",
                    "snowball-chunk-2",
                  ),
                  this.fragment(
                    "snowball_3.png",
                    "snowball-chunk",
                    "snowball-chunk-3",
                  ),
                  this.fragment(
                    "snowball_4.png",
                    "snowball-chunk",
                    "snowball-chunk-4",
                  ),
                ),
              ),
            );
          }
        }
        var B = n(37779);
        function x(e) {
          const t = e.data,
            n = d(e.sale, e.effect.name, `${t.strImage}.png`);
          let i = null;
          if (t.SOverlay) {
            const n = t.SOverlay
                ? d(e.sale, e.effect.name, `${t.SOverlay.strImage}.png`)
                : null,
              r = { animationDuration: `${t.SOverlay.nDuration}s` };
            i = o.createElement("img", {
              src: n,
              className: l()[t.SOverlay.strClass],
              style: r,
            });
          }
          let r = {
            animationDuration: `${t.nDuration}s`,
            animationName: l()[t.strAnimation],
            marginLeft: `${t.nOffset}%`,
          };
          return o.createElement(
            "div",
            { style: r, className: l().balloons },
            o.createElement("img", {
              src: n,
              style: { maxWidth: "100%", position: "absolute" },
            }),
            i,
          );
        }
        class O extends u {
          m_rgBalloons = [];
          m_rgImages;
          m_nNextImage = 0;
          constructor(e) {
            if ((super(e), "lny2020" === e.sale))
              this.m_rgImages = ["orange", "peach", "yellow"];
            else
              this.m_rgImages = [
                "balloon_blue",
                "balloon_cyan",
                "balloon_green",
                "balloon_purple",
                "balloon_red",
                "balloon_yellow",
              ];
            B.fW(this.m_rgImages), this.GenerateBalloons();
          }
          GetNextImage() {
            let e = this.m_rgImages[this.m_nNextImage % this.m_rgImages.length];
            return this.m_nNextImage++, e;
          }
          GenerateDuration() {
            return (
              parseFloat(l().balloonsDurationS) +
              parseFloat(l().balloonsDurationJitterS) * Math.random()
            );
          }
          GenerateBalloons() {
            let e = ["balloon_small_1", "balloon_small_2", "balloon_small_3"],
              t = ["balloon_big_1", "balloon_big_2"];
            this.m_rgBalloons = [];
            for (let t of e) {
              let e = m.Tg(-10, 10);
              this.m_rgBalloons.push(this.GenerateSingleBalloon(t, e));
            }
            let n = [70, 20];
            B.fW(n);
            let i = 20 == n[1];
            for (let e of t) {
              let t = m.Tg(-10, 10) + n.pop();
              this.m_rgBalloons.push(this.GenerateSingleBalloon(e, t));
            }
            let o = ["balloon_move_left", "balloon_move_right"][m.Tg(0, 1)];
            i && (o = "balloon_move_left");
            let r = m.Tg(-10, 10);
            this.m_rgBalloons.push(this.GenerateSingleBalloon(o, r));
          }
          GenerateSingleBalloon(e, t) {
            const n = this.GetNextImage();
            let i = {
              strAnimation: e,
              strImage: n,
              nDuration: this.GenerateDuration(),
              nOffset: t,
            };
            return (
              "lny2020" == this.props.sale &&
                (i.SOverlay = {
                  strImage: n + "-glow",
                  strClass: "lantern_glow",
                  nDuration: 1 + 4 * Math.random(),
                }),
              i
            );
          }
          render() {
            return o.createElement(
              o.Fragment,
              null,
              this.m_rgBalloons.map((e, t) =>
                o.createElement(x, {
                  key: `${t}`,
                  data: e,
                  effect: this.props.effect,
                  sale: this.m_strSaleId,
                }),
              ),
            );
          }
        }
        var N = n(77171);
        class V {
          m_seed;
          constructor(e) {
            this.m_seed = e;
          }
          next() {
            const e = 1e3 * Math.sin(this.m_seed++);
            return e - Math.floor(e);
          }
        }
        function U(e) {
          const t = new V(e);
          let n = 0.8 * t.next() + 0.5;
          const i = 10 * (t.next() + e) + 10 + "px",
            r = {
              opacity: n,
              width: i,
              height: i,
              margin: 30 * t.next() + 15 + "px",
              filter: `hue-rotate(${90 * t.next() - 30}deg) saturate(100%)`,
            },
            a = 1 + Math.floor(5 * t.next()),
            s =
              c.TS.COMMUNITY_CDN_ASSET_URL +
              `winter2019/roomeffects/96px/flake_${a}.png`;
          return o.createElement("img", { style: r, src: s });
        }
        const H = parseInt(l().balloonsDurationMaxMs),
          W = parseInt(l().snowballDurationMs);
        function z(e, t) {
          return () => {
            const n =
              c.TS.COMMUNITY_CDN_ASSET_URL +
              t +
              "/roomeffects/96px/" +
              e +
              ".png";
            return o.createElement("img", { style: { width: "100%" }, src: n });
          };
        }
        function j(e, t, n, i) {
          return {
            timeout: n,
            renderButton: z(e, t),
            renderEffectIcon: z(e, t),
            buttonToken: "#ChatEntryButton_Send" + r.Xw(e),
            locToken: "#ChatRoom_RoomEffect" + r.Xw(e),
            render: i,
          };
        }
        function q(e, t, n) {
          return j(e, "winter2019", t, n);
        }
        const K = {
          lny2020_lanterns: j("lny2020_lanterns", "lny2020", H, (e) =>
            o.createElement(O, { effect: e, sale: "lny2020" }),
          ),
          lny2020_firework: j("lny2020_firework", "lny2020", 7e3, () =>
            o.createElement(_, { sale: "lny2020" }),
          ),
          lny2020_confetti: j("lny2020_confetti", "lny2020", v, () =>
            o.createElement(A, { eType: b.LNY2020 }),
          ),
          snowball: q("snowball", W, (e) =>
            o.createElement(P, { effect: e, sale: "winter2019" }),
          ),
          balloons: q("balloons", H, (e) =>
            o.createElement(O, { effect: e, sale: "winter2019" }),
          ),
          confetti: q("confetti", v, () =>
            o.createElement(A, { eType: b.Default }),
          ),
          goldfetti: q("goldfetti", v, () =>
            o.createElement(A, { eType: b.Gold }),
          ),
          firework: q("firework", 7e3, () =>
            o.createElement(_, { sale: "winter2019" }),
          ),
          snow: q("snow", 1e4, function (e) {
            const t = [],
              n = new V(e.timestamp);
            for (let i = 0; i < 150; i++) {
              const r = n.next(),
                a = {
                  left: 100 * n.next() + "%",
                  animationDuration: 3 * (1 - r) + 4 + "s",
                  animationDelay: `${r + 4 * n.next()}s`,
                };
              t.push(
                o.createElement(
                  "div",
                  {
                    key: e.timestamp + "_" + i,
                    style: a,
                    className: (0, N.A)(
                      l().Snowflake,
                      l()["Snowflake-" + (i % 20)],
                    ),
                  },
                  U(r),
                  U(r + 1),
                ),
              );
            }
            return o.createElement(o.Fragment, null, " ", t, " ");
          }),
        };
        let Z = class extends o.Component {
          render() {
            return o.createElement(
              "div",
              { className: l()["animation-container"] },
              this.props.effectManager.m_rgRunningEffects.map((e) =>
                o.createElement(o.Fragment, { key: e.timestamp }, e.render()),
              ),
            );
          }
        };
        Z = (0, i.Cg)([a.PA], Z);
      },
      17070: (e, t, n) => {
        "use strict";
        n.d(t, {
          Bu: () => l.Bu,
          CI: () => g,
          Fd: () => l.Fd,
          GP: () => a.GP,
          Hn: () => C,
          NQ: () => v,
          Pr: () => _,
          QO: () => c,
          Qn: () => u,
          TS: () => a.TS,
          Tc: () => l.Tc,
          UF: () => a.UF,
          XJ: () => l.XJ,
          Y2: () => h,
          bf: () => l.bf,
          iA: () => a.iA,
          rP: () => m,
          rf: () => f,
          ss: () => d,
          td: () => p,
          xv: () => b,
          yK: () => I,
        });
        var i = n(63696),
          o = n(50669),
          r = n(77765),
          a = n(26721),
          s = n(4354),
          l = n(32585);
        const c = i.createContext({}),
          m = (e) => {
            const t = i.useContext(c);
            return (
              (0, r.w)(
                e?.bSuppressAssert || void 0 !== t.IN_GAMEPADUI,
                "Trying to use ConfigContext without a provider!  Add ConfigContextRoot to application.",
              ),
              t
            );
          };
        function d(e) {
          const { IN_GAMEPADUI: t, IN_DESKTOPUI: n, IN_VR: o, children: r } = e,
            l = m({ bSuppressAssert: !0 }),
            d = (0, s.OO)()?.startsWith("Gamepad VR"),
            u = i.useMemo(
              () => ({
                IN_GAMEPADUI: t ?? l?.IN_GAMEPADUI ?? a.TS.IN_GAMEPADUI,
                IN_DESKTOPUI: n ?? l?.IN_DESKTOPUI ?? !1,
                IN_VR: o ?? l?.IN_VR ?? d,
              }),
              [l, t, n, o, d],
            );
          return i.createElement(c.Provider, { value: u }, r);
        }
        function u(e) {
          const t = m(e);
          return t?.IN_GAMEPADUI;
        }
        function h() {
          return a.TS.EREALM === o.TU.k_ESteamRealmChina;
        }
        function p() {
          return "windows" == a.TS.PLATFORM;
        }
        function _() {
          return "macos" == a.TS.PLATFORM;
        }
        function g() {
          return "linux" == a.TS.PLATFORM;
        }
        function C() {
          return a.TS.IN_CHROMEOS;
        }
        function f() {
          return a.TS.ON_STEAMOS;
        }
        function S(e, t) {
          return 0 != t.length && e.startsWith(t);
        }
        const v = "unknown";
        function b() {
          if (!window || !window.location || !window.location.href)
            return console.warn("Unable to determine base url!"), v;
          const e = window.location.href;
          return S(e, a.TS.STORE_BASE_URL)
            ? a.TS.STORE_BASE_URL
            : S(e, a.TS.COMMUNITY_BASE_URL)
              ? a.TS.COMMUNITY_BASE_URL
              : S(e, a.TS.CHAT_BASE_URL)
                ? a.TS.CHAT_BASE_URL
                : S(e, a.TS.PARTNER_BASE_URL)
                  ? a.TS.PARTNER_BASE_URL
                  : S(e, a.TS.HELP_BASE_URL)
                    ? a.TS.HELP_BASE_URL
                    : S(e, a.TS.STEAMTV_BASE_URL)
                      ? a.TS.STEAMTV_BASE_URL
                      : S(e, a.TS.STATS_BASE_URL)
                        ? a.TS.STATS_BASE_URL
                        : S(e, a.TS.INTERNAL_STATS_BASE_URL)
                          ? a.TS.INTERNAL_STATS_BASE_URL
                          : S(e, a.TS.STORE_CHECKOUT_BASE_URL)
                            ? a.TS.STORE_CHECKOUT_BASE_URL
                            : S(e, "https://steamloopback.host")
                              ? "https://steamloopback.host"
                              : "";
        }
        function I() {
          const e = window.location.href;
          return S(e, a.TS.STORE_BASE_URL) || S(e, a.TS.STORE_CHECKOUT_BASE_URL)
            ? "store"
            : S(e, a.TS.COMMUNITY_BASE_URL)
              ? "community"
              : S(e, a.TS.PARTNER_BASE_URL)
                ? "partnerweb"
                : S(e, a.TS.HELP_BASE_URL)
                  ? "help"
                  : S(e, a.TS.STEAMTV_BASE_URL)
                    ? "steamtv"
                    : S(e, a.TS.STATS_BASE_URL) ||
                        S(e, a.TS.INTERNAL_STATS_BASE_URL)
                      ? "stats"
                      : "";
        }
      },
      26721: (e, t, n) => {
        "use strict";
        n.d(t, {
          GP: () => a,
          P9: () => l,
          TS: () => o,
          UF: () => s,
          iA: () => r,
        });
        var i = n(32585);
        const o = {
          EUNIVERSE: 0,
          WEB_UNIVERSE: "",
          LANGUAGE: "english",
          SUPPORTED_LANGUAGES: [],
          COUNTRY: "",
          AVATAR_BASE_URL: "",
          MEDIA_CDN_COMMUNITY_URL: "",
          MEDIA_CDN_URL: "",
          CLAN_CDN_ASSET_URL: "",
          VIDEO_CDN_URL: "",
          COMMUNITY_CDN_URL: "",
          COMMUNITY_CDN_ASSET_URL: "",
          BASE_URL_SHARED_CDN: "",
          STORE_CDN_URL: "",
          PUBLIC_SHARED_URL: "",
          COMMUNITY_BASE_URL: "",
          CHAT_BASE_URL: "",
          STORE_BASE_URL: "",
          STORE_CHECKOUT_BASE_URL: "",
          LOGIN_BASE_URL: "",
          SUPPORT_BASE_URL: "",
          STORE_ICON_BASE_URL: "",
          STORE_ITEM_BASE_URL: "",
          IMG_URL: "",
          STEAMTV_BASE_URL: "",
          HELP_BASE_URL: "",
          PARTNER_BASE_URL: "",
          STATS_BASE_URL: "",
          INTERNAL_STATS_BASE_URL: "",
          BASE_URL_STORE_CDN_ASSETS: "",
          IN_CLIENT: !1,
          USE_POPUPS: !1,
          IN_MOBILE: !1,
          IN_MOBILE_WEBVIEW: !1,
          IN_TENFOOT: !1,
          PLATFORM: "",
          SNR: "",
          LAUNCHER_TYPE: 0,
          EREALM: 0,
          IN_CHROMEOS: !1,
          TESLA: !1,
          LOCAL_HOSTNAME: "",
          WEBAPI_BASE_URL: "",
          TOKEN_URL: "",
          BUILD_TIMESTAMP: 0,
          PAGE_TIMESTAMP: 0,
          FROM_WEB: !1,
          WEBSITE_ID: "Unknown",
          get SESSIONID() {
            return (0, i.KC)();
          },
          FRIENDSUI_BETA: !1,
          STEAM_TV: !1,
          DEV_MODE: !1,
          IN_STEAMUI: !1,
          IN_GAMEPADUI: !1,
          IN_STEAMUI_SHARED_CONTEXT: !1,
          DECK_DISPLAY_MODE: !1,
          ON_DECK: !1,
          ON_STEAMOS: !1,
          IN_GAMESCOPE: !1,
          IN_LOGIN: !1,
          IN_LOGIN_REFRESH: !1,
          USE_LONGEST_LOC_STRING: !1,
          SILENT_STARTUP: !1,
          CLIENT_SESSION: 0,
        };
        const r = {
            logged_in: !1,
            steamid: "",
            accountid: 0,
            account_name: "",
            token: void 0,
            token_use_id: void 0,
            webapi_token: "",
            authwgtoken: "",
            is_support: !1,
            is_limited: !1,
            is_partner_member: !1,
            short_url: "",
            country_code: "",
          },
          a = { steamid: "", clanid: 0, listid: 0 },
          s = {
            CLANSTEAMID: "",
            CLANACCOUNTID: 0,
            APPID: 0,
            VANITY_ID: "",
            IS_CREATOR_HOME: !1,
            IS_CURATOR: !1,
            IS_OGG: !1,
            CAN_UPLOAD_IMAGES: !1,
            IS_VALVE_GROUP: !1,
            IS_ALLOWED_SC: !1,
          },
          l = { ANNOUNCEMENT_GID: "", TAKEOVER_ANNOUNCEMENT_GID: "" };
      },
      32585: (e, t, n) => {
        "use strict";
        n.d(t, {
          Bu: () => _,
          Fd: () => u,
          KC: () => l,
          Tc: () => d,
          XJ: () => m,
          bf: () => c,
        });
        var i = n(49912),
          o = n(90556),
          r = n(26721);
        const a = "webui_config";
        let s;
        function l() {
          if (!(0, o.kI)()) return s || (s = c()), s;
          let e = (0, o.VY)("sessionid");
          return e || (e = c()), e;
        }
        function c() {
          const e = (function () {
            let e = "";
            for (let t = 0; t < 24; t++) e += (0, i.Tg)(0, 35).toString(36);
            return e;
          })();
          return (0, o.lc)("sessionid", e, 0), e;
        }
        function m(e = a) {
          const t = {},
            n = d("config", e);
          n && (delete n.SESSIONID, Object.assign(r.TS, n), (t.config = !0));
          const i = d("userinfo", e);
          i &&
            (Object.assign(r.iA, i),
            (t.userConfig = !0),
            r.iA.is_support && _() && (r.iA.is_support = !1));
          const o = d("broadcast", e);
          o && (Object.assign(r.GP, o), (t.broadcastConfig = !0));
          const s = d("community", e);
          s && (Object.assign(r.UF, s), (t.communityConfig = !0));
          const l = d("event", e);
          return l && (Object.assign(r.P9, l), (t.eventConfig = !0)), t;
        }
        function d(e, t = a) {
          return h(e, t, !0);
        }
        function u(e, t = a) {
          return h(e, t, !1);
        }
        function h(e, t = a, n) {
          let i;
          if (
            ((i =
              "string" == typeof t
                ? {
                    NODE_ENV: "production",
                    STEAM_BUILD: "buildbot",
                    VALVE_BUILD: "false",
                  }.MOBILE_BUILD
                  ? null
                  : document.getElementById(t)
                : t),
            i)
          )
            try {
              if (i.hasAttribute("data-" + e)) {
                return JSON.parse(i.getAttribute("data-" + e));
              }
              return null;
            } catch (e) {
              console.error(
                "Failed to parse config for " +
                  r.iA.steamid +
                  " (" +
                  window.location.href +
                  ")",
                e,
              );
            }
          else n && console.error("Missing config element #", t);
        }
        const p = "presentation_mode";
        function _() {
          let e = null;
          return (
            (0, o.kI)() && (e = (0, o.VY)(p)),
            Boolean(e && 1 === Number.parseInt(e))
          );
        }
      },
      64951: (e, t, n) => {
        "use strict";
        "VALVE_PUBLIC_PATH" in window
          ? (n.p = window.VALVE_PUBLIC_PATH)
          : console.error(
              "VALVE_PUBLIC_PATH not defined; check for a call to CHTMLHelpers::WebpackConfigScriptlet",
            ),
          123 !== Array.from(new Set([123]))[0] &&
            console.error("Should not include prototypejs.");
      },
      4354: (e, t, n) => {
        "use strict";
        n.d(t, { $W: () => m, Ae: () => c, OO: () => d });
        let i = !1,
          o = !1,
          r = !1,
          a = !1,
          s = !1,
          l = !1;
        function c() {
          return i || h(), l;
        }
        function m() {
          return c() || (i || h(), s);
        }
        function d() {
          if (!navigator?.userAgent) return;
          const e = navigator.userAgent.match(/Valve Steam ([^\/]*)\//);
          return e && 2 == e.length ? e[1] : void 0;
        }
        function u(e, t) {
          return (
            !!window.location.href.match("[?&]" + t + "=") ||
            !(
              "undefined" == typeof navigator ||
              !navigator.userAgent ||
              -1 == navigator.userAgent.toLowerCase().indexOf(e.toLowerCase())
            )
          );
        }
        function h() {
          (a = u("Valve Steam Tenfoot", "force_tenfoot_client_view")),
            (r = u("Valve Steam GameOverlay", "force_overlay_view")),
            (o = a || u("Valve Steam Client", "force_client_view")),
            (l =
              u("iphone", "force_ios_view") ||
              u("ipad", "force_ios_view") ||
              u("ipod", "force_ios_view") ||
              (u("macintosh", "force_ios_view") &&
                u("safari", "force_ios_view"))),
            (s = u("android", "force_android_view")),
            (i = !0);
        }
      },
      36500: (e, t, n) => {
        "use strict";
        var i;
        n.d(t, { A: () => k });
        function o(e, t, n) {
          null != e &&
            ("number" == typeof e
              ? this.fromNumber(e, t, n)
              : null == t && "string" != typeof e
                ? this.fromString(e, 256)
                : this.fromString(e, t));
        }
        function r() {
          return new o(null);
        }
        "Microsoft Internet Explorer" == navigator.appName
          ? ((o.prototype.am = function (e, t, n, i, o, r) {
              for (var a = 32767 & t, s = t >> 15; --r >= 0; ) {
                var l = 32767 & this[e],
                  c = this[e++] >> 15,
                  m = s * l + c * a;
                (o =
                  ((l =
                    a * l + ((32767 & m) << 15) + n[i] + (1073741823 & o)) >>>
                    30) +
                  (m >>> 15) +
                  s * c +
                  (o >>> 30)),
                  (n[i++] = 1073741823 & l);
              }
              return o;
            }),
            (i = 30))
          : "Netscape" != navigator.appName
            ? ((o.prototype.am = function (e, t, n, i, o, r) {
                for (; --r >= 0; ) {
                  var a = t * this[e++] + n[i] + o;
                  (o = Math.floor(a / 67108864)), (n[i++] = 67108863 & a);
                }
                return o;
              }),
              (i = 26))
            : ((o.prototype.am = function (e, t, n, i, o, r) {
                for (var a = 16383 & t, s = t >> 14; --r >= 0; ) {
                  var l = 16383 & this[e],
                    c = this[e++] >> 14,
                    m = s * l + c * a;
                  (o =
                    ((l = a * l + ((16383 & m) << 14) + n[i] + o) >> 28) +
                    (m >> 14) +
                    s * c),
                    (n[i++] = 268435455 & l);
                }
                return o;
              }),
              (i = 28)),
          (o.prototype.DB = i),
          (o.prototype.DM = (1 << i) - 1),
          (o.prototype.DV = 1 << i);
        (o.prototype.FV = Math.pow(2, 52)),
          (o.prototype.F1 = 52 - i),
          (o.prototype.F2 = 2 * i - 52);
        var a,
          s,
          l = "0123456789abcdefghijklmnopqrstuvwxyz",
          c = new Array();
        for (a = "0".charCodeAt(0), s = 0; s <= 9; ++s) c[a++] = s;
        for (a = "a".charCodeAt(0), s = 10; s < 36; ++s) c[a++] = s;
        for (a = "A".charCodeAt(0), s = 10; s < 36; ++s) c[a++] = s;
        function m(e) {
          return l.charAt(e);
        }
        function d(e, t) {
          var n = c[e.charCodeAt(t)];
          return null == n ? -1 : n;
        }
        function u(e) {
          var t = r();
          return t.fromInt(e), t;
        }
        function h(e) {
          var t,
            n = 1;
          return (
            0 != (t = e >>> 16) && ((e = t), (n += 16)),
            0 != (t = e >> 8) && ((e = t), (n += 8)),
            0 != (t = e >> 4) && ((e = t), (n += 4)),
            0 != (t = e >> 2) && ((e = t), (n += 2)),
            0 != (t = e >> 1) && ((e = t), (n += 1)),
            n
          );
        }
        function p(e) {
          this.m = e;
        }
        function _(e) {
          (this.m = e),
            (this.mp = e.invDigit()),
            (this.mpl = 32767 & this.mp),
            (this.mph = this.mp >> 15),
            (this.um = (1 << (e.DB - 15)) - 1),
            (this.mt2 = 2 * e.t);
        }
        function g(e, t) {
          return e & t;
        }
        function C(e, t) {
          return e | t;
        }
        function f(e, t) {
          return e ^ t;
        }
        function S(e, t) {
          return e & ~t;
        }
        function v(e) {
          if (0 == e) return -1;
          var t = 0;
          return (
            0 == (65535 & e) && ((e >>= 16), (t += 16)),
            0 == (255 & e) && ((e >>= 8), (t += 8)),
            0 == (15 & e) && ((e >>= 4), (t += 4)),
            0 == (3 & e) && ((e >>= 2), (t += 2)),
            0 == (1 & e) && ++t,
            t
          );
        }
        function b(e) {
          for (var t = 0; 0 != e; ) (e &= e - 1), ++t;
          return t;
        }
        function I() {}
        function w(e) {
          return e;
        }
        function y(e) {
          (this.r2 = r()),
            (this.q3 = r()),
            o.ONE.dlShiftTo(2 * e.t, this.r2),
            (this.mu = this.r2.divide(e)),
            (this.m = e);
        }
        (p.prototype.convert = function (e) {
          return e.s < 0 || e.compareTo(this.m) >= 0 ? e.mod(this.m) : e;
        }),
          (p.prototype.revert = function (e) {
            return e;
          }),
          (p.prototype.reduce = function (e) {
            e.divRemTo(this.m, null, e);
          }),
          (p.prototype.mulTo = function (e, t, n) {
            e.multiplyTo(t, n), this.reduce(n);
          }),
          (p.prototype.sqrTo = function (e, t) {
            e.squareTo(t), this.reduce(t);
          }),
          (_.prototype.convert = function (e) {
            var t = r();
            return (
              e.abs().dlShiftTo(this.m.t, t),
              t.divRemTo(this.m, null, t),
              e.s < 0 && t.compareTo(o.ZERO) > 0 && this.m.subTo(t, t),
              t
            );
          }),
          (_.prototype.revert = function (e) {
            var t = r();
            return e.copyTo(t), this.reduce(t), t;
          }),
          (_.prototype.reduce = function (e) {
            for (; e.t <= this.mt2; ) e[e.t++] = 0;
            for (var t = 0; t < this.m.t; ++t) {
              var n = 32767 & e[t],
                i =
                  (n * this.mpl +
                    (((n * this.mph + (e[t] >> 15) * this.mpl) & this.um) <<
                      15)) &
                  e.DM;
              for (
                e[(n = t + this.m.t)] += this.m.am(0, i, e, t, 0, this.m.t);
                e[n] >= e.DV;
              )
                (e[n] -= e.DV), e[++n]++;
            }
            e.clamp(),
              e.drShiftTo(this.m.t, e),
              e.compareTo(this.m) >= 0 && e.subTo(this.m, e);
          }),
          (_.prototype.mulTo = function (e, t, n) {
            e.multiplyTo(t, n), this.reduce(n);
          }),
          (_.prototype.sqrTo = function (e, t) {
            e.squareTo(t), this.reduce(t);
          }),
          (o.prototype.copyTo = function (e) {
            for (var t = this.t - 1; t >= 0; --t) e[t] = this[t];
            (e.t = this.t), (e.s = this.s);
          }),
          (o.prototype.fromInt = function (e) {
            (this.t = 1),
              (this.s = e < 0 ? -1 : 0),
              e > 0
                ? (this[0] = e)
                : e < -1
                  ? (this[0] = e + DV)
                  : (this.t = 0);
          }),
          (o.prototype.fromString = function (e, t) {
            var n;
            if (16 == t) n = 4;
            else if (8 == t) n = 3;
            else if (256 == t) n = 8;
            else if (2 == t) n = 1;
            else if (32 == t) n = 5;
            else {
              if (4 != t) return void this.fromRadix(e, t);
              n = 2;
            }
            (this.t = 0), (this.s = 0);
            for (var i = e.length, r = !1, a = 0; --i >= 0; ) {
              var s = 8 == n ? 255 & e[i] : d(e, i);
              s < 0
                ? "-" == e.charAt(i) && (r = !0)
                : ((r = !1),
                  0 == a
                    ? (this[this.t++] = s)
                    : a + n > this.DB
                      ? ((this[this.t - 1] |=
                          (s & ((1 << (this.DB - a)) - 1)) << a),
                        (this[this.t++] = s >> (this.DB - a)))
                      : (this[this.t - 1] |= s << a),
                  (a += n) >= this.DB && (a -= this.DB));
            }
            8 == n &&
              0 != (128 & e[0]) &&
              ((this.s = -1),
              a > 0 && (this[this.t - 1] |= ((1 << (this.DB - a)) - 1) << a)),
              this.clamp(),
              r && o.ZERO.subTo(this, this);
          }),
          (o.prototype.clamp = function () {
            for (
              var e = this.s & this.DM;
              this.t > 0 && this[this.t - 1] == e;
            )
              --this.t;
          }),
          (o.prototype.dlShiftTo = function (e, t) {
            var n;
            for (n = this.t - 1; n >= 0; --n) t[n + e] = this[n];
            for (n = e - 1; n >= 0; --n) t[n] = 0;
            (t.t = this.t + e), (t.s = this.s);
          }),
          (o.prototype.drShiftTo = function (e, t) {
            for (var n = e; n < this.t; ++n) t[n - e] = this[n];
            (t.t = Math.max(this.t - e, 0)), (t.s = this.s);
          }),
          (o.prototype.lShiftTo = function (e, t) {
            var n,
              i = e % this.DB,
              o = this.DB - i,
              r = (1 << o) - 1,
              a = Math.floor(e / this.DB),
              s = (this.s << i) & this.DM;
            for (n = this.t - 1; n >= 0; --n)
              (t[n + a + 1] = (this[n] >> o) | s), (s = (this[n] & r) << i);
            for (n = a - 1; n >= 0; --n) t[n] = 0;
            (t[a] = s), (t.t = this.t + a + 1), (t.s = this.s), t.clamp();
          }),
          (o.prototype.rShiftTo = function (e, t) {
            t.s = this.s;
            var n = Math.floor(e / this.DB);
            if (n >= this.t) t.t = 0;
            else {
              var i = e % this.DB,
                o = this.DB - i,
                r = (1 << i) - 1;
              t[0] = this[n] >> i;
              for (var a = n + 1; a < this.t; ++a)
                (t[a - n - 1] |= (this[a] & r) << o), (t[a - n] = this[a] >> i);
              i > 0 && (t[this.t - n - 1] |= (this.s & r) << o),
                (t.t = this.t - n),
                t.clamp();
            }
          }),
          (o.prototype.subTo = function (e, t) {
            for (var n = 0, i = 0, o = Math.min(e.t, this.t); n < o; )
              (i += this[n] - e[n]), (t[n++] = i & this.DM), (i >>= this.DB);
            if (e.t < this.t) {
              for (i -= e.s; n < this.t; )
                (i += this[n]), (t[n++] = i & this.DM), (i >>= this.DB);
              i += this.s;
            } else {
              for (i += this.s; n < e.t; )
                (i -= e[n]), (t[n++] = i & this.DM), (i >>= this.DB);
              i -= e.s;
            }
            (t.s = i < 0 ? -1 : 0),
              i < -1 ? (t[n++] = this.DV + i) : i > 0 && (t[n++] = i),
              (t.t = n),
              t.clamp();
          }),
          (o.prototype.multiplyTo = function (e, t) {
            var n = this.abs(),
              i = e.abs(),
              r = n.t;
            for (t.t = r + i.t; --r >= 0; ) t[r] = 0;
            for (r = 0; r < i.t; ++r) t[r + n.t] = n.am(0, i[r], t, r, 0, n.t);
            (t.s = 0), t.clamp(), this.s != e.s && o.ZERO.subTo(t, t);
          }),
          (o.prototype.squareTo = function (e) {
            for (var t = this.abs(), n = (e.t = 2 * t.t); --n >= 0; ) e[n] = 0;
            for (n = 0; n < t.t - 1; ++n) {
              var i = t.am(n, t[n], e, 2 * n, 0, 1);
              (e[n + t.t] += t.am(
                n + 1,
                2 * t[n],
                e,
                2 * n + 1,
                i,
                t.t - n - 1,
              )) >= t.DV && ((e[n + t.t] -= t.DV), (e[n + t.t + 1] = 1));
            }
            e.t > 0 && (e[e.t - 1] += t.am(n, t[n], e, 2 * n, 0, 1)),
              (e.s = 0),
              e.clamp();
          }),
          (o.prototype.divRemTo = function (e, t, n) {
            var i = e.abs();
            if (!(i.t <= 0)) {
              var a = this.abs();
              if (a.t < i.t)
                return (
                  null != t && t.fromInt(0), void (null != n && this.copyTo(n))
                );
              null == n && (n = r());
              var s = r(),
                l = this.s,
                c = e.s,
                m = this.DB - h(i[i.t - 1]);
              m > 0
                ? (i.lShiftTo(m, s), a.lShiftTo(m, n))
                : (i.copyTo(s), a.copyTo(n));
              var d = s.t,
                u = s[d - 1];
              if (0 != u) {
                var p = u * (1 << this.F1) + (d > 1 ? s[d - 2] >> this.F2 : 0),
                  _ = this.FV / p,
                  g = (1 << this.F1) / p,
                  C = 1 << this.F2,
                  f = n.t,
                  S = f - d,
                  v = null == t ? r() : t;
                for (
                  s.dlShiftTo(S, v),
                    n.compareTo(v) >= 0 && ((n[n.t++] = 1), n.subTo(v, n)),
                    o.ONE.dlShiftTo(d, v),
                    v.subTo(s, s);
                  s.t < d;
                )
                  s[s.t++] = 0;
                for (; --S >= 0; ) {
                  var b =
                    n[--f] == u
                      ? this.DM
                      : Math.floor(n[f] * _ + (n[f - 1] + C) * g);
                  if ((n[f] += s.am(0, b, n, S, 0, d)) < b)
                    for (s.dlShiftTo(S, v), n.subTo(v, n); n[f] < --b; )
                      n.subTo(v, n);
                }
                null != t && (n.drShiftTo(d, t), l != c && o.ZERO.subTo(t, t)),
                  (n.t = d),
                  n.clamp(),
                  m > 0 && n.rShiftTo(m, n),
                  l < 0 && o.ZERO.subTo(n, n);
              }
            }
          }),
          (o.prototype.invDigit = function () {
            if (this.t < 1) return 0;
            var e = this[0];
            if (0 == (1 & e)) return 0;
            var t = 3 & e;
            return (t =
              ((t =
                ((t =
                  ((t = (t * (2 - (15 & e) * t)) & 15) * (2 - (255 & e) * t)) &
                  255) *
                  (2 - (((65535 & e) * t) & 65535))) &
                65535) *
                (2 - ((e * t) % this.DV))) %
              this.DV) > 0
              ? this.DV - t
              : -t;
          }),
          (o.prototype.isEven = function () {
            return 0 == (this.t > 0 ? 1 & this[0] : this.s);
          }),
          (o.prototype.exp = function (e, t) {
            if (e > 4294967295 || e < 1) return o.ONE;
            var n = r(),
              i = r(),
              a = t.convert(this),
              s = h(e) - 1;
            for (a.copyTo(n); --s >= 0; )
              if ((t.sqrTo(n, i), (e & (1 << s)) > 0)) t.mulTo(i, a, n);
              else {
                var l = n;
                (n = i), (i = l);
              }
            return t.revert(n);
          }),
          (o.prototype.toString = function (e) {
            if (this.s < 0) return "-" + this.negate().toString(e);
            var t;
            if (16 == e) t = 4;
            else if (8 == e) t = 3;
            else if (2 == e) t = 1;
            else if (32 == e) t = 5;
            else {
              if (4 != e) return this.toRadix(e);
              t = 2;
            }
            var n,
              i = (1 << t) - 1,
              o = !1,
              r = "",
              a = this.t,
              s = this.DB - ((a * this.DB) % t);
            if (a-- > 0)
              for (
                s < this.DB && (n = this[a] >> s) > 0 && ((o = !0), (r = m(n)));
                a >= 0;
              )
                s < t
                  ? ((n = (this[a] & ((1 << s) - 1)) << (t - s)),
                    (n |= this[--a] >> (s += this.DB - t)))
                  : ((n = (this[a] >> (s -= t)) & i),
                    s <= 0 && ((s += this.DB), --a)),
                  n > 0 && (o = !0),
                  o && (r += m(n));
            return o ? r : "0";
          }),
          (o.prototype.negate = function () {
            var e = r();
            return o.ZERO.subTo(this, e), e;
          }),
          (o.prototype.abs = function () {
            return this.s < 0 ? this.negate() : this;
          }),
          (o.prototype.compareTo = function (e) {
            var t = this.s - e.s;
            if (0 != t) return t;
            var n = this.t;
            if (0 != (t = n - e.t)) return t;
            for (; --n >= 0; ) if (0 != (t = this[n] - e[n])) return t;
            return 0;
          }),
          (o.prototype.bitLength = function () {
            return this.t <= 0
              ? 0
              : this.DB * (this.t - 1) +
                  h(this[this.t - 1] ^ (this.s & this.DM));
          }),
          (o.prototype.mod = function (e) {
            var t = r();
            return (
              this.abs().divRemTo(e, null, t),
              this.s < 0 && t.compareTo(o.ZERO) > 0 && e.subTo(t, t),
              t
            );
          }),
          (o.prototype.modPowInt = function (e, t) {
            var n;
            return (
              (n = e < 256 || t.isEven() ? new p(t) : new _(t)), this.exp(e, n)
            );
          }),
          (o.ZERO = u(0)),
          (o.ONE = u(1)),
          (I.prototype.convert = w),
          (I.prototype.revert = w),
          (I.prototype.mulTo = function (e, t, n) {
            e.multiplyTo(t, n);
          }),
          (I.prototype.sqrTo = function (e, t) {
            e.squareTo(t);
          }),
          (y.prototype.convert = function (e) {
            if (e.s < 0 || e.t > 2 * this.m.t) return e.mod(this.m);
            if (e.compareTo(this.m) < 0) return e;
            var t = r();
            return e.copyTo(t), this.reduce(t), t;
          }),
          (y.prototype.revert = function (e) {
            return e;
          }),
          (y.prototype.reduce = function (e) {
            for (
              e.drShiftTo(this.m.t - 1, this.r2),
                e.t > this.m.t + 1 && ((e.t = this.m.t + 1), e.clamp()),
                this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3),
                this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);
              e.compareTo(this.r2) < 0;
            )
              e.dAddOffset(1, this.m.t + 1);
            for (e.subTo(this.r2, e); e.compareTo(this.m) >= 0; )
              e.subTo(this.m, e);
          }),
          (y.prototype.mulTo = function (e, t, n) {
            e.multiplyTo(t, n), this.reduce(n);
          }),
          (y.prototype.sqrTo = function (e, t) {
            e.squareTo(t), this.reduce(t);
          });
        var E = [
            2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,
            67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137,
            139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
            211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277,
            281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
            367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439,
            443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509,
          ],
          D = (1 << 26) / E[E.length - 1];
        (o.prototype.chunkSize = function (e) {
          return Math.floor((Math.LN2 * this.DB) / Math.log(e));
        }),
          (o.prototype.toRadix = function (e) {
            if ((null == e && (e = 10), 0 == this.signum() || e < 2 || e > 36))
              return "0";
            var t = this.chunkSize(e),
              n = Math.pow(e, t),
              i = u(n),
              o = r(),
              a = r(),
              s = "";
            for (this.divRemTo(i, o, a); o.signum() > 0; )
              (s = (n + a.intValue()).toString(e).substr(1) + s),
                o.divRemTo(i, o, a);
            return a.intValue().toString(e) + s;
          }),
          (o.prototype.fromRadix = function (e, t) {
            this.fromInt(0), null == t && (t = 10);
            for (
              var n = this.chunkSize(t),
                i = Math.pow(t, n),
                r = !1,
                a = 0,
                s = 0,
                l = 0;
              l < e.length;
              ++l
            ) {
              var c = d(e, l);
              c < 0
                ? "-" == e.charAt(l) && 0 == this.signum() && (r = !0)
                : ((s = t * s + c),
                  ++a >= n &&
                    (this.dMultiply(i),
                    this.dAddOffset(s, 0),
                    (a = 0),
                    (s = 0)));
            }
            a > 0 && (this.dMultiply(Math.pow(t, a)), this.dAddOffset(s, 0)),
              r && o.ZERO.subTo(this, this);
          }),
          (o.prototype.fromNumber = function (e, t, n) {
            if ("number" == typeof t)
              if (e < 2) this.fromInt(1);
              else
                for (
                  this.fromNumber(e, n),
                    this.testBit(e - 1) ||
                      this.bitwiseTo(o.ONE.shiftLeft(e - 1), C, this),
                    this.isEven() && this.dAddOffset(1, 0);
                  !this.isProbablePrime(t);
                )
                  this.dAddOffset(2, 0),
                    this.bitLength() > e &&
                      this.subTo(o.ONE.shiftLeft(e - 1), this);
            else {
              var i = new Array(),
                r = 7 & e;
              (i.length = 1 + (e >> 3)),
                t.nextBytes(i),
                r > 0 ? (i[0] &= (1 << r) - 1) : (i[0] = 0),
                this.fromString(i, 256);
            }
          }),
          (o.prototype.bitwiseTo = function (e, t, n) {
            var i,
              o,
              r = Math.min(e.t, this.t);
            for (i = 0; i < r; ++i) n[i] = t(this[i], e[i]);
            if (e.t < this.t) {
              for (o = e.s & this.DM, i = r; i < this.t; ++i)
                n[i] = t(this[i], o);
              n.t = this.t;
            } else {
              for (o = this.s & this.DM, i = r; i < e.t; ++i) n[i] = t(o, e[i]);
              n.t = e.t;
            }
            (n.s = t(this.s, e.s)), n.clamp();
          }),
          (o.prototype.changeBit = function (e, t) {
            var n = o.ONE.shiftLeft(e);
            return this.bitwiseTo(n, t, n), n;
          }),
          (o.prototype.addTo = function (e, t) {
            for (var n = 0, i = 0, o = Math.min(e.t, this.t); n < o; )
              (i += this[n] + e[n]), (t[n++] = i & this.DM), (i >>= this.DB);
            if (e.t < this.t) {
              for (i += e.s; n < this.t; )
                (i += this[n]), (t[n++] = i & this.DM), (i >>= this.DB);
              i += this.s;
            } else {
              for (i += this.s; n < e.t; )
                (i += e[n]), (t[n++] = i & this.DM), (i >>= this.DB);
              i += e.s;
            }
            (t.s = i < 0 ? -1 : 0),
              i > 0 ? (t[n++] = i) : i < -1 && (t[n++] = this.DV + i),
              (t.t = n),
              t.clamp();
          }),
          (o.prototype.dMultiply = function (e) {
            (this[this.t] = this.am(0, e - 1, this, 0, 0, this.t)),
              ++this.t,
              this.clamp();
          }),
          (o.prototype.dAddOffset = function (e, t) {
            for (; this.t <= t; ) this[this.t++] = 0;
            for (this[t] += e; this[t] >= this.DV; )
              (this[t] -= this.DV),
                ++t >= this.t && (this[this.t++] = 0),
                ++this[t];
          }),
          (o.prototype.multiplyLowerTo = function (e, t, n) {
            var i,
              o = Math.min(this.t + e.t, t);
            for (n.s = 0, n.t = o; o > 0; ) n[--o] = 0;
            for (i = n.t - this.t; o < i; ++o)
              n[o + this.t] = this.am(0, e[o], n, o, 0, this.t);
            for (i = Math.min(e.t, t); o < i; ++o)
              this.am(0, e[o], n, o, 0, t - o);
            n.clamp();
          }),
          (o.prototype.multiplyUpperTo = function (e, t, n) {
            --t;
            var i = (n.t = this.t + e.t - t);
            for (n.s = 0; --i >= 0; ) n[i] = 0;
            for (i = Math.max(t - this.t, 0); i < e.t; ++i)
              n[this.t + i - t] = this.am(t - i, e[i], n, 0, 0, this.t + i - t);
            n.clamp(), n.drShiftTo(1, n);
          }),
          (o.prototype.modInt = function (e) {
            if (e <= 0) return 0;
            var t = this.DV % e,
              n = this.s < 0 ? e - 1 : 0;
            if (this.t > 0)
              if (0 == t) n = this[0] % e;
              else
                for (var i = this.t - 1; i >= 0; --i) n = (t * n + this[i]) % e;
            return n;
          }),
          (o.prototype.millerRabin = function (e) {
            var t = this.subtract(o.ONE),
              n = t.getLowestSetBit();
            if (n <= 0) return !1;
            var i = t.shiftRight(n);
            (e = (e + 1) >> 1) > E.length && (e = E.length);
            for (var a = r(), s = 0; s < e; ++s) {
              a.fromInt(E[s]);
              var l = a.modPow(i, this);
              if (0 != l.compareTo(o.ONE) && 0 != l.compareTo(t)) {
                for (var c = 1; c++ < n && 0 != l.compareTo(t); )
                  if (0 == (l = l.modPowInt(2, this)).compareTo(o.ONE))
                    return !1;
                if (0 != l.compareTo(t)) return !1;
              }
            }
            return !0;
          }),
          (o.prototype.clone = function () {
            var e = r();
            return this.copyTo(e), e;
          }),
          (o.prototype.intValue = function () {
            if (this.s < 0) {
              if (1 == this.t) return this[0] - this.DV;
              if (0 == this.t) return -1;
            } else {
              if (1 == this.t) return this[0];
              if (0 == this.t) return 0;
            }
            return (
              ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
            );
          }),
          (o.prototype.byteValue = function () {
            return 0 == this.t ? this.s : (this[0] << 24) >> 24;
          }),
          (o.prototype.shortValue = function () {
            return 0 == this.t ? this.s : (this[0] << 16) >> 16;
          }),
          (o.prototype.signum = function () {
            return this.s < 0
              ? -1
              : this.t <= 0 || (1 == this.t && this[0] <= 0)
                ? 0
                : 1;
          }),
          (o.prototype.toByteArray = function () {
            var e = this.t,
              t = new Array();
            t[0] = this.s;
            var n,
              i = this.DB - ((e * this.DB) % 8),
              o = 0;
            if (e-- > 0)
              for (
                i < this.DB &&
                (n = this[e] >> i) != (this.s & this.DM) >> i &&
                (t[o++] = n | (this.s << (this.DB - i)));
                e >= 0;
              )
                i < 8
                  ? ((n = (this[e] & ((1 << i) - 1)) << (8 - i)),
                    (n |= this[--e] >> (i += this.DB - 8)))
                  : ((n = (this[e] >> (i -= 8)) & 255),
                    i <= 0 && ((i += this.DB), --e)),
                  0 != (128 & n) && (n |= -256),
                  0 == o && (128 & this.s) != (128 & n) && ++o,
                  (o > 0 || n != this.s) && (t[o++] = n);
            return t;
          }),
          (o.prototype.equals = function (e) {
            return 0 == this.compareTo(e);
          }),
          (o.prototype.min = function (e) {
            return this.compareTo(e) < 0 ? this : e;
          }),
          (o.prototype.max = function (e) {
            return this.compareTo(e) > 0 ? this : e;
          }),
          (o.prototype.and = function (e) {
            var t = r();
            return this.bitwiseTo(e, g, t), t;
          }),
          (o.prototype.or = function (e) {
            var t = r();
            return this.bitwiseTo(e, C, t), t;
          }),
          (o.prototype.xor = function (e) {
            var t = r();
            return this.bitwiseTo(e, f, t), t;
          }),
          (o.prototype.andNot = function (e) {
            var t = r();
            return this.bitwiseTo(e, S, t), t;
          }),
          (o.prototype.not = function () {
            for (var e = r(), t = 0; t < this.t; ++t) e[t] = this.DM & ~this[t];
            return (e.t = this.t), (e.s = ~this.s), e;
          }),
          (o.prototype.shiftLeft = function (e) {
            var t = r();
            return e < 0 ? this.rShiftTo(-e, t) : this.lShiftTo(e, t), t;
          }),
          (o.prototype.shiftRight = function (e) {
            var t = r();
            return e < 0 ? this.lShiftTo(-e, t) : this.rShiftTo(e, t), t;
          }),
          (o.prototype.getLowestSetBit = function () {
            for (var e = 0; e < this.t; ++e)
              if (0 != this[e]) return e * this.DB + v(this[e]);
            return this.s < 0 ? this.t * this.DB : -1;
          }),
          (o.prototype.bitCount = function () {
            for (var e = 0, t = this.s & this.DM, n = 0; n < this.t; ++n)
              e += b(this[n] ^ t);
            return e;
          }),
          (o.prototype.testBit = function (e) {
            var t = Math.floor(e / this.DB);
            return t >= this.t
              ? 0 != this.s
              : 0 != (this[t] & (1 << (e % this.DB)));
          }),
          (o.prototype.setBit = function (e) {
            return this.changeBit(e, C);
          }),
          (o.prototype.clearBit = function (e) {
            return this.changeBit(e, S);
          }),
          (o.prototype.flipBit = function (e) {
            return this.changeBit(e, f);
          }),
          (o.prototype.add = function (e) {
            var t = r();
            return this.addTo(e, t), t;
          }),
          (o.prototype.subtract = function (e) {
            var t = r();
            return this.subTo(e, t), t;
          }),
          (o.prototype.multiply = function (e) {
            var t = r();
            return this.multiplyTo(e, t), t;
          }),
          (o.prototype.divide = function (e) {
            var t = r();
            return this.divRemTo(e, t, null), t;
          }),
          (o.prototype.remainder = function (e) {
            var t = r();
            return this.divRemTo(e, null, t), t;
          }),
          (o.prototype.divideAndRemainder = function (e) {
            var t = r(),
              n = r();
            return this.divRemTo(e, t, n), new Array(t, n);
          }),
          (o.prototype.modPow = function (e, t) {
            var n,
              i,
              o = e.bitLength(),
              a = u(1);
            if (o <= 0) return a;
            (n = o < 18 ? 1 : o < 48 ? 3 : o < 144 ? 4 : o < 768 ? 5 : 6),
              (i = o < 8 ? new p(t) : t.isEven() ? new y(t) : new _(t));
            var s = new Array(),
              l = 3,
              c = n - 1,
              m = (1 << n) - 1;
            if (((s[1] = i.convert(this)), n > 1)) {
              var d = r();
              for (i.sqrTo(s[1], d); l <= m; )
                (s[l] = r()), i.mulTo(d, s[l - 2], s[l]), (l += 2);
            }
            var g,
              C,
              f = e.t - 1,
              S = !0,
              v = r();
            for (o = h(e[f]) - 1; f >= 0; ) {
              for (
                o >= c
                  ? (g = (e[f] >> (o - c)) & m)
                  : ((g = (e[f] & ((1 << (o + 1)) - 1)) << (c - o)),
                    f > 0 && (g |= e[f - 1] >> (this.DB + o - c))),
                  l = n;
                0 == (1 & g);
              )
                (g >>= 1), --l;
              if (((o -= l) < 0 && ((o += this.DB), --f), S))
                s[g].copyTo(a), (S = !1);
              else {
                for (; l > 1; ) i.sqrTo(a, v), i.sqrTo(v, a), (l -= 2);
                l > 0 ? i.sqrTo(a, v) : ((C = a), (a = v), (v = C)),
                  i.mulTo(v, s[g], a);
              }
              for (; f >= 0 && 0 == (e[f] & (1 << o)); )
                i.sqrTo(a, v),
                  (C = a),
                  (a = v),
                  (v = C),
                  --o < 0 && ((o = this.DB - 1), --f);
            }
            return i.revert(a);
          }),
          (o.prototype.modInverse = function (e) {
            var t = e.isEven();
            if ((this.isEven() && t) || 0 == e.signum()) return o.ZERO;
            for (
              var n = e.clone(),
                i = this.clone(),
                r = u(1),
                a = u(0),
                s = u(0),
                l = u(1);
              0 != n.signum();
            ) {
              for (; n.isEven(); )
                n.rShiftTo(1, n),
                  t
                    ? ((r.isEven() && a.isEven()) ||
                        (r.addTo(this, r), a.subTo(e, a)),
                      r.rShiftTo(1, r))
                    : a.isEven() || a.subTo(e, a),
                  a.rShiftTo(1, a);
              for (; i.isEven(); )
                i.rShiftTo(1, i),
                  t
                    ? ((s.isEven() && l.isEven()) ||
                        (s.addTo(this, s), l.subTo(e, l)),
                      s.rShiftTo(1, s))
                    : l.isEven() || l.subTo(e, l),
                  l.rShiftTo(1, l);
              n.compareTo(i) >= 0
                ? (n.subTo(i, n), t && r.subTo(s, r), a.subTo(l, a))
                : (i.subTo(n, i), t && s.subTo(r, s), l.subTo(a, l));
            }
            return 0 != i.compareTo(o.ONE)
              ? o.ZERO
              : l.compareTo(e) >= 0
                ? l.subtract(e)
                : l.signum() < 0
                  ? (l.addTo(e, l), l.signum() < 0 ? l.add(e) : l)
                  : l;
          }),
          (o.prototype.pow = function (e) {
            return this.exp(e, new I());
          }),
          (o.prototype.gcd = function (e) {
            var t = this.s < 0 ? this.negate() : this.clone(),
              n = e.s < 0 ? e.negate() : e.clone();
            if (t.compareTo(n) < 0) {
              var i = t;
              (t = n), (n = i);
            }
            var o = t.getLowestSetBit(),
              r = n.getLowestSetBit();
            if (r < 0) return t;
            for (
              o < r && (r = o), r > 0 && (t.rShiftTo(r, t), n.rShiftTo(r, n));
              t.signum() > 0;
            )
              (o = t.getLowestSetBit()) > 0 && t.rShiftTo(o, t),
                (o = n.getLowestSetBit()) > 0 && n.rShiftTo(o, n),
                t.compareTo(n) >= 0
                  ? (t.subTo(n, t), t.rShiftTo(1, t))
                  : (n.subTo(t, n), n.rShiftTo(1, n));
            return r > 0 && n.lShiftTo(r, n), n;
          }),
          (o.prototype.isProbablePrime = function (e) {
            var t,
              n = this.abs();
            if (1 == n.t && n[0] <= E[E.length - 1]) {
              for (t = 0; t < E.length; ++t) if (n[0] == E[t]) return !0;
              return !1;
            }
            if (n.isEven()) return !1;
            for (t = 1; t < E.length; ) {
              for (var i = E[t], o = t + 1; o < E.length && i < D; )
                i *= E[o++];
              for (i = n.modInt(i); t < o; ) if (i % E[t++] == 0) return !1;
            }
            return n.millerRabin(e);
          });
        const A = o;
        var T = function (e, t) {
            (this.modulus = new A(e, 16)),
              (this.encryptionExponent = new A(t, 16));
          },
          M = {
            base64:
              "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
            encode: function (e) {
              if (!e) return !1;
              var t,
                n,
                i,
                o,
                r,
                a,
                s,
                l = "",
                c = 0;
              do {
                (o = (t = e.charCodeAt(c++)) >> 2),
                  (r = ((3 & t) << 4) | ((n = e.charCodeAt(c++)) >> 4)),
                  (a = ((15 & n) << 2) | ((i = e.charCodeAt(c++)) >> 6)),
                  (s = 63 & i),
                  isNaN(n) ? (a = s = 64) : isNaN(i) && (s = 64),
                  (l +=
                    this.base64.charAt(o) +
                    this.base64.charAt(r) +
                    this.base64.charAt(a) +
                    this.base64.charAt(s));
              } while (c < e.length);
              return l;
            },
            decode: function (e) {
              if (!e) return !1;
              e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
              var t,
                n,
                i,
                o,
                r = "",
                a = 0;
              do {
                (t = this.base64.indexOf(e.charAt(a++))),
                  (n = this.base64.indexOf(e.charAt(a++))),
                  (i = this.base64.indexOf(e.charAt(a++))),
                  (o = this.base64.indexOf(e.charAt(a++))),
                  (r += String.fromCharCode((t << 2) | (n >> 4))),
                  64 != i &&
                    (r += String.fromCharCode(((15 & n) << 4) | (i >> 2))),
                  64 != o && (r += String.fromCharCode(((3 & i) << 6) | o));
              } while (a < e.length);
              return r;
            },
          },
          R = {
            hex: "0123456789abcdef",
            encode: function (e) {
              if (!e) return !1;
              var t,
                n = "",
                i = 0;
              do {
                (t = e.charCodeAt(i++)),
                  (n +=
                    this.hex.charAt((t >> 4) & 15) + this.hex.charAt(15 & t));
              } while (i < e.length);
              return n;
            },
            decode: function (e) {
              if (!e) return !1;
              e = e.replace(/[^0-9abcdef]/g, "");
              var t = "",
                n = 0;
              do {
                t += String.fromCharCode(
                  ((this.hex.indexOf(e.charAt(n++)) << 4) & 240) |
                    (15 & this.hex.indexOf(e.charAt(n++))),
                );
              } while (n < e.length);
              return t;
            },
          };
        const k = {
          getPublicKey: function (e, t) {
            return new T(e, t);
          },
          encrypt: function (e, t) {
            return (
              !!t &&
              !!(e = this.pkcs1pad2(e, (t.modulus.bitLength() + 7) >> 3)) &&
                !!(e = e.modPowInt(t.encryptionExponent, t.modulus)) &&
              (1 == (1 & (e = e.toString(16)).length) && (e = "0" + e),
              M.encode(R.decode(e)))
            );
          },
          pkcs1pad2: function (e, t) {
            if (t < e.length + 11) return null;
            for (var n = [], i = e.length - 1; i >= 0 && t > 0; )
              n[--t] = e.charCodeAt(i--);
            for (n[--t] = 0; t > 2; )
              n[--t] = Math.floor(254 * Math.random()) + 1;
            return (n[--t] = 2), (n[--t] = 0), new A(n);
          },
        };
      },
      80820: (e, t, n) => {
        var i = {
          "./shared_arabic.json": [23287, 3710],
          "./shared_brazilian.json": [1451, 6562],
          "./shared_bulgarian.json": [99908, 1449],
          "./shared_czech.json": [84066, 7591],
          "./shared_danish.json": [59414, 6523],
          "./shared_dutch.json": [35211, 5110],
          "./shared_english.json": [80809, 2256],
          "./shared_finnish.json": [19950, 6031],
          "./shared_french.json": [80879, 5018],
          "./shared_german.json": [80165, 6208],
          "./shared_greek.json": [8721, 9712],
          "./shared_hungarian.json": [66712, 6165],
          "./shared_indonesian.json": [80515, 8306],
          "./shared_italian.json": [3617, 3912],
          "./shared_japanese.json": [13448, 1973],
          "./shared_koreana.json": [13578, 7539],
          "./shared_latam.json": [85570, 2435],
          "./shared_norwegian.json": [48237, 2320],
          "./shared_polish.json": [79530, 8967],
          "./shared_portuguese.json": [76682, 6239],
          "./shared_romanian.json": [50692, 2749],
          "./shared_russian.json": [60868, 8025],
          "./shared_sc_schinese.json": [86078, 9027],
          "./shared_schinese.json": [66231, 7786],
          "./shared_spanish.json": [99185, 2632],
          "./shared_swedish.json": [59456, 1225],
          "./shared_tchinese.json": [99260, 5241],
          "./shared_thai.json": [9801, 976],
          "./shared_turkish.json": [5169, 9152],
          "./shared_ukrainian.json": [34363, 2954],
          "./shared_vietnamese.json": [73912, 6149],
        };
        function o(e) {
          if (!n.o(i, e))
            return Promise.resolve().then(() => {
              var t = new Error("Cannot find module '" + e + "'");
              throw ((t.code = "MODULE_NOT_FOUND"), t);
            });
          var t = i[e],
            o = t[0];
          return n.e(t[1]).then(() => n.t(o, 19));
        }
        (o.keys = () => Object.keys(i)), (o.id = 80820), (e.exports = o);
      },
      42619: (e, t, n) => {
        var i = {
          "./shared_arabic.json": [23287, 3710],
          "./shared_brazilian.json": [1451, 6562],
          "./shared_bulgarian.json": [99908, 1449],
          "./shared_czech.json": [84066, 7591],
          "./shared_danish.json": [59414, 6523],
          "./shared_dutch.json": [35211, 5110],
          "./shared_english.json": [80809, 2256],
          "./shared_finnish.json": [19950, 6031],
          "./shared_french.json": [80879, 5018],
          "./shared_german.json": [80165, 6208],
          "./shared_greek.json": [8721, 9712],
          "./shared_hungarian.json": [66712, 6165],
          "./shared_indonesian.json": [80515, 8306],
          "./shared_italian.json": [3617, 3912],
          "./shared_japanese.json": [13448, 1973],
          "./shared_koreana.json": [13578, 7539],
          "./shared_latam.json": [85570, 2435],
          "./shared_norwegian.json": [48237, 2320],
          "./shared_polish.json": [79530, 8967],
          "./shared_portuguese.json": [76682, 6239],
          "./shared_romanian.json": [50692, 2749],
          "./shared_russian.json": [60868, 8025],
          "./shared_sc_schinese.json": [86078, 9027],
          "./shared_schinese.json": [66231, 7786],
          "./shared_spanish.json": [99185, 2632],
          "./shared_swedish.json": [59456, 1225],
          "./shared_tchinese.json": [99260, 5241],
          "./shared_thai.json": [9801, 976],
          "./shared_turkish.json": [5169, 9152],
          "./shared_ukrainian.json": [34363, 2954],
          "./shared_vietnamese.json": [73912, 6149],
        };
        function o(e) {
          if (!n.o(i, e))
            return Promise.resolve().then(() => {
              var t = new Error("Cannot find module '" + e + "'");
              throw ((t.code = "MODULE_NOT_FOUND"), t);
            });
          var t = i[e],
            o = t[0];
          return n.e(t[1]).then(() => n.t(o, 19));
        }
        (o.keys = () => Object.keys(i)), (o.id = 42619), (e.exports = o);
      },
      34629: (e, t, n) => {
        "use strict";
        n.d(t, { Cg: () => i });
        function i(e, t, n, i) {
          var o,
            r = arguments.length,
            a =
              r < 3
                ? t
                : null === i
                  ? (i = Object.getOwnPropertyDescriptor(t, n))
                  : i;
          if (
            "object" == typeof Reflect &&
            "function" == typeof Reflect.decorate
          )
            a = Reflect.decorate(e, t, n, i);
          else
            for (var s = e.length - 1; s >= 0; s--)
              (o = e[s]) &&
                (a = (r < 3 ? o(a) : r > 3 ? o(t, n, a) : o(t, n)) || a);
          return r > 3 && a && Object.defineProperty(t, n, a), a;
        }
        Object.create;
        Object.create;
        "function" == typeof SuppressedError && SuppressedError;
      },
    },
    a = {};
  function s(e) {
    var t = a[e];
    if (void 0 !== t) return t.exports;
    var n = (a[e] = { id: e, loaded: !1, exports: {} });
    return r[e].call(n.exports, n, n.exports, s), (n.loaded = !0), n.exports;
  }
  (s.m = r),
    (s.amdO = {}),
    (e = []),
    (s.O = (t, n, i, o) => {
      if (!n) {
        var r = 1 / 0;
        for (m = 0; m < e.length; m++) {
          for (var [n, i, o] = e[m], a = !0, l = 0; l < n.length; l++)
            (!1 & o || r >= o) && Object.keys(s.O).every((e) => s.O[e](n[l]))
              ? n.splice(l--, 1)
              : ((a = !1), o < r && (r = o));
          if (a) {
            e.splice(m--, 1);
            var c = i();
            void 0 !== c && (t = c);
          }
        }
        return t;
      }
      o = o || 0;
      for (var m = e.length; m > 0 && e[m - 1][2] > o; m--) e[m] = e[m - 1];
      e[m] = [n, i, o];
    }),
    (s.n = (e) => {
      var t = e && e.__esModule ? () => e.default : () => e;
      return s.d(t, { a: t }), t;
    }),
    (n = Object.getPrototypeOf
      ? (e) => Object.getPrototypeOf(e)
      : (e) => e.__proto__),
    (s.t = function (e, i) {
      if ((1 & i && (e = this(e)), 8 & i)) return e;
      if ("object" == typeof e && e) {
        if (4 & i && e.__esModule) return e;
        if (16 & i && "function" == typeof e.then) return e;
      }
      var o = Object.create(null);
      s.r(o);
      var r = {};
      t = t || [null, n({}), n([]), n(n)];
      for (var a = 2 & i && e; "object" == typeof a && !~t.indexOf(a); a = n(a))
        Object.getOwnPropertyNames(a).forEach((t) => (r[t] = () => e[t]));
      return (r.default = () => e), s.d(o, r), o;
    }),
    (s.d = (e, t) => {
      for (var n in t)
        s.o(t, n) &&
          !s.o(e, n) &&
          Object.defineProperty(e, n, { enumerable: !0, get: t[n] });
    }),
    (s.f = {}),
    (s.e = (e) =>
      Promise.all(Object.keys(s.f).reduce((t, n) => (s.f[n](e, t), t), []))),
    (s.u = (e) =>
      "javascript/webui/" +
      ({
        43: "friendsui_sc_schinese-json",
        762: "friendsui_indonesian-json",
        976: "shared_thai-json",
        1225: "shared_swedish-json",
        1449: "shared_bulgarian-json",
        1499: "friendsui_latam-json",
        1973: "shared_japanese-json",
        2256: "shared_english-json",
        2320: "shared_norwegian-json",
        2435: "shared_latam-json",
        2632: "shared_spanish-json",
        2749: "shared_romanian-json",
        2945: "friendsui_russian-json",
        2954: "shared_ukrainian-json",
        3e3: "friendsui_turkish-json",
        3016: "friendsui_english-json",
        3232: "friendsui_italian-json",
        3415: "friendsui_portuguese-json",
        3485: "friendsui_japanese-json",
        3710: "shared_arabic-json",
        3789: "friendsui_vietnamese-json",
        3912: "shared_italian-json",
        4154: "friendsui_brazilian-json",
        4302: "friendsui_dutch-json",
        4434: "friendsui_ukrainian-json",
        4488: "friendsui_greek-json",
        4776: "friendsui_norwegian-json",
        4787: "friendsui_danish-json",
        5018: "shared_french-json",
        5110: "shared_dutch-json",
        5241: "shared_tchinese-json",
        5341: "friendsui_hungarian-json",
        5480: "friendsui_german-json",
        6031: "shared_finnish-json",
        6127: "friendsui_polish-json",
        6149: "shared_vietnamese-json",
        6165: "shared_hungarian-json",
        6208: "shared_german-json",
        6239: "shared_portuguese-json",
        6385: "friendsui_bulgarian-json",
        6518: "friendsui_arabic-json",
        6523: "shared_danish-json",
        6562: "shared_brazilian-json",
        6609: "friendsui_swedish-json",
        6888: "friendsui_thai-json",
        6971: "friendsui_koreana-json",
        7462: "gamerecording",
        7487: "friendsui_czech-json",
        7539: "shared_koreana-json",
        7591: "shared_czech-json",
        7653: "broadcastapp",
        7786: "shared_schinese-json",
        7861: "friendsui_romanian-json",
        8025: "shared_russian-json",
        8194: "friendsui_french-json",
        8306: "shared_indonesian-json",
        8759: "friendsui_finnish-json",
        8766: "friendsui_tchinese-json",
        8967: "shared_polish-json",
        9027: "shared_sc_schinese-json",
        9152: "shared_turkish-json",
        9712: "shared_greek-json",
        9746: "friendsui_schinese-json",
        9808: "friendsui_spanish-json",
      }[e] || e) +
      ".js?contenthash=" +
      {
        43: "2d1569711644a97b27c9",
        762: "20d1805fb19e04428350",
        976: "965565caa5d2112ccf59",
        1225: "4e1eb882617a0ab28621",
        1449: "6034ae86a27a4636803c",
        1499: "d09d4cfd1cd55d326008",
        1973: "f7d8083c12be188b5eba",
        2256: "480255c1ab01d823a6ff",
        2320: "8e6a04e808a9b57720f3",
        2435: "534a5612826014c4cf66",
        2632: "71b94d04da13da7c3567",
        2749: "86c0fbb28f220352d249",
        2945: "f0ffb6e23a633811cc75",
        2954: "df0ff071caf3439abb1e",
        3e3: "6244423f97bbadfb378f",
        3016: "f772487927b08b66167b",
        3159: "200991dd6114e56702ed",
        3232: "4308c007690c6a37e4b9",
        3415: "7337c28561e050d43418",
        3485: "1ca36b18b92fbd93c82b",
        3710: "357f6ded3ff9007f8dcb",
        3789: "518208b9c152a0b54815",
        3912: "ec7857350293ac3e2f24",
        4154: "7fc5071568014007872e",
        4302: "7532d5d57aab1e69b2d3",
        4434: "cfa87968e65c1b48e58d",
        4488: "2ba22b0983b646f5294a",
        4776: "28db7f99aa77b21fb4e3",
        4787: "c918d5a66e4b1cb82962",
        5018: "1686a4a3c56a3b637304",
        5110: "0a3f64b013ad6083d73d",
        5241: "ec63d485fb822602f998",
        5341: "0896561e7e8e04ac497a",
        5430: "896f0e718976a35ce66b",
        5480: "5da69d67c2623e54f794",
        6031: "35f6fbc23738b16434a4",
        6127: "3fcef02c1242d14d33d1",
        6149: "69c05468b5622a47cdbc",
        6165: "a33c8e8c1afc9e0fc268",
        6208: "3602d11cb6c299ea690d",
        6239: "c179c89aa4e33ece266c",
        6385: "38f46a8c060c99c384d3",
        6518: "8cd538c22d2143bbefe7",
        6523: "aec74368845379e51c87",
        6562: "08043360d580dda65fa1",
        6609: "acac235fdaf92994d4f8",
        6736: "1d265b976cd98cf3f85c",
        6888: "76ec40f6e0a215d91b5f",
        6971: "e2d6c5dc22be7d3217e9",
        7462: "0f61f87416cf4bb3675f",
        7487: "d6c8e1242ff218147a7f",
        7539: "0efef0dd3f74974f1dd6",
        7591: "fdc0f63ff2262c02be21",
        7653: "05e4d07f4427af8028c3",
        7786: "e13e18622e9bea9ae684",
        7861: "d0cac6ebe3f63d6e275f",
        8025: "39fcd9762fe3c443e81a",
        8194: "510ab7f4d7764937eced",
        8306: "0378506c13b6b209d156",
        8759: "dfc12156f52d20440b1d",
        8766: "b9b7b35f7df91bb55b83",
        8967: "9aab128c616f974db159",
        9027: "21042ef6e2471913428d",
        9152: "e2d516abdbf99277766e",
        9712: "7c86ee7728f6ba8d2ca5",
        9746: "e05951d8b37cd69db872",
        9808: "47d563fed12f1789dffb",
      }[e]),
    (s.miniCssF = (e) =>
      "css/webui/" +
      ({ 7462: "gamerecording", 7653: "broadcastapp" }[e] || e) +
      ".css?contenthash=" +
      {
        3159: "75a6e9ff11215c0f2a0b",
        7462: "e73fa3481176465ae80f",
        7653: "75c78e6c559d90dce4fd",
      }[e]),
    (s.g = (function () {
      if ("object" == typeof globalThis) return globalThis;
      try {
        return this || new Function("return this")();
      } catch (e) {
        if ("object" == typeof window) return window;
      }
    })()),
    (s.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),
    (i = {}),
    (o = "@steam/friendsui:"),
    (s.l = (e, t, n, r) => {
      if (i[e]) i[e].push(t);
      else {
        var a, l;
        if (void 0 !== n)
          for (
            var c = document.getElementsByTagName("script"), m = 0;
            m < c.length;
            m++
          ) {
            var d = c[m];
            if (
              d.getAttribute("src") == e ||
              d.getAttribute("data-webpack") == o + n
            ) {
              a = d;
              break;
            }
          }
        a ||
          ((l = !0),
          ((a = document.createElement("script")).charset = "utf-8"),
          (a.timeout = 120),
          s.nc && a.setAttribute("nonce", s.nc),
          a.setAttribute("data-webpack", o + n),
          (a.src = e)),
          (i[e] = [t]);
        var u = (t, n) => {
            (a.onerror = a.onload = null), clearTimeout(h);
            var o = i[e];
            if (
              (delete i[e],
              a.parentNode && a.parentNode.removeChild(a),
              o && o.forEach((e) => e(n)),
              t)
            )
              return t(n);
          },
          h = setTimeout(
            u.bind(null, void 0, { type: "timeout", target: a }),
            12e4,
          );
        (a.onerror = u.bind(null, a.onerror)),
          (a.onload = u.bind(null, a.onload)),
          l && document.head.appendChild(a);
      }
    }),
    (s.r = (e) => {
      "undefined" != typeof Symbol &&
        Symbol.toStringTag &&
        Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
        Object.defineProperty(e, "__esModule", { value: !0 });
    }),
    (s.nmd = (e) => ((e.paths = []), e.children || (e.children = []), e)),
    (s.j = 6814),
    (() => {
      var e;
      s.g.importScripts && (e = s.g.location + "");
      var t = s.g.document;
      if (!e && t && (t.currentScript && (e = t.currentScript.src), !e)) {
        var n = t.getElementsByTagName("script");
        if (n.length)
          for (var i = n.length - 1; i > -1 && (!e || !/^http(s?):/.test(e)); )
            e = n[i--].src;
      }
      if (!e)
        throw new Error(
          "Automatic publicPath is not supported in this browser",
        );
      (e = e
        .replace(/#.*$/, "")
        .replace(/\?.*$/, "")
        .replace(/\/[^\/]+$/, "/")),
        (s.p = e + "../../");
    })(),
    (() => {
      if ("undefined" != typeof document) {
        var e = (e) =>
            new Promise((t, n) => {
              var i = s.miniCssF(e),
                o = s.p + i;
              if (
                ((e, t) => {
                  for (
                    var n = document.getElementsByTagName("link"), i = 0;
                    i < n.length;
                    i++
                  ) {
                    var o =
                      (a = n[i]).getAttribute("data-href") ||
                      a.getAttribute("href");
                    if ("stylesheet" === a.rel && (o === e || o === t))
                      return a;
                  }
                  var r = document.getElementsByTagName("style");
                  for (i = 0; i < r.length; i++) {
                    var a;
                    if (
                      (o = (a = r[i]).getAttribute("data-href")) === e ||
                      o === t
                    )
                      return a;
                  }
                })(i, o)
              )
                return t();
              ((e, t, n, i, o) => {
                var r = document.createElement("link");
                (r.rel = "stylesheet"),
                  (r.type = "text/css"),
                  (r.onerror = r.onload =
                    (n) => {
                      if (((r.onerror = r.onload = null), "load" === n.type))
                        i();
                      else {
                        var a = n && n.type,
                          s = (n && n.target && n.target.href) || t,
                          l = new Error(
                            "Loading CSS chunk " +
                              e +
                              " failed.\n(" +
                              a +
                              ": " +
                              s +
                              ")",
                          );
                        (l.name = "ChunkLoadError"),
                          (l.code = "CSS_CHUNK_LOAD_FAILED"),
                          (l.type = a),
                          (l.request = s),
                          r.parentNode && r.parentNode.removeChild(r),
                          o(l);
                      }
                    }),
                  (r.href = t),
                  n
                    ? n.parentNode.insertBefore(r, n.nextSibling)
                    : document.head.appendChild(r);
              })(e, o, null, t, n);
            }),
          t = { 6814: 0 };
        s.f.miniCss = (n, i) => {
          t[n]
            ? i.push(t[n])
            : 0 !== t[n] &&
              { 3159: 1, 7462: 1, 7653: 1 }[n] &&
              i.push(
                (t[n] = e(n).then(
                  () => {
                    t[n] = 0;
                  },
                  (e) => {
                    throw (delete t[n], e);
                  },
                )),
              );
        };
      }
    })(),
    (() => {
      var e = { 6814: 0 };
      (s.f.j = (t, n) => {
        var i = s.o(e, t) ? e[t] : void 0;
        if (0 !== i)
          if (i) n.push(i[2]);
          else {
            var o = new Promise((n, o) => (i = e[t] = [n, o]));
            n.push((i[2] = o));
            var r = s.p + s.u(t),
              a = new Error();
            s.l(
              r,
              (n) => {
                if (s.o(e, t) && (0 !== (i = e[t]) && (e[t] = void 0), i)) {
                  var o = n && ("load" === n.type ? "missing" : n.type),
                    r = n && n.target && n.target.src;
                  (a.message =
                    "Loading chunk " + t + " failed.\n(" + o + ": " + r + ")"),
                    (a.name = "ChunkLoadError"),
                    (a.type = o),
                    (a.request = r),
                    i[1](a);
                }
              },
              "chunk-" + t,
              t,
            );
          }
      }),
        (s.O.j = (t) => 0 === e[t]);
      var t = (t, n) => {
          var i,
            o,
            [r, a, l] = n,
            c = 0;
          if (r.some((t) => 0 !== e[t])) {
            for (i in a) s.o(a, i) && (s.m[i] = a[i]);
            if (l) var m = l(s);
          }
          for (t && t(n); c < r.length; c++)
            (o = r[c]), s.o(e, o) && e[o] && e[o][0](), (e[o] = 0);
          return s.O(m);
        },
        n = (self.webpackChunk_steam_friendsui =
          self.webpackChunk_steam_friendsui || []);
      n.forEach(t.bind(null, 0)), (n.push = t.bind(null, n.push.bind(n)));
    })();
  var l = s.O(void 0, [3987, 9489, 1068], () => s(6256));
  l = s.O(l);
})();
