##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized
-keep class io.piano.android.cxense.model.* { <fields>; }

# Adapt information about Kotlin file facades.
-adaptresourcefilecontents **.kotlin_module

# Preserve Kotlin metadata.
-keep class kotlin.Metadata { *; }

# Temporarily disable optimization on Kotlin classes.
-keep,includecode,allowobfuscation,allowshrinking @kotlin.Metadata class ** { *; }

-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
    <fields>;
}
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
    static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}

-if class io.piano.android.cxense.model.ApiError
-keepnames class io.piano.android.cxense.model.ApiError
-if class io.piano.android.cxense.model.ApiError
-keep class io.piano.android.cxense.model.ApiErrorJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.CandidateSegment
-keepnames class io.piano.android.cxense.model.CandidateSegment
-if class io.piano.android.cxense.model.CandidateSegment
-keep class io.piano.android.cxense.model.CandidateSegmentJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.ContentUser
-keepnames class io.piano.android.cxense.model.ContentUser
-if class io.piano.android.cxense.model.ContentUser
-keep class io.piano.android.cxense.model.ContentUserJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.ContextParameter
-keepnames class io.piano.android.cxense.model.ContextParameter
-if class io.piano.android.cxense.model.ContextParameter
-keep class io.piano.android.cxense.model.ContextParameterJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.ConversionEvent
-keepnames class io.piano.android.cxense.model.ConversionEvent
-if class io.piano.android.cxense.model.ConversionEvent
-keep class io.piano.android.cxense.model.ConversionEventJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.CustomParameter
-keepnames class io.piano.android.cxense.model.CustomParameter
-if class io.piano.android.cxense.model.CustomParameter
-keep class io.piano.android.cxense.model.CustomParameterJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.ExternalItem
-keepnames class io.piano.android.cxense.model.ExternalItem
-if class io.piano.android.cxense.model.ExternalItem
-keep class io.piano.android.cxense.model.ExternalItemJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.ExternalTypedItem
-keepnames class io.piano.android.cxense.model.ExternalTypedItem
-if class io.piano.android.cxense.model.ExternalTypedItem
-keep class io.piano.android.cxense.model.ExternalTypedItemJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.Impression
-keepnames class io.piano.android.cxense.model.Impression
-if class io.piano.android.cxense.model.Impression
-keep class io.piano.android.cxense.model.ImpressionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.PerformanceEvent
-keepnames class io.piano.android.cxense.model.PerformanceEvent
-if class io.piano.android.cxense.model.PerformanceEvent
-keep class io.piano.android.cxense.model.PerformanceEventJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.Segment
-keepnames class io.piano.android.cxense.model.Segment
-if class io.piano.android.cxense.model.Segment
-keep class io.piano.android.cxense.model.SegmentJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.SegmentLookupRequest$SegmentContext
-keepnames class io.piano.android.cxense.model.SegmentLookupRequest$SegmentContext
-if class io.piano.android.cxense.model.SegmentLookupRequest$SegmentContext
-keep class io.piano.android.cxense.model.SegmentLookupRequest_SegmentContextJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.SegmentLookupRequest
-keepnames class io.piano.android.cxense.model.SegmentLookupRequest
-if class io.piano.android.cxense.model.SegmentLookupRequest
-keep class io.piano.android.cxense.model.SegmentLookupRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.SegmentLookupResponse
-keepnames class io.piano.android.cxense.model.SegmentLookupResponse
-if class io.piano.android.cxense.model.SegmentLookupResponse
-keep class io.piano.android.cxense.model.SegmentLookupResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.TypedItem$Decimal
-keepnames class io.piano.android.cxense.model.TypedItem$Decimal
-if class io.piano.android.cxense.model.TypedItem$Decimal
-keep class io.piano.android.cxense.model.TypedItem_DecimalJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.TypedItem$Number
-keepnames class io.piano.android.cxense.model.TypedItem$Number
-if class io.piano.android.cxense.model.TypedItem$Number
-keep class io.piano.android.cxense.model.TypedItem_NumberJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.TypedItem$String
-keepnames class io.piano.android.cxense.model.TypedItem$String
-if class io.piano.android.cxense.model.TypedItem$String
-keep class io.piano.android.cxense.model.TypedItem_StringJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.TypedItem$Time
-keepnames class io.piano.android.cxense.model.TypedItem$Time
-if class io.piano.android.cxense.model.TypedItem$Time
-keep class io.piano.android.cxense.model.TypedItem_TimeJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.TypedSegmentsResponse
-keepnames class io.piano.android.cxense.model.TypedSegmentsResponse
-if class io.piano.android.cxense.model.TypedSegmentsResponse
-keep class io.piano.android.cxense.model.TypedSegmentsResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.User
-keepnames class io.piano.android.cxense.model.User
-if class io.piano.android.cxense.model.User
-keep class io.piano.android.cxense.model.UserJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserDataRequest
-keepnames class io.piano.android.cxense.model.UserDataRequest
-if class io.piano.android.cxense.model.UserDataRequest
-keep class io.piano.android.cxense.model.UserDataRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserExternalDataRequest
-keepnames class io.piano.android.cxense.model.UserExternalDataRequest
-if class io.piano.android.cxense.model.UserExternalDataRequest
-keep class io.piano.android.cxense.model.UserExternalDataRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserExternalTypedData
-keepnames class io.piano.android.cxense.model.UserExternalTypedData
-if class io.piano.android.cxense.model.UserExternalTypedData
-keep class io.piano.android.cxense.model.UserExternalTypedDataJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserExternalTypedDataResponse
-keepnames class io.piano.android.cxense.model.UserExternalTypedDataResponse
-if class io.piano.android.cxense.model.UserExternalTypedDataResponse
-keep class io.piano.android.cxense.model.UserExternalTypedDataResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserIdentity
-keepnames class io.piano.android.cxense.model.UserIdentity
-if class io.piano.android.cxense.model.UserIdentity
-keep class io.piano.android.cxense.model.UserIdentityJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserIdentityMappingRequest
-keepnames class io.piano.android.cxense.model.UserIdentityMappingRequest
-if class io.piano.android.cxense.model.UserIdentityMappingRequest
-keep class io.piano.android.cxense.model.UserIdentityMappingRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserPreference
-keepnames class io.piano.android.cxense.model.UserPreference
-if class io.piano.android.cxense.model.UserPreference
-keep class io.piano.android.cxense.model.UserPreferenceJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserProfile
-keepnames class io.piano.android.cxense.model.UserProfile
-if class io.piano.android.cxense.model.UserProfile
-keep class io.piano.android.cxense.model.UserProfileJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserProfileGroup
-keepnames class io.piano.android.cxense.model.UserProfileGroup
-if class io.piano.android.cxense.model.UserProfileGroup
-keep class io.piano.android.cxense.model.UserProfileGroupJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.UserSegmentRequest
-keepnames class io.piano.android.cxense.model.UserSegmentRequest
-if class io.piano.android.cxense.model.UserSegmentRequest
-keep class io.piano.android.cxense.model.UserSegmentRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.WidgetContext
-keepnames class io.piano.android.cxense.model.WidgetContext
-if class io.piano.android.cxense.model.WidgetContext
-keep class io.piano.android.cxense.model.WidgetContextJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.WidgetRequest
-keepnames class io.piano.android.cxense.model.WidgetRequest
-if class io.piano.android.cxense.model.WidgetRequest
-keep class io.piano.android.cxense.model.WidgetRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.WidgetResponse
-keepnames class io.piano.android.cxense.model.WidgetResponse
-if class io.piano.android.cxense.model.WidgetResponse
-keep class io.piano.android.cxense.model.WidgetResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.piano.android.cxense.model.WidgetVisibilityReport
-keepnames class io.piano.android.cxense.model.WidgetVisibilityReport
-if class io.piano.android.cxense.model.WidgetVisibilityReport
-keep class io.piano.android.cxense.model.WidgetVisibilityReportJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
