# Preserve Android / java classes
-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}
-keep class sun.misc.Unsafe { *; }

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}


-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

-keepattributes JavascriptInterface
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}
-keep public class android.webkit.JavascriptInterface {}
-keep class androidx.core.app.CoreComponentFactory { *; }

-keepattributes Signature

-keepattributes Annotation
-keep class javax.annotation.** { *; }
-dontwarn javax.annotation.**

-dontnote com.google.gson.**
-dontnote com.google.android.gms.ads.**
-dontnote com.google.android.**
-dontnote com.google.ads.**
#....................................#
-keep class com.huawei.hms.ads.** {*; }
-keep interface com.huawei.hms.ads.** {*; }

-keeppackagenames com.mngads.**


# Preserve MNG classes
-keep class com.mngads.exceptions.** { *; }
-keep class com.mngads.listener.** { *; }
-keep class com.mngads.service.** { *; }
-keep class com.mngads.util.MNGAdSize { *; }
-keep class com.mngads.listener.CriteoBannerListener { *; }
-keep class com.mngads.listener.CriteoInterstitialListener { *; }
-keep class com.mngads.listener.CriteoNativeAdListener { *; }
-keep class com.mngads.util.MAdvertiseAssetsType { *; }
-keep class com.mngads.util.MNGFrame { *; }
-keep class com.mngads.util.MNGServer { *; }
-keep class com.mngads.util.MNGStackHB { *; }
-keep class com.mngads.util.MAdvertiseInfeedFrame { *; }
-keep class com.mngads.util.MNGGender { *; }
-keep class com.mngads.util.MNGPreference { *; }
-keep class com.mngads.util.MNGPriceType { *; }
-keep class com.mngads.util.MNGDisplayType { *; }
-keep class com.mngads.util.MNGUtils { *; }
-keep class com.mngads.listener.MNGNativeObjectListener { *; }
-keep class com.mngads.util.MNGUtilsCmp{ *; }
-keep class com.mngads.MNGAdsFactory{ *; }
-keep class com.mngads.MNGAdsAdapter{ *; }
-keep class com.mngads.MNGNativeObject{ *; }
-keep class com.mngads.models.*{ *; }
-keep class com.mngads.MAdvertiseRewardedVideo { *; }
-keep class com.mngads.views.MAdvertiseNativeContainer { *; }
-keep class com.mngads.enumeration.BlueStackAdapterInitializationState { *;}
-keep interface com.mngads.nativead.NativeAdImpressionListener { *;}
-keep class com.mngads.global.MNGConstants {*;}
-keep class com.mngads.global.MNGConstants$Message {*;}
-keep class com.mngads.global.MNGConstants$DFP {*;}
-keep class com.mngads.global.MNGConstants$GdprVendors{*;}
-keep class com.mngads.util.MNGParameter {*;}
-keep class com.mngads.util.MNGDebugLog {*;}
-keep interface com.mngads.mediation.MediationNativeAdListener {*;}
-keep class com.mngads.mediation.MediationConfigurationFactory {*;}
-keep interface com.mngads.mediation.MediationAdLoadListener {*;}
-keep interface com.mngads.mediation.MediationAdListener {*;}
-keep class com.mngads.mediation.NativeAdMediationConfiguration {*;}
-keep class com.mngads.nativead.NativeAdPreference {*;}
-keep class com.mngads.nativead.NativeAdPreference$Companion {*;}
-keep class com.mngads.util.BlueStackDrawableUtils {*;}
-keep interface com.mngads.initialization.AdapterInitializer{*;}
-keep class com.mngads.mediation.MediationExtras {*;}
-keep class com.mngads.mediation.MediationExtras$Companion {*;}
-keep class com.mngads.config.AdapterInitConfig {*;}
-keep class com.mngads.global.MNGConstants$Criteo{*;}
-keep class com.mngads.global.MNGConstants$Fail{*;}
-keep class com.mngads.global.MNGConstants$Library{*;}
-keep class com.mngads.global.MNGConstants$Tracking{*;}
-keep class com.mngads.sdk.perf.request.MNGRequestAdResponse {*;}
-keep class com.mngads.sdk.perf.bidding.BluestackBiddingResponse {*;}
-keep class com.mngads.util.MNGSharedPreferences {*;}
-keep class com.mngads.util.MNGAdsType{*;}
-keep class com.mngads.mediation.MNGMngPerfAdapter {*;}
-keep class com.mngads.global.MNGConstants$OM_SDK {*;}
-keep class com.mngads.global.MNGConstants$WebService {*;}
-dontwarn com.mngads.**
#....................................#

-keep class **.R$* {
    <fields>;
}

# Preserve MNG Ad Server classes
-keep class com.mngads.sdk.nativead.**{ *; }
-keep class com.mngads.sdk.listener.**{ *; }
-keep class com.mngads.sdk.perf.listener.**{ *; }
-keep class com.mngads.sdk.perf.util.MNGAdSize{ *; }
-keep class com.mngads.sdk.perf.umoove.**{ *; }
-keep class com.mngads.sdk.perf.view.MNGInAppWebView{ *; }
-keep class com.mngads.sdk.perf.interstitial.MNGInterstitialAdActivity{ *; }
-keep class com.mngads.sdk.perf.util.IntentFactory{ *; }
-keep class com.mngads.sdk.perf.video.MNGVideoPlayerActivity{ *; }
-keep class com.mngads.sdk.perf.video.util.MNGVideoSettings { *; }
-keep class com.mngads.sdk.perf.banner.MNGAdView { *; }

#....................................#


# Preserve GMS classes
-keep class com.google.android.gms.** { *;}
-dontwarn com.google.android.gms.**
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}
#....................................#


# Preserve B4S classes
-keep class com.ezeeworld.b4s.** { *; }
-dontwarn com.ezeeworld.b4s.**
-dontwarn retrofit2.**
-dontwarn com.fasterxml.**
#....................................#


# Preserve Amazon classes
-keep class com.amazon.** { *; }
-dontwarn com.amazon.**
#....................................#


# Preserve Flurry classes
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
#....................................#


# Preserve Smart Ad server classes
-keepclassmembers class com.smartadserver.android.library.** {
    @android.webkit.JavascriptInterface <methods>;
}
-keep class com.smartadserver.** { *; }
-dontwarn com.smartadserver.**
#....................................#


# Preserve Facebook classes
-keep class com.facebook.** { *; }
-dontwarn com.facebook.**
#....................................#


# Preserve Umoove classes
-keep class com.umoove.all.**{ *; }
-dontwarn com.umoove.all.**
#....................................#


# Preserve Presage classes
-dontnote io.presage.**
-dontwarn shared_presage.**
-dontwarn org.codehaus.**

-keepattributes Signature

-keep class shared_presage.** { *; }
-keep class io.presage.** { *; }
-keepclassmembers class io.presage.** {
 *;
}

# ---- MOAT

-keep class com.moat.** { *; }
-dontwarn com.moat.**

# ---- OKHTTP
-dontnote okhttp3.**
-dontnote okio.**
-dontwarn okhttp3.**
-dontwarn okio.**

-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault

-dontnote sun.misc.Unsafe
-dontnote android.net.http.*

-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**

-dontwarn org.apache.commons.collections.BeanMap
-dontwarn java.beans.**
#....................................#


# Preserve Mopub classes
-keep class com.mopub.mobileads.MoPubView { *; }

-keepclassmembers class com.mopub.** { public *; }
-keep public class com.mopub.**
#....................................#

-keep class com.google.android.gms.common.GooglePlayServicesUtil {*;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {*;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {*;}


# Preserve AdColony classes
-keepclassmembers class com.adcolony.sdk.ADCNative** {
    *;
 }
-keep class com.adcolony.sdk** {
    *;
 }
#....................................#

# Preserve OM SDK classes
-keep class com.iab.omid** {
    *;
}
#....................................#

# Preserve Data location SDK classes
-keep class com.madvertiselocation {
    *;
}

#......com.azerion.bluestack.......
-keeppackagenames com.azerion.**
# Preserve BlueStack classes
-keep class com.azerion.bluestack.BlueStack{ *; }
-keep class com.azerion.bluestack.RequestOptions{*;}
-keep class com.azerion.bluestack.initialization.InitializationStatus{*;}
-keep class com.azerion.bluestack.initialization.AdapterStatus{*;}
-keep class com.azerion.bluestack.initialization.AdapterStatus$AdapterState{*;}
-keep class com.azerion.bluestack.util.Size{*;}
-keep interface com.azerion.bluestack.initialization.InitializationListener{*;}
-keep interface com.azerion.bluestack.FullScreenAdListener{*;}
-keep class com.azerion.bluestack.error.**{*;}
-keep class com.azerion.bluestack.BlueStackPrivacySettings{*;}
-keep class com.azerion.bluestack.BlueStackPrivacySettings$Companion{*;}

# Preserve exposed public API classes
-keep class com.mngads.sdk.perf.vast.MNGRequestVast{*;}
-keep class com.mngads.sdk.perf.viewability.MAdvertiseOMHandler{*;}
-keep class com.mngads.sdk.perf.util.MNGAdFormat{*;}
-keep class com.mngads.sdk.perf.util.MNGAdPreferences{*;}
-keep class com.mngads.sdk.perf.util.MNGUtils { *; }
-keep class com.mngads.sdk.perf.util.MNGGender { *; }
-keep class com.mngads.sdk.perf.util.MNGAction { *; }
-keep class com.mngads.sdk.perf.request.MNGRequestBuilder { *; }

# Banner
-keep interface com.azerion.bluestack.banner.BannerViewListener{*;}
-keep class com.azerion.bluestack.banner.BannerView{*;}
-keep enum com.azerion.bluestack.banner.AdSize{*;}

# Interstitial
-keep interface com.azerion.bluestack.interstitial.InterstitialAdListener{*;}
-keep class com.azerion.bluestack.interstitial.InterstitialAd{*;}

# Rewarded
-keep interface com.azerion.bluestack.rewarded.RewardedAdListener{*;}
-keep class com.azerion.bluestack.rewarded.RewardedAd{*;}
-keep class com.azerion.bluestack.rewarded.Reward{*;}

-dontwarn java.lang.invoke.StringConcatFactory


