/**** (c) Valve Corporation. Use is governed by the terms of the Steam Subscriber Agreement http://store.steampowered.com/subscriber_agreement/.
 ****/
(self.webpackChunkcommunity = self.webpackChunkcommunity || []).push([
  [9774],
  {
    99312: (e) => {
      e.exports = {
        DragTarget: "_2sUvh2ZpsDAw1xNqgRBELg",
        DragOnTopOfMe: "_1mvpIyLL0-Pd4QMIoRXHtu",
        DescriptionCtn: "_3DQEBNkYGY3hyLFAjhtq7V",
        EventEditorLinkInput: "_25nbuIEmk-BBWxsSvWGG1n",
        DefaultEditor: "NENu2K19GJmLf1Asga-WF",
        ImportHTMLCtn: "_3sVZHF23hli8ijIwtMs8oU",
        ImportHTMLTextArea: "DHbRFUDVAeXGluFH-smoE",
        ImportHTMLConvertButtons: "lnyZaHhcGtBzDU0SMlFd1",
        ImportHTMLCheckBoxLine: "_3R3FNRLSeiOwBgELGjSPbz",
        OptionRow: "_2Y3MLEmGvWMI8BoNZgCllJ",
        TextEditorToolBarContainer: "_2bOpQtX5QAuQxfGhEJ_iYg",
        EmoteOuter: "_1x3UOXJkizqKhkssRfFjSS",
        YouTubeInput: "_3WXTC22teDkm8BMc01ZTLA",
        YouTubePreviewInsertOption: "_6ocliVvrdQxHPu-upv6-s",
        DropDownScroll: "P0-tbY3743fHY8SAzfF6b",
        InsertSpeakerCtn: "_2f-6Yv5h7xjUcZCrepnQhg",
        TitleGroup: "_1ddLhT39tQNuR4ljq6Nfg5",
        AssociateRowCtn: "_2HeY5m9J-kxRVzGn8dAwv5",
        PhotoCtn: "_2-f4CX_EyXfhRUmPdIey4w",
        AboutCtn: "_3hF9cNUOsfV0BkzEaWn7FM",
        PreviewCtn: "_VCRyh7nyN-2xDV6yH6Sg",
        BBCodeEditorInputStyles: "F506h2OVFDcZeXFtyqthY",
      };
    },
    34510: (e) => {
      e.exports = {
        BBCode_Toggle: "_3dX8-PpYvSNsGv4k5lvP-R",
        Active: "_2vTzhbuJFb9_vHvquo2L-L",
        BBCode: "_1pH9CKzm5VpicOgzyWpsy_",
      };
    },
    64233: (e) => {
      e.exports = { Image: "_1po_jxHTSix3Li3w5ZnMBB" };
    },
    79786: (e) => {
      e.exports = {
        Emoticon_Toggle: "Y5J3nttqNZsLax6MbnH-L",
        Active: "YCbwLzK9cJ7QissjKq11n",
        Emoticon: "_2o57_fRPxv5_x6BkjL_cgc",
      };
    },
    17009: (e) => {
      e.exports = {
        "duration-app-launch": "800ms",
        AppPartnerEventsPage: "_3CJsgSK-y815Zeoe6bz6dh",
        AppPartnerEventsBanner: "_1HRiMtg_SGUiOa-NXDzZl7",
        AppBannerLinks: "D1bMmHTycpEqG4Sp3VVvH",
        ControlSection: "_2pA5CW91XQQDfo6yZEdPd-",
        NoGameLink: "_2GfPecEDgnR6mwX3ysETT_",
        AppPartnerEventsBody: "_1XLRr8eh1ip-E17C8Jzrmc",
        AppBannerGroup: "qexk-JocS7jjDM31IcGZn",
        NoEvents: "_2xyx9hjeMa2Faf2k3WjG3C",
        AppBannerCtn: "wavRtSPqcvhar0kUHlKoJ",
        AppBannerBackground: "_3RHFoIvdUHn0fp8G8M258k",
        ClanBanner: "_161DWg8AuVjniVd_UE888G",
        TallBanner: "KBixgrFRi1J3OB43f1p8X",
        WideBanner: "_1hl09rgUVOJUMhgC33L7eo",
        AppBannerTitle: "_1iqjH40fN4Diar-d-rLbR5",
        NewsHubSubTitle: "_3tf3bdmBO0Ji0rv8PH-ZXz",
        AppBannerLogoCtn: "_2EV_WNLGjRLNX824mfis9O",
        AppBannerLogo: "dGGTg8iH8Z_d_p6nPFFlM",
        HeaderButtonDark: "_1sDn2dLVB1pIeh5UP4EOVT",
        HeaderFollowButton: "_1tnk5F-ooFjGdvCzXLwtmf",
        HeaderWishlistButton: "_371yXVkVSnacHxz1fMmGpT",
        AppBannerLink: "_3YomsTzhdiLRcSZkF8JtB8",
        AppBannerRSSLink: "_1HeKH4JMsCDXmXP3XD7C6t",
        AppBannerLinkDD: "_1afFDl3n1RB22K4gFglar",
        AppBannerLinkDDButton: "S9cqDrgEIhtUE6pU3-2iQ",
        DDButtonArrow: "_3URBCM-OKlL3sg0hORPS01",
        AppBannerLinkDDContainer: "_2cjCliV2mnVX6dlRRce-fD",
        WishlistBtnShort: "_3WcW8PJCSEWwVA6qJ-RUOF",
        RssRow: "_2pyH3D6qw0sOXhrtoYqCVL",
        AppPartnerEventsContainer: "_3GCEyyVil-cCS-8hoI2Zo1",
        PartnerEvent: "_1KsYSVzmvIfRivBTcx-_GE",
        LibraryViewSubtitle: "_1rbgKYHeRvzrIyqHCzaLIr",
        EventDetailsBody: "_3NW5vEM9HgfQrgR4W-Xy_s",
        NoScrollArrows: "_39hJ8cxSdqeE3ZR01bJLab",
        ControlSectionWidth: "_3yfs7fc5WEv6F9tPG4yq4g",
        ControlSectionRightSide: "_2tSyrRxMCRWK6K09JErgI_",
        GameArt: "_2a5oSdTIcFV3c3ymUNsu6l",
        ScrollButton: "_1t_97P9KMsEBaPq9y-6OUl",
        Up: "_3vBD2B7lrr6iXm8dGe71lI",
        Down: "_3VePRhMGWFsbGaZjSNXJjV",
        CloseButton: "_1_vCR1dPfyJ7_yukwDqblf",
        AnimIn: "_240i58XQ0w78YFrd_p-9UY",
        transitionIn: "_2jG5NuuER4JaHKuO9nA4KF",
        ClickableBG: "_308EDBzQTS8OgAxwxfq2UB",
        DirectionState: "Bv96jkkYqxrnA7xfPskjD",
        EventTypeAndTimeRow: "_3bWTO29arCCJ6PBGRZ7fRy",
        WithReminder: "_1C5DvpeSKLvf8M8uAdi50W",
        TimeandPostedBy: "_2WwG2r8yZuu2EMJgFTQZp8",
        EventType: "Udzrpqr8534T5DvVZveNP",
        PostedBy: "_2VqeQaZVaUkkEWaiLkmqmT",
        ReminderContainer: "_3Vf2MkZ_LWIoNVv36RwJtO",
        ReadMoreCnt: "_1YmaiDiNhC33cL5DKj05KQ",
      };
    },
    17618: (e) => {
      e.exports = {
        ImagesOuterContainer: "_3A8RGZO2pwg1yKDAdFqp9r",
        Hilight: "_1v_zQLXgFsvon1SwxrWjE-",
        ImageContainer: "_2ti3yMwzfkGoiW68FuNjTG",
        Image: "y902_9A0Wj5bTshbt4xRb",
        ImageFilename: "_2jzLZXXxgDMMcA9X0QDSdg",
      };
    },
    12247: (e) => {
      e.exports = {
        SteamAwardContainer: "_3n6v2rFCMX3yWMfZrlCn6g",
        InLibraryView: "pqLczqVU9TDbWz5pl3Dhl",
        SVGIcon_DialogCheck: "_3ccByQfkFeqPu_u0ZEuu2b",
        SteamAwardHeader: "_2jgrTr2L4JVpD3vsEejL4u",
        SteamAwardHeaderImage: "_lRFQTx2beRUJL_3ltFfr",
        SteamAwardMainCtn: "_1uGju6QeFG7khpqA7DOs0-",
        SteamAwardMainTitle: "_161Ybvvo7TQ80J6yOfcxC5",
        SteamAwardSubTitle: "Sxxelbb28sRAaDXPxgcHP",
        SteamAwardLearnMore: "VQlY6MEAqF6Wsflo-Q4Wz",
        BottomRight: "zr64QF0O74AQ9RMG-dGnw",
        SteamAwardHeaderText: "_2mrzKOE-ejrZezNROw3GcQ",
        LinkText: "_2x4pgJBF4vbwBJ4KH2VOHG",
        SteamAwardVoteWidget: "khWz0kU5EooSG60KYdU1K",
        SteamAwardVotePrompt: "H5jrPn7OY-0ToSesPTrI6",
        SteamAwardCategoryTitle: "JVE9ORqYtUCERl3y2i7_X",
        VotingTitle: "_32ZmvScTqfRjiW9XXgyqR2",
        SteamAwardCategoryDesc: "_1V-8WYatw7PvjVj9hsAptM",
        SteamAwardVoteButtonArea: "_1v9LHwNb9fLu4yXs5L0jjz",
        SteamAwardVoteButton: "cTcgISesI0T2M-9yed2AU",
        SteamAwardVoteButtonText: "_247y340DSkN1t7QC8tUkFx",
        SteamAwardVoteButtonSubmitted: "_1ouD4mct3_CdBoy_lzVyFJ",
        NominateCtn: "_1SKPLx2FBvP9iC-lJHTkKQ",
        SteamAwardNominateButton: "_1uxCjZZ940xsM0idye1IP-",
        Nominated: "_1No9r92B3LLgMOaSMSC9vE",
        SteamAwardNominationWidget: "_38gTf-DsRc7bVnxxQXxT3B",
        SteamAwardLinkToNominationPage: "_3p83sGhSP-hikRKwITXId-",
        SteamAwardVoteCheckBox: "_1G4MUqubjzDize874UIeYh",
        SteamAwardModalGameTitle: "_15lc0ft7pgAlFXYbgePb-8",
        ExpiredEventHeader: "_3O3XsKT-SiMNsMqyidMLvS",
        AwardCategoriesCtn: "_2u4z7OT5MqNj-6wojCGnsr",
        SteamAwardConflictModal: "_2Xqc9FL9PfCQl8Fo8d7I_L",
        ConflictBody: "_3WKl_XpHUMGcIm4cNhlc_W",
        NominationSwitchCtn: "r9nDOvHWyABfkiiurnMwl",
      };
    },
    66661: (e) => {
      e.exports = { ReferencedApps: "_1bfuawEqNMIto67VTkwdbE" };
    },
    86244: (e) => {
      e.exports = {
        Container: "_2vGr9KsApU0s59_ZsZVxXY",
        SmallAvatar: "_3V8w8CrYHVYB0voJ3gp87x",
        ShareDescription: "_3CqiH5i7kc5lXyEb0TGl2C",
        ShareLink: "_1WTiWXO3q8jMnJc_cPKJbE",
      };
    },
    41609: (e) => {
      e.exports = {
        WhitelistNumber: "IY3dF3eWXX1OmE8oYcQKp",
        WhitelistCtn: "_1UhmxrINvvaNnHzhCPoill",
        WhitelistRow: "_28TC1EYm0jlWPjyk89xXCL",
        Grabbable: "riuelIz655g_IBddWfLQ-",
        Grabbing: "_1vSZ5gJndAOamRhVGni8HG",
        DisabledGrab: "_2K0C_m1AZvB6yeNaEXXjDD",
        WhitelistAvatar: "_3DGjmH9KW9BAXsEYwH1WpE",
        ButtonCtn: "_1hSqlvDTyj9P6eWTHXutUt",
        DragElementStart: "_1LQ1GCTblYDL8enZ2mBhTD",
        DragHighlightContainer: "_2jRMC5JVSK6dsktYus9Gjf",
        DragHighlight: "Y9ryg1Npznt3dpkr7BGp1",
      };
    },
    77700: (e) => {
      e.exports = {
        "duration-app-launch": "800ms",
        mentionDialogPosition: "_3isL0ZmZcmPqrXDdNiNSsm",
        mentionDialog: "_1QU3cLCGXCmYTUvjYiqqz6",
        mentionSearchText: "_1xVcZo7UqD1Idiz3hcGoHg",
        suggestOption: "vquL9mspYzz2tBtxrzqw9",
        mentionSearchOption: "_3O0sMruBIaruOmKJLJre-J",
        manyMatches: "_1cweL4uxVeoeKoymO9IuaT",
        selected: "boNOGnexLhWO9Nd0e6-0A",
        nickname: "_2dKJqMZUnKQIInZReBkcRI",
        mentionSearchMatch: "_2_0t_pDYqkDefMC0gDZV8G",
      };
    },
    50666: (e) => {
      e.exports = {
        CropImage: "_3qfqTaQ35U6AO3FNeijcFV",
        CropPreviewGroup: "_1RI-QM2ZjK9MaVjeCLE_LF",
        CropPreviewLabel: "_3_zyLDUyxZNyexfX3kNOPv",
      };
    },
    63556: (e, t, r) => {
      "use strict";
      r.d(t, { E: () => u, O: () => d });
      var n = r(34629),
        a = r(14947),
        i = r(65946),
        s = r(22837),
        o = r(62490),
        l = r(6419),
        c = r(78327),
        m = r(91986);
      class d {
        GetCallback() {
          return this.m_callback;
        }
        GetCurEditLanguage() {
          return this.m_eCurLang;
        }
        SetCurEditLanguage(e) {
          return (
            this.m_eCurLang != e &&
            ((this.m_eCurLang = e), this.GetCallback().Dispatch(e), !0)
          );
        }
        SetHasLanguage(e) {
          e.forEach((e, t) => {
            this.m_rgHasData[t] != e && (this.m_rgHasData[t] = e);
          });
        }
        BHasLanguageData(e) {
          return this.m_rgHasData[e];
        }
        GetHasLocalizationContext() {
          return this.m_bHasLocalizationContext;
        }
        SetHasLocalizationContext(e) {
          e != this.m_bHasLocalizationContext &&
            (this.m_bHasLocalizationContext = e);
        }
        static Get() {
          return (
            d.s_globalSingletonStore ||
              ((d.s_globalSingletonStore = new d()),
              "dev" == c.TS.WEB_UNIVERSE &&
                (window.DUS = d.s_globalSingletonStore)),
            d.s_globalSingletonStore
          );
        }
        constructor() {
          (this.m_eCurLang = (0, s.sf)(c.TS.LANGUAGE)),
            (this.m_rgHasData = (0, o.$Y)([], 31, !1)),
            (this.m_bHasLocalizationContext = !1),
            (this.m_callback = new m.l()),
            (0, a.Gn)(this);
        }
      }
      function u() {
        return (0, i.q3)(() => d.Get().GetCurEditLanguage());
      }
      (0, n.Cg)([a.sH], d.prototype, "m_eCurLang", void 0),
        (0, n.Cg)([a.sH], d.prototype, "m_rgHasData", void 0),
        (0, n.Cg)([a.sH], d.prototype, "m_bHasLocalizationContext", void 0),
        (0, n.Cg)([l.o], d.prototype, "GetCurEditLanguage", null),
        (0, n.Cg)([l.o], d.prototype, "SetCurEditLanguage", null),
        (0, n.Cg)([a.XI.bound], d.prototype, "SetHasLanguage", null),
        (0, n.Cg)([l.o], d.prototype, "BHasLanguageData", null);
    },
    26505: (e, t, r) => {
      "use strict";
      r.d(t, { Dv: () => T, Nd: () => L });
      var n = r(68950),
        a = r(23809),
        i = r(37674),
        s = r(56545),
        o = r(17720),
        l = r(80613),
        c = r(89068);
      const m = l.Message;
      class d extends m {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            d.prototype.bincremental || c.Sg(d.M()),
            m.initialize(this, e, 0, -1, [2], null);
        }
        static M() {
          return (
            d.sm_m ||
              (d.sm_m = {
                proto: d,
                fields: {
                  bincremental: { n: 1, br: c.qM.readBool, bw: c.gp.writeBool },
                  friends: { n: 2, c: u, r: !0, q: !0 },
                  max_friend_count: {
                    n: 3,
                    br: c.qM.readUint32,
                    bw: c.gp.writeUint32,
                  },
                  active_friend_count: {
                    n: 4,
                    br: c.qM.readUint32,
                    bw: c.gp.writeUint32,
                  },
                  friends_limit_hit: {
                    n: 5,
                    br: c.qM.readBool,
                    bw: c.gp.writeBool,
                  },
                },
              }),
            d.sm_m
          );
        }
        static MBF() {
          return d.sm_mbf || (d.sm_mbf = c.w0(d.M())), d.sm_mbf;
        }
        toObject(e = !1) {
          return d.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(d.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(d.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new d();
          return d.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(d.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(d.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CMsgClientFriendsList";
        }
      }
      class u extends m {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            u.prototype.ulfriendid || c.Sg(u.M()),
            m.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            u.sm_m ||
              (u.sm_m = {
                proto: u,
                fields: {
                  ulfriendid: {
                    n: 1,
                    br: c.qM.readFixed64String,
                    bw: c.gp.writeFixed64String,
                  },
                  efriendrelationship: {
                    n: 2,
                    br: c.qM.readUint32,
                    bw: c.gp.writeUint32,
                  },
                },
              }),
            u.sm_m
          );
        }
        static MBF() {
          return u.sm_mbf || (u.sm_mbf = c.w0(u.M())), u.sm_mbf;
        }
        toObject(e = !1) {
          return u.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(u.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(u.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new u();
          return u.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(u.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(u.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CMsgClientFriendsList_Friend";
        }
      }
      const p = l.Message;
      class h extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            h.prototype.groupid || c.Sg(h.M()),
            p.initialize(this, e, 0, -1, [3], null);
        }
        static M() {
          return (
            h.sm_m ||
              (h.sm_m = {
                proto: h,
                fields: {
                  groupid: { n: 1, br: c.qM.readUint32, bw: c.gp.writeUint32 },
                  name: { n: 2, br: c.qM.readString, bw: c.gp.writeString },
                  accountid_members: {
                    n: 3,
                    r: !0,
                    q: !0,
                    br: c.qM.readUint32,
                    pbr: c.qM.readPackedUint32,
                    bw: c.gp.writeRepeatedUint32,
                  },
                },
              }),
            h.sm_m
          );
        }
        static MBF() {
          return h.sm_mbf || (h.sm_mbf = c.w0(h.M())), h.sm_mbf;
        }
        toObject(e = !1) {
          return h.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(h.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(h.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new h();
          return h.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(h.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(h.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsListCategory";
        }
      }
      class g extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(), p.initialize(this, e, 0, -1, void 0, null);
        }
        toObject(e = !1) {
          return g.toObject(e, this);
        }
        static toObject(e, t) {
          return e ? { $jspbMessageInstance: t } : {};
        }
        static fromObject(e) {
          return new g();
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new g();
          return g.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return e;
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {}
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_GetCategories_Request";
        }
      }
      class S extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            S.prototype.categories || c.Sg(S.M()),
            p.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            S.sm_m ||
              (S.sm_m = {
                proto: S,
                fields: { categories: { n: 1, c: h, r: !0, q: !0 } },
              }),
            S.sm_m
          );
        }
        static MBF() {
          return S.sm_mbf || (S.sm_mbf = c.w0(S.M())), S.sm_mbf;
        }
        toObject(e = !1) {
          return S.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(S.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(S.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new S();
          return S.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(S.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(S.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_GetCategories_Response";
        }
      }
      class _ extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            _.prototype.accountid || c.Sg(_.M()),
            p.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            _.sm_m ||
              (_.sm_m = {
                proto: _,
                fields: {
                  accountid: {
                    n: 1,
                    br: c.qM.readUint32,
                    bw: c.gp.writeUint32,
                  },
                  clanid: { n: 2, br: c.qM.readUint32, bw: c.gp.writeUint32 },
                  chat_group_id: {
                    n: 3,
                    br: c.qM.readUint64String,
                    bw: c.gp.writeUint64String,
                  },
                },
              }),
            _.sm_m
          );
        }
        static MBF() {
          return _.sm_mbf || (_.sm_mbf = c.w0(_.M())), _.sm_mbf;
        }
        toObject(e = !1) {
          return _.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(_.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(_.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new _();
          return _.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(_.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(_.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsListFavoriteEntry";
        }
      }
      class v extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(), p.initialize(this, e, 0, -1, void 0, null);
        }
        toObject(e = !1) {
          return v.toObject(e, this);
        }
        static toObject(e, t) {
          return e ? { $jspbMessageInstance: t } : {};
        }
        static fromObject(e) {
          return new v();
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new v();
          return v.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return e;
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return v.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {}
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return v.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_GetFavorites_Request";
        }
      }
      class E extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            E.prototype.favorites || c.Sg(E.M()),
            p.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            E.sm_m ||
              (E.sm_m = {
                proto: E,
                fields: { favorites: { n: 1, c: _, r: !0, q: !0 } },
              }),
            E.sm_m
          );
        }
        static MBF() {
          return E.sm_mbf || (E.sm_mbf = c.w0(E.M())), E.sm_mbf;
        }
        toObject(e = !1) {
          return E.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(E.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(E.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new E();
          return E.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(E.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return E.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(E.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return E.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_GetFavorites_Response";
        }
      }
      class B extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            B.prototype.favorites || c.Sg(B.M()),
            p.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            B.sm_m ||
              (B.sm_m = {
                proto: B,
                fields: { favorites: { n: 1, c: _, r: !0, q: !0 } },
              }),
            B.sm_m
          );
        }
        static MBF() {
          return B.sm_mbf || (B.sm_mbf = c.w0(B.M())), B.sm_mbf;
        }
        toObject(e = !1) {
          return B.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(B.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(B.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new B();
          return B.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(B.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return B.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(B.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return B.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_SetFavorites_Request";
        }
      }
      class w extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(), p.initialize(this, e, 0, -1, void 0, null);
        }
        toObject(e = !1) {
          return w.toObject(e, this);
        }
        static toObject(e, t) {
          return e ? { $jspbMessageInstance: t } : {};
        }
        static fromObject(e) {
          return new w();
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new w();
          return w.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return e;
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return w.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {}
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return w.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_SetFavorites_Response";
        }
      }
      class y extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            y.prototype.favorites || c.Sg(y.M()),
            p.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            y.sm_m ||
              (y.sm_m = {
                proto: y,
                fields: { favorites: { n: 1, c: _, r: !0, q: !0 } },
              }),
            y.sm_m
          );
        }
        static MBF() {
          return y.sm_mbf || (y.sm_mbf = c.w0(y.M())), y.sm_mbf;
        }
        toObject(e = !1) {
          return y.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(y.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new y();
          return y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(y.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_FavoritesChanged_Notification";
        }
      }
      class C extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(), p.initialize(this, e, 0, -1, void 0, null);
        }
        toObject(e = !1) {
          return C.toObject(e, this);
        }
        static toObject(e, t) {
          return e ? { $jspbMessageInstance: t } : {};
        }
        static fromObject(e) {
          return new C();
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new C();
          return C.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return e;
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return C.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {}
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return C.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_GetFriendsList_Request";
        }
      }
      class f extends p {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            f.prototype.friendslist || c.Sg(f.M()),
            p.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            f.sm_m ||
              (f.sm_m = { proto: f, fields: { friendslist: { n: 1, c: d } } }),
            f.sm_m
          );
        }
        static MBF() {
          return f.sm_mbf || (f.sm_mbf = c.w0(f.M())), f.sm_mbf;
        }
        toObject(e = !1) {
          return f.toObject(e, this);
        }
        static toObject(e, t) {
          return c.BT(f.M(), e, t);
        }
        static fromObject(e) {
          return c.Uq(f.M(), e);
        }
        static deserializeBinary(e) {
          let t = new l.BinaryReader(e),
            r = new f();
          return f.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return c.zj(f.MBF(), e, t);
        }
        serializeBinary() {
          var e = new l.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          c.i0(f.M(), e, t);
        }
        serializeBase64String() {
          var e = new l.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendsList_GetFriendsList_Response";
        }
      }
      var M, I;
      !(function (e) {
        (e.GetCategories = function (e, t) {
          return e.SendMsg("FriendsList.GetCategories#1", (0, s.I8)(g, t), S, {
            bConstMethod: !0,
            ePrivilege: 1,
          });
        }),
          (e.GetFriendsList = function (e, t) {
            return e.SendMsg(
              "FriendsList.GetFriendsList#1",
              (0, s.I8)(C, t),
              f,
              { bConstMethod: !0, ePrivilege: 1 },
            );
          }),
          (e.GetFavorites = function (e, t) {
            return e.SendMsg("FriendsList.GetFavorites#1", (0, s.I8)(v, t), E, {
              bConstMethod: !0,
              ePrivilege: 1,
            });
          }),
          (e.SetFavorites = function (e, t) {
            return e.SendMsg("FriendsList.SetFavorites#1", (0, s.I8)(B, t), w, {
              ePrivilege: 1,
            });
          });
      })(M || (M = {})),
        (function (e) {
          e.FavoritesChangedHandler = {
            name: "FriendsListClient.FavoritesChanged#1",
            request: y,
          };
        })(I || (I = {}));
      var b = r(37735);
      r(14336);
      function T() {
        const e = (0, a.KV)(),
          t = (0, n.LH)();
        return (0, i.I)(D(e, t));
      }
      function D(e, t) {
        return {
          queryKey: ["GetFriendsList", t],
          queryFn: async () => {
            var t, r;
            const n = s.w.Init(C);
            return null ===
              (r =
                null ===
                  (t = (await M.GetFriendsList(e, n)).Body().friendslist()) ||
                void 0 === t
                  ? void 0
                  : t.friends()) || void 0 === r
              ? void 0
              : r
                  .filter((e) => {
                    const t = new o.b(e.ulfriendid());
                    return (
                      (3 == e.efriendrelationship() ||
                        6 == e.efriendrelationship()) &&
                      t.BIsIndividualAccount()
                    );
                  })
                  .map((e) => e.ulfriendid());
          },
        };
      }
      async function A(e, t) {
        const r = s.w.Init(b.tl);
        r.Body().set_appid(t);
        const n = await b.xt.GetFriendsGameplayInfo(e, r);
        return (
          n.BSuccess() ||
            console.warn(`Failed to get gameplay info: ${n.GetEResult()}`),
          n.Body().toObject()
        );
      }
      function L(e, t = {}) {
        const r = (0, a.KV)(),
          s = (0, n.LH)();
        return (0, i.I)({
          queryKey: [`GameplayInfo_${s}_${e}`],
          queryFn: async () => await A(r, e),
          ...t,
        });
      }
    },
    36148: (e, t, r) => {
      "use strict";
      r.d(t, { YW: () => G, Jo: () => P, Vz: () => V, $d: () => Y });
      var n = r(56545),
        a = (r(37735), r(80613)),
        i = r(89068);
      const s = a.Message;
      class o extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            o.prototype.voteid || i.Sg(o.M()),
            s.initialize(this, e, 0, -1, [5, 7], null);
        }
        static M() {
          return (
            o.sm_m ||
              (o.sm_m = {
                proto: o,
                fields: {
                  voteid: { n: 1, br: i.qM.readInt32, bw: i.gp.writeInt32 },
                  active: { n: 2, br: i.qM.readBool, bw: i.gp.writeBool },
                  start_time: {
                    n: 3,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  end_time: { n: 4, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  app_discounts: { n: 5, c: l, r: !0, q: !0 },
                  grouped_vote_options: {
                    n: 6,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  groups: { n: 7, c, r: !0, q: !0 },
                  internal_name: {
                    n: 8,
                    br: i.qM.readString,
                    bw: i.gp.writeString,
                  },
                  localization: { n: 9, c: m },
                  reveal_time: {
                    n: 10,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  release_date_min: {
                    n: 11,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  winner_appid: {
                    n: 12,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  flag: { n: 13, br: i.qM.readEnum, bw: i.gp.writeEnum },
                  release_date_max: {
                    n: 14,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  item_type: {
                    n: 15,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                },
              }),
            o.sm_m
          );
        }
        static MBF() {
          return o.sm_mbf || (o.sm_mbf = i.w0(o.M())), o.sm_mbf;
        }
        toObject(e = !1) {
          return o.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(o.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(o.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new o();
          return o.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(o.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return o.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(o.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return o.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_VoteDefinition";
        }
      }
      class l extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            l.prototype.appid || i.Sg(l.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            l.sm_m ||
              (l.sm_m = {
                proto: l,
                fields: {
                  appid: { n: 1, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  discount: { n: 2, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                },
              }),
            l.sm_m
          );
        }
        static MBF() {
          return l.sm_mbf || (l.sm_mbf = i.w0(l.M())), l.sm_mbf;
        }
        toObject(e = !1) {
          return l.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(l.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(l.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new l();
          return l.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(l.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return l.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(l.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return l.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_VoteDefinition_AppDefinition";
        }
      }
      class c extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            c.prototype.groupid || i.Sg(c.M()),
            s.initialize(this, e, 0, -1, [3], null);
        }
        static M() {
          return (
            c.sm_m ||
              (c.sm_m = {
                proto: c,
                fields: {
                  groupid: { n: 1, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  group_name: {
                    n: 2,
                    br: i.qM.readString,
                    bw: i.gp.writeString,
                  },
                  app_discounts: { n: 3, c: l, r: !0, q: !0 },
                },
              }),
            c.sm_m
          );
        }
        static MBF() {
          return c.sm_mbf || (c.sm_mbf = i.w0(c.M())), c.sm_mbf;
        }
        toObject(e = !1) {
          return c.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(c.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(c.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new c();
          return c.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(c.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return c.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(c.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return c.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_VoteDefinition_GroupDefinition";
        }
      }
      class m extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            m.prototype.title || i.Sg(m.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            m.sm_m ||
              (m.sm_m = {
                proto: m,
                fields: {
                  title: { n: 1, br: i.qM.readString, bw: i.gp.writeString },
                  title_linebreak: {
                    n: 2,
                    br: i.qM.readString,
                    bw: i.gp.writeString,
                  },
                  title_award: {
                    n: 3,
                    br: i.qM.readString,
                    bw: i.gp.writeString,
                  },
                  award_description: {
                    n: 4,
                    br: i.qM.readString,
                    bw: i.gp.writeString,
                  },
                },
              }),
            m.sm_m
          );
        }
        static MBF() {
          return m.sm_mbf || (m.sm_mbf = i.w0(m.M())), m.sm_mbf;
        }
        toObject(e = !1) {
          return m.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(m.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(m.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new m();
          return m.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(m.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(m.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_VoteDefinition_Localization";
        }
      }
      class d extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            d.prototype.language || i.Sg(d.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            d.sm_m ||
              (d.sm_m = {
                proto: d,
                fields: {
                  language: { n: 1, br: i.qM.readString, bw: i.gp.writeString },
                  sale_appid: {
                    n: 2,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                },
              }),
            d.sm_m
          );
        }
        static MBF() {
          return d.sm_mbf || (d.sm_mbf = i.w0(d.M())), d.sm_mbf;
        }
        toObject(e = !1) {
          return d.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(d.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(d.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new d();
          return d.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(d.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(d.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_GetVoteDefinitions_Request";
        }
      }
      class u extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            u.prototype.votes || i.Sg(u.M()),
            s.initialize(this, e, 0, -1, [1, 2], null);
        }
        static M() {
          return (
            u.sm_m ||
              (u.sm_m = {
                proto: u,
                fields: {
                  votes: { n: 1, c: o, r: !0, q: !0 },
                  labor_of_love_winners: {
                    n: 2,
                    r: !0,
                    q: !0,
                    br: i.qM.readUint32,
                    pbr: i.qM.readPackedUint32,
                    bw: i.gp.writeRepeatedUint32,
                  },
                },
              }),
            u.sm_m
          );
        }
        static MBF() {
          return u.sm_mbf || (u.sm_mbf = i.w0(u.M())), u.sm_mbf;
        }
        toObject(e = !1) {
          return u.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(u.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(u.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new u();
          return u.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(u.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(u.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_GetVoteDefinitions_Response";
        }
      }
      class p extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            p.prototype.voteid || i.Sg(p.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            p.sm_m ||
              (p.sm_m = {
                proto: p,
                fields: {
                  voteid: { n: 1, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  appid: { n: 2, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  communityitemid: {
                    n: 3,
                    br: i.qM.readUint64String,
                    bw: i.gp.writeUint64String,
                  },
                },
              }),
            p.sm_m
          );
        }
        static MBF() {
          return p.sm_mbf || (p.sm_mbf = i.w0(p.M())), p.sm_mbf;
        }
        toObject(e = !1) {
          return p.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(p.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(p.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new p();
          return p.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(p.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(p.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "SteamAwardsUserVote";
        }
      }
      class h extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            h.prototype.sale_appid || i.Sg(h.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            h.sm_m ||
              (h.sm_m = {
                proto: h,
                fields: {
                  sale_appid: {
                    n: 1,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                },
              }),
            h.sm_m
          );
        }
        static MBF() {
          return h.sm_mbf || (h.sm_mbf = i.w0(h.M())), h.sm_mbf;
        }
        toObject(e = !1) {
          return h.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(h.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(h.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new h();
          return h.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(h.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(h.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_GetUserVotes_Request";
        }
      }
      class g extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            g.prototype.user_votes || i.Sg(g.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            g.sm_m ||
              (g.sm_m = {
                proto: g,
                fields: { user_votes: { n: 1, c: p, r: !0, q: !0 } },
              }),
            g.sm_m
          );
        }
        static MBF() {
          return g.sm_mbf || (g.sm_mbf = i.w0(g.M())), g.sm_mbf;
        }
        toObject(e = !1) {
          return g.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(g.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(g.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new g();
          return g.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(g.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(g.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_GetUserVotes_Response";
        }
      }
      class S extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            S.prototype.voteid || i.Sg(S.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            S.sm_m ||
              (S.sm_m = {
                proto: S,
                fields: {
                  voteid: { n: 1, br: i.qM.readInt32, bw: i.gp.writeInt32 },
                  appid: { n: 2, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  sale_appid: {
                    n: 3,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                },
              }),
            S.sm_m
          );
        }
        static MBF() {
          return S.sm_mbf || (S.sm_mbf = i.w0(S.M())), S.sm_mbf;
        }
        toObject(e = !1) {
          return S.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(S.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(S.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new S();
          return S.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(S.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(S.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_SetVote_Request";
        }
      }
      class _ extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            _.prototype.user_votes || i.Sg(_.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            _.sm_m ||
              (_.sm_m = {
                proto: _,
                fields: { user_votes: { n: 1, c: p, r: !0, q: !0 } },
              }),
            _.sm_m
          );
        }
        static MBF() {
          return _.sm_mbf || (_.sm_mbf = i.w0(_.M())), _.sm_mbf;
        }
        toObject(e = !1) {
          return _.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(_.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(_.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new _();
          return _.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(_.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(_.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStore_SetVote_Response";
        }
      }
      class v extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            v.prototype.category_id || i.Sg(v.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            v.sm_m ||
              (v.sm_m = {
                proto: v,
                fields: {
                  category_id: {
                    n: 1,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  appid: { n: 2, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  last_updated: {
                    n: 3,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                },
              }),
            v.sm_m
          );
        }
        static MBF() {
          return v.sm_mbf || (v.sm_mbf = i.w0(v.M())), v.sm_mbf;
        }
        toObject(e = !1) {
          return v.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(v.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(v.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new v();
          return v.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(v.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return v.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(v.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return v.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwardsNomination";
        }
      }
      class E extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(), s.initialize(this, e, 0, -1, void 0, null);
        }
        toObject(e = !1) {
          return E.toObject(e, this);
        }
        static toObject(e, t) {
          return e ? { $jspbMessageInstance: t } : {};
        }
        static fromObject(e) {
          return new E();
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new E();
          return E.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return e;
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return E.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {}
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return E.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetUserNominations_Request";
        }
      }
      class B extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            B.prototype.nominations || i.Sg(B.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            B.sm_m ||
              (B.sm_m = {
                proto: B,
                fields: { nominations: { n: 1, c: v, r: !0, q: !0 } },
              }),
            B.sm_m
          );
        }
        static MBF() {
          return B.sm_mbf || (B.sm_mbf = i.w0(B.M())), B.sm_mbf;
        }
        toObject(e = !1) {
          return B.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(B.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(B.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new B();
          return B.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(B.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return B.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(B.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return B.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetUserNominations_Response";
        }
      }
      class w extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            w.prototype.steamid || i.Sg(w.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            w.sm_m ||
              (w.sm_m = {
                proto: w,
                fields: {
                  steamid: {
                    n: 1,
                    br: i.qM.readFixed64String,
                    bw: i.gp.writeFixed64String,
                  },
                  code: {
                    n: 2,
                    br: i.qM.readFixed64String,
                    bw: i.gp.writeFixed64String,
                  },
                },
              }),
            w.sm_m
          );
        }
        static MBF() {
          return w.sm_mbf || (w.sm_mbf = i.w0(w.M())), w.sm_mbf;
        }
        toObject(e = !1) {
          return w.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(w.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(w.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new w();
          return w.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(w.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return w.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(w.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return w.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetOtherUserNominations_Request";
        }
      }
      class y extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            y.prototype.category_id || i.Sg(y.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            y.sm_m ||
              (y.sm_m = {
                proto: y,
                fields: {
                  category_id: {
                    n: 1,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  nominated_id: {
                    n: 2,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                  source: { n: 3, br: i.qM.readEnum, bw: i.gp.writeEnum },
                },
              }),
            y.sm_m
          );
        }
        static MBF() {
          return y.sm_mbf || (y.sm_mbf = i.w0(y.M())), y.sm_mbf;
        }
        toObject(e = !1) {
          return y.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(y.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new y();
          return y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(y.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_Nominate_Request";
        }
      }
      class C extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            C.prototype.nominations || i.Sg(C.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static M() {
          return (
            C.sm_m ||
              (C.sm_m = {
                proto: C,
                fields: { nominations: { n: 1, c: v, r: !0, q: !0 } },
              }),
            C.sm_m
          );
        }
        static MBF() {
          return C.sm_mbf || (C.sm_mbf = i.w0(C.M())), C.sm_mbf;
        }
        toObject(e = !1) {
          return C.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(C.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(C.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new C();
          return C.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(C.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return C.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(C.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return C.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_Nominate_Response";
        }
      }
      class f extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            f.prototype.category_id || i.Sg(f.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            f.sm_m ||
              (f.sm_m = {
                proto: f,
                fields: {
                  category_id: {
                    n: 1,
                    br: i.qM.readUint32,
                    bw: i.gp.writeUint32,
                  },
                },
              }),
            f.sm_m
          );
        }
        static MBF() {
          return f.sm_mbf || (f.sm_mbf = i.w0(f.M())), f.sm_mbf;
        }
        toObject(e = !1) {
          return f.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(f.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(f.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new f();
          return f.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(f.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(f.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationRecommendations_Request";
        }
      }
      class M extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            M.prototype.played_app || i.Sg(M.M()),
            s.initialize(this, e, 0, -1, [1, 2, 3], null);
        }
        static M() {
          return (
            M.sm_m ||
              (M.sm_m = {
                proto: M,
                fields: {
                  played_app: { n: 1, c: I, r: !0, q: !0 },
                  suggested_events: { n: 2, c: b, r: !0, q: !0 },
                  suggested_apps: { n: 3, c: T, r: !0, q: !0 },
                  debug_query: {
                    n: 4,
                    br: i.qM.readString,
                    bw: i.gp.writeString,
                  },
                },
              }),
            M.sm_m
          );
        }
        static MBF() {
          return M.sm_mbf || (M.sm_mbf = i.w0(M.M())), M.sm_mbf;
        }
        toObject(e = !1) {
          return M.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(M.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(M.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new M();
          return M.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(M.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return M.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(M.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return M.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationRecommendations_Response";
        }
      }
      class I extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            I.prototype.appid || i.Sg(I.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            I.sm_m ||
              (I.sm_m = {
                proto: I,
                fields: {
                  appid: { n: 1, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  playtime: { n: 2, br: i.qM.readInt32, bw: i.gp.writeInt32 },
                },
              }),
            I.sm_m
          );
        }
        static MBF() {
          return I.sm_mbf || (I.sm_mbf = i.w0(I.M())), I.sm_mbf;
        }
        toObject(e = !1) {
          return I.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(I.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(I.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new I();
          return I.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(I.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return I.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(I.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return I.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationRecommendations_Response_PlayedApps";
        }
      }
      class b extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            b.prototype.clanid || i.Sg(b.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            b.sm_m ||
              (b.sm_m = {
                proto: b,
                fields: {
                  clanid: { n: 1, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                  event_gid: {
                    n: 2,
                    br: i.qM.readUint64String,
                    bw: i.gp.writeUint64String,
                  },
                  appid: { n: 3, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                },
              }),
            b.sm_m
          );
        }
        static MBF() {
          return b.sm_mbf || (b.sm_mbf = i.w0(b.M())), b.sm_mbf;
        }
        toObject(e = !1) {
          return b.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(b.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(b.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new b();
          return b.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(b.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return b.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(b.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return b.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationRecommendations_Response_SuggestedEvent";
        }
      }
      class T extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            T.prototype.appid || i.Sg(T.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            T.sm_m ||
              (T.sm_m = {
                proto: T,
                fields: {
                  appid: { n: 1, br: i.qM.readUint32, bw: i.gp.writeUint32 },
                },
              }),
            T.sm_m
          );
        }
        static MBF() {
          return T.sm_mbf || (T.sm_mbf = i.w0(T.M())), T.sm_mbf;
        }
        toObject(e = !1) {
          return T.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(T.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(T.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new T();
          return T.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(T.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return T.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(T.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return T.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationRecommendations_Response_SuggestedApp";
        }
      }
      class D extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            D.prototype.generate_new || i.Sg(D.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            D.sm_m ||
              (D.sm_m = {
                proto: D,
                fields: {
                  generate_new: { n: 1, br: i.qM.readBool, bw: i.gp.writeBool },
                },
              }),
            D.sm_m
          );
        }
        static MBF() {
          return D.sm_mbf || (D.sm_mbf = i.w0(D.M())), D.sm_mbf;
        }
        toObject(e = !1) {
          return D.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(D.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(D.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new D();
          return D.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(D.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return D.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(D.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return D.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationShareLink_Request";
        }
      }
      class A extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            A.prototype.code || i.Sg(A.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static M() {
          return (
            A.sm_m ||
              (A.sm_m = {
                proto: A,
                fields: {
                  code: {
                    n: 1,
                    br: i.qM.readFixed64String,
                    bw: i.gp.writeFixed64String,
                  },
                },
              }),
            A.sm_m
          );
        }
        static MBF() {
          return A.sm_mbf || (A.sm_mbf = i.w0(A.M())), A.sm_mbf;
        }
        toObject(e = !1) {
          return A.toObject(e, this);
        }
        static toObject(e, t) {
          return i.BT(A.M(), e, t);
        }
        static fromObject(e) {
          return i.Uq(A.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new A();
          return A.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return i.zj(A.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return A.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          i.i0(A.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return A.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSteamAwards_GetNominationShareLink_Response";
        }
      }
      var L, N;
      !(function (e) {
        (e.GetVoteDefinitions = function (e, t) {
          return e.SendMsg(
            "StoreSales.GetVoteDefinitions#1",
            (0, n.I8)(d, t),
            u,
            { bConstMethod: !0, ePrivilege: 2, eWebAPIKeyRequirement: 1 },
          );
        }),
          (e.SetVote = function (e, t) {
            return e.SendMsg("StoreSales.SetVote#1", (0, n.I8)(S, t), _, {
              ePrivilege: 1,
            });
          }),
          (e.GetUserVotes = function (e, t) {
            return e.SendMsg("StoreSales.GetUserVotes#1", (0, n.I8)(h, t), g, {
              bConstMethod: !0,
              ePrivilege: 1,
            });
          });
      })(L || (L = {})),
        (function (e) {
          (e.GetUserNominations = function (e, t) {
            return e.SendMsg(
              "SteamAwards.GetUserNominations#1",
              (0, n.I8)(E, t),
              B,
              { bConstMethod: !0, ePrivilege: 1 },
            );
          }),
            (e.GetOtherUserNominations = function (e, t) {
              return e.SendMsg(
                "SteamAwards.GetOtherUserNominations#1",
                (0, n.I8)(w, t),
                B,
                { bConstMethod: !0, ePrivilege: 2 },
              );
            }),
            (e.Nominate = function (e, t) {
              return e.SendMsg("SteamAwards.Nominate#1", (0, n.I8)(y, t), C, {
                bConstMethod: !0,
                ePrivilege: 1,
              });
            }),
            (e.GetNominationRecommendations = function (e, t) {
              return e.SendMsg(
                "SteamAwards.GetNominationRecommendations#1",
                (0, n.I8)(f, t),
                M,
                { bConstMethod: !0, ePrivilege: 1 },
              );
            }),
            (e.GetNominationShareLink = function (e, t) {
              return e.SendMsg(
                "SteamAwards.GetNominationShareLink#1",
                (0, n.I8)(D, t),
                A,
                { ePrivilege: 1 },
              );
            });
        })(N || (N = {}));
      var R = r(37674),
        O = r(29385),
        z = r(61739),
        x = r(23809),
        F = r(30470),
        k = r(24484),
        U = (r(30894), r(41735), r(90626));
      r(58222);
      const G = 3334340;
      let j;
      function W() {
        return (
          j || (j = (0, k.Fd)("steam_awards_config", "application_config")), j
        );
      }
      U.createContext(null);
      function P(e) {
        const t = (0, x.KV)();
        return (0, R.I)({
          queryKey: [`SteamAwardDefs_${e}`],
          queryFn: async () => {
            const r = n.w.Init(d);
            r.Body().set_sale_appid(e), r.Body().set_language(F.TS.LANGUAGE);
            return (await L.GetVoteDefinitions(t, r)).Body().toObject();
          },
          initialData: () => {
            var e;
            return null === (e = W()) || void 0 === e ? void 0 : e.definitions;
          },
          enabled: e > 0,
        });
      }
      function H() {
        const e = (0, x.KV)();
        return (0, R.I)({
          queryKey: [`SteamAwardNominations_${F.iA.accountid}`],
          queryFn: async () => {
            var t;
            const r = n.w.Init(E);
            return null ===
              (t = (await N.GetUserNominations(e, r)).Body().toObject()) ||
              void 0 === t
              ? void 0
              : t.nominations;
          },
          initialData: () => {
            var e, t;
            return null ===
              (t =
                null === (e = W()) || void 0 === e
                  ? void 0
                  : e.user_nominations) || void 0 === t
              ? void 0
              : t.nominations;
          },
          enabled: F.iA.logged_in,
        });
      }
      function V(e) {
        var t;
        const r = H();
        return r.isLoading
          ? { bLoadingNominationForCategory: !0 }
          : {
              currentNomination:
                null === (t = r.data) || void 0 === t
                  ? void 0
                  : t.find((t) => t.category_id == e),
              bLoadingNominationForCategory: !1,
            };
      }
      function q() {
        return [`SteamAwardBadgeProgress_${F.iA.accountid}`];
      }
      function Y(e, t, r, a) {
        const i = (0, x.KV)(),
          s = (0, O.jE)();
        return (0, z.n)({
          mutationFn: () =>
            (async function (e, t, r, a) {
              const i = n.w.Init(y);
              i.Body().set_category_id(r),
                i.Body().set_source(a),
                i.Body().set_nominated_id(t);
              const s = await N.Nominate(e, i);
              return (
                s.BSuccess() ||
                  console.warn(`Failed to nominate app: ${s.GetEResult()}`),
                [s.GetEResult(), s.Body().toObject()]
              );
            })(i, e, t, r),
          onSuccess: ([e, t]) => {
            1 == e
              ? (!(function (e, t) {
                  e.setQueryData(
                    [`SteamAwardNominations_${F.iA.accountid}`],
                    t,
                  );
                })(s, t.nominations),
                window.setTimeout(
                  () => s.invalidateQueries({ queryKey: q() }),
                  1e3,
                ))
              : a && a(e);
          },
          onError: () => {
            a && a();
          },
        });
      }
    },
    9239: (e, t, r) => {
      "use strict";
      r.d(t, { I: () => pe });
      var n = r(34629),
        a = r(41735),
        i = r.n(a),
        s = r(75844),
        o = r(90626),
        l = r(79821),
        c = r(88997),
        m = r(70995),
        d = r(17720),
        u = r(27666),
        p = r(71138),
        h = r(65739),
        g = r(73745),
        S = r(31698),
        _ = r(14947),
        v = r(77700),
        E = r.n(v),
        B = r(52038);
      class w extends o.Component {
        constructor(e) {
          super(e),
            (this.m_rgCurrentMatches = []),
            (this.m_mapMatchByKey = new Map()),
            (this.containerRef = o.createRef()),
            (this.m_hMobxSearchDisposer = (0, _.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,
            r = this.m_rgCurrentMatches.length;
          if (
            (r > this.getMaxMatches() && (r = this.getMaxMatches()), t && r)
          ) {
            let e = t.scrollHeight / r,
              n = t.clientHeight / e;
            return Math.max(1, Math.floor(n));
          }
          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,
            r = e.containerRef.current,
            n = t && t.firstElementChild;
          r &&
            n &&
            (n.scrollTop + n.clientHeight < r.offsetTop ||
              r.offsetTop < n.scrollTop) &&
            r.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 });
        }
        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 r = 0;
              r < Math.min(t, this.m_rgCurrentMatches.length);
              r++
            ) {
              let t = this.m_rgCurrentMatches[r],
                n = this.getKey(t),
                a = r === this.state.selectedIndex;
              e.push(
                o.createElement(
                  y,
                  {
                    key: n,
                    matchKey: n,
                    fnOnClick: this.OnClickSuggestion,
                    fnOnMouseOver: this.OnMouseOverSuggestion,
                    bIsSelected: a,
                    ref: a ? 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 o.createElement(
            "div",
            { className: E().mentionDialogPosition, ref: this.containerRef },
            o.createElement(
              "div",
              {
                className: E().mentionDialog,
                tabIndex: 0,
                onKeyDown: this.OnKeyDown,
              },
              this.renderHeader(),
              e,
            ),
          );
        }
      }
      (0, n.Cg)([g.oI], w.prototype, "OnKeyDown", null),
        (0, n.Cg)([g.oI], w.prototype, "OnClickSuggestion", null),
        (0, n.Cg)([g.oI], w.prototype, "OnMouseOverSuggestion", null),
        (0, n.Cg)([g.oI], w.prototype, "BindSelectedElement", null);
      class y extends o.PureComponent {
        constructor() {
          super(...arguments), (this.containerRef = o.createRef());
        }
        OnMouseOver(e) {
          this.props.fnOnMouseOver(this.props.matchKey);
        }
        OnClick(e) {
          this.props.fnOnClick(this.props.matchKey);
        }
        render() {
          return o.createElement(
            "div",
            {
              className: (0, B.A)(
                E().suggestOption,
                E().mentionSearchOption,
                this.props.bIsSelected ? E().selected : "",
              ),
              onMouseEnter: this.OnMouseOver,
              onClick: this.OnClick,
              ref: this.containerRef,
            },
            this.props.children,
          );
        }
      }
      (0, n.Cg)([g.oI], y.prototype, "OnMouseOver", null),
        (0, n.Cg)([g.oI], y.prototype, "OnClick", null);
      const C = w;
      var f = r(79786),
        M = r.n(f);
      const I = class extends C {
        performSearch(e) {
          return this.props.emoticonStore.SearchEmoticons(e, 10, !1);
        }
        getSelection(e) {
          return e.name;
        }
        getKey(e) {
          return e.name;
        }
        renderMatch(e) {
          return o.createElement(
            "div",
            {
              className: (0, B.A)(
                M().EmoticonSuggestion,
                e.recent ? "Recent" : "",
              ),
            },
            o.createElement(
              "div",
              { className: M().Emoticon },
              o.createElement(S.nl, {
                emoticon: e.name,
                emoticonHoverStore: this.props.emoticonHoverStore,
              }),
              e.new && o.createElement(S.iD, null),
            ),
            ":",
            e.name,
            ":",
          );
        }
        renderNoMatchMessage() {
          return null;
        }
        renderTooManyMatchesMessage(e) {
          return null;
        }
        renderHeader() {
          return null;
        }
        getMaxMatches() {
          return Number.MAX_VALUE;
        }
      };
      var b = r(34510),
        T = r.n(b),
        D = r(61859);
      class A extends C {
        performSearch(e) {
          let t = Array();
          return (
            this.props.supportBBCodes.forEach((r) => {
              r.indexOf(e) >= 0 && t.push({ name: r });
            }),
            t
          );
        }
        getSelection(e) {
          return "[" + e.name + "][/" + e.name + "]";
        }
        getKey(e) {
          return e.name;
        }
        renderMatch(e) {
          return o.createElement(
            "div",
            { key: e.name, className: (0, B.A)(T().BBCodeSuggestion) },
            o.createElement("div", { className: T().BBCode }, e.name),
            "[",
            e.name,
            "]...[/",
            e.name,
            "]",
          );
        }
        renderNoMatchMessage() {
          return o.createElement(
            "div",
            {
              key: "nomatches",
              className: (0, B.A)(E().mentionSearchOption, E().noMatches),
            },
            (0, D.we)("#Bbcode_No_Match"),
          );
        }
        renderTooManyMatchesMessage(e) {
          return null;
        }
        renderHeader() {
          return null;
        }
        getMaxMatches() {
          return Number.MAX_VALUE;
        }
      }
      class L extends o.Component {
        constructor(e) {
          super(e),
            (this.descTextAreaRef = o.createRef()),
            (this.m_bDisabled = !0),
            (this.state = {
              mentionSearch: void 0,
              activeSuggestSearchType: void 0,
            });
        }
        BindMentionDialog(e) {
          this.m_MentionDialog = e;
        }
        OnKeyDown(e) {
          this.state.activeSuggestSearchType &&
          this.m_MentionDialog &&
          !e.shiftKey &&
          !e.ctrlKey &&
          this.m_MentionDialog.BHandleKeyPress(e.keyCode)
            ? e.preventDefault()
            : (8 != e.keyCode && 46 != e.keyCode) ||
              (this.m_iMentionSearchCancelledOffset = void 0);
        }
        FindMatchOpener(e, t, r) {
          for (let n = r - 1; n >= 0; n--) {
            if (t[n] == e) return n;
            if (" " == t[n] || "\n" == t[n]) break;
          }
        }
        ReplaceSuggestedText(e, t) {
          let r = this.descTextAreaRef.current.selectionStart,
            n = this.descTextAreaRef.current.value,
            a = this.FindMatchOpener(e, n, r);
          if (
            (void 0 === a && "@" == e && (a = this.FindMatchOpener("＠", n, r)),
            void 0 !== a)
          ) {
            let e = n.substr(0, a);
            (e += t), (r >= n.length || " " != n[r]) && (e += " ");
            let i = e.length;
            (e += n.substr(r)),
              (this.descTextAreaRef.current.value = e),
              (this.descTextAreaRef.current.selectionStart =
                this.descTextAreaRef.current.selectionEnd =
                  i),
              this.props.fnSetText(e),
              this.FocusTextInput();
          }
        }
        OnFocus(e) {
          this.UpdateAutoSearchState();
        }
        OnKeyPress(e) {
          this.UpdateAutoSearchState();
        }
        OnClick(e) {
          this.UpdateAutoSearchState();
        }
        ClearMentionSearchState() {
          (this.m_iMentionSearchStartOffset = void 0),
            this.state.activeSuggestSearchType &&
              this.setState({
                activeSuggestSearchType: void 0,
                mentionSearch: void 0,
              });
        }
        OnEmoticonSuggestionSelected(e, t) {
          if (!t)
            return (
              (this.m_iMentionSearchCancelledOffset =
                this.m_iMentionSearchStartOffset),
              void this.ClearMentionSearchState()
            );
          this.ReplaceSuggestedText(":", ":" + t + ":"),
            this.ClearMentionSearchState();
        }
        OnBBCodeSuggestionSelected(e, t) {
          if (!t)
            return (
              (this.m_iMentionSearchCancelledOffset =
                this.m_iMentionSearchStartOffset),
              void this.ClearMentionSearchState()
            );
          this.ReplaceSuggestedText("[", t), this.ClearMentionSearchState();
        }
        FocusTextInput() {
          this.descTextAreaRef.current && this.descTextAreaRef.current.focus();
        }
        UpdateAutoSearchState() {
          let e = this.descTextAreaRef.current;
          if (!e || this.m_bDisabled) return;
          if (e.selectionStart != e.selectionEnd || !e.selectionStart)
            return void this.ClearMentionSearchState();
          let t,
            r,
            n = e.selectionStart,
            a = e.value;
          for (let e = n - 1; e >= 0; e--) {
            let n = e > 0 ? a[e - 1] : void 0;
            if (this.props.emoticonStore && ":" == a[e] && a.length > 2) {
              (n && " " != n && "\n" != n && ":" != n) ||
                ((t = e), (r = "Emoticon"));
              break;
            }
            if ("[" == a[e] && (e + 1 > a.length || "/" != a[e + 1])) {
              (n && " " != n && "\n" != n && "]" != n) ||
                ((t = e), (r = "BBCode"));
              break;
            }
            if (" " == a[e] || "\n" == a[e]) break;
          }
          if (void 0 === t || t === this.m_iMentionSearchCancelledOffset)
            return void this.ClearMentionSearchState();
          let i = a.substr(t + 1, n - t - 1);
          (this.m_iMentionSearchStartOffset = t),
            this.setState({ activeSuggestSearchType: r, mentionSearch: i });
        }
        GetTextAreaRef() {
          return this.descTextAreaRef;
        }
        GetTextAreaCurrent() {
          return this.descTextAreaRef.current;
        }
        render() {
          let e,
            {
              emoticonStore: t,
              supportBBCodes: r,
              fnSetText: n,
              ...a
            } = this.props;
          switch (this.state.activeSuggestSearchType) {
            case "Emoticon":
              e = o.createElement(I, {
                emoticonStore: t,
                emoticonHoverStore: h.s,
                strSearch: this.state.mentionSearch,
                nMinimumSearchLengthBeforeAutoSelection: 2,
                onSuggestionSelected: this.OnEmoticonSuggestionSelected,
                ref: this.BindMentionDialog,
              });
              break;
            case "BBCode":
              e = o.createElement(A, {
                supportBBCodes: r,
                strSearch: this.state.mentionSearch,
                nMinimumSearchLengthBeforeAutoSelection: 2,
                onSuggestionSelected: this.OnBBCodeSuggestionSelected,
                ref: this.BindMentionDialog,
              });
          }
          return o.createElement(
            o.Fragment,
            null,
            e,
            o.createElement("textarea", {
              ...a,
              ref: this.descTextAreaRef,
              onKeyDown: this.OnKeyDown,
              onKeyUp: this.OnKeyPress,
              onFocus: this.OnFocus,
              onClick: this.OnClick,
            }),
          );
        }
      }
      (0, n.Cg)([g.oI], L.prototype, "BindMentionDialog", null),
        (0, n.Cg)([g.oI], L.prototype, "OnKeyDown", null),
        (0, n.Cg)([g.oI], L.prototype, "OnFocus", null),
        (0, n.Cg)([g.oI], L.prototype, "OnKeyPress", null),
        (0, n.Cg)([g.oI], L.prototype, "OnClick", null),
        (0, n.Cg)([g.oI], L.prototype, "OnEmoticonSuggestionSelected", null),
        (0, n.Cg)([g.oI], L.prototype, "OnBBCodeSuggestionSelected", null),
        (0, n.Cg)([g.oI], L.prototype, "FocusTextInput", null),
        (0, n.Cg)([g.oI], L.prototype, "GetTextAreaRef", null),
        (0, n.Cg)([g.oI], L.prototype, "GetTextAreaCurrent", null);
      var N = r(33737),
        R = r(283),
        O = r(95695),
        z = r.n(O),
        x = r(9154),
        F = r(738),
        k = r(41609),
        U = r.n(k),
        G = r(56011),
        j = r(78327),
        W = r(44483),
        P = r(26505),
        H = r(14336),
        V = r(68451),
        q = r(48079),
        Y = r(22797),
        K = r(32754),
        Q = r(99312),
        Z = r.n(Q),
        J = r(65946),
        X = r(44332),
        $ = r(66331),
        ee = r(29347),
        te = r(64233),
        re = r(28954),
        ne = r(63556),
        ae = r(2160);
      const ie = (0, s.PA)((e) => {
        const {
            clanSteamID: t,
            inputClanImage: r,
            nWidth: n,
            nHeight: a,
            setImage: i,
          } = e,
          s = o.useMemo(() => ["sale_header"], []),
          l = o.useMemo(() => ({ width: n, height: a }), [n, a]),
          [c, m] = o.useState(void 0),
          [h, g] = o.useState(Boolean(r)),
          [S, _] = o.useState(!1),
          [v] = (0, J.q3)(() => [ne.O.Get().GetCurEditLanguage()]),
          E = o.useMemo(() => new re.V(t), [t.ConvertTo64BitString()]),
          B = o.useCallback(
            async (e) => {
              if (
                (E.ClearImages(),
                e && (g(!0), await E.AddExistingClanImage(e, 0, s)))
              ) {
                m(e);
                const t = E.GetUploadImages()[0].IsValidAssetType(s, l);
                0 != t.error.length ||
                  t.needsCrop ||
                  (r && r.image_hash == e.image_hash) ||
                  i(e);
              }
              g(!1);
            },
            [E, r, i, s, l],
          );
        o.useEffect(() => {
          B(r);
        }, [B, r]);
        let w,
          y = "",
          C = !1;
        if (E && E.GetFilesToUpload().length > 0) {
          w = E.GetUploadImages()[0];
          const e = w.IsValidAssetType(s, l);
          (y = e.error), (C = e.needsCrop);
        }
        return o.createElement(
          o.Fragment,
          null,
          h
            ? o.createElement(Y.t, {
                size: "medium",
                string: (0, D.we)("#Loading"),
              })
            : Boolean(c) &&
                o.createElement("div", {
                  className: te.Image,
                  style: {
                    backgroundImage: `url( '${w ? w.dataUrl : c.url}' )`,
                    height: `${a}px`,
                    width: `${n}px`,
                  },
                }),
          Boolean(y) && o.createElement("p", null, y),
          C &&
            o.createElement(
              N.$n,
              {
                onClick: (e) => {
                  const t = (0, G.uX)(e);
                  let r = E.GetUploadImages()[0];
                  (0, F.pg)(
                    o.createElement($.q, {
                      ownerWin: t,
                      uploadFile: r,
                      forceResolution: { width: n, height: a },
                      fileType: 3,
                    }),
                    t,
                  );
                },
              },
              (0, D.we)("#BBCode_ResizeImage"),
            ),
          Boolean(w && w.bCropped) &&
            o.createElement(
              o.Fragment,
              null,
              o.createElement(
                "div",
                null,
                (0, D.we)("#ClanImagePickAndResize_UploadStatus", w.status),
              ),
              S
                ? o.createElement(Y.t, {
                    string: (0, D.we)("#Uploading"),
                    size: "small",
                  })
                : o.createElement(
                    N.$n,
                    {
                      onClick: async () => {
                        _(!0);
                        try {
                          const e = await E.UploadAllImages(
                              [ae.TU.k_ESteamRealmGlobal],
                              v,
                              s,
                              l,
                            ),
                            r = Object.values(e);
                          if (
                            r &&
                            r.length > 0 &&
                            ((0, X.w)(
                              1 == r.length,
                              "ClanImagePickForCertainSize expected size 1, got " +
                                r.length,
                            ),
                            1 == r[0].success)
                          ) {
                            const e = r[0],
                              n = (0, u.mJ)() + t.GetAccountID() + "/",
                              a = p.i6.GetExtensionStringForFileType(
                                e.file_type,
                              ),
                              s = n + e.image_hash + a,
                              o = n + e.thumbnail_hash + a,
                              l = {
                                imageid: -11231412,
                                image_hash: e.image_hash,
                                thumbnail_hash: e.thumbnail_hash,
                                file_type: e.file_type,
                                file_name: e.file_name,
                                clanAccountID: t.GetAccountID(),
                                url: s,
                                thumb_url: o,
                                uploaded_time: Date.now() / 1e3,
                                loc_languages: void 0,
                                is_loc_group: !1,
                              };
                            m(l), i(l);
                          }
                        } finally {
                          _(!1);
                        }
                      },
                    },
                    (0, D.we)("#ClanImagePickAndResize_UploadImage"),
                  ),
            ),
          o.createElement(
            N.$n,
            {
              onClick: (e) => {
                const t = new d.b(j.UF.CLANSTEAMID);
                (0, F.pg)(
                  o.createElement(ee.z, {
                    clanSteamID: t,
                    fnImageSelectCallBack: (e) => B(e),
                  }),
                  (0, G.uX)(e),
                );
              },
            },
            (0, D.we)("#BBCode_ChooseImage", n, a),
          ),
        );
      });
      var se,
        oe = r(68797);
      let le = (se = class extends o.Component {
        constructor(e) {
          super(e),
            (this.m_cancelSignal = i().CancelToken.source()),
            (this.state = {
              formattingHelp: {
                __html: se.s_formattingHelp.has(e.formatType)
                  ? se.s_formattingHelp.get(e.formatType)
                  : "",
              },
            });
        }
        componentDidMount() {
          this.AjaxGetFormattingHelp().catch((e) => {
            this.setState((0, oe.H)(e));
          });
        }
        componentWillUnmount() {
          this.m_cancelSignal.cancel(
            "FormattingHelpWidget component unmounted",
          );
        }
        static GetHelpURL(e, t) {
          return (
            j.TS.COMMUNITY_BASE_URL +
            "comment/" +
            e +
            "/formattinghelp" +
            (t ? "?ajax=1" : "")
          );
        }
        async AjaxGetFormattingHelp() {
          if ("" == this.state.formattingHelp.__html) {
            let e,
              t = { sessionid: j.TS.SESSIONID };
            (e = await i().get(se.GetHelpURL(this.props.formatType, !0), {
              params: t,
              cancelToken: this.m_cancelSignal.token,
            })),
              se.s_formattingHelp.set(this.props.formatType, e.data),
              this.setState({ formattingHelp: { __html: e.data } });
          }
        }
        render() {
          return this.state.strErrorMsg
            ? o.createElement(
                "div",
                null,
                this.state.strErrorMsg,
                o.createElement("br", null),
                this.state.errorCode,
              )
            : "" == this.state.formattingHelp.__html
              ? o.createElement(Y.t, null)
              : o.createElement(
                  x.o0,
                  {
                    strTitle: (0, D.we)(
                      "#EventEditor_FormattingHelp_GetHelpLink",
                    ),
                    strDescription: "",
                    closeModal: this.props.closeModal,
                    onOK: this.props.closeModal,
                    onCancel: this.props.closeModal,
                    bAlertDialog: !0,
                    className: "ModernBBStyles",
                  },
                  o.createElement("div", {
                    dangerouslySetInnerHTML: this.state.formattingHelp,
                  }),
                );
        }
      });
      (le.s_formattingHelp = new Map()), (le = se = (0, n.Cg)([s.PA], le));
      var ce,
        me = r(12611),
        de = r(74410),
        ue = r(26408);
      let pe = class extends o.Component {
        constructor(e) {
          super(e),
            (this.descAutoTextAreaRef = o.createRef()),
            (this.state = { bShowDragTarget: !1 });
        }
        componentDidMount() {
          p.pU.AddClanImageDragListener(this.ClanImageDragListener);
        }
        componentWillUnmount() {
          p.pU.RemoveClanImageDragListener(this.ClanImageDragListener);
        }
        ClanImageDragListener(e, t) {
          this.state.bShowDragTarget != t &&
            this.setState({ bShowDragTarget: t });
        }
        onFocus(e) {
          e && e.target.select();
        }
        InsertText(e) {
          he.replaceSelection(this.GetTextAreaRef().current, e);
        }
        OnTextAreaDropListener(e) {
          if (
            (e.preventDefault(),
            e.stopPropagation(),
            e.dataTransfer.items && e.dataTransfer.items[0])
          ) {
            let t = e.dataTransfer.getData("text");
            if (t && t.length > 0) {
              let e = (0, u.mJ)();
              if (t.startsWith(e)) {
                let r = "[img]" + me.lw + "/" + t.substr(e.length) + "[/img]";
                he.replaceSelection(this.GetTextAreaRef().current, r);
              }
            }
          }
        }
        GetTextAreaRef() {
          return this.descAutoTextAreaRef && this.descAutoTextAreaRef.current
            ? this.descAutoTextAreaRef.current.GetTextAreaRef()
            : void 0;
        }
        render() {
          return o.createElement(
            o.Fragment,
            null,
            o.createElement(ge, {
              pathToImages:
                j.TS.COMMUNITY_CDN_URL + "public/images/sharedfiles/guides/",
              fnTextareaRef: this.GetTextAreaRef,
              emoticonStore: this.props.emoticonStore,
              supportBBCodes: this.props.limitBBCode
                ? this.props.limitBBCode
                : l.Kl,
              bSupportHTMLImport: this.props.bSupportHTMLImport,
              showFormatHelp: this.props.showFormatHelp,
              bEmbeddedInDialog: this.props.bEmbeddedInDialog,
              clanSteamID: this.props.clanSteamID,
            }),
            o.createElement(
              "div",
              {
                className: (0, B.A)(
                  Z().DescriptionCtn,
                  Z().BBCodeEditorInputStyles,
                  this.state.bShowDragTarget ? Z().DragTarget : "",
                ),
              },
              o.createElement(L, {
                cols: 90,
                rows: this.props.nOverridesRows || 22,
                maxLength: 32e3,
                className: (0, B.A)(
                  Z().DefaultEditor,
                  this.props.classNameForTextArea
                    ? this.props.classNameForTextArea
                    : "",
                ),
                placeholder: this.props.strPlaceholder,
                ref: this.descAutoTextAreaRef,
                value: this.props.fnGetCurText(),
                onChange: this.props.fnOnTextChange,
                onDrop: this.OnTextAreaDropListener,
                emoticonStore: this.props.emoticonStore,
                fnSetText: this.props.fnSetText,
                supportBBCodes: this.props.limitBBCode
                  ? this.props.limitBBCode
                  : l.Kl,
              }),
            ),
          );
        }
      };
      (0, n.Cg)([g.oI], pe.prototype, "ClanImageDragListener", null),
        (0, n.Cg)([g.oI], pe.prototype, "onFocus", null),
        (0, n.Cg)([g.oI], pe.prototype, "OnTextAreaDropListener", null),
        (0, n.Cg)([g.oI], pe.prototype, "GetTextAreaRef", null),
        (pe = (0, n.Cg)([s.PA], pe));
      class he {
        static BIsFireFox() {
          return Boolean(
            new RegExp(/Firefox\/([0-9\.]+)(?:\s|$)/i).exec(
              navigator.userAgent,
            ),
          );
        }
        static replaceSelection(e, t) {
          let r = e.selectionStart;
          e.focus(),
            he.InsertTextAtSelect(t, e),
            e.setSelectionRange(r, r + t.length);
        }
        static getSelectedString(e) {
          return e.value.substr(
            e.selectionStart,
            e.selectionEnd - e.selectionStart,
          );
        }
        static wrapBBCode(e, t, r) {
          let n = he.getSelectedString(r),
            a = "";
          (a =
            0 == n.indexOf(e) && n.lastIndexOf(t) == n.length - t.length
              ? n.substr(e.length, n.length - e.length - t.length)
              : e + n + t),
            he.replaceSelection(r, a);
        }
        static append(e, t) {
          t &&
            (t.focus(),
            t.setSelectionRange(t.value.length, t.value.length),
            he.InsertTextAtSelect(e, t));
        }
        static ClearTextArea(e) {
          if (e) {
            e.focus();
            const t = 0,
              r = e.value.length;
            if (t !== r) {
              e.setRangeText
                ? e.setRangeText("", t, r, "preserve")
                : (e.value = "");
              const n = new Event("input", { bubbles: !0 });
              e.dispatchEvent(n);
            }
            e.focus();
          }
        }
        static overwrite(e, t) {
          t && (he.ClearTextArea(t), he.InsertTextAtSelect(e, t));
        }
        static InsertTextAtSelect(e, t) {
          const r = t.selectionStart,
            n = t.selectionEnd;
          if (null !== r && null !== n) {
            t.setRangeText
              ? t.setRangeText(e, r, n, "preserve")
              : (t.value = t.value.slice(0, r) + e + t.value.slice(n));
            const a = new Event("input", { bubbles: !0 });
            t.dispatchEvent(a),
              (t.selectionStart = t.selectionEnd = r + e.length);
          }
          t.focus();
        }
      }
      let ge = class extends o.Component {
        constructor() {
          super(...arguments), (this.m_linkPopupRef = o.createRef());
        }
        onBold() {
          he.wrapBBCode("[b]", "[/b]", this.props.fnTextareaRef().current);
        }
        onItalics() {
          he.wrapBBCode("[i]", "[/i]", this.props.fnTextareaRef().current);
        }
        onUnderline() {
          he.wrapBBCode("[u]", "[/u]", this.props.fnTextareaRef().current);
        }
        onStrikeThrough() {
          he.wrapBBCode(
            "[strike]",
            "[/strike]",
            this.props.fnTextareaRef().current,
          );
        }
        onHeader() {
          he.wrapBBCode("[h1]", "[/h1]", this.props.fnTextareaRef().current);
        }
        onHeader2() {
          he.wrapBBCode("[h2]", "[/h2]", this.props.fnTextareaRef().current);
        }
        onHeader3() {
          he.wrapBBCode("[h3]", "[/h3]", this.props.fnTextareaRef().current);
        }
        onUnorderedList() {
          this.handleList("list");
        }
        onOrderedList() {
          this.handleList("olist");
        }
        handleList(e) {
          let t = this.props.fnTextareaRef().current,
            r = "[" + e + "]\n",
            n = "[/" + e + "]";
          if (t.selectionStart == t.selectionEnd)
            he.wrapBBCode(r + "[*]", "\n" + n, t);
          else {
            let e =
              r +
              he
                .getSelectedString(t)
                .split("\n")
                .map((e) => (e.match(/\*+\s/) ? "[*]" : "[*] ") + e)
                .join("\n") +
              "\n" +
              n;
            he.replaceSelection(t, e);
          }
        }
        OnAddLink(e) {
          (0, F.HT)(
            o.createElement(ve, { textareaRef: this.props.fnTextareaRef() }),
            (0, G.uX)(e),
          );
        }
        ShowHelpDialog(e) {
          this.props.showFormatHelp &&
            (0, F.HT)(
              o.createElement(le, { formatType: this.props.showFormatHelp }),
              (0, G.uX)(e),
            );
        }
        OnConvertHTMLToBBCodeDialog(e) {
          const t = (0, G.uX)(e);
          (0, F.HT)(
            o.createElement(Ce, {
              ownerWindow: t,
              textareaRef: this.props.fnTextareaRef(),
            }),
            t,
          );
        }
        OnOpenYoutubeDialog(e) {
          let t = j.TS.IMG_URL + "applications/community/";
          (0, F.HT)(
            o.createElement(_e, {
              textareaRef: this.props.fnTextareaRef(),
              pathToImages: t,
            }),
            (0, G.uX)(e),
          );
        }
        OnOpenImageDialog(e) {
          (0, F.HT)(
            o.createElement(Ee, { textareaRef: this.props.fnTextareaRef() }),
            (0, G.uX)(e),
          );
        }
        OnOpenSpeakerDialog(e) {
          (0, F.pg)(
            o.createElement(Be, {
              clanSteamID: this.props.clanSteamID,
              textareaRef: this.props.fnTextareaRef(),
            }),
            (0, G.uX)(e),
          );
        }
        OnEmoticonSelected(e, t = !1) {
          let r = `ː${e}ː`;
          he.replaceSelection(this.props.fnTextareaRef().current, r),
            this.props.fnTextareaRef().current.focus();
        }
        BSupports(e) {
          return this.props.supportBBCodes.findIndex((t) => t == e) >= 0;
        }
        render() {
          const {
            showFormatHelp: e,
            bEmbeddedInDialog: t,
            bSupportHTMLImport: r,
            pathToImages: n,
          } = this.props;
          let a;
          return (
            e &&
              (a = t
                ? o.createElement(
                    "span",
                    { className: (0, B.A)("ttip", Z().ActionGetHelp) },
                    o.createElement(
                      K.he,
                      {
                        toolTipContent: (0, D.we)(
                          "#EventEditor_FormattingHelp_GetHelpLink",
                        ),
                      },
                      o.createElement(
                        "a",
                        {
                          href: le.GetHelpURL(this.props.showFormatHelp, !1),
                          target: j.TS.IN_CLIENT ? void 0 : "_blank",
                        },
                        o.createElement("img", { src: n + "/action_help.png" }),
                        " ",
                        (0, D.we)("#EventEditor_FormattingHelp_GetHelpLink"),
                      ),
                    ),
                  )
                : o.createElement(
                    "span",
                    {
                      onClick: this.ShowHelpDialog,
                      className: (0, B.A)("ttip", Z().ActionGetHelp),
                    },
                    o.createElement(
                      K.he,
                      {
                        toolTipContent: (0, D.we)(
                          "#EventEditor_FormattingHelp_GetHelpLink",
                        ),
                      },
                      o.createElement("img", { src: n + "/action_help.png" }),
                      " ",
                      (0, D.we)("#EventEditor_FormattingHelp_GetHelpLink"),
                    ),
                  )),
            o.createElement(
              "div",
              { className: Z().TextEditorToolBarContainer },
              this.BSupports("b") &&
                o.createElement(Se, {
                  onClick: this.onBold,
                  tooltip: (0, D.we)("#Editor_Bold"),
                  imgURL: this.props.pathToImages + "/format_bold.png",
                }),
              this.BSupports("u") &&
                o.createElement(Se, {
                  onClick: this.onUnderline,
                  tooltip: (0, D.we)("#Editor_Underline"),
                  imgURL: this.props.pathToImages + "/format_underline.png",
                }),
              this.BSupports("i") &&
                o.createElement(Se, {
                  onClick: this.onItalics,
                  tooltip: (0, D.we)("#Editor_Italics"),
                  imgURL: this.props.pathToImages + "/format_italic.png",
                }),
              this.BSupports("strike") &&
                o.createElement(Se, {
                  onClick: this.onStrikeThrough,
                  tooltip: (0, D.we)("#Editor_StrikeThrough"),
                  imgURL: this.props.pathToImages + "/format_strike.png",
                }),
              Boolean(this.BSupports("url") && !t) &&
                o.createElement(Se, {
                  onClick: this.OnAddLink,
                  tooltip: (0, D.we)("#Editor_Link"),
                  imgURL: this.props.pathToImages + "/format_link.png",
                }),
              this.BSupports("list") &&
                o.createElement(Se, {
                  onClick: this.onUnorderedList,
                  tooltip: (0, D.we)("#Editor_Unordered"),
                  imgURL: this.props.pathToImages + "/format_bullet.png",
                }),
              this.BSupports("olist") &&
                o.createElement(Se, {
                  onClick: this.onOrderedList,
                  tooltip: (0, D.we)("#Editor_Ordered"),
                  imgURL: this.props.pathToImages + "/format_numbered.png",
                }),
              this.BSupports("h1") &&
                o.createElement(Se, {
                  onClick: this.onHeader,
                  tooltip: (0, D.we)("#Editor_Header"),
                  imgURL: this.props.pathToImages + "/format_header1.png",
                }),
              this.BSupports("h2") &&
                o.createElement(Se, {
                  onClick: this.onHeader2,
                  tooltip: (0, D.we)("#Editor_Header2"),
                  imgURL: this.props.pathToImages + "/format_header2.png",
                }),
              this.BSupports("h3") &&
                o.createElement(Se, {
                  onClick: this.onHeader3,
                  tooltip: (0, D.we)("#Editor_Header3"),
                  imgURL: this.props.pathToImages + "/format_header3.png",
                }),
              this.BSupports("previewyoutube") &&
                o.createElement(Se, {
                  onClick: this.OnOpenYoutubeDialog,
                  tooltip: (0, D.we)("#EventEditor_InsertYouTube"),
                  imgURL: W.A,
                }),
              o.createElement(
                "span",
                { className: "ttip" },
                this.props.emoticonStore &&
                  o.createElement(
                    K.he,
                    { toolTipContent: (0, D.we)("#Editor_Emoticon") },
                    o.createElement(R.A, {
                      title: " ",
                      className: (0, B.A)(Z().EmoteOuter),
                      disabled: !1,
                      OnEmoticonSelected: this.OnEmoticonSelected,
                      rtLastAckedNewEmoticons: Number.MAX_VALUE,
                      emoticonStore: this.props.emoticonStore,
                      emoticonHoverStore: h.s,
                      useImg: this.props.pathToImages + "/format_emote.png",
                      contextOptions: {
                        bOverlapHorizontal: !0,
                        bDisablePopTop: !0,
                      },
                    }),
                  ),
              ),
              Boolean(this.BSupports("img") && !t) &&
                o.createElement(Se, {
                  onClick: this.OnOpenImageDialog,
                  tooltip: (0, D.we)("#EventEditor_InsertImage"),
                  imgURL: this.props.pathToImages + "/insert_img.png",
                }),
              Boolean(
                j.iA.is_support &&
                  this.props.clanSteamID &&
                  this.BSupports("speaker"),
              ) &&
                o.createElement(Se, {
                  onClick: this.OnOpenSpeakerDialog,
                  tooltip: (0, D.we)("#EventEditor_AddSpeaker"),
                  imgURL: this.props.pathToImages + "/insert_img.png",
                }),
              Boolean(r && !t) &&
                o.createElement(
                  Se,
                  {
                    onClick: this.OnConvertHTMLToBBCodeDialog,
                    className: Z().ActionImportHTML,
                    tooltip: (0, D.we)("#EventEditor_ImportFromHTML_ttip"),
                  },
                  (0, D.we)("#EventEditor_ImportHTML"),
                ),
              a,
            )
          );
        }
      };
      function Se(e) {
        return o.createElement(
          "span",
          { onClick: e.onClick, className: e.className },
          o.createElement(
            K.he,
            { toolTipContent: e.tooltip, className: "ttip" },
            Boolean(e.imgURL) && o.createElement("img", { src: e.imgURL }),
            e.children,
          ),
        );
      }
      (0, n.Cg)([g.oI], ge.prototype, "onBold", null),
        (0, n.Cg)([g.oI], ge.prototype, "onItalics", null),
        (0, n.Cg)([g.oI], ge.prototype, "onUnderline", null),
        (0, n.Cg)([g.oI], ge.prototype, "onStrikeThrough", null),
        (0, n.Cg)([g.oI], ge.prototype, "onHeader", null),
        (0, n.Cg)([g.oI], ge.prototype, "onHeader2", null),
        (0, n.Cg)([g.oI], ge.prototype, "onHeader3", null),
        (0, n.Cg)([g.oI], ge.prototype, "onUnorderedList", null),
        (0, n.Cg)([g.oI], ge.prototype, "onOrderedList", null),
        (0, n.Cg)([g.oI], ge.prototype, "OnAddLink", null),
        (0, n.Cg)([g.oI], ge.prototype, "ShowHelpDialog", null),
        (0, n.Cg)([g.oI], ge.prototype, "OnConvertHTMLToBBCodeDialog", null),
        (0, n.Cg)([g.oI], ge.prototype, "OnOpenYoutubeDialog", null),
        (0, n.Cg)([g.oI], ge.prototype, "OnOpenImageDialog", null),
        (0, n.Cg)([g.oI], ge.prototype, "OnOpenSpeakerDialog", null),
        (0, n.Cg)([g.oI], ge.prototype, "OnEmoticonSelected", null),
        (ge = (0, n.Cg)([s.PA], ge));
      let _e = class extends o.Component {
        constructor() {
          super(...arguments),
            (this.state = { youtubeInput: "", alignment: de.V2.left });
        }
        OnYoutubeInsertLink() {
          const e =
            this.state.youtubeInput && (0, m.XU)(this.state.youtubeInput);
          if (e) {
            if (this.state.alignment == de.V2.summary) {
              const t =
                "https://www.youtube.com/watch?v=" +
                e.strVideoID +
                (e.nStartSeconds ? "&t=" + e.nStartSeconds : "");
              he.wrapBBCode(t, "", this.props.textareaRef.current);
            } else {
              let t =
                "[previewyoutube=" +
                e.strVideoID +
                ";" +
                this.state.alignment +
                "]";
              he.wrapBBCode(
                t,
                "[/previewyoutube]",
                this.props.textareaRef.current,
              );
            }
            this.setState({ youtubeInput: "", alignment: de.V2.left });
          } else alert((0, D.we)("#EventEditor_InsertYouTube_NoURL"));
        }
        OnUrlChange(e) {
          this.state.youtubeInput != e.target.value &&
            this.setState({ youtubeInput: e.target.value });
        }
        OnLeftSelected() {
          this.setState({ alignment: de.V2.left });
        }
        OnRightSelected() {
          this.setState({ alignment: de.V2.right });
        }
        OnFullSelected() {
          this.setState({ alignment: de.V2.full });
        }
        OnSummarySelected() {
          this.setState({ alignment: de.V2.summary });
        }
        OnOuterDivClickPassDown(e) {}
        render() {
          return o.createElement(
            x.o0,
            {
              strTitle: (0, D.we)("#EventEditor_InsertYouTube"),
              strDescription: "",
              closeModal: this.props.closeModal,
              onCancel: this.props.closeModal,
              onOK: this.OnYoutubeInsertLink,
              strOKButtonText: (0, D.we)("#EventEditor_InsertYouTube"),
              className: Z().BBCodeEditorInputStyles,
            },
            o.createElement(
              "div",
              { className: Z().YouTubeInput },
              o.createElement(
                "div",
                { className: "DialogInputLabelGroup" },
                o.createElement(
                  "label",
                  null,
                  o.createElement(
                    "div",
                    { className: "DialogLabel" },
                    (0, D.we)("#EventEditor_InsertYouTube_URL"),
                  ),
                  o.createElement(
                    "div",
                    { className: "DialogInput_Wrapper" },
                    o.createElement("input", {
                      className: "DialogInput DialogTextInputBase",
                      ref: (e) => e && e.focus(),
                      type: "text",
                      value: this.state.youtubeInput,
                      onChange: this.OnUrlChange,
                      placeholder: (0, D.we)(
                        "#EventEditor_InsertYouTube_Placholder",
                      ),
                    }),
                  ),
                ),
              ),
              o.createElement(
                "div",
                { className: "DialogInputLabelGroup" },
                o.createElement(
                  "div",
                  { className: "DialogLabel" },
                  (0, D.we)("#EventEditor_InsertYouTube_Position"),
                ),
                o.createElement(
                  "div",
                  {
                    className: Z().YouTubePreviewInsertOption,
                    onClick: this.OnOuterDivClickPassDown,
                  },
                  o.createElement("input", {
                    type: "radio",
                    name: "YouTubePreviewInsertType",
                    id: de.V2.left,
                    value: de.V2.left,
                    checked: this.state.alignment == de.V2.left,
                    onChange: this.OnLeftSelected,
                  }),
                  o.createElement(
                    "label",
                    { htmlFor: de.V2.left },
                    o.createElement(
                      "span",
                      null,
                      (0, D.we)("#EventEditor_InsertYouTube_Left"),
                    ),
                  ),
                ),
                o.createElement(
                  "div",
                  {
                    className: Z().YouTubePreviewInsertOption,
                    onClick: this.OnOuterDivClickPassDown,
                  },
                  o.createElement("input", {
                    type: "radio",
                    name: "YouTubePreviewInsertType",
                    id: de.V2.right,
                    value: de.V2.right,
                    checked: this.state.alignment == de.V2.right,
                    onChange: this.OnRightSelected,
                  }),
                  o.createElement(
                    "label",
                    { htmlFor: de.V2.right },
                    o.createElement(
                      "span",
                      null,
                      (0, D.we)("#EventEditor_InsertYouTube_Right"),
                    ),
                  ),
                ),
                o.createElement(
                  "div",
                  {
                    className: Z().YouTubePreviewInsertOption,
                    onClick: this.OnOuterDivClickPassDown,
                  },
                  o.createElement("input", {
                    type: "radio",
                    name: "YouTubePreviewInsertType",
                    id: de.V2.full,
                    value: de.V2.full,
                    checked: this.state.alignment == de.V2.full,
                    onChange: this.OnFullSelected,
                  }),
                  o.createElement(
                    "label",
                    { htmlFor: de.V2.full },
                    o.createElement(
                      "span",
                      null,
                      (0, D.we)("#EventEditor_InsertYouTube_Full"),
                    ),
                  ),
                ),
                o.createElement(
                  "div",
                  {
                    className: Z().YouTubePreviewInsertOption,
                    onClick: this.OnOuterDivClickPassDown,
                  },
                  o.createElement("input", {
                    type: "radio",
                    name: "YouTubePreviewInsertType",
                    id: de.V2.summary,
                    value: de.V2.summary,
                    checked: this.state.alignment == de.V2.summary,
                    onChange: this.OnSummarySelected,
                  }),
                  o.createElement(
                    "label",
                    { htmlFor: de.V2.summary },
                    o.createElement(
                      "span",
                      null,
                      (0, D.we)("#EventEditor_InsertYouTube_Summary"),
                    ),
                  ),
                ),
              ),
            ),
          );
        }
      };
      (0, n.Cg)([g.oI], _e.prototype, "OnYoutubeInsertLink", null),
        (0, n.Cg)([g.oI], _e.prototype, "OnUrlChange", null),
        (0, n.Cg)([g.oI], _e.prototype, "OnLeftSelected", null),
        (0, n.Cg)([g.oI], _e.prototype, "OnRightSelected", null),
        (0, n.Cg)([g.oI], _e.prototype, "OnFullSelected", null),
        (0, n.Cg)([g.oI], _e.prototype, "OnSummarySelected", null),
        (0, n.Cg)([g.oI], _e.prototype, "OnOuterDivClickPassDown", null),
        (_e = (0, n.Cg)([s.PA], _e));
      let ve = (ce = class extends o.Component {
        constructor() {
          super(...arguments), (this.state = { textToDisplay: "", strURL: "" });
        }
        LoadFromTextArea() {
          const { textareaRef: e } = this.props;
          if (e && e.current) {
            let t = he.getSelectedString(e.current),
              r = ce.m_regExp.exec(t);
            r
              ? this.setState({ strURL: r[1], textToDisplay: r[2] })
              : this.setState({ textToDisplay: t });
          }
        }
        componentDidMount() {
          this.LoadFromTextArea();
        }
        onLinkTitleUpdate(e) {
          this.setState({ textToDisplay: e.target.value });
        }
        onLinkURLUpdate(e) {
          this.setState({ strURL: e.target.value });
        }
        onInsertLink() {
          const { strURL: e, textToDisplay: t } = this.state;
          let r = "[url=" + e + "]" + t + "[/url]";
          he.replaceSelection(this.props.textareaRef.current, r);
        }
        render() {
          return o.createElement(
            x.o0,
            {
              strTitle: (0, D.we)("#Editor_Link"),
              strDescription: "",
              closeModal: this.props.closeModal,
              onOK: this.onInsertLink,
              onCancel: this.props.closeModal,
              strOKButtonText: (0, D.we)("#EventEditor_InsertLinkURL"),
              className: Z().BBCodeEditorInputStyles,
            },
            o.createElement(
              "div",
              { className: Z().EventEditorLinkInput },
              o.createElement(
                "div",
                { className: "DialogInputLabelGroup" },
                o.createElement(
                  "label",
                  null,
                  o.createElement(
                    "div",
                    { className: "DialogLabel" },
                    (0, D.we)("#EventEditor_LinkDescription"),
                  ),
                  o.createElement(
                    "div",
                    { className: "DialogInput_Wrapper" },
                    o.createElement("input", {
                      type: "text",
                      onChange: this.onLinkTitleUpdate,
                      value: this.state.textToDisplay,
                      className: "DialogInput DialogTextInputBase",
                    }),
                  ),
                ),
              ),
              o.createElement(
                "div",
                { className: "DialogInputLabelGroup" },
                o.createElement(
                  "label",
                  null,
                  o.createElement(
                    "div",
                    { className: "DialogLabel" },
                    (0, D.we)("#EventEditor_LinkURL"),
                  ),
                  o.createElement(
                    "div",
                    { className: "DialogInput_Wrapper" },
                    o.createElement("input", {
                      type: "text",
                      onChange: this.onLinkURLUpdate,
                      value: this.state.strURL,
                      className: "DialogInput DialogTextInputBase",
                    }),
                  ),
                ),
              ),
            ),
          );
        }
      });
      (ve.m_regExp = new RegExp(/\[url=([^\]]*)\]([^\[\]]+)\[\/url\]/i)),
        (0, n.Cg)([g.oI], ve.prototype, "onLinkTitleUpdate", null),
        (0, n.Cg)([g.oI], ve.prototype, "onLinkURLUpdate", null),
        (0, n.Cg)([g.oI], ve.prototype, "onInsertLink", null),
        (ve = ce = (0, n.Cg)([s.PA], ve));
      let Ee = class extends o.Component {
        constructor() {
          super(...arguments), (this.state = { imgURL: "", anchorURL: "" });
        }
        componentDidMount() {
          this.refFirstInput && this.refFirstInput.current.focus();
        }
        OnImageInsert() {
          const { anchorURL: e, imgURL: t } = this.state;
          let r = "",
            n = "";
          e && e.length > 0 && ((r += "[url=" + e + "]"), (n = "[/url]" + n)),
            (r += "[img]" + t),
            (n = "[/img]" + n),
            he.wrapBBCode(r, n, this.props.textareaRef.current);
        }
        OnImageURLChange(e) {
          this.state.imgURL != e.target.value &&
            this.setState({ imgURL: e.target.value });
        }
        OnAnchorURLChange(e) {
          this.state.anchorURL != e.target.value &&
            this.setState({ anchorURL: e.target.value });
        }
        render() {
          const { imgURL: e, anchorURL: t } = this.state;
          return o.createElement(
            x.o0,
            {
              strTitle: (0, D.we)("#EventEditor_InsertImage_Title"),
              strDescription: "",
              closeModal: this.props.closeModal,
              onCancel: this.props.closeModal,
              onOK: this.OnImageInsert,
              strOKButtonText: (0, D.we)("#EventEditor_InsertImage_Title"),
              className: Z().BBCodeEditorInputStyles,
            },
            o.createElement(
              "div",
              { className: Z().EventEditorLinkInput },
              o.createElement(
                "p",
                null,
                (0, D.we)("#EventEditor_InsertImage_Desc"),
              ),
              o.createElement(
                "div",
                { className: "DialogInputLabelGroup" },
                o.createElement(
                  "label",
                  null,
                  o.createElement(
                    "div",
                    { className: "DialogLabel" },
                    (0, D.we)("#EventEditor_InsertImage_URL"),
                  ),
                  o.createElement(
                    "div",
                    { className: "DialogInput_Wrapper" },
                    o.createElement("input", {
                      className: "DialogInput DialogTextInputBase",
                      type: "text",
                      value: e,
                      onChange: this.OnImageURLChange,
                      placeholder: (0, D.we)(
                        "#EventEditor_InsertImage_Placeholder",
                      ),
                      ref: this.refFirstInput,
                    }),
                  ),
                ),
              ),
              o.createElement(
                "div",
                { className: "DialogInputLabelGroup" },
                o.createElement(
                  "label",
                  null,
                  o.createElement(
                    "div",
                    { className: "DialogLabel" },
                    (0, D.we)("#EventEditor_InsertImage_Anchor"),
                  ),
                  o.createElement(
                    "div",
                    { className: "DialogInput_Wrapper" },
                    o.createElement("input", {
                      className: "DialogInput DialogTextInputBase",
                      type: "text",
                      value: t,
                      onChange: this.OnAnchorURLChange,
                      placeholder: (0, D.we)(
                        "#EventEditor_InsertImage_Placeholder",
                      ),
                    }),
                  ),
                ),
              ),
            ),
          );
        }
      };
      (0, n.Cg)([g.oI], Ee.prototype, "OnImageInsert", null),
        (0, n.Cg)([g.oI], Ee.prototype, "OnImageURLChange", null),
        (0, n.Cg)([g.oI], Ee.prototype, "OnAnchorURLChange", null),
        (Ee = (0, n.Cg)([s.PA], Ee));
      const Be = (e) => {
        const [t, r] = o.useState(""),
          [n, a] = o.useState(""),
          [i, s] = o.useState(""),
          [l, m] = o.useState(""),
          [u, h] = o.useState(void 0),
          [g, S] = o.useState(void 0),
          { data: _ } = (0, P.Dv)(),
          { isLoading: v, data: E } = (0, H.js)(
            null == g ? void 0 : g.GetAccountID(),
          ),
          B = 0 != t.trim().length && 0 != l.trim().length;
        return o.createElement(
          x.o0,
          {
            strTitle: (0, D.we)("#EventEditor_AddSpeaker"),
            strDescription: (0, D.we)("#EventEditor_AddSpeaker_Desc"),
            closeModal: e.closeModal,
            onCancel: e.closeModal,
            bOKDisabled: !B,
            onOK: () => {
              let r = `[speaker name="${t.trim()}"`;
              if (
                (n.trim().length > 0 && (r += ` title="${n}"`),
                i.trim().length > 0 && (r += ` company="${i}"`),
                u)
              ) {
                r += ` photo="${me.lw + "/" + u.clanAccountID + "/" + p.i6.GetHashAndExt(u)}"`;
              }
              g && (r += ` steamid="${g.ConvertTo64BitString()}"`),
                (r += `]${l}[/speaker]`),
                he.replaceSelection(e.textareaRef.current, r);
            },
            className: Z().BBCodeEditorInputStyles,
          },
          o.createElement(
            "div",
            { className: Z().InsertSpeakerCtn },
            o.createElement(N.pd, {
              type: "text",
              label: (0, D.we)("#EventEditor_AddSpeaker_Name"),
              value: t,
              onChange: (e) => r(e.target.value),
              focusOnMount: !0,
            }),
            o.createElement(
              "div",
              { className: Z().TitleGroup },
              o.createElement(N.pd, {
                type: "text",
                label: (0, D.we)("#EventEditor_AddSpeaker_Title"),
                value: n,
                onChange: (e) => a(e.target.value),
              }),
              o.createElement(N.pd, {
                type: "text",
                label: (0, D.we)("#EventEditor_AddSpeaker_Company"),
                value: i,
                onChange: (e) => s(e.target.value),
              }),
            ),
            o.createElement(
              K.he,
              {
                toolTipContent: (0, D.we)(
                  "#EventEditor_AssociateSteamAccount_ttip",
                ),
              },
              o.createElement(
                "div",
                { className: "DialogLabel" },
                (0, D.we)("#EventEditor_AssociateSteamAccount"),
                " (?)",
              ),
            ),
            o.createElement(
              "div",
              null,
              v &&
                o.createElement(Y.t, {
                  string: (0, D.we)("#Loading"),
                  size: "small",
                }),
              Boolean(E) &&
                o.createElement(
                  "a",
                  {
                    href:
                      j.TS.COMMUNITY_BASE_URL +
                      "profiles/" +
                      g.ConvertTo64BitString(),
                    target: "_blank",
                  },
                  E
                    ? o.createElement("img", {
                        style: { marginRight: "8px" },
                        src: E.avatar_url,
                      })
                    : null,
                  E ? E.m_strPlayerName : null,
                ),
              o.createElement(
                "div",
                { className: Z().AssociateRowCtn },
                o.createElement(
                  N.$n,
                  { onClick: () => S(new d.b(j.iA.steamid)) },
                  (0, D.we)("#EventEditor_SteamAccount_addme"),
                ),
                o.createElement(
                  N.$n,
                  {
                    onClick: (e) =>
                      (0, c.lX)(
                        o.createElement(we, { friends: _, setSteamID: S }),
                        e,
                      ),
                  },
                  (0, D.we)("#EventEditor_SteamAccount_addfriend"),
                ),
                o.createElement(
                  N.$n,
                  { onClick: () => S(void 0) },
                  (0, D.we)("#EventEditor_SteamAccount_clear"),
                ),
              ),
            ),
            o.createElement(
              "div",
              { className: Z().PhotoCtn },
              o.createElement(
                "div",
                { className: "DialogLabel" },
                (0, D.we)("#EventEditor_ChoosePhoto"),
              ),
              o.createElement(ie, {
                clanSteamID: e.clanSteamID,
                inputClanImage: u,
                setImage: h,
                nWidth: 184,
                nHeight: 184,
              }),
            ),
            o.createElement(
              "div",
              { className: Z().AboutCtn },
              o.createElement(
                "div",
                { className: "DialogLabel" },
                (0, D.we)("#EventEditor_AddSpeaker_About"),
              ),
              o.createElement(N.Cl, {
                value: l,
                onChange: (e) => m(e.target.value),
                rows: 8,
                cols: 80,
                nMinHeight: 40,
                placeholder: (0, D.we)(
                  "#EventEditor_AddSpeaker_About_Placeholder",
                ),
              }),
            ),
            o.createElement(
              "div",
              { className: Z().PreviewCtn },
              o.createElement(
                "div",
                { className: "DialogLabel" },
                (0, D.we)("#Button_Preview"),
              ),
              o.createElement(q.$k, {
                company: i,
                name: t,
                title: n,
                bioString: l,
                photo: u ? u.url : void 0,
              }),
            ),
          ),
        );
      };
      function we(e) {
        const { friends: t, setSteamID: r } = e;
        return o.createElement(
          "div",
          { className: Z().DropDownScroll },
          t.map((e) =>
            o.createElement(ye, { key: e, steamid: e, setSteamID: r }),
          ),
        );
      }
      function ye(e) {
        const { steamid: t, setSteamID: r } = e,
          { data: n } = (0, H.js)(t);
        return o.createElement(
          V.kt,
          { onSelected: () => r(new d.b(t)) },
          o.createElement(
            "div",
            { style: { display: "flex", alignItems: "center" } },
            n &&
              o.createElement("img", {
                className: U().WhitelistAvatar,
                src: n.avatar_url,
              }),
            null == n ? void 0 : n.m_strPlayerName,
          ),
        );
      }
      let Ce = class extends o.Component {
        constructor(e) {
          super(e),
            (this.m_isMounted = !1),
            (this.m_bAppend = !1),
            (this.state = { bPreserveNewLines: !1, strHTMLData: "" });
        }
        componentDidMount() {
          this.m_isMounted = !0;
        }
        componentWillUnmount() {
          this.m_isMounted = !1;
        }
        OnConvertAndOverriteHTML() {
          (this.m_bAppend = !1), this.ConvertBBCode();
        }
        OnConvertAndAppendHTML() {
          (this.m_bAppend = !0), this.ConvertBBCode();
        }
        async ConvertHtmlToBBCode(e, t) {
          let r = new URLSearchParams();
          r.append("content", e), r.append("preserve_newlines", t ? "1" : "0");
          let n = null;
          return (
            (n = await i().post(
              j.TS.COMMUNITY_BASE_URL + "/actions/ConvertHTMLToBBCode",
              r,
            )),
            n.data.content
          );
        }
        ConvertBBCode() {
          this.setState({ bConverting: !0 }),
            this.ConvertHtmlToBBCode(
              this.state.strHTMLData,
              this.state.bPreserveNewLines,
            )
              .then((e) => {
                this.m_isMounted &&
                  (this.m_bAppend
                    ? he.append(e, this.props.textareaRef.current)
                    : he.overwrite(e, this.props.textareaRef.current),
                  this.setState({ bConverting: !1, bFinishedConverting: !0 }));
              })
              .catch((e) => {
                (0, F.pg)(
                  o.createElement(x.KG, {
                    strTitle: (0, D.we)("#EventEditor_ConvertHTML_Error"),
                    strDescription: (0, D.we)(
                      "#EventEditor_ConvertHTML_Error_Desc",
                      e.response && e.response.data ? e.response.data.msg : e,
                    ),
                    bAlertDialog: !0,
                    bDestructiveWarning: !0,
                  }),
                  this.props.ownerWindow,
                  { strTitle: (0, D.we)("#EventEditor_ConvertHTML_Error") },
                );
              });
        }
        OnCheckboxChange(e) {
          let t = e.target.checked;
          t != this.state.bPreserveNewLines &&
            this.setState({ bPreserveNewLines: t });
        }
        OnTextAreaChange(e) {
          this.setState({ strHTMLData: e.currentTarget.value });
        }
        render() {
          const { closeModal: e } = this.props;
          return this.state.bConverting
            ? o.createElement(
                x.o0,
                {
                  strTitle: (0, D.we)("#EventEditor_ImportFromHTML"),
                  strDescription: (0, D.we)(
                    "#EventEditor_ImportFromHTML_ConversionInProgress",
                  ),
                  closeModal: e,
                  bAlertDialog: !0,
                  onOK: e,
                  onCancel: e,
                },
                o.createElement(Y.t, null),
              )
            : this.state.bFinishedConverting
              ? o.createElement(x.o0, {
                  strTitle: (0, D.we)("#EventEditor_ImportFromHTML"),
                  strDescription: (0, D.we)(
                    "#EventEditor_ImportFromHTML_ConvertFinished",
                  ),
                  closeModal: e,
                  bAlertDialog: !0,
                  onOK: e,
                  onCancel: e,
                })
              : o.createElement(
                  x.eV,
                  {
                    onOK: this.OnConvertAndOverriteHTML,
                    onCancel: e,
                    className: Z().BBCodeEditorInputStyles,
                  },
                  o.createElement(
                    N.Y9,
                    null,
                    " ",
                    (0, D.we)("#EventEditor_ImportFromHTML"),
                    " ",
                  ),
                  o.createElement(
                    N.nB,
                    null,
                    o.createElement(
                      N.a3,
                      null,
                      o.createElement(
                        "div",
                        {
                          className: (0, B.A)(
                            z().FlexColumnContainer,
                            Z().ImportHTMLCtn,
                          ),
                        },
                        o.createElement(
                          "div",
                          { className: z().FlexColumnContainer },
                          (0, D.PP)(
                            "#EventEditor_ImportFromHTML_ConvertDescription",
                            o.createElement(
                              "a",
                              {
                                target: j.TS.IN_CLIENT ? void 0 : "_blank",
                                href: "https://partner.steamgames.com/doc/marketing/event_tools/import",
                              },
                              (0, D.we)(
                                "#EventEditor_ImportFromHTML_ConvertLearn",
                              ),
                            ),
                          ),
                        ),
                        o.createElement("textarea", {
                          value: this.state.strHTMLData,
                          placeholder: (0, D.we)(
                            "#EventEditor_ImportFromHTML_Instruction",
                          ),
                          className: Z().ImportHTMLTextArea,
                          onChange: this.OnTextAreaChange,
                          ref: (e) => e && e.focus(),
                        }),
                        o.createElement(
                          "div",
                          { className: Z().ImportHTMLCheckBoxLine },
                          o.createElement("input", {
                            id: "ImportFromHTMLNewLines",
                            type: "checkbox",
                            checked: this.state.bPreserveNewLines,
                            onChange: this.OnCheckboxChange,
                          }),
                          o.createElement(
                            "label",
                            { htmlFor: "ImportFromHTMLNewLines" },
                            (0, D.we)(
                              "#EventEditor_ImportFromHTML_PreserveNewlines",
                            ),
                            o.createElement(ue.o, {
                              tooltip: (0, D.we)(
                                "#EventEditor_ImportFromHTML_PreserveNewlines_Hint",
                              ),
                            }),
                          ),
                        ),
                        o.createElement(
                          "div",
                          null,
                          (0, D.we)(
                            "#EventEditor_ImportFromHTML_ConvertToBBCode",
                          ),
                        ),
                      ),
                    ),
                    o.createElement(
                      N.wi,
                      null,
                      o.createElement(N.VQ, {
                        onCancel: e,
                        strOKText: (0, D.we)("#Button_Overwrite"),
                        onUpdate: this.OnConvertAndAppendHTML,
                        strUpdateText: (0, D.we)("#Button_Append"),
                      }),
                    ),
                  ),
                );
        }
      };
      (0, n.Cg)([g.oI], Ce.prototype, "OnConvertAndOverriteHTML", null),
        (0, n.Cg)([g.oI], Ce.prototype, "OnConvertAndAppendHTML", null),
        (0, n.Cg)([g.oI], Ce.prototype, "OnCheckboxChange", null),
        (0, n.Cg)([g.oI], Ce.prototype, "OnTextAreaChange", null),
        (Ce = (0, n.Cg)([s.PA], Ce));
    },
    27658: (e, t, r) => {
      "use strict";
      r.d(t, { AD: () => se, vA: () => ue, He: () => le });
      var n = r(34629),
        a = r(14947),
        i = r(75844),
        s = r(90626),
        o = r(94607),
        l = r(22837),
        c = r(76217),
        m = r(71138),
        d = r(4796),
        u = r(44165),
        p = r(60746),
        h = r(68451),
        g = r(70078),
        S = r(17720),
        _ = r(30894),
        v = r(13952),
        E = r(55263),
        B = r(33737),
        w = r(12155),
        y = r(4434),
        C = r(52038),
        f = r(61859),
        M = r(61336),
        I = r(78327),
        b = r(51272),
        T = r(17009),
        D = r.n(T),
        A = r(3919),
        L = r(48838),
        N = r(41751),
        R = r(14326),
        O = r(37076);
      function z(e, t) {
        var r;
        const [n, a] = (0, s.useState)({}),
          i = (0, y.m)("useEventHeaderData");
        return (
          (0, s.useEffect)(() => {
            if (e)
              v.A.Get()
                .QueueAppRequest(e, {
                  include_assets: !0,
                  include_screenshots: !0,
                })
                .then(() => {
                  var t;
                  const r = v.A.Get().GetApp(e);
                  r &&
                    !(null === (t = null == i ? void 0 : i.token) ||
                    void 0 === t
                      ? void 0
                      : t.reason) &&
                    a({
                      strCapsuleUrl: r.GetAssets().GetHeaderURL(),
                      strGroupTitle: r.GetName(),
                      id: e,
                      strStoreURL:
                        (I.TS.IN_CLIENT ? "steam://openurl/" : "") +
                        r.GetStorePageURL(),
                      strCommunityURL:
                        (I.TS.IN_CLIENT ? "steam://openurl/" : "") +
                        r.GetCommunityPageURL(),
                      strForumURL:
                        (I.TS.IN_CLIENT ? "steam://openurl/" : "") +
                        r.GetCommunityDiscussionForumsURL(),
                    });
                });
            else if (t) {
              const e = S.b.InitFromClanID(t);
              d.ac.LoadClanInfoForClanSteamID(e).then((r) => {
                var n;
                (null === (n = null == i ? void 0 : i.token) || void 0 === n
                  ? void 0
                  : n.reason) ||
                  a({
                    strCapsuleUrl: r.avatar_full_url,
                    strGroupTitle: r.group_name,
                    id: t,
                    strStoreURL:
                      (I.TS.IN_CLIENT ? "steam://openurl/" : "") +
                      I.TS.STORE_BASE_URL +
                      "curator/" +
                      t +
                      "/",
                    strCommunityURL:
                      (I.TS.IN_CLIENT ? "steam://openurl/" : "") +
                      I.TS.COMMUNITY_BASE_URL +
                      "gid/" +
                      e.ConvertTo64BitString(),
                    strExtraBannerGroupStyle: D().ClanBanner,
                  });
              });
            }
          }, [
            e,
            null === (r = null == i ? void 0 : i.token) || void 0 === r
              ? void 0
              : r.reason,
            t,
          ]),
          n
        );
      }
      const x = {};
      function F(e) {
        const { appId: t, clanId: r, bShowRSSFeed: n } = e,
          { strStoreURL: a, strCommunityURL: i, strForumURL: o } = z(t, r),
          l = (0, I.Y2)(),
          c =
            I.TS.STORE_BASE_URL +
            "feeds/" +
            (0, A.LJ)() +
            (t ? "/app/" + t : "/group/" + r) +
            "/?cc=" +
            I.TS.COUNTRY +
            "&l=" +
            I.TS.LANGUAGE,
          m = p.KN.Get().GetPartnerEventPermissions(S.b.InitFromClanID(r)),
          d = m && (m.can_edit || m.support_user),
          u = _.Fm.Get().BOwnsApp(t),
          h = (0, s.useMemo)(() => {
            const e = [];
            return (
              I.TS.IN_CLIENT &&
                u &&
                e.push({
                  label: (0, f.we)("#EventDisplay_ViewInLibrary_ExtraShort"),
                  data: "steam://nav/games/details/" + t,
                }),
              e.push({
                label: (0, f.we)("#EventDisplay_ViewStorePage_ExtraShort"),
                data: (0, M.k2)(a),
              }),
              l ||
                (e.push({
                  label: (0, f.we)(
                    "#EventDisplay_ViewCommunityPage_ExtraShort",
                  ),
                  data: (0, M.k2)(i),
                }),
                o &&
                  e.push({
                    label: (0, f.we)("#EventDisplay_ViewForum_ExtraShort"),
                    data: (0, M.k2)(o),
                  }),
                n &&
                  e.push({
                    label: s.createElement(
                      "div",
                      { className: D().RssRow },
                      s.createElement(w.ZPc, null),
                      (0, f.we)("#EventDisplay_RSSFeed_ExtraShort"),
                    ),
                    data: c,
                  })),
              d &&
                e.push({
                  label: (0, f.we)("#EventDisplay_Admin_ExtraShort"),
                  data: (0, A.Hx)(t, S.b.InitFromClanID(r), "admin"),
                }),
              e
            );
          }, [u, a, l, d, i, o, n, c, t, r]);
        return s.createElement(B.m, {
          strDefaultLabel: (0, f.we)("#EventDisplay_LinksDropDown_ExtraShort"),
          strClassName: D().AppBannerLinkDD,
          strDropDownButtonClassName: D().AppBannerLinkDDButton,
          strDropDownMenuCtnClass: D().AppBannerLinkDDContainer,
          contextMenuPositionOptions: { bMatchWidth: !1 },
          arrowClassName: D().DDButtonArrow,
          rgOptions: h,
          onChange: (e, t, r) => (0, b.EP)(r, e.data),
        });
      }
      const k = (0, i.PA)((e) => {
        const { appId: t, clanId: r } = e,
          {
            strCapsuleUrl: n,
            strGroupTitle: a,
            id: i,
            strExtraBannerGroupStyle: o,
          } = z(t, r),
          [l] = (0, E.t7)(t, x),
          c = _.Fm.Get().BOwnsApp(t);
        let m = Boolean(t !== g.DU);
        const d = s.createElement("img", {
          className: D().AppBannerLogo,
          src: n,
        });
        return s.createElement(
          "div",
          { className: D().AppBannerCtn },
          s.createElement("div", {
            className: D().AppBannerBackground,
            style: { backgroundImage: `url(${n})` },
          }),
          s.createElement(
            "div",
            { className: (0, C.A)(D().AppBannerGroup, o) },
            m
              ? Boolean(t)
                ? s.createElement(
                    N.Qf,
                    {
                      item: { id: t, type: "game" },
                      className: D().AppBannerLogoCtn,
                      hoverProps: {
                        direction: "overlay",
                        style: { minWidth: "320px" },
                      },
                    },
                    d,
                  )
                : s.createElement(
                    O.u,
                    {
                      type: e.appId ? "app" : "clan",
                      id: i,
                      hoverClassName: D().AppBannerLogoCtn,
                    },
                    d,
                  )
              : s.createElement(
                  "div",
                  { className: D().AppBannerLogoCtn },
                  d,
                  " ",
                ),
            s.createElement(
              "div",
              { className: D().AppBannerTitle },
              a,
              s.createElement(
                "div",
                { className: D().NewsHubSubTitle },
                (0, f.we)("#EventDisplay_NewsHubSubtitle"),
              ),
            ),
            m &&
              s.createElement(
                "div",
                { className: D().AppBannerLinks },
                Boolean(!c) &&
                  s.createElement(
                    "div",
                    { className: D().HeaderWishlistButton },
                    s.createElement(R._, {
                      appid: t,
                      bIsFree: null == l ? void 0 : l.BIsFree(),
                      bIsComingSoon: null == l ? void 0 : l.BIsComingSoon(),
                      className: (0, C.A)(
                        D().ActionButton,
                        D().WishlistBtnShort,
                      ),
                    }),
                  ),
                s.createElement(
                  "div",
                  { className: D().HeaderFollowButton },
                  Boolean(t)
                    ? s.createElement(L.do, {
                        appid: t,
                        className: D().HeaderButtonDark,
                      })
                    : s.createElement(L.of, {
                        clanAccountID: r,
                        className: D().HeaderButtonDark,
                      }),
                ),
                s.createElement(F, { ...e }),
              ),
          ),
        );
      });
      var U = r(42011),
        G = r(53418),
        j = r(64940),
        W = r(90316),
        P = r.n(W),
        H = r(67417),
        V = r(95695),
        q = r.n(V),
        Y = r(3088),
        K = r(22797),
        Q = r(69381),
        Z = r(44332),
        J = r(6144),
        X = r(56011),
        $ = r(73745),
        ee = r(42951),
        te = r(71746),
        re = r(47204),
        ne = r(69409);
      const ae = s.lazy(() =>
        Promise.all([
          r.e(2121),
          r.e(2694),
          r.e(1063),
          r.e(3256),
          r.e(9517),
          r.e(8396),
        ]).then(r.bind(r, 45476)),
      );
      function ie(e) {
        var t;
        const [r, n] = (0, E.t7)(e.appid, { include_assets: !0 }),
          [a, i] = (0, d.TB)(e.clanID);
        let o = "";
        return (
          e.appid
            ? (o =
                (null === (t = null == r ? void 0 : r.GetAssets()) ||
                void 0 === t
                  ? void 0
                  : t.GetCommunityIconURL()) || "")
            : e.clanID && (o = i ? i.avatar_full_url : ""),
          s.createElement(
            "div",
            {
              className: (0, C.A)(D().ScrollButton, D().GameArt, D().AnimIn),
              onClick: e.onAppIconClick,
            },
            Boolean(o) && s.createElement("img", { src: o }),
          )
        );
      }
      let se = class extends s.Component {
        constructor(e) {
          super(e),
            (this.m_loader = null),
            (this.m_refPage = s.createRef()),
            (this.m_refContent = s.createRef()),
            (this.m_refScroll = s.createRef()),
            (this.m_refScrollAnchor = s.createRef()),
            (this.m_scrollAnimation = null),
            (this.m_nPreviousRenderCount = 0),
            (this.m_nCurrentRenderCount = 0),
            !this.props.bShowOnlyInitialEvent &&
              this.props.initialEvent &&
              ((this.m_loader = new de(this.props.partnerEventStore)),
              this.m_loader.InitAroundEvent(
                this.props.initialEvent,
                this.props.additionalParams,
              ));
        }
        FindCurrentlyViewedEventIndex() {
          if (!this.m_refContent.current || !this.m_refScroll.current)
            return -1;
          let e = this.m_refContent.current.children,
            t = this.GetScrollTopForComparison();
          for (let r = 0; r < e.length; r++) {
            let n = e[r],
              a = n.offsetTop,
              i = a + n.clientHeight;
            if (a <= t && i > t) return r;
          }
          return -1;
        }
        GetPaddingTop() {
          return this.props.showAppHeader ? 136 : 56;
        }
        GetScrollTopForComparison() {
          return Math.ceil(
            this.m_refScroll.current.scrollTop + this.GetPaddingTop() + 24,
          );
        }
        ScrollToEvent(e) {
          let t = this.m_refContent.current;
          if (!t) return;
          if (e < 0 || e >= t.children.length) return;
          if (this.m_scrollAnimation) return;
          let r = t.children[e].offsetTop - this.GetPaddingTop();
          this.ScrollToOffset(r);
        }
        ScrollToOffset(e) {
          let t = this.m_refScroll.current;
          if (!t) return;
          let r = {
            msDuration: 500,
            timing: "cubic-in-out",
            onComplete: this.OnScrollComplete,
          };
          (this.m_scrollAnimation = new Q.JV(t, { scrollTop: e }, r)),
            this.m_scrollAnimation.Start();
        }
        ScrollToBottom() {
          this.m_refScroll.current &&
            this.ScrollToOffset(this.m_refScroll.current.scrollHeight);
        }
        ScrollToNextEvent() {
          let e = this.m_loader.GetEvents(),
            t = this.FindCurrentlyViewedEventIndex() + 1;
          t >= e.length
            ? this.ScrollToBottom()
            : (this.ScrollToEvent(t),
              t == e.length - 1 && this.m_loader.LoadMoreAtEnd());
        }
        ScrollToPrevEvent() {
          let e = this.FindCurrentlyViewedEventIndex(),
            t = e - 1;
          if (t < 0) return void this.ScrollToOffset(0);
          let r = this.m_refContent.current;
          if (r) {
            let n = r.children[e],
              a = n.offsetTop,
              i = a + n.clientHeight,
              s = this.GetScrollTopForComparison();
            (s -= 0.3 * (i - a)), a <= s && (t = e);
          }
          this.ScrollToEvent(t);
        }
        OnScrollComplete() {
          this.m_scrollAnimation = null;
        }
        Close() {
          this.props.closeModal && this.props.closeModal();
        }
        OnBackgroundClick(e) {
          e.currentTarget == e.target && this.Close();
        }
        OnKeyDown(e) {
          27 == e.keyCode && this.Close();
        }
        OnScroll(e) {
          if (this.props.bShowOnlyInitialEvent) return;
          let t = this.m_refScroll.current;
          if (!t) return;
          let r = t.clientHeight;
          t.scrollHeight - (t.scrollTop + r) <= r &&
            this.m_loader.LoadMoreAtEnd(),
            t.scrollTop <= r && this.m_loader.LoadMoreAtBeginning();
        }
        getSnapshotBeforeUpdate(e) {
          let t = this.m_nCurrentRenderCount != this.m_nPreviousRenderCount;
          if (((this.m_nPreviousRenderCount = this.m_nCurrentRenderCount), !t))
            return null;
          let r = this.m_refScroll.current;
          if (!r || !this.m_refScrollAnchor.current) return null;
          let n = this.m_refScrollAnchor.current.GetDOM();
          return n ? n.offsetTop - r.scrollTop : null;
        }
        OnTouchStart(e) {
          1 == e.touches.length &&
            (this.m_nTouchStartClientY = e.touches[0].clientY);
        }
        OnTouchMove(e) {
          if (!this.m_refScroll.current || 0 == e.touches.length) return;
          const t = this.m_nTouchStartClientY - e.touches[0].clientY;
          this.SuppressUnwantedScrollEventsBecauseSafariIsDumb(e, t);
        }
        OnWheel(e) {
          this.SuppressUnwantedScrollEventsBecauseSafariIsDumb(e, e.deltaY);
        }
        SuppressUnwantedScrollEventsBecauseSafariIsDumb(e, t) {
          const r = X.kD(e.target) && X.id(this.m_refScroll.current, e.target),
            n = t < 0 && this.m_refScroll.current.scrollTop < 1,
            a =
              this.m_refScroll.current.scrollHeight -
                this.m_refScroll.current.scrollTop <=
              this.m_refScroll.current.clientHeight;
          (!r || n || (t > 0 && a)) && e.cancelable && e.preventDefault();
        }
        SetGlobalHeaderHidden(e) {
          const t = document.getElementsByClassName("responsive_header");
          (0, Z.w)(t.length <= 1, "Must have at most one responsive_header"),
            t.length >= 1 && (t[0].style.display = e ? "none" : null);
        }
        SetFooterPinnedToBottom(e) {
          const t = document.getElementById("footer");
          t && (t.style.position = e ? "absolute" : null);
        }
        componentDidMount() {
          const e = this.m_refScroll.current;
          e && !X.id(e, e.ownerDocument.activeElement) && e.focus();
          const t = this.m_refPage.current;
          t &&
            (t.addEventListener("touchstart", this.OnTouchStart),
            t.addEventListener("touchmove", this.OnTouchMove, { passive: !1 }),
            t.addEventListener("wheel", this.OnWheel, { passive: !1 })),
            this.props.showAppHeader && this.SetGlobalHeaderHidden(!0),
            this.SetFooterPinnedToBottom(!0);
        }
        componentDidUpdate(e, t, r) {
          if (null !== r) {
            let e = this.m_refScroll.current;
            e && !X.id(e, e.ownerDocument.activeElement) && e.focus();
            let t = this.m_refScrollAnchor.current
              ? this.m_refScrollAnchor.current.GetDOM()
              : null;
            t && (e.scrollTop = t.offsetTop - r);
          }
        }
        componentWillUnmount() {
          const e = this.m_refPage.current;
          e &&
            (e.removeEventListener("touchstart", this.OnTouchStart),
            e.removeEventListener("touchmove", this.OnTouchMove),
            e.removeEventListener("wheel", this.OnWheel)),
            this.props.showAppHeader && this.SetGlobalHeaderHidden(!1),
            this.SetFooterPinnedToBottom(!1);
        }
        render() {
          var e;
          const { initialEvent: t, bShowOnlyInitialEvent: r } = this.props,
            n = !t,
            a = n ? [] : r ? [t] : this.m_loader.GetEvents(),
            i = [];
          let o = this.props.appid,
            l =
              null === (e = this.props.clanSteamID) || void 0 === e
                ? void 0
                : e.GetAccountID();
          for (const e of a) {
            const t = e.GID == this.props.initialEvent.GID,
              r = t;
            i.push(
              s.createElement(le, {
                ref: t ? this.m_refScrollAnchor : null,
                key: e.GID,
                event: e,
                emoticonStore: this.props.emoticonStore,
                partnerEventStore: this.props.partnerEventStore,
                disableReadTracking: t,
                fnFilterImageURLsForKnownFailures:
                  this.props.fnFilterImageURLsForKnownFailures,
                fnImageFailureCallback: this.props.fnImageFailureCallback,
                bDisableBroadcastPlayer: !r,
                className: this.props.eventClassName,
              }),
            ),
              null == o && (o = e.appid),
              null == l && (l = e.clanSteamID.GetAccountID());
          }
          return (
            (this.m_nCurrentRenderCount = i.length),
            s.createElement(
              c.Z,
              {
                onCancelButton: this.props.closeModal,
                className: D().AppPartnerEventsPage,
                ref: this.m_refPage,
              },
              this.props.showAppHeader &&
                s.createElement(ue, { appId: o, clanId: l }),
              s.createElement(
                "div",
                {
                  className: (0, C.A)(
                    D().AppPartnerEventsBody,
                    D().EndlessScroll,
                  ),
                  ref: this.m_refScroll,
                  onScroll: this.OnScroll,
                  onClick: this.OnBackgroundClick,
                  tabIndex: -1,
                  onKeyDown: this.OnKeyDown,
                },
                n
                  ? s.createElement(
                      "div",
                      { className: D().NoEvents },
                      (0, f.we)("#EventDisplay_NoEventsToSee"),
                    )
                  : s.createElement(
                      s.Fragment,
                      null,
                      s.createElement(
                        "div",
                        {
                          className: (0, C.A)(
                            D().ControlSection,
                            !this.props.onAppIconClick && D().NoGameLink,
                            r && D().NoScrollArrows,
                          ),
                        },
                        s.createElement(
                          "div",
                          { className: D().ControlSectionWidth },
                          s.createElement(
                            "div",
                            { className: D().ControlSectionRightSide },
                            Boolean(this.props.closeModal) &&
                              s.createElement(
                                "div",
                                {
                                  className: (0, C.A)(
                                    D().CloseButton,
                                    D().AnimIn,
                                  ),
                                  onClick: this.Close,
                                },
                                s.createElement(w.sED, null),
                              ),
                            !r &&
                              s.createElement(
                                "div",
                                {
                                  className: (0, C.A)(
                                    D().ScrollButton,
                                    D().Up,
                                    D().AnimIn,
                                  ),
                                  onClick: this.ScrollToPrevEvent,
                                },
                                s.createElement(w.V5W, { angle: 0 }),
                              ),
                            !r &&
                              s.createElement(
                                "div",
                                {
                                  className: (0, C.A)(
                                    D().ScrollButton,
                                    D().Down,
                                    D().AnimIn,
                                  ),
                                  onClick: this.ScrollToNextEvent,
                                },
                                s.createElement(w.V5W, { angle: 180 }),
                              ),
                            this.props.onAppIconClick &&
                              s.createElement(ie, {
                                appid: o,
                                clanID: l,
                                onAppIconClick: this.props.onAppIconClick,
                              }),
                          ),
                        ),
                      ),
                      !r &&
                        s.createElement(oe, {
                          loader: this.m_loader,
                          location: "top",
                        }),
                      s.createElement(
                        "div",
                        {
                          ref: this.m_refContent,
                          className: (0, C.A)(
                            D().AppPartnerEventsContainer,
                            !this.props.onAppIconClick && D().NoGameLink,
                          ),
                        },
                        i,
                      ),
                      !r &&
                        s.createElement(oe, {
                          loader: this.m_loader,
                          location: "bottom",
                        }),
                      Boolean(r) &&
                        s.createElement(
                          A.tj,
                          { eventModel: t, route: A.PH.k_eStoreNewsHub },
                          (0, f.we)("#EventBrowse_MoreEventsBtn"),
                        ),
                    ),
              ),
            )
          );
        }
      };
      (0, n.Cg)([$.oI], se.prototype, "ScrollToNextEvent", null),
        (0, n.Cg)([$.oI], se.prototype, "ScrollToPrevEvent", null),
        (0, n.Cg)([$.oI], se.prototype, "OnScrollComplete", null),
        (0, n.Cg)([$.oI], se.prototype, "Close", null),
        (0, n.Cg)([$.oI], se.prototype, "OnBackgroundClick", null),
        (0, n.Cg)([$.oI], se.prototype, "OnKeyDown", null),
        (0, n.Cg)([$.oI], se.prototype, "OnScroll", null),
        (0, n.Cg)([$.oI], se.prototype, "OnTouchStart", null),
        (0, n.Cg)([$.oI], se.prototype, "OnTouchMove", null),
        (0, n.Cg)([$.oI], se.prototype, "OnWheel", null),
        (se = (0, n.Cg)([i.PA], se));
      const oe = (0, i.PA)((e) => {
          let t = e.loader.GetNewerState(),
            r = e.loader.GetOlderState();
          return t == me.Loading && r == me.Loading
            ? null
            : ("top" == e.location ? t : r) == me.Loading
              ? s.createElement(
                  "div",
                  { className: D().DirectionState },
                  s.createElement(K.t, {
                    position: "center",
                    string: (0, f.we)("#Loading"),
                  }),
                )
              : null;
        }),
        le = s.forwardRef(function (e, t) {
          const r = (0, I.Qn)(),
            [n, a] = (0, E.t7)(e.event.appid, { include_assets: !0 });
          return s.createElement(ce, {
            ref: t,
            ...e,
            bInGamepadUI: r,
            storeItem: n,
          });
        });
      let ce = class extends s.Component {
        constructor() {
          super(...arguments),
            (this.m_refContent = s.createRef()),
            (this.m_sendReadInfo = new J.LU()),
            (this.m_bSentRead = !1);
        }
        OnEnterVisible() {
          if (this.m_bSentRead || this.m_sendReadInfo.IsScheduled()) return;
          this.m_sendReadInfo.Schedule(750, () => {
            p.KN.Get().RecordEventRead(this.props.event, 4),
              (this.m_bSentRead = !0);
          });
        }
        OnLeaveVisible() {
          this.m_sendReadInfo.Cancel();
        }
        GetDOM() {
          return this.m_refContent.current;
        }
        render() {
          const {
              event: e,
              langOverride: t,
              partnerEventStore: r,
              emoticonStore: n,
              className: a,
              additionalTypeAndDateElement: i,
              fnFilterImageURLsForKnownFailures: c,
              fnImageFailureCallback: p,
              headerClassnames: g,
              isPreview: S,
              storeItem: _,
            } = this.props,
            v = t || (0, l.sf)(I.TS.LANGUAGE),
            E = e.GetDescriptionWithFallback(v) || "",
            B = g;
          let w = e.GetImageForSizeAsArrayWithFallback(
            "background",
            v,
            m.wI.background_main,
          );
          c && (w = c(w));
          const y = e.GetCategoryAsString(),
            T = e.type,
            L = e.BImageNeedScreenshotFallback("background", v);
          let N = "";
          if (e.appid) N = (null == _ ? void 0 : _.GetName()) || "";
          else if (e.clanSteamID) {
            const t = d.ac.GetClanInfoByClanAccountID(
              e.clanSteamID.GetAccountID(),
            );
            N = t ? t.group_name : "";
          }
          const R = u.HD.GetTimeNowWithOverride(),
            O = 28 !== T && R < e.GetStartTimeAndDateUnixSeconds() && !S;
          return s.createElement(
            re.aq,
            null,
            s.createElement(
              "div",
              {
                ref: this.m_refContent,
                className: (0, C.A)(
                  a,
                  D().PartnerEvent,
                  P().InLibraryView,
                  "editor" == B ? P().InEditor : "",
                ),
              },
              12 != T &&
                !L &&
                s.createElement(Y.c, {
                  className: (0, C.A)(P().EventCoverImageBackground),
                  rgSources: w,
                  onIncrementalError: (e, t, r) => p && p(t),
                }),
              w.length > 0 &&
                s.createElement(Y.c, {
                  className: P().EventBackgroundBlur,
                  rgSources: w,
                  onIncrementalError: (e, t, r) => p && p(t),
                }),
              s.createElement(
                "div",
                { className: P().LibraryEventTitleContainer },
                s.createElement(
                  "div",
                  { className: P().EventDetailTitleContainer },
                  this.props.headerElement,
                  s.createElement(
                    "div",
                    {
                      className: (0, C.A)(
                        D().EventTypeAndTimeRow,
                        O && D().WithReminder,
                      ),
                    },
                    s.createElement(
                      "div",
                      { className: D().TimeandPostedBy },
                      s.createElement("span", { className: D().EventType }, y),
                      s.createElement(
                        "span",
                        { className: D().PostedBy },
                        " ",
                        (0, f.we)("#EventDisplay_PostedBy"),
                        N,
                        " ",
                      ),
                      s.createElement(H.OT, { event: e }),
                    ),
                    O &&
                      !S &&
                      s.createElement(
                        "div",
                        { className: D().ReminderContainer },
                        s.createElement(ee.j, {
                          eventModel: e,
                          lang: v,
                          bExpandLeft: !0,
                        }),
                      ),
                    !S && i,
                  ),
                  !this.props.disableReadTracking &&
                    !S &&
                    s.createElement(o.Y, {
                      onEnter: this.OnEnterVisible,
                      onLeave: this.OnLeaveVisible,
                      bottomOffset: "300px",
                    }),
                  this.props.bInGamepadUI
                    ? s.createElement(
                        "div",
                        { className: P().EventDetailTitle },
                        e.GetNameWithFallback(v),
                      )
                    : s.createElement(
                        A.tj,
                        {
                          eventModel: e,
                          route: A.PH.k_eView,
                          className: P().EventDetailTitle,
                        },
                        e.GetNameWithFallback(v),
                      ),
                  e.BHasSubTitle(v) &&
                    s.createElement(
                      "div",
                      {
                        className: (0, C.A)(
                          P().EventDetailsSubTitle,
                          D().LibraryViewSubtitle,
                        ),
                      },
                      e.GetSubTitle(v),
                    ),
                  s.createElement("div", {
                    className: P().EventDetailUserType,
                  }),
                ),
              ),
              Boolean(
                e.BEventCanShowBroadcastWidget() &&
                  !this.props.bDisableBroadcastPlayer,
              ) &&
                s.createElement(
                  "div",
                  { className: P().EventBroadcastCtn },
                  s.createElement(
                    s.Suspense,
                    { fallback: null },
                    s.createElement(ae, { event: this.props.event }),
                  ),
                ),
              e.BHasTag("steam_award_nomination_request") &&
                s.createElement(j.ig, { event: e, lang: v }),
              e.BHasTag("steam_award_vote_request") &&
                s.createElement(j.bL, {
                  appID: e.appid,
                  bIsEventActionEnabled: e.BIsEventActionEnabled(),
                  voteCategories: e.GetSteamAwardNomineeCategories(),
                }),
              s.createElement(
                "div",
                { className: P().LibraryEventBodyContainer },
                s.createElement(
                  "div",
                  {
                    className: (0, C.A)(
                      P().EventDetailsBody,
                      D().EventDetailsBody,
                    ),
                    onContextMenu: I.TS.IN_CLIENT ? h.aE : void 0,
                  },
                  s.createElement(G.f, {
                    text: E,
                    partnerEventStore: r,
                    event: e,
                  }),
                  s.createElement("span", { className: q().Clear }),
                ),
                s.createElement(te._, { event: this.props.event }),
                Boolean(e.jsondata.read_more_link) &&
                  s.createElement(
                    "div",
                    { className: (0, C.A)(D().ReadMoreCnt) },
                    s.createElement(
                      b.uU,
                      {
                        className: (0, C.A)(q().Button),
                        href: e.jsondata.read_more_link,
                      },
                      (0, f.we)("#EventEmail_Button_ClickForMoreDetails"),
                    ),
                  ),
                Boolean(e.jsondata.bSaleEnabled && e.jsondata.sale_vanity_id) &&
                  s.createElement(
                    "div",
                    { className: (0, C.A)(D().ReadMoreCnt) },
                    s.createElement(ne.m, { gidEvent: e.GID }),
                    s.createElement(
                      "a",
                      {
                        className: (0, C.A)(q().Button, "LinkButton"),
                        href: (0, M.k2)(e.GetSaleURL()),
                      },
                      (0, f.we)("#Event_Button_VisitSalePage"),
                    ),
                  ),
                s.createElement(H.lS, { appid: e.appid }),
              ),
              !Boolean(S) &&
                s.createElement(U.F, {
                  eventModel: e,
                  partnerEventStore: r,
                  emoticonStore: n,
                }),
            ),
          );
        }
      };
      var me;
      (0, n.Cg)([$.oI], ce.prototype, "OnEnterVisible", null),
        (0, n.Cg)([$.oI], ce.prototype, "OnLeaveVisible", null),
        (ce = (0, n.Cg)([i.PA], ce)),
        (function (e) {
          (e[(e.Idle = 1)] = "Idle"),
            (e[(e.Loading = 2)] = "Loading"),
            (e[(e.EndOfContent = 3)] = "EndOfContent");
        })(me || (me = {}));
      class de {
        constructor(e) {
          (this.k_nMaxPerDirection = 3),
            (this.m_nAppID = 0),
            (this.m_rgEvents = []),
            (this.m_eOlderDirection = me.Idle),
            (this.m_eNewerDirection = me.Idle),
            (0, a.Gn)(this),
            (this.m_partnerEventStore = e);
        }
        GetEvents() {
          return this.m_rgEvents;
        }
        GetAppID() {
          return this.m_nAppID;
        }
        GetOlderState() {
          return this.m_eOlderDirection;
        }
        GetNewerState() {
          return this.m_eNewerDirection;
        }
        async InitAroundEvent(e, t) {
          const r = this.m_partnerEventStore;
          (this.m_nAppID = e.appid),
            (this.m_clanSteamID = e.clanSteamID),
            (this.m_rgEvents = []),
            (this.m_eOlderDirection = me.Loading),
            (this.m_eNewerDirection = me.Loading),
            (this.m_additionalParams = t),
            this.m_rgEvents.push(e);
          let n = null;
          try {
            n = await r.LoadAdjacentPartnerEventsByEvent(
              e,
              this.m_clanSteamID,
              this.m_nAppID,
              this.k_nMaxPerDirection,
              this.k_nMaxPerDirection,
              this.m_additionalParams,
            );
          } catch (e) {}
          (0, a.h5)(() => {
            if (!n || 0 == n.length)
              return (
                (this.m_eOlderDirection = me.EndOfContent),
                void (this.m_eNewerDirection = me.EndOfContent)
              );
            let t = n.findIndex((t) => t.GID == e.GID),
              r = t,
              a = t >= 0 ? n.length - t - 1 : 0;
            (this.m_eNewerDirection =
              r >= this.k_nMaxPerDirection ? me.Idle : me.EndOfContent),
              (this.m_eOlderDirection =
                a >= this.k_nMaxPerDirection ? me.Idle : me.EndOfContent),
              (this.m_rgEvents = n);
          });
        }
        async LoadMoreAtEnd() {
          if (this.m_eOlderDirection != me.Idle) return;
          if (0 == this.m_rgEvents.length) return;
          let e = this.m_rgEvents[this.m_rgEvents.length - 1];
          this.m_eOlderDirection = me.Loading;
          let t = null;
          try {
            const r = this.m_partnerEventStore;
            t = await r.LoadAdjacentPartnerEventsByEvent(
              e,
              this.m_clanSteamID,
              this.m_nAppID,
              0,
              this.k_nMaxPerDirection,
              this.m_additionalParams,
            );
          } catch (e) {}
          (0, a.h5)(() => {
            if (!t) return void (this.m_eOlderDirection = me.Idle);
            const e = new Set(this.m_rgEvents.map((e) => e.GID));
            for (let r of t)
              e.has(r.GID) || (this.m_rgEvents.push(r), e.add(r.GID));
            this.m_eOlderDirection =
              t.length >= this.k_nMaxPerDirection ? me.Idle : me.EndOfContent;
          });
        }
        async LoadMoreAtBeginning() {
          if (this.m_eNewerDirection != me.Idle) return;
          if (0 == this.m_rgEvents.length) return;
          let e = this.m_rgEvents[0];
          this.m_eNewerDirection = me.Loading;
          let t = null;
          try {
            const r = this.m_partnerEventStore;
            t = await r.LoadAdjacentPartnerEventsByEvent(
              e,
              this.m_clanSteamID,
              this.m_nAppID,
              this.k_nMaxPerDirection,
              0,
            );
          } catch (e) {}
          (0, a.h5)(() => {
            if (!t) return void (this.m_eNewerDirection = me.Idle);
            const e = new Set(this.m_rgEvents.map((e) => e.GID));
            for (let r of t.reverse())
              e.has(r.GID) || (this.m_rgEvents.unshift(r), e.add(r.GID));
            this.m_eNewerDirection =
              t.length >= this.k_nMaxPerDirection ? me.Idle : me.EndOfContent;
          });
        }
      }
      (0, n.Cg)([a.sH.shallow], de.prototype, "m_rgEvents", void 0),
        (0, n.Cg)([a.sH], de.prototype, "m_eOlderDirection", void 0),
        (0, n.Cg)([a.sH], de.prototype, "m_eNewerDirection", void 0);
      const ue = (0, i.PA)((e) =>
        s.createElement(
          "div",
          {
            className: (0, C.A)(
              D().AppPartnerEventsBanner,
              "AppPartnerEventsBanner",
            ),
          },
          s.createElement(k, { ...e }),
        ),
      );
    },
    29347: (e, t, r) => {
      "use strict";
      r.d(t, { r: () => p, z: () => d });
      var n = r(90626),
        a = r(71138),
        i = r(33737),
        s = r(84811),
        o = r(9154),
        l = r(61859),
        c = r(22797),
        m = r(17618);
      const d = (e) => {
          const { clanSteamID: t, fnImageSelectCallBack: r } = e,
            [d, p] = (0, n.useState)(""),
            h = (0, a.mr)(e.clanSteamID.GetAccountID()),
            g = () => e.closeModal && e.closeModal(),
            S = a.pU.GetFilteredClanImages(t, d),
            _ = (e) => {
              r(e), g();
            };
          return n.createElement(
            s.tH,
            null,
            n.createElement(
              o.x_,
              { onEscKeypress: g },
              n.createElement(
                i.UC,
                null,
                n.createElement(
                  i.Y9,
                  null,
                  (0, l.we)("#ClanImageChooser_Title"),
                ),
                n.createElement(
                  i.nB,
                  null,
                  n.createElement(
                    i.a3,
                    null,
                    n.createElement(
                      "p",
                      null,
                      (0, l.we)("#ClanImageChooser_Desc"),
                    ),
                    n.createElement(i.pd, {
                      placeholder: (0, l.we)("#ClanImageChooser_Search"),
                      value: d,
                      onChange: (e) => p(e.currentTarget.value),
                    }),
                    n.createElement(
                      "div",
                      { className: m.ImagesOuterContainer },
                      h
                        ? n.createElement(c.t, {
                            size: "medium",
                            string: (0, l.we)("#Loading"),
                          })
                        : Boolean(S.length > 0)
                          ? S.map((e) =>
                              n.createElement(u, {
                                key: "ci" + e.image_hash,
                                clanImage: e,
                                searchStringHilight: d,
                                fnImageClick: _,
                              }),
                            )
                          : Boolean(0 == d.trim().length)
                            ? n.createElement(
                                "div",
                                null,
                                (0, l.we)("#ClanImageChooser_None"),
                              )
                            : n.createElement(
                                "div",
                                null,
                                (0, l.we)(
                                  "#EventCalendar_GameSearch_NoneFound",
                                ),
                              ),
                    ),
                  ),
                ),
                n.createElement(
                  i.wi,
                  null,
                  n.createElement(
                    i.$n,
                    { onClick: g },
                    (0, l.we)("#Button_Cancel"),
                  ),
                ),
              ),
            ),
          );
        },
        u = (e) => {
          const { clanImage: t, searchStringHilight: r, fnImageClick: a } = e;
          let i = t.file_name ? t.file_name : "",
            s = p(r, i, String(t.imageid), m.Hilight);
          return n.createElement(
            "div",
            { className: m.ImageContainer },
            n.createElement("div", {
              className: m.Image,
              style: { backgroundImage: `url( '${t.thumb_url}' )` },
              onDoubleClick: () => a(t),
            }),
            n.createElement("div", { className: m.ImageFilename, title: i }, s),
          );
        };
      function p(e, t, r, a) {
        let i = [];
        if (e.length > 0) {
          let s = t.toLocaleLowerCase();
          for (let o = 0; o < t.length; ) {
            let l = s.indexOf(e, o);
            if (l < 0) {
              i.push(
                n.createElement(
                  "span",
                  { key: r + "_" + String(o) },
                  t.substring(o),
                ),
              );
              break;
            }
            o < l &&
              i.push(
                n.createElement(
                  "span",
                  { key: r + "_" + String(o) },
                  t.substring(o, l),
                ),
              ),
              i.push(
                n.createElement(
                  "span",
                  { key: r + "_" + String(o), className: a },
                  t.substr(l, e.length),
                ),
              ),
              (o = l + e.length);
          }
        } else i.push(n.createElement("span", { key: r + "_null" }, t));
        return i;
      }
    },
    42011: (e, t, r) => {
      "use strict";
      r.d(t, { W: () => U, F: () => j });
      var n = r(34629),
        a = r(45699),
        i = r(76217),
        s = r(41735),
        o = r.n(s),
        l = r(75844),
        c = r(90626),
        m = r(4796),
        d = r(14947),
        u = r(68797),
        p = r(78327);
      class h {
        constructor() {
          (this.m_mapClanReposted = new Set()),
            (this.m_mapSourceEventGIDToPostedClans = new Map()),
            (0, d.Gn)(this);
        }
        static Get() {
          return (
            h.s_EventRepost ||
              ((h.s_EventRepost = new h()), h.s_EventRepost.Initialize()),
            h.s_EventRepost
          );
        }
        static ValidateRepostData(e) {
          const t = e;
          return (
            !!(
              t &&
              t.repost_clan_account_ids &&
              Array.isArray(t.repost_clan_account_ids) &&
              t.repost_clan_account_ids.length > 0
            ) && "number" == typeof t.repost_clan_account_ids[0]
          );
        }
        Initialize() {
          if (document.getElementById("application_config")) {
            let e = (0, p.Tc)("repostcontrols", "application_config");
            h.ValidateRepostData(e) &&
              e.repost_clan_account_ids.forEach((e) =>
                this.m_mapClanReposted.add(e),
              );
          }
        }
        BCanRepostPartnerEvent() {
          return this.m_mapClanReposted.size > 0;
        }
        GetRepostClanAccountID() {
          return Array.from(this.m_mapClanReposted);
        }
        async LoadClansAlreadyRepostedTo(e, t, r) {
          var n, a, i;
          if (this.m_mapSourceEventGIDToPostedClans.has(t))
            return this.m_mapSourceEventGIDToPostedClans.get(t);
          const s = p.TS.STORE_BASE_URL + "events/ajaxgetrepostedevent",
            l = {
              sessionid: p.TS.SESSIONID,
              source_clan_accountid: e.GetAccountID(),
              source_event_gid: t,
            };
          try {
            const e = await o().get(s, {
              params: l,
              withCredentials: !0,
              cancelToken: null == r ? void 0 : r.token,
            });
            if (
              1 ==
              (null === (n = null == e ? void 0 : e.data) || void 0 === n
                ? void 0
                : n.success)
            )
              return (
                this.m_mapSourceEventGIDToPostedClans.set(
                  t,
                  e.data.repost_clan_accountid || [],
                ),
                e.data.repost_clan_accountid
              );
            console.error(
              "GetRepostClanAccountID: failed " +
                (null === (a = null == e ? void 0 : e.data) || void 0 === a
                  ? void 0
                  : a.success) +
                " and msg: " +
                (null === (i = null == e ? void 0 : e.data) || void 0 === i
                  ? void 0
                  : i.msg),
            );
          } catch (e) {
            const t = (0, u.H)(e);
            console.error(
              "GetRepostClanAccountID: fail repost with " + t.strErrorMsg,
              t,
            );
          }
          return new Array();
        }
        async RepostEvent(e, t, r, n, a) {
          var i, s, l;
          const c = p.TS.STORE_BASE_URL + "events/ajaxrepostevent",
            m = new FormData();
          m.append("sessionid", p.TS.SESSIONID),
            m.append("source_clan_accountid", "" + e.GetAccountID()),
            m.append("source_event_gid", "" + t),
            m.append("repost_clan_accountid", "" + r.GetAccountID()),
            m.append("add", "" + n);
          try {
            let e = await o().post(c, m, {
              withCredentials: !0,
              cancelToken: null == a ? void 0 : a.token,
            });
            if (
              1 ==
                (null === (i = null == e ? void 0 : e.data) || void 0 === i
                  ? void 0
                  : i.success) &&
              e.data.repost_gid
            ) {
              this.m_mapSourceEventGIDToPostedClans.has(t) ||
                this.m_mapSourceEventGIDToPostedClans.set(t, []);
              const a = this.m_mapSourceEventGIDToPostedClans
                .get(t)
                .findIndex((e) => r.GetAccountID() == e);
              return (
                n && -1 == a
                  ? this.m_mapSourceEventGIDToPostedClans
                      .get(t)
                      .push(r.GetAccountID())
                  : n ||
                    -1 === a ||
                    this.m_mapSourceEventGIDToPostedClans.get(t).splice(a, 1),
                e.data.repost_gid
              );
            }
            console.error(
              "RepostEvent: failed " +
                (null === (s = null == e ? void 0 : e.data) || void 0 === s
                  ? void 0
                  : s.success) +
                " and msg: " +
                (null === (l = null == e ? void 0 : e.data) || void 0 === l
                  ? void 0
                  : l.msg),
            );
          } catch (e) {
            const t = (0, u.H)(e);
            console.error("RepostEvent: fail repost with " + t.strErrorMsg, t);
          }
          return null;
        }
      }
      (0, n.Cg)([d.sH], h.prototype, "m_mapClanReposted", void 0);
      var g = r(60746),
        S = r(95695),
        _ = r.n(S),
        v = r(82477),
        E = r(61985),
        B = r(738),
        w = r(12155),
        y = r(52038),
        C = r(56011),
        f = r(61859),
        M = r(82227),
        I = r(19719),
        b = r(73745),
        T = r(61336),
        D = r(9154),
        A = r(14256),
        L = r.n(A),
        N = r(3919),
        R = r(86090),
        O = r(17720),
        z = r(33737),
        x = r(84811),
        F = r(22797);
      const k = (0, l.PA)((e) => {
        const { eventModel: t } = e,
          [r, n] = (0, c.useState)(!0),
          [a, i] = (0, c.useState)(new Set()),
          [s, l] = (0, c.useState)(new Set()),
          [d, u] = (0, c.useState)(new Set()),
          [p, g] = (0, c.useState)(null),
          [S, _] = (0, c.useState)(null),
          v = (0, c.useRef)(null);
        (0, c.useEffect)(() => {
          if (r) {
            (async () => {
              const e = o().CancelToken.source();
              v.current = e.cancel;
              const r = h
                .Get()
                .LoadClansAlreadyRepostedTo(t.clanSteamID, t.GID, e);
              r.then((e) => {
                const t = new Set();
                e.forEach((e) => t.add(e)), i(t);
              });
              let a = new Array();
              a.push(r),
                h
                  .Get()
                  .GetRepostClanAccountID()
                  .forEach((e) => {
                    const t = O.b.InitFromClanID(e);
                    a.push(m.ac.LoadClanInfoForClanSteamID(t));
                  }),
                await Promise.all(a),
                n(!1);
            })();
          }
          return () => v.current && v.current();
        }, [r, t.GID, t.clanSteamID]);
        const E = new Array();
        return (
          h
            .Get()
            .GetRepostClanAccountID()
            .forEach((e) => {
              const r = m.ac.GetClanInfoByClanAccountID(e);
              if (r && e != t.clanSteamID.GetAccountID()) {
                const t = a.has(e),
                  n = s.has(e) || (t && !d.has(e));
                E.push(
                  c.createElement(z.Yh, {
                    key: "checkbox" + e,
                    label: t
                      ? (0, f.we)("#EventRepost_Dialog_Existing", r.group_name)
                      : r.group_name,
                    checked: n,
                    disabled: null !== p,
                    onChange: (t) => {
                      a.has(e)
                        ? (t ? d.delete(e) : d.add(e), u(new Set(d)))
                        : (t ? s.add(e) : s.delete(e), l(new Set(s)));
                    },
                  }),
                );
              }
            }),
          c.createElement(
            x.tH,
            null,
            c.createElement(
              D.x_,
              { onEscKeypress: () => e.closeModal && e.closeModal() },
              c.createElement(
                z.UC,
                null,
                c.createElement(
                  z.Y9,
                  null,
                  (0, f.we)("#EventRepost_Dialog_Title"),
                ),
                c.createElement(
                  z.nB,
                  null,
                  c.createElement(
                    z.a3,
                    null,
                    (0, f.we)("#EventRepost_Dialog_Desc"),
                  ),
                  r
                    ? c.createElement(F.t, { string: (0, f.we)("#Loading") })
                    : c.createElement("div", null, E),
                  Boolean(s.size || d.size) &&
                    c.createElement(
                      "div",
                      null,
                      c.createElement(
                        "span",
                        null,
                        (0, f.we)("#EventRepost_Dialog_Action_Desc"),
                      ),
                      c.createElement(
                        "ul",
                        null,
                        Boolean(s.size) &&
                          c.createElement(
                            "li",
                            null,
                            (0, f.we)("#EventRepost_Dialog_Action_Add", s.size),
                          ),
                        Boolean(d.size) &&
                          c.createElement(
                            "li",
                            null,
                            (0, f.we)(
                              "#EventRepost_Dialog_Action_Remove",
                              d.size,
                            ),
                          ),
                      ),
                    ),
                  Boolean(p) && c.createElement("div", null, p),
                  Boolean(S) && c.createElement("div", null, S),
                ),
                c.createElement(
                  z.wi,
                  null,
                  c.createElement(z.CB, {
                    onCancel: () => e.closeModal && e.closeModal(),
                    strOKText: (0, f.we)("#EventRepost_Dialog_OK"),
                    bOKDisabled:
                      (0 == s.size && 0 == d.size) || null !== p || null !== S,
                    onOK: async () => {
                      v.current && v.current();
                      const e = o().CancelToken.source();
                      v.current = e.cancel;
                      const r = s.size + d.size;
                      let n = 1;
                      g((0, f.we)("#EventRepost_Dialog_Progress", n, r));
                      for (const a of Array.from(s)) {
                        const i = O.b.InitFromClanID(a);
                        if (
                          !(await h
                            .Get()
                            .RepostEvent(t.clanSteamID, t.GID, i, !0, e))
                        )
                          return void _(
                            (0, f.we)("#EventRepost_Dialog_ResultFail"),
                          );
                        g((0, f.we)("#EventRepost_Dialog_Progress", ++n, r));
                      }
                      for (const a of Array.from(d)) {
                        const i = O.b.InitFromClanID(a);
                        if (
                          !(await h
                            .Get()
                            .RepostEvent(t.clanSteamID, t.GID, i, !1, e))
                        )
                          return void _(
                            (0, f.we)("#EventRepost_Dialog_ResultFail"),
                          );
                        g((0, f.we)("#EventRepost_Dialog_Progress", ++n, r));
                      }
                      _((0, f.we)("#EventRepost_Dialog_ResultSuccess"));
                    },
                  }),
                ),
              ),
            ),
          )
        );
      });
      function U(e, t) {
        if (!t.BIsUserLoggedIn())
          return (
            p.TS.IN_CLIENT
              ? console.log(
                  "EventDiscussionWidget: In Client: Cannot use login widget. We expect to be already logged in.",
                )
              : (0, B.pg)(
                  c.createElement(D.o0, {
                    strTitle: (0, f.we)("#EventDisplay_Share_NotLoggedIn"),
                    strDescription: (0, f.we)(
                      "#EventDisplay_Share_NotLoggedIn_Description",
                    ),
                    strOKButtonText: (0, f.we)("#MobileLogin_SignIn"),
                    onOK: () => (0, v.vg)(),
                  }),
                  window,
                ),
            !1
          );
        return (
          !t.GetPartnerEventPermissions(e.clanSteamID).limited_user ||
          ((0, B.pg)(c.createElement(R.g, null), window), !1)
        );
      }
      function G(e) {
        let t;
        return !0 === e ? (t = "up") : !1 === e && (t = "down"), t;
      }
      const j = (e) => {
        const t = (0, p.Qn)();
        return c.createElement(W, { ...e, bInGamepadUI: t });
      };
      let W = class extends c.Component {
        constructor(e) {
          super(e), (this.m_cancelSignal = o().CancelToken.source());
          const t = g.KN.Get().BHasMyVote(e.eventModel);
          let r;
          t && (r = G(g.KN.Get().GetPreviouslyLoadedVote(e.eventModel))),
            (this.state = { bLoadedVote: !!t, myVote: r });
        }
        async HandleRefreshMyVotingInformation() {
          const { eventModel: e, partnerEventStore: t } = this.props;
          g.KN.Get().BIsUserLoggedIn() &&
            (g.KN.Get()
              .LoadMyVote(e, this.m_cancelSignal)
              .then((e) => {
                let t = G(e);
                this.setState({ myVote: t, bLoadedVote: !0 });
              })
              .catch((e) => {
                let t = (0, u.H)(e);
                console.error("EventDiscussionWidget = " + t.strErrorMsg);
              }),
            m.ac.LoadClanInfoForClanSteamID(e.clanSteamID).catch((e) => {
              let t = (0, u.H)(e);
              console.error("EventDiscussionWidget = " + t.strErrorMsg);
            }));
        }
        componentDidMount() {
          this.state.bLoadedVote || this.HandleRefreshMyVotingInformation();
        }
        componentDidUpdate(e) {
          this.props.eventModel.GID != e.eventModel.GID &&
            this.HandleRefreshMyVotingInformation();
        }
        componentWillUnmount() {
          this.m_cancelSignal.cancel(
            "EventDiscussionWidget is being unmounted",
          );
        }
        OnVoteUp() {
          this.Vote("up");
        }
        OnVoteDown() {
          this.Vote("down");
        }
        Vote(e) {
          const { eventModel: t } = this.props;
          U(t, g.KN.Get()) &&
            this.state.myVote != e &&
            null != e &&
            this.state.bLoadedVote &&
            this.setState(
              { bVotingUp: "up" == e, bVotingDown: "down" == e },
              () => {
                g.KN.Get()
                  .Vote(t, "up" === e, this.m_cancelSignal)
                  .catch((t) => {
                    let r = (0, u.H)(t);
                    console.error(
                      "EventDiscussionWidget.OnVote" + e + " " + r.strErrorMsg,
                      r,
                    ),
                      this.setState({ bVotingDown: !1, bVotingUp: !1 });
                  }),
                  this.setState({ myVote: e, bVotingDown: !1, bVotingUp: !1 });
              },
            );
        }
        OnShareDialog(e) {
          const t = (0, N.cq)(this.props.eventModel);
          (0, B.pg)(
            c.createElement(E.Wt, {
              eventLink: t,
              fnGetSharePageUrl: (e) => (0, N.Bd)(this.props.eventModel, e),
              appid: this.props.eventModel.appid,
              emoticonStore: this.props.emoticonStore,
              partnerEventStore: this.props.partnerEventStore,
            }),
            (0, C.uX)(e),
            { strTitle: (0, f.we)("#Button_Share") },
          );
        }
        GotoDiscussion(e) {
          (0, B.pg)(
            c.createElement(D.KG, {
              strDescription: (0, f.we)(
                "#EventDisplay_Share_CommentMigrationInProcess",
              ),
            }),
            (0, C.uX)(e),
          );
        }
        OpenRepostDialogs(e) {
          (0, B.pg)(
            c.createElement(k, { eventModel: this.props.eventModel }),
            (0, C.uX)(e),
          );
        }
        render() {
          const { eventModel: e } = this.props,
            t = (0, I.OQ)(
              e.nVotesUp - e.nVotesDown,
              0,
              Number.MAX_SAFE_INTEGER,
            ),
            r = e.GetForumTopicURL(),
            n = (0, T.NT)(r),
            a = (0, p.Y2)(),
            s = e.BIsUnlistedEvent(),
            o = p.iA.logged_in && h.Get().BCanRepostPartnerEvent();
          return c.createElement(
            i.Z,
            { className: L().Container, "flow-children": "row", focusable: !1 },
            c.createElement(
              "div",
              { className: L().InnerContainer },
              c.createElement(
                "div",
                { className: L().VoteContainer },
                c.createElement(
                  "div",
                  { className: L().VoteCount },
                  c.createElement(w.bfp, { className: L().VoteUpStaticIcon }),
                  (0, M.Dq)(t),
                ),
                c.createElement(
                  i.Z,
                  {
                    focusable: !0,
                    className: (0, y.A)(
                      _().Button,
                      _().Icon,
                      L().DiscussionButton,
                      "up" == this.state.myVote ? L().VoteButtonSelected : "",
                    ),
                    onActivate: this.OnVoteUp,
                  },
                  c.createElement(w.bfp, {
                    className:
                      "up" == this.state.myVote
                        ? L().VoteUpSelectedIcon
                        : L().VoteUpIcon,
                  }),
                  c.createElement(
                    "span",
                    { className: L().DiscussionButtonText },
                    (0, f.we)("#Button_RateUp"),
                  ),
                ),
                c.createElement(
                  i.Z,
                  {
                    focusable: !0,
                    className: (0, y.A)(
                      _().Button,
                      _().Icon,
                      L().DiscussionButton,
                      "down" == this.state.myVote ? L().VoteButtonSelected : "",
                    ),
                    onActivate: this.OnVoteDown,
                  },
                  c.createElement(w.bfp, {
                    className:
                      "down" == this.state.myVote
                        ? L().VoteDownSelectedIcon
                        : L().VoteDownIcon,
                  }),
                ),
              ),
              Boolean(!a && !s) &&
                c.createElement(P, {
                  commentCount: e.nCommentCount,
                  discussionURL: n,
                  gotoDiscussion: this.GotoDiscussion,
                }),
              o &&
                c.createElement(
                  "div",
                  { className: L().VoteContainer },
                  c.createElement(
                    i.Z,
                    {
                      focusable: !0,
                      className: (0, y.A)(
                        _().Button,
                        _().Icon,
                        L().DiscussionButton,
                        "down" == this.state.myVote
                          ? L().VoteButtonSelected
                          : "",
                      ),
                      onActivate: this.OpenRepostDialogs,
                    },
                    (0, f.we)("#EventRepost_Dialog_Title"),
                  ),
                ),
            ),
            c.createElement(
              "div",
              { className: L().ShareContainer },
              !this.props.bInGamepadUI &&
                c.createElement(
                  i.Z,
                  {
                    focusable: !0,
                    className: (0, y.A)(
                      _().Button,
                      _().Icon,
                      L().DiscussionButton,
                    ),
                    onActivate: this.OnShareDialog,
                  },
                  c.createElement(w.SYj, { className: L().ShareIcon }),
                  c.createElement(
                    "span",
                    { className: L().DiscussionButtonText },
                    (0, f.we)("#Button_Share"),
                  ),
                ),
            ),
          );
        }
      };
      function P(e) {
        const { commentCount: t, discussionURL: r, gotoDiscussion: n } = e;
        return c.createElement(
          "div",
          { className: L().DiscussContainer },
          c.createElement(
            "div",
            { className: L().DiscussionCount },
            c.createElement(w.ROZ, null),
            (0, M.Dq)(t),
          ),
          r &&
            c.createElement(
              a.Ii,
              { href: (0, T.k2)(r) },
              c.createElement(
                "div",
                {
                  className: (0, y.A)(
                    _().Button,
                    _().Icon,
                    L().DiscussionButton,
                  ),
                },
                c.createElement(w.ROZ, null),
                c.createElement(
                  "span",
                  { className: L().DiscussionButtonText },
                  (0, f.we)("#Button_Discuss"),
                ),
              ),
            ),
          !r &&
            c.createElement(
              i.Z,
              {
                focusable: !0,
                onActivate: n,
                className: (0, y.A)(_().Button, _().Icon, L().DiscussionButton),
              },
              c.createElement(w.ROZ, null),
              c.createElement(
                "span",
                { className: L().DiscussionButtonText },
                (0, f.we)("#Button_Discuss"),
              ),
            ),
        );
      }
      (0, n.Cg)([b.oI], W.prototype, "OnVoteUp", null),
        (0, n.Cg)([b.oI], W.prototype, "OnVoteDown", null),
        (0, n.Cg)([b.oI], W.prototype, "OnShareDialog", null),
        (0, n.Cg)([b.oI], W.prototype, "GotoDiscussion", null),
        (0, n.Cg)([b.oI], W.prototype, "OpenRepostDialogs", null),
        (W = (0, n.Cg)([l.PA], W));
    },
    8107: (e, t, r) => {
      "use strict";
      r.d(t, { N: () => y });
      var n = r(34629),
        a = r(41735),
        i = r.n(a),
        s = r(75844),
        o = r(90626),
        l = r(60746),
        c = r(68033),
        m = r(27658),
        d = r(9154),
        u = r(88843),
        p = r(64641),
        h = r.n(p),
        g = r(22797),
        S = r(68797),
        _ = r(78327),
        v = r(8527),
        E = r(30894),
        B = r(51272),
        w = r(82715);
      const y = (e) => {
        let { bShowOnlyInitialEvent: t } = e;
        const r = (0, _.Qn)();
        return o.createElement(
          w.tH,
          null,
          o.createElement(C, { ...e, bShowOnlyInitialEvent: t || r }),
        );
      };
      let C = class extends o.Component {
        constructor() {
          super(...arguments),
            (this.state = { bLoading: !1, eventModel: this.props.eventModel }),
            (this.m_refParent = o.createRef()),
            (this.m_cancelSignal = i().CancelToken.source());
        }
        componentDidMount() {
          this.state.eventModel ||
            this.setState({ bLoading: !0 }, this.LoadEvent);
          let e = this.GetBodyElement();
          e &&
            this.props.bPrimaryPageFeature &&
            e.classList.add(u.BodyNoScroll);
        }
        componentWillUnmount() {
          this.m_cancelSignal.cancel("EventInfiniteScrollModal unmounting");
          let e = this.GetBodyElement();
          e &&
            this.props.bPrimaryPageFeature &&
            e.classList.remove(u.BodyNoScroll);
        }
        GetBodyElement() {
          return this.m_refParent.current
            ? this.m_refParent.current.closest("body")
            : null;
        }
        async LoadEvent() {
          const {
            appid: e,
            clanSteamID: t,
            announcementGID: r,
            partnerEventStore: n,
            additionalParams: a,
          } = this.props;
          n.LoadAdjacentPartnerEventsByAnnouncement(
            r,
            t,
            e,
            0,
            3,
            a,
            this.m_cancelSignal,
          )
            .then((e) => {
              e.length > 0
                ? this.setState(
                    { bLoading: !1, eventModel: e[0] },
                    this.HandleReadEvent,
                  )
                : (this.props.onEventNotFound && this.props.onEventNotFound(),
                  this.setState({ bLoading: !1 }));
            })
            .catch((e) => {
              let t = (0, S.H)(e);
              console.error(
                "EventInfiniteScrollModal failed " + t.strErrorMsg,
                t,
              ),
                this.setState({ bLoading: !1 });
            });
        }
        async HandleReadEvent() {
          const { eventModel: e } = this.state,
            { trackingLocation: t } = this.props;
          e &&
            e.BIsPartnerEvent() &&
            l.KN.Get()
              .GetTracker()
              .MarkEventRead(e.GID, e.clanSteamID.GetAccountID(), t) &&
            l.KN.Get().GetTracker().Flush();
        }
        render() {
          const { bShowOnlyInitialEvent: e } = this.props,
            { bLoading: t, eventModel: r } = this.state;
          if (t)
            return o.createElement(
              d.of,
              null,
              o.createElement(
                "div",
                { className: h().FlexCenter, style: { height: "400px" } },
                o.createElement(g.t, null),
              ),
            );
          const {
            closeModal: n,
            appid: a,
            clanSteamID: i,
            className: s,
            partnerEventStore: l,
            showAppHeader: u,
            bPrimaryPageFeature: p,
            additionalParams: S,
            eventClassName: _,
          } = this.props;
          let w;
          v.TS.IN_CLIENT &&
            (null == r ? void 0 : r.appid) &&
            (E.Fm.Get().HintLoad(),
            E.Fm.Get().BOwnsApp(r.appid) &&
              (w = (e) =>
                (0, B.EP)(e, "steam://nav/games/details/" + r.appid)));
          const y = o.createElement(
            "div",
            null,
            o.createElement(m.AD, {
              initialEvent: r,
              appid: a,
              clanSteamID: i,
              partnerEventStore: l,
              emoticonStore: c.A,
              closeModal: !p && n,
              showAppHeader: u,
              bShowOnlyInitialEvent: e,
              additionalParams: S,
              eventClassName: _,
              onAppIconClick: w,
            }),
          );
          return p
            ? y
            : o.createElement(
                d.of,
                { className: s },
                o.createElement(
                  d.Qs,
                  { navID: "WebRowEventInfiniteScroll", closeModal: n },
                  y,
                ),
              );
        }
      };
      C = (0, n.Cg)([s.PA], C);
    },
    1909: (e, t, r) => {
      "use strict";
      r.d(t, { Ng: () => g });
      var n = r(34629),
        a = r(75844),
        i = r(90626),
        s = r(22837),
        o = r(2160),
        l = (r(63556), r(95695)),
        c = r.n(l),
        m = r(52038),
        d = r(61859),
        u = r(91675),
        p = r(73745),
        h = r(32754);
      let g = class extends i.Component {
        GenerateLanguageOptions() {
          let e = [];
          const {
            fnFilterLanguage: t,
            fnLangHasData: r,
            fnLastUpdateRTime: n,
            fnIsLangSupported: a,
          } = this.props;
          this.props.bAllowUnsetOption &&
            e.push(
              i.createElement(
                "option",
                { key: "langpicker_unset", value: -1 },
                (0, d.we)("#language_selection_none"),
              ),
            );
          let l = new Array();
          const p = this.props.realms || [o.TU.k_ESteamRealmGlobal];
          for (const e of d.A0.GetLanguageListForRealms(p)) {
            if (t && !t(e)) continue;
            const r = (0, s.Lg)(e),
              n = (0, d.we)("#Language_" + r),
              i = Boolean(a) && a(e);
            l.push({ eLang: e, sLocName: n, bSupported: i });
          }
          l.sort((e, t) =>
            e.bSupported != t.bSupported
              ? e.bSupported
                ? -1
                : 1
              : e.sLocName.localeCompare(t.sLocName),
          );
          let h = !1;
          for (const t of l) {
            t.bSupported != h &&
              (e.push(
                i.createElement(
                  "option",
                  {
                    key: t.bSupported ? "SupportedGroup" : "UnsupportedGroup",
                    className: c().SupportedGroupLabel,
                    disabled: !0,
                  },
                  (0, d.we)(
                    t.bSupported
                      ? "#LanguageGroup_Supported"
                      : "#LanguageGroup_Unsupported",
                  ),
                ),
              ),
              (h = t.bSupported));
            const a = r && r(t.eLang),
              s = n && n(t.eLang);
            let o = t.sLocName;
            s &&
              0 !== s &&
              ((o += " "),
              (o += (0, d.we)(
                "#Language_Last_Update",
                (0, d.$z)(s) + " @ " + (0, u.KC)(s, { bForce24HourClock: !1 }),
              ))),
              e.push(
                i.createElement(
                  "option",
                  {
                    key: "langpicker" + t.eLang + (a ? "_hasdata" : ""),
                    value: t.eLang,
                    className: (0, m.A)(
                      { [c().LanguageWithContent]: a },
                      t.bSupported
                        ? c().SupportedLanguage
                        : c().UnsupportedLanguage,
                    ),
                  },
                  o,
                ),
              );
          }
          return e;
        }
        OnLanguageChange(e) {
          const { fnOnLanguageChanged: t, selectedLang: r } = this.props;
          let n = Number.parseInt(e.currentTarget.value);
          n != r && t && t(n);
        }
        render() {
          const { selectedLang: e, bDisabled: t, strTooltip: r } = this.props;
          let n = this.GenerateLanguageOptions();
          return i.createElement(
            h.he,
            { toolTipContent: r },
            i.createElement(
              "select",
              { value: e, onChange: this.OnLanguageChange, disabled: t },
              n,
            ),
          );
        }
      };
      (0, n.Cg)([p.oI], g.prototype, "OnLanguageChange", null),
        (g = (0, n.Cg)([a.PA], g));
    },
    64940: (e, t, r) => {
      "use strict";
      r.d(t, { bL: () => k, ig: () => O });
      var n = r(34629),
        a = r(41735),
        i = r.n(a),
        s = r(14947),
        o = r(65946),
        l = r(75844),
        c = r(90626),
        m = r(44165),
        d = r(36148),
        u = r(13952),
        p = r(55263),
        h = r(33737),
        g = r(95695),
        S = r.n(g),
        _ = r(4434),
        v = r(68797),
        E = r(52038),
        B = r(61859),
        w = r(73745),
        y = r(61336),
        C = r(78327),
        f = r(9154),
        M = r(738),
        I = r(22797),
        b = r(86090),
        T = r(12247),
        D = r.n(T),
        A = r(82477);
      function L(e) {
        return C.iA.logged_in
          ? !C.iA.is_limited ||
              ((0, M.pg)(
                c.createElement(b.g, {
                  strTokenOverride: e
                    ? "#SteamAward_Vote_LimitedAccount"
                    : "#SteamAward_Nominate_LimitedAccount",
                }),
                window,
              ),
              !1)
          : ((0, M.pg)(
              c.createElement(f.o0, {
                strTitle: (0, B.we)("#EventDisplay_Share_NotLoggedIn"),
                strDescription: (0, B.we)(
                  "#EventDisplay_Share_NotLoggedIn_Description",
                ),
                strOKButtonText: (0, B.we)("#MobileLogin_SignIn"),
                onOK: A.vg,
              }),
              window,
            ),
            !1);
      }
      async function N(e, t) {
        var r, n;
        const a =
            C.TS.STORE_BASE_URL + "steamawards/ajaxgetsteamawardeventdetails",
          s = {
            rgCategories: e,
            t:
              ((o = m.HD.GetTimeNowWithOverride()),
              new Date(1e3 * o).toISOString().slice(0, 19).replace("T", " ")),
          };
        var o;
        try {
          const e = await i().get(a, {
            params: s,
            withCredentials: !1,
            cancelToken: t.token,
          });
          if (t.token.reason) return null;
          if (
            1 ==
              (null === (r = null == e ? void 0 : e.data) || void 0 === r
                ? void 0
                : r.success) &&
            (null === (n = null == e ? void 0 : e.data) || void 0 === n
              ? void 0
              : n.event_details)
          )
            return e.data.event_details;
        } catch (e) {
          const t = (0, v.H)(e);
          console.error(
            "Could not fetch award event details:" + t.strErrorMsg,
            t,
          );
        }
        return null;
      }
      const R = { include_assets: !0 };
      function O(e) {
        var t, r, n, a, i;
        const { event: s, lang: l, previewMode: u } = e,
          [p] = (0, o.q3)(() => [s.GetSteamAwardCategory()]),
          h = (0, _.m)("EventDisplaySteamAwardNomination"),
          [g, v] = (0, c.useState)(null),
          { currentNomination: w, bLoadingNominationForCategory: f } = (0,
          d.Vz)(p);
        if (
          ((0, c.useEffect)(() => {
            N([p], h).then((e) => {
              v(e);
            });
          }, [h, p]),
          !g ||
            !(null === (t = g.rgAwardCategoryDetails) || void 0 === t
              ? void 0
              : t.length) ||
            f)
        )
          return c.createElement(I.t, {
            className: D().SteamAwardContainer,
            size: "medium",
            position: "center",
            string: (0, B.we)("#Loading"),
          });
        const M = m.HD.GetTimeNowWithOverride();
        if (!u && !g.bIsAutumnSaleActive) return null;
        let b = {};
        (null === (r = g.strBackgroundCSS) || void 0 === r
          ? void 0
          : r.length) && (b.backgroundColor = g.strBackgroundCSS),
          (null === (n = g.strBackgroundImage) || void 0 === n
            ? void 0
            : n.length) &&
            (b.backgroundImage = `url( ${g.strBackgroundImage} )`),
          (null === (a = g.strTextColor) || void 0 === a ? void 0 : a.length) &&
            (b.color = g.strTextColor);
        const T =
            1 ==
            (null === (i = g.rgAwardCategoryDetails) || void 0 === i
              ? void 0
              : i.length),
          A =
            s.BIsEventActionEnabled() || M < s.GetStartTimeAndDateUnixSeconds(),
          L = new Date().getFullYear();
        return c.createElement(
          "div",
          {
            style: b,
            className: (0, E.A)(D().SteamAwardContainer, S().PartnerEventFont),
          },
          c.createElement(
            "div",
            { className: D().SteamAwardHeader },
            c.createElement("img", {
              className: D().SteamAwardHeaderImage,
              src: `${g.strTrophyImg}`,
            }),
            c.createElement(
              "div",
              { className: D().SteamAwardMainCtn },
              c.createElement(
                "div",
                { className: D().SteamAwardMainTitle },
                (0, B.we)("#SteamAwards_EventMainTitle"),
              ),
              c.createElement(
                "div",
                { className: D().SteamAwardSubTitle },
                A
                  ? (0, B.we)("#SteamAwards_EventCallToAction")
                  : (0, B.we)("#SteamAwards_EventVotingDateTeaser", L),
                A &&
                  c.createElement(
                    "a",
                    {
                      href: (0, y.NT)(
                        C.TS.STORE_BASE_URL + "steamawards/nominations/",
                      ),
                      className: D().SteamAwardLearnMore,
                    },
                    "(",
                    (0, B.we)("#EventDisplay_CallToAction_LearnMore"),
                    ")",
                  ),
              ),
              c.createElement(
                "div",
                { className: D().SteamAwardHeaderText },
                A
                  ? T
                    ? (0, B.we)(
                        "#SteamAwards_EventNominateGamePrompt_Long",
                        s.GetGameTitle(l),
                      )
                    : c.createElement(
                        "a",
                        {
                          className: D().LinkText,
                          href: (0, y.NT)(
                            C.TS.STORE_BASE_URL + "steamawards/nominations/",
                          ),
                        },
                        (0, B.we)(
                          "#SteamAwards_EventNominateGamePrompt_NoCategory",
                          s.GetGameTitle(l),
                        ),
                      )
                  : (0, B.we)("#SteamAwards_Event_NominationsClosed"),
              ),
            ),
          ),
          c.createElement(z, {
            event: s,
            nominationEventDetails: g,
            currentNomination: w,
          }),
        );
      }
      function z(e) {
        var t;
        const { event: r, nominationEventDetails: n, currentNomination: a } = e,
          [i, s] = (0, o.q3)(() => [r.GetSteamAwardCategory(), r.appid]),
          l = null == a ? void 0 : a.appid,
          u = (0, d.$d)(s, i, 0),
          p = Boolean(
            (null == a ? void 0 : a.appid) == s &&
              (null == a ? void 0 : a.category_id) == i,
          ),
          g = (0, c.useCallback)(
            async (e) => {
              if (!e)
                return void console.log(
                  "EventDisplaySteamAwardNomination: ignore turning off the checkbox",
                );
              if (!L(!1))
                return void console.log(
                  "EventDisplaySteamAwardNomination: UserEligibleToNominateOrVote failed",
                );
              l && l != s
                ? (0, M.pg)(
                    c.createElement(x, {
                      strLocTokenInfix: "Nomination",
                      newAppID: s,
                      curNominatedAppID: l,
                      fnOnConfirm: u.mutate,
                    }),
                    window,
                  )
                : u.mutate();
            },
            [l, s, u],
          ),
          S = m.HD.GetTimeNowWithOverride(),
          _ =
            1 ==
            (null === (t = n.rgAwardCategoryDetails) || void 0 === t
              ? void 0
              : t.length),
          v =
            r.BIsEventActionEnabled() || S < r.GetStartTimeAndDateUnixSeconds();
        return _ && (v || p)
          ? c.createElement(
              "div",
              {
                className: (0, E.A)(
                  D().SteamAwardNominationWidget,
                  D().SteamAwardVoteWidget,
                ),
              },
              c.createElement(
                "div",
                { className: D().NominateCtn },
                c.createElement(
                  "div",
                  {
                    style: {
                      background:
                        null == n ? void 0 : n.strNominateButtonBGColor,
                    },
                    className: (0, E.A)(
                      D().SteamAwardNominateButton,
                      p && D().Nominated,
                    ),
                  },
                  c.createElement(h.Yh, {
                    controlled: !0,
                    className: (0, E.A)(
                      D().SteamAwardVoteCheckBox,
                      p && D().Nominated,
                    ),
                    checked: p,
                    onChange: g,
                    disabled: p,
                    color: "#FFFFFF",
                    highlightColor: "white",
                    label: c.createElement(
                      c.Fragment,
                      null,
                      c.createElement(
                        "div",
                        { className: D().SteamAwardCategoryTitle },
                        p
                          ? (0, B.PP)(
                              "#SteamAwards_NominateWidget_CTA_PastTense",
                              n.rgAwardCategoryDetails[0]
                                .strSuggestedCategoryTitle,
                            )
                          : (0, B.PP)(
                              "#SteamAwards_NominateWidget_CTA",
                              n.rgAwardCategoryDetails[0]
                                .strSuggestedCategoryTitle,
                            ),
                      ),
                    ),
                  }),
                ),
                c.createElement(
                  "div",
                  { className: D().SteamAwardCategoryDesc },
                  n.rgAwardCategoryDetails[0].strSuggestedCategoryDesc,
                ),
              ),
              Boolean(v && i != n.eLaborOfLove) &&
                c.createElement(
                  "div",
                  { className: D().SteamAwardLinkToNominationPage },
                  c.createElement(
                    "a",
                    {
                      href: (0, y.NT)(
                        C.TS.STORE_BASE_URL + "steamawards/nominations/",
                      ),
                    },
                    (0, B.we)(
                      "#SteamAwards_EventNominationAlternativeLinkText",
                    ),
                  ),
                ),
            )
          : null;
      }
      function x(e) {
        const {
            curNominatedAppID: t,
            newAppID: r,
            strLocTokenInfix: n,
            fnOnConfirm: a,
            fnOnCancel: i,
            closeModal: s,
          } = e,
          [o] = (0, p.t7)(t, R),
          [l] = (0, p.t7)(r, R);
        return c.createElement(
          f.o0,
          {
            modalClassName: D().SteamAwardConflictModal,
            strTitle: (0, B.we)(`#SteamAward_${n}ConflictWarning_Title`),
            closeModal: s,
            onOK: a,
            onCancel: i,
          },
          c.createElement(
            "div",
            { className: D().ConflictBody },
            (0, B.PP)(
              `#SteamAward_${e.strLocTokenInfix}ConflictWarning_Explanation`,
              c.createElement(
                "span",
                { className: D().SteamAwardModalGameTitle },
                null == o ? void 0 : o.GetName(),
              ),
              c.createElement(
                "span",
                { className: D().SteamAwardModalGameTitle },
                null == l ? void 0 : l.GetName(),
              ),
            ),
            Boolean(!o || !l)
              ? c.createElement(I.t, {
                  size: "small",
                  position: "center",
                  string: (0, B.we)("#Loading"),
                })
              : c.createElement(
                  "div",
                  { className: D().NominationSwitchCtn },
                  c.createElement("img", {
                    src: o.GetAssets().GetSmallCapsuleURL(),
                  }),
                  "→",
                  c.createElement("img", {
                    src: l.GetAssets().GetSmallCapsuleURL(),
                  }),
                ),
          ),
        );
      }
      let F = class extends c.Component {
        constructor(e) {
          super(e),
            (this.state = { eCategoryLoaded: null, votedForAppID: null }),
            (this.m_strPreviousVotedForAppTitle = null),
            (this.m_cancelSignal = i().CancelToken.source()),
            (0, s.Gn)(this);
        }
        componentDidMount() {
          this.FetchVoteState();
        }
        componentDidUpdate() {
          this.props.eVoteCategory != this.state.eCategoryLoaded &&
            this.FetchVoteState();
        }
        componentWillUnmount() {
          this.m_cancelSignal.cancel(
            "EventDisplaySteamAwardVote is being unmounted",
          );
        }
        async FetchVoteState() {
          var e;
          const t = C.TS.STORE_BASE_URL + "steamawards/ajaxgetuservotes";
          if (C.iA.logged_in)
            try {
              const r = await i().get(t, {
                withCredentials: !0,
                cancelToken: this.m_cancelSignal.token,
              });
              if (this.m_cancelSignal.token.reason) return;
              1 ==
                (null === (e = null == r ? void 0 : r.data) || void 0 === e
                  ? void 0
                  : e.success) &&
                r.data.votes &&
                this.UpdateVoteState(r.data.votes);
            } catch (e) {
              const t = (0, v.H)(e);
              console.error(
                "Could not fetch previous votes:" + t.strErrorMsg,
                t,
              );
            }
          else this.UpdateVoteState([]);
        }
        async UpdateVoteState(e) {
          var t;
          const r = this.props.eVoteCategory,
            n = e[r];
          if (
            (this.setState({ eCategoryLoaded: r, votedForAppID: n }),
            n && n != this.props.appID)
          ) {
            if (
              (await u.A.Get().QueueAppRequest(n, {}),
              this.m_cancelSignal.token.reason)
            )
              return;
            this.props.eVoteCategory == r &&
              (this.m_strPreviousVotedForAppTitle =
                null === (t = u.A.Get().GetApp(n)) || void 0 === t
                  ? void 0
                  : t.GetName());
          }
        }
        async OnVoteClick() {
          const e = this.props.eVoteCategory;
          if (e != this.state.eCategoryLoaded) return;
          if (!L(!0)) return;
          const t = this.props.appID;
          this.state.votedForAppID && this.state.votedForAppID != t
            ? this.HandleConflict(() => this.SaveVote(e, t))
            : this.SaveVote(e, t);
        }
        HandleConflict(e) {
          const t = u.A.Get().GetApp(this.props.appID);
          (0, M.pg)(
            c.createElement(x, {
              strLocTokenInfix: "Vote",
              newAppID: null == t ? void 0 : t.GetAppID(),
              curNominatedAppID: this.state.votedForAppID,
              fnOnConfirm: e,
              fnOnCancel: () => {},
            }),
            window,
          );
        }
        async SaveVote(e, t) {
          if (
            (this.setState({ eCategoryLoaded: e, votedForAppID: t }),
            this.props.previewMode && 1 == C.TS.EUNIVERSE)
          )
            return;
          const r = C.TS.STORE_BASE_URL + "steamawards/ajaxvoteforgame",
            n = new URLSearchParams();
          n.append("sessionid", C.TS.SESSIONID),
            n.append("categoryid", e.toString()),
            n.append("appid", t.toString());
          try {
            const e = await i().post(r, n, {
              withCredentials: !0,
              cancelToken: this.m_cancelSignal.token,
            });
            if (this.m_cancelSignal.token.reason) return;
            (e && 200 == e.status && 1 == e.data.success) ||
              console.error("Vote request failed.", e && (0, v.H)(e));
          } catch (e) {
            const t = (0, v.H)(e);
            console.error("SaveVote failed: " + t.strErrorMsg, t);
          }
        }
        render() {
          const e = this.props.eVoteCategory,
            t =
              this.state.eCategoryLoaded == e &&
              this.state.votedForAppID == this.props.appID,
            r = this.props.bIsEventActionEnabled || this.props.previewMode || t;
          let n = {};
          return (
            this.props.strBackgroundColor.length &&
              (n.backgroundColor = this.props.strBackgroundColor),
            r
              ? c.createElement(
                  "div",
                  { style: n, className: (0, E.A)(D().SteamAwardVoteWidget) },
                  c.createElement(
                    "div",
                    { className: D().SteamAwardVoteButtonArea },
                    c.createElement(
                      "div",
                      {
                        className: (0, E.A)(
                          D().SteamAwardCategoryTitle,
                          D().VotingTitle,
                        ),
                      },
                      this.props.strCategoryTitle,
                    ),
                    !this.props.bRenderFromStorePage &&
                      c.createElement(
                        "div",
                        { className: D().SteamAwardCategoryDesc },
                        this.props.strCategoryDesc,
                      ),
                    t
                      ? c.createElement(
                          "button",
                          { className: D().SteamAwardVoteButtonSubmitted },
                          c.createElement(
                            "span",
                            { className: D().SteamAwardVoteButtonText },
                            (0, B.we)("#SteamAward_VoteButton_VotedText"),
                          ),
                        )
                      : c.createElement(
                          "button",
                          {
                            className: D().SteamAwardVoteButton,
                            onClick: this.OnVoteClick,
                          },
                          c.createElement(
                            "span",
                            { className: D().SteamAwardVoteButtonText },
                            (0, B.we)("#SteamAward_VoteButton_PromptText"),
                          ),
                        ),
                  ),
                )
              : null
          );
        }
      };
      (0, n.Cg)([s.sH], F.prototype, "m_strPreviousVotedForAppTitle", void 0),
        (0, n.Cg)([w.oI], F.prototype, "OnVoteClick", null),
        (0, n.Cg)([w.oI], F.prototype, "SaveVote", null),
        (F = (0, n.Cg)([l.PA], F));
      c.Component;
      let k = class extends c.Component {
        constructor(e) {
          super(e),
            (this.m_cancelSignal = i().CancelToken.source()),
            (this.m_awardEventDetails = null),
            (0, s.Gn)(this),
            (this.state = { bAppInfoLoaded: !1 });
        }
        componentDidMount() {
          u.A.Get()
            .QueueAppRequest(this.props.appID, {})
            .then(() => {
              u.A.Get().BHasApp(this.props.appID) &&
                this.setState({ bAppInfoLoaded: !0 });
            }),
            N(this.props.voteCategories, this.m_cancelSignal).then((e) => {
              this.m_awardEventDetails = e;
            });
        }
        componentWillUnmount() {
          this.m_cancelSignal.cancel(
            "WinterSaleSteamAwardVoteWrapper is being unmounted",
          );
        }
        GetNominatedAwardCategories() {
          var e;
          let t = [];
          return (
            null === (e = this.m_awardEventDetails.rgAwardCategoryDetails) ||
              void 0 === e ||
              e.forEach((e) => {
                t.push(
                  c.createElement(F, {
                    key: e.eSteamAwardCategoryID,
                    eVoteCategory: e.eSteamAwardCategoryID,
                    strCategoryDesc: e.strSuggestedCategoryDesc,
                    strCategoryTitle: e.strSuggestedCategoryTitle,
                    strBackgroundColor:
                      this.m_awardEventDetails.strNominateButtonBGColor,
                    ...this.props,
                  }),
                );
              }),
            t
          );
        }
        render() {
          var e, t, r, n;
          if (!this.state.bAppInfoLoaded || !this.props.voteCategories)
            return null;
          if (!this.m_awardEventDetails) return null;
          let a = {};
          return (
            (null === (e = this.m_awardEventDetails.strBackgroundCSS) ||
            void 0 === e
              ? void 0
              : e.length) &&
              (a.backgroundColor = this.m_awardEventDetails.strBackgroundCSS),
            (null === (t = this.m_awardEventDetails.strBackgroundImage) ||
            void 0 === t
              ? void 0
              : t.length) &&
              (a.backgroundImage = `url( ${this.m_awardEventDetails.strBackgroundImage} )`),
            (null === (r = this.m_awardEventDetails.strTextColor) ||
            void 0 === r
              ? void 0
              : r.length) && (a.color = this.m_awardEventDetails.strTextColor),
            c.createElement(
              "div",
              {
                style: a,
                className: (0, E.A)(
                  D().SteamAwardContainer,
                  S().PartnerEventFont,
                ),
              },
              c.createElement(
                "div",
                { className: D().SteamAwardHeader },
                c.createElement("img", {
                  className: D().SteamAwardHeaderImage,
                  src: this.m_awardEventDetails.strTrophyImg,
                }),
                c.createElement(
                  "div",
                  { className: D().SteamAwardMainCtn },
                  c.createElement(
                    "div",
                    { className: D().SteamAwardMainTitle },
                    " ",
                    (0, B.we)("#SteamAwards_EventMainTitleCombined"),
                    " ",
                  ),
                  c.createElement(
                    "div",
                    { className: D().SteamAwardHeaderText },
                    this.props.bIsEventActionEnabled
                      ? c.createElement(
                          c.Fragment,
                          null,
                          (0, B.we)(
                            "#SteamAwards_EventVoteForGamePrompt",
                            null === (n = u.A.Get().GetApp(this.props.appID)) ||
                              void 0 === n
                              ? void 0
                              : n.GetName(),
                          ),
                        )
                      : c.createElement(
                          "a",
                          {
                            href: (0, y.NT)(
                              C.TS.STORE_BASE_URL + "steamawards/",
                            ),
                            className: D().LinkText,
                          },
                          (0, B.we)("#SteamAwards_Event_VotesClosed"),
                        ),
                  ),
                  c.createElement(
                    "div",
                    { className: D().AwardCategoriesCtn },
                    this.GetNominatedAwardCategories(),
                  ),
                ),
              ),
              c.createElement(
                "div",
                { className: D().SteamAwardLinkToNominationPage },
                c.createElement(
                  "a",
                  { href: (0, y.NT)(C.TS.STORE_BASE_URL + "steamawards/") },
                  (0, B.we)("#EventDisplay_CallToAction_LearnMore"),
                ),
              ),
            )
          );
        }
      };
      (0, n.Cg)([s.sH], k.prototype, "m_awardEventDetails", void 0),
        (k = (0, n.Cg)([l.PA], k));
    },
    71746: (e, t, r) => {
      "use strict";
      r.d(t, { _: () => m });
      var n = r(13952),
        a = r(65946),
        i = r(90626),
        s = r(53418),
        o = r(61859),
        l = r(66661),
        c = r.n(l);
      function m(e) {
        const { event: t } = e,
          r = (0, a.q3)(() => {
            var e;
            return (
              (null === (e = t.jsondata) || void 0 === e
                ? void 0
                : e.referenced_appids) || []
            );
          }),
          [l, m] = i.useState(!1);
        if (
          (i.useEffect(() => {
            n.A.Get()
              .QueueMultipleAppRequests(r, {})
              .then(() => m(!0));
          }, [r]),
          !r.length || !l)
        )
          return null;
        const d = r
            .map((e) => n.A.Get().GetApp(e))
            .filter(Boolean)
            .map((e) => `[url="${e.GetStorePageURL()}"]${e.GetName()}[/url]`)
            .join((0, o.we)("#EventDisplay_ReferencedApps_Joiner")),
          u = (0, o.Yp)("#EventDisplay_ReferencedApps", r.length, d);
        return i.createElement(
          "div",
          { className: c().ReferencedApps },
          i.createElement(s.f, { text: u }),
        );
      }
    },
    47204: (e, t, r) => {
      "use strict";
      r.d(t, { EQ: () => h, aq: () => B, xL: () => g });
      var n = r(90626),
        a = r(76217),
        i = r(75204),
        s = r(17720),
        o = r(4796),
        l = r(67165),
        c = r(55263),
        m = r(61859),
        d = r(61336),
        u = r(78327),
        p = r(95695);
      function h(e) {
        const { bOn: t } = e;
        return n.createElement(
          "div",
          { className: t ? p.OnIndicator : p.OffIndicator },
          (0, m.we)(t ? "#Dialog_On" : "#Dialog_Off"),
        );
      }
      function g(e) {
        return u.UF.IS_CREATOR_HOME
          ? n.createElement(S, { identifier: e.identifier })
          : u.UF.IS_CURATOR
            ? n.createElement(_, { identifier: e.identifier })
            : n.createElement(v, { identifier: e.identifier });
      }
      function S(e) {
        const t = new s.b(u.UF.CLANSTEAMID),
          r = (0, l.FV)(t.GetAccountID());
        return r && r.BIsLoaded()
          ? n.createElement(E, {
              strURL: (0, d.k2)(r.GetCreatorHomeURL("developer")),
              strImgUrl: r.GetAvatarURLFullSize(),
              strName: r.GetName(),
            })
          : null;
      }
      function _(e) {
        const t = (0, o.W$)(u.UF.VANITY_ID);
        return t
          ? n.createElement(E, {
              strURL: (0, d.k2)(
                u.TS.COMMUNITY_BASE_URL + "groups/" + u.UF.VANITY_ID,
              ),
              strImgUrl: t.avatar_full_url,
              strName: t.group_name,
            })
          : null;
      }
      function v(e) {
        const [t] = (0, c.t7)(u.UF.APPID, {
          include_assets: !0,
          include_release: !0,
        });
        return t
          ? n.createElement(E, {
              strURL: (0, d.k2)(t.GetStorePageURL()),
              strImgUrl: t.GetAssets().GetSmallCapsuleURL(),
              strName: t.GetName(),
            })
          : null;
      }
      function E(e) {
        const { strURL: t, strImgUrl: r, strName: a } = e;
        return n.createElement(
          "div",
          { className: p.EventDashboardAppCtn },
          n.createElement(
            "div",
            { className: p.AppTitle },
            n.createElement(
              "a",
              { href: t, target: u.TS.IN_CLIENT ? void 0 : "_blank" },
              n.createElement("img", { src: r }),
              a,
            ),
          ),
        );
      }
      function B(e) {
        const { children: t } = e;
        return (0, u.Qn)() && !u.TS.IN_STEAMUI
          ? n.createElement(
              i.Qg,
              { className: p.GamepadOnlyScrollPanel },
              n.createElement(
                a.Z,
                {
                  focusable: !0,
                  noFocusRing: !0,
                  className: p.GamepadOnlyPanel,
                },
                t,
              ),
            )
          : n.createElement(n.Fragment, null, t);
      }
    },
    61985: (e, t, r) => {
      "use strict";
      r.d(t, { Vo: () => P, Wt: () => j });
      var n = r(34629),
        a = r(90626),
        i = r(22837),
        s = r(3919),
        o = r(95695),
        l = r.n(o),
        c = r(82477),
        m = r(52038),
        d = r(61859),
        u = r(73745),
        p = r(78327),
        h = r(96715);
      var g = r(10886),
        S = r(19654),
        _ = r(3209),
        v = r(9154),
        E = r(32754),
        B = r(51272),
        w = r(14256),
        y = r.n(w),
        C = r(1909),
        f = r(41735),
        M = r.n(f),
        I = r(75844),
        b = r(79821),
        T = r(56545),
        D = r(51006),
        A = r(17720),
        L = r(37735),
        N = r(9239),
        R = r(68797),
        O = r(22797),
        z = r(53418),
        x = r(86244),
        F = r.n(x),
        k = r(14336);
      const U = (0, I.PA)((e) => {
        const { appid: t, eventLink: r } = e,
          n = a.useRef(null),
          { data: i } = (0, k.js)(p.iA.steamid),
          [s, o] = a.useState(""),
          [c, u] = a.useState(!1),
          [h, g] = a.useState(""),
          [S, _] = a.useState(!1);
        a.useEffect(
          () => () =>
            n.current &&
            n.current("ShareEventOnFriendsActivityFeed: unmounting"),
          [],
        );
        const E = i ? i.avatar_url : null,
          B = A.b.InitFromAccountID(p.iA.accountid),
          w = async () => {
            var e, a;
            n.current &&
              n.current("ShareEventOnFriendsActivityFeed: cancel previous...");
            const i = M().CancelToken.source();
            (n.current = i.cancel), u(!0);
            let o = s;
            0 != o.trim().length && (o += "\n\n"), (o += r);
            const l =
              p.TS.COMMUNITY_BASE_URL +
              "profiles/" +
              B.ConvertTo64BitString() +
              "/ajaxpostuserstatus";
            try {
              if (p.TS.IN_STEAMUI) {
                let e = T.w.Init(L.kV);
                e.Body().set_appid(t), e.Body().set_status_text(o);
                let r = await L.xt.PostStatusToFriends(
                  D.Vw.CMInterface.GetServiceTransport(),
                  e,
                );
                if (1 != r.GetEResult()) {
                  const e =
                    (0, d.we)("#EventDisplay_Share_Failure") +
                    "\n\n" +
                    r.GetEResult();
                  return (
                    console.error(e, !i.token.reason),
                    void (i.token.reason || g(e))
                  );
                }
              } else {
                const r = new FormData();
                r.append("appid", "" + t),
                  r.append("status_text", o),
                  r.append("sessionid", p.TS.SESSIONID);
                const n = await M().post(l, r, { withCredentials: !0 });
                if (
                  200 != n.status ||
                  1 !=
                    (null === (e = null == n ? void 0 : n.data) || void 0 === e
                      ? void 0
                      : e.success)
                ) {
                  const e =
                    (0, d.we)("#EventDisplay_Share_Failure") +
                    "\n\n" +
                    (null === (a = null == n ? void 0 : n.data) || void 0 === a
                      ? void 0
                      : a.message);
                  return console.error(e), void (i.token.reason || g(e));
                }
              }
              i.token.reason ||
                (_(!0), g((0, d.we)("#EventDisplay_Share_Success")));
            } catch (e) {
              const t = (0, R.H)(e),
                r =
                  (0, d.we)("#EventDisplay_Share_Failure") +
                  "\n\n" +
                  t.strErrorMsg;
              i.token.reason || g(r), console.error(r);
            }
          };
        return c
          ? a.createElement(
              v.o0,
              {
                strDescription: "",
                strTitle: (0, d.we)("#Button_Share"),
                onCancel: e.closeModal,
                onOK: e.closeModal,
                bAlertDialog: !0,
              },
              a.createElement(
                "div",
                { className: l().FlexColumnContainer },
                a.createElement(
                  "div",
                  null,
                  (0, d.we)("#EventDisplay_Share_OnMyStatus_Details"),
                ),
                a.createElement(
                  "div",
                  { className: F().Container },
                  0 == (null == h ? void 0 : h.length)
                    ? a.createElement(O.t, { position: "center" })
                    : a.createElement("div", null, h),
                  Boolean(S) &&
                    a.createElement(
                      "a",
                      {
                        href:
                          p.TS.COMMUNITY_BASE_URL +
                          "profiles/" +
                          B.ConvertTo64BitString() +
                          "/home",
                        target: p.TS.IN_CLIENT ? void 0 : "_blank",
                      },
                      (0, d.we)("#EventDisplay_Share_OpenActivityFeed"),
                    ),
                ),
              ),
            )
          : a.createElement(
              v.o0,
              {
                strDescription: "",
                strTitle: (0, d.we)("#Button_Share"),
                onCancel: e.closeModal,
                onOK: w,
                strOKButtonText: (0, d.we)("#Button_Post"),
              },
              a.createElement(
                "div",
                { className: l().FlexColumnContainer },
                a.createElement(
                  "div",
                  null,
                  (0, d.we)("#EventDisplay_Share_OnMyStatus_Details"),
                ),
                a.createElement(
                  "div",
                  {
                    className: (0, m.A)(F().Container, l().FlexColumnContainer),
                  },
                  a.createElement(
                    "div",
                    null,
                    a.createElement("img", {
                      className: F().SmallAvatar,
                      src: E,
                      "data-miniprofile": "s" + p.iA.steamid,
                    }),
                    a.createElement(
                      "div",
                      { className: (0, m.A)(l().FlexColumnContainer) },
                      a.createElement(N.I, {
                        strPlaceholder: (0, d.we)(
                          "#EventDisplay_Share_OnMyStatus_Placeholder",
                        ),
                        fnGetCurText: () => s,
                        fnOnTextChange: (e) => o(e.currentTarget.value),
                        fnSetText: o,
                        emoticonStore: e.emoticonStore,
                        bSupportHTMLImport: !1,
                        showFormatHelp: "UserStatusPublished",
                        limitBBCode: b.iH,
                        classNameForTextArea: F().ShareDescription,
                        bEmbeddedInDialog: !0,
                      }),
                    ),
                  ),
                  a.createElement(
                    "div",
                    { className: F().ShareLink },
                    a.createElement(z.f, {
                      text: r,
                      partnerEventStore: e.partnerEventStore,
                    }),
                  ),
                ),
              ),
            );
      });
      var G = r(33737);
      class j extends a.Component {
        constructor() {
          super(...arguments),
            (this.state = {
              bShareOnSteamDialog: !1,
              bRequireLoginToShare: !1,
            });
        }
        ShareOnSteamActivityFeed() {
          p.iA.logged_in
            ? this.setState({ bShareOnSteamDialog: !0 })
            : p.TS.IN_CLIENT
              ? console.log(
                  "ShareEventOnSocialMediaDialog: In Client: Cannot use login widget. We expect to be already logged in.",
                )
              : this.setState({ bRequireLoginToShare: !0 });
        }
        render() {
          const {
            eventLink: e,
            fnGetSharePageUrl: t,
            appid: r,
            closeModal: n,
            emoticonStore: i,
            partnerEventStore: s,
          } = this.props;
          return this.state.bRequireLoginToShare
            ? a.createElement(v.o0, {
                strTitle: (0, d.we)("#EventDisplay_Share_NotLoggedIn"),
                strDescription: (0, d.we)(
                  "#EventDisplay_Share_NotLoggedIn_Description",
                ),
                strOKButtonText: (0, d.we)("#MobileLogin_SignIn"),
                onCancel: this.props.closeModal,
                onOK: () => (0, c.vg)(),
              })
            : this.state.bShareOnSteamDialog
              ? a.createElement(U, {
                  eventLink: e,
                  appid: r,
                  emoticonStore: i,
                  partnerEventStore: s,
                  closeModal: n,
                })
              : a.createElement(
                  v.o0,
                  {
                    strDescription: "",
                    strTitle: (0, d.we)("#Button_Share"),
                    onCancel: this.props.closeModal,
                    onOK: this.props.closeModal,
                    bAlertDialog: !0,
                    modalClassName: "EventDisplay_Share_Dialog",
                  },
                  a.createElement(W, {
                    eventLink: e,
                    fnGetSharePageUrl: t,
                    fnShareOnSteamActivityFeed: this.ShareOnSteamActivityFeed,
                  }),
                );
        }
      }
      (0, n.Cg)([u.oI], j.prototype, "ShareOnSteamActivityFeed", null);
      const W = (e) => {
          const {
              eventLink: t,
              fnGetSharePageUrl: r,
              fnShareOnSteamActivityFeed: n,
            } = e,
            o = (0, p.Y2)(),
            [c, u] = (0, a.useState)((0, i.sf)(p.TS.LANGUAGE)),
            h = (0, a.useMemo)(() => {
              const e = new URL(t);
              return e.searchParams.set("l", (0, i.Lg)(c)), e.href;
            }, [c, t]);
          return a.createElement(
            "div",
            {
              className: (0, m.A)(
                l().FlexColumnContainer,
                y().share_controls_ctn,
              ),
            },
            !o &&
              a.createElement(
                a.Fragment,
                null,
                a.createElement(
                  "div",
                  { className: y().ShareLanguagePicker },
                  a.createElement(
                    G.JU,
                    { className: y().LanguageLabel },
                    (0, d.we)("#EventDisplay_Share_LanguageLabel"),
                  ),
                  a.createElement(
                    "div",
                    null,
                    a.createElement(C.Ng, {
                      selectedLang: c,
                      fnOnLanguageChanged: u,
                    }),
                  ),
                ),
                a.createElement(
                  "div",
                  {
                    className: (0, m.A)(
                      l().FlexRowContainer,
                      y().ShareButtonContainer,
                    ),
                    style: { flexWrap: "wrap" },
                  },
                  a.createElement(
                    E.he,
                    {
                      toolTipContent: (0, d.we)("#EventDisplay_Share_OnSteam"),
                    },
                    a.createElement(
                      "div",
                      {
                        onClick: n,
                        className: (0, m.A)(
                          l().Button,
                          y().ShareBtn,
                          y().ShareSteamBtn,
                        ),
                      },
                      a.createElement("img", {
                        className: y().SteamIcon,
                        src: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxNDAwcHgiIGhlaWdodD0iMTQwOXB4IiB2aWV3Qm94PSIwIDAgMTQwMCAxNDA5IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNDAwIDE0MDkiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNNjk4LjE5NSwxMC4xMjVjLTM2NC4zNDcsMC02NjIuODM4LDI4MC45MzgtNjkxLjIwNiw2MzcuOTY5TDM3OC43NCw4MDEuNzk3CgljMzEuNTAyLTIxLjUzOSw2OS41NTUtMzQuMTMzLDExMC40OTUtMzQuMTMzYzMuNjY5LDAsNy4zMTUsMC4wOSwxMC45MzksMC4zMTNsMTY1LjMzLTIzOS42MzdjMC0xLjEzNy0wLjAyOS0yLjI1LTAuMDI5LTMuMzk1CgljMC0xNDQuMjI3LDExNy4zMzUtMjYxLjU3NCwyNjEuNTgyLTI2MS41NzRjMTQ0LjIzMywwLDI2MS41ODMsMTE3LjM0OCwyNjEuNTgzLDI2MS41NzRjMCwxNDQuMjQ2LTExNy4zNSwyNjEuNTk4LTI2MS41ODMsMjYxLjU5OAoJYy0xLjk5LDAtMy45NS0wLjA0Ny01LjkyNi0wLjA5TDY4NS4zNDEsOTU0LjY4OGMwLjExOSwzLjA3NCwwLjIzLDYuMTkxLDAuMjMsOS4yOTdjMCwxMDguMjczLTg4LjA3NiwxOTYuMzUyLTE5Ni4zMzYsMTk2LjM1MgoJYy05NS4wNDEsMC0xNzQuNDk0LTY3Ljg0OC0xOTIuNDk2LTE1Ny42NzZMMzAuODcyLDg5Mi43NTRjODIuMzIsMjkxLjEzNywzNDkuODA3LDUwNC41ODIsNjY3LjMyMyw1MDQuNTgyCgljMzgzLjA2MiwwLDY5My41OTgtMzEwLjU1MSw2OTMuNTk4LTY5My42MTNDMTM5MS43OTMsMzIwLjY2NCwxMDgxLjI1NywxMC4xMjUsNjk4LjE5NSwxMC4xMjUiLz4KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQ0MS42NDgsMTA2Mi41NjNsLTg1LjIwMi0zNS4yMDNjMTUuMTA1LDMxLjQ0NSw0MS4yMyw1Ny43NjIsNzUuOTExLDcyLjIxNQoJYzc0Ljk2MSwzMS4yNSwxNjEuNDEtNC4zMzYsMTkyLjY2Ny03OS4zNTljMTUuMTEyLTM2LjMxMywxNS4yMjQtNzYuMzU1LDAuMjIzLTExMi43NDJjLTE0Ljk3OS0zNi4zOTEtNDMuMjUtNjQuNzczLTc5LjU3Mi03OS45MjIKCWMtMzYuMDQ3LTE1LjAwNC03NC42NTYtMTQuNDM4LTEwOC41ODctMS42MzdsODguMDA5LDM2LjM5MWM1NS4zMDQsMjMuMDUxLDgxLjQ0NCw4Ni41NTksNTguNDA4LDE0MS44NTUKCUM1NjAuNDc2LDEwNTkuNDU3LDQ5Ni45NDQsMTA4NS42MTMsNDQxLjY0OCwxMDYyLjU2MyIvPgo8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTEwMS4zNTMsNTI0Ljk2MWMwLTk2LjExMy03OC4xODQtMTc0LjMxMy0xNzQuMjk1LTE3NC4zMTNjLTk2LjA5NiwwLTE3NC4yOTQsNzguMTk5LTE3NC4yOTQsMTc0LjMxMwoJYzAsOTYuMTAyLDc4LjE5OCwxNzQuMjc3LDE3NC4yOTQsMTc0LjI3N0MxMDIzLjE2OSw2OTkuMjM4LDExMDEuMzUzLDYyMS4wNjMsMTEwMS4zNTMsNTI0Ljk2MSBNNzk2LjQxNSw1MjQuNjU2CgljMC03Mi4zMjQsNTguNjM4LTEzMC45MTgsMTMwLjk0LTEzMC45MThjNzIuMzE2LDAsMTMwLjkyNSw1OC41OTQsMTMwLjkyNSwxMzAuOTE4YzAsNzIuMzE2LTU4LjYwOCwxMzAuOTE4LTEzMC45MjUsMTMwLjkxOAoJQzg1NS4wNTMsNjU1LjU3NCw3OTYuNDE1LDU5Ni45NzMsNzk2LjQxNSw1MjQuNjU2Ii8+Cjwvc3ZnPgo=",
                      }),
                      a.createElement(
                        "span",
                        { style: { whiteSpace: "nowrap" } },
                        (0, d.we)("#EventDisplay_Share_OnMyStatus"),
                      ),
                    ),
                  ),
                  a.createElement(
                    E.he,
                    {
                      toolTipContent: (0, d.we)(
                        "#EventDisplay_Share_OnFaceBook",
                      ),
                    },
                    a.createElement(
                      B.uU,
                      { href: r(s._.k_eFacebook), className: y().ShareBtn },
                      a.createElement("img", {
                        className: (0, m.A)(l().Button),
                        src: g.A,
                      }),
                    ),
                  ),
                  a.createElement(
                    E.he,
                    {
                      toolTipContent: (0, d.we)(
                        "#EventDisplay_Share_OnTwitter",
                      ),
                    },
                    a.createElement(
                      B.uU,
                      { href: r(s._.k_eTwitter), className: y().ShareBtn },
                      a.createElement("img", {
                        className: (0, m.A)(l().Button),
                        src: _.A,
                      }),
                    ),
                  ),
                  a.createElement(
                    E.he,
                    {
                      toolTipContent: (0, d.we)("#EventDisplay_Share_OnReddit"),
                    },
                    a.createElement(
                      B.uU,
                      { href: r(s._.k_eReddit), className: y().ShareBtn },
                      a.createElement("img", {
                        className: (0, m.A)(l().Button),
                        src: S.A,
                      }),
                    ),
                  ),
                ),
                a.createElement("div", { className: l().Divider }),
              ),
            a.createElement(P, { eventLink: h }),
          );
        },
        P = (e) => {
          const t = a.createRef(),
            [r, n] = a.useState(""),
            i = a.createRef();
          return a.createElement(
            "div",
            null,
            a.createElement(
              "div",
              {
                className: (0, m.A)(l().FlexRowContainer, y().linkField),
                onClick: (e) => {
                  t.current &&
                    t.current.ownerDocument.defaultView.navigator.clipboard
                      .writeText(t.current.value)
                      .then((e) => {
                        n((0, d.we)("#EventDisplay_Share_CopiedToClipboard"));
                      })
                      .catch((e) => {
                        n(
                          (0, d.we)(
                            "#EventDisplay_Share_FailedToCopyToClipboard",
                          ),
                        ),
                          console.error("Failed to copy link to clipboard:", e);
                      });
                },
              },
              a.createElement(
                "span",
                { className: y().LinkInputLabel },
                (0, d.we)(
                  e.labelOverride
                    ? e.labelOverride
                    : "#EventDisplay_Share_Link",
                ),
              ),
              a.createElement("textarea", {
                className: y().LinkInput,
                ref: t,
                value: e.eventLink,
                readOnly: !0,
              }),
              document.queryCommandSupported("copy") &&
                a.createElement(
                  "div",
                  {
                    className: (0, m.A)(l().Button, l().Icon, y().LinkButton),
                    title: (0, d.we)("#ToolTip_CopyLinkToClipboard"),
                  },
                  a.createElement(
                    E.he,
                    {
                      toolTipContent: (0, d.we)("#ToolTip_CopyLinkToClipboard"),
                    },
                    a.createElement("img", {
                      className: y().ClipboardIcon,
                      src: h.A,
                    }),
                  ),
                ),
            ),
            a.createElement("div", { ref: i, className: y().ClipboardText }, r),
          );
        };
    },
    66331: (e, t, r) => {
      "use strict";
      r.d(t, { q: () => p });
      var n = r(34629),
        a = r(90626),
        i = r(73744),
        s = r(33737),
        o = r(81416),
        l = r(9154),
        c = r(52038),
        m = r(61859),
        d = r(73745),
        u = r(50666);
      class p extends a.Component {
        constructor() {
          super(...arguments),
            (this.state = {
              region: {
                xPosPct: 0,
                yPosPct: 0,
                widthPct:
                  (this.GetDestWidth() / this.props.uploadFile.width) * 100,
                heightPct:
                  (this.GetDestHeight() / this.props.uploadFile.height) * 100,
              },
            });
        }
        async OnCrop() {
          await this.props.uploadFile.CropImage(
            (this.state.region.xPosPct / 100) * this.props.uploadFile.width,
            (this.state.region.yPosPct / 100) * this.props.uploadFile.height,
            (this.state.region.widthPct / 100) * this.props.uploadFile.width,
            (this.state.region.heightPct / 100) * this.props.uploadFile.height,
            this.GetDestWidth(),
            this.GetDestHeight(),
            this.props.fileType,
          ),
            this.props.closeModal();
        }
        UpdateCrop(e, t) {
          this.setState({ region: t });
        }
        GetDestWidth() {
          const { uploadFile: e, forceResolution: t } = this.props;
          return t ? t.width : i.Fj[e.type].width;
        }
        GetDestHeight() {
          const { uploadFile: e, forceResolution: t } = this.props;
          return t ? t.height : i.Fj[e.type].height;
        }
        GetLargestBoxThatFits(e, t, r, n) {
          let a = r,
            i = (a * t) / Math.max(e, 1);
          return (
            i > n && ((i = n), (a = (i * e) / Math.max(t, 1))),
            { width: a, height: i }
          );
        }
        GetPreviewWindowStyle() {
          const { region: e } = this.state,
            t = this.GetLargestBoxThatFits(
              this.GetDestWidth(),
              this.GetDestHeight(),
              500,
              150,
            ),
            r = t.width,
            n = t.height,
            a = 1 / Math.max(e.widthPct / 100, 1e-4),
            i = 1 / Math.max(e.heightPct / 100, 1e-4),
            s = (this.props.uploadFile.width * e.xPosPct) / 100,
            o = (this.props.uploadFile.height * e.yPosPct) / 100;
          return {
            width: r,
            height: n,
            backgroundPosition: `${-s * ((r * a) / this.props.uploadFile.width)}px ${-o * ((n * i) / this.props.uploadFile.height)}px`,
            backgroundSize: `${100 * a}% ${100 * i}%`,
            backgroundImage: `url(${this.props.uploadFile.dataUrl})`,
          };
        }
        render() {
          const e = (this.GetDestWidth() / this.props.uploadFile.width) * 100,
            t = (this.GetDestHeight() / this.props.uploadFile.height) * 100,
            r = this.GetLargestBoxThatFits(
              this.props.uploadFile.width,
              this.props.uploadFile.height,
              800,
              500,
            );
          return a.createElement(
            l.x_,
            {
              onEscKeypress: this.props.closeModal,
              bDisableBackgroundDismiss: !0,
            },
            a.createElement(
              "div",
              {
                className: (0, c.A)("DialogContent", "_DialogCenterVertically"),
              },
              a.createElement(
                s.iK,
                null,
                (0, m.we)(
                  "#ImageUpload_CropModalTitleDims",
                  this.GetDestWidth(),
                  this.GetDestHeight(),
                ),
              ),
              a.createElement(
                "div",
                { className: (0, c.A)("DialogBodyText") },
                (0, m.we)("#ImageUpload_CropModalDescription"),
              ),
              a.createElement(
                "div",
                {
                  className: u.CropImage,
                  style: { width: r.width, height: r.height },
                },
                a.createElement("img", {
                  style: {
                    maxWidth: "100%",
                    maxHeight: "100%",
                    objectFit: "contain",
                  },
                  src: this.props.uploadFile.dataUrl,
                }),
                a.createElement(o.I, {
                  bLockAspectRatio: !0,
                  bDisableLink: !0,
                  index: 0,
                  updateFn: this.UpdateCrop,
                  xPosPct: 0,
                  yPosPct: 0,
                  widthMinPct: e,
                  heightMinPct: t,
                  widthPct: e,
                  heightPct: t,
                }),
              ),
              a.createElement(
                "div",
                { className: u.CropPreviewGroup },
                a.createElement(
                  "div",
                  { className: u.CropPreviewLabel },
                  (0, m.we)("#ImageUpload_CropPreview"),
                ),
                a.createElement("div", { style: this.GetPreviewWindowStyle() }),
              ),
              a.createElement(
                s.jn,
                { onClick: this.OnCrop },
                (0, m.we)("#ImageUpload_CropAndContinue"),
              ),
            ),
          );
        }
      }
      (0, n.Cg)([d.oI], p.prototype, "OnCrop", null),
        (0, n.Cg)([d.oI], p.prototype, "UpdateCrop", null);
    },
    44483: (e, t, r) => {
      "use strict";
      r.d(t, { A: () => n });
      const n =
        "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYyNjlFOEM1MjJEMzExRTJCNTVBQkZGOUQyOTI0ODU5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYyNjlFOEM2MjJEMzExRTJCNTVBQkZGOUQyOTI0ODU5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjI2OUU4QzMyMkQzMTFFMkI1NUFCRkY5RDI5MjQ4NTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjI2OUU4QzQyMkQzMTFFMkI1NUFCRkY5RDI5MjQ4NTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4IrEPeAAABJ0lEQVR42mL8//8/AzmABUScEOZJI1HfLBaoppmk2sh4Ql/r/69HD0jSxCanwMD07eVzhl9ADgz/ZmJikMjOY2CUlEIRR8YgPYzbBLhQQoeJl4/B7uY9hv9//jC8XLWc4UFfD8OPZ08xbGX6CSSQ8XdgKH/79o3h+69fDHwBwQy6ew8ySOYXMfxiZERRx/ILPTqA/K9fv8K5f4EG3Pn5i+EfSB2SWpaf6G6A2vgP6NSrWzYz3J8zk0Hk9SsGVka0ePzLxs7w9ydC+3+gpn29PQzv9uxiEHz7mkEY6ESQPb+QHMbMwcHAwiotw/Dj3h2E6L+/DIyrljKIgCMLGMoMmCmLQ0qagdnh66fn/xgYfP+B9BCJv79/lw5KcrPISKqzGMlN5AABBgBSmY83jVsiQAAAAABJRU5ErkJggg==";
    },
  },
]);
