-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.analytics.AnalyticsInitializer { *; }
-if class co.pushe.plus.analytics.goal.ViewGoalTargetValue
-keepnames class co.pushe.plus.analytics.goal.ViewGoalTargetValue
-if class co.pushe.plus.analytics.goal.ViewGoalTargetValue
-keep class co.pushe.plus.analytics.goal.ViewGoalTargetValueJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.goal.ViewGoalTargetValue
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.goal.ViewGoalTargetValue
-keepclassmembers class co.pushe.plus.analytics.goal.ViewGoalTargetValue {
    public synthetic <init>(java.lang.String,boolean,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.session.SessionActivity
-keepnames class co.pushe.plus.analytics.session.SessionActivity
-if class co.pushe.plus.analytics.session.SessionActivity
-keep class co.pushe.plus.analytics.session.SessionActivityJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.session.SessionActivity
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.session.SessionActivity
-keepclassmembers class co.pushe.plus.analytics.session.SessionActivity {
    public synthetic <init>(java.lang.String,long,long,long,java.util.Map,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.goal.ButtonClickGoal
-keepnames class co.pushe.plus.analytics.goal.ButtonClickGoal
-if class co.pushe.plus.analytics.goal.ButtonClickGoal
-keep class co.pushe.plus.analytics.goal.ButtonClickGoalJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.goal.ButtonClickGoal
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.goal.ButtonClickGoal
-keepclassmembers class co.pushe.plus.analytics.goal.ButtonClickGoal {
    public synthetic <init>(co.pushe.plus.analytics.goal.GoalType,java.lang.String,java.lang.String,co.pushe.plus.analytics.goal.GoalMessageFragmentInfo,java.lang.String,java.util.Set,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

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

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

-if class co.pushe.plus.analytics.goal.ActivityReachGoal
-keepnames class co.pushe.plus.analytics.goal.ActivityReachGoal
-if class co.pushe.plus.analytics.goal.ActivityReachGoal
-keep class co.pushe.plus.analytics.goal.ActivityReachGoalJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.goal.ActivityReachGoal
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.goal.ActivityReachGoal
-keepclassmembers class co.pushe.plus.analytics.goal.ActivityReachGoal {
    public synthetic <init>(co.pushe.plus.analytics.goal.GoalType,java.lang.String,java.lang.String,java.util.List,java.util.Set,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.session.SessionFragment
-keepnames class co.pushe.plus.analytics.session.SessionFragment
-if class co.pushe.plus.analytics.session.SessionFragment
-keep class co.pushe.plus.analytics.session.SessionFragmentJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.session.SessionFragment
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.session.SessionFragment
-keepclassmembers class co.pushe.plus.analytics.session.SessionFragment {
    public synthetic <init>(java.lang.String,long,long,long,java.util.Map,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.goal.FragmentReachGoal
-keepnames class co.pushe.plus.analytics.goal.FragmentReachGoal
-if class co.pushe.plus.analytics.goal.FragmentReachGoal
-keep class co.pushe.plus.analytics.goal.FragmentReachGoalJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.goal.FragmentReachGoal
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.goal.FragmentReachGoal
-keepclassmembers class co.pushe.plus.analytics.goal.FragmentReachGoal {
    public synthetic <init>(co.pushe.plus.analytics.goal.GoalType,java.lang.String,java.lang.String,co.pushe.plus.analytics.goal.GoalMessageFragmentInfo,java.util.List,java.util.Set,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.messages.upstream.EventMessage
-keepnames class co.pushe.plus.analytics.messages.upstream.EventMessage
-if class co.pushe.plus.analytics.messages.upstream.EventMessage
-keep class co.pushe.plus.analytics.messages.upstream.EventMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.messages.upstream.EventMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.messages.upstream.EventMessage
-keepclassmembers class co.pushe.plus.analytics.messages.upstream.EventMessage {
    public synthetic <init>(java.lang.String,co.pushe.plus.analytics.event.EventAction,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.goal.ViewGoal
-keepnames class co.pushe.plus.analytics.goal.ViewGoal
-if class co.pushe.plus.analytics.goal.ViewGoal
-keep class co.pushe.plus.analytics.goal.ViewGoalJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.goal.ViewGoal
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.goal.ViewGoal
-keepclassmembers class co.pushe.plus.analytics.goal.ViewGoal {
    public synthetic <init>(co.pushe.plus.analytics.goal.ViewGoalType,java.util.List,java.lang.String,java.lang.String,co.pushe.plus.analytics.goal.GoalMessageFragmentInfo,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.analytics.messages.upstream.EcommerceMessage
-keepnames class co.pushe.plus.analytics.messages.upstream.EcommerceMessage
-if class co.pushe.plus.analytics.messages.upstream.EcommerceMessage
-keep class co.pushe.plus.analytics.messages.upstream.EcommerceMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.messages.upstream.EcommerceMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.messages.upstream.EcommerceMessage
-keepclassmembers class co.pushe.plus.analytics.messages.upstream.EcommerceMessage {
    public synthetic <init>(java.lang.String,double,java.lang.String,java.lang.Long,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

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

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

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

-if class co.pushe.plus.analytics.goal.GoalMessageFragmentInfo
-keepnames class co.pushe.plus.analytics.goal.GoalMessageFragmentInfo
-if class co.pushe.plus.analytics.goal.GoalMessageFragmentInfo
-keep class co.pushe.plus.analytics.goal.GoalMessageFragmentInfoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.analytics.goal.GoalMessageFragmentInfo
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.analytics.goal.GoalMessageFragmentInfo
-keepclassmembers class co.pushe.plus.analytics.goal.GoalMessageFragmentInfo {
    public synthetic <init>(java.lang.String,java.util.Map,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}


