(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [90202], {
        849960: e => {
            e.exports = {
                "css-value-copyright-transition-params": ".6s 0s cubic-bezier(.4, .01, .22, 1)",
                "css-value-copyright-transition-params-half-time": ".3s 0s cubic-bezier(.4, .01, .22, 1)",
                label: "label-dzbd7lyV",
                logoWrap: "logoWrap-dzbd7lyV",
                expandedWithTransition: "expandedWithTransition-dzbd7lyV",
                expandedByClick: "expandedByClick-dzbd7lyV",
                start: "start-dzbd7lyV",
                end: "end-dzbd7lyV",
                snap: "snap-dzbd7lyV",
                top: "top-dzbd7lyV",
                bottom: "bottom-dzbd7lyV",
                large: "large-dzbd7lyV",
                expanded: "expanded-dzbd7lyV",
                label__link: "label__link-dzbd7lyV"
            }
        },
        212938: e => {
            e.exports = {
                "css-value-ticker-item-tape-padding": "16px",
                "css-value-ticker-item-tape-height-normal": "44px",
                "css-value-ticker-item-tape-height-compact": "72px",
                "css-value-ticker-item-tape-skeleton-width-normal": "346px",
                "css-value-ticker-item-tape-skeleton-width-compact": "125px"
            }
        },
        304782: e => {
            e.exports = {
                "css-value-ticker-item-tape-height-normal": "44px",
                "css-value-ticker-item-tape-height-compact": "72px",
                "css-value-ticker-item-tape-skeleton-width-normal": "346px",
                "css-value-ticker-item-tape-skeleton-width-compact": "125px",
                "css-value-ticker-item-tape-padding": "16px"
            }
        },
        882112: e => {
            e.exports = {}
        },
        551238: (e, t, i) => {
            "use strict";
            i.d(t, {
                colorsPalette: () => _
            });
            var s = i(330120),
                n = i(142660),
                a = i(650151);
            const r = { ...s,
                    ...n
                },
                o = {},
                l = Object.keys(r).length,
                c = /^#[0-9A-F]{6}$/i;

            function d(e, t = []) {
                const i = r[e];
                if (!i) return null;
                if (c.test(i)) return i;
                const s = i;
                return t.push(e), -1 !== t.indexOf(s) ? (console.warn("Colors definitions cycled"), i) : t.length > l ? (console.warn("Too many variables-link in HEX-color search: " + t[0]), null) : d(s, t)
            }
            Object.keys(r).forEach((e => {
                const t = d(e);
                o[e] = (0, a.ensureNotNull)(t)
            }));
            const _ = o
        },
        62889: (e, t, i) => {
            "use strict";
            i.d(t, {
                CopyrightPosition: () => s,
                copyrightLabel: () => l
            });
            var s, n = i(497754),
                a = i(995683),
                r = i(389137),
                o = i(849960);

            function l({
                svgText: e,
                icon: t,
                theme: i,
                url: l,
                mode: c,
                verticalPosition: d = s.Vertical.Bottom,
                horizontalPosition: _ = s.Horizontal.End,
                snapToEdge: h = !0,
                isExpanded: m = !1,
                className: p
            }) {
                let u;
                switch (c) {
                    case "new":
                    case "with_border":
                        u = (0, r.clone)(i);
                        break;
                    default:
                        u = (0, a.mergeThemes)((0, r.clone)(o), i)
                }
                const g = document.createElement("span");
                let f;
                l && (f = document.createElement("a"), f.classList.add(u.label__link), f.href = l, f.target = "_blank", f.rel = "noopener noreferrer", f.setAttribute("data-target-type", "copyright"), g.append(f)), g.className = n(u.label, _ === s.Horizontal.Start && u.start, _ === s.Horizontal.End && u.end, d === s.Vertical.Top && u.top, d === s.Vertical.Bottom && u.bottom, h && u.snap, "large_old" === c && u.large, m && u.expanded, p, "js-copyright-label"), g.addEventListener("click", (() => {
                    function e() {
                        g.classList.remove(u.expandedByClick), g.removeEventListener("mouseleave", e)
                    }
                    g.classList.contains(u.expandedWithTransition) || g.classList.contains(u.expanded) || (g.classList.contains(u.expandedByClick) ? l || e() : (g.classList.add(u.expandedByClick), g.addEventListener("mouseleave", e)))
                }));
                const b = document.createElement("span");
                b.className = u.logoWrap, b.innerHTML = t;
                const v = document.createElement("span");
                return v.className = u.svgTextWrap,
                    v.innerHTML = e, g.append(b, v), [g, u]
            }! function(e) {
                let t, i;
                ! function(e) {
                    e[e.Bottom = 0] = "Bottom", e[e.Top = 1] = "Top"
                }(t = e.Vertical || (e.Vertical = {})),
                function(e) {
                    e[e.Start = 0] = "Start", e[e.End = 1] = "End"
                }(i = e.Horizontal || (e.Horizontal = {}))
            }(s || (s = {}))
        },
        351079: (e, t, i) => {
            "use strict";
            i.d(t, {
                CopyrightPosition: () => n.CopyrightPosition,
                createCopyrightLabel: () => o
            });
            var s = i(497754),
                n = i(62889),
                a = i(650401),
                r = i(952598);

            function o({
                isSheriffDisabled: e = !1,
                ...t
            }) {
                const [i, o] = (0, n.copyrightLabel)(t);
                return e || (0, a.getWidgetSheriffActions)().then((e => {
                    i.className = s(i.className, e.includes(r.KnownAction.Expand) && o.expandedWithTransition)
                })), i
            }
        },
        650401: (e, t, i) => {
            "use strict";
            i.d(t, {
                getWidgetSheriffActions: () => d
            });
            var s = i(125226),
                n = i(120780),
                a = i(201089),
                r = i(952598);
            const o = window.WIDGET_SHERIFF_HOST || "https://www.xstaging-widget.tv",
                l = (0, a.getLogger)("WidgetSheriff.Widget");
            let c = null;
            async function d() {
                return null === c && (c = await async function() {
                    if (!(0, s.isFeatureEnabled)("widget-sheriff")) return Promise.resolve([]);
                    const e = document.location.ancestorOrigins && document.location.ancestorOrigins.length ? document.location.ancestorOrigins[document.location.ancestorOrigins.length - 1] : null;
                    if (null === e) return l.logWarn("ancestorOrigin is undefined"), Promise.resolve([]);
                    const t = new URL("/sheriff/api/v1/rules/search", o);
                    t.searchParams.append("origin", e);
                    return (await (0, n.fetch)(t.toJSON()).then((e => {
                        if (!e.ok) throw new Error("Guard request error occured");
                        return 204 === e.status ? Promise.resolve({
                            actions: []
                        }) : e.json()
                    })).catch((e => (l.logWarn(e.message), Promise.resolve({
                        actions: []
                    }))))).actions.filter((e => r.widgetSheriffActions.has(e)))
                }()), Promise.resolve(c)
            }
        },
        952598: (e, t, i) => {
            "use strict";
            var s;
            i.d(t, {
                    KnownAction: () => s,
                    widgetSheriffActions: () => n
                }),
                function(e) {
                    e.Expand = "expand-logo"
                }(s || (s = {}));
            const n = new Set([s.Expand])
        },
        125226: (e, t, i) => {
            "use strict";
            var s = i(49437).TVLocalStorage,
                n = i(707957),
                a = i(855385);
            i(638456);
            var r = new n;
            TradingView.FeatureToggle = {
                force_prefix: "forcefeaturetoggle.",
                onChanged: new n,
                enableFeature: function(e) {
                    s.setItem(this.force_prefix + e, "true"), r.fire(e)
                },
                disableFeature: function(e) {
                    s.setItem(this.force_prefix + e, "false"), r.fire(e)
                },
                resetFeature: function(e) {
                    s.removeItem(this.force_prefix + e), r.fire(e)
                },
                onFeaturesStateChanged: function() {
                    return r
                }
            }, TradingView.isFeatureEnabled = function(e) {
                var t = "featuretoggle_seed";

                function n(e) {
                    try {
                        var i = a(e + function() {
                            if (window.user && window.user.id) return window.user.id;
                            var e = s.getItem(t);
                            return null !== e || (e = Math.floor(1e6 * Math.random()), s.setItem(t, e)), e
                        }());
                        return new DataView(i).getUint32(0, !0) / 4294967296
                    } catch (e) {
                        return .5
                    }
                }

                function o(t) {
                    return !("local" !== window.environment || ! function(e) {
                        var t = ["tick_intervals", "show_reset_chart_only_if_required", "broker_FXCM_token_v2", "broker_TRADESTATION", "broker_TRADOVATE_dev", "black_friday_mainpage", "black_friday_popup", "datawindow", "trading-fast-renew-oauth-token", "switching_year_to_month_disabled", "default_year_billing_cycle_switcher", "marketing-analytics", "visible_address_fields_by_default", "slow-support-warning", "hide-trading-floating-toolbar", "save-short-streams", "details_disable_bid_ask", "vat_disabled", "pro_plan_upgrades_disabled", "pro_plan_downgrades_disabled", "disable_recaptcha_on_signup", "braintree-gopro-in-order-dialog", "braintree-apple-pay", "braintree-apple-pay-trial", "braintree-3ds-enabled", "trial_increased_monthly_discounts", "hide_gopro_popup_upgrade_button", "tradestation_use_sync_mapper", "broker_id_session", "remove_line_tools_from_content", "disable_retry_load_linetools_from_storage", "modular_broker_use_sync_mapper", "do_not_save_shared_line_tools_to_charts", "save_shared_line_tools", "multichart_replay", "chart_storage_with_broker_name", "oanda-european-accounts-warning", "mobile_show_bottom_panel", "disable_save_settings", "desktop_version_notification_enabled", "favorites-in-broker-dropdown", "enable_toggle_streams_rtmp_url", "hide_ecomonic_events", "mobile_trading_web", "mobile_trading_ios", "mobile_trading_android", "hide_real_brokers_on_mobile", "disable_tradestation_country_block", "enable_trading_server_logger", "hide_ranges_label_colors", "disable_user_specific_encryption", "minds_widget_enabled", "no_overlap_mode_enabled", "collapse_pane_buttons_when_connected_to_broker", "enable_new_execution_style", "disable_pushstream_connections_for_anonymous_users", "use_new_paper_status_mapping", "use_staging_verifier", "fxcm_fcl_api", "ally_use_new_sso_url", "ibkr_use_new_init_session_api", "enable_eventsource_pushstream_transport", "enable_eventsource_pushstream_mobile", "ftx_request_server_logger", "ibkr_request_server_logger", "disallow_concurrent_sessions", "check_ibkr_side_maintenance", "tradestation_request_server_logger", "trading_request_server_logger", "hide_tweet_drawingtool", "new_error_card_icons", "RU_SF_disable", "RU_VOR_disable", "enable_monaco_editor", "enable_import_inlay_hints", "enable_pine_editor_status_bar", "enable_pine_logs", "enable_new_custom_public_chats", "bottom_panel_track_events", "continuous_front_contract_trading", "vertex-tax-included", "enable_place_order_context_in_instant_mode", "multiple_SoS", "enable_edit_order_context_in_instant_mode", "show_data_problems_in_help_center", "chart_storage_hibernation_delay_60min", "chart_storage_hibernation_delay_10min", "chart_storage_hibernation_delay_5min", "widget-sheriff", "enable_sign_in_popup_with_evercookie", "center_alignment_replay_position", "start_replay_right_after_point_selection", "switching_raf_toast", "show_trading_buttons_in_am", "order_type_specific_settings_saving", "enable_share_idea_via_twitter", "hide_position_trade_value", "alerts-restrict-offline-clear-requests", "show_alert_clock_icon", "alerts-logos-in-widgets", "enable_qty_calculator_in_replay", "alerts-widgets-use-facade", "alerts-facade-use-permission-proxy", "forexcom_session_v2", "add_financials_for_symbols", "hide_percent_bottom_toolbar", "hide_log_bottom_toolbar", "hide_auto_bottom_toolbar", "remove_lines_submenu", "new_idea_publish_page", "new_script_publish_page", "enable_logo_in_mobile_apps", "show_symbol_logo_in_legend", "fxcm_fcl_server_logger"],
                            i = "[A-Z]+[a-zA-Z0-9_]+",
                            s = new RegExp(`broker_${i}_dev`, "g"),
                            n = new RegExp(`hide_${i}_on_ios`, "g"),
                            a = new RegExp(`hide_${i}_on_android`, "g"),
                            r = new RegExp(`hide_${i}_on_mobile_web`, "g");
                        return -1 === t.indexOf(e) && -1 === e.indexOf("-maintenance") && !1 === s.test(e) && !1 === n.test(e) && !1 === a.test(e) && !1 === r.test(e)
                    }(t)) || (!e[t] || -1 !== e[t]) && (!!("true" === s.getItem(TradingView.FeatureToggle.force_prefix + t) || window.is_authenticated && "undefined" != typeof user && user.settings && "true" === user.settings[TradingView.FeatureToggle.force_prefix + t]) || !("false" === s.getItem(TradingView.FeatureToggle.force_prefix + t) || window.is_authenticated && "undefined" != typeof user && user.settings && "false" === user.settings[TradingView.FeatureToggle.force_prefix + t]) && (!!e[t] && (1 === e[t] || n(t) <= e[t])))
                }
                return TradingView.onWidget() || Promise.all([i.e(38835), i.e(795), i.e(34604)]).then(i.bind(i, 501867)).then((t => {
                    t.pushStreamMultiplexer.on("featuretoggle", (function(t) {
                        var i = o(t.name);
                        e[t.name] = t.state, i !== o(t.name) && r.fire(t.name)
                    }))
                })), o
            }(window.featureToggleState || {}), TradingView.FeatureToggle, t.isFeatureEnabled = TradingView.isFeatureEnabled, TradingView.FeatureToggle.onFeaturesStateChanged.bind(TradingView.FeatureToggle)
        },
        207678: (e, t, i) => {
            "use strict";
            i.d(t, {
                breakpoints: () => s,
                mobileFirstBreakpoints: () => n,
                mobileFirstLegacyBreakpoints: () => a
            });
            const s = {
                    desktop: 1 / 0,
                    desktopHd: 1919,
                    phone: 767,
                    "phone-vertical": 479,
                    tablet: 1019
                },
                n = {
                    base: 0,
                    "media-mf-phone-vertical": 320,
                    "media-mf-phone-landscape": 568,
                    "media-mf-tablet-vertical": 768,
                    "media-mf-tablet-landscape": 1024,
                    "media-mf-laptop": 1280,
                    "media-mf-desktop-medium": 1440,
                    "media-mf-desktop-large": 1920,
                    "media-mf-desktop-extra-large": 2560
                },
                a = {
                    "media-mf-legacy-phone-vertical": 330,
                    "media-mf-legacy-phone": 480,
                    "media-mf-legacy-notebook": 1020,
                    "media-mf-legacy-desktop-medium": 1480,
                    "media-mf-legacy-desktop": 1531
                }
        },
        76107: (e, t, i) => {
            "use strict";
            i.d(t, {
                getCSSProperty: () => o,
                getCSSPropertyNumericValue: () => l,
                getContentWidth: () => a,
                getScrollbarWidth: () => s,
                matchMediaMinMax: () => n,
                setStyle: () => r
            });
            const s = (() => {
                let e;
                return () => {
                    var t;
                    if (void 0 === e) {
                        const i = document.createElement("div"),
                            s = i.style;
                        s.visibility = "hidden", s.width = "100px", s.msOverflowStyle = "scrollbar", document.body.appendChild(i);
                        const n = i.offsetWidth;
                        i.style.overflow = "scroll";
                        const a = document.createElement("div");
                        a.style.width = "100%", i.appendChild(a);
                        const r = a.offsetWidth;
                        null === (t = i.parentNode) || void 0 === t || t.removeChild(i), e = n - r
                    }
                    return e
                }
            })();

            function n(e, t) {
                return t === 1 / 0 ? window.matchMedia(`(min-width: ${e}px)`) : window.matchMedia(`(min-width: ${e}px) and (max-width: ${t}px)`)
            }

            function a(e) {
                return l(e, "width") - l(e, "padding-left") - l(e, "padding-right")
            }

            function r(e, t, i) {
                null !== e && e.style.setProperty(t, i)
            }

            function o(e, t) {
                return getComputedStyle(e, null).getPropertyValue(t)
            }

            function l(e, t) {
                return parseInt(o(e, t))
            }
        },
        17966: (e, t, i) => {
            "use strict";
            i.d(t, {
                getCircleLogoAnyHtml: () => a
            });
            var s = i(562840),
                n = i(315723);

            function a(e) {
                const {
                    logoUrls: t,
                    ...i
                } = e;
                return 1 === t.length ? (0, s.getCircleLogoHtml)({
                    logoUrl: t[0],
                    ...i
                }) : 2 === t.length ? (0, n.getCircleLogoPairHtml)({
                    primaryLogoUrl: t[0],
                    secondaryLogoUrl: t[1],
                    ...i
                }) : (0, s.getCircleLogoHtml)({
                    logoUrl: void 0,
                    ...i
                })
            }
        },
        315723: (e, t, i) => {
            "use strict";
            i.d(t, {
                getCircleLogoPairHtml: () => n
            });
            var s = i(439378);
            i(882112);

            function n(e) {
                const {
                    primaryLogoUrl: t,
                    secondaryLogoUrl: i,
                    size: n,
                    className: r
                } = e;
                return `<span class="${(0,s.getBlockStyleClasses)(n,r)}">\n\t\t\t${a({logoUrl:i,size:n})}\n\t\t\t${a({logoUrl:t,size:n})}\n\t\t</span>`
            }

            function a(e) {
                const {
                    logoUrl: t,
                    size: i
                } = e, n = (0, s.getLogoStyleClasses)(i, Boolean(t));
                return void 0 === t ? `<span class="${n}"></span>` : `<img class="${n}" src="${t}" alt="" />`
            }
        },
        439378: (e, t, i) => {
            "use strict";
            i.d(t, {
                getBlockStyleClasses: () => n,
                getLogoStyleClasses: () => a
            });
            var s = i(497754);

            function n(e, t) {
                return s("tv-circle-logo-pair", `tv-circle-logo-pair--${e}`, t)
            }

            function a(e, t) {
                return s("tv-circle-logo-pair__logo", `tv-circle-logo-pair__logo--${e}`, !t && "tv-circle-logo-pair__logo-empty")
            }
        },
        562840: (e, t, i) => {
            "use strict";
            i.d(t, {
                getCircleLogoHtml: () => n
            });
            var s = i(783036);
            i(645300);

            function n(e) {
                const t = (0, s.getStyleClasses)(e.size, e.className);
                return (0, s.isCircleLogoWithUrlProps)(e) ? `<img class="${t}" src="${e.logoUrl}" alt="">` : `<span class="${t}">${e.placeholderLetter||""}</span>`
            }
        },
        994569: e => {
            e.exports = {
                tickerTape: "tickerTape-N_kypjt9",
                noAutoScroll: "noAutoScroll-N_kypjt9",
                tape: "tape-N_kypjt9",
                head: "head-N_kypjt9",
                tail: "tail-N_kypjt9",
                skeleton: "skeleton-N_kypjt9"
            }
        },
        541346: (e, t, i) => {
            "use strict";
            i.d(t, {
                PercentageFormatter: () => a
            });
            var s = i(624444),
                n = i(31341);
            class a extends s.PriceFormatter {
                constructor(e) {
                    super(e), this.type = "percentage"
                }
                state() {
                    const e = s.PriceFormatter.prototype.state.call(this);
                    return e.percent = !0, e
                }
                parse(e) {
                    return e = e.replace("%", ""), super.parse(e)
                }
                format(e, t, i, s, a = !0) {
                    const r = super.format(e, t, i, s, !1) + "%";
                    return a ? (0, n.forceLTRStr)(r) : r
                }
                static serialize(e) {
                    return e.state()
                }
                static deserialize(e) {
                    return new a(e.priceScale)
                }
            }
        },
        943994: (e, t, i) => {
            "use strict";
            i.d(t, {
                PLACE_HOLDER: () => r,
                VolumeFormatter: () => o
            });
            var s = i(777754),
                n = i(182436),
                a = i(389137);
            const r = "---";
            class o {
                constructor(e) {
                    this.type = "volume", this._numericFormatter = new n.NumericFormatter, this._fractionalValues = void 0 !== e && e > 0, this._precision = e
                }
                state() {
                    return {
                        precision: this._precision
                    }
                }
                format(e, t) {
                    if (!(0, a.isNumber)(e)) return r;
                    let n = "";
                    return e < 0 ? (n = "−", e = -e) : e > 0 && t && (n = "+"), e >= 1e100 ? s.t(null, void 0, i(343088)) : (!this._fractionalValues || e >= 995 ? e = Math.round(e) : this._fractionalValues && (e = +e.toFixed(this._precision)), e < 995 ? n + this._formatNumber(e) : e < 999995 ? n + this._formatNumber(e / 1e3) + "K" : e < 999999995 ? (e = 1e3 * Math.round(e / 1e3), n + this._formatNumber(e / 1e6) + "M") : e < 999999999995 ? (e = 1e6 * Math.round(e / 1e6), n + this._formatNumber(e / 1e9) + "B") : (e = 1e9 * Math.round(e / 1e9), n + this._formatNumber(e / 1e12) + "T"))
                }
                parse(e) {
                    if ("---" === e) return {
                        error: "not a number",
                        res: !1,
                        value: NaN
                    };
                    const t = {
                            K: 1e3,
                            M: 1e6,
                            B: 1e9,
                            T: 1e12
                        },
                        i = e.slice(-1);
                    if (t.hasOwnProperty(i)) {
                        const s = this._numericFormatter.parse(e.slice(0, -1));
                        return (0, a.isNumber)(s) ? {
                            res: !0,
                            value: s * t[i]
                        } : {
                            error: "not a number",
                            res: !1,
                            value: NaN
                        }
                    } {
                        const t = this._numericFormatter.parse(e);
                        return (0, a.isNumber)(t) ? {
                            res: !0,
                            value: t
                        } : {
                            error: "not a number",
                            res: !1,
                            value: NaN
                        }
                    }
                }
                static serialize(e) {
                    return e.state()
                }
                static deserialize(e) {
                    return new o(e.precision)
                }
                _formatNumber(e) {
                    if (this._fractionalValues && 0 !== e) {
                        const t = 14 - Math.ceil(Math.log10(e)),
                            i = Math.pow(10, t);
                        e = Math.round(e * i) / i
                    }
                    return this._numericFormatter.format(e).replace(/(\.[1-9]*)0+$/, ((e, t) => t))
                }
            }
        },
        930134: (e, t, i) => {
            "use strict";
            i(318293), i(730128);
            var s = i(12481),
                n = (i(304782), i(16899)),
                a = i(17966),
                r = i(607546),
                o = i(571690),
                l = i(919476),
                c = i(497754);
            class d extends n.TickerItemAbstract {
                constructor(e, t, i) {
                    super(e, t, i), this._options = i || {}
                }
                setWidth(e) {
                    this._el.style.setProperty("width", e + "px")
                }
                getWidth() {
                    if (!document.body.contains(this._el)) throw new Error("Cannot get ticker item width, because the element is not attached to DOM");
                    return this._el.getBoundingClientRect().width
                }
                resetWidth() {
                    this._el.style.removeProperty("width")
                }
                toggleCompactMode(e) {
                    this._el.classList.toggle(`${this._getClass()}--compact`, e)
                }
                toggleTransparency(e) {
                    this._el.classList.toggle(`${this._getClass()}--transparent`, e)
                }
                setView(e, t, i) {
                    this.setWidth(e), this.toggleCompactMode(t), this.toggleTransparency(i)
                }
                static getSkeletonElement(e, t) {
                    const i = `<div class="${c("tv-ticker-item-tape","tv-ticker-item-tape--skeleton",{"tv-ticker-item-tape--compact":e,"tv-ticker-item-tape--transparent":t})}"><div class="tv-ticker-item-tape__border-wrapper"><div class="tv-ticker-item-tape__inner-wrapper"><div class="tv-ticker-item-tape__short-name-wrapper"></div><div class="tv-ticker-item-tape__last-wrapper"></div><div class="tv-ticker-item-tape__change-wrapper"></div></div></div></div>`;
                    return (0, o.parseHtmlElement)(i)
                }
                _getClass() {
                    return "tv-ticker-item-tape"
                }
                _getView() {
                    const e = {
                            borderWrapper: this._getElementClass("border-wrapper"),
                            innerWrapper: this._getElementClass("inner-wrapper"),
                            symbol: this._getElementClass("symbol"),
                            iconWrapper: this._getElementClass("icon-wrapper"),
                            shortNameWrapper: this._getElementClass("short-name-wrapper"),
                            shortName: this._getElementClass("short-name"),
                            lastWrapper: this._getElementClass("last-wrapper"),
                            last: this._getElementClass("last"),
                            changeWrapper: this._getElementClass("change-wrapper"),
                            changeAbs: this._getElementClass("change-abs"),
                            changePt: this._getElementClass("change-pt")
                        },
                        t = this._symbolData.title || this._symbolData.description,
                        i = this._options.showSymbolLogo;
                    return `<div class="${e.borderWrapper}"><div class="${e.innerWrapper}"><div class=${e.symbol}><div class="${e.iconWrapper} js-header-icon">\n\t\t\t\t\t\t\t${i?(0,a.getCircleLogoAnyHtml)({logoUrls:[],size:this._options.isCompactMode?"xxxsmall":"xsmall",className:this._getElementClass("icon")}):""}\n\t\t\t\t\t\t</div><div class="${e.shortNameWrapper}"><span class="${c(e.shortName,!t&&"js-symbol-short-name")}">${(0,l.htmlEscape)(t||"")}</span><span class="js-symbol-session-status"></span></div></div><div class="${e.lastWrapper}"><span class="${e.last} js-symbol-last"></span><span class="js-data-mode"></span></div><div class="${e.changeWrapper} js-symbol-change-direction"><span class="${e.changeAbs} js-symbol-change"></span>&nbsp<span class="${e.changePt} js-symbol-change-pt"></span></div></div></div>`
                }
                _getTickerOptions() {
                    return {
                        dontDyePrice: !0,
                        signPositive: !0,
                        signNegative: !0,
                        changeInBrackets: !1,
                        changePercentInBrackets: !0,
                        changeDirectionUpClass: `${this._getElementClass("change-wrapper")}--up`,
                        changeDirectionDownClass: `${this._getElementClass("change-wrapper")}--down`,
                        lastGrowingClass: `${this._getElementClass("last")}--growing`,
                        lastFallingClass: `${this._getElementClass("last")}--falling`,
                        sessionStatusClassSuffix: "--for-ticker-tape",
                        dataModeClassSuffix: "--for-ticker-tape",
                        showInvalidSymbolStatus: !0,
                        indicatorsTooltipType: "browser",
                        setStateHook: this._options.showSymbolLogo ? (0, r.getLogoUrlsHook)((e => {
                            const t = this._options.isCompactMode ? "xxxsmall" : "xsmall";
                            this._renderSymbolLogo(e, t)
                        })) : void 0
                    }
                }
            }
            var _ = i(685459),
                h = i.n(_),
                m = i(49336),
                p = i(207678),
                u = i(76107);
            class g extends(h()) {
                constructor() {
                    super(), this.width = 0, this.height = 0, this.device = null, this.breakpoints = p.breakpoints, this._checkDevice(), window.addEventListener("resize", this._checkDevice), Object.entries(p.breakpoints).sort((([e, t], [i, s]) => t - s)).forEach((([e, t], i, s) => {
                        let n;
                        if (0 !== i) {
                            const [, e] = s[i - 1];
                            n = e + 1
                        } else n = 0;
                        const a = (0, u.matchMediaMinMax)(n, t);
                        a.matches && this._setNewDevice(e), a.addListener((t => {
                            t.matches && (this._checkDevice(), this._setNewDevice(e))
                        }))
                    })), (0, m.whenDocumentReady)(this._checkDevice.bind(this)), this.isPhoneSizeDevice.bind(this)
                }
                isPhoneSizeDevice() {
                    return "phone" === this.device || "phone-vertical" === this.device
                }
                _checkDevice() {
                    this.width = window.innerWidth, this.height = window.innerHeight
                }
                _setNewDevice(e) {
                    const t = this.device;
                    this.device = e, this.trigger("changeDevice", [e, t])
                }
            }
            const f = new g;
            var b, v, w, y = i(541558),
                k = i(31341);
            ! function(e) {
                e.Adaptive = "adaptive", e.Regular = "regular", e.Compact = "compact"
            }(b || (b = {})),
            function(e) {
                e.AllSymbols = "all_symbols", e.Market = "market", e.Symbol = "symbol"
            }(v || (v = {})),
            function(e) {
                e.Cryptocurrencies = "crypto", e.Currencies = "forex", e.Stocks = "stock", e.Indices = "index", e.Futures = "futures", e.Bonds = "cfd"
            }(w || (w = {}));
            var E = i(6826),
                C = i.n(E),
                T = i(707957),
                x = i.n(T);
            const S = p.breakpoints.phone;

            function L() {
                return window.innerWidth <= S
            }

            function W(e) {
                return e ? 72 : 44
            }
            class V {}
            var N = i(212938),
                M = i(994569);
            const F = parseInt(N["css-value-ticker-item-tape-skeleton-width-normal"]),
                I = parseInt(N["css-value-ticker-item-tape-skeleton-width-compact"]),
                $ = parseInt(N["css-value-ticker-item-tape-padding"]);

            function D(e) {
                const t = new Promise((t => {
                        const i = () => t(!0);
                        e.onInit.subscribe(null, (e => {
                            var t;
                            e ? i() : (t = 2e3, new Promise((e => {
                                setTimeout(e, t)
                            }))).then(i)
                        }), !0)
                    })),
                    i = new Promise((t => {
                        e.onError.subscribe(null, (() => t(!1)), !0)
                    }));
                return Promise.race([t, i])
            }
            var P = i(901107),
                z = i(185515),
                A = i(194058);
            var O, R, H = i(903972),
                B = i(331633);

            function U(e, t, i) {
                const s = {
                    name: e,
                    frameElementId: t,
                    data: i
                };
                window.parent.postMessage(s, "*")
            }! function(e) {
                let t;
                ! function(e) {
                    e.SetSymbol = "set-symbol", e.SetInterval = "set-interval"
                }(t = e.Names || (e.Names = {}))
            }(O || (O = {})),
            function(e) {
                let t;
                ! function(e) {
                    e.SymbolClick = "tv-widget-symbol-click", e.WidgetLoad = "tv-widget-load", e.WidgetReady = "tv-widget-ready", e.ResizeIframe = "tv-widget-resize-iframe", e.NoData = "tv-widget-no-data"
                }(t = e.Names || (e.Names = {}))
            }(R || (R = {}));
            const j = window.initData.hashSettings || {},
                K = "string" == typeof j.frameElementId ? j.frameElementId : null;
            var q = i(351079);
            const X = function() {
                    const e = window;
                    return { ...e.initData.widgetDefaults,
                        ...e.initData.hashSettings,
                        ...e.initData.querySettings
                    }
                }(),
                G = (0, z.filterUtmInfo)(X);
            let Z = X.symbols;
            Array.isArray(Z) && Z.every(H.validateSymbolData) || (console.error("Invalid symbols data, fall back to defaults"), Z = window.initData.defaultSettings.symbols);
            const J = X.noLinks;
            X.noLinks || Z.forEach((function(e) {
                const t = e.proName || e.shortName;
                e.linkPage = (0, A.makeWidgetSymbolLink)(t, X.largeChartUrl, G)
            }));
            const Q = X.isTransparent,
                Y = X.showSymbolLogo,
                ee = X.displayMode,
                te = X.colorTheme;
            te && (0, B.setTheme)(te);
            const ie = document.querySelector("#widget-ticker-tape-container");
            (0, P.createEmbedWidgetWrapper)(ie, G, {
                isWhiteLabel: X.whitelabel,
                locale: X.locale,
                copyrightOptions: {
                    verticalPosition: q.CopyrightPosition.Vertical.Top,
                    mode: "small_old"
                }
            });
            const se = new class {
                constructor(e) {
                    this.height = new(C())(0), this.onAllTickersFaulty = new(x()), this._styleElement = document.createElement("style"), this._containerElement = document.createElement("div"), this._tapeElement = document.createElement("div"), this._headElement = document.createElement("div"), this._tailElement = document.createElement("div"), this._headTickerItems = [], this._tailTickerItems = [], this._tickerItemWidths = [], this._isCompactMode = new(C()), this._turnKeyboardFocusOn = e => {
                            e.target.matches(":focus-visible") && (this._containerElement.classList.add(M.noAutoScroll), this._containerElement.removeEventListener("focusin", this._turnKeyboardFocusOn), this._containerElement.addEventListener("focusout", this._turnKeyboardFocusOff))
                        }, this._turnKeyboardFocusOff = e => {
                            const t = e.relatedTarget;
                            null !== t && this._containerElement.contains(t) || (this._containerElement.scrollLeft = 0, this._containerElement.classList.remove(M.noAutoScroll), this._containerElement.removeEventListener("focusout", this._turnKeyboardFocusOff), this._containerElement.addEventListener("focusin", this._turnKeyboardFocusOn))
                        }, this._cancelDebouncedResize = () => {}, this._onCompactModeChanged = () => {
                            this._updateTickerViewsAndStyles()
                        }, this._onVisibilityStateChanged = () => {
                            "visible" === document.visibilityState && this._updateTickerViewsAndStyles()
                        }, this._updateTickerViewsAndStyles = () => {
                            this._updateTickerViews(), this._updateStyles()
                        }, this._onDeviceChanged = () => {
                            this._isCompactMode.setValue(L())
                        }, this._ensureSufficientTailWidth = () => {
                            if (0 === this._symbols.length) return;
                            const e = this._containerElement.getBoundingClientRect().width,
                                t = this._tailElement.getBoundingClientRect().width,
                                i = this._headTickerItems.length;
                            let s = e - t;
                            for (let e = this._tailTickerItems.length % i; s > 0; e = ++e % i) {
                                const t = this._tickerItemWidths[e];
                                s -= t;
                                const i = this._createTickerItemTape(this._symbols[e]);
                                this._tailTickerItems.push(i), this._tailElement.appendChild(i.getElement()), i.setView(t, this._isCompactMode.value(), this._isTransparent)
                            }
                        }, this._updateHeightValue = e => {
                            this.height.setValue(W(e))
                        }, this._symbols = e.symbols, this._speed = e.speed, this._isTransparent = !!e.isTransparent, this._displayMode = e.displayMode, this._isEmbedWidget = !!e.isEmbedWidget, this._showSymbolLogo = !!e.showSymbolLogo, this._noLinks = !!e.noLinks, this._isCompactMode.setValue(this._displayMode === b.Adaptive ? L() : this._displayMode === b.Compact),
                        this._isCompactMode.subscribe(this._updateHeightValue, {
                            callWithLast: !0
                        }), e.container.appendChild(this._containerElement), this._containerElement.classList.add(M.tickerTape), this._containerElement.classList.toggle(M.noAutoScroll, !this._speed), this._speed && this._containerElement.addEventListener("focusin", this._turnKeyboardFocusOn), this._tapeElement.classList.add(M.tape), this._headElement.classList.add(M.head), this._tailElement.classList.add(M.tail);
                    const t = function(e, t, i) {
                        const s = t ? I : F,
                            n = document.createElement("div");
                        n.classList.add(M.skeleton);
                        const a = Math.ceil(e / s);
                        for (let e = 0; e < a; e++) n.appendChild(d.getSkeletonElement(t, i));
                        return n
                    }(this._containerElement.getBoundingClientRect().width, this._isCompactMode.value(), this._isTransparent);
                    this._tapeElement.appendChild(t);
                    const i = [];
                    for (const e of this._symbols) {
                        const t = this._createTickerItemTape(e);
                        t.toggleTransparency(this._isTransparent), this._headTickerItems.push(t), this._headElement.appendChild(t.getElement()), i.push(D(t))
                    }
                    this._containerElement.appendChild(this._styleElement), this._containerElement.appendChild(this._tapeElement), this._waitForTickersCancelable = function(e) {
                        let t = !1;
                        return {
                            promise: new Promise(((i, s) => {
                                e.then((e => t ? s(new V) : i(e))), e.catch((e => s(t ? new V : e)))
                            })),
                            cancel() {
                                t = !0
                            }
                        }
                    }(Promise.all(i)), this._waitForTickersCancelable.promise.then((e => {
                        e.every((e => !e)) && this.onAllTickersFaulty.fire(), this._tapeElement.removeChild(t), this._tapeElement.appendChild(this._headElement), this._tapeElement.appendChild(this._tailElement), this._init()
                    }), (e => {
                        if (!(e instanceof V)) throw e
                    }))
                }
                destroy() {
                    this._containerElement.remove(), this._waitForTickersCancelable.cancel(), f.off("changeDevice", this._onDeviceChanged), this._cancelDebouncedResize(), document.removeEventListener("visibilitychange", this._onVisibilityStateChanged), this._headTickerItems.forEach((e => {
                        e.stop()
                    })), this._tailTickerItems.forEach((e => {
                        e.stop()
                    }))
                }
                _createTickerItemTape(e) {
                    const t = document.createElement(this._noLinks ? "span" : "a");
                    return new d(e, t, {
                        isEmbedWidget: this._isEmbedWidget,
                        showSymbolLogo: this._showSymbolLogo,
                        isCompactMode: this._isCompactMode.value()
                    })
                }
                _init() {
                    this._isCompactMode.subscribe(this._onCompactModeChanged, {
                        callWithLast: !0
                    }), this._ensureSufficientTailWidth(), this._displayMode === b.Adaptive && f.on("changeDevice", this._onDeviceChanged), this._cancelDebouncedResize = function(e) {
                        const t = (0, s.default)(e, 300);
                        return window.addEventListener("resize", t), () => {
                            t.cancel(), window.removeEventListener("resize", t)
                        }
                    }(this._ensureSufficientTailWidth), document.addEventListener("visibilitychange", this._onVisibilityStateChanged)
                }
                _updateTickerViews() {
                    const e = this._headTickerItems.length;
                    this._headTickerItems.forEach(((e, t) => {
                        e.resetWidth(), e.toggleCompactMode(this._isCompactMode.value());
                        const i = e.getWidth() + $;
                        e.setWidth(i), this._tickerItemWidths[t] = i
                    })), this._tailTickerItems.forEach(((t, i) => {
                        t.toggleCompactMode(this._isCompactMode.value()), t.setWidth(this._tickerItemWidths[i % e])
                    }))
                }
                _updateStyles() {
                    const e = this._styleElement.sheet;
                    if (!e || !this._speed) return;
                    const t = this._headElement.getBoundingClientRect().width,
                        i = "ticker-tape-scroll" + "--" + (0, y.randomHashN)(4);
                    for (; e.cssRules.length > 0;) e.deleteRule(0);
                    const s = [`@keyframes ${i} {\n\t\t\t\tfrom { transform: translateX(0); }\n\t\t\t\tto { transform: translateX(${(0,k.isRtl)()?"":"-"}${t}px); }\n\t\t\t}`, `.${M.tape} {\n\t\t\t\tanimation-duration: ${t/this._speed}s;\n\t\t\t\tanimation-name: ${i};\n\t\t\t}`];
                    for (let t = 0; t < s.length; t++) e.insertRule(s[t], t)
                }
            }({
                container: ie,
                symbols: Z,
                isTransparent: Q,
                showSymbolLogo: Y,
                displayMode: ee,
                noLinks: J,
                speed: 40,
                isEmbedWidget: !0
            });
            se.height.subscribe((function(e) {
                Q || (e += 2);
                U(R.Names.ResizeIframe, null, {
                    height: e
                })
            }), {
                callWithLast: !0
            }), se.onAllTickersFaulty.subscribe(null, (() => {
                U(R.Names.NoData, K, void 0)
            }), !0)
        },
        571690: (e, t, i) => {
            "use strict";
            i.d(t, {
                parseHtmlElement: () => n
            });
            const s = new WeakMap;

            function n(e, t) {
                const i = function(e, t) {
                        let i, n;
                        return i = null == t ? document.documentElement : 9 === t.nodeType ? t.documentElement : t, s && (n = s.get(i)), n || (n = i.ownerDocument.createRange(), n.selectNodeContents(i), s && s.set(i, n)), n.createContextualFragment(e)
                    }(e, t),
                    n = i.firstElementChild;
                return null !== n && i.removeChild(n), n
            }
        },
        663261: (e, t, i) => {
            "use strict";
            i.d(t, {
                handleTVLinksClick: () => r
            });
            var s = i(439563),
                n = i(185515),
                a = i(691239);

            function r() {
                document.addEventListener("click", (e => {
                    const t = e.target.closest(":link");
                    if (!(null == t ? void 0 : t.hostname) || !(0, a.isInternalHost)(t.hostname, "tradingview.com")) return;
                    const i = t.dataset.targetType || null;
                    ! function(e, t) {
                        const i = function() {
                                const e = window.initData.hashSettings;
                                if (Object.keys(e).length > 0) return (0, n.filterUtmInfo)(e);
                                const t = new URLSearchParams(location.href);
                                return {
                                    utm_campaign: t.get("utm_campaign") || void 0,
                                    utm_source: t.get("utm_source") || void 0
                                }
                            }(),
                            a = function(e) {
                                var t;
                                const i = (null === (t = location.ancestorOrigins) || void 0 === t ? void 0 : t[0]) || document.referrer;
                                return e.utm_source || function(e) {
                                    try {
                                        return new URL(e).host
                                    } catch (e) {
                                        return ""
                                    }
                                }(i)
                            }(i);
                        !async function(e) {
                            var t;
                            null === (t = await (0, s.getEmbedWidgetTracker)()) || void 0 === t || t.trackWidgetTVLinkClick(e)
                        }({
                            widget_type: o(i),
                            domain: a,
                            link: e,
                            target_type: t
                        })
                    }(t.href, i)
                }))
            }

            function o(e) {
                if (e.utm_campaign) return e.utm_campaign;
                const t = location.pathname;
                return t.includes("embed-widget") ? t.split("/")[2] : t
            }
        }
    },
    e => {
        e.O(0, [18562, 66949, 4015, 89842, 92483, 50293, 39855, 67103, 37124, 22304, 22854, 38348, 33658, 59040, 30128, 17529, 67467, 23448, 56189, 68208, 17990, 66029], (() => {
            return t = 930134, e(e.s = t);
            var t
        }));
        e.O()
    }
]);