# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/anawara/Development/Android/adt-bundle-mac-x86_64/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}
-dontwarn rx.internal.util.unsafe.**

-dontwarn sun.misc.**

-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

-keepattributes InnerClasses
-keepattributes Exceptions,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*
-keepattributes EnclosingMethod

-keep public class **Instabug {*;}
-keep public class **Instabug$Builder {*;}
-keep public class **InstabugLocale {*;}
-keep public class **.logging.InstabugLog {*;}
-keep public class **.user.UserEventParam {*;}
-keep public class **.logging.InstabugNetworkLog {*;}
-keep public class **.model.NetworkLog {*;}
-keep public class **.internal.video.VideoProcessingService$Action {*;}

-keep public class **InstabugSDKLogger {*;}
-keep public class **InstabugTrackingDelegate {*;}

-keep public class **OnSdkDismissedCallback {*;}
-keep public class **OnSdkDismissedCallback$DismissType {*;}
-keep public class **.model.Bug$Type {*;}
-keep public class **OnSdkInvokedCallback {*;}

-keep public class **Feature {*;}
-keep public class **Feature$State {*;}

-keep class **CapturableView {*;}
-keep class **SnapshotPreparationCallback {*;}

-keep public class **.invocation.InstabugInvocationEvent {*;}
-keep public class **.invocation.InstabugInvocationMode {*;}
-keep public class **IBGInvocationMode {*;}
-keep public class **IBGInvocationEvent {*;}

-keep public class **.invocation.util.InstabugVideoRecordingButtonCorner {*;}
-keep public class **.invocation.util.InstabugFloatingButtonEdge {*;}
-keep public class **IBGFloatingButtonEdge {*;}

-keep public class **InstabugColorTheme {*;}
-keep public class **IBGColorTheme {*;}

-keep public class **AbstractMigration {*;}
-keep public class **LastContactedMigration {*;}
-keep public class **IBGCustomTextPlaceHolder {*;}
-keep public class **IBGCustomTextPlaceHolder$Key {*;}


-keep public class com.instabug.library.R {*;}
-keep public class com.instabug.library.R.menu {*;}

-keep public class **InstabugCustomTextPlaceHolder {*;}
-keep public class **InstabugCustomTextPlaceHolder$Key {*;}

-keep public class **IBGCustomTextPlaceHolder {*;}
-keep public class **IBGCustomTextPlaceHolder$Key {*;}
-keep public class org.jcodec.** {*;}

-keep public class **BugCategory {*;}
-keep public class **ReportCategory {*;}

-keep public class **Plugin {*;}
-keep public class **SDKCoreEvent {*;}
-keep public class **SDKCoreEvent$Invocation {*;}
-keep public class **SDKCoreEvent$Session {*;}
-keep public class **SDKCoreEvent$User {*;}
-keep public class **SDKCoreEvent$Network {*;}
-keep public class **SDKCoreEventSubscriber {*;}

-keep public class **CacheManager {*;}
-keep public class **CacheManager$KeyExtractor {*;}
-keep public class **OnDiskCache {*;}
-keep public class **InstabugSDKLogger {*;}
-keep public class **InstabugDeviceProperties {*;}
-keep public class **InMemoryCache {*;}
-keep public class **InstabugInternalTrackingDelegate {*;}
-keep public class **Request {*;}
-keep public class **Request$FileToUpload {*;}
-keep public class **Request$Callbacks {*;}
-keep public class **Request$Endpoint {*;}
-keep public class **Request$RequestMethod {*;}
-keep public class **Request$RequestParameter {*;}
-keep public class **Cache {*;}
-keep public class **Cacheable {*;}
-keep public class **InstabugNetworkBasedBackgroundService {*;}
-keep public class **NetworkManager {*;}
-keep public class **NetworkManager$RequestType {*;}
-keep public class **RequestResponse {*;}
-keep public class **InstabugState {*;}
-keep public class **InstabugUserEventLogger {*;}
-keep public class **StringUtility {*;}
-keep public class **_InstabugActivity {*;}
-keep public class **InstabugThemeResolver {*;}
-keep public class **OrientationUtils {*;}
-keep public class **AttrResolver {*;}
-keep public class **InstabugLogoProvider {*;}
-keep public class **InstabugDateFormatter {*;}
-keep public class **BaseFragment {*;}
-keep public class **BasePresenter {*;}
-keep public class **BaseContract {*;}
-keep public class **BaseContract*View {*;}
-keep public class **BaseContract*Presenter {*;}
-keep public class **AlertDialog{*;}
-keep public class **InstabugCore {*;}
-keep public class **.analytics.AnalyticsObserver {*;}
-keep public class **.analytics.model.Api* {*;}
-keep public class **.analytics.model.SDKEvent* {*;}
-keep public class **.analytics.model.SDKEvent.ExtraAttribute* {*;}
-keep public class **.analytics.util.ViewResourcesUtil {*;}
-keep public class **.internal.video.InternalScreenRecordHelper {*;}
-keep public class **.internal.video.InternalAutoScreenRecorderHelper {*;}
-keep public class **.internal.storage.AttachmentManager {*;}
-keep public class **.internal.video.AutoScreenRecordingContract {*;}
-keep public class **.internal.video.ScreenRecordEvent {*;}
-keep public class **.view.ViewUtils {*;}
-keep public interface **AlertDialog$OnAlertViewsClickListener {*;}
-keep public class **.core.eventbus.AutoScreenRecordingEventBus {*;}
-keep public enum **.internal.video.AutoScreenRecordingService** {
                **[] $VALUES;
                 public *;}
-keep public class **.internal.video.AutoScreenRecordingFileHolder {*;}
-keep public class **.internal.video.InstabugVideoUtils {*;}

-keep public class **AttachmentsUtility {*;}
-keep public class **Attachment {*;}
-keep public class **Attachment$Type {*;}
-keep public class **State {*;}
-keep public class **State$Builder {*;}
-keep public class **State$StateItem {*;}
-keep public class **InstabugInternalBuilder {*;}
#TODO remove the next line
-keep public class **SettingsManager {*;}
-keep public class **settings.AttachmentsTypesParams {*;}

-keep public class **.screenshot.ExtraScreenshotHelper {*;}
-keep public interface **.screenshot.ExtraScreenshotHelper$OnCaptureListener {*;}
-keep public class **ScreenRecordingFloatingButtonInvoker {*;}
-keep public class **PluginPromptOption {*;}
-keep public class **PluginPromptOption$OnInvocationListener {*;}


-keep public class **InvocationMode {*;}
-keep public class **invocation.invocationdialog.InstabugDialogActivity {*;}
-keep public class **invocation.invocationdialog.InstabugDialogItem {*;}
-keep public class **invocation.invocationdialog.InstabugDialogListener {*;}
-keep public interface **invocation.invocationdialog.InstabugDialogListener$InstabugDialogCallbacks {*;}
-keep public class **extendedbugreport.ExtendedBugReport {*;}
-keep public enum **extendedbugreport.ExtendedBugReport.** {*;}
-keep public class **.view.ScaleImageView {*;}
-keep public class **EventBus {*;}
-keep public class **ActivityLifeCycleEvent {*;}
-keep public class **CurrentActivityLifeCycleEventBus {*;}
-keep public class **AssetEntity {*;}
-keep public class **AssetEntity$AssetType {*;}
-keep public class **util.BitmapUtils {*;}
-keep public interface **util.BitmapUtils$OnSaveBitmapCallback {*;}
-keep public class **DiskUtils {*;}
-keep public class **InstabugAddAttachmentsFragment {*;}
-keep public class **InstabugAudioRecordingFragment {*;}
-keep public class **core.ui.BaseToolbarActivity{*;}
-keep public class **BaseFragmentActivity {*;}
-keep public class **Colorizer {*;}
-keep public class **CacheChangedListener {*;}
-keep public class **VideoManipulationUtils {*;}
-keep public class **AudioPlayer {*;}
-keep public class **FragmentVisibilityChangedListener {*;}
-keep public class **InstabugAppData {*;}
-keep public class **PlaceHolderUtils {*;}
-keep public class **BaseReport {*;}
-keep public class **Api {*;}
-keep public class **Api$Parameter {*;}
-keep public class **AssetsCacheManager {*;}
-keep public class **AssetsCacheManager$OnDownloadFinished {*;}
-keep public class **ToolbarFragment {*;}
-keep public class **VideoPlayerFragment {*;}
-keep public class **PermissionsUtils {*;}
-keep public class **SystemServiceUtils {*;}
-keep public class **InstabugAddAttachmentsFragment$Callbacks {*;}
-keep public class **InstabugAudioRecordingFragment$Callbacks {*;}
-keep public class **AudioPlayer$OnStopListener {*;}
-keep public class **Invocation {*;}
-keep public class **ScaleImageView {*;}
-keep public class **network.BaseNetworkTask {*;}

-keep public class **InitialScreenshotHelper{*;}
-keep public class **InitialScreenshotHelper$InitialScreenshotCapturingListener{*;}
-keep public class **LastContactedChangedBroadcast{*;}
-keep public class **FieldHelper{*;}
-keep public class **RootViewInfo{*;}
-keep public class **StatusBarUtils{*;}
-keep public class **ScreenshotTaker{*;}
-keep public class **AnnotationLayout{*;}
-keep public class **LocaleUtils{*;}
-keep public class **bugreporting.model.ExtraReportField{*;}
-keep public class **Internal {*;}
-keep public class **UserEvent {*;}
-keep public class **LocaleHelper {*;}
-keep public class **.util.InstabugMemoryUtils{*;}
-keep public class **DisplayUtils{*;}
-keep public class **LocaleHelper{*;}
-keep public class **SimpleTextWatcher{*;}
-keep public class **util.threading.PoolProvider {*;}

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

-keepclassmembers class * extends java.lang.Enum {
    <fields>;
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep public class **VisualUserStepsHelper {*;}

-keep class com.instabug.library.ui.custom.** { *; }
-dontwarn edu.umd.cs.findbugs.annotations.SuppressFBWarnings
-keep class com.instabug.library.util.DrawableUtils { *; }
-keep class com.instabug.library.util.StringUtility { *; }
-keep class com.instabug.library.util.ScreenUtility { *; }
-keep class com.instabug.library.util.KeyboardUtils { *; }
-keep class com.instabug.library.util.BitmapWorkerTask { *; }
-keep interface com.instabug.library.util.BitmapWorkerTask$OnImageLoadedListener { *; }
-keep class com.instabug.library.util.DeviceStateProvider { *; }
-keep class com.instabug.library.view.IconView { *; }
-keep interface **ActionType {*;}
-keep class com.instabug.library.ui.onboarding.WelcomeMessageState { *; }

-keep class com.instabug.library.ui.custom.CircularImageView { *; }
-keep class **eventbus.coreeventbus.SDKCoreEventPublisher { *; }