SLOT GACOR # Platform Politica APK Situs Slot Gacor Resmi Gampang Menang Maxwin Hari Ini

hanya tersisa %1
SKU
52135545-AYO01
Serendah Rp 10.000
Use Installment Options from. Laarn more
Available for :
home delivery
store pickup

SLOT GACOR secara resmi meluncurkan pemutakhiran Platform Politica APK Situs Slot Gacor Resmi Gampang Menang Maxwin Hari Ini untuk menjawab tingginya kebutuhan pemain akan aksesibilitas yang cepat dan stabil. Melalui peluncuran aplikasi seluler resmi ini, seluruh pengguna dapat menikmati pengalaman bertaruh yang responsif langsung dari smartphone tanpa terkendala beban memori tinggi atau gangguan jaringan.

Di dalam ekosistem platform SLOT GACOR, seluruh mekanisme permainan disajikan secara transparan dan kompetitif melalui lisensi resmi. Setiap putaran dipastikan beroperasi menggunakan modul Random Number Generator RNG tersertifikasi demi menjamin keadilan fair play secara penuh. Pengguna juga dibekali pembaruan indikator RTP live faktual untuk membantu membaca pemicu gampang menang Maxwin hari ini secara presisi.

Sistem tata kelola finansial pada SLOT GACOR disempurnakan oleh otomatisasi transaksi digital berkecepatan tinggi yang dilindungi enkripsi siber berlapis. Pendaftaran user ID baru disajikan gratis 100% tanpa dipungut biaya tersembunyi. Saat babak bonus berhasil memicu hasil Maxwin, seluruh saldo penarikan withdraw diproses kilat dan ditransfer utuh ke rekening terdaftar tanpa ada potongan biaya apa pun.

DAFTAR
© Copyright SLOT GACOR. All Rights Reserved.
ildAnalyticsEvent: function (t) { return { payload: t.payload, type: t.type, url: e.getGlobalSetting("url.analyticsCollect", "https://stats.ksearchnet.com/analytics/"), apiKey: e.getObjectPath(t.eventSource, "apiKey", e.getGlobalSetting("search.apiKey", e.getGlobalSetting("global.apiKey"))), key: t.type + "_" + e.getObjectPath(t, "id", e.randomId()) } } }, product: { helpers: { buildAnalyticsEvent: function (t) { return { payload: t.payload, type: t.type, url: e.getGlobalSetting("url.analyticsCollect", "https://stats.ksearchnet.com/analytics/"), apiKey: e.getObjectPath(t.eventSource, "apiKey", e.getGlobalSetting("search.apiKey", e.getGlobalSetting("global.apiKey"))), key: t.type + "_" + t.itemId } } }, click: function (t) { let s = { type: "product_click", eventSource: t, payload: {}, itemId: 0 }, a = e.getObjectPath(t, "data.items.0", {}), n = e.getObjectPath(t, "data.meta.tags", []), i = { klevu_keywords: e.getObjectPath(t, "data.meta.searchedTerm", "*"), klevu_pageNumber: e.getObjectPath(t, "data.meta.pageNumber", ""), klevu_src: e.getObjectPath(t, "data.meta.src", ""), klevu_limit: e.getObjectPath(t, "data.meta.limit", ""), klevu_sort: e.getObjectPath(t, "data.meta.sort", ""), klevu_totalResults: e.getObjectPath(t, "data.meta.totalResults", "0"), klevu_typeOfQuery: e.getObjectPath(t, "data.meta.typeOfQuery", "WILDCARD_AND"), tags: n }; if (e.support.isActive("user")) { let t = e.user.getIpData(); e.isUndefined(t.ipv4) || (i.klevu_shopperIP_v4 = t.ipv4), e.isUndefined(t.ipv6) || (i.klevu_shopperIP_v6 = t.ipv6), e.isUndefined(t.uuid) || (i.klevu_uuid = t.uuid) } e.support.isActive("core.dataProtection") && (i.data_protection = e.dataProtection.dataCanBeTracked()), i.klevu_productId = e.getObjectPath(a, "id", 0), e.getObjectPath(a, "itemGroupId", !1) && (i.klevu_productGroupId = e.getObjectPath(a, "itemGroupId", !1)), i.klevu_productVariantId = e.getObjectPath(a, "variantId", !1), i.klevu_productName = e.getObjectPath(a, "name", !1), i.klevu_productUrl = e.getObjectPath(a, "url", !1), s.id = e.getObjectPath(a, "id", 0); let r, c = e.getObjectPath(t, "scope", "").split(","); e.each(c, (function (n, c) { switch (c) { case "quick": e.getObjectPath(t, "data.filters.activeFilters", !1) && (i.klevu_keywords += " [[" + e.getObjectPath(t, "data.filters.activeFiltersString", "") + "]]"), i.klevu_src = i.klevu_src.replace("]]", ";;template:quick-search]]"), s.payload = i, s.type = "search_product_click", r = e.analytics.processors.helpers.buildAnalyticsEvent(s), e.analytics.utility.addAnalyticsEventsToStorage(r); break; case "landing": i.klevu_src = "[[typeOfRecord:" + e.getObjectPath(a, "typeOfRecord", "KLEVU_PRODUCT") + ";;template:landing]]", e.getObjectPath(t, "data.filters.activeFilters", !1) && (i.klevu_keywords += " [[" + e.getObjectPath(t, "data.filters.activeFiltersString", "") + "]]", i.klevu_src = i.klevu_src.replace("]]", ";;source:filters]]")), s.payload = i, s.type = "search_product_click", r = e.analytics.processors.helpers.buildAnalyticsEvent(s), e.analytics.utility.addAnalyticsEventsToStorage(r); break; case "catnav": i.klevu_src = "[[typeOfRecord:" + e.getObjectPath(a, "typeOfRecord", "KLEVU_PRODUCT") + ";;template:" + e.getObjectPath(t, "data.meta.srcTemplateName", "category") + "]]", e.getObjectPath(t, "data.filters.activeFilters", !1) && (i.klevu_activeFilters = e.getObjectPath(t, "data.filters.activeFiltersString", ""), i.klevu_src = i.klevu_src.replace("]]", ";;source:filters]]")), i.klevu_categoryName = e.getObjectPath(t, "data.meta.categoryName", ""), i.klevu_categoryPath = e.getObjectPath(t, "data.meta.categoryPath", ""), i.klevu_abTestId = e.getObjectPath(t, "data.meta.abTestId", ""), i.klevu_abTestVariantId = e.getObjectPath(t, "data.meta.abTestVariantId", ""), i.klevu_abTestSource = e.getObjectPath(t, "data.meta.abTestSource", ""); let n = e.getObjectPath(t, "data.originalItems", []); if (n.length > 0) { let t = []; e.each(n, (function (e, s) { s.id && t.push(s.id) })), i.klevu_productIds = t.join(",") } i.klevu_productRatings = e.getObjectPath(a, "rating", 0), i.klevu_productPosition = e.getObjectPath(t, "data.meta.pageStartsFrom", 0), i.klevu_salePrice = e.getObjectPath(a, "salePrice", 0), i.klevu_productSku = e.getObjectPath(a, "sku", !1), delete i.klevu_keywords, s.payload = i, s.type = "catnav_product_click", r = e.analytics.processors.helpers.buildAnalyticsEvent(s), e.analytics.utility.addAnalyticsEventsToStorage(r) } })) }, personalisedClick: function (t) { let s = { type: "personalised_product_click", eventSource: t, payload: {}, itemId: 0 }, a = e.getObjectPath(t, "data.items.0", {}), n = { klevu_src: e.getObjectPath(t, "data.meta.src", ""), klevu_source: e.getObjectPath(t, "data.meta.source", ""), klevu_recentsearch: e.getObjectPath(t, "data.meta.recentsearch", "") }; n.klevu_productId = e.getObjectPath(a, "id", 0), e.getObjectPath(a, "itemGroupId", !1) && (n.klevu_productGroupId = e.getObjectPath(a, "itemGroupId", !1)), n.klevu_productVariantId = e.getObjectPath(a, "variantId", !1), n.klevu_productName = e.getObjectPath(a, "name", !1), n.klevu_productUrl = e.getObjectPath(a, "url", !1), n.klevu_rank = e.getObjectPath(t, "data.meta.rank", ""), s.id = e.getObjectPath(a, "id", 0); let i, r = e.getObjectPath(t, "scope", "").split(","); s.payload = n, s.type = "personalised_product_click", i = e.analytics.processors.helpers.buildAnalyticsEvent(s), e.analytics.utility.addAnalyticsEventsToStorage(i), e.each(r, (function (e, t) { t })) }, view: function (e) { }, buy: function (e) { } }, search: { term: function (t) { let s = { type: "search_term", eventSource: t, payload: {} }, a = e.getObjectPath(t, "data.meta.tags", []); e.each(a, (function (e, t) { a[e] = encodeURIComponent(t) })); let n = { klevu_term: e.getObjectPath(t, "data.meta.searchedTerm", "*"), klevu_originalTerm: e.getObjectPath(t, "data.meta.originalTerm", ""), klevu_pageNumber: e.getObjectPath(t, "data.meta.pageNumber", ""), klevu_src: e.getObjectPath(t, "data.meta.src", ""), klevu_limit: e.getObjectPath(t, "data.meta.limit", ""), klevu_sort: e.getObjectPath(t, "data.meta.sort", ""), klevu_totalResults: e.getObjectPath(t, "data.meta.totalResults", "0"), klevu_typeOfQuery: e.getObjectPath(t, "data.meta.typeOfQuery", "WILDCARD_AND"), tags: a }; if (e.support.isActive("user")) { let t = e.user.getIpData(); e.isUndefined(t.ipv4) || (n.klevu_shopperIP_v4 = t.ipv4), e.isUndefined(t.ipv6) || (n.klevu_shopperIP_v6 = t.ipv6), e.isUndefined(t.uuid) || (n.klevu_uuid = t.uuid) } e.support.isActive("core.dataProtection") && (n.data_protection = e.dataProtection.dataCanBeTracked()); let i = !1, r = e.getObjectPath(t, "scope", "").split(","); e.each(r, (function (s, a) { switch (a) { case "quick": i = !0, e.getObjectPath(t, "data.filters.activeFilters", !1) && (n.klevu_term += " [[" + e.getObjectPath(t, "data.filters.activeFiltersString", "") + "]]"), n.klevu_src = n.klevu_src.replace("]]", ";;template:quick-search]]"); break; case "landing": n.klevu_src = n.klevu_src.replace("]]", ";;template:landing]]"), e.getObjectPath(t, "data.filters.activeFilters", !1) && (n.klevu_term += " [[" + e.getObjectPath(t, "data.filters.activeFiltersString", "") + "]]", n.klevu_src = n.klevu_src.replace("]]", ";;source:filters]]")) } })), s.payload = n; let c = e.analytics.processors.helpers.buildAnalyticsEvent(s); e.analytics.utility.addAnalyticsEventsToStorage(c), e.analytics.utility.sendAnalyticsEventsFromStorage(), !e.isUndefined(e.analyticsUtil.base) && e.isFunction(e.analyticsUtil.base.sendGaDataForTerm) && i && !e.support.isActive("analytics.gtmProcessor") && e.analyticsUtil.base.sendGaDataForTerm(n) } }, catNav: { view: function (t) { let s = { type: "catnav_view", eventSource: t, payload: {} }, a = { klevu_categoryName: e.getObjectPath(t, "data.meta.categoryName", ""), klevu_categoryPath: e.getObjectPath(t, "data.meta.categoryPath", ""), klevu_pageNumber: e.getObjectPath(t, "data.meta.pageNumber", ""), klevu_src: e.getObjectPath(t, "data.meta.src", ""), klevu_limit: e.getObjectPath(t, "data.meta.limit", ""), klevu_sort: e.getObjectPath(t, "data.meta.sort", ""), klevu_totalResults: e.getObjectPath(t, "data.meta.totalResults", "0"), klevu_typeOfQuery: e.getObjectPath(t, "data.meta.typeOfQuery", "WILDCARD_AND") }; if (e.support.isActive("user")) { let t = e.user.getIpData(); e.isUndefined(t.ipv4) || (a.klevu_shopperIP_v4 = t.ipv4), e.isUndefined(t.ipv6) || (a.klevu_shopperIP_v6 = t.ipv6), e.isUndefined(t.uuid) || (a.klevu_uuid = t.uuid) } e.support.isActive("core.dataProtection") && (a.data_protection = e.dataProtection.dataCanBeTracked()); let n = e.getObjectPath(t, "data.items", []); if (n.length > 0) { let t = []; e.each(n, (function (e, s) { s.id && t.push(s.id) })), a.klevu_productIds = t.join(",") } let i = e.getObjectPath(t, "scope", "").split(","); e.each(i, (function (s, n) { if ("catnav" === n) a.klevu_src = a.klevu_src.replace("]]", ";;template:category]]"), e.getObjectPath(t, "data.filters.activeFilters", !1) && (a.klevu_activeFilters = e.getObjectPath(t, "data.filters.activeFiltersString", ""), a.klevu_src = a.klevu_src.replace("]]", ";;source:filters]]")), a.klevu_abTestId = e.getObjectPath(t, "data.meta.abTestId", ""), a.klevu_abTestVariantId = e.getObjectPath(t, "data.meta.abTestVariantId", ""), a.klevu_abTestSource = e.getObjectPath(t, "data.meta.abTestSource", "") })), s.payload = a; let r = e.analytics.processors.helpers.buildAnalyticsEvent(s); e.analytics.utility.addAnalyticsEventsToStorage(r), e.analytics.utility.sendAnalyticsEventsFromStorage() } }, recs: { helpers: { convertEventItems: function (t) { let s = []; return e.each(t, (function (t, a) { s.push({ item_id: a.id, item_name: a.name, price: a.salePrice, currency: a.currency, item_brand: a.brand, item_category: a.category, item_variant_id: e.isUndefined(a.variantId) ? a.id : a.variantId, item_group_id: e.isUndefined(a.itemGroupId) || "" === a.itemGroupId ? a.id : a.itemGroupId, index: t + 1, quantity: 1 }) })), s }, buildAnalyticsEventData: function (t, s) { return { tags: e.getObjectPath(t, "data.general.tags", []), list_id: e.getObjectPath(t, "data.general.list_id", !1), list_name: e.getObjectPath(t, "data.general.list_name", !1), list_logic: e.getObjectPath(t, "data.general.list_logic", !1), spot_id: e.getObjectPath(t, "data.general.spot_id", !1), spot_name: e.getObjectPath(t, "data.general.spot_name", !1), segment_id: e.getObjectPath(t, "data.general.segment_id", !1), segment_name: e.getObjectPath(t, "data.general.segment_name", !1), action: e.getObjectPath(t, "data.general.action", !1), items: s } }, buildAnalyticsEvent: function (t) { let s = { event: t.type, event_apikey: e.getObjectPath(t.eventSource, "apiKey", !1), user_profile: e.getObjectPath(t.eventSource, "user", {}), event_data: e.analytics.processors.recs.helpers.buildAnalyticsEventData(t.eventSource, t.items) }; if (e.support.isActive("user")) { let t = e.user.getIpData(); e.isUndefined(t.ipv4) || (s.user_profile.ip_address_v4 = t.ipv4), e.isUndefined(t.ipv6) || (s.user_profile.ip_address_v6 = t.ipv6), e.isUndefined(t.uuid) || (s.user_profile.klevu_uuid = t.uuid) } return e.support.isActive("core.dataProtection") && (s.user_profile.data_protection = e.dataProtection.dataCanBeTracked()), { payload: s, type: "collect", url: e.getGlobalSetting("url.analyticsCollect", "https://stats.ksearchnet.com/analytics/"), apiKey: e.getObjectPath(t.eventSource, "apiKey", e.getGlobalSetting("search.apiKey", e.getGlobalSetting("global.apiKey"))), key: t.type + "_" + e.getObjectPath(t.eventSource, "data.general.recs_key", e.randomId()), override: !0 } } }, click: function (t) { let s = { type: "select_recs_list", eventSource: t, items: [] }, a = e.getObjectPath(t, "data.items", []); if (a && a.length && (s.items = e.analytics.processors.recs.helpers.convertEventItems(a)), e.analytics.utility.hasAnalyticsEventByName(s.type + "_" + e.getObjectPath(t, "data.general.recs_key", e.randomId()))) { let a = e.analytics.utility.getAnalyticsEventByName(s.type + "_" + e.getObjectPath(t, "data.general.recs_key", e.randomId())), n = e.getObjectPath(a, "payload.items", []); n.length > 0 && (s.items = e.toUniqueArray(e.makeArray(n, s.items))) } let n = e.analytics.processors.recs.helpers.buildAnalyticsEvent(s); n.override = !0, s.items.length > 0 && e.analytics.utility.addAnalyticsEventsToStorage(n) }, view: function (t) { let s = { type: "view_recs_list", eventSource: t, items: [] }, a = e.getObjectPath(t, "data.items", []); a && a.length && (s.items = e.analytics.processors.recs.helpers.convertEventItems(a)); let n = e.analytics.processors.recs.helpers.buildAnalyticsEvent(s); s.items.length > 0 && e.analytics.utility.addAnalyticsEventsToStorage(n), s.items.length > 0 && e.analytics.utility.sendAnalyticsEventsFromStorage() }, staticView: function (t) { let s = { type: "view_recs_list", eventSource: t, static_content: [] }, a = e.analytics.processors.recs.helpers.buildAnalyticsEvent(s), n = e.getObjectPath(t, "data.activeStaticContent", []); a.payload.event_data.static_content = n, a.payload.event_data.static_content.length && (e.analytics.utility.addAnalyticsEventsToStorage(a), e.analytics.utility.sendAnalyticsEventsFromStorage()) }, staticClick: function (t) { let s = { type: "select_recs_list", eventSource: t, static_content: [] }, a = e.analytics.processors.recs.helpers.buildAnalyticsEvent(s); a.payload.event_data.static_content = e.getObjectPath(s, "eventSource.data.staticContent", []), e.analytics.utility.addAnalyticsEventsToStorage(a) } }, general: { bannerClick: function (e) { } } } }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["recommendation_view"], processor: e.analytics.processors.recs.view }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["recommendation_click"], processor: e.analytics.processors.recs.click }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["search_term"], processor: e.analytics.processors.search.term }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["search_catview"], processor: e.analytics.processors.catNav.view }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["search_product_click"], processor: e.analytics.processors.product.click }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["personalised_product_click"], processor: e.analytics.processors.product.personalisedClick }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["recommendation_view_static"], processor: e.analytics.processors.recs.staticView }), e.analytics.collector.registerObserver({ name: "analytics", processOld: !0, eventTypes: ["recommendation_click_static"], processor: e.analytics.processors.recs.staticClick }), e.support.register({ name: "analytics.processors", loaded: !0, active: !0, dependency: ["analytics.base", "analytics.collector", "analytics.extractor"] })) })) }(klevu), function (e) { e.support.hook(["core.constructors"], (function () { e.constructors.isLoaded("user") || (e.constructors.add({ name: "user", create: function () { let t = { settings: { dictionary: { user: e.dictionary("user") }, request: {}, response: {}, user: { apiKey: !1, ipv4: !1, ipv6: !1, sessionId: !1, sessionInfo: { connectorInfo: [] }, segmentInfo: { segments: [] }, ipv4: !1, ipv6: !1, uuid: !1 }, general: { scope: document.createElement("div"), apiKey: !1, lastSend: !1, ipDataLastSend: !1, connectorInfo: {}, flags: { canSend: !0, forceSend: !1, isInit: !1, isInitForce: !1, isInSend: !1 } } }, webhookSettings: { run: !0, object: "user", scope: "all" }, saveToDictionary: function () { this.settings.user.sessionId && this.settings.dictionary.user.addElement("sessionId", this.settings.user.sessionId); let t = e.extend(!0, {}, this.settings.user.sessionInfo); delete t.connectorInfo, this.settings.dictionary.user.addElement("sessionInfo", JSON.stringify(t)), this.settings.dictionary.user.addElement("connectorInfo", JSON.stringify(this.settings.general.connectorInfo)), this.settings.dictionary.user.addElement("segmentInfo", JSON.stringify(this.settings.user.segmentInfo)), this.settings.dictionary.user.addElement("segments", JSON.stringify(this.settings.user.segmentInfo.segments)), this.settings.dictionary.user.addElement("lastSend", JSON.stringify(this.settings.general.lastSend)), this.settings.dictionary.user.addElement("ipv4", JSON.stringify(this.settings.user.ipv4)), this.settings.dictionary.user.addElement("ipv6", JSON.stringify(this.settings.user.ipv6)), this.settings.dictionary.user.addElement("uuid", JSON.stringify(this.settings.user.uuid)), this.settings.dictionary.user.addElement("lastSendIp", this.settings.general.ipDataLastSend), this.settings.dictionary.user.mergeToGlobal() }, getAllSettings: function () { return this.settings }, getScope: function () { return this }, hasData: function (t) { return !!e.getObjectPath(this.settings, t, !1) }, getData: function (t, s) { return e.isUndefined(s) && (s = !1), e.getObjectPath(this.settings, t, s) }, setData: function (t, s) { return e.setObjectPath(this.settings, t, s), this.saveToDictionary(), this }, setApiKey: function (t) { e.setObjectPath(this.settings, "user.apiKey", t), e.setObjectPath(this.settings, "general.apiKey", t); let s = this.chains.init; return e.isUndefined(s) || 0 === s.list().length || (s.setScope(this), s.setData(this.settings), s.fire()), this }, getApiKey: function () { return this.settings.general.apiKey }, initIpData: function () { return this.isIpDataExpired() && this.refreshIpData(), this }, refreshIpData: function (s) { e.isUndefined(s) && (s = "ipv4"); let a = t, n = t.settings, i = e.extend(!0, {}, { klevu_uuid: a.getIpDataUser() }), r = { context: { type: s } }; return n.general.scope.userObject = a, r.scope = n.general.scope, r.context.requestObject = { url: e.getGlobalSetting("url." + s, "https://" + s + "check.ksearchnet.com/"), type: "FETCH", method: "POST", mimeType: "application/json; charset=UTF-8", contentType: "application/json; charset=utf-8", dataType: "json", crossDomain: !0, data: JSON.stringify(e.clean(i)), success: function () { let t, s, a, n; 1 === arguments.length ? (t = arguments[0].responseObj.data, s = arguments[0].requestDetails, a = arguments[0].status, n = arguments[0].isSuccess) : (t = arguments[0], s = arguments[1], a = arguments[2], n = arguments[3]), n && (e.isUndefined(t.ip_address) || s.scope.userObject.setData("user." + s.context.type, t.ip_address), e.isUndefined(t.klevu_uuid) || s.scope.userObject.setData("user.uuid", t.klevu_uuid)), s.scope.userObject.setData("general.ipDataLastSend", e.time.timestamp()), "ipv4" === s.context.type && s.scope.userObject.refreshIpData("ipv6") }, error: function () { let t, s, a; 1 === arguments.length ? (t = arguments[0].requestDetails, s = arguments[0].status, a = arguments[0].isSuccess) : (t = arguments[0], s = arguments[1], a = arguments[2]), t.scope.userObject.setData("general.ipDataLastSend", e.time.timestamp()), "ipv4" === t.context.type && t.scope.userObject.refreshIpData("ipv6") } }, r.context.requestDetails = e.extend(!0, {}, r), e.request(r.context.requestObject, r.context.requestDetails), this }, getIpData: function () { return { ipv4: this.settings.user.ipv4, ipv6: this.settings.user.ipv6, uuid: this.getIpDataUser() } }, getIpDataUser: function () { return this.settings.user.uuid }, isIpDataExpired: function () { let t = e.time.timestamp(); return !this.settings.general.ipDataLastSend || t - parseInt(this.settings.general.ipDataLastSend) > e.getGlobalSetting("user.ipDataRefresh", 3600) }, setWebhookSettings: function (t) { return e.event.webhook.helpers.setWebhookSettingsForScope(t, this), this }, getWebhookSettings: function () { return e.event.webhook.helpers.getWebhookSettingsForScope(this) }, addConnector: function (s, a) { let n = t.getData("general.connectorInfo." + s, !1), i = !1; n ? e.each(a, (function (t, s) { (e.isUndefined(n[t]) || n[t] != s) && (i = !0) })) : i = !0, t.setData("general.connectorInfo." + s, a), i && e.user.fetchSessionForce() }, getSegments: function () { let e = t.getData("user.segmentInfo.segments", []); return 0 !== e.length && e }, getSessionId: function () { return t.getData("user.sessionId", !1) }, fetchSession: function () { if (!t.getApiKey()) return void e.support.hook(["core.logger"], (function () { e.logger.log("user.core", "warn", "Request can not be made as apiKey is not set") })); if (!t.getData("general.canSend", !1)) return void e.support.hook(["core.logger"], (function () { e.logger.log("user.core", "warn", "Request can not be made as request is stopped") })); e.event.webhook.helpers.fireEventForScope({ webhookSettings: t.webhookSettings, name: "fetchSession", action: "before", data: t.getAllSettings(), scope: t }); let s = t.chains.request; e.isUndefined(s) || 0 === s.list().length || (s.setScope(t), s.setData(t.settings), s.fire()) }, fetchSessionForce: function () { return t.setData("general.flags.forceSend", !0), t.fetchSession() }, chains: e.constructors.get("user").chains }; e.event.webhook.helpers.fireEventForScope({ webhookSettings: t.webhookSettings, name: "mainObject", action: "beforeBuild", data: t.getAllSettings(), scope: t }); let s = t.chains.build; return e.isUndefined(s) || 0 === s.list().length || (s.setScope(t), s.setData(t.settings), s.fire()), e.event.webhook.helpers.fireEventForScope({ webhookSettings: t.webhookSettings, name: "mainObject", action: "afterBuild", data: t.getAllSettings(), scope: t }), t }, chains: { build: e.chain({ stopOnFalse: !0, webhook: { name: "chains.build" } }), init: e.chain({ stopOnFalse: !0, webhook: { name: "chains.init" } }), request: e.chain({ stopOnFalse: !0, webhook: { name: "chains.request" } }), response: e.chain({ stopOnFalse: !0, webhook: { name: "chains.receive" } }) } }), e.constructors.get("user").chains.init.add({ name: "validateReInit", fire: function (e, t) { if (!e.general.flags.isInitForce && e.general.flags.isInit) return !1 } }), e.constructors.get("user").chains.init.add({ name: "initDictionary", fire: function (t, s) { t.dictionary.user = e.dictionary("user_" + t.general.apiKey), t.dictionary.user.setDataProtection(!0), t.dictionary.user.setStorage("local"), t.dictionary.user.mergeFromGlobal() } }), e.constructors.get("user").chains.init.add({ name: "loadDictionaryData", fire: function (e, t) { e.user.sessionId = "sessionId" !== e.dictionary.user.getElement("sessionId") && e.dictionary.user.getElement("sessionId"), e.user.sessionInfo = "sessionInfo" !== e.dictionary.user.getElement("sessionInfo") ? JSON.parse(e.dictionary.user.getElement("sessionInfo")) : { connectorInfo: [] }, e.general.connectorInfo = "connectorInfo" !== e.dictionary.user.getElement("connectorInfo") ? JSON.parse(e.dictionary.user.getElement("connectorInfo")) : {}, e.user.segmentInfo.segments = "segments" !== e.dictionary.user.getElement("segments") ? JSON.parse(e.dictionary.user.getElement("segments")) : [], e.user.segmentInfo = "segmentInfo" !== e.dictionary.user.getElement("segmentInfo") ? JSON.parse(e.dictionary.user.getElement("segmentInfo")) : { segments: e.user.segmentInfo.segments }, e.general.lastSend = "lastSend" !== e.dictionary.user.getElement("lastSend") ? parseInt(e.dictionary.user.getElement("lastSend")) : 0, e.user.ipv4 = "ipv4" !== e.dictionary.user.getElement("ipv4") && JSON.parse(e.dictionary.user.getElement("ipv4")), e.user.ipv6 = "ipv6" !== e.dictionary.user.getElement("ipv6") && JSON.parse(e.dictionary.user.getElement("ipv6")), e.user.uuid = "uuid" !== e.dictionary.user.getElement("uuid") && JSON.parse(e.dictionary.user.getElement("uuid")), e.general.ipDataLastSend = "lastSendIp" !== e.dictionary.user.getElement("lastSendIp") ? parseInt(e.dictionary.user.getElement("lastSendIp")) : 0 } }), e.constructors.get("user").chains.init.add({ name: "checkDataProtection", fire: function (t, s) { e.dataProtection.dataCanBeTracked() ? s.setData("general.canSend", !0) : (e.support.hook(["core.logger"], (function () { e.logger.log("user.core", "warn", "Data protection enforced , can not read data, setting the request to be stopped") })), s.setData("general.canSend", !1)) } }), e.constructors.get("user").chains.init.add({ name: "setInitState", fire: function (e, t) { e.general.flags.isInit = !0 } }), e.constructors.get("user").chains.init.add({ name: "fetchSession", fire: function (e, t) { t.fetchSession() } }), e.constructors.get("user").chains.init.add({ name: "fetchIpData", fire: function (e, t) { t.initIpData() } }), e.constructors.get("user").chains.request.add({ name: "checkIfOutOfTimeout", fire: function (t, s) { if (e.time.timestamp() - parseInt(t.general.lastSend) < e.getGlobalSetting("user.sessionRefresh", 300) && !t.general.flags.forceSend) return e.support.hook(["core.logger"], (function () { e.logger.log("user.core", "info", "Request is still valid") })), !1 } }), e.constructors.get("user").chains.request.add({ name: "validateIfOnlyOneSend", fire: function (t, s) { if (t.general.flags.isInSend) return setTimeout(e.user.fetchSession, 1e3), !1; t.general.flags.isInSend = !0 } }), e.constructors.get("user").chains.request.add({ name: "moveConnectorInfo", fire: function (t, s) { t.user.sessionInfo.connectorInfo = [], e.each(t.general.connectorInfo, (function (e, s) { t.user.sessionInfo.connectorInfo.push(s) })) } }), e.constructors.get("user").chains.request.add({ name: "resetData", fire: function (e, t) { e.request = { context: { forceSend: t.settings.general.flags.forceSend } }, window.fetch ? e.request.method = "FETCH" : e.request.method = "AJAX", e.general.scope.userObject = t, e.request.scope = e.general.scope } }), e.constructors.get("user").chains.request.add({ name: "buildPayload", fire: function (t, s) { let a = e.extend(!0, {}, t.user); e.setObjectPath(a, "segmentInfo", {}), t.request.context.requestObject = { url: e.getGlobalSetting("url.userSession", "https://visitor.service.ksearchnet.com/public/1.0/") + t.general.apiKey + "/session", type: t.request.method, method: "POST", mimeType: "application/json; charset=UTF-8", contentType: "application/json; charset=utf-8", dataType: "json", crossDomain: !0, data: JSON.stringify(e.clean(a)), success: function () { let t, s, a, n; 1 === arguments.length ? (t = arguments[0].responseObj.data, s = arguments[0].requestDetails, a = arguments[0].status, n = arguments[0].isSuccess) : (t = arguments[0], s = arguments[1], a = arguments[2], n = arguments[3]); var i = e.getObjectPath(s.scope.userObject, "chains.response"); e.isUndefined(i) || 0 === i.list().length || (i.setScope(s.scope.userObject), e.setObjectPath(s, "response.data", t), e.setObjectPath(s, "context.status", a), e.setObjectPath(s, "context.isSuccess", n), i.setData(s), i.fire()) }, error: function () { let t, s, a; 1 === arguments.length ? (t = arguments[0].requestDetails, s = arguments[0].status, a = arguments[0].isSuccess) : (t = arguments[0], s = arguments[1], a = arguments[2]); var n = e.getObjectPath(t.scope.userObject, "chains.response"); e.isUndefined(n) || 0 === n.list().length || (n.setScope(t.scope.userObject), e.setObjectPath(t, "response.data", {}), e.setObjectPath(t, "context.status", s), e.setObjectPath(t, "context.isSuccess", a), n.setData(t), n.fire()) } }, t.request.context.requestDetails = e.extend(!0, {}, t.request) } }), e.constructors.get("user").chains.request.add({ name: "makeRequest", fire: function (t, s) { e.request(t.request.context.requestObject, t.request.context.requestDetails) } }), e.constructors.get("user").chains.response.add({ name: "checkResponseCode", fire: function (e, t) { if (!e.context.isSuccess) return t.settings.general.flags.isInSend = !1, !1 } }), e.constructors.get("user").chains.response.add({ name: "saveReturnData", fire: function (t, s) { e.isUndefined(t.response.data.sessionId) || (s.setData("user.sessionId", t.response.data.sessionId), e.isUndefined(t.response.data.segmentInfo) || s.setData("user.segmentInfo", t.response.data.segmentInfo), e.isUndefined(t.response.data.segmentInfo) || e.isUndefined(t.response.data.segmentInfo.ttl) ? s.setData("general.lastSend", e.time.timestamp()) : s.setData("general.lastSend", e.time.timestamp() - e.getGlobalSetting("user.sessionRefresh", 300) + parseInt(t.response.data.segmentInfo.ttl))) } }), e.constructors.get("user").chains.response.add({ name: "saveToDictionary", fire: function (e, t) { t.saveToDictionary() } }), e.constructors.get("user").chains.response.add({ name: "markAsComplete", fire: function (e, t) { t.settings.general.flags.isInSend = !1, e.context.forceSend && (t.settings.general.flags.forceSend = !1) } }), e.constructors.get("user").chains.response.add({ name: "sendWebhookAfterSessionCall", fire: function (t, s) { e.event.webhook.helpers.fireEventForScope({ webhookSettings: s.webhookSettings, name: "fetchSession", action: "after", data: s.getAllSettings(), scope: s }) } })) })), e.support.hook(["user"], (function () { e.settings.chains.initChain.add({ name: "userSession", fire: function (t, s) { var a = e.getGlobalSetting("search.apiKey", e.getGlobalSetting("recs.apiKey", e.getGlobalSetting("global.apiKey"))), n = e.dataProtection.dataCanBeTracked(); if (!e.isUndefined(a) && n) { var i = e.getGlobalSetting("powerUp.userSession"); if (!e.isUndefined(i) && !1 === i) return; if (e.getObjectPath(t, "flags.userSession.build", !1)) return; e.setObjectPath(t, "flags.userSession.build", !0), e.user.setApiKey(a) } } }) })), e.support.isActive("user") || (e.extend({ user: e.constructors.construct("user") }), e.support.register({ name: "user", loaded: !0, active: !0, dependency: ["core.lib"] })) }(klevu);