-keepclassmembers enum co.pushe.plus.** { *; }
-keepclassmembers enum androidx.work.** { *; }

-keep class * extends co.pushe.plus.internal.PusheComponentInitializer {
    public void preInitialize(android.content.Context);
    public io.reactivex.Completable postInitialize(android.content.Context);
}
-keep class co.pushe.plus.internal.PusheInitializer { *; }

-keep class co.pushe.plus.** extends co.pushe.plus.internal.task.PusheTask { *; }

-optimizations !class/unboxing/enum

# -- Moshi --
-dontwarn okio.**
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
    <init>(...);
    @com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *

-keep class **JsonAdapter {
    <init>(...);
    <fields>;
}
-keepnames @com.squareup.moshi.JsonClass class *

-dontwarn org.codehaus.mojo.animal_sniffer.*

# Keep Exception names
-keepnames class co.pushe.plus.** extends java.lang.Exception

-keep class co.pushe.plus.notification.NotificationInitializer { *; }

-dontwarn me.leolin.shortcutbadger.**
-if class co.pushe.plus.notification.actions.UrlAction
-keepnames class co.pushe.plus.notification.actions.UrlAction
-if class co.pushe.plus.notification.actions.UrlAction
-keep class co.pushe.plus.notification.actions.UrlActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.actions.DismissAction
-keepnames class co.pushe.plus.notification.actions.DismissAction
-if class co.pushe.plus.notification.actions.DismissAction
-keep class co.pushe.plus.notification.actions.DismissActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.messages.upstream.UserInputDataMessage
-keepnames class co.pushe.plus.notification.messages.upstream.UserInputDataMessage
-if class co.pushe.plus.notification.messages.upstream.UserInputDataMessage
-keep class co.pushe.plus.notification.messages.upstream.UserInputDataMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.messages.upstream.UserInputDataMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.upstream.UserInputDataMessage
-keepclassmembers class co.pushe.plus.notification.messages.upstream.UserInputDataMessage {
    public synthetic <init>(java.lang.String,java.util.Map,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.actions.DownloadAppAction
-keepnames class co.pushe.plus.notification.actions.DownloadAppAction
-if class co.pushe.plus.notification.actions.DownloadAppAction
-keep class co.pushe.plus.notification.actions.DownloadAppActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.actions.DownloadAppAction
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.actions.DownloadAppAction
-keepclassmembers class co.pushe.plus.notification.actions.DownloadAppAction {
    public synthetic <init>(java.lang.String,java.lang.String,boolean,java.lang.String,co.pushe.plus.utils.Time,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.actions.WebViewAction
-keepnames class co.pushe.plus.notification.actions.WebViewAction
-if class co.pushe.plus.notification.actions.WebViewAction
-keep class co.pushe.plus.notification.actions.WebViewActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.actions.WebViewAction
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.actions.WebViewAction
-keepclassmembers class co.pushe.plus.notification.actions.WebViewAction {
    public synthetic <init>(java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.messages.downstream.NotificationButton
-keepnames class co.pushe.plus.notification.messages.downstream.NotificationButton
-if class co.pushe.plus.notification.messages.downstream.NotificationButton
-keep class co.pushe.plus.notification.messages.downstream.NotificationButtonJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.messages.downstream.NotificationButton
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.downstream.NotificationButton
-keepclassmembers class co.pushe.plus.notification.messages.downstream.NotificationButton {
    public synthetic <init>(java.lang.String,co.pushe.plus.notification.actions.Action,java.lang.String,java.lang.String,int,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.messages.downstream.CancelNotificationMessage
-keepnames class co.pushe.plus.notification.messages.downstream.CancelNotificationMessage
-if class co.pushe.plus.notification.messages.downstream.CancelNotificationMessage
-keep class co.pushe.plus.notification.messages.downstream.CancelNotificationMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage
-keepnames class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage
-if class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage
-keep class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
    private com.squareup.moshi.JsonAdapter nullableTimeAtSecondsAdapter;
}
-if class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage
-keep @interface co.pushe.plus.utils.Seconds
-if class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage
-keepclassmembers class co.pushe.plus.notification.messages.upstream.ApplicationDownloadMessage {
    public synthetic <init>(java.lang.String,java.lang.String,co.pushe.plus.utils.Time,co.pushe.plus.utils.Time,co.pushe.plus.utils.Time,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.messages.upstream.NotificationReportMessage
-keepnames class co.pushe.plus.notification.messages.upstream.NotificationReportMessage
-if class co.pushe.plus.notification.messages.upstream.NotificationReportMessage
-keep class co.pushe.plus.notification.messages.upstream.NotificationReportMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.messages.upstream.NotificationReportMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.upstream.NotificationReportMessage
-keepclassmembers class co.pushe.plus.notification.messages.upstream.NotificationReportMessage {
    public synthetic <init>(java.lang.String,int,java.util.Map,java.util.Map,java.util.List,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.actions.DialogAction
-keepnames class co.pushe.plus.notification.actions.DialogAction
-if class co.pushe.plus.notification.actions.DialogAction
-keep class co.pushe.plus.notification.actions.DialogActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.actions.DialogAction
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.actions.DialogAction
-keepclassmembers class co.pushe.plus.notification.actions.DialogAction {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,java.util.List,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.actions.CafeBazaarRateAction
-keepnames class co.pushe.plus.notification.actions.CafeBazaarRateAction
-if class co.pushe.plus.notification.actions.CafeBazaarRateAction
-keep class co.pushe.plus.notification.actions.CafeBazaarRateActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.actions.UserActivityAction
-keepnames class co.pushe.plus.notification.actions.UserActivityAction
-if class co.pushe.plus.notification.actions.UserActivityAction
-keep class co.pushe.plus.notification.actions.UserActivityActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.actions.FallbackAction
-keepnames class co.pushe.plus.notification.actions.FallbackAction
-if class co.pushe.plus.notification.actions.FallbackAction
-keep class co.pushe.plus.notification.actions.FallbackActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.actions.DownloadAndWebViewAction
-keepnames class co.pushe.plus.notification.actions.DownloadAndWebViewAction
-if class co.pushe.plus.notification.actions.DownloadAndWebViewAction
-keep class co.pushe.plus.notification.actions.DownloadAndWebViewActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.actions.DownloadAndWebViewAction
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.actions.DownloadAndWebViewAction
-keepclassmembers class co.pushe.plus.notification.actions.DownloadAndWebViewAction {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,co.pushe.plus.utils.Time,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.messages.downstream.NotificationMessage
-keepnames class co.pushe.plus.notification.messages.downstream.NotificationMessage
-if class co.pushe.plus.notification.messages.downstream.NotificationMessage
-keep class co.pushe.plus.notification.messages.downstream.NotificationMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
    private com.squareup.moshi.JsonAdapter nullableTimeAtMillisAdapter;
}
-if class co.pushe.plus.notification.messages.downstream.NotificationMessage
-keep @interface co.pushe.plus.utils.Millis
-if class co.pushe.plus.notification.messages.downstream.NotificationMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.downstream.NotificationMessage
-keepclassmembers class co.pushe.plus.notification.messages.downstream.NotificationMessage {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.util.List,co.pushe.plus.notification.actions.Action,int,boolean,java.lang.String,int,int,boolean,java.lang.String,java.lang.String,boolean,boolean,java.lang.String,boolean,boolean,java.lang.String,java.lang.String,java.lang.String,co.pushe.plus.utils.Time,java.lang.String,java.lang.String,java.util.Date,java.lang.Long,java.lang.Integer,java.util.Map,boolean,int,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.messages.upstream.NotificationActionMessage
-keepnames class co.pushe.plus.notification.messages.upstream.NotificationActionMessage
-if class co.pushe.plus.notification.messages.upstream.NotificationActionMessage
-keep class co.pushe.plus.notification.messages.upstream.NotificationActionMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
    private com.squareup.moshi.JsonAdapter nullableTimeAtMillisAdapter;
}
-if class co.pushe.plus.notification.messages.upstream.NotificationActionMessage
-keep @interface co.pushe.plus.utils.Millis
-if class co.pushe.plus.notification.messages.upstream.NotificationActionMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.upstream.NotificationActionMessage
-keepclassmembers class co.pushe.plus.notification.messages.upstream.NotificationActionMessage {
    public synthetic <init>(java.lang.String,co.pushe.plus.notification.messages.upstream.NotificationActionMessage$NotificationResponseAction,java.lang.String,co.pushe.plus.utils.Time,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.actions.IntentAction
-keepnames class co.pushe.plus.notification.actions.IntentAction
-if class co.pushe.plus.notification.actions.IntentAction
-keep class co.pushe.plus.notification.actions.IntentActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.actions.IntentAction
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.actions.IntentAction
-keepclassmembers class co.pushe.plus.notification.actions.IntentAction {
    public synthetic <init>(java.lang.String,java.lang.String,java.util.List,java.lang.String,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage
-keepnames class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage
-if class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage
-keep class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
    private com.squareup.moshi.JsonAdapter nullableTimeAtSecondsAdapter;
}
-if class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage
-keep @interface co.pushe.plus.utils.Seconds
-if class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage
-keepclassmembers class co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage {
    public synthetic <init>(java.lang.String,co.pushe.plus.notification.messages.upstream.ApplicationInstallMessage$InstallStatus,java.lang.String,co.pushe.plus.messages.common.ApplicationDetail,co.pushe.plus.utils.Time,co.pushe.plus.utils.Time,co.pushe.plus.utils.Time,co.pushe.plus.utils.Time,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.notification.actions.AppAction
-keepnames class co.pushe.plus.notification.actions.AppAction
-if class co.pushe.plus.notification.actions.AppAction
-keep class co.pushe.plus.notification.actions.AppActionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.notification.messages.upstream.UserNotificationMessage
-keepnames class co.pushe.plus.notification.messages.upstream.UserNotificationMessage
-if class co.pushe.plus.notification.messages.upstream.UserNotificationMessage
-keep class co.pushe.plus.notification.messages.upstream.UserNotificationMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.notification.messages.upstream.UserNotificationMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.notification.messages.upstream.UserNotificationMessage
-keepclassmembers class co.pushe.plus.notification.messages.upstream.UserNotificationMessage {
    public synthetic <init>(java.util.Map,java.lang.String,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}


