Add Discord APKTool decompilation (Smali source for modding)

- Imported from https://github.com/supermegamestre/Project-Real-Resurrection-3
- APKTool decompilation (Smali bytecode) for modding and rebuilding APK
- Supports both 32-bit (armeabi-v7a) and 64-bit (arm64-v8a) architectures
- Includes full Smali source, resources, and native libraries
- Ready to rebuild APK after modifications with apktool b command
- Added comprehensive README-apktool.md with modding guide

This branch complements the JADX branches:
- Use JADX (main/discord-community) to UNDERSTAND code (readable Java)
- Use APKTool (this branch) to MODIFY and REBUILD APK (editable Smali)

Total: 44,417 files, 538.51 MB Smali source code
This commit is contained in:
2026-02-18 16:13:44 -08:00
parent c080f0d97f
commit f3960ee359
44288 changed files with 10998761 additions and 0 deletions

387
AndroidManifest.xml Normal file
View File

@@ -0,0 +1,387 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="36" android:compileSdkVersionCodename="16" android:installLocation="auto" package="com.ea.games.r3_row" platformBuildVersionCode="36" platformBuildVersionName="16">
<uses-permission android:maxSdkVersion="23" android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:maxSdkVersion="23" android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<uses-permission android:maxSdkVersion="22" android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<uses-permission android:maxSdkVersion="25" android:name="android.permission.WAKE_LOCK"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<uses-feature android:name="android.hardware.gamepad" android:required="false"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="false" android:xlargeScreens="true"/>
<queries>
<intent>
<action android:name="com.applovin.am.intent.action.APPHUB_SERVICE"/>
</intent>
<intent>
<action android:name="android.support.customtabs.action.CustomTabsService"/>
</intent>
<package android:name="com.facebook.katana"/>
<intent>
<action android:name="com.digitalturbine.ignite.cl.IgniteRemoteService"/>
</intent>
<intent>
<action android:name="android.intent.action.MAIN"/>
</intent>
<intent>
<action android:name="android.intent.action.VIEW"/>
</intent>
<intent>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="https"/>
</intent>
<intent>
<action android:name="android.intent.action.INSERT"/>
<data android:mimeType="vnd.android.cursor.dir/event"/>
</intent>
<intent>
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="sms"/>
</intent>
<intent>
<action android:name="android.intent.action.DIAL"/>
<data android:path="tel:"/>
</intent>
<package android:name="com.google.android.gms"/>
<package android:name="com.android.vending"/>
<intent>
<action android:name="android.media.browse.MediaBrowserService"/>
</intent>
<package android:name="com.google.ar.core"/>
<intent>
<action android:name="com.android.vending.billing.InAppBillingService.BIND"/>
</intent>
</queries>
<uses-permission android:name="com.applovin.array.apphub.permission.BIND_APPHUB_SERVICE"/>
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION"/>
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"/>
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
<permission android:name="com.ea.games.r3_row.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" android:protectionLevel="signature"/>
<uses-permission android:name="com.ea.games.r3_row.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"/>
<application android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:banner="@string/icon_name_tv_row" android:dataExtractionRules="@xml/backup_android12" android:extractNativeLibs="false" android:fullBackupContent="@xml/backup_legacy" android:hardwareAccelerated="true" android:icon="@string/icon_name_row" android:isGame="true" android:label="@string/app_name" android:largeHeap="true" android:localeConfig="@xml/locale_config" android:name="androidx.multidex.MultiDexApplication" android:networkSecurityConfig="@xml/network_security_config" android:resizeableActivity="false" android:roundIcon="@string/icon_name_round_row" android:screenOrientation="sensorLandscape" android:supportsRtl="true" android:theme="@style/splashScreenTheme" android:usesCleartextTraffic="false" android:windowSoftInputMode="adjustNothing">
<activity android:alwaysRetainTaskState="true" android:configChanges="keyboard|keyboardHidden|orientation|uiMode|screenSize|smallestScreenSize" android:exported="true" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.firemint.realracing.UnpackAssetsActivity" android:screenOrientation="sensorLandscape" android:theme="@style/splashScreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.apps.plus.VIEW_DEEP_LINK"/>
<data android:scheme="vnd.google.deeplink"/>
<data android:scheme="rr3"/>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<activity android:alwaysRetainTaskState="true" android:configChanges="keyboard|keyboardHidden|orientation|uiMode|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.firemint.realracing.MainActivity" android:screenOrientation="sensorLandscape" android:theme="@style/splashScreenTheme"/>
<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config"/>
<provider android:authorities="com.ea.games.r3_row.fileprovider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/>
</provider>
<meta-data android:name="xperiaplayoptimized_content" android:resource="@mipmap/ic_launcher" android:value="@mipmap/ic_launcher"/>
<meta-data android:name="game_display_name" android:resource="@string/app_name" android:value="@string/app_name"/>
<meta-data android:name="game_icon" android:resource="@mipmap/ic_launcher" android:value="@mipmap/ic_launcher"/>
<meta-data android:name="android.max_aspect" android:value="2.4"/>
<meta-data android:name="com.google.ar.core" android:value="optional"/>
<receiver android:exported="true" android:name="com.ea.nimble.ReferrerReceiver">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
<receiver android:exported="true" android:name="com.firemint.realracing.LocalNotificationBroadcastReceiver"/>
<service android:exported="true" android:name="com.firemint.realracing.DelayedNotificationService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<receiver android:exported="true" android:name="com.firemint.realracing.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
<meta-data android:name="com.ea.nimble.configuration" android:value="live"/>
<meta-data android:name="com.ea.nimble.tracking.defaultEnable" android:value="@string/nimble_trackingEnableFlag"/>
<meta-data android:name="com.ea.nimble.mtx.enableVerification" android:value="@string/nimble_mtx_enableVerification"/>
<meta-data android:name="com.ea.nimble.mtx.reportingEnabled" android:value="@string/nimble_mtx_reportingEnabled"/>
<meta-data android:name="com.ea.nimble.pushtng.auth.api.key" android:resource="@string/nimble_api_key_live"/>
<meta-data android:name="com.ea.nimble.pushtng.auth.api.secret" android:resource="@string/nimble_api_secret_live"/>
<service android:exported="false" android:name="com.firemint.realracing.RRPushService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<receiver android:exported="true" android:name="com.firemint.realracing.RRPushTNGBroadcastForwarder">
<intent-filter>
<action android:name="com.ea.eadp.pushnotification.FORWARD_AS_ORDERED_BROADCAST"/>
</intent-filter>
</receiver>
<service android:name="com.firemint.realracing.RRPushTNGIntentService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<meta-data android:name="com.ea.nimble.pushtng.channel.id" android:value="@string/NOTIFICATION_CHANNEL_GENERAL_ID"/>
<meta-data android:name="com.ea.nimble.NimbleLocalNotifications.channel.id" android:value="@string/NOTIFICATION_CHANNEL_GENERAL_ID"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
<activity android:excludeFromRecents="true" android:exported="false" android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden|adjustPan"/>
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-9518260973309814~6662120154"/>
<meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true"/>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/fb_app_id"/>
<meta-data android:name="com.facebook.sdk.ApplicationName" android:value="@string/app_name"/>
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
<meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/>
<meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize" android:label="@string/app_name" android:name="com.facebook.FacebookActivity" android:theme="@style/com_facebook_activity_theme"/>
<activity android:exported="true" android:name="com.facebook.CustomTabActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="@string/fb_login_protocol_scheme"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="cct.com.ea.games.r3_row" android:scheme="fbconnect"/>
</intent-filter>
</activity>
<service android:enabled="true" android:exported="false" android:name="com.firemonkeys.cloudcellapi.AndroidAssetManagerService"/>
<meta-data android:name="firebase_analytics_collection_enabled" android:value="false"/>
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false"/>
<meta-data android:name="firebase_performance_collection_enabled" android:value="false"/>
<meta-data android:name="firebase_performance_logcat_enabled" android:value="false"/>
<receiver android:exported="false" android:name="com.vungle.warren.NetworkProviderReceiver"/>
<provider android:authorities="com.ea.games.r3_row.applovininitprovider" android:exported="false" android:initOrder="101" android:name="com.applovin.sdk.AppLovinInitProvider"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:exported="false" android:hardwareAccelerated="true" android:launchMode="singleTop" android:name="com.applovin.adview.AppLovinFullscreenActivity" android:screenOrientation="behind" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.sdk.AppLovinWebViewActivity"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.hybridAds.MaxHybridMRecAdActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.hybridAds.MaxHybridNativeAdActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerDetailActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerMultiAdActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerAdUnitsListActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerAdUnitWaterfallsListActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerAdUnitDetailActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerCmpNetworksListActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerTcfConsentStatusesListActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerTcfInfoListActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerTcfStringActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerTestLiveNetworkActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerTestModeNetworkActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerUnifiedFlowActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.mediation.MaxDebuggerWaterfallSegmentsActivity" android:theme="@style/com.applovin.mediation.MaxDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.creative.MaxCreativeDebuggerActivity" android:theme="@style/com.applovin.creative.CreativeDebuggerActivity.Theme"/>
<activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.applovin.creative.MaxCreativeDebuggerDisplayedAdActivity" android:theme="@style/com.applovin.creative.CreativeDebuggerActivity.Theme"/>
<service android:exported="false" android:name="com.applovin.impl.adview.activity.FullscreenAdService" android:stopWithTask="false"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:exported="false" android:name="com.facebook.ads.AudienceNetworkActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<provider android:authorities="com.ea.games.r3_row.AudienceNetworkContentProvider" android:exported="false" android:name="com.facebook.ads.AudienceNetworkContentProvider"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:name="com.fyber.inneractive.sdk.activities.InneractiveInternalBrowserActivity" android:screenOrientation="fullUser"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:name="com.fyber.inneractive.sdk.activities.InneractiveFullscreenAdActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:name="com.fyber.inneractive.sdk.activities.InneractiveRichMediaVideoPlayerActivityCore" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:excludeFromRecents="true" android:name="com.fyber.inneractive.sdk.activities.InternalStoreWebpageActivity" android:screenOrientation="sensor" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:name="com.fyber.inneractive.sdk.activities.FyberReportAdActivity" android:screenOrientation="fullUser"/>
<meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/>
<activity android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:name="com.ironsource.sdk.controller.ControllerActivity"/>
<activity android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:name="com.ironsource.sdk.controller.InterstitialActivity" android:theme="@android:style/Theme.Translucent"/>
<activity android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:name="com.ironsource.sdk.controller.OpenUrlActivity" android:theme="@android:style/Theme.Translucent"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.tapjoy.mraid.view.ActionHandler"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.tapjoy.mraid.view.Browser"/>
<activity android:configChanges="orientation|screenSize" android:exported="false" android:hardwareAccelerated="true" android:name="com.ironsource.mediationsdk.testSuite.TestSuiteActivity" android:theme="@android:style/Theme.NoTitleBar">
<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true"/>
</activity>
<provider android:authorities="com.ea.games.r3_row.IronsourceLifecycleProvider" android:exported="false" android:name="com.ironsource.lifecycle.IronsourceLifecycleProvider"/>
<activity android:configChanges="orientation|screenSize" android:excludeFromRecents="true" android:name="com.mbridge.msdk.interstitial.view.MBInterstitialActivity"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:excludeFromRecents="true" android:name="com.mbridge.msdk.newreward.player.MBRewardVideoActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:excludeFromRecents="true" android:name="com.mbridge.msdk.reward.player.MBRewardVideoActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity android:configChanges="keyboard|orientation" android:excludeFromRecents="true" android:exported="false" android:name="com.mbridge.msdk.activity.MBCommonActivity" android:theme="@style/mbridge_transparent_common_activity_style"/>
<activity android:name="com.mbridge.msdk.out.LoadingActivity"/>
<receiver android:exported="true" android:name="com.mbridge.msdk.foundation.same.broadcast.NetWorkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="true" android:name="com.tapjoy.TJAdUnitActivity" android:theme="@style/TranslucentTheme"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="true" android:name="com.tapjoy.TJWebViewActivity" android:theme="@style/TranslucentTheme"/>
<activity android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:exported="false" android:hardwareAccelerated="true" android:name="com.unity3d.services.ads.adunit.AdUnitActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:exported="false" android:hardwareAccelerated="true" android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:exported="false" android:hardwareAccelerated="false" android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:exported="false" android:hardwareAccelerated="false" android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:exported="false" android:hardwareAccelerated="true" android:name="com.unity3d.ads.adplayer.FullScreenWebViewDisplay" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<provider android:authorities="com.ea.games.r3_row.androidx-startup" android:exported="false" android:name="androidx.startup.InitializationProvider">
<meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup"/>
<meta-data android:name="com.unity3d.services.core.configuration.AdsSdkInitializer" android:value="androidx.startup"/>
<meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup"/>
<meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer" android:value="androidx.startup"/>
<meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer" android:value="androidx.startup"/>
</provider>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:launchMode="singleTop" android:name="com.vungle.ads.internal.ui.VungleActivity"/>
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
<activity android:configChanges="orientation|screenSize" android:launchMode="singleTop" android:name="com.helpshift.activities.HSMainActivity" android:theme="@style/Theme.AppCompat.NoActionBar"/>
<activity android:configChanges="orientation|screenSize" android:launchMode="singleTop" android:name="com.helpshift.activities.HSDebugActivity" android:theme="@style/Theme.AppCompat.NoActionBar"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:exported="false" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent"/>
<provider android:authorities="com.ea.games.r3_row.mobileadsinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.android.gms.ads.MobileAdsInitProvider"/>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.ads.AdService"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:exported="false" android:name="com.google.android.gms.ads.OutOfContextTestingActivity"/>
<activity android:excludeFromRecents="true" android:exported="false" android:launchMode="singleTask" android:name="com.google.android.gms.ads.NotificationHandlerActivity" android:taskAffinity="" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_job_service_default" android:exported="true" android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<service android:directBootAware="false" android:enabled="@bool/enable_system_foreground_service_default" android:exported="false" android:name="androidx.work.impl.foreground.SystemForegroundService"/>
<receiver android:directBootAware="false" android:enabled="true" android:exported="false" android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver"/>
<receiver android:directBootAware="false" android:enabled="false" android:exported="false" android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
<receiver android:directBootAware="false" android:enabled="false" android:exported="false" android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy">
<intent-filter>
<action android:name="android.intent.action.BATTERY_OKAY"/>
<action android:name="android.intent.action.BATTERY_LOW"/>
</intent-filter>
</receiver>
<receiver android:directBootAware="false" android:enabled="false" android:exported="false" android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy">
<intent-filter>
<action android:name="android.intent.action.DEVICE_STORAGE_LOW"/>
<action android:name="android.intent.action.DEVICE_STORAGE_OK"/>
</intent-filter>
</receiver>
<receiver android:directBootAware="false" android:enabled="false" android:exported="false" android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
<receiver android:directBootAware="false" android:enabled="false" android:exported="false" android:name="androidx.work.impl.background.systemalarm.RescheduleReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.TIME_SET"/>
<action android:name="android.intent.action.TIMEZONE_CHANGED"/>
</intent-filter>
</receiver>
<receiver android:directBootAware="false" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:name="androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver">
<intent-filter>
<action android:name="androidx.work.impl.background.systemalarm.UpdateProxies"/>
</intent-filter>
</receiver>
<receiver android:directBootAware="false" android:enabled="true" android:exported="true" android:name="androidx.work.impl.diagnostics.DiagnosticsReceiver" android:permission="android.permission.DUMP">
<intent-filter>
<action android:name="androidx.work.diagnostics.REQUEST_DIAGNOSTICS"/>
</intent-filter>
</receiver>
<service android:directBootAware="true" android:exported="false" android:name="androidx.room.MultiInstanceInvalidationService"/>
<service android:directBootAware="true" android:exported="false" android:name="com.google.firebase.components.ComponentDiscoveryService">
<meta-data android:name="com.google.firebase.components:com.google.firebase.perf.FirebasePerfKtxRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.perf.FirebasePerfRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingKtxRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.crashlytics.ndk.CrashlyticsNdkRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.remoteconfig.FirebaseRemoteConfigKtxRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.remoteconfig.RemoteConfigRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.crashlytics.FirebaseCrashlyticsKtxRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.crashlytics.CrashlyticsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.sessions.FirebaseSessionsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsKtxRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.ktx.FirebaseCommonLegacyRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.FirebaseCommonKtxRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.abt.component.AbtRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
</service>
<activity android:name="com.facebook.CustomTabMainActivity"/>
<service android:enabled="true" android:exported="false" android:name="androidx.credentials.playservices.CredentialProviderMetadataHolder">
<meta-data android:name="androidx.credentials.CREDENTIAL_PROVIDER_KEY" android:value="androidx.credentials.playservices.CredentialProviderPlayServicesImpl"/>
</service>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize" android:enabled="true" android:exported="false" android:fitsSystemWindows="true" android:name="androidx.credentials.playservices.HiddenActivity" android:theme="@style/Theme.Hidden"/>
<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize" android:enabled="true" android:exported="false" android:fitsSystemWindows="true" android:name="androidx.credentials.playservices.IdentityCredentialApiHiddenActivity" android:theme="@style/Theme.Hidden"/>
<provider android:authorities="com.ea.games.r3_row.playgamesinitprovider" android:exported="false" android:initOrder="99" android:name="com.google.android.gms.games.provider.PlayGamesInitProvider"/>
<activity android:exported="false" android:name="com.google.android.gms.games.internal.v2.resolution.GamesResolutionActivity" android:theme="@style/Theme.Games.Transparent"/>
<activity android:exported="true" android:name="com.google.android.gms.games.internal.v2.appshortcuts.PlayGamesAppShortcutsActivity" android:theme="@style/Theme.Games.Transparent"/>
<meta-data android:name="com.google.android.gms.games.version" android:value="@string/play_games_sdk_version"/>
<receiver android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
<meta-data android:name="com.google.android.gms.cloudmessaging.FINISHED_AFTER_HANDLED" android:value="true"/>
</receiver>
<service android:directBootAware="true" android:exported="false" android:name="com.google.firebase.messaging.FirebaseMessagingService">
<intent-filter android:priority="-500">
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:exported="true" android:name="com.google.android.gms.auth.api.signin.RevocationBoundService" android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION" android:visibleToInstantApps="true"/>
<activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/ga_ad_services_config"/>
<service android:enabled="true" android:exported="false" android:name="com.google.firebase.sessions.SessionLifecycleService"/>
<provider android:authorities="com.ea.games.r3_row.firebaseinitprovider" android:directBootAware="true" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/>
<receiver android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementReceiver"/>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementService"/>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<uses-library android:name="android.ext.adservices" android:required="false"/>
<provider android:authorities="com.ea.games.r3_row.FacebookInitProvider" android:exported="false" android:name="com.facebook.internal.FacebookInitProvider"/>
<receiver android:exported="false" android:name="com.facebook.CurrentAccessTokenExpirationBroadcastReceiver">
<intent-filter>
<action android:name="com.facebook.sdk.ACTION_CURRENT_ACCESS_TOKEN_CHANGED"/>
</intent-filter>
</receiver>
<receiver android:exported="false" android:name="com.facebook.AuthenticationTokenManager$CurrentAuthenticationTokenChangedBroadcastReceiver">
<intent-filter>
<action android:name="com.facebook.sdk.ACTION_CURRENT_AUTHENTICATION_TOKEN_CHANGED"/>
</intent-filter>
</receiver>
<meta-data android:name="com.google.ar.core.min_apk_version" android:value="220920000"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:excludeFromRecents="true" android:exported="false" android:launchMode="singleTop" android:name="com.google.ar.core.InstallActivity" android:theme="@android:style/Theme.Material.Light.Dialog.Alert"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize" android:name="com.ea.nimble.CustomTabActivity"/>
<activity android:name="com.ea.nimble.WebView" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
<activity android:exported="true" android:name="com.ea.nimble.AuthResultActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<receiver android:exported="false" android:name="com.ea.nimble.NimbleLocalNotificationReceiver"/>
<service android:name="com.ea.nimble.pushtng.NimblePushTNGIntentService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<service android:exported="false" android:name="com.ea.nimble.pushtng.NimblePushTNGBroadcastReceiver">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<meta-data android:name="com.google.android.play.billingclient.version" android:value="6.0.1"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize" android:exported="false" android:name="com.android.billingclient.api.ProxyBillingActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<receiver android:directBootAware="false" android:enabled="true" android:exported="true" android:name="androidx.profileinstaller.ProfileInstallReceiver" android:permission="android.permission.DUMP">
<intent-filter>
<action android:name="androidx.profileinstaller.action.INSTALL_PROFILE"/>
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.SKIP_FILE"/>
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.SAVE_PROFILE"/>
</intent-filter>
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION"/>
</intent-filter>
</receiver>
<service android:exported="false" android:name="com.google.android.datatransport.runtime.backends.TransportBackendDiscovery">
<meta-data android:name="backend:com.google.android.datatransport.cct.CctBackendFactory" android:value="cct"/>
</service>
<service android:exported="false" android:name="com.google.android.datatransport.runtime.scheduling.jobscheduling.JobInfoSchedulerService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<receiver android:exported="false" android:name="com.google.android.datatransport.runtime.scheduling.jobscheduling.AlarmManagerSchedulerBroadcastReceiver"/>
</application>
</manifest>

161
README-apktool.md Normal file
View File

@@ -0,0 +1,161 @@
# RR3 APKTool Decompiled Version (Discord Collaboration)
This branch contains the APKTool-decompiled version of Real Racing 3 from the Discord community team.
**Source:** https://github.com/supermegamestre/Project-Real-Resurrection-3
## Why APKTool Instead of JADX?
This repository uses **APKTool** decompilation, not JADX like the other branches. Here's why:
### APKTool (This Branch)
- **Format:** Smali bytecode (Android assembly language)
- **Readable:** ❌ Very hard to read - low-level assembly code
- **Modifiable:** ✅ YES - Can rebuild APK after editing
- **Use Case:** Modding, patching, rebuilding APKs
### JADX (Other Branches)
- **Format:** Java source code
- **Readable:** ✅ Easy to read - high-level Java
- **Modifiable:** ❌ NO - Cannot rebuild APK
- **Use Case:** Understanding code, reverse engineering
## Recommended Workflow
1. **Use JADX branches** (`main`, `discord-community`) to **understand** the code
2. **Use this APKTool branch** (`discord-apktool`) to **modify** the code
3. **Rebuild the APK** with APKTool after making changes
### Example:
```bash
# 1. Read Java code to understand a feature
cd ../rr3-apk-main
cat sources/com/ea/feature/Example.java
# 2. Find corresponding Smali file
cd ../rr3-apk
nano smali/com/ea/feature/Example.smali
# 3. Make changes to Smali
# 4. Rebuild APK
apktool b . -o modified-rr3.apk
```
## What's Different in This Version?
Based on the Discord team's work:
-**Both 32-bit and 64-bit** support (armeabi-v7a + arm64-v8a)
-**Full Smali source** for all game classes
-**All resources** (XML, images, sounds)
-**Ready to rebuild** with APKTool
## Architecture Support
```
lib/
├── armeabi-v7a/ # 32-bit ARM (older devices)
│ └── libRealRacing3.so # 22.56 MB
└── arm64-v8a/ # 64-bit ARM (modern devices)
└── libRealRacing3.so # 31.58 MB
```
## How to Rebuild This APK
### Prerequisites:
```bash
# Install APKTool
# Windows: Download from https://ibotpeaches.github.io/Apktool/
# Linux: apt install apktool
# Install Java Development Kit
# Required for signing APKs
```
### Build Process:
```bash
# 1. Make your modifications to Smali or resource files
# 2. Rebuild APK
apktool b . -o realracing3-modded.apk
# 3. Sign the APK (required for installation)
# Generate keystore first (one-time):
keytool -genkey -v -keystore rr3.keystore -alias rr3key -keyalg RSA -keysize 2048 -validity 10000
# Sign the APK:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore rr3.keystore realracing3-modded.apk rr3key
# 4. Optimize with zipalign:
zipalign -v 4 realracing3-modded.apk realracing3-final.apk
# 5. Install on device:
adb install realracing3-final.apk
```
## Common Modding Tasks
### 1. Change Server URL
Edit: `smali/com/ea/config/ServerConfig.smali`
Look for: `.field public static SERVER_URL:Ljava/lang/String;`
### 2. Unlock All Cars
Edit: `smali/com/ea/garage/CarManager.smali`
Modify: `isCarUnlocked()` method to always return true
### 3. Unlimited Currency
Edit: `smali/com/ea/currency/CurrencyManager.smali`
Modify: Currency check methods
### 4. Remove Ads
Edit: `AndroidManifest.xml`
Remove: Ad-related permissions and activities
## File Structure
```
discord-apktool/
├── AndroidManifest.xml # App configuration
├── apktool.yml # APKTool build settings
├── res/ # Resources (images, XML, etc)
├── smali/ # Main game code (Smali)
├── smali_classes2/ # Additional classes
├── smali_classes3/ # Additional classes
├── lib/ # Native libraries (.so files)
├── assets/ # Game assets
└── original/ # Original APK metadata
```
## Learning Smali
Smali is challenging but learnable. Key concepts:
- **Registers:** `v0`, `v1`, `p0`, `p1` (like variables)
- **Method calls:** `invoke-virtual`, `invoke-static`
- **Conditional jumps:** `if-eq`, `if-ne`, `goto`
- **Field access:** `.field`, `iget`, `iput`
**Resources:**
- https://github.com/JesusFreke/smali/wiki
- https://source.android.com/devices/tech/dalvik/dalvik-bytecode
## Branch Comparison
| Branch | Tool | Format | Readable | Modifiable | Use Case |
|--------|------|--------|----------|------------|----------|
| `main` | JADX | Java | ✅ Yes | ❌ No | Understanding original |
| `discord-community` | JADX | Java | ✅ Yes | ❌ No | Understanding Discord version |
| `discord-apktool` | APKTool | Smali | ❌ No | ✅ Yes | **Modding & rebuilding** |
## Notes
- This is the **active development version** used by the Discord team
- Check GitHub for updates: https://github.com/supermegamestre/Project-Real-Resurrection-3
- Always test on emulator before installing on real device
- Keep backups of working APKs
---
**Last synced:** 2025-02-18
**Discord team:** supermegamestre and contributors

24
apktool.yml Normal file
View File

@@ -0,0 +1,24 @@
version: 2.12.1
apkFileName: real-racing-3-13-7-1.apk
usesFramework:
ids:
- 1
sdkInfo:
minSdkVersion: 26
targetSdkVersion: 36
packageInfo:
forcedPackageId: 127
versionInfo:
versionCode: 13701
versionName: 13.7.1
doNotCompress:
- arsc
- png
- so
- wav
- assets/dexopt/baseline.prof
- assets/dexopt/baseline.profm
- res/raw/checksum.md5
- res/raw/keep_arcore.xml
- res/raw/keep_cronet_api.xml
- res/raw/res.zip

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4c88b9ad-34a8-4f17-9224-c7f3321604b7",e._sentryDebugIdIdentifier="sentry-dbid-4c88b9ad-34a8-4f17-9224-c7f3321604b7")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[245],{27245:function(e,n,d){d.r(n),d.d(n,{getLocalCampaigns:function(){return f}}),d(86102),d(49922),d(20462),d(3960),d(99029),d(95929),d(62141),d(77225),d(1645),d(17326),d(89734);var a=d(78371);d.e(44).then(d.t.bind(d,50044,19)),a.zc.Comet,d(7300),d(51216),d(11397),d(53133),d(20144),d(79730),d(9347),d(48298),d(74837),d(66964),d(99143),d(40289),d(41414),d(38379),d(5229),d(67238),d(37406),d(67890),d(19349),d(81688),d(45466);var f=function(){}}}]);
//# sourceMappingURL=245.1749e172.js.map

View File

@@ -0,0 +1 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="68a19f81-0b48-4c8e-b456-94757ca9d50d",e._sentryDebugIdIdentifier="sentry-dbid-68a19f81-0b48-4c8e-b456-94757ca9d50d")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[44],{50044:function(e){e.exports=JSON.parse('{"id":"61b31e7bb340374389106542-62346c5268f52f55128886bb#1","campaignId":"61b31e7bb340374389106542-62346c5268f52f55128886bb","platform":"android","store":"google","appStoreId":"in.playsimple.tripcross","gameId":140575,"clickUrl":"https://publisher-event.unityads.unity3d.com/events/v2/click/14851/61b31e7bb340374389106542-62346c5268f52f55128886bb","videoEventUrls":{"video_start":"https://publisher-event.unityads.unity3d.com/events/v2/video/video_start/14851/61b31e7bb340374389106542-62346c5268f52f55128886bb","first_quartile":"https://publisher-event.unityads.unity3d.com/events/v2/video/first_quartile/14851/61b31e7bb340374389106542-62346c5268f52f55128886bb","midpoint":"https://publisher-event.unityads.unity3d.com/events/v2/video/midpoint/14851/61b31e7bb340374389106542-62346c5268f52f55128886bb","third_quartile":"https://publisher-event.unityads.unity3d.com/events/v2/video/third_quartile/14851/61b31e7bb340374389106542-62346c5268f52f55128886bb","video_end":"https://publisher-event.unityads.unity3d.com/events/v2/video/video_end/14851/61b31e7bb340374389106542-62346c5268f52f55128886bb"},"clickAttributionUrlFollowsRedirects":false,"bypassAppSheet":false,"referrer":"referrer=adjust_external_click_id%3Dunityads_4e8b1b13-5ace-4292-980c-1bf6e8dda7a9","meta":"C8KxOD4UEe8UadWODUTFsibuHyTvfPq47AYlxguvsqmJOpc9LDV8RRRYBcB+WbWP5l/cJR3Et0gB0gbRnbsZyTIDhGuXnUtDg1LSsGIJlyyeocwGdhGj4eo7GjBMNZjDA1WC4Ei7OVie43FW5Fd2Q76RRdGfXPmFsfbFkdJcMTv5zL/q8wRqLYTwTNHy37XZfHCEz8N2QkyuSFKhOJUjFwcQJbYpgoOhrGFkpXzeP37mgQOU/QCytsWxuYmV8Z2KFWbHc3tdsmnfw7FsYVYLx+hZmsuwp7piDEDtzGGKEwQ/eKbVt2pv481gQaOhON/oDdGvn/A1sTi1j+JG6vpoXF7WbstPs7Lws2BEEUjuoNJZY+wv8PA5c87ksM6nsteOwzursVNt+Z1wMTlZJZMGRKci2l5UKj02ZcSUnLaf9PAkOY/CKqclySAEd0XrXxjEcmq1Qc23vLVY1U4pOWK8psMs8lOKuOnVQAku+GL4rVTrCZmPWxeNHTDUfFfGgXAjM0b2uQf4AABNBAFGPh4stZt8Kcxk7/0ZVmAx2WR3XRPy8B/yQfEZS3LF","gameName":"Crossword Jam","rating":4.6756544,"ratingCount":265633,"gameIcon":"http://cdn-store-icons-akamai-prd.unityads.unity3d.com/store-icons/745194da-0503-49bb-bf30-f0a0d91b555a.png","creativeId":"60a28611fc0ecf28dd45a3f7","trailerDownloadable":"http://cdn-creatives-prd.acquire.unity3dusercontent.com/assets/60a28611fc0ecf28dd45a3f7/m31-1000.mp4","trailerDownloadableSize":3344050,"trailerStreaming":"http://cdn-creatives-prd.acquire.unity3dusercontent.com/assets/60a28611fc0ecf28dd45a3f7/b30-400.mp4","portraitCreativeId":"62346c50d9f6c0b288c254a7","trailerPortraitDownloadable":"http://cdn-creatives-prd.acquire.unity3dusercontent.com/assets/62346c50d9f6c0b288c254a7/m31-1000.mp4","trailerPortraitDownloadableSize":3387243,"trailerPortraitStreaming":"http://cdn-creatives-prd.acquire.unity3dusercontent.com/assets/62346c50d9f6c0b288c254a7/b30-400.mp4","endScreen":"http://cdn-creatives-prd.acquire.unity3dusercontent.com/assets/62346c5002a7b25ef79ce3c5/21912005-b01d-4eb4-ba49-fa8eda756609.jpg"}')}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
<link rel="icon" href="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
<title>Unity Ad Viewer - v1.33.2-ad-viewer</title>
<script type="text/javascript">!function(e,n){e.logs=[];var t=["https://webview.unityads.unity3d.com/unity-ads-sdk-webview/ad-viewer-vendors.0e0bf603.js","https://webview.unityads.unity3d.com/unity-ads-sdk-webview/adViewer.04f22f25.js"],r=[],o=[];function i(){return e.crypto&&e.crypto.randomUUID?e.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)}))}var a=i();function s(){var n=e.location.search.split("platform=")[1];if(n)return n.split("&")[0]}var d=!1;function c(n){if(!d){d=!0;var t=new XMLHttpRequest;t.open("POST","https://cdp.cloud.unity3d.com/v1/events"),t.setRequestHeader("Content-Type","application/json"),t.send(JSON.stringify({msg:{country:"unknown",error:n,eventId:i(),eventType:"initialization_fail",gameId:"unknown",message:e.navigator.userAgent,plt:s()||"unknown",reason:"index.html",sdkVersion:0,sessionTime:performance?Math.round(performance.now()):0,tracingSessionId:a,ts:Date.now()},type:"ads.sdk.tracing_wbvw3_hourly.v1"}))}}function u(){r.length+o.length===t.length&&o.length>0&&c("Failed to load script(s): "+o.join(", "))}function x(e){c(e.message||"Unknown error")}e.addEventListener("error",x),e.removeFallbackErrorHandler=function(){e.removeEventListener("error",x)};for(var p=0;p<t.length;p++){var l=t[p],v=n.createElement("script");v.type="text/javascript",v.src=l,v.onload=function(e){r.push(e.target.getAttribute("src")),u()},v.onerror=function(e){e.preventDefault(),o.push(e.target.getAttribute("src")),u()},n.head.appendChild(v)}}(window,document)</script>
</head>
<body>
<div id="root"></div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"41b410dd0a692cf6ffcf76e7ecc2999a8730bd19f8063eb0ff718f239f30ab65","url":"https://webview.unityads.unity3d.com/unity-ads-sdk-webview/ad-viewer.v1.33.2-ad-viewer.html"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="45a71dff-72a2-4642-a394-5aa23897749f",e._sentryDebugIdIdentifier="sentry-dbid-45a71dff-72a2-4642-a394-5aa23897749f")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[513],{30830:function(e,t,r){r.r(t),r(11397),r(53133),r(86102),r(49922),r(20462),r(20144),r(79730),r(7300),r(9347),r(48298),r(74837),r(66964),r(99143),r(3960),r(99029),r(95929),r(62141);var n=r(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){u(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=a(a({},n.default),{},{common:a(a({},n.default.common),{},{free:"Frítt",get:"Get",install:"Setja upp",price:"Verð",sponsored:"Auglýsing"}),cta:{installNow:"Setja upp",learnMore:"Læra meira"},reward:{description:"Þú munt tapa verðlaununum þínum",resumeButtonText:"HALDA ÁFRAM MYNDSKEIÐI",rewardGranted:"Verðlaun veitt!",skipButtonText:"LOKA MYNDSKEIÐI",title:"Loka myndskeiði?"}});t.default=f}}]);
//# sourceMappingURL=is.fcf7904f.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0c30ea3c-a5f3-4038-b38c-d1f46bbea08c",e._sentryDebugIdIdentifier="sentry-dbid-0c30ea3c-a5f3-4038-b38c-d1f46bbea08c")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[43],{24218:function(e,t,r){r.r(t),r(11397),r(53133),r(86102),r(49922),r(20462),r(20144),r(79730),r(7300),r(9347),r(48298),r(74837),r(66964),r(99143),r(3960),r(99029),r(95929),r(62141);var n=r(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){f(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var u=c(c({},n.default),{},{common:c(c({},n.default.common),{},{free:"無料",get:"入手",install:"インストール",price:"価格",sponsored:"広告"}),cta:{installNow:"インストール",learnMore:"もっとみる"},reward:{description:"報酬は得られなくなります",resumeButtonText:"動画を再開",rewardGranted:"報酬を獲得!",skipButtonText:"動画を終了",title:"動画を終了しますか?"}});t.default=u}}]);
//# sourceMappingURL=ja.da2856fc.js.map

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="40de1602-c1ea-4ec1-8322-0a54e6ccf82b",e._sentryDebugIdIdentifier="sentry-dbid-40de1602-c1ea-4ec1-8322-0a54e6ccf82b")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[491],{47655:function(e,t,r){r.r(t),r(11397),r(53133),r(86102),r(49922),r(20462),r(20144),r(79730),r(7300),r(9347),r(48298),r(74837),r(66964),r(99143),r(3960),r(99029),r(95929),r(62141);var n=r(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){u(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=c(c({},n.default),{},{common:c(c({},n.default.common),{},{free:"무료",get:"받기",install:"설치",price:"가격",sponsored:"협찬"}),cta:{installNow:"다운로드",learnMore:"더 알아보기"},reward:{description:"리워드를 잃게 됩니다.",resumeButtonText:"동영상 재시작",rewardGranted:"보상 지급 완료!",skipButtonText:"동영상 닫기",title:"동영상을 닫을까요?"}});t.default=f}}]);
//# sourceMappingURL=ko.47c0d453.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="da35c92c-3ab9-4214-846e-15f0ec5b218f",e._sentryDebugIdIdentifier="sentry-dbid-da35c92c-3ab9-4214-846e-15f0ec5b218f")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[189],{59383:function(e,t,n){n.r(t),n(11397),n(53133),n(86102),n(49922),n(20462),n(20144),n(79730),n(7300),n(9347),n(48298),n(74837),n(66964),n(99143),n(3960),n(99029),n(95929),n(62141);var r=n(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=u(u({},r.default),{},{common:u(u({},r.default.common),{},{free:"Gratis",get:"Hent",install:"Installer",price:"Pris",sponsored:"Sponset"}),cta:{installNow:"Installere nå",learnMore:"Les mer"},reward:{description:"Du mister belønningen din",resumeButtonText:"GJENOPPTA VIDEOEN",rewardGranted:"Du har fått belønning",skipButtonText:"LUKK VIDEOEN",title:"Vil du lukke videoen?"}});t.default=f}}]);
//# sourceMappingURL=nb.a951dba3.js.map

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,87 @@
;(function(omidGlobal) {
var m;function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}function p(a){var b='undefined'!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];if(b)return b.call(a);if('number'==typeof a.length)return{next:aa(a)};throw Error(String(a)+' is not an iterable or ArrayLike');}function q(a){if(!(a instanceof Array)){a=p(a);for(var b,c=[];!(b=a.next()).done;)c.push(b.value);a=c}return a}
var ba='function'==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},r='function'==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
function ca(a){a=['object'==typeof globalThis&&globalThis,a,'object'==typeof window&&window,'object'==typeof self&&self,'object'==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error('Cannot find global object');}var da=ca(this);function u(a,b){if(b)a:{var c=da;a=a.split('.');for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&r(c,a,{configurable:!0,writable:!0,value:b})}}var ea;
if('function'==typeof Object.setPrototypeOf)ea=Object.setPrototypeOf;else{var fa;a:{var ha={a:!0},ia={};try{ia.__proto__=ha;fa=ia.a;break a}catch(a){}fa=!1}ea=fa?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+' is not extensible');return a}:null}var ja=ea;
function v(a,b){a.prototype=ba(b.prototype);a.prototype.constructor=a;if(ja)ja(a,b);else for(var c in b)if('prototype'!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.Ia=b.prototype}function w(){for(var a=Number(this),b=[],c=a;c<arguments.length;c++)b[c-a]=arguments[c];return b}function x(a,b){return Object.prototype.hasOwnProperty.call(a,b)}
var ka='function'==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)x(d,e)&&(a[e]=d[e])}return a};u('Object.assign',function(a){return a||ka});
u('Symbol',function(a){function b(f){if(this instanceof b)throw new TypeError('Symbol is not a constructor');return new c(d+(f||'')+'_'+e++,f)}function c(f,k){this.g=f;r(this,'description',{configurable:!0,writable:!0,value:k})}if(a)return a;c.prototype.toString=function(){return this.g};var d='jscomp_symbol_'+(1E9*Math.random()>>>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;c<b.length;c++){var d=da[b[c]];'function'===typeof d&&'function'!=typeof d.prototype[a]&&r(d.prototype,a,{configurable:!0,writable:!0,value:function(){return la(aa(this))}})}return a});function la(a){a={next:a};a[Symbol.iterator]=function(){return this};return a}
u('WeakMap',function(a){function b(h){this.g=(g+=Math.random()+1).toString();if(h){h=p(h);for(var l;!(l=h.next()).done;)l=l.value,this.set(l[0],l[1])}}function c(){}function d(h){var l=typeof h;return'object'===l&&null!==h||'function'===l}function e(h){if(!x(h,k)){var l=new c;r(h,k,{value:l})}}function f(h){var l=Object[h];l&&(Object[h]=function(n){if(n instanceof c)return n;Object.isExtensible(n)&&e(n);return l(n)})}if(function(){if(!a||!Object.seal)return!1;try{var h=Object.seal({}),l=Object.seal({}),
n=new a([[h,2],[l,3]]);if(2!=n.get(h)||3!=n.get(l))return!1;n.delete(h);n.set(l,4);return!n.has(h)&&4==n.get(l)}catch(t){return!1}}())return a;var k='$jscomp_hidden_'+Math.random();f('freeze');f('preventExtensions');f('seal');var g=0;b.prototype.set=function(h,l){if(!d(h))throw Error('Invalid WeakMap key');e(h);if(!x(h,k))throw Error('WeakMap key fail: '+h);h[k][this.g]=l;return this};b.prototype.get=function(h){return d(h)&&x(h,k)?h[k][this.g]:void 0};b.prototype.has=function(h){return d(h)&&x(h,
k)&&x(h[k],this.g)};b.prototype.delete=function(h){return d(h)&&x(h,k)&&x(h[k],this.g)?delete h[k][this.g]:!1};return b});
u('Map',function(a){function b(){var g={};return g.H=g.next=g.head=g}function c(g,h){var l=g.g;return la(function(){if(l){for(;l.head!=g.g;)l=l.H;for(;l.next!=l.head;)return l=l.next,{done:!1,value:h(l)};l=null}return{done:!0,value:void 0}})}function d(g,h){var l=h&&typeof h;'object'==l||'function'==l?f.has(h)?l=f.get(h):(l=''+ ++k,f.set(h,l)):l='p_'+h;var n=g.h[l];if(n&&x(g.h,l))for(g=0;g<n.length;g++){var t=n[g];if(h!==h&&t.key!==t.key||h===t.key)return{id:l,list:n,index:g,B:t}}return{id:l,list:n,
index:-1,B:void 0}}function e(g){this.h={};this.g=b();this.size=0;if(g){g=p(g);for(var h;!(h=g.next()).done;)h=h.value,this.set(h[0],h[1])}}if(function(){if(!a||'function'!=typeof a||!a.prototype.entries||'function'!=typeof Object.seal)return!1;try{var g=Object.seal({x:4}),h=new a(p([[g,'s']]));if('s'!=h.get(g)||1!=h.size||h.get({x:4})||h.set({x:4},'t')!=h||2!=h.size)return!1;var l=h.entries(),n=l.next();if(n.done||n.value[0]!=g||'s'!=n.value[1])return!1;n=l.next();return n.done||4!=n.value[0].x||
't'!=n.value[1]||!l.next().done?!1:!0}catch(t){return!1}}())return a;var f=new WeakMap;e.prototype.set=function(g,h){g=0===g?0:g;var l=d(this,g);l.list||(l.list=this.h[l.id]=[]);l.B?l.B.value=h:(l.B={next:this.g,H:this.g.H,head:this.g,key:g,value:h},l.list.push(l.B),this.g.H.next=l.B,this.g.H=l.B,this.size++);return this};e.prototype.delete=function(g){g=d(this,g);return g.B&&g.list?(g.list.splice(g.index,1),g.list.length||delete this.h[g.id],g.B.H.next=g.B.next,g.B.next.H=g.B.H,g.B.head=null,this.size--,
!0):!1};e.prototype.clear=function(){this.h={};this.g=this.g.H=b();this.size=0};e.prototype.has=function(g){return!!d(this,g).B};e.prototype.get=function(g){return(g=d(this,g).B)&&g.value};e.prototype.entries=function(){return c(this,function(g){return[g.key,g.value]})};e.prototype.keys=function(){return c(this,function(g){return g.key})};e.prototype.values=function(){return c(this,function(g){return g.value})};e.prototype.forEach=function(g,h){for(var l=this.entries(),n;!(n=l.next()).done;)n=n.value,
g.call(h,n[1],n[0],this)};e.prototype[Symbol.iterator]=e.prototype.entries;var k=0;return e});u('Object.values',function(a){return a?a:function(b){var c=[],d;for(d in b)x(b,d)&&c.push(b[d]);return c}});function ma(a,b){a instanceof String&&(a+='');var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var f=c++;return{value:b(f,a[f]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e}u('Array.prototype.keys',function(a){return a?a:function(){return ma(this,function(b){return b})}});
u('Set',function(a){function b(c){this.g=new Map;if(c){c=p(c);for(var d;!(d=c.next()).done;)this.add(d.value)}this.size=this.g.size}if(function(){if(!a||'function'!=typeof a||!a.prototype.entries||'function'!=typeof Object.seal)return!1;try{var c=Object.seal({x:4}),d=new a(p([c]));if(!d.has(c)||1!=d.size||d.add(c)!=d||1!=d.size||d.add({x:4})!=d||2!=d.size)return!1;var e=d.entries(),f=e.next();if(f.done||f.value[0]!=c||f.value[1]!=c)return!1;f=e.next();return f.done||f.value[0]==c||4!=f.value[0].x||
f.value[1]!=f.value[0]?!1:e.next().done}catch(k){return!1}}())return a;b.prototype.add=function(c){c=0===c?0:c;this.g.set(c,c);this.size=this.g.size;return this};b.prototype.delete=function(c){c=this.g.delete(c);this.size=this.g.size;return c};b.prototype.clear=function(){this.g.clear();this.size=0};b.prototype.has=function(c){return this.g.has(c)};b.prototype.entries=function(){return this.g.entries()};b.prototype.values=function(){return this.g.values()};b.prototype.keys=b.prototype.values;b.prototype[Symbol.iterator]=
b.prototype.values;b.prototype.forEach=function(c,d){var e=this;this.g.forEach(function(f){return c.call(d,f,f,e)})};return b});u('Object.is',function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});u('Array.prototype.includes',function(a){return a?a:function(b,c){var d=this;d instanceof String&&(d=String(d));var e=d.length;c=c||0;for(0>c&&(c=Math.max(c+e,0));c<e;c++){var f=d[c];if(f===b||Object.is(f,b))return!0}return!1}});
u('String.prototype.includes',function(a){return a?a:function(b,c){if(null==this)throw new TypeError("The 'this' value for String.prototype.includes must not be null or undefined");if(b instanceof RegExp)throw new TypeError('First argument to String.prototype.includes must not be a regular expression');return-1!==this.indexOf(b,c||0)}});u('Object.entries',function(a){return a?a:function(b){var c=[],d;for(d in b)x(b,d)&&c.push([d,b[d]]);return c}});
u('Array.prototype.values',function(a){return a?a:function(){return ma(this,function(b,c){return c})}});
var z={wa:'loaded',Da:'start',qa:'firstQuartile',ya:'midpoint',Ea:'thirdQuartile',oa:'complete',za:'pause',Ba:'resume',na:'bufferStart',ma:'bufferFinish',Ca:'skipped',Ga:'volumeChange',Aa:'playerStateChange',ja:'adUserInteraction'},na={ta:'generic',Fa:'video',xa:'media'},oa={ba:'native',ua:'html',V:'javascript'},pa={ba:'native',V:'javascript',NONE:'none'},qa={sa:'full',pa:'domain',va:'limited'},ra={la:'backgrounded',ra:'foregrounded'},sa={ka:'app',Ha:'web'};function A(a,b){this.x=null!=a.x?a.x:a.left;this.y=null!=a.y?a.y:a.top;this.width=a.width;this.height=a.height;this.endX=this.x+this.width;this.endY=this.y+this.height;this.adSessionId=a.adSessionId||void 0;this.isFriendlyObstructionFor=a.isFriendlyObstructionFor||[];this.h=a.friendlyObstructionClass||void 0;this.i=a.friendlyObstructionPurpose||void 0;this.j=a.friendlyObstructionReason||void 0;this.clipsToBounds=void 0!==a.clipsToBounds?!0===a.clipsToBounds:!0;this.m=void 0!==a.hasWindowFocus?!0===
a.hasWindowFocus:!0;this.notVisibleReason=a.notVisibleReason||void 0;this.noOutputDevice=a.noOutputDevice||void 0;this.childViews=a.childViews||[];this.isCreative=a.isCreative||!1;this.g=b}function ta(a){var b={};return b.width=a.width,b.height=a.height,b}function B(a){var b={};return Object.assign({},ta(a),(b.x=a.x,b.y=a.y,b))}function E(a){var b=B(a),c={};return Object.assign({},b,(c.endX=a.endX,c.endY=a.endY,c))}function ua(a,b,c){a.x+=b;a.y+=c;a.endX+=b;a.endY+=c}
A.prototype.M=function(a){if(null==a)return!1;a=B(a);var b=a.y,c=a.width,d=a.height;return this.x===a.x&&this.y===b&&this.width===c&&this.height===d};function va(a){return a.width*a.height}function F(a){return 0===a.width||0===a.height};function wa(a,b){a=B(a);for(var c=[],d=[],e=0;e<b.length;e++){var f=B(b[e]);f=xa(a,f);I(c,f.x);I(c,f.endX);I(d,f.y);I(d,f.endY)}c=c.sort(function(k,g){return k-g});d=d.sort(function(k,g){return k-g});return{ha:c,ia:d}}function xa(a,b){return{x:Math.max(a.x,b.x),y:Math.max(a.y,b.y),endX:Math.min(a.x+a.width,b.x+b.width),endY:Math.min(a.y+a.height,b.y+b.height)}}function I(a,b){-1===a.indexOf(b)&&a.push(b)};function J(){this.h=this.g=this.D=this.u=this.m=this.s=void 0;this.A=0;this.l=[];this.v=[];this.C=0;this.o=[];this.j=[];this.i=[]}J.prototype.M=function(a){return null==a?!1:JSON.stringify(ya(this))===JSON.stringify(ya(a))};
function ya(a){var b=[],c=[],d={viewport:a.s,adView:{percentageInView:a.A,pixelsInView:a.C,reasons:a.i},declaredFriendlyObstructions:a.l.length};if(void 0!==a.g){d.adView.geometry=B(a.g);d.adView.geometry.pixels=va(a.g);d.adView.onScreenGeometry=B(a.h);d.adView.onScreenGeometry.pixels=za(a);for(var e=0;e<a.j.length;e++)b.push(B(a.j[e]));for(e=0;e<a.v.length;e++){var f=a.v[e],k=f,g={};k.h&&(g.obstructionClass=k.h);k.i&&(g.obstructionPurpose=k.i);k.j&&(g.obstructionReason=k.j);f=xa(a.g,f);c.push(Object.assign({},
{x:f.x,y:f.y,width:f.endX-f.x,height:f.endY-f.y},g))}d.adView.onScreenGeometry.obstructions=b;d.adView.onScreenGeometry.friendlyObstructions=c;void 0!==a.u&&void 0!==a.D&&(d.adView.containerGeometry=B(a.u),d.adView.onScreenContainerGeometry=B(a.D),d.adView.measuringElement=!0)}return d}function Aa(a,b){b=ta(b);a.s={};a.s.width=b.width;a.s.height=b.height;a.m={};a.m.x=0;a.m.y=0;a.m.width=b.width;a.m.height=b.height;a.m.endX=b.width;a.m.endY=b.height}
function Ba(){return{x:0,y:0,endX:0,endY:0,width:0,height:0}}function Ca(a,b){var c={};c.x=Math.max(a.x,b.x);c.y=Math.max(a.y,b.y);c.endX=Math.min(a.endX,b.endX);c.endY=Math.min(a.endY,b.endY);c.width=Math.max(0,c.endX-c.x);c.height=Math.max(0,c.endY-c.y);return c}function Da(a,b){return.01<b.width-a.width||.01<b.height-a.height}function Ea(a){if(-1!==a.i.indexOf('backgrounded'))a.A=0,a.C=0;else{var b=va(a.g);if(0!==b){var c=za(a);a.A=Math.round(c/b*100);a.C=c}}}
function Fa(a,b){if(F(b)||!a.h)b=!1;else{var c=E(a.h),d=c.y,e=c.endX;a=c.endY;var f=b.endX;c=c.x;(f=f<c||.01>Math.abs(f-c))||(f=b.x,f=f>e||.01>Math.abs(f-e));(e=f)||(e=b.endY,e=e<d||.01>Math.abs(e-d));(d=e)||(b=b.y,d=b>a||.01>Math.abs(b-a));b=!d}return b}function K(a,b){for(var c=!1,d=0;d<a.i.length;d++)a.i[d]===b&&(c=!0);c||a.i.push(b)}
function za(a){var b=Math,c=b.max,d=va(a.h),e=a.j,f=0;if(0<e.length){var k=wa(a.h,e);a=k.ha;k=k.ia;for(var g=0;g<a.length-1;g++)for(var h=(a[g]+(a[g]+1))/2,l=a[g+1]-a[g],n=0;n<k.length-1;n++){for(var t=(k[n]+(k[n]+1))/2,C=k[n+1]-k[n],y=!1,G=0;G<e.length;G++){var H=B(e[G]);if(H.x<h&&H.x+H.width>h&&H.y<t&&H.y+H.height>t){y=!0;break}}y&&(f+=Math.round(l)*Math.round(C))}}return c.call(b,0,d-f)};function Ga(){};function Ha(){}
function Ia(a,b,c,d,e){var f=new J;b=new A(b,!1);Aa(f,b);Ja(a,b,f,d);if(!e)return f.i=['unmeasurable'],f.s=void 0,f.A=0,f.j=[],f.g&&(a=f.g,c={},a=new A((c.x=0,c.y=0,c.width=a.width,c.height=a.height,c),a.g),f.g=a),f.h=Ba(),f;b.noOutputDevice&&(K(f,'backgrounded'),K(f,'noOutputDevice'));if('backgrounded'===c)K(f,'backgrounded');else if(void 0!==f.g){for(a=0;a<f.l.length;a++)Fa(f,f.l[a])&&f.v.push(f.l[a]);for(a=0;a<f.o.length;a++){if(c=Fa(f,f.o[a])){a:{c=f.o[a];for(d=0;d<f.j.length;d++)if(f.j[d].M(c)){c=!0;
break a}c=!1}c=!c}c&&(K(f,'obstructed'),f.j.push(f.o[a]))}Ea(f)}else K(f,'notFound');return f}
function Ja(a,b,c,d){var e=b.isCreative?!0:b.adSessionId===d;if(e){c.g=b;var f=E(c.g);a=Ca(c.m,f);var k=c.g;'notAttached'===k.notVisibleReason||'noWindowFocus'===k.notVisibleReason||'noAdView'===k.notVisibleReason?(K(c,'notFound'),c.h=new A(Ba(),!1)):(k=c.g,'viewInvisible'===k.notVisibleReason||'viewGone'===k.notVisibleReason||'viewNotVisible'===k.notVisibleReason||'viewAlphaZero'===k.notVisibleReason||'viewHidden'===k.notVisibleReason||void 0!==c.g.notVisibleReason||F(c.g)?(K(c,'hidden'),c.h=new A(Ba(),
!1)):(c.g.m||(K(c,'backgrounded'),K(c,'noWindowFocus')),Da(a,f)&&K(c,'clipped'),c.h=new A(a,!1)))}else if(f=!0,b.g&&(f=-1!==b.isFriendlyObstructionFor.indexOf(d)?!1:!1===b.clipsToBounds),f){k=b.childViews;for(var g=0;g<k.length;g++)f=void 0!==c.g,Ja(a,new A(k[g],f),c,d)}e||void 0===c.g||(b.g?-1!==b.isFriendlyObstructionFor.indexOf(d)?c.l.push(b):c.o.push(b):(e=E(b),d=E(c.h),B(c.h),!F(c.h)&&b.clipsToBounds&&(b=Ca(d,e),Da(b,d)&&(K(c,'clipped'),c.h=new A(b,!1)))))};function Ka(){this.h=new Map;this.g=null}function La(){Ma||(Ma=new Ka);return Ma}var Ma=null;function Na(a,b){this.y=this.x=0;this.width=a;this.height=b};function Oa(){this.adSessionId=null;this.o={apiVersion:'1.0',accessMode:'limited',environment:'app',omidJsInfo:{omidImplementer:'omsdk',serviceVersion:'1.4.12-iab4299'}};this.C=null;this.A='foregrounded';this.u=this.l='none';this.s=this.j=this.i=this.m=this.h=this.g=this.J=this.D=null;this.I=!0;this.v=new Map}
function Pa(a,b){void 0!==b.contentUrl&&(a.C=b.contentUrl,b.contentUrl=void 0);var c=a.o||{};b.omidJsInfo=Object.assign({},c.omidJsInfo||{},b.omidJsInfo||{});b=Object.assign({},c,b);a.I||(null!=a.j?(b.videoElement=a.j,b.accessMode='full'):null!=a.i&&(b.slotElement=a.i,b.accessMode='full'));a.o=b};var L=function(){if('undefined'!==typeof omidGlobal&&omidGlobal)return omidGlobal;if('undefined'!==typeof global&&global)return global;if('undefined'!==typeof window&&window)return window;if('undefined'!==typeof globalThis&&globalThis)return globalThis;var a=Function('return this')();if(a)return a;throw Error('Could not determine global object context.');}();function Qa(a,b){this.g=a;this.h=b}da.Object.defineProperties(Qa.prototype,{event:{configurable:!0,enumerable:!0,get:function(){return this.g}},origin:{configurable:!0,enumerable:!0,get:function(){return this.h}}});function M(){var a=w.apply(0,arguments);Ra(function(){throw new (Function.prototype.bind.apply(Error,[null,'Could not complete the test successfully - '].concat(q(a))));},function(){return console.error.apply(console,q(a))})}function Sa(){var a=w.apply(0,arguments);Ra(function(){},function(){return console.error.apply(console,q(a))})}function Ra(a,b){'undefined'!==typeof jasmine&&jasmine?a():'undefined'!==typeof console&&console&&console.error&&b()};function Ta(a){this.g=a;this.m=[];this.i=[];this.j=[];this.l=[];this.o={}}function Ua(a,b){if(void 0!==a.g&&a.g.adSessionId&&!1!==Va(a,b)){var c=b.event;a.j.filter(function(d){return d.type===c.type}).forEach(function(d){a.h(d.G,c)})}}function Wa(a,b){a.m.push(b);Ua(a,b)}function Xa(a,b,c){void 0!==a.g&&a.g.adSessionId&&a.m.filter(function(d){return d.event.type===b&&Va(a,d)}).map(function(d){return d.event}).forEach(function(d){a.h(c.G,d)})}
function Va(a,b){var c=b.event.type,d=-1!==Object.values(z).indexOf(c)&&'volumeChange'!==c;return'impression'===c||'loaded'===c&&a.g.h?b.origin===a.g.u:d?b.origin===a.g.l:!0}function Ya(a,b,c){Object.keys(z).forEach(function(d){d=z[d];var e={type:d,P:c,G:b};a.j.push(e);Xa(a,d,e)})}function Za(a,b,c,d){var e={U:c,P:d,G:b};a.l.push(e);a.i.forEach(function(f){var k=$a(f);'sessionStart'===f.event.type&&ab(a,k,e);a.h(e.G,k)})}
function bb(a,b,c){var d=N(a,'sessionError','native',{errorType:b,message:c});a.i.push(d);a.l.forEach(function(e){a.h(e.G,d.event)})}function cb(a,b){a.o=Object.assign(a.o,b);b=a.g.o;if(void 0!==b){b=Object.assign({},db(eb(a,fb(a,{context:b}),!0)),{supportsLoadedEvent:!!a.g.h||'video'==a.g.g});Object.assign(b,{pageUrl:null,contentUrl:a.g.C});var c=N(a,'sessionStart','native',b);a.i.push(c);a.l.forEach(function(d){var e=$a(c);ab(a,e,d);a.h(d.G,e)},a);gb(a)}}
function ab(a,b,c){c.U&&(b.data.verificationParameters=a.o[c.U]);c.P&&(c=a.g.v.get(c.P))&&(b.data.verificationParameters=c.verificationParameters,b.data.context.accessMode=c.accessMode,'full'===c.accessMode&&(a.g.j&&(b.data.context.videoElement=a.g.j),a.g.i&&(b.data.context.slotElement=a.g.i)))}function hb(a){var b=N(a,'sessionFinish','native');a.i.push(b);a.l.forEach(function(c){a.h(c.G,b.event)})}Ta.prototype.h=function(a){var b=w.apply(1,arguments);try{a.apply(null,q(b))}catch(c){Sa(c)}};
function ib(a,b){var c=(c=a.g.K)?ya(c):null;c=eb(a,fb(a,c));Wa(a,N(a,'impression',b,c))}function jb(a,b,c){if(a.g.h||'display'!=a.g.g)b=N(a,'loaded',b,eb(a,fb(a,void 0===c?null:c))),Wa(a,b)}
function kb(a,b,c,d){'start'!==b&&'volumeChange'!==b||null!=(d&&d.deviceVolume)||(d.deviceVolume=a.g.D);if(d&&('start'===b||'volumeChange'===b)){var e=d.videoPlayerVolume,f=d.mediaPlayerVolume;null!=e?(Object.assign(d,{mediaPlayerVolume:e}),a.g.J=e):null!=f&&(Object.assign(d,{videoPlayerVolume:f}),a.g.J=f)}Wa(a,N(a,b,c,d))}
function gb(a){var b=a.m.filter(function(f){return Object.values(z).includes(f.event.type)&&'video'==a.g.g&&f.origin===a.g.l||'loaded'==f.event.type&&'display'==a.g.g&&f.origin===a.g.u?!0:!1}).map(function(f){return f.event}),c=a.g.adSessionId||'',d={};b=p(b);for(var e=b.next();!e.done;d={F:d.F},e=b.next()){d.F=e.value;d.F.adSessionId||(d.F.adSessionId=c);if('loaded'==d.F.type){if(!a.g.h&&'display'==a.g.g)continue;d.F.data=eb(a,fb(a,d.F.data))}a.j.filter(function(f){return function(k){return k.type===
f.F.type}}(d)).forEach(function(f){return function(k){return k.G(f.F)}}(d))}}function lb(a,b,c){a:{c=new Set(c);a=p(a.m.concat(a.i));for(var d=a.next();!d.done;d=a.next())if(d=d.value,c.has(d.event.type)&&d.origin!=b){b=!0;break a}b=!1}return b?(M('Event owner cannot be registered after its events have already been published.'),!1):!0}function mb(a,b){lb(a,b,Object.values(z))&&nb(a,b)&&(a.g.l=b)}function ob(a,b){lb(a,b,['impression'])&&pb(a,b)&&(a.g.u=b)}
function pb(a,b){var c=a.g.u;return'none'!=c&&c!=b?(M('Impression event is owned by '+(a.g.u+', not ')+(b+'.')),!1):!0}function nb(a,b){var c=a.g.l;return'none'!=c&&c!=b?(M('Media events are owned by '+(a.g.l+', not '+b+'.')),!1):!0}function eb(a,b,c){c=void 0===c?!1:c;b=Object.assign({},b);a.g.g&&Object.assign(b,{mediaType:a.g.g});a.g.h&&(c||'definedByJavaScript'!==a.g.h)&&Object.assign(b,{creativeType:a.g.h});return b}function db(a){var b=La().g;return b?Object.assign({},a,{lastActivity:b}):a}
function fb(a,b){return a.g.m?Object.assign({},b,{impressionType:a.g.m}):b}function N(a,b,c,d){return new Qa({adSessionId:a.g.adSessionId||'',timestamp:(new Date).getTime(),type:b,data:d},c)}function $a(a){a=a.event;var b=a.data?Object.assign({},a.data):void 0;'sessionStart'===a.type&&(b.context=Object.assign({},b.context));return{adSessionId:a.adSessionId,timestamp:a.timestamp,type:a.type,data:b}};function qb(a,b,c){this.h=a;this.i=b;this.g=c}
function rb(a,b,c){'container'===b&&void 0!==a.g.L&&void 0!==a.g&&null!=a.g.adSessionId&&(a.g.N=Ia(a.i,a.g.L,a.g.A,a.g.adSessionId,!0));b=a.g;var d=b.N,e=b.O;if(d)if(e){b=new J;var f=d.s,k=d.g,g=d.h,h=e.g,l=e.h;f&&k&&g&&h&&l&&(Aa(b,f),b.u=new A(k,!1),b.D=new A(g,!1),b.o=Object.assign([],d.o),b.j=Object.assign([],d.j),b.l=Object.assign([],d.l),b.v=Object.assign([],d.v),b.i=Object.assign([],e.i,d.i),d=b.u.x,e=b.u.y,h=new A(h,!1),l=new A(l,!1),ua(h,d,e),ua(l,d,e),b.g=h,b.h=Ca(l,g),Ea(b))}else b=d;else b=
null;g=a.g.K;if(b&&!b.M(g)||c)g=ya(b),c&&(g.adView.reasons=g.adView.reasons||[c]),c=a.h,'audio'!=c.g.h&&Wa(c,N(c,'geometryChange','native',g)),a.g.K=b};function sb(a,b,c){return tb(a,'setInterval')(b,c)}function ub(a,b){tb(a,'clearInterval')(b)}function vb(a,b){tb(a,'clearTimeout')(b)}function tb(a,b){return a.g&&a.g[b]?a.g[b]:wb(a,b)}
function xb(a,b,c,d){if(a.g.document&&a.g.document.body){var e=a.g.document.createElement('img');e.width=1;e.height=1;e.style.display='none';e.src=b;c&&e.addEventListener('load',function(){return c()});d&&e.addEventListener('error',function(){return d()});a.g.document.body.appendChild(e)}else wb(a,'sendUrl')(b,c,d)}function wb(a,b){if(a.g&&a.g.omidNative&&a.g.omidNative[b])return a.g.omidNative[b].bind(a.g.omidNative);throw Error('Native interface method "'+b+'" not found.');};function O(a){return'object'===typeof a}function P(a){return'number'===typeof a&&!isNaN(a)&&0<=a}function Q(a){return'string'===typeof a}function R(a,b){return Q(a)&&-1!==Object.values(b).indexOf(a)}function yb(a){return!(!a||!a.tagName||'iframe'!==a.tagName.toLowerCase())};function S(a,b,c,d,e){this.m=a;this.aa=b;this.L=c;this.i=d;this.T=e;this.h=null;this.g=this.j=this.D=void 0;this.O=!0;this.J=void 0;zb(this)}
function zb(a){if(!a.h){var b;a:{if((b=a.m.document)&&b.getElementsByClassName&&(b=b.getElementsByClassName('omid-element'))){if(1==b.length){b=b[0];break a}1<b.length&&a.O&&(bb(a.L,'generic',"More than one element with 'omid-element' class name."),a.O=!1)}b=null}if(b&&b.tagName&&'video'===b.tagName.toLowerCase())a.i.j=b;else if(b&&b.tagName)a.i.i=b;else return;Ab(a)}}function Ab(a){a.i.j?(a.h=a.i.j,a.o()):a.i.i&&(a.h=a.i.i,yb(a.h)?a.i.s&&a.o():a.o())}
function Bb(a){a.g&&(yb(a.h)?a.i.s&&(a.K(),Cb(a)):(a.K(),Cb(a)))}S.prototype.A=function(){this.J&&(this.m.document.removeEventListener('visibilitychange',this.J),this.J=void 0)};S.prototype.o=function(){};function Cb(a){a.D&&(a.i.O=a.D,rb(a.aa,'creative'))}function Db(a){if(a.g&&a.i.s){var b=new A(a.i.s,!1);ua(b,a.g.x,a.g.y);b.clipsToBounds=!0;return b}};function T(a,b,c,d,e,f){S.call(this,a,c,d,e,f);this.s=b;this.l=void 0}v(T,S);T.prototype.A=function(){void 0!==this.l&&(ub(this.T,this.l),this.l=void 0);S.prototype.A.call(this)};T.prototype.o=function(){var a=this;S.prototype.o.call(this);null==this.h?this.l=void 0:void 0===this.l&&(this.l=sb(this.T,function(){return Eb(a)},200),Eb(this))};
T.prototype.K=function(){if(this.j){var a=Db(this);if(a){this.g.isCreative=!1;a.isCreative=!0;for(var b=!1,c=0;c<this.g.childViews.length;c++)if(this.g.childViews[c].isCreative){this.g.childViews[c]=a;b=!0;break}b||this.g.childViews.push(a)}else this.g.isCreative=!0;this.D=Ia(this.s,this.j,this.i.A,this.i.adSessionId,this.I())}};T.prototype.I=function(){return!0};
function Eb(a){if(void 0!==a.l){b:{try{var b=a.m.top;var c=0<=b.innerHeight&&0<=b.innerWidth;break b}catch(d){}c=!1}c?(c=a.m.top,c=new A(new Na(c.innerWidth,c.innerHeight),!1)):c=new A(new Na(0,0),!1);b=a.h.getBoundingClientRect();if(null==b.x||isNaN(b.x))b.x=b.left;if(null==b.y||isNaN(b.y))b.y=b.top;b=new A(b,!1);c.M(a.j)&&b.M(a.g)||(a.g=b,a.g.clipsToBounds=!0,a.j=c,a.j.childViews.push(a.g),Bb(a))}};function U(a,b,c,d,e,f){S.call(this,a,c,d,e,f);this.v=this.s=this.u=this.l=void 0;this.N=!1;this.C=void 0}v(U,S);U.prototype.A=function(){this.l&&this.l.disconnect();Fb(this);S.prototype.A.call(this)};U.prototype.o=function(){S.prototype.o.call(this);if(this.h&&(this.l||(this.l=Gb(this)),Hb(this),Ib(this.h)&&Jb(this),'backgrounded'===this.i.A)){var a=Kb(new Na(0,0));this.C=this.g=this.j=a;Bb(this)}};
U.prototype.K=function(){if(this.g&&this.C){var a=Db(this);if(a){var b=a;var c=this.C;var d=Math.max(a.x,c.x);var e=Math.max(a.y,c.y),f=Math.min(a.endX,c.endX);a=Math.min(a.endY,c.endY);f<=d||a<=e?d=null:(c={},d=new A((c.x=d,c.y=e,c.width=Math.abs(f-d),c.height=Math.abs(a-e),c),!1));d||(d=new A({x:0,y:0,width:0,height:0},!1))}else b=this.g,d=this.C;e=new J;this.j&&Aa(e,this.j);e.g=b;e.h=d;Ea(e);this.N?F(e.g)?K(e,'hidden'):100===e.A||K(e,'clipped'):K(e,'viewport');this.D=e}};U.prototype.I=function(){return!0};
function Fb(a){a.u&&(a.u.disconnect(),a.u=void 0);a.s&&(a.s.disconnect(),a.s=void 0);a.v&&((0,a.m.removeEventListener)('resize',a.v),a.v=void 0)}function Hb(a){a.l&&a.h&&(a.l.unobserve(a.h),a.l.observe(a.h))}function Ib(a){a=a.getBoundingClientRect();return 0==a.width||0==a.height}
function Gb(a){return new a.m.IntersectionObserver(function(b){try{if(b.length){for(var c,d=b[0],e=1;e<b.length;e++)b[e].time>d.time&&(d=b[e]);c=d;a.j=Kb(c.rootBounds);a.g=Kb(c.boundingClientRect);a.C=Kb(c.intersectionRect);a.N=!!c.isIntersecting;Bb(a)}}catch(f){a.A(),bb(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 Jb(a){a.m.ResizeObserver?a.u||(a.u=Lb(a,function(){return Mb(a)}),a.u.observe(a.h)):(a.v||(a.v=function(){return Mb(a)},(0,a.m.addEventListener)('resize',a.v)),a.s||(a.s=new MutationObserver(function(){return Mb(a)}),a.s.observe(a.h,{childList:!1,attributes:!0,subtree:!1})))}function Mb(a){a.h&&!Ib(a.h)&&(Hb(a),Fb(a))}function Lb(a,b){return new a.m.ResizeObserver(b)}function Kb(a){if(a&&null!==a.x&&null!==a.y&&null!==a.width&&null!==a.height)return new A(a,!1)};function Ob(a,b){this.h=a;this.g=b};function Pb(){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 Qb(a,b){var c=void 0===c?L:c;this.j=a;this.g=c;this.i=b;this.h=[]}
function Rb(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.I?'limited':'full',e=R(c.accessMode,qa)?c.accessMode:null;var f=e?'full'==e&&'limited'==d?d:'domain'==e?'limited':e:d;c.accessMode=f;a:{var k=c.resourceUrl,g=a.g.location.origin;try{var h=new URL(k,g);break a}catch(G){}try{h=new URL(k);break a}catch(G){}h=null}if(d=h){var l=Pb(),n=a.g.document,t=n.createElement('iframe');t.id='omid-verification-script-frame-'+
l;t.style.display='none';['full','limited'].includes(f)?t.srcdoc="<html><head>\n<script type=\"text/javascript\">window['omidVerificationProperties'] = {\n'serviceWindow': window.parent,\n'injectionSource': 'app',\n'injectionId': '"+(l+'\',\n};\x3c/script>\n<script type="text/javascript" src="')+d.href+'">\x3c/script>\n</head><body></body></html>':'domain'==f&&(t.src=Sb(a,l,d).href);['domain','limited'].includes(f)&&(t.sandbox='allow-scripts');n.body.appendChild(t);La().h.set(l,t);var C=c.vendorKey,
y=c.verificationParameters;C=void 0===C?'':C;y=void 0===y?'':y;C&&'string'===typeof C&&''!==C&&y&&'string'===typeof y&&''!==y&&(a.j.o[C]=y);a.i.v.set(l,c)}}catch(G){Sa('OMID verification script '+c.resourceUrl+' failed to load: '+G)}})}
function Sb(a,b,c){var d='/.well-known/omid/omloader-v1.html#';(new Map([['verificationScriptUrl',c.href],['injectionId',b]])).forEach(function(e,f){d+=encodeURIComponent(f)+'='+encodeURIComponent(e)+'&'});b=null;try{b=new URL(d,a.g.parent.location.origin)}catch(e){throw Error('OMID Service Script cannot access the parent window.');}return b};function Tb(a,b,c,d,e,f){var k=this;this.g=a;this.h=b;this.j=c;this.i=d;this.l=e;this.o=f;this.m=!1;Ub(this,function(g){if('sessionStart'===g.type){k.m=!0;try{Rb(k.l)}catch(h){M(h.message)}}'sessionFinish'===g.type&&(k.m=!1)})}function Ub(a,b,c,d){Za(a.h,b,c,d)}m=Tb.prototype;m.setSlotElement=function(a){a&&a.tagName?(this.g.i=a,this.i&&Ab(this.i)):M('setSlotElement called with a non-HTMLElement. It will be ignored.')};m.setElementBounds=function(a){this.g.s=a;this.i&&Ab(this.i);this.i&&Bb(this.i)};
m.error=function(a,b){bb(this.h,a,b)};m.injectVerificationScriptResources=function(a){var b=this.l;b.h.push.apply(b.h,q(a));if(this.m)try{Rb(this.l)}catch(c){M(c.message)}};m.setCreativeType=function(a,b){b=void 0===b?null:b;if(!this.g.g||this.g.h)this.g.h=a,'video'==a||'audio'==a?this.g.g='video':'htmlDisplay'==a||'nativeDisplay'==a?this.g.g='display':'definedByJavaScript'==a&&b&&(this.g.g='none'==b?'display':'video')};m.setImpressionType=function(a){if(!this.g.g||this.g.h)this.g.m=a};
m.setClientInfo=function(a,b,c){var d=this.g.o||{};d.omidJsInfo=Object.assign({},d.omidJsInfo,{sessionClientVersion:a,partnerName:b,partnerVersion:c});this.g.o=d;return this.g.o.omidJsInfo.serviceVersion};function Vb(a,b){if(!b)return a.g;for(var c=p(a.h.values()),d=c.next();!d.done;d=c.next())if(d=d.value,d.g.v.has(b))return d;return a.g}function V(a,b){return null==b?a.g:a.h.get(b)||a.g}function Wb(a){var b=new Oa,c=new Ta(b),d=new Ga,e=new Ha,f=new qb(c,e,b);a=a.i;var k=omidGlobal;d=k?k.IntersectionObserver&&(k.MutationObserver||k.ResizeObserver)?new U(k,d,f,c,b,a):new T(k,e,f,c,b,a):null;return new Tb(b,c,f,d,new Qb(c,b),new Ob(c,b))};function Xb(a){return a&&O(a)?Object.entries(a).reduce(function(b,c){var d=p(c);c=d.next().value;d=d.next().value;return b&&Q(c)&&null!=d&&O(d)&&Q(d.resourceUrl)},!0):!1};function W(a,b,c,d){this.h=a;this.method=b;this.version=c;this.g=d}function Yb(a){return!!a&&void 0!==a.omid_message_guid&&void 0!==a.omid_message_method&&void 0!==a.omid_message_version&&'string'===typeof a.omid_message_guid&&'string'===typeof a.omid_message_method&&'string'===typeof a.omid_message_version&&(void 0===a.omid_message_args||void 0!==a.omid_message_args)}function Zb(a){return new W(a.omid_message_guid,a.omid_message_method,a.omid_message_version,a.omid_message_args)}
function $b(a){var b={};b=(b.omid_message_guid=a.h,b.omid_message_method=a.method,b.omid_message_version=a.version,b);void 0!==a.g&&(b.omid_message_args=a.g);return b};function ac(a){this.i=a};function X(a){this.i=a;this.handleExportedMessage=X.prototype.j.bind(this)}v(X,ac);X.prototype.h=function(a,b){b=void 0===b?this.i:b;if(!b)throw Error('Message destination must be defined at construction time or when sending the message.');b.handleExportedMessage($b(a),this)};X.prototype.j=function(a,b){Yb(a)&&this.g&&this.g(Zb(a),b)};function bc(a){return cc(a,'SessionService.')}function cc(a,b){return(a=a.match(new RegExp('^'+b+'(.*)')))&&a[1]};function dc(a,b){this.i=b=void 0===b?L:b;var c=this;a.addEventListener('message',function(d){if('object'===typeof d.data){var e=d.data;Yb(e)&&d.source&&c.g&&c.g(Zb(e),d.source)}})}v(dc,ac);dc.prototype.h=function(a,b){b=void 0===b?this.i:b;if(!b)throw Error('Message destination must be defined at construction time or when sending the message.');b.postMessage($b(a),'*')};function ec(a,b){b=void 0===b?{}:b;var c=L.webkit?L.webkit.messageHandlers.omidJsSessionService:L.omidJsSessionService;if(!c)return!1;c.postMessage(JSON.stringify({method:a,data:b}));return!0};function fc(){this.g=gc}m=fc.prototype;m.registerSessionObserver=function(a,b){Ub(V(this.g,a),b)};m.setSlotElement=function(a,b){V(this.g,a).setSlotElement(b)};m.setElementBounds=function(a,b){V(this.g,a).setElementBounds(b)};
function hc(a,b,c,d,e){e=void 0===e?null:e;a=V(a.g,b);d?(b=b||Pb(),a.g.adSessionId=b,c.canMeasureVisibility=a.i.I(),Pa(a.g,c),cb(a.h,e),a.i&&zb(a.i)):b?(c.Ja=!0,Pa(a.g,c),ec('startSession',{adSessionId:b})||M('On App, the native-layer JS Session Service must be initialized before starting an ad session using the JS API.')):M('Session client must be updated to start an App session from JS.')}
function ic(a,b,c){c?(b=V(a.g,b),a=a.g,a.g=Wb(a),hb(b.h),b.i.A()):b?ec('finishSession',{adSessionId:b})||M('On App, the native-layer JS Session Service must be initialized before finishing an ad session using the JS API.'):M('Session client must be updated to finish an App session from JS.')}m.error=function(a,b,c){V(this.g,a).error(b,c)};
function Y(a,b,c,d){a=V(a.g,b);'impression'==c?pb(a.h,'javascript')&&(ib(a.h,'javascript'),a.i&&zb(a.i)):('loaded'==c?(d=void 0===d?null:d,nb(a.h,'javascript')&&jb(a.h,'javascript',d)):nb(a.h,'javascript')&&kb(a.h,c,'javascript',d),['loaded','start'].includes(c)&&a.i&&zb(a.i))}m.injectVerificationScriptResources=function(a,b){V(this.g,a).injectVerificationScriptResources(b)};m.setCreativeType=function(a,b,c){c=void 0===c?null:c;V(this.g,a).setCreativeType(b,c)};
m.setImpressionType=function(a,b){V(this.g,a).setImpressionType(b)};m.setClientInfo=function(a,b,c,d){var e=this.g;if(null==a)a=e.g;else{var f=[].concat(q(e.h.values())).includes(e.g)?Wb(e):e.g;e.h.set(a,f);a=f}return a.setClientInfo(b,c,d)};function jc(a){a=a.split('-')[0].split('.');for(var b=['1','0','3'],c=0;3>c;c++){var d=parseInt(a[c],10),e=parseInt(b[c],10);if(d>e)break;else if(d<e)return!1}return!0};function kc(a,b){return/\d+\.\d+\.\d+(-.*)?/.test(a)&&jc(a)?b:JSON.stringify(b)}function lc(a,b){return/\d+\.\d+\.\d+(-.*)?/.test(a)&&jc(a)?b?b:[]:b&&'string'===typeof b?JSON.parse(b):[]};function mc(){var a=nc;var b=void 0===b?omidGlobal:b;this.g=a;this.i=b;this.j=new X;this.i.omid=this.i.omid||{};this.i.omid.v1_SessionServiceCommunication=this.j;this.h=b&&b.addEventListener&&b.postMessage?new dc(b):null;this.j.g=this.m.bind(this);this.h&&(this.h.g=this.l.bind(this))}mc.prototype.m=function(a,b){null!=bc(a.method)&&oc(this,a,b,this.j)};mc.prototype.l=function(a,b){null!=bc(a.method)&&oc(this,a,b,this.h)};
function oc(a,b,c,d){function e(){var h=new W(f,'response',g,kc(g,w.apply(0,arguments)));d.h(h,c)}var f=b.h,k=b.method,g=b.version;b=lc(g,b.g);try{pc(a,k,e,b)}catch(h){d.h(new W(f,'error',g,'\n name: '+h.name+'\n message: '+h.message+'\n filename: '+h.filename+'\n lineNumber: '+h.lineNumber+'\n columnNumber: '+h.columnNumber+'\n stack: '+h.stack+'\n toString(): '+h.toString()),c)}}
function pc(a,b,c,d){if(null!=bc(b))switch(bc(b)){case 'registerAdEvents':c=p(d).next().value;ob(V(a.g.g,c).h,'javascript');break;case 'registerMediaEvents':c=p(d).next().value;mb(V(a.g.g,c).h,'javascript');break;case 'registerSessionObserver':b=p(d).next().value;a.g.registerSessionObserver(b,c);break;case 'setSlotElement':b=p(d);c=b.next().value;b=b.next().value;a.g.setSlotElement(b,c);break;case 'setVideoElement':b=p(d);c=b.next().value;b=b.next().value;a=V(a.g.g,b);c&&c.tagName&&'video'===c.tagName.toLowerCase()?
(a.g.j=c,a.i&&Ab(a.i)):M('setVideoElement called with a non-HTMLVideoElement. It will be ignored.');break;case 'setElementBounds':b=p(d);c=b.next().value;b=b.next().value;a.g.setElementBounds(b,c);break;case 'startSession':b=p(d);c=b.next().value;b=b.next().value;null!=c&&O(c)?(d=c.customReferenceData,c=c.underEvaluation,Q(d)||(d=void 0),'boolean'===typeof c||(c=!1),c={customReferenceData:d,underEvaluation:c}):c=null;if(null==c)break;hc(a.g,b,c,!1);break;case 'finishSession':c=p(d).next().value;ic(a.g,
c,!1);break;case 'impressionOccurred':c=p(d).next().value;Y(a.g,c,'impression');break;case 'loaded':b=p(d);c=b.next().value;b=b.next().value;c?(d={skippable:c.isSkippable,autoPlay:c.isAutoPlay,position:c.position},c.isSkippable&&(d.skipOffset=c.skipOffset),Y(a.g,b,'loaded',d)):Y(a.g,b,'loaded');break;case 'start':d=p(d);c=d.next().value;b=d.next().value;d=d.next().value;Y(a.g,d,'start',{duration:c,mediaPlayerVolume:b});break;case 'firstQuartile':c=p(d).next().value;Y(a.g,c,'firstQuartile');break;
case 'midpoint':c=p(d).next().value;Y(a.g,c,'midpoint');break;case 'thirdQuartile':c=p(d).next().value;Y(a.g,c,'thirdQuartile');break;case 'complete':c=p(d).next().value;Y(a.g,c,'complete');break;case 'pause':c=p(d).next().value;Y(a.g,c,'pause');break;case 'resume':c=p(d).next().value;Y(a.g,c,'resume');break;case 'bufferStart':c=p(d).next().value;Y(a.g,c,'bufferStart');break;case 'bufferFinish':c=p(d).next().value;Y(a.g,c,'bufferFinish');break;case 'skipped':c=p(d).next().value;Y(a.g,c,'skipped');
break;case 'volumeChange':b=p(d);c=b.next().value;b=b.next().value;Y(a.g,b,'volumeChange',{mediaPlayerVolume:c});break;case 'playerStateChange':b=p(d);c=b.next().value;b=b.next().value;Y(a.g,b,'playerStateChange',{state:c});break;case 'adUserInteraction':b=p(d);c=b.next().value;b=b.next().value;Y(a.g,b,'adUserInteraction',{interactionType:c});break;case 'setClientInfo':var e=p(d);b=e.next().value;d=e.next().value;var f=e.next().value;e=e.next().value;a=a.g.setClientInfo(e,b,d,f);c(a);break;case 'injectVerificationScriptResources':b=
p(d);c=b.next().value;b=b.next().value;a.g.injectVerificationScriptResources(b,c);break;case 'setCreativeType':b=p(d);c=b.next().value;b=b.next().value;a.g.setCreativeType(b,c);break;case 'setImpressionType':b=p(d);c=b.next().value;b=b.next().value;a.g.setImpressionType(b,c);break;case 'setContentUrl':b=p(d);c=b.next().value;b=b.next().value;V(a.g.g,b).g.C=c;break;case 'sessionError':d=p(d),c=d.next().value,b=d.next().value,d=d.next().value,a.g.error(d,c,b)}};function Z(){this.g=nc}m=Z.prototype;
m.ca=function(a,b){if(!(!(a&&O(a)&&R(a.impressionOwner,pa))||'videoEventsOwner'in a&&null!=a.videoEventsOwner&&!R(a.videoEventsOwner,pa)||'mediaEventsOwner'in a&&null!=a.mediaEventsOwner&&!R(a.mediaEventsOwner,pa))){b=V(this.g.g,b);if(a.creativeType&&a.impressionType){var c=a.mediaEventsOwner;null==b.g.h&&b.setCreativeType(a.creativeType,c);null==b.g.m&&(b.g.m=a.impressionType);mb(b.h,c)}else c=a.videoEventsOwner,b.g.g=null==c||'none'===c?'display':'video',b.g.h=null,b.g.m=null,mb(b.h,c);ob(b.h,a.impressionOwner);
a&&null!=a.isolateVerificationScripts&&'boolean'===typeof a.isolateVerificationScripts&&(b.g.I=a.isolateVerificationScripts)}};
m.$=function(a,b,c,d){b&&'string'===typeof b.adSessionType&&(b.adSessionType=b.adSessionType.toLowerCase());var e;if(O(b)){if(e=R(b.environment,sa)&&R(b.adSessionType,oa))e=b.omidNativeInfo,e=O(e)?Q(e.partnerName)&&Q(e.partnerVersion):!1;e&&(e=b.app,e=O(e)?Q(e.libraryVersion)&&Q(e.appId):!1)}else e=!1;if(e){if(Xb(d)){e=p(Object.values(d));for(var f=e.next();!f.done;f=e.next())f.value.accessMode='limited';V(this.g.g,a).g.v=new Map(Object.entries(d))}hc(this.g,a,b,!0,c)}else M('Native ad session context invalid; session not started.')};
m.W=function(a){ic(this.g,a,!0)};m.Z=function(a,b){O(a)&&P(a.x)&&P(a.y)&&P(a.width)&&P(a.height)&&(b=V(this.g.g,b),b.g.L=a,rb(b.j,'container'))};m.ga=function(a,b){R(a,ra)&&(b=V(this.g.g,b),b.g.A=a,'backgrounded'===a?rb(b.j,'container','backgrounded'):rb(b.j,'container'))};m.da=function(a){'impression'===a&&this.S()};m.S=function(a){a=V(this.g.g,a);pb(a.h,'native')&&ib(a.h,'native')};m.X=function(a,b){this.R('loaded',void 0===a?null:a,b)};m.error=function(a,b,c){R(a,na)&&this.g.error(c,a,b)};
m.ea=function(a,b,c){this.R(a,b,c)};m.R=function(a,b,c){R(a,z)&&(void 0===b||O(b))&&(c=V(this.g.g,c),nb(c.h,'native')&&('loaded'==a?jb(c.h,'native',b):kb(c.h,a,'native',b)))};m.Y=function(a,b){b=V(this.g.g,b);'none'===b.h.g.l||'number'!==typeof a||isNaN(a)||(b.g.D=a,a=b.o,b=a.g.J,null!=b&&kb(a.h,'volumeChange','native',{mediaPlayerVolume:b,deviceVolume:a.g.D}))};m.fa=function(a){if(a&&O(a)&&P(a.timestamp)){var b=La(),c=(b.g||{}).timestamp;if(!c||c<a.timestamp)b.g=a}};Z.prototype.startSession=Z.prototype.$;
Z.prototype.error=Z.prototype.error;Z.prototype.finishSession=Z.prototype.W;Z.prototype.publishAdEvent=Z.prototype.da;Z.prototype.publishImpressionEvent=Z.prototype.S;Z.prototype.publishVideoEvent=Z.prototype.ea;Z.prototype.publishMediaEvent=Z.prototype.R;Z.prototype.publishLoadedEvent=Z.prototype.X;Z.prototype.setNativeViewHierarchy=Z.prototype.Z;Z.prototype.setState=Z.prototype.ga;Z.prototype.setDeviceVolume=Z.prototype.Y;Z.prototype.init=Z.prototype.ca;Z.prototype.setLastActivity=Z.prototype.fa;function qc(a,b,c,d){a=Vb(a.j,d).h;'media'===b||'video'===b?Ya(a,c,d):(c={type:b,P:d,G:c},a.j.push(c),Xa(a,b,c))}function rc(a,b,c,d){a=Vb(a.j,d);Ub(a,b,c,d)}function sc(a,b,c,d){xb(a.g,b,c,d)}function tc(a,b,c,d){wb(a.g,'downloadJavaScriptResource')(b,c,d)}
function uc(a,b,c,d){function e(){var D=new W(f,'response',g,kc(g,w.apply(0,arguments)));d.h(D,c)}var f=b.h,k=b.method,g=b.version;b=lc(g,b.g);if(null!=cc(k,'VerificationService.')){k=cc(k,'VerificationService.');try{switch(k){case 'addEventListener':var h=p(b),l=h.next().value,n=h.next().value||vc(c);qc(a,l,e,n);break;case 'addSessionListener':var t=p(b),C=t.next().value,y=t.next().value||vc(c);rc(a,e,C,y);break;case 'sendUrl':var G=p(b).next().value;sc(a,G,function(){return e(!0)},function(){return e(!1)});
break;case 'setTimeout':var H=p(b),Ac=H.next().value,Bc=H.next().value;a.l[Ac]=tb(a.g,'setTimeout')(e,Bc);break;case 'clearTimeout':var Cc=p(b).next().value;vb(a.g,a.l[Cc]);break;case 'setInterval':var Nb=p(b),Dc=Nb.next().value,Ec=Nb.next().value;a.m[Dc]=sb(a.g,e,Ec);break;case 'clearInterval':var Fc=p(b).next().value;ub(a.g,a.m[Fc]);break;case 'injectJavaScriptResource':var Gc=p(b).next().value;tc(a,Gc,function(D){return e(!0,D)},function(){return e(!1)});break;case 'getVersion':e('1.4.12-iab4299')}}catch(D){d.h(new W(f,
'error',g,'\n name: '+D.name+'\n message: '+D.message+'\n filename: '+D.filename+'\n lineNumber: '+D.lineNumber+'\n columnNumber: '+D.columnNumber+'\n stack: '+D.stack+'\n toString(): '+D.toString()+'\n '),c)}}}
function vc(a){for(var b=La().h,c=p(b.keys()),d=c.next();!d.done;d=c.next()){d=d.value;var e=b.get(d);if(e){if(e.contentWindow===a)return d;try{if(e.contentWindow.Object.prototype.isPrototypeOf(a))return d}catch(f){}}}};function wc(a){var b={};return(b.app='omid_v1_present_app',b.web='omid_v1_present_web',b)[a]}function xc(a,b){a.document.write('<iframe style="display:none" id="'+(b+'" name="'+b+'" sandbox></iframe>'))}function yc(a,b){var c=a.document.createElement('iframe');c.id=b;c.name=b;c.style.display='none';c.sandbox='';a.document.body.appendChild(c)}
function zc(a,b){var c=new MutationObserver(function(d){d.forEach(function(e){'BODY'===e.addedNodes[0].nodeName&&(e=wc(b),yc(a,'omid_v1_present'),yc(a,e),c.disconnect())})});c.observe(a.document.documentElement,{childList:!0})};var Hc=new function(){var a;this.g=a=void 0===a?omidGlobal:a},gc=new function(){this.i=Hc;this.h=new Map;this.g=Wb(this)},nc=new fc;new function(){var a=gc,b=this;var c=void 0===c?L:c;this.j=a;this.g=Hc;this.l={};this.m={};this.i=new X;c.omid=c.omid||{};c.omid.v1_VerificationServiceCommunication=this.i;this.h=null;c&&c.addEventListener&&c.postMessage&&(this.h=new dc(c));this.i.g=function(d,e){uc(b,d,e,b.i)};this.h&&(this.h.g=function(d,e){b.h&&uc(b,d,e,b.h)})};L.omidBridge=new Z;new mc;
(function(a,b){a.frames&&a.document&&!['omid_v1_present','omid_v1_present_web','omid_v1_present_app'].some(function(c){return!!a.frames[c]})&&(null==a.document.body&&'MutationObserver'in a?zc(a,b):(b=wc(b),a.document.body?(yc(a,'omid_v1_present'),yc(a,b)):(xc(a,'omid_v1_present'),xc(a,b))))})(L,'app');
}).call(this, this);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="aa88d23e-100f-4d49-ab01-2f9b464b88dd",e._sentryDebugIdIdentifier="sentry-dbid-aa88d23e-100f-4d49-ab01-2f9b464b88dd")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[136],{60502:function(e,t,r){r.r(t),r(11397),r(53133),r(86102),r(49922),r(20462),r(20144),r(79730),r(7300),r(9347),r(48298),r(74837),r(66964),r(99143),r(3960),r(99029),r(95929),r(62141);var n=r(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){f(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var u=a(a({},n.default),{},{common:a(a({},n.default.common),{},{free:"Gratis",get:"Obțineți",install:"Instalați",price:"Preț",sponsored:"Reclamă"}),cta:{installNow:"Descarcă",learnMore:"Află mai multe"},reward:{description:"Veți pierde recompensa",resumeButtonText:"RELUAȚI VIDEOCLIPUL",rewardGranted:"Recompensă oferită!",skipButtonText:"ÎNCHIDEȚI VIDEOCLIPUL",title:"Închideți videoclipul?"}});t.default=u}}]);
//# sourceMappingURL=ro.a11b1e9c.js.map

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="39ad49d0-5ed9-4ea7-82e6-944430a11a2d",e._sentryDebugIdIdentifier="sentry-dbid-39ad49d0-5ed9-4ea7-82e6-944430a11a2d")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[697],{77486:function(e,t,r){r.r(t),r(11397),r(53133),r(86102),r(49922),r(20462),r(20144),r(79730),r(7300),r(9347),r(48298),r(74837),r(66964),r(99143),r(3960),r(99029),r(95929),r(62141);var n=r(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){u(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=a(a({},n.default),{},{common:a(a({},n.default.common),{},{free:"Бесплатно",get:"Загрузить",install:"Установить",price:"Цена",sponsored:"Реклама"}),cta:{installNow:"Установить",learnMore:"Узнать подробнее"},reward:{description:"Вознаграждение не будет получено.",resumeButtonText:"ПРОДОЛЖИТЬ ПРОСМОТР",rewardGranted:"Вознаграждение выдано!",skipButtonText:"ЗАКРЫТЬ ОБЪЯВЛЕНИЕ",title:"Закрыть объявление?"}});t.default=f}}]);
//# sourceMappingURL=ru.d059ee11.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="60d643e8-20c5-4e32-9da3-388f94bfb604",e._sentryDebugIdIdentifier="sentry-dbid-60d643e8-20c5-4e32-9da3-388f94bfb604")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"64827e5b44a406d4dac6937ad7884ea5c22015a7"},(self.webpackChunkunity_ads_sdk_webview=self.webpackChunkunity_ads_sdk_webview||[]).push([[300],{21592:function(e,t,r){r.r(t),r(11397),r(53133),r(86102),r(49922),r(20462),r(20144),r(79730),r(7300),r(9347),r(48298),r(74837),r(66964),r(99143),r(3960),r(99029),r(95929),r(62141);var n=r(49114);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){l(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===o(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var u=a(a({},n.default),{},{common:a(a({},n.default.common),{},{free:"ücretsiz",get:"İndir",install:"Yükle",price:"Fiyat",sponsored:"Sponsorluğunda"}),cta:{installNow:"Şimdi Kur",learnMore:"Daha fazla bilgi"},reward:{description:"Ödülünüzü kaybedeceksiniz",resumeButtonText:"VİDEOYU SÜRDÜR",rewardGranted:"Ödül Verildi!",skipButtonText:"VİDEOYU KAPAT",title:"Video Kapatılsın mı?"}});t.default=u}}]);
//# sourceMappingURL=tr.dc72efe1.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
assets/audience_network.dex Normal file

Binary file not shown.

21
assets/builddatas.json Normal file
View File

@@ -0,0 +1,21 @@
{
"name": "report",
"version": 1,
"report": [
{
"classname": "IPlayTempleView",
"method": "alertShow",
"key": "2000090"
},
{
"classname": "IPlayTempleView",
"method": "alertDismiss",
"key": "2000091"
},
{
"classname": "IPlayTempleView",
"method": "play",
"key": "2000092"
}
]
}

1
assets/consentform.html Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
{
"assetsVersion": 3,
"noticeVersion": 3,
"ageGateVersion": 1,
"behavioralAdsConsentVersion": 1,
"appTrackingTransparencyVersion": 1,
"appTrackingTransparencySettingsVersion": 1
}

BIN
assets/dexopt/baseline.prof Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,15 @@
<script>
var ifr = document.createElement('iframe');
window.addEventListener('load', function(e) {
ifr.setAttribute('src', '$__SrcIframeUrl__$');
ifr.setAttribute('style', 'display:block; border:none; margin:0; padding:0; overflow:hidden;');
ifr.width = window.innerWidth;
document.body.appendChild(ifr);
});
window.addEventListener('resize', function(e) {
ifr.width = document.body.clientWidth;
ifr.height = document.body.clientHeight;
});
</script>

View File

@@ -0,0 +1,116 @@
<div id="gitcontnet">
<script type="text/javascript">
window.iaPreCachedAd = true;
var prevWindowOnError = window.onerror;
window.onerror = function(err) {
if (typeof prevWindowOnError === 'function') {
prevWindowOnError.apply();
};
console.log('WINDOW.ONERROR Javascript Error: ' + err);
};
</script>
<script type="text/javascript">
var img = new Image();
var originalWidth = 0;
var originalHeight = 0;
function resizeImage(img) {
var dwidth = originalWidth;
var dheight = originalHeight;
var vheight = window.innerHeight;
var vwidth = window.innerWidth;
img.width = originalWidth;
img.height = originalHeight;
var scale = 1;
var dx = 0;
var dy = 0;
if (dwidth <= vwidth && dheight <= vheight) {
scale = Math.min(vwidth / dwidth, vheight / dheight);
} else {
scale = Math.min(vwidth / dwidth, vheight / dheight);
}
dx = Math.round((vwidth - dwidth * scale) * 0.5);
dy = Math.round((vheight - dheight * scale) * 0.5);
img.style.top = dy;
img.style.left = dx;
img.style.width = Math.round(dwidth * scale);
img.style.height = Math.round(dheight * scale);
};
window.addEventListener('load', function(e) {
var linky = "$__IMGHREF__$";
var link = document.createElement('a');
link.href = linky;
link.appendChild(img);
document.getElementById('gifgoeshere').appendChild(link);
//document.getElementsByTagName('div')[0].appendChild(link);
img.onload = function() {
originalWidth = img.width;
originalHeight = img.height;
resizeImage(img);
};
var errfun = function() {
console.log('failed loading the image');
var ifr = document.createElement('iframe');
var container = document.body || document.documentElement;
container.appendChild(ifr);
ifr.setAttribute('sandbox', '');
ifr.setAttribute('style', 'position: fixed; bottom: -20px; border: none; visibility: hidden; height: 20px; z-index: -99999');
ifr.setAttribute('src', "iaadfinishedloading://failure");
};
var successFun = function(){
var ifr = document.createElement('iframe');
var container = document.body || document.documentElement;
container.appendChild(ifr);
ifr.setAttribute('sandbox', '');
ifr.setAttribute('style', 'position: fixed; bottom: -20px; border: none; display: none; height: 20px; z-index: -99999');
ifr.setAttribute('src', "iaadfinishedloading://success");
};
img.addEventListener('error', errfun);
img.addEventListener('load',successFun);
img.src = '$__IMGSRC__$';
});
window.addEventListener('resize', function(e) {
resizeImage(img);
});
</script>
<style type="text/css">
body {
margin: 0 !important;
padding: 0;
width: 100%;
height: 100%;
}
#gifgoeshere {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
left: 0;
top: 0;
}
#gifgoeshere img {
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
}
</style>
<div id="gifgoeshere">
</div>
</div>

View File

@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body style="margin: 0">
<script type="text/javascript">
window.helpshiftConfig = JSON.parse(JSON.stringify(%config));
</script>
<script>
const hcMiddleware = document.createElement('script');
hcMiddleware.onerror = function(){
HCInterface.onHelpcenterError();
};
hcMiddleware.src = "%cdn";
document.body.append(hcMiddleware);
</script>
</body>
</html>

117
assets/helpshift/Webchat.js Normal file
View File

@@ -0,0 +1,117 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
</head>
<script>
window.helpshiftConfig = JSON.parse(JSON.stringify(%config)),
function (t, e, n)
{
if ("function" != typeof window.Helpshift)
{
var i = function ()
{
i.q.push(arguments)
};
i.q = [], window.Helpshift = i;
var o, a = t.getElementsByTagName("script")[0];
if (t.getElementById(e)) return;
(o = t.createElement("script")).async = !0, o.id = e, o.src = "%cdn";
function r()
{
window.Helpshift("init")
}
window.attachEvent ? (o.attachEvent("onload", r),
"function" == typeof n && o.attachEvent("onerror", n)) : (o.addEventListener("load", r, !1),
"function" == typeof n && o.addEventListener("error", n, !1)), a.parentNode.insertBefore(o, a)
}
else window.Helpshift("update")
}(document, "hs-chat", function(){ HSInterface.onWebchatError();});
Helpshift("replaceCustomIssueFields", %cifs );
Helpshift('open');
var globalApiEventHandler = function (data) {
HSInterface.sendEvent(JSON.stringify(data));
};
Helpshift("addEventListener", "globalApiEvent", globalApiEventHandler);
var widgetToggleEventHandler = function (data) {
HSInterface.widgetToggle(JSON.stringify(data));
};
Helpshift("addEventListener", "widgetToggle", widgetToggleEventHandler);
var onSetLocalStorageDataHandler = function (data) {
HSInterface.setLocalStorage(JSON.stringify(data));
};
Helpshift("addEventListener", "setLocalStorageData", onSetLocalStorageDataHandler);
var onRemoveLocalStorageDataHandler = function (data) {
HSInterface.removeLocalStorage(JSON.stringify(data));
};
Helpshift("addEventListener", "removeLocalStorageData", onRemoveLocalStorageDataHandler);
var onPushTokenSyncHandler = function (data){
HSInterface.sendPushTokenSyncRequestData(JSON.stringify(data));
};
Helpshift("addEventListener", "pushTokenSync", onPushTokenSyncHandler);
var onUIConfigChangeHandler = function (data){
HSInterface.onUIConfigChange(JSON.stringify(data));
};
Helpshift("addEventListener", "uiConfigChange", onUIConfigChangeHandler);
var onUserAuthFailureHandler = function (data){
HSInterface.sendUserAuthFailureEvent(JSON.stringify(data));
};
Helpshift("addEventListener", "userAuthFailure", onUserAuthFailureHandler);
var onRemoveAnonymousUserHandler = function (data){
HSInterface.onRemoveAnonymousUser();
};
Helpshift("addEventListener", "removeAnonymousUser", onRemoveAnonymousUserHandler);
var webSdkConfigLoadHandler = function (data){
HSInterface.onWebSdkConfigLoad();
};
Helpshift("addEventListener", "webSdkConfigLoad", webSdkConfigLoadHandler);
var genericSdkDataEventHandler = function (data){
HSInterface.setGenericSdkData(JSON.stringify(data))
};
Helpshift("addEventListener", "genericSdkData", genericSdkDataEventHandler);
var pollingStatusEventHandler = function (data){
HSInterface.setPollingStatus(JSON.stringify(data))
};
Helpshift("addEventListener", "pollingStatus", pollingStatusEventHandler);
var issueExistsFlagEventHandler = function (data){
HSInterface.setIssueExistsFlag(JSON.stringify(data))
};
Helpshift("addEventListener", "issueExistsFlag", issueExistsFlagEventHandler);
var sdkxMigrationLogSyncedHandler = function (data){
HSInterface.sdkxMigrationLogSynced(data)
};
Helpshift("addEventListener", "sdkxMigrationLogSynced", sdkxMigrationLogSyncedHandler);
var conversationMetaEventHandler = function (data){
HSInterface.requestConversationMetadata(JSON.stringify(data))
};
Helpshift("addEventListener", "requestConversationMetadata", conversationMetaEventHandler);
var webchatJsFileLoadedEventHandler = function (data) {
HSInterface.webchatJsFileLoaded()
};
Helpshift("addEventListener", "webchatJsFileLoaded", webchatJsFileLoadedEventHandler);
var getHelpcenterDataEventHandler = function (){
HSInterface.getHelpcenterData()
};
Helpshift("addEventListener", "getHelpcenterData", getHelpcenterDataEventHandler);
</script>
</html>

View File

@@ -0,0 +1,22 @@
<script language='javascript' type='text/javascript'>
(function() {
var wasIaLoadFinishedNotified = false;
var IA_AD_FINISHED_LOADING_EVENT = 'iaadfinishedloading';
var iaNotifyLoadFinished = function() {
if (!wasIaLoadFinishedNotified) {
wasIaLoadFinishedNotified = true;
var ifr = document.createElement('iframe');
var container = document.body || document.documentElement;
container.appendChild(ifr);
ifr.setAttribute('sandbox', '');
ifr.setAttribute('style', 'position: fixed; bottom: -20px; border: none; display: none; height: 20px; z-index: -99999');
ifr.setAttribute('src', IA_AD_FINISHED_LOADING_EVENT + '://' + "success");
}
}
window.addEventListener('DOMContentLoaded', function(e) {
iaNotifyLoadFinished.apply(null);
}, { once: true });
})();
</script>

803
assets/ia_mraid_bridge.txt Normal file
View File

@@ -0,0 +1,803 @@
<script language='javascript' type='text/javascript'>
(function() {
// Establish the root mraidbridge object.
var mraidbridge = window.mraidbridge = {};
// Listeners for bridge events.
var listeners = {};
// Queue to track pending calls to the native SDK.
var nativeCallQueue = [];
// Whether a native call is currently in progress.
var nativeCallInFlight = false;
//////////////////////////////////////////////////////////////////////////////////////////////////
mraidbridge.windowLoaded = false;
mraidbridge.callbackIframe = undefined;
mraidbridge.loggingEnabled = false;
mraidbridge.log = function(msg) {
mraidbridge.loggingEnabled && console.log(msg);
}
window.addEventListener('load', function(e) {
var ifr = document.createElement('iframe');
var container = document.body || document.documentElement;
container.appendChild(ifr);
ifr.setAttribute('sandbox', '');
ifr.setAttribute('style', 'position: fixed; bottom: -20px; border: none; display: none; height: 20px; z-index: -99999');
mraidbridge.callbackIframe = ifr;
mraidbridge.windowLoaded = true;
if (nativeCallQueue.length === 0) {
return;
}
var nextCall = nativeCallQueue.pop();
nativeCallInFlight = true;
mraidbridge.callbackIframe && mraidbridge.callbackIframe.setAttribute('src', nextCall);
});
mraidbridge.fireReadyEvent = function() {
mraidbridge.fireEvent('ready');
};
mraidbridge.fireChangeEvent = function(properties) {
mraidbridge.fireEvent('change', properties);
};
mraidbridge.fireErrorEvent = function(action, message) {
mraidbridge.fireEvent('error', message, action);
mraidbridge.log("mraidBridge: fireErrorEvent with message '" + message + "' and action="+action);
};
mraidbridge.fireEvent = function(type) {
mraidbridge.log("mraidBridge: firing event of type: " + type);
var ls = listeners[type];
if (ls) {
var args = Array.prototype.slice.call(arguments);
args.shift();
mraidbridge.log("mraidBridge: firing event of type: " + type + " with args - " + JSON.stringify(args));
var l = ls.length;
for (var i = 0; i < l; i++) {
ls[i].apply(null, args);
}
}
};
mraidbridge.nativeCallComplete = function(command) {
mraidbridge.log("mraidbridge: nativeCallComplete: " + command);
mraidbridge.log("native Call complete: " + command);
if (nativeCallQueue.length === 0) {
nativeCallInFlight = false;
return;
}
var nextCall = nativeCallQueue.pop();
mraidbridge.callbackIframe && mraidbridge.callbackIframe.setAttribute('src', nextCall);
};
mraidbridge.executeNativeCall = function(command) {
if (!mraidbridge.windowLoaded) {
mraidbridge.log("rejecting native call, window onload has not been invoked");
return;
}
var call = 'mraid://' + command;
var key, value;
var isFirstArgument = true;
for (var i = 1; i < arguments.length; i += 2) {
key = arguments[i];
value = arguments[i + 1];
if (value === null) continue;
if (isFirstArgument) {
call += '?';
isFirstArgument = false;
} else {
call += '&';
}
call += encodeURIComponent(key) + '=' + encodeURIComponent(value);
}
if (!mraidbridge.callbackIframe || nativeCallInFlight) {
nativeCallQueue.push(call);
} else {
nativeCallInFlight = true;
mraidbridge.callbackIframe && mraidbridge.callbackIframe.setAttribute('src', call);
}
};
//////////////////////////////////////////////////////////////////////////////////////////////////
mraidbridge.addEventListener = function(event, listener) {
mraidbridge.log("mraidbridge: addEventListener: " + listener);
var eventListeners;
listeners[event] = listeners[event] || [];
eventListeners = listeners[event];
for (var l in eventListeners) {
// LoadListener already registered, so no need to add it.
if (listener === l) return;
}
eventListeners.push(listener);
};
mraidbridge.removeEventListener = function(event, listener) {
mraidbridge.log("mraidbridge: removeEventListener: " + listener);
if (listeners.hasOwnProperty(event)) {
var eventListeners = listeners[event];
if (eventListeners) {
var idx = eventListeners.indexOf(listener);
if (idx !== -1) {
eventListeners.splice(idx, 1);
}
}
}
};
}());
(function() {
mraidbridge.log("mraidbridge: initializing mraid");
var mraid = window.mraid = {};
var bridge = window.mraidbridge;
// Constants. ////////////////////////////////////////////////////////////////////////////////////
var VERSION = mraid.VERSION = '2.0';
var STATES = mraid.STATES = {
LOADING: 'loading', // Initial state.
DEFAULT: 'default',
EXPANDED: 'expanded',
HIDDEN: 'hidden',
RESIZED: 'resized'
};
var EVENTS = mraid.EVENTS = {
ERROR: 'error',
INFO: 'info',
READY: 'ready',
STATECHANGE: 'stateChange',
VIEWABLECHANGE: 'viewableChange',
SIZECHANGE: 'sizeChange'
};
var PLACEMENT_TYPES = mraid.PLACEMENT_TYPES = {
UNKNOWN: 'unknown',
INLINE: 'inline',
INTERSTITIAL: 'interstitial'
};
// External MRAID state: may be directly or indirectly modified by the ad JS. ////////////////////
// Properties which define the behavior of an expandable ad.
var expandProperties = {
width: -1,
height: -1,
useCustomClose: false,
isModal: true,
lockOrientation: false
};
var hasSetCustomSize = false;
var hasSetCreativeSize = false;
var hasSetCreativeOffset = false;
var hasSetCustomClose = false;
var listeners = {};
// Internal MRAID state. Modified by the native SDK. /////////////////////////////////////////////
var state = STATES.LOADING;
var isViewable = false;
var screenSize = { width: -1, height: -1 };
var maxSize = { width: -1, height: -1 };
var adSize = { width: -1, height: -1 };
var currentPosition = {
x:0,
y:0,
width:0,
height:0
};
var mraidDefaultPosition = {
x:0,
y:0,
width:0,
height:0
};
// Properties which define the behavior of an resized ad.
var resizeProperties = {
width:-1,
height:-1,
customClosePosition:'top-right',
offsetX:0,
offsetY:0,
allowOffscreen:true
};
var orientationProperties = {
allowOrientationChange:true,
forceOrientation:'none'
};
var placementType = PLACEMENT_TYPES.UNKNOWN;
var supports = {
sms: false,
tel: false,
calendar: false,
storePicture: false,
inlineVideo: false
};
//////////////////////////////////////////////////////////////////////////////////////////////////
var EventListeners = function(event) {
this.event = event;
this.count = 0;
var listeners = {};
this.add = function(func) {
var id = String(func);
if (!listeners[id]) {
listeners[id] = func;
this.count++;
}
};
this.remove = function(func) {
var id = String(func);
if (listeners[id]) {
listeners[id] = null;
delete listeners[id];
this.count--;
return true;
} else {
return false;
}
};
this.removeAll = function() {
for (var id in listeners) {
if (listeners.hasOwnProperty(id)) this.remove(listeners[id]);
}
};
this.broadcast = function(args) {
var localListners = {}
for (var id in listeners) localListners[id] = listeners[id]
for (var id in localListners) {
if (localListners.hasOwnProperty(id)) localListners[id].apply({}, args);
}
};
this.toString = function() {
var out = [event, ':'];
for (var id in listeners) {
if (listeners.hasOwnProperty(id)) out.push('|', id, '|');
}
return out.join('');
};
};
var broadcastEvent = function() {
var args = new Array(arguments.length);
var l = arguments.length;
for (var i = 0; i < l; i++) args[i] = arguments[i];
var event = args.shift();
mraidbridge.log("listeners:" + JSON.stringify(listeners) + "event:" + JSON.stringify(event))
if (listeners[event]) {
mraidbridge.log("broadcastEvent" + event + " with args -" + JSON.stringify(args))
listeners[event].broadcast(args);
} else {
mraidbridge.log("broadcastEvent not sent")
}
};
var contains = function(value, array) {
for (var i in array) {
if (array[i] === value) return true;
}
return false;
};
var clone = function(obj) {
if (obj === null) return null;
var f = function() {};
f.prototype = obj;
return new f();
};
var stringify = function(obj) {
if (typeof obj === 'object') {
var out = [];
if (obj.push) {
// Array.
for (var p in obj) out.push(obj[p]);
return '[' + out.join(',') + ']';
} else {
// Other object.
for (var p in obj) out.push("'" + p + "': " + obj[p]);
return '{' + out.join(',') + '}';
}
} else return String(obj);
};
// Functions that will be invoked by the native SDK whenever a 'change' event occurs.
var changeHandlers = {
state: function(val) {
if (state === STATES.LOADING) {
broadcastEvent(EVENTS.INFO, 'Native SDK initialized.');
}
state = val;
broadcastEvent(EVENTS.INFO, 'Set state to ' + stringify(val));
broadcastEvent(EVENTS.STATECHANGE, state);
},
viewable: function(val) {
isViewable = val;
broadcastEvent(EVENTS.INFO, 'Set isViewable to ' + stringify(val));
broadcastEvent(EVENTS.VIEWABLECHANGE, isViewable);
},
placementType: function(val) {
broadcastEvent(EVENTS.INFO, 'Set placementType to ' + stringify(val));
placementType = val;
},
adSize: function(val) {
mraidbridge.log("adSize change to " + JSON.stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) adSize[key] = val[key];
}
if (!hasSetCustomSize) {
mraidbridge.log("sizeChange broadcast with" + JSON.stringify(adSize));
broadcastEvent(EVENTS.SIZECHANGE, adSize['width'], adSize['height']);
}
},
screenSize: function(val) {
broadcastEvent(EVENTS.INFO, 'Set screenSize to ' + stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) screenSize[key] = val[key];
}
if (!hasSetCustomSize) {
expandProperties['width'] = screenSize['width'];
expandProperties['height'] = screenSize['height'];
}
},
maxSize: function(val) {
broadcastEvent(EVENTS.INFO, 'Set maxSize to ' + stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) maxSize[key] = val[key];
}
},
currentPosition: function(val) {
broadcastEvent(EVENTS.INFO, 'Set currentPosition to ' + stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) currentPosition[key] = val[key];
}
broadcastEvent(EVENTS.SIZECHANGE, val.width, val.height);
},
expandProperties: function(val) {
broadcastEvent(EVENTS.INFO, 'Merging expandProperties with ' + stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) expandProperties[key] = val[key];
}
},
resizeProperties: function(val) {
broadcastEvent(EVENTS.INFO, 'Merging resizeProperties with ' + stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) resizeProperties[key] = val[key];
}
},
orientationProperties: function(val) {
broadcastEvent(EVENTS.INFO, 'Merging orientationProperties with ' + stringify(val));
for (var key in val) {
if (val.hasOwnProperty(key)) orientationProperties[key] = val[key];
}
},
supports: function(val) {
broadcastEvent(EVENTS.INFO, 'Set supports to ' + stringify(val));
supports = val;
}
};
var validate = function(obj, validators, action, merge) {
if (!merge) {
// Check to see if any required properties are missing.
if (obj === null) {
broadcastEvent(EVENTS.ERROR, 'Required object not provided.', action);
return false;
} else {
for (var i in validators) {
if (validators.hasOwnProperty(i) && obj[i] === undefined) {
broadcastEvent(EVENTS.ERROR, 'Object is missing required property: ' + i + '.', action);
return false;
}
}
}
}
for (var prop in obj) {
var validator = validators[prop];
var value = obj[prop];
if (validator && !validator(value)) {
// Failed validation.
broadcastEvent(EVENTS.ERROR, 'Value of property ' + prop + ' is invalid.',
action);
return false;
}
}
return true;
};
var expandPropertyValidators = {
width: function(v) { return !isNaN(v) && v >= 0; },
height: function(v) { return !isNaN(v) && v >= 0; },
useCustomClose: function(v) { return (typeof v === 'boolean'); },
lockOrientation: function(v) { return (typeof v === 'boolean'); }
};
var resizePropertyValidators = {
width: function(v) { return !isNaN(v) && v >= 0; },
height: function(v) { return !isNaN(v) && v >= 0; },
offsetX: function(v) { return !isNaN(v); },
offsetY: function(v) { return !isNaN(v); },
allowOffscreen: function(v) { return (typeof v === 'boolean'); }
};
var orientationPropertyValidators = {
allowOrientationChange: function(v) { return (typeof v === 'boolean'); },
forceOrientation: function(v) { return !isNaN(v)}
};
//////////////////////////////////////////////////////////////////////////////////////////////////
bridge.addEventListener('change', function(properties) {
for (var p in properties) {
if (properties.hasOwnProperty(p)) {
var handler = changeHandlers[p];
handler(properties[p]);
}
}
});
bridge.addEventListener('error', function(message, action) {
broadcastEvent(EVENTS.ERROR, message, action);
});
bridge.addEventListener('ready', function() {
broadcastEvent(EVENTS.READY);
});
//////////////////////////////////////////////////////////////////////////////////////////////////
mraid.addEventListener = function(event, listener) {
mraidbridge.log("addEventListener" + event)
if (!event || !listener) {
broadcastEvent(EVENTS.ERROR, 'Both event and listener are required.', 'addEventListener');
} else if (!contains(event, EVENTS)) {
broadcastEvent(EVENTS.ERROR, 'Unknown MRAID event: ' + event, 'addEventListener');
} else {
if (!listeners[event]) listeners[event] = new EventListeners(event);
listeners[event].add(listener);
}
};
mraid.close = function() {
if (state === STATES.HIDDEN) {
broadcastEvent(EVENTS.ERROR, 'Ad cannot be closed when it is already hidden.',
'close');
} else bridge.executeNativeCall('close');
};
mraid.expand = function(URL) {
if (state !== STATES.DEFAULT) {
broadcastEvent(EVENTS.ERROR, 'Ad can only be expanded from the default state.', 'expand');
} else {
var args = ['expand'];
if (mraid.getHasSetCustomClose()) {
args = args.concat(['shouldUseCustomClose', expandProperties.useCustomClose ? 'true' : 'false']);
}
if (mraid.getHasSetCustomSize()) {
if (expandProperties.width >= 0 && expandProperties.height >= 0) {
args = args.concat(['w', expandProperties.width, 'h', expandProperties.height]);
}
}
if (typeof expandProperties.lockOrientation !== 'undefined') {
args = args.concat(['lockOrientation', expandProperties.lockOrientation]);
}
if (URL) {
args = args.concat(['url', URL]);
}
bridge.executeNativeCall.apply(this, args);
}
};
mraid.getHasSetCustomClose = function() {
mraidbridge.log("mraidbridge: getHasSetCustomClose");
return hasSetCustomClose;
};
mraid.getHasSetCustomSize = function() {
mraidbridge.log("mraidbridge: getHasSetCustomSize");
return hasSetCustomSize;
};
mraid.getExpandProperties = function() {
mraidbridge.log("mraidbridge: getExpandProperties");
var properties = {
width: expandProperties.width,
height: expandProperties.height,
useCustomClose: expandProperties.useCustomClose,
isModal: expandProperties.isModal
};
return properties;
};
mraid.getPlacementType = function() {
mraidbridge.log("mraidbridge: getPlacementType");
return placementType;
};
mraid.getState = function() {
mraidbridge.log("mraidbridge: getState - " + state);
return state;
};
mraid.getVersion = function() {
return mraid.VERSION;
};
mraid.isViewable = function() {
mraidbridge.log("mraidbridge: isViewable returns " + isViewable);
return isViewable;
};
mraid.open = function(URL) {
if (!URL) broadcastEvent(EVENTS.ERROR, 'URL is required.', 'open');
else bridge.executeNativeCall('open', 'url', URL);
};
mraid.removeEventListener = function(event, listener) {
if (!event) broadcastEvent(EVENTS.ERROR, 'Event is required.', 'removeEventListener');
else {
if (listener && (!listeners[event] || !listeners[event].remove(listener))) {
broadcastEvent(EVENTS.ERROR, 'LoadListener not currently registered for event.',
'removeEventListener');
return;
} else if (listeners[event]) listeners[event].removeAll();
if (listeners[event] && listeners[event].count === 0) {
listeners[event] = null;
delete listeners[event];
}
}
};
mraid.setExpandProperties = function(properties) {
if (validate(properties, expandPropertyValidators, 'setExpandProperties', true)) {
if (properties.hasOwnProperty('width') || properties.hasOwnProperty('height')) {
hasSetCustomSize = true;
}
if (properties.hasOwnProperty('useCustomClose')) hasSetCustomClose = true;
var desiredProperties = ['width', 'height', 'useCustomClose', 'lockOrientation'];
var length = desiredProperties.length;
for (var i = 0; i < length; i++) {
var propname = desiredProperties[i];
if (properties.hasOwnProperty(propname)) expandProperties[propname] = properties[propname];
}
}
};
mraid.useCustomClose = function(shouldUseCustomClose) {
expandProperties.useCustomClose = shouldUseCustomClose;
hasSetCustomClose = true;
bridge.executeNativeCall('usecustomclose', 'shouldUseCustomClose', shouldUseCustomClose);
};
// MRAID 2.0 APIs ////////////////////////////////////////////////////////////////////////////////
mraid.createCalendarEvent = function(parameters) {
CalendarEventParser.initialize(parameters);
if (CalendarEventParser.parse()) {
bridge.executeNativeCall.apply(this, CalendarEventParser.arguments);
} else {
broadcastEvent(EVENTS.ERROR, CalendarEventParser.errors[0], 'createCalendarEvent');
}
};
mraid.supports = function(feature) {
return supports[feature];
};
mraid.playVideo = function(uri) {
if (!mraid.isViewable()) {
broadcastEvent(EVENTS.ERROR, 'playVideo cannot be called until the ad is viewable', 'playVideo');
return;
}
if (!uri) {
broadcastEvent(EVENTS.ERROR, 'playVideo must be called with a valid URI', 'playVideo');
} else {
bridge.executeNativeCall.apply(this, ['playVideo', 'uri', uri]);
}
};
mraid.storePicture = function(uri) {
if (!mraid.isViewable()) {
broadcastEvent(EVENTS.ERROR, 'storePicture cannot be called until the ad is viewable', 'storePicture');
return;
}
if (!uri) {
broadcastEvent(EVENTS.ERROR, 'storePicture must be called with a valid URI', 'storePicture');
} else {
bridge.executeNativeCall.apply(this, ['storePicture', 'uri', uri]);
}
};
mraid.resize = function() {
if (state !== STATES.DEFAULT) {
broadcastEvent(EVENTS.ERROR, 'Ad can only be expanded from the default state.', 'resize');
} else {
var args = ['resize'];
if (mraid.getHasSetCreativeSize()) {
if (resizeProperties.width >= 0 && resizeProperties.height >= 0) {
args = args.concat(['w', resizeProperties.width, 'h', resizeProperties.height]);
}
}
if (mraid.getHasSetCreativeOffset()) {
args = args.concat(['offsetX', resizeProperties.offsetX, 'offsetY', resizeProperties.offsetY]);
}
if (typeof resizeProperties.allowOffscreen !== 'undefined') {
args = args.concat(['allowOffscreen', resizeProperties.allowOffscreen]);
}
if (typeof resizeProperties.customClosePosition !== 'undefined') {
args = args.concat(['customClosePosition', resizeProperties.customClosePosition]);
}
bridge.executeNativeCall.apply(this, args);
}
};
mraid.getResizeProperties = function() {
var properties = {
width: resizeProperties.width,
height: resizeProperties.height,
customClosePosition: resizeProperties.customClosePosition,
offsetX: resizeProperties.offsetX,
offsetY: resizeProperties.offsetY,
allowOffscreen: resizeProperties.allowOffscreen
};
return properties;
};
mraid.setResizeProperties = function(properties) {
if (validate(properties, resizePropertyValidators, 'setResizeProperties', true)) {
if (properties.hasOwnProperty('width') || properties.hasOwnProperty('height')) {
hasSetCreativeSize = true;
}
if (properties.hasOwnProperty('offsetX') || properties.hasOwnProperty('offsetY')) {
hasSetCreativeOffset = true;
}
if (properties.hasOwnProperty('useCustomClose')) hasSetCustomClose = true;
var desiredProperties = ['width', 'height', 'offsetX', 'offsetY', 'customClosePosition', 'allowOffscreen'];
var length = desiredProperties.length;
for (var i = 0; i < length; i++) {
var propname = desiredProperties[i];
if (properties.hasOwnProperty(propname)) resizeProperties[propname] = properties[propname];
}
}
};
mraid.setOrientationProperties = function (properties) {
var args = ['setOrientationProperties'];
// if (validate(properties, orientationPropertyValidators, 'setOrientationProperties', true)) {
var desiredProperties = ['allowOrientationChange', 'forceOrientation'];
var length = desiredProperties.length;
for (var i = 0; i < length; i++) {
var propname = desiredProperties[i];
if (properties.hasOwnProperty(propname)) orientationProperties[propname] = properties[propname];
args = args.concat([propname, orientationProperties[propname]]);
}
// }
bridge.executeNativeCall.apply(this, args);
};
mraid.getHasSetCreativeSize = function() {
return hasSetCreativeSize;
};
mraid.getHasSetCreativeOffset = function() {
return hasSetCreativeOffset;
};
mraid.getOrientationProperties = function () {
return clone(orientationProperties);
};
mraid.getCurrentPosition = function () {
return clone(currentPosition);
};
mraid.getDefaultPosition = function() {
return clone(mraidDefaultPosition);
};
mraid.getMaxSize = function() {
mraidbridge.log("getMaxSize" + JSON.stringify(maxSize))
return clone(maxSize);
};
mraid.getScreenSize = function() {
return clone(screenSize);
};
var CalendarEventParser = {
initialize: function(parameters) {
this.parameters = parameters;
this.errors = [];
this.arguments = ['createCalendarEvent'];
},
parse: function() {
if (!this.parameters) {
this.errors.push('The object passed to createCalendarEvent cannot be null.');
} else {
this.parseDescription();
this.parseLocation();
this.parseSummary();
this.parseStartAndEndDates();
this.parseReminder();
this.parseRecurrence();
this.parseTransparency();
}
var errorCount = this.errors.length;
if (errorCount) {
this.arguments.length = 0;
}
return (errorCount === 0);
},
parseDescription: function() {
this._processStringValue('description');
},
parseLocation: function() {
this._processStringValue('location');
},
parseSummary: function() {
this._processStringValue('summary');
},
parseStartAndEndDates: function() {
this._processDateValue('start');
this._processDateValue('end');
},
parseReminder: function() {
var reminder = this._getParameter('reminder');
if (!reminder) {
return;
}
if (reminder < 0) {
this.arguments.push('relativeReminder');
this.arguments.push(parseInt(reminder) / 1000);
} else {
this.arguments.push('absoluteReminder');
this.arguments.push(reminder);
}
},
parseRecurrence: function() {
var recurrenceDict = this._getParameter('recurrence');
if (!recurrenceDict) {
return;
}
this.parseRecurrenceInterval(recurrenceDict);
this.parseRecurrenceFrequency(recurrenceDict);
this.parseRecurrenceEndDate(recurrenceDict);
this.parseRecurrenceArrayValue(recurrenceDict, 'daysInWeek');
this.parseRecurrenceArrayValue(recurrenceDict, 'daysInMonth');
this.parseRecurrenceArrayValue(recurrenceDict, 'daysInYear');
this.parseRecurrenceArrayValue(recurrenceDict, 'monthsInYear');
},
parseTransparency: function() {
var validValues = ['opaque', 'transparent'];
if (this.parameters.hasOwnProperty('transparency')) {
var transparency = this.parameters['transparency'];
if (contains(transparency, validValues)) {
this.arguments.push('transparency');
this.arguments.push(transparency);
} else {
this.errors.push('transparency must be opaque or transparent');
}
}
},
parseRecurrenceArrayValue: function(recurrenceDict, kind) {
if (recurrenceDict.hasOwnProperty(kind)) {
var array = recurrenceDict[kind];
if (!array || !(array instanceof Array)) {
this.errors.push(kind + ' must be an array.');
} else {
var arrayStr = array.join(',');
this.arguments.push(kind);
this.arguments.push(arrayStr);
}
}
},
parseRecurrenceInterval: function(recurrenceDict) {
if (recurrenceDict.hasOwnProperty('interval')) {
var interval = recurrenceDict['interval'];
if (!interval) {
this.errors.push('Recurrence interval cannot be null.');
} else {
this.arguments.push('interval');
this.arguments.push(interval);
}
} else {
// If a recurrence rule was specified without an interval, use a default value of 1.
this.arguments.push('interval');
this.arguments.push(1);
}
},
parseRecurrenceFrequency: function(recurrenceDict) {
if (recurrenceDict.hasOwnProperty('frequency')) {
var frequency = recurrenceDict['frequency'];
var validFrequencies = ['daily', 'weekly', 'monthly', 'yearly'];
if (contains(frequency, validFrequencies)) {
this.arguments.push('frequency');
this.arguments.push(frequency);
} else {
this.errors.push("Recurrence frequency must be one of: 'daily, 'weekly', 'monthly', 'yearly'.");
}
}
},
parseRecurrenceEndDate: function(recurrenceDict) {
var expires = recurrenceDict['expires'];
if (!expires) {
return;
}
this.arguments.push('expires');
this.arguments.push(expires);
},
_getParameter: function(key) {
if (this.parameters.hasOwnProperty(key)) {
return this.parameters[key];
}
return null;
},
_processStringValue: function(kind) {
if (this.parameters.hasOwnProperty(kind)) {
var value = this.parameters[kind];
this.arguments.push(kind);
this.arguments.push(value);
}
},
_processDateValue: function(kind) {
if (this.parameters.hasOwnProperty(kind)) {
var dateString = this._getParameter(kind);
this.arguments.push(kind);
this.arguments.push(dateString);
}
}
};
}());
</script>

View File

@@ -0,0 +1,209 @@
function canLoadAd(adType, config, params, isDebug) {
var debug = strToBool(isDebug);
var config1 = JSON.parse(config);
var rules = getAdjustedSuppressionRules(config1, debug);
prettyPrint(rules, debug);
var params1 = JSON.parse(params);
var states = getAdjustedStatesWithDefault(params1);
prettyPrint(states, debug);
var results = getLoadSuppressionRulesResults(adType, rules, states);
prettyPrint(results, debug);
return andOperation(results);
}
function canShowAd(adType, config, params, isDebug) {
var debug = strToBool(isDebug);
var config1 = JSON.parse(config);
var rules = getAdjustedSuppressionRules(config1, debug);
prettyPrint(rules, debug);
var params1 = JSON.parse(params);
var states = getAdjustedStatesWithDefault(params1);
prettyPrint(states, debug);
var loadResults = getLoadSuppressionRulesResults(adType, rules, states);
if (!andOperation(loadResults)) {
prettyPrint(loadResults, debug);
return false;
}
var showResults = getShowSuppressionRulesResults(adType, rules, states);
prettyPrint(showResults, debug);
return andOperation(showResults);
}
function getLoadSuppressionRulesResults(adType, rules, states) {
var results = {};
if (isBanner(adType)) {
return results;
}
if (rules.tutorialCheckEnabled) {
results.tutorialCheck = states.tutorialComplete;
}
if (rules.elapsedTimeSinceAppInstallInSecs) {
// passed less than elapsedTimeSinceAppInstallInSecs since app is installed
results.newUserCheck = getTimeDifferenceInSeconds(states.currentTimeInMs, states.appInstallTimeInMs) > rules.elapsedTimeSinceAppInstallInSecs;
}
if (rules.minUserLtvInUsd) {
// paid more than minUserLtvInUsd
var recentPayerCheck = (states.userLtvInUsd * 100) >= (rules.minUserLtvInUsd * 100);
if (rules.elapsedTimeSinceLastPurchaseInSecs) {
// made a purchase within elapsedTimeSinceLastPurchaseInSecs
recentPayerCheck = recentPayerCheck && (getTimeDifferenceInSeconds(states.currentTimeInMs, states.lastPurchaseTimeInMs) < rules.elapsedTimeSinceLastPurchaseInSecs);
}
results.recentPayerCheck = !recentPayerCheck;
}
return results;
}
function getShowSuppressionRulesResults(adType, rules, states) {
var results = getLoadSuppressionRulesResults(adType, rules, states);
if (isBanner(adType)) {
if (rules.elapsedTimeSinceAppInstallInDays) {
// passed less than elapsedTimeSinceAppInstallInDays since app is installed
results.installedDaysAgoCheck = getTimeDifferenceInDays(states.currentTimeInMs, states.appInstallTimeInMs) > rules.elapsedTimeSinceAppInstallInDays;
}
if (rules.minUserLtvInUsd) {
results.spenderCheck = states.userLtvInUsd < rules.minUserLtvInUsd;
}
}
else {
if (rules.elapsedTimeSinceCurrentLaunchInSecs) {
results.currentSessionDurationCheck = getTimeDifferenceInSeconds(states.currentTimeInMs, states.currentLaunchTimeInMs) > rules.elapsedTimeSinceCurrentLaunchInSecs;
}
if (rules.elapsedTimeSinceLastAdShownInSecs) {
results.nextAdShowCheck = getTimeDifferenceInSeconds(states.currentTimeInMs, states.lastAdDismissedTimeInMs) > rules.elapsedTimeSinceLastAdShownInSecs;
}
}
return results;
}
function getAdjustedStatesWithDefault(states) {
// provide default values for null fields
states.tutorialComplete = states.tutorialComplete != null ? states.tutorialComplete : true;
states.appInstallTimeInMs = states.appInstallTimeInMs != null ? states.appInstallTimeInMs : 0;
states.userLtvInUsd = states.userLtvInUsd != null ? states.userLtvInUsd : 0;
states.lastPurchaseTimeInMs = states.lastPurchaseTimeInMs != null ? states.lastPurchaseTimeInMs : 0;
if (!isBoolean(states.tutorialComplete)
|| !isNumber(states.appInstallTimeInMs)
|| !isNumber(states.userLtvInUsd)
|| !isNumber(states.lastPurchaseTimeInMs)) {
throw new Error("Invalid type of parameter is passed.");
}
return states;
}
function getAdjustedSuppressionRules(config, debug) {
// provide default values for null fields
var defaultRules = defaultSuppressionRules();
var minUserLtvInUsd = config.minUserLtvInUsd != null ? config.minUserLtvInUsd : defaultRules.minUserLtvInUsd;
var elapsedTimeSinceCurrentLaunchInSecs = config.elapsedTimeSinceCurrentLaunchInSecs != null ? config.elapsedTimeSinceCurrentLaunchInSecs : defaultRules.elapsedTimeSinceCurrentLaunchInSecs;
var elapsedTimeSinceAppInstallInSecs = config.elapsedTimeSinceAppInstallInSecs != null ? config.elapsedTimeSinceAppInstallInSecs : defaultRules.elapsedTimeSinceAppInstallInSecs;
var elapsedTimeSinceAppInstallInDays = config.elapsedTimeSinceAppInstallInDays != null ? config.elapsedTimeSinceAppInstallInDays : defaultRules.elapsedTimeSinceAppInstallInDays;
var elapsedTimeSinceLastAdShownInSecs = config.elapsedTimeSinceLastAdShownInSecs != null ? config.elapsedTimeSinceLastAdShownInSecs : defaultRules.elapsedTimeSinceLastAdShownInSecs;
var elapsedTimeSinceLastPurchaseInSecs = config.elapsedTimeSinceLastPurchaseInSecs != null ? config.elapsedTimeSinceLastPurchaseInSecs : defaultRules.elapsedTimeSinceLastPurchaseInSecs;
var tutorialCheckEnabled = config.tutorialCheckEnabled != null ? config.tutorialCheckEnabled : defaultRules.tutorialCheckEnabled;
config.minUserLtvInUsd = minUserLtvInUsd;
config.elapsedTimeSinceCurrentLaunchInSecs = elapsedTimeSinceCurrentLaunchInSecs;
config.elapsedTimeSinceAppInstallInSecs = elapsedTimeSinceAppInstallInSecs;
config.elapsedTimeSinceAppInstallInDays = elapsedTimeSinceAppInstallInDays;
config.elapsedTimeSinceLastAdShownInSecs = elapsedTimeSinceLastAdShownInSecs;
config.elapsedTimeSinceLastPurchaseInSecs = elapsedTimeSinceLastPurchaseInSecs;
config.tutorialCheckEnabled = tutorialCheckEnabled;
// remove disabled rules from suppression rules. (disabled when set to -1)
var disabledRules = disabledSuppressionRules(config);
Object.keys(disabledRules).forEach(function (key) {
delete config[key];
prettyPrint(key + " check is disabled", debug);
});
return config;
}
function defaultSuppressionRules() {
return {
"minUserLtvInUsd": 0.99, // Greater or equal than this value will suppress loading/showing interstitial ads
"elapsedTimeSinceCurrentLaunchInSecs": 60, // Less than this value will suppress showing interstitial ads
"elapsedTimeSinceAppInstallInSecs": 600, // Less than this value will suppress loading/showing interstitial ads
"elapsedTimeSinceAppInstallInDays": 30, // Less that this value will suppress showing banner ads
"elapsedTimeSinceLastAdShownInSecs": 300, // Less than this value will suppress showing interstitial ads
"elapsedTimeSinceLastPurchaseInSecs": 2592000, // 30 days - If payer and less than this value will suppress loading/showing interstitial ads
"tutorialCheckEnabled": true // SDK will ignore the tutorial check if disabled
};
}
function disabledSuppressionRules(rules) {
var disabledRules = {};
Object.keys(rules).forEach(function (key) {
if (rules[key] == -1 || rules[key] == false) {
disabledRules[key] = true;
}
});
return disabledRules;
}
/*********************************************************
* Helper functions
*/
function getTimeDifferenceInSeconds(t1, t2) {
return (t1 - t2) / 1000;
}
function getTimeDifferenceInDays(t1, t2) {
return Math.floor((t1 - t2) / (3600*1000*24))
}
function prettyPrint(obj, debug) {
if (debug) {
if (typeof console === "undefined") {
var noop = function() {};
console = { log: noop, error: noop }
}
console.log(JSON.stringify(obj, null, 4));
}
}
function andOperation(obj) {
var ret = true;
Object.keys(obj).forEach(function (key) {
ret &= obj[key];
});
return Boolean(ret);
}
function strToBool(value) {
return value == 'true';
}
function isNumber(x) {
return typeof x === 'number';
}
function isBoolean(x) {
return typeof x === 'boolean' || (typeof x === 'object' && typeof x.valueOf() === 'boolean');
}
function isBanner(adType) {
return adType === 'banner';
}

1
assets/revsdk.properties Normal file
View File

@@ -0,0 +1 @@
revSDKVersion=2024.11.1

50
assets/rv_binddatas.xml Normal file
View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--Value xml-->
<!--splash data-->
<string name="mSplashData.setAdClickText">getAdClickText</string>
<string name="mSplashData.setAppInfo">getAppInfo</string>
<string name="mSplashData.setCountDownText">getCountDownText</string>
<string name="mSplashData.setLogoText">getLogoText</string>
<!-- 固定值-->
<string name="mSplashData.setNoticeImage">getNoticeImage</string>
<string name="mSplashData.setLogoImage">getLogoImage</string>
<!--splash campaign data-->
<string name="campaign.iconUrl">getIconUrl</string>
<string name="campaign.appName">getAppName</string>
<string name="campaign.imageUrl">getImageUrl</string>
<!-- Action param read-->
<!-- <string name=[xml定义函数名]>action 类型|逻辑控制来源|具体控制逻辑的参数值</string>-->
<!-- 示例 <string name="dyAction.getClick">click|url|alecfc</string>-->
<string name="dyAction.getLogicClick">click|alecfc</string>
<string name="dyAction.getClick">click</string>
<string name="dyAction.getMove">move</string>
<string name="dyAction.getLongClick">longclick</string>
<string name="dyAction.getWobble">wobble</string>
<!-- Strategy 获取方式-->
<string name="dyStrategy.getDeeplink">deeplink</string>
<string name="dyStrategy.getClose">close</string>
<string name="dyStrategy.getActivity">activity</string>
<string name="dyStrategy.getDownload">download</string>
<string name="dyStrategy.feedback">feedback</string>
<string name="dyStrategy.notice">notice</string>
<string name="dyStrategy.permissionInfo">permissionInfo</string>
<string name="dyStrategy.privateAddress">privateAddress</string>
<!--effect-->
<string name="dyEffect.getVisibleParam">visible|parent</string>
<string name="dyEffect.getVisible">visible</string>
<string name="dyEffect.getCountDown">countdown</string>
<string name="dyEffect.getWobble">wobble</string>
<string name="defaults">default</string>
</resources>

0
converted_text.txt Normal file
View File

0
extracted_strings.txt Normal file
View File

0
extracted_text.txt Normal file
View File

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
lib/arm64-v8a/libNimble.so Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/arm64-v8a/libfmodex.so Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/arm64-v8a/libtapjoy.so Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

0
m Normal file
View File

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3
res/anim/abc_fade_in.xml Normal file
View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<alpha android:interpolator="@android:anim/decelerate_interpolator" android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="0.0" android:toAlpha="1.0"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<alpha android:interpolator="@android:anim/decelerate_interpolator" android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="1.0" android:toAlpha="0.0"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:interpolator="@android:anim/decelerate_interpolator" android:duration="@integer/abc_config_activityDefaultDur" android:pivotX="50.0%" android:pivotY="100.0%" android:fromXScale="0.9" android:toXScale="1.0" android:fromYScale="0.9" android:toYScale="1.0" />
<alpha android:interpolator="@android:anim/decelerate_interpolator" android:duration="@integer/abc_config_activityShortDur" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:interpolator="@android:anim/decelerate_interpolator" android:duration="@integer/abc_config_activityShortDur" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:interpolator="@android:anim/decelerate_interpolator" android:duration="@integer/abc_config_activityShortDur" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:interpolator="@android:anim/decelerate_interpolator" android:duration="@integer/abc_config_activityDefaultDur" android:pivotX="50.0%" android:pivotY="100.0%" android:fromXScale="1.0" android:toXScale="0.9" android:fromYScale="1.0" android:toYScale="0.9" />
<alpha android:interpolator="@android:anim/decelerate_interpolator" android:duration="@integer/abc_config_activityShortDur" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<translate android:interpolator="@android:anim/decelerate_interpolator" android:duration="@android:integer/config_mediumAnimTime" android:fromYDelta="50.0%p" android:toYDelta="0.0"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<translate android:interpolator="@android:anim/decelerate_interpolator" android:duration="@android:integer/config_mediumAnimTime" android:fromYDelta="-50.0%p" android:toYDelta="0.0"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<translate android:interpolator="@android:anim/accelerate_interpolator" android:duration="@android:integer/config_mediumAnimTime" android:fromYDelta="0.0" android:toYDelta="50.0%p"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<translate android:interpolator="@android:anim/accelerate_interpolator" android:duration="@android:integer/config_mediumAnimTime" android:fromYDelta="0.0" android:toYDelta="-50.0%p"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<alpha android:interpolator="@android:interpolator/decelerate_quad" android:duration="@integer/config_tooltipAnimTime" android:fromAlpha="0.0" android:toAlpha="1.0"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<alpha android:interpolator="@android:interpolator/accelerate_quad" android:duration="@integer/config_tooltipAnimTime" android:fromAlpha="1.0" android:toAlpha="0.0"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:interpolator="@android:anim/accelerate_interpolator" android:duration="300" android:fromYDelta="0.0%" android:toYDelta="100.0%" />
</set>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:interpolator="@android:anim/accelerate_interpolator" android:duration="300" android:fromYDelta="100.0%" android:toYDelta="0.0%" />
</set>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator android:interpolator="@interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_1" android:duration="166" android:valueFrom="M -7.0,-7.0 l 14.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,14.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l -14.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,-14.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z" android:valueTo="M 0.0,-0.05 l 0.0,0.0 c 0.02761423749,0.0 0.05,0.02238576251 0.05,0.05 l 0.0,0.0 c 0.0,0.02761423749 -0.02238576251,0.05 -0.05,0.05 l 0.0,0.0 c -0.02761423749,0.0 -0.05,-0.02238576251 -0.05,-0.05 l 0.0,0.0 c 0.0,-0.02761423749 0.02238576251,-0.05 0.05,-0.05 Z M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z" android:valueType="pathType" android:propertyName="pathData" />
<set android:ordering="sequentially">
<objectAnimator android:interpolator="@android:interpolator/linear" android:duration="166" android:valueFrom="1.0" android:valueTo="1.0" android:propertyName="fillAlpha" />
<objectAnimator android:interpolator="@interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_0" android:duration="33" android:valueFrom="1.0" android:valueTo="0.0" android:propertyName="fillAlpha" />
</set>
</set>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<set android:ordering="sequentially">
<objectAnimator android:interpolator="@android:interpolator/linear" android:duration="200" android:valueFrom="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M -2.0,5.00001525879 c 0.0,0.0 -1.4234161377,-1.40159606934 -1.4234161377,-1.40159606934 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 0.00932312011719,-0.0124053955078 0.00932312011719,-0.0124053955078 c 0.0,0.0 0.0234069824219,-0.0235137939453 0.0234069824219,-0.0235137939453 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -1.4375,1.43751525879 -1.4375,1.43751525879 Z" android:valueTo="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M -2.0,5.00001525879 c 0.0,0.0 -1.4234161377,-1.40159606934 -1.4234161377,-1.40159606934 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 0.00932312011719,-0.0124053955078 0.00932312011719,-0.0124053955078 c 0.0,0.0 0.0234069824219,-0.0235137939453 0.0234069824219,-0.0235137939453 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -1.4375,1.43751525879 -1.4375,1.43751525879 Z" android:valueType="pathType" android:propertyName="pathData" />
<objectAnimator android:interpolator="@interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_1" android:duration="300" android:valueFrom="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M -2.0,5.00001525879 c 0.0,0.0 -1.4234161377,-1.40159606934 -1.4234161377,-1.40159606934 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 0.00932312011719,-0.0124053955078 0.00932312011719,-0.0124053955078 c 0.0,0.0 0.0234069824219,-0.0235137939453 0.0234069824219,-0.0235137939453 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -1.4375,1.43751525879 -1.4375,1.43751525879 Z" android:valueTo="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M -2.0,5.00001525879 c 0.0,0.0 -5.0,-5.00001525879 -5.0,-5.00001525879 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 3.58590698242,3.58601379395 3.58590698242,3.58601379395 c 0.0,0.0 7.58590698242,-7.58601379395 7.58590698242,-7.58601379395 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -9.0,9.00001525879 -9.0,9.00001525879 Z" android:valueType="pathType" android:propertyName="pathData" />
</set>
<set android:ordering="sequentially">
<objectAnimator android:interpolator="@android:interpolator/linear" android:duration="166" android:valueFrom="0.0" android:valueTo="0.0" android:propertyName="fillAlpha" />
<objectAnimator android:interpolator="@interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_0" android:duration="33" android:valueFrom="0.0" android:valueTo="1.0" android:propertyName="fillAlpha" />
</set>
</set>

Some files were not shown because too many files have changed in this diff Show More