// Path: library/src/main/java/de/mrapp/android/preference/view/SeekBar.java
// public class SeekBar extends AppCompatSeekBar {
// 
//     /**
//      * The drawable, which is used to visualize the seek bar's thumb.
//      */
//     private Drawable thumb;
// 
//     /**
//      * The seekBarColor of the seek bar.
//      */
//     private int seekBarColor;
// 
//     /**
//      * Applies the attributes of the context's theme on the seek bar.
//      */
//     private void applyTheme() {
//         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//             setSeekBarColor(ThemeUtil.getColor(getContext(), R.attr.colorAccent));
//         }
//     }
// 
//     /**
//      * Creates a new seek bar.
//      *
//      * @param context
//      *         The context, which should be used by the seek bar, as an instance of the class {@link
//      *         Context}. The context may not be null
//      */
//     public SeekBar(@NonNull final Context context) {
//         super(context);
//         applyTheme();
//     }
// 
//     /**
//      * Creates a new seek bar.
//      *
//      * @param context
//      *         The context, which should be used by the seek bar, as an instance of the class {@link
//      *         Context}. The context may not be null
//      * @param attributeSet
//      *         The attributes of the XML tag that is inflating the view, as an instance of the type
//      *         {@link AttributeSet} or null, if no attributes are available
//      */
//     public SeekBar(@NonNull final Context context, @Nullable final AttributeSet attributeSet) {
//         super(context, attributeSet);
//         applyTheme();
//     }
// 
//     /**
//      * Creates a new seek bar.
//      *
//      * @param context
//      *         The context, which should be used by the seek bar, as an instance of the class {@link
//      *         Context}. The context may not be null
//      * @param attributeSet
//      *         The attributes of the XML tag that is inflating the view, as an instance of the type
//      *         {@link AttributeSet} or null, if no attributes are available
//      * @param defaultStyle
//      *         The default style to apply to this view. If 0, no style will be applied (beyond what
//      *         is included in the theme). This may either be an attribute resource, whose value will
//      *         be retrieved from the current theme, or an explicit style resource
//      */
//     public SeekBar(@NonNull final Context context, @Nullable final AttributeSet attributeSet,
//                    @AttrRes final int defaultStyle) {
//         super(context, attributeSet, defaultStyle);
//         applyTheme();
//     }
// 
//     /**
//      * Returns the color of the seek bar.
//      *
//      * @return The color of the seek bar as an {@link Integer} value
//      */
//     public final int getSeekBarColor() {
//         return seekBarColor;
//     }
// 
//     /**
//      * Sets the color of the seek bar.
//      *
//      * @param color
//      *         The color, which should be set as an {@link Integer} value
//      */
//     public final void setSeekBarColor(@ColorInt final int color) {
//         this.seekBarColor = color;
//         ColorFilter colorFilter = new PorterDuffColorFilter(color, Mode.SRC_IN);
//         getProgressDrawable().setColorFilter(colorFilter);
//         getThumbDrawable().setColorFilter(colorFilter);
//     }
// 
//     /**
//      * Returns the drawable, which is used to visualize the seek bar's thumb.
//      *
//      * @return The drawable, which is used to visualize the seek bar's thumb, as an instance of the
//      * class {@link Drawable}
//      */
//     public final Drawable getThumbDrawable() {
//         return thumb;
//     }
// 
//     @Override
//     public final void setThumb(final Drawable thumb) {
//         super.setThumb(thumb);
//         this.thumb = thumb;
//     }
// 
// }


import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.content.res.TypedArray;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import androidx.annotation.ArrayRes;
import androidx.annotation.AttrRes;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.annotation.StyleRes;
import de.mrapp.android.dialog.AbstractButtonBarDialog;
import de.mrapp.android.dialog.builder.AbstractButtonBarDialogBuilder;
import de.mrapp.android.preference.view.SeekBar;
import de.mrapp.android.util.view.AbstractSavedState;
import de.mrapp.util.Condition;
    }

    /**
     * Returns the value, a floating point value has to be multiplied with to transform it to an
     * integer value which is able to encode all of its decimals. By dividing such an integer value
     * by the return value of this method, the integer value can be transformed back to the original
     * floating point value.
     *
     * @return The multiplier as an {@link Integer} value
     */
    private int getMultiplier() {
        return (int) Math.pow(NUMERIC_SYSTEM, getDecimals());
    }

    /**
     * Creates and returns a listener, which allows to display the currently chosen value of the
     * pereference's seek bar. The current value is internally stored, but it will not become
     * persisted, until the user's confirmation.
     *
     * @param progressTextView
     *         The text view, which should be used to display the currently chosen value, as an
     *         instance of the class {@link TextView}. The text view may not be null
     * @return The listener, which has been created, as an instance of the type {@link
     * OnSeekBarChangeListener}
     */
    private OnSeekBarChangeListener createSeekBarListener(
            @NonNull final TextView progressTextView) {
        return new OnSeekBarChangeListener() {

            @Override
// Path: library/src/main/java/de/mrapp/android/preference/view/SeekBar.java
// public class SeekBar extends AppCompatSeekBar {
// 
//     /**
//      * The drawable, which is used to visualize the seek bar's thumb.
//      */
//     private Drawable thumb;
// 
//     /**
//      * The seekBarColor of the seek bar.
//      */
//     private int seekBarColor;
// 
//     /**
//      * Applies the attributes of the context's theme on the seek bar.
//      */
//     private void applyTheme() {
//         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//             setSeekBarColor(ThemeUtil.getColor(getContext(), R.attr.colorAccent));
//         }
//     }
// 
//     /**
//      * Creates a new seek bar.
//      *
//      * @param context
//      *         The context, which should be used by the seek bar, as an instance of the class {@link
//      *         Context}. The context may not be null
//      */
//     public SeekBar(@NonNull final Context context) {
//         super(context);
//         applyTheme();
//     }
// 
//     /**
//      * Creates a new seek bar.
//      *
//      * @param context
//      *         The context, which should be used by the seek bar, as an instance of the class {@link
//      *         Context}. The context may not be null
//      * @param attributeSet
//      *         The attributes of the XML tag that is inflating the view, as an instance of the type
//      *         {@link AttributeSet} or null, if no attributes are available
//      */
//     public SeekBar(@NonNull final Context context, @Nullable final AttributeSet attributeSet) {
//         super(context, attributeSet);
//         applyTheme();
//     }
// 
//     /**
//      * Creates a new seek bar.
//      *
//      * @param context
//      *         The context, which should be used by the seek bar, as an instance of the class {@link
//      *         Context}. The context may not be null
//      * @param attributeSet
//      *         The attributes of the XML tag that is inflating the view, as an instance of the type
//      *         {@link AttributeSet} or null, if no attributes are available
//      * @param defaultStyle
//      *         The default style to apply to this view. If 0, no style will be applied (beyond what
//      *         is included in the theme). This may either be an attribute resource, whose value will
//      *         be retrieved from the current theme, or an explicit style resource
//      */
//     public SeekBar(@NonNull final Context context, @Nullable final AttributeSet attributeSet,
//                    @AttrRes final int defaultStyle) {
//         super(context, attributeSet, defaultStyle);
//         applyTheme();
//     }
// 
//     /**
//      * Returns the color of the seek bar.
//      *
//      * @return The color of the seek bar as an {@link Integer} value
//      */
//     public final int getSeekBarColor() {
//         return seekBarColor;
//     }
// 
//     /**
//      * Sets the color of the seek bar.
//      *
//      * @param color
//      *         The color, which should be set as an {@link Integer} value
//      */
//     public final void setSeekBarColor(@ColorInt final int color) {
//         this.seekBarColor = color;
//         ColorFilter colorFilter = new PorterDuffColorFilter(color, Mode.SRC_IN);
//         getProgressDrawable().setColorFilter(colorFilter);
//         getThumbDrawable().setColorFilter(colorFilter);
//     }
// 
//     /**
//      * Returns the drawable, which is used to visualize the seek bar's thumb.
//      *
//      * @return The drawable, which is used to visualize the seek bar's thumb, as an instance of the
//      * class {@link Drawable}
//      */
//     public final Drawable getThumbDrawable() {
//         return thumb;
//     }
// 
//     @Override
//     public final void setThumb(final Drawable thumb) {
//         super.setThumb(thumb);
//         this.thumb = thumb;
//     }
// 
// }


// Path: library/src/main/java/de/mrapp/android/preference/SeekBarPreference.java
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.content.res.TypedArray;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import androidx.annotation.ArrayRes;
import androidx.annotation.AttrRes;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.annotation.StyleRes;
import de.mrapp.android.dialog.AbstractButtonBarDialog;
import de.mrapp.android.dialog.builder.AbstractButtonBarDialogBuilder;
import de.mrapp.android.preference.view.SeekBar;
import de.mrapp.android.util.view.AbstractSavedState;
import de.mrapp.util.Condition;

    }

    /**
     * Returns the value, a floating point value has to be multiplied with to transform it to an
     * integer value which is able to encode all of its decimals. By dividing such an integer value
     * by the return value of this method, the integer value can be transformed back to the original
     * floating point value.
     *
     * @return The multiplier as an {@link Integer} value
     */
    private int getMultiplier() {
        return (int) Math.pow(NUMERIC_SYSTEM, getDecimals());
    }

    /**
     * Creates and returns a listener, which allows to display the currently chosen value of the
     * pereference's seek bar. The current value is internally stored, but it will not become
     * persisted, until the user's confirmation.
     *
     * @param progressTextView
     *         The text view, which should be used to display the currently chosen value, as an
     *         instance of the class {@link TextView}. The text view may not be null
     * @return The listener, which has been created, as an instance of the type {@link
     * OnSeekBarChangeListener}
     */
    private OnSeekBarChangeListener createSeekBarListener(
            @NonNull final TextView progressTextView) {
        return new OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(final android.widget.SeekBar seekBar) {