(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [67467], {
        678800: e => {
            e.exports = {}
        },
        167175: (e, t, o) => {
            "use strict";
            o.d(t, {
                isAndroid: () => h,
                isAnyMobile: () => v,
                isBlackBerry: () => m,
                isChrome: () => s,
                isEdge: () => c,
                isFF: () => l,
                isIOS: () => w,
                isIPad: () => y,
                isLinux: () => p,
                isMac: () => g,
                isOperaMini: () => f,
                isSafari: () => d,
                isWindows: () => u,
                mobiletouch: () => a,
                touch: () => r
            });
            const n = "undefined" != typeof window && "undefined" != typeof navigator,
                i = n && "ontouchstart" in window,
                a = n && i && "onorientationchange" in window,
                r = n && (i || !!navigator.maxTouchPoints),
                s = n && window.chrome && window.chrome.runtime,
                l = n && window.navigator.userAgent.toLowerCase().indexOf("firefox") > -1,
                c = n && /\sEdge\/\d\d\b/.test(navigator.userAgent),
                d = n && Boolean(navigator.vendor) && navigator.vendor.indexOf("Apple") > -1 && -1 === navigator.userAgent.indexOf("CriOS") && -1 === navigator.userAgent.indexOf("FxiOS"),
                g = n && /mac/i.test(navigator.platform),
                u = n && /Win32|Win64/i.test(navigator.platform),
                p = n && /Linux/i.test(navigator.platform),
                h = n && /Android/i.test(navigator.userAgent),
                m = n && /BlackBerry/i.test(navigator.userAgent),
                w = n && /iPhone|iPad|iPod/.test(navigator.platform),
                f = n && /Opera Mini/i.test(navigator.userAgent),
                y = n && ("MacIntel" === navigator.platform && navigator.maxTouchPoints > 1 || /iPad/.test(navigator.platform)),
                v = h || m || w || f
        },
        23580: (e, t, o) => {
            "use strict";
            async function n(e, t, n, i) {
                if ("lentaru" === e) {
                    const {
                        getLentaCopyrightData: e
                    } = await Promise.all([o.e(97171), o.e(1523)]).then(o.bind(o, 466672));
                    return e()
                }
                if ("cmoneycomtw" === e) {
                    const {
                        getCmoneycomtwCopyrightData: e
                    } = await Promise.all([o.e(51879), o.e(95933), o.e(42091)]).then(o.bind(o, 20922));
                    return e(t, n)
                }
                if ("new" === i) {
                    const {
                        getTradingViewCopyrightData: e
                    } = await Promise.all([o.e(7368), o.e(36228)]).then(o.bind(o, 703094));
                    return e(t, n)
                }
                if ("with_border" === i) {
                    const {
                        getTradingViewCopyrightData: e
                    } = await Promise.all([o.e(44949), o.e(37753)]).then(o.bind(o, 513316));
                    return e(t, n)
                } {
                    const {
                        getTradingViewCopyrightData: e
                    } = await Promise.all([o.e(51879), o.e(53259)]).then(o.bind(o, 88136));
                    return e(t, n)
                }
            }
            o.d(t, {
                getCustomerCopyrightData: () => n
            })
        },
        175341: (e, t, o) => {
            "use strict";
            o.d(t, {
                createEmbedWidgetWrapper: () => r
            });
            var n = o(650151),
                i = o(351079),
                a = o(23580);

            function r(e, t, o = {}) {
                if (null === e.parentElement) return console.warn("Can not wrap 'elWidgetContainer' because it has no parentElement"), e;
                let r = null,
                    s = document.querySelector(".js-embed-widget-body");
                const l = null !== s;
                if (l) {
                    s = (0, n.ensureNotNull)(s), r = (0, n.ensureNotNull)(s.parentElement);
                    let e = document.querySelector(".js-embed-widget-head");
                    null === e && (e = document.createElement("div"), e.classList.add("tv-embed-widget-wrapper__header"), e.classList.add("js-embed-widget-head"), r.insertBefore(e, s))
                } else r = document.createElement("div"), r.classList.add("tv-embed-widget-wrapper"), r.innerHTML = '<div class="tv-embed-widget-wrapper__header js-embed-widget-head"></div><div class="tv-embed-widget-wrapper__body js-embed-widget-body"></div>', s = r.querySelector(".js-embed-widget-body");
                if (o.overflowAuto && s.classList.add("tv-embed-widget-wrapper__body--overflow_auto"),
                    o.showBorderOnTransparent && s.classList.add("tv-embed-widget-wrapper__body--border-on-transparent"), !o.isWhiteLabel) {
                    const e = !document.documentElement.classList.contains("is-transparent") || Boolean(o.showBorderOnTransparent);
                    (0, a.getCustomerCopyrightData)(o.customer, o.locale, t).then((t => {
                        (0, n.ensureNotNull)(s).appendChild((0, i.createCopyrightLabel)({
                            mode: "small_old",
                            snapToEdge: e,
                            ...o.copyrightOptions,
                            ...t,
                            isSheriffDisabled: o.isSheriffDisabled
                        }))
                    }))
                }
                return l || (e.parentElement.insertBefore(r, e), s.appendChild(e)), e
            }
        },
        901107: (e, t, o) => {
            "use strict";
            o.d(t, {
                createEmbedWidgetWrapper: () => n.createEmbedWidgetWrapper
            });
            o(678800);
            var n = o(175341)
        },
        43464: (e, t, o) => {
            "use strict";
            o.r(t), o.d(t, {
                bannerPrivacyPreferenceKey: () => h,
                checkCookiePolicy: () => b,
                checkCookiePolicyInLs: () => S,
                cookieBannerDelegate: () => y,
                cookieBannerDomain: () => u,
                initCookiesNotification: () => A,
                oldBannerKey: () => p,
                onAccept: () => k,
                removeOldCookieBannerKey: () => v,
                setCookiePolicy: () => _,
                showCookiesNotification: () => L
            });
            var n = o(49437),
                i = o(314802),
                a = (o(659863), o(268222)),
                r = o(220563),
                s = o(261030),
                l = o(634786),
                c = o(66974),
                d = o(16188);
            const g = window.location.hostname.split("."),
                u = (0, c.isLocal)() ? "" : "." + g.slice(1, g.length).join("."),
                p = "cookieBanner",
                h = (0, c.isProd)() ? "cookiePrivacyPreferenceBannerProduction" : "cookiePrivacyPreferenceBannerLocal",
                m = "accepted",
                w = "ignored",
                f = "notApplicable",
                y = (0, a.createDeferredPromise)();

            function v() {
                return n.TVLocalStorage.removeItem(p)
            }

            function b(e) {
                return d.get(e) === m || d.get(e) === f
            }

            function S(e) {
                return n.TVLocalStorage.getItem(e) === m || n.TVLocalStorage.getItem(e) === f
            }

            function k() {
                _(m)
            }

            function _(e) {
                d.set(h, e, 3653, "/", u)
            }
            let C = !1;
            async function L() {
                if (C) return;
                const {
                    setCookieStageStatus: e
                } = await Promise.all([o.e(76805), o.e(92191), o.e(32109), o.e(49205), o.e(56400), o.e(98899), o.e(3630), o.e(5919), o.e(59255), o.e(11933), o.e(13830), o.e(38869)]).then(o.bind(o, 625551));
                C = !0;
                const t = await Promise.all([o.e(76805), o.e(92191), o.e(32109), o.e(49205), o.e(56400), o.e(98899), o.e(3630), o.e(5919), o.e(59255), o.e(11933), o.e(13830), o.e(38869)]).then(o.bind(o, 718463));
                await t.showCookiesNotification() && (k(), (0, l.trackCookies)("click", "accept_all")), e(!0), C = !1
            }
            const P = ["/symbols"];
            async function A() {
                const e = document.querySelector(".js-main-page-promo-container"),
                    t = P.find((e => window.location.pathname.includes(e))),
                    {
                        setCookieStageStatus: n
                    } = await Promise.all([o.e(76805), o.e(92191), o.e(32109), o.e(49205), o.e(56400), o.e(98899), o.e(3630), o.e(5919), o.e(59255), o.e(11933), o.e(13830), o.e(38869)]).then(o.bind(o, 625551));
                if (b(h) || (0, i.isOnMobileAppPage)("any")) n(!0);
                else {
                    if (e || t || y.resolve(), t && window.addEventListener("scroll", (function e() {
                            window.scrollY >= .2 * document.documentElement.scrollHeight && (y.resolve(), window.removeEventListener("scroll", e))
                        })), d.get(h) === w) return s.cookieSettingsReady.resolve(), y.promise.then((() => L())); {
                        const e = await (0, r.userGeoInfo)();
                        if (e.is_in_european_union || (a = e.country_code, ["is", "li", "no", "gb"].includes(a))) return _(w), s.cookieSettingsReady.resolve(), y.promise.then((() => L()));
                        n(!0), _(f), (0, s.setCookieSetting)(s.CookieSettings.Analytics, !0), (0,
                            s.setCookieSetting)(s.CookieSettings.Advertising, !0)
                    }
                }
                var a;
                s.cookieSettingsReady.resolve()
            }
        },
        975420: (e, t, o) => {
            "use strict";
            o.d(t, {
                initGA: () => c
            });
            var n = o(251954),
                i = o(261030),
                a = o(588948),
                r = o(638456),
                s = o(691805);
            let l = !1;

            function c() {
                if (l) return;
                (0, a.updateInitData)();
                const e = (0, a.getInitData)();
                if (!e.gaId) return void(window.gtag = () => {});
                l = !0, (0, s.appendScript)(`https://www.googletagmanager.com/gtag/js?id=${(0,a.getInitData)().gaId}`), window.dataLayer = window.dataLayer || [], window.gtag = function() {
                    window.dataLayer.push(arguments)
                }, window.gtag("js", new Date);
                const t = {
                    anonymize_ip: !0
                };
                window.TVD && (t.app_name = "TVD", t.app_version = (0, r.desktopAppVersion)()), e.gaVars && window.gtag("set", e.gaVars), window.gtag("consent", "default", {
                    analytics_storage: (0, i.getCookieSetting)(i.CookieSettings.Analytics) ? "granted" : "denied"
                }), window.gtag("config", e.gaId, t), n.subscribe(i.cookieSettingsChangeEvent, ((e, t) => {
                    e === i.CookieSettings.Analytics && window.gtag("consent", "update", {
                        analytics_storage: t ? "granted" : "denied"
                    })
                }), null)
            }
        },
        49437: (e, t, o) => {
            "use strict";
            const {
                getLogger: n
            } = o(201089), i = n("TVLocalStorage");
            var a = function() {
                try {
                    this.isAvailable = !0, this.localStorage = window.localStorage, this.localStorage.setItem("tvlocalstorage.available", "true")
                } catch (e) {
                    delete this.isAvailable, delete this.localStorage
                }
                this._updateLength();
                try {
                    this._report()
                } catch (e) {}
            };
            a.prototype._report = function() {
                if (this.isAvailable) {
                    const e = 10,
                        t = [];
                    for (let e = 0; e < this.localStorage.length; e++) {
                        const o = this.key(e);
                        t.push({
                            key: o,
                            length: String(this.getItem(o)).length
                        })
                    }
                    t.sort(((e, t) => t.length - e.length));
                    const o = t.slice(0, e);
                    t.sort(((e, t) => t.key.length - e.key.length));
                    const n = t.slice(0, e);
                    i.logNormal(`Total amount of keys in Local Storage: ${this.length}`), i.logNormal(`Top ${e} keys with longest values: ${JSON.stringify(o)}`), i.logNormal(`Top ${e} longest key names: ${JSON.stringify(n)}`);
                    try {
                        navigator.storage.estimate().then((e => {
                            i.logNormal(`Storage estimate: ${JSON.stringify(e)}`)
                        }))
                    } catch (e) {}
                }
            }, a.prototype.length = 0, a.prototype.isAvailable = !1, a.prototype.localStorage = {
                "tvlocalstorage.available": "false"
            }, a.prototype._updateLength = function() {
                if (this.isAvailable) this.length = this.localStorage.length;
                else {
                    var e, t = 0;
                    for (e in this.localStorage) this.localStorage.hasOwnProperty(e) && t++;
                    this.length = t
                }
            }, a.prototype.key = function(e) {
                return this.isAvailable ? this.localStorage.key(e) : Object.keys(this.localStorage)[e]
            }, a.prototype.getItem = function(e) {
                return this.isAvailable ? this.localStorage.getItem(e) : void 0 === this.localStorage[e] ? null : this.localStorage[e]
            }, a.prototype.setItem = function(e, t) {
                this.isAvailable ? this.localStorage.setItem(e, t) : this.localStorage[e] = t, this._updateLength()
            }, a.prototype.removeItem = function(e) {
                this.isAvailable ? this.localStorage.removeItem(e) : delete this.localStorage[e], this._updateLength()
            }, a.prototype.clear = function() {
                this.isAvailable ? this.localStorage.clear() : this.localStorage = {}, this._updateLength()
            };
            var r = function(e) {
                this.storage = e
            };
            r.prototype.getItem = function(e) {
                return Promise.resolve(this.storage.getItem(e))
            }, r.prototype.setItem = function(e, t) {
                return Promise.resolve(this.storage.setItem(e, t))
            }, window.TVLocalStorage = new a, window.TVLocalStorageAsync = new r(window.TVLocalStorage), e.exports = {
                TVLocalStorage: window.TVLocalStorage,
                TVLocalStorageAsync: window.TVLocalStorageAsync
            }
        },
        314802: (e, t, o) => {
            "use strict";
            o.d(t, {
                isOnMobileAppPage: () => i
            });
            var n = o(16188);

            function i(e, t = !1) {
                const {
                    searchParams: o
                } = new URL(String(location));
                let i = "true" === o.get("mobileapp_new"),
                    a = "true" === o.get("mobileapp");
                if (!t) {
                    const e = n.get("tv_app") || "";
                    i || (i = ["android", "android_nps"].includes(e)), a || (a = "ios" === e)
                }
                return !("new" !== e && "any" !== e || !i) || !("new" === e || !a)
            }
        },
        659863: (e, t, o) => {
            "use strict";
            new class {
                constructor(e, t) {
                    this._test = e[t] = {}
                }
                provide(e, t) {
                    this._test[e] = t
                }
            }(window, "qaGlobals")
        },
        439563: (e, t, o) => {
            "use strict";
            async function n() {
                const e = (await Promise.all([o.e(70056), o.e(36683)]).then(o.bind(o, 449946))).getTrackerInstance();
                return e || null
            }
            o.d(t, {
                getEmbedWidgetTracker: () => n
            })
        },
        995683: (e, t, o) => {
            "use strict";

            function n(e, t, o = {}) {
                return Object.assign({}, e, function(e, t, o = {}) {
                    const n = Object.assign({}, t);
                    for (const i of Object.keys(t)) {
                        const a = o[i] || i;
                        a in e && (n[i] = [e[a], t[i]].join(" "))
                    }
                    return n
                }(e, t, o))
            }
            o.d(t, {
                mergeThemes: () => n
            })
        },
        707957: (e, t, o) => {
            "use strict";
            e = o.nmd(e);
            const n = o(201089).getLogger("Common.Delegate");

            function i() {
                this._listeners = []
            }

            function a(e) {
                return !e.singleshot
            }
            i.prototype.subscribe = function(e, t, o) {
                const n = {
                    object: e,
                    member: t,
                    singleshot: !!o,
                    skip: !1
                };
                this._listeners.push(n)
            }, i.prototype.unsubscribe = function(e, t) {
                for (let o = 0; o < this._listeners.length; ++o) {
                    const n = this._listeners[o];
                    if (n.object === e && n.member === t) {
                        n.skip = !0, this._listeners.splice(o, 1);
                        break
                    }
                }
            }, i.prototype.unsubscribeAll = function(e) {
                for (let t = this._listeners.length - 1; t >= 0; --t) {
                    const o = this._listeners[t];
                    o.object === e && (o.skip = !0, this._listeners.splice(t, 1))
                }
            }, i.prototype.destroy = function() {
                delete this._listeners
            }, i.prototype.fire = function() {
                const e = this._listeners;
                this._listeners = this._listeners.filter(a);
                const t = e.length;
                for (let o = 0; o < t; ++o) {
                    const t = e[o];
                    if (!t.skip) try {
                        t.member.apply(t.object || null, arguments)
                    } catch (e) {
                        n.logError(e.stack || e.message)
                    }
                }
            }, "undefined" != typeof window && (window.Delegate = i), e && e.exports && (e.exports = i)
        },
        318293: (e, t, o) => {
            o(778785).setClasses();
            var n = o(49336).whenDocumentReady,
                i = o(975420).initGA,
                a = o(663261).handleTVLinksClick;
            n((() => {
                i(), a()
            }))
        },
        220563: (e, t, o) => {
            "use strict";
            o.d(t, {
                userGeoInfo: () => r
            });
            var n = o(120780);
            const i = (0, o(201089).getLogger)("User.GeoInfo");
            let a;

            function r() {
                if (void 0 !== a) return a;
                return a = (0, n.fetch)("/check_language/", {
                    method: "POST"
                }).then((e => {
                    if (e.ok) return e.json();
                    throw new Error(e.statusText)
                })).catch((e => (i.logWarn(e.message), {}))), a
            }
        },
        919476: (e, t, o) => {
            "use strict";
            o.d(t, {
                htmlEscape: () => a
            });
            const n = /[<"'&>]/g,
                i = e => `&#${e.charCodeAt(0)};`;

            function a(e) {
                return e.replace(n, i)
            }
        },
        501437: (e, t, o) => {
            "use strict";

            function n(e) {
                const t = [];
                for (const o in e) e.hasOwnProperty(o) && null != e[o] && t.push({
                    key: o,
                    pair: encodeURIComponent(o) + "=" + encodeURIComponent(e[o])
                });
                return t.sort(((e, t) => e.key > t.key ? 1 : e.key < t.key ? -1 : 0)).map((e => e.pair)).join("&")
            }
            o.d(t, {
                createUrlParams: () => n
            })
        },
        185515: (e, t, o) => {
            "use strict";
            o.d(t, {
                buildUtmQueryString: () => s,
                filterUtmInfo: () => r
            });
            var n = o(501437),
                i = o(919476);
            const a = ["utm_source", "utm_medium", "utm_campaign"];

            function r(e) {
                const t = {};
                return a.forEach((o => {
                    const n = e[o];
                    "string" == typeof n && "" !== n && (t[o] = (0, i.htmlEscape)(n))
                })), t
            }

            function s(e, t = !1) {
                const o = (0, n.createUrlParams)(e);
                return o && t ? "?" + o : o
            }
        },
        49336: (e, t, o) => {
            "use strict";

            function n(e, t = !1) {
                "loading" !== document.readyState ? t ? setTimeout((() => e()), 1) : e() : document.addEventListener("DOMContentLoaded", (() => e()))
            }
            o.d(t, {
                whenDocumentReady: () => n
            });
            new Promise((e => {
                n(e)
            }))
        }
    }
]);