From 01b5e36c331ae3955f4347ce30e017898e8a3c0b Mon Sep 17 00:00:00 2001 From: Duc Phi Viet Date: Sun, 29 Mar 2026 22:48:45 +0200 Subject: [PATCH 1/4] wip --- android/build.gradle | 1 + android/libs/omsdk-android-1.6.3.aar | Bin 0 -> 104656 bytes .../sdk/flutter/KontextInAppWebView.kt | 190 +++++++++++++++++- .../kontext/sdk/flutter/KontextSdkPlugin.kt | 4 + .../kontext/sdk/flutter/omsdk/OMConstants.kt | 9 + .../so/kontext/sdk/flutter/omsdk/OMManager.kt | 96 +++++++++ .../sdk/flutter/omsdk/OMRetentionPool.kt | 21 ++ .../kontext/sdk/flutter/omsdk/OMSDKPlugin.kt | 28 +++ .../so/kontext/sdk/flutter/omsdk/OMSession.kt | 54 +++++ android/src/main/res/raw/omsdk_v1.js | 99 +++++++++ lib/src/services/omsdk_service.dart | 2 +- lib/src/widgets/ads_provider.dart | 4 +- 12 files changed, 499 insertions(+), 9 deletions(-) create mode 100644 android/libs/omsdk-android-1.6.3.aar create mode 100644 android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMConstants.kt create mode 100644 android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMManager.kt create mode 100644 android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMRetentionPool.kt create mode 100644 android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSDKPlugin.kt create mode 100644 android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSession.kt create mode 100644 android/src/main/res/raw/omsdk_v1.js diff --git a/android/build.gradle b/android/build.gradle index 05e0d2d1..873a9e13 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -27,4 +27,5 @@ android { dependencies { implementation "androidx.webkit:webkit:1.8.0" implementation "com.google.android.gms:play-services-ads-identifier:18.0.1" + implementation files("libs/omsdk-android-1.6.3.aar") } diff --git a/android/libs/omsdk-android-1.6.3.aar b/android/libs/omsdk-android-1.6.3.aar new file mode 100644 index 0000000000000000000000000000000000000000..39d1be3cd96a5194a2afa9d80ba83575e1c5bb74 GIT binary patch literal 104656 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

IRxPYD5PFtr2Gsv@y7; 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 literal 0 HcmV?d00001 diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/KontextInAppWebView.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/KontextInAppWebView.kt index 15ea39f4..80ca29a9 100644 --- a/android/src/main/kotlin/so/kontext/sdk/flutter/KontextInAppWebView.kt +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/KontextInAppWebView.kt @@ -6,6 +6,7 @@ import android.graphics.Color import android.os.Build import android.os.Handler import android.os.Looper +import android.util.Log import android.view.View import android.view.ViewGroup import android.webkit.CookieManager @@ -24,6 +25,12 @@ import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.platform.PlatformView +import so.kontext.sdk.flutter.omsdk.OMConstants +import so.kontext.sdk.flutter.omsdk.OMCreativeType +import so.kontext.sdk.flutter.omsdk.OMManager +import so.kontext.sdk.flutter.omsdk.OMRetentionPool +import so.kontext.sdk.flutter.omsdk.OMSession + private const val CHANNEL_PREFIX = "kontext_flutter_sdk/in_app_webview/" private const val JAVASCRIPT_BRIDGE_NAME = "flutter_inappwebview" private const val MAX_BYPASS_MAIN_FRAME_LOADS = 100 @@ -53,10 +60,22 @@ internal class KontextInAppWebView( private val initialUrl = readInitialUrl(creationParams) private val settings = readSettings(creationParams) private val initialUserScripts = readUserScripts(creationParams) - private var hasLoadedInitialUrl = false - - private val bypassMainFrameLoads = linkedSetOf() private val documentStartSupported = WebViewFeature.isFeatureSupported(WebViewFeature.DOCUMENT_START_SCRIPT) + private val openMeasurementJavascript = if (documentStartSupported) { + loadOpenMeasurementJavaScript(context) + } else { + null + } + private val bypassMainFrameLoads = linkedSetOf() + + private var activeOMSession: OMSession? = null + private var hasDeferredDestroy = false + private var hasLoadedInitialUrl = false + private var hasLoadedPage = false + private var hasLoggedUnsupportedOpenMeasurement = false + private var lastContentUrl: String? = initialUrl + private var omCreativeType = readInitialOmCreativeType(creationParams) + private var pendingOpenMeasurementStart = false private val bridgeScript = """ (function() { @@ -124,15 +143,22 @@ internal class KontextInAppWebView( init { channel.setMethodCallHandler(this) configureWebView() + if (omCreativeType != null && !canUseOpenMeasurement()) { + maybeLogUnsupportedOpenMeasurement() + omCreativeType = null + } } override fun getView(): View = webView override fun dispose() { + val retainedForDeferredDestroy = finishOpenMeasurementSession() channel.setMethodCallHandler(null) - webView.stopLoading() webView.removeJavascriptInterface(JAVASCRIPT_BRIDGE_NAME) - webView.destroy() + if (!retainedForDeferredDestroy) { + webView.stopLoading() + webView.destroy() + } } override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { @@ -155,6 +181,33 @@ internal class KontextInAppWebView( result.success(null) } } + "configureOpenMeasurement" -> { + mainHandler.post { + configureOpenMeasurement(call.argument("creativeType")) + result.success(null) + } + } + "startOpenMeasurementSession" -> { + mainHandler.post { + startOpenMeasurementSession() + result.success(null) + } + } + "logOpenMeasurementError" -> { + mainHandler.post { + logOpenMeasurementError( + errorType = call.argument("errorType"), + message = call.argument("message"), + ) + result.success(null) + } + } + "finishOpenMeasurementSession" -> { + mainHandler.post { + finishOpenMeasurementSession() + result.success(null) + } + } else -> result.notImplemented() } } @@ -192,6 +245,7 @@ internal class KontextInAppWebView( } if (documentStartSupported) { + openMeasurementJavascript?.let(::addDocumentStartScript) addDocumentStartScript(bridgeScript) // To avoid Android WebView loader for videos, inject JS code with 1x1 transparent pixel. addDocumentStartScript(posterStartScript) @@ -260,6 +314,8 @@ internal class KontextInAppWebView( override fun onPageStarted(view: WebView, url: String?, favicon: android.graphics.Bitmap?) { super.onPageStarted(view, url, favicon) + hasLoadedPage = false + lastContentUrl = url ?: initialUrl if (!documentStartSupported) { // Older WebView versions do not support document-start scripts, so this // fallback injects asynchronously and may still lose the race to early @@ -276,7 +332,10 @@ internal class KontextInAppWebView( initialUserScripts .filter { it.injectionTime == "AT_DOCUMENT_END" } .forEach { evaluateJavascript(it.source) } + hasLoadedPage = true + lastContentUrl = url ?: initialUrl evaluateJavascript(PLATFORM_READY_SCRIPT) + startOpenMeasurementSessionIfReady() } override fun onReceivedError( @@ -337,11 +396,100 @@ internal class KontextInAppWebView( } } + private fun configureOpenMeasurement(creativeType: String?) { + val parsedCreativeType = OMCreativeType.fromRawValue(creativeType) + if (parsedCreativeType != null && !canUseOpenMeasurement()) { + maybeLogUnsupportedOpenMeasurement() + omCreativeType = null + return + } + + omCreativeType = parsedCreativeType + startOpenMeasurementSessionIfReady() + } + + private fun startOpenMeasurementSession() { + if (!canUseOpenMeasurement()) { + if (omCreativeType != null) { + maybeLogUnsupportedOpenMeasurement() + } + return + } + + pendingOpenMeasurementStart = true + startOpenMeasurementSessionIfReady() + } + + private fun startOpenMeasurementSessionIfReady() { + if (activeOMSession != null || hasDeferredDestroy) { + return + } + + if (!pendingOpenMeasurementStart) { + return + } + + val omCreativeType = omCreativeType ?: return + if (!hasLoadedPage) { + return + } + + if (!canUseOpenMeasurement()) { + maybeLogUnsupportedOpenMeasurement() + pendingOpenMeasurementStart = false + return + } + + if (!OMManager.activate(webView.context)) { + return + } + + val session = OMManager.createSession( + webView = webView, + contentUrl = lastContentUrl ?: webView.url?.toString() ?: initialUrl, + creativeType = omCreativeType, + ) ?: run { + pendingOpenMeasurementStart = false + return + } + + try { + session.start() + activeOMSession = session + pendingOpenMeasurementStart = false + } catch (exception: IllegalStateException) { + Log.e(OMConstants.logTag, "OM session start failed", exception) + pendingOpenMeasurementStart = false + } + } + + private fun logOpenMeasurementError(errorType: String?, message: String?) { + activeOMSession?.logError(errorType = errorType, message = message) + } + + private fun finishOpenMeasurementSession(): Boolean { + pendingOpenMeasurementStart = false + + if (hasDeferredDestroy) { + return true + } + + val activeOMSession = activeOMSession ?: return false + this.activeOMSession = null + activeOMSession.retire() + activeOMSession.finish() + OMRetentionPool.retain(activeOMSession.retainedWebView()) + hasDeferredDestroy = true + return true + } + private fun loadInitialUrl() { if (hasLoadedInitialUrl) { return } hasLoadedInitialUrl = true + hasLoadedPage = false + lastContentUrl = initialUrl if (!initialUrl.isNullOrBlank()) { webView.loadUrl(initialUrl) } @@ -395,6 +543,23 @@ internal class KontextInAppWebView( """.trimIndent() } + private fun canUseOpenMeasurement(): Boolean = documentStartSupported && openMeasurementJavascript != null + + private fun maybeLogUnsupportedOpenMeasurement() { + if (hasLoggedUnsupportedOpenMeasurement) { + return + } + hasLoggedUnsupportedOpenMeasurement = true + Log.w( + OMConstants.logTag, + if (!documentStartSupported) { + "DOCUMENT_START_SCRIPT not supported, OM SDK disabled for this WebView" + } else { + "OM SDK JavaScript resource could not be loaded, OM SDK disabled for this WebView" + } + ) + } + private fun evaluateJavascript(source: String) { webView.evaluateJavascript(source, null) } @@ -464,6 +629,10 @@ private data class AndroidUserScript( val injectionTime: String, ) +private fun readInitialOmCreativeType(creationParams: Map?): OMCreativeType? { + return OMCreativeType.fromRawValue(creationParams?.get("initialOmCreativeType") as? String) +} + private fun readInitialUrl(creationParams: Map?): String? { val initialRequest = creationParams?.get("initialUrlRequest") as? Map<*, *> return initialRequest?.get("url") as? String @@ -494,6 +663,17 @@ private fun readUserScripts(creationParams: Map?): List "ERROR" diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/KontextSdkPlugin.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/KontextSdkPlugin.kt index e83ad008..b32bd180 100644 --- a/android/src/main/kotlin/so/kontext/sdk/flutter/KontextSdkPlugin.kt +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/KontextSdkPlugin.kt @@ -1,6 +1,7 @@ package so.kontext.sdk.flutter import io.flutter.embedding.engine.plugins.FlutterPlugin +import so.kontext.sdk.flutter.omsdk.OMSDKPlugin class KontextSdkPlugin : FlutterPlugin { private val advertisingId = AdvertisingIdPlugin() @@ -10,6 +11,7 @@ class KontextSdkPlugin : FlutterPlugin { private val inAppWebView = KontextInAppWebViewPlugin() private val network = DeviceNetworkPlugin() private val os = OperationSystemPlugin() + private val omsdk = OMSDKPlugin() private val power = DevicePowerPlugin() private val tcf = TransparencyConsentFramework() @@ -21,6 +23,7 @@ class KontextSdkPlugin : FlutterPlugin { inAppWebView.onAttachedToEngine(binding) network.onAttachedToEngine(binding) os.onAttachedToEngine(binding) + omsdk.onAttachedToEngine(binding) power.onAttachedToEngine(binding) tcf.onAttachedToEngine(binding) } @@ -32,6 +35,7 @@ class KontextSdkPlugin : FlutterPlugin { hardware.onDetachedFromEngine(binding) network.onDetachedFromEngine(binding) os.onDetachedFromEngine(binding) + omsdk.onDetachedFromEngine(binding) power.onDetachedFromEngine(binding) tcf.onDetachedFromEngine(binding) } diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMConstants.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMConstants.kt new file mode 100644 index 00000000..c38d80c3 --- /dev/null +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMConstants.kt @@ -0,0 +1,9 @@ +package so.kontext.sdk.flutter.omsdk + +internal object OMConstants { + const val channelName = "kontext_flutter_sdk/omsdk" + const val integrationVersion = "1.0.0" + const val logTag = "Kontext SDK" + const val partnerName = "Megabrainco" + const val retentionIntervalMillis = 1000L +} diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMManager.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMManager.kt new file mode 100644 index 00000000..1d2c206a --- /dev/null +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMManager.kt @@ -0,0 +1,96 @@ +package so.kontext.sdk.flutter.omsdk + +import android.content.Context +import android.util.Log +import android.webkit.WebView +import com.iab.omid.library.megabrainco.Omid +import com.iab.omid.library.megabrainco.adsession.AdSession +import com.iab.omid.library.megabrainco.adsession.AdSessionConfiguration +import com.iab.omid.library.megabrainco.adsession.AdSessionContext +import com.iab.omid.library.megabrainco.adsession.CreativeType +import com.iab.omid.library.megabrainco.adsession.ImpressionType +import com.iab.omid.library.megabrainco.adsession.Owner +import com.iab.omid.library.megabrainco.adsession.Partner + +internal enum class OMCreativeType(val rawValue: String) { + DISPLAY("display"), + VIDEO("video"); + + companion object { + fun fromRawValue(value: String?): OMCreativeType? = values().firstOrNull { it.rawValue == value } + } +} + +internal object OMManager { + private val partner: Partner? by lazy { + try { + Partner.createPartner(OMConstants.partnerName, OMConstants.integrationVersion) + } catch (exception: IllegalArgumentException) { + Log.e(OMConstants.logTag, "OM partner creation failed", exception) + null + } + } + + fun activate(context: Context): Boolean { + if (Omid.isActive()) { + return true + } + + return try { + Omid.activate(context.applicationContext) + Omid.isActive() + } catch (exception: IllegalArgumentException) { + Log.e(OMConstants.logTag, "OM SDK activation failed", exception) + false + } catch (exception: IllegalStateException) { + Log.e(OMConstants.logTag, "OM SDK activation failed", exception) + false + } + } + + fun createSession( + webView: WebView, + contentUrl: String?, + creativeType: OMCreativeType, + ): OMSession? { + if (!Omid.isActive()) { + Log.w(OMConstants.logTag, "OM session creation skipped because the SDK is not active") + return null + } + + val partner = partner + if (partner == null) { + return null + } + + return try { + val context = AdSessionContext.createHtmlAdSessionContext( + partner, + webView, + contentUrl, + "", + ) + val (omCreativeType, mediaEventsOwner) = when (creativeType) { + OMCreativeType.DISPLAY -> CreativeType.HTML_DISPLAY to Owner.NONE + OMCreativeType.VIDEO -> CreativeType.VIDEO to Owner.JAVASCRIPT + } + val configuration = AdSessionConfiguration.createAdSessionConfiguration( + omCreativeType, + ImpressionType.BEGIN_TO_RENDER, + Owner.JAVASCRIPT, + mediaEventsOwner, + false, + ) + val session = AdSession.createAdSession(configuration, context).apply { + registerAdView(webView) + } + OMSession(session = session, webView = webView) + } catch (exception: IllegalArgumentException) { + Log.e(OMConstants.logTag, "OM session creation failed", exception) + null + } catch (exception: IllegalStateException) { + Log.e(OMConstants.logTag, "OM session creation failed", exception) + null + } + } +} diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMRetentionPool.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMRetentionPool.kt new file mode 100644 index 00000000..3fc0fd86 --- /dev/null +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMRetentionPool.kt @@ -0,0 +1,21 @@ +package so.kontext.sdk.flutter.omsdk + +import android.os.Handler +import android.os.Looper +import java.util.UUID + +internal object OMRetentionPool { + private val mainHandler = Handler(Looper.getMainLooper()) + private val retainedWebViews = mutableMapOf() + + fun retain(webView: OMRetainedWebView) { + val id = UUID.randomUUID().toString() + retainedWebViews[id] = webView + mainHandler.postDelayed( + { + retainedWebViews.remove(id)?.destroy() + }, + OMConstants.retentionIntervalMillis, + ) + } +} diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSDKPlugin.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSDKPlugin.kt new file mode 100644 index 00000000..69493b24 --- /dev/null +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSDKPlugin.kt @@ -0,0 +1,28 @@ +package so.kontext.sdk.flutter.omsdk + +import android.content.Context +import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.plugin.common.MethodCall +import io.flutter.plugin.common.MethodChannel + +class OMSDKPlugin : FlutterPlugin, MethodChannel.MethodCallHandler { + private lateinit var channel: MethodChannel + private lateinit var context: Context + + override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) { + context = binding.applicationContext + channel = MethodChannel(binding.binaryMessenger, OMConstants.channelName) + channel.setMethodCallHandler(this) + } + + override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { + when (call.method) { + "activate" -> result.success(OMManager.activate(context)) + else -> result.notImplemented() + } + } + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { + channel.setMethodCallHandler(null) + } +} diff --git a/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSession.kt b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSession.kt new file mode 100644 index 00000000..c5c56bbb --- /dev/null +++ b/android/src/main/kotlin/so/kontext/sdk/flutter/omsdk/OMSession.kt @@ -0,0 +1,54 @@ +package so.kontext.sdk.flutter.omsdk + +import android.util.Log +import android.view.ViewGroup +import android.webkit.WebView +import com.iab.omid.library.megabrainco.adsession.AdSession +import com.iab.omid.library.megabrainco.adsession.ErrorType + +internal class OMSession( + private val session: AdSession, + private val webView: WebView, +) { + fun start() { + session.start() + } + + fun retire() { + try { + webView.evaluateJavascript("window.postMessage({ type: 'retire-iframe' }, '*');", null) + } catch (exception: Throwable) { + Log.w(OMConstants.logTag, "OM retire message failed", exception) + } + } + + fun finish() { + session.finish() + } + + fun logError(errorType: String?, message: String?) { + val omErrorType = if (errorType == "video") ErrorType.VIDEO else ErrorType.GENERIC + try { + session.error(omErrorType, message ?: "unknown") + } catch (exception: IllegalStateException) { + Log.e(OMConstants.logTag, "OM error logging failed", exception) + } + } + + fun retainedWebView(): OMRetainedWebView = OMRetainedWebView(webView) +} + +internal class OMRetainedWebView( + private val webView: WebView, +) { + fun destroy() { + try { + (webView.parent as? ViewGroup)?.removeView(webView) + webView.stopLoading() + webView.loadUrl("about:blank") + webView.destroy() + } catch (exception: Throwable) { + Log.w(OMConstants.logTag, "Deferred WebView destroy failed", exception) + } + } +} diff --git a/android/src/main/res/raw/omsdk_v1.js b/android/src/main/res/raw/omsdk_v1.js new file mode 100644 index 00000000..c84aeb27 --- /dev/null +++ b/android/src/main/res/raw/omsdk_v1.js @@ -0,0 +1,99 @@ +;(function(omidGlobal) { + var n;function aa(a){var b=0;return function(){return bc&&(c=Math.max(c+e,0));c>>0)+'_',e=0;return b}); +u('Symbol.iterator',function(a){if(a)return a;a=Symbol('Symbol.iterator');for(var b='Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split(' '),c=0;cb||1342177279>>=1)c+=c;return d}}); +u('String.prototype.padStart',function(a){return a?a:function(b,c){var d=ma(this,null,'padStart');b-=d.length;c=void 0!==c?String(c):' ';return(0Math.abs(f-c))||(f=b.x,f=f>e||.01>Math.abs(f-e));(e=f)||(e=b.endY,e=eMath.abs(e-d));(d=e)||(b=b.y,d=b>a||.01>Math.abs(b-a));b=!d}return b}function F(a,b){for(var c=!1,d=0;dg&&J.yr){ca=!0;break}}ca&&(f+=Math.round(l)*Math.round(H))}}return c.call(b,0,d-f)};function Ka(){};function La(){} +function Ma(a,b,c,d,e,f){var h=new Ba;b=new z(b,!1);Ea(h,b);Na(a,b,h,d);if(!e)return h.i=['unmeasurable'],h.s=void 0,h.A=0,h.j=[],h.g&&(a=h.g,c={},a=new z((c.x=0,c.y=0,c.width=a.width,c.height=a.height,c),a.g),h.g=a),h.h=Fa(),h;'locked'===f&&F(h,'deviceLocked');if(b.noOutputDevice)F(h,'backgrounded'),F(h,'noOutputDevice');else if('backgrounded'===c)F(h,'backgrounded');else if(void 0!==h.g){for(a=0;ad.time&&(d=b[e]);c=d;a.m=Rb(c.rootBounds);a.g=Rb(c.boundingClientRect);a.C=Rb(c.intersectionRect);a.M=!!c.isIntersecting;Ib(a)}}catch(f){a.A(),ob(a.L,'generic','Problem handling IntersectionObserver callback: '+f.message)}},{root:null,rootMargin:'0px',threshold:[0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]})} +function Qb(a){a.j.ResizeObserver?a.u||(a.u=Sb(a,function(){return Tb(a)}),a.u.observe(a.h)):(a.v||(a.v=function(){return Tb(a)},(0,a.j.addEventListener)('resize',a.v)),a.s||(a.s=new MutationObserver(function(){return Tb(a)}),a.s.observe(a.h,{childList:!1,attributes:!0,subtree:!1})))}function Tb(a){a.h&&!Pb(a.h)&&(Ob(a),Mb(a))}function Sb(a,b){return new a.j.ResizeObserver(b)}function Rb(a){if(a&&null!==a.x&&null!==a.y&&null!==a.width&&null!==a.height)return new z(a,!1)};function Ub(a){if('object'===typeof a&&'object'===typeof a.webOSSystem)return a.webOSSystem}function Vb(a){if('object'===typeof a&&'object'===typeof a.tizen)return a.tizen}function Yb(a){return'object'===typeof Vb(a)};function Zb(a,b){this.h=a;this.g=b};function $b(){return'undefined'!==typeof crypto&&'function'===typeof crypto.getRandomValues}function ac(){var a=new Uint8Array(16);crypto.getRandomValues(a);a[6]=a[6]&15|64;a[8]=a[8]&63|128;for(var b=[],c=0;16>c;c++)b.push(a[c].toString(16).padStart(2,'0'));return b[0]+b[1]+b[2]+b[3]+'-'+b[4]+b[5]+'-'+b[6]+b[7]+'-'+b[8]+b[9]+'-'+b[10]+b[11]+b[12]+b[13]+b[14]+b[15]} +function bc(){return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(a){var b=16*Math.random()|0;return'y'===a?(b&3|8).toString(16):b.toString(16)})};function cc(a,b){var c=void 0===c?K:c;this.j=a;this.g=c;this.i=b;this.h=[]} +function dc(a){if(!a.g||!a.g.document)throw Error('OMID Service Script is not running within a window.');var b=a.h;a.h=[];b.forEach(function(c){try{var d=a.i.J?'limited':'full',e=R(c.accessMode,sa)?c.accessMode:null;var f=e?'full'==e&&'limited'==d?d:'domain'==e?'limited':e:d;c.accessMode=f;a:{var h=c.resourceUrl,k=a.g.location.origin;try{var g=new URL(h,k);break a}catch(H){}try{g=new URL(h);break a}catch(H){}g=null}if(d=g){var l=$b()?ac():bc();ec(a,l,d,f);var m=c.vendorKey,r=c.verificationParameters; +m=void 0===m?'':m;r=void 0===r?'':r;m&&'string'===typeof m&&''!==m&&r&&'string'===typeof r&&''!==r&&(a.j.o[m]=r);a.i.C.set(l,c)}}catch(H){Pa('OMID verification script '+c.resourceUrl+' failed to load: '+H)}})} +function ec(a,b,c,d){var e=a.g.document,f=e.createElement('iframe');f.id='omid-verification-script-frame-'+b;f.style.display='none';if('full'==d){var h=function(){var k=f.contentWindow;k.omidVerificationProperties={serviceWindow:a.g,injectionSource:'app',injectionId:b};k=k.document;var g=k.createElement('script');g.src=c.href;k.head.appendChild(g);f.removeEventListener('load',h)};f.addEventListener('load',h)}else'limited'==d&&(f.srcdoc="\n