// Path: app/src/main/java/org/simlar/utils/Util.java
// public final class Util
// {
// 	public static final String[] EMPTY_STRING_ARRAY = {};
// 	private static final int MAX_BUFFER_SIZE = 1024 * 1024;
// 
// 	private Util()
// 	{
// 		throw new AssertionError("This class was not meant to be instantiated");
// 	}
// 
// 	public static boolean isNullOrEmpty(final String string)
// 	{
// 		return string == null || string.isEmpty();
// 	}
// 
// 	public static int compareString(final String lhs, final String rhs)
// 	{
// 		if (isNullOrEmpty(lhs) && isNullOrEmpty(rhs)) {
// 			return 0;
// 		}
// 
// 		if (isNullOrEmpty(lhs)) {
// 			return -1;
// 		}
// 
// 		if (isNullOrEmpty(rhs)) {
// 			return 1;
// 		}
// 
// 		return lhs.compareToIgnoreCase(rhs);
// 	}
// 
// 	public static boolean equalString(final String lhs, final String rhs)
// 	{
// 		return compareString(lhs, rhs) == 0;
// 	}
// 
// 	public static boolean equals(final Object lhs, final Object rhs)
// 	{
// 		//noinspection EqualsReplaceableByObjectsCall,ObjectEquality /// Objects.equals is available in android sdk >= 19
// 		return lhs == rhs || lhs != null && lhs.equals(rhs);
// 	}
// 
// 	public static void copyStream(final InputStream is, final OutputStream os) throws IOException
// 	{
// 		final byte[] buffer = new byte[MAX_BUFFER_SIZE];
// 		int length;
// 		while ((length = is.read(buffer)) != -1) {
// 			os.write(buffer, 0, length);
// 		}
// 	}
// 
// 	public static Spanned fromHtml(final String string)
// 	{
// 		return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? Html.fromHtml(string, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(string);
// 	}
// 
// 	public static String formatMilliSeconds(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 0) {
// 			return formatPositiveMilliSeconds(milliSeconds);
// 		}
// 
// 		return '-' + formatPositiveMilliSeconds(-1 * milliSeconds);
// 	}
// 
// 	private static String formatPositiveMilliSeconds(final long milliSeconds)
// 	{
// 		final SimpleDateFormat sdf = createSimpleDateFormat(milliSeconds);
// 		sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));
// 		return sdf.format(new Date(milliSeconds));
// 	}
// 
// 	private static SimpleDateFormat createSimpleDateFormat(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 3600000) {
// 			return new SimpleDateFormat("HH:mm:ss", Locale.US);
// 		}
// 
// 		return new SimpleDateFormat("mm:ss", Locale.US);
// 	}
// 
// 	@NonNull
// 	public static <T> T getSystemService(final Context context, final String name)
// 	{
// 		if (context == null) {
// 			throw new IllegalArgumentException("no context");
// 		}
// 
// 		@SuppressWarnings("unchecked")
// 		final T service = (T) context.getSystemService(name);
// 		if (service == null) {
// 			throw new IllegalArgumentException("no system service matching name: " + name);
// 		}
// 		return service;
// 	}
// }


import android.Manifest;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
import org.simlar.R;
import org.simlar.utils.Util;
				}
			}
		}

		if (requestPermissions.isEmpty()) {
			// all permissions granted
			return;
		}

		if (rationalMessages.isEmpty()) {
			listener.requestPermissions(requestPermissions);
		} else {
			new AlertDialog.Builder(activity)
					.setMessage(TextUtils.join("\n\n", rationalMessages))
					.setOnDismissListener(dialog -> listener.requestPermissions(requestPermissions))
					.create().show();
		}
	}

	public static boolean needsExternalStoragePermission(final Context context, final Uri uri)
	{
		if (context == null) {
			return false;
		}

		if (uri == null) {
			return false;
		}

		final String path = uri.getPath();
// Path: app/src/main/java/org/simlar/utils/Util.java
// public final class Util
// {
// 	public static final String[] EMPTY_STRING_ARRAY = {};
// 	private static final int MAX_BUFFER_SIZE = 1024 * 1024;
// 
// 	private Util()
// 	{
// 		throw new AssertionError("This class was not meant to be instantiated");
// 	}
// 
// 	public static boolean isNullOrEmpty(final String string)
// 	{
// 		return string == null || string.isEmpty();
// 	}
// 
// 	public static int compareString(final String lhs, final String rhs)
// 	{
// 		if (isNullOrEmpty(lhs) && isNullOrEmpty(rhs)) {
// 			return 0;
// 		}
// 
// 		if (isNullOrEmpty(lhs)) {
// 			return -1;
// 		}
// 
// 		if (isNullOrEmpty(rhs)) {
// 			return 1;
// 		}
// 
// 		return lhs.compareToIgnoreCase(rhs);
// 	}
// 
// 	public static boolean equalString(final String lhs, final String rhs)
// 	{
// 		return compareString(lhs, rhs) == 0;
// 	}
// 
// 	public static boolean equals(final Object lhs, final Object rhs)
// 	{
// 		//noinspection EqualsReplaceableByObjectsCall,ObjectEquality /// Objects.equals is available in android sdk >= 19
// 		return lhs == rhs || lhs != null && lhs.equals(rhs);
// 	}
// 
// 	public static void copyStream(final InputStream is, final OutputStream os) throws IOException
// 	{
// 		final byte[] buffer = new byte[MAX_BUFFER_SIZE];
// 		int length;
// 		while ((length = is.read(buffer)) != -1) {
// 			os.write(buffer, 0, length);
// 		}
// 	}
// 
// 	public static Spanned fromHtml(final String string)
// 	{
// 		return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? Html.fromHtml(string, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(string);
// 	}
// 
// 	public static String formatMilliSeconds(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 0) {
// 			return formatPositiveMilliSeconds(milliSeconds);
// 		}
// 
// 		return '-' + formatPositiveMilliSeconds(-1 * milliSeconds);
// 	}
// 
// 	private static String formatPositiveMilliSeconds(final long milliSeconds)
// 	{
// 		final SimpleDateFormat sdf = createSimpleDateFormat(milliSeconds);
// 		sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));
// 		return sdf.format(new Date(milliSeconds));
// 	}
// 
// 	private static SimpleDateFormat createSimpleDateFormat(final long milliSeconds)
// 	{
// 		if (milliSeconds >= 3600000) {
// 			return new SimpleDateFormat("HH:mm:ss", Locale.US);
// 		}
// 
// 		return new SimpleDateFormat("mm:ss", Locale.US);
// 	}
// 
// 	@NonNull
// 	public static <T> T getSystemService(final Context context, final String name)
// 	{
// 		if (context == null) {
// 			throw new IllegalArgumentException("no context");
// 		}
// 
// 		@SuppressWarnings("unchecked")
// 		final T service = (T) context.getSystemService(name);
// 		if (service == null) {
// 			throw new IllegalArgumentException("no system service matching name: " + name);
// 		}
// 		return service;
// 	}
// }


// Path: app/src/main/java/org/simlar/helper/PermissionsHelper.java
import android.Manifest;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
import org.simlar.R;
import org.simlar.utils.Util;

				}
			}
		}

		if (requestPermissions.isEmpty()) {
			// all permissions granted
			return;
		}

		if (rationalMessages.isEmpty()) {
			listener.requestPermissions(requestPermissions);
		} else {
			new AlertDialog.Builder(activity)
					.setMessage(TextUtils.join("\n\n", rationalMessages))
					.setOnDismissListener(dialog -> listener.requestPermissions(requestPermissions))
					.create().show();
		}
	}

	public static boolean needsExternalStoragePermission(final Context context, final Uri uri)
	{
		if (context == null) {
			return false;
		}

		if (uri == null) {
			return false;
		}

		final String path = uri.getPath();
		if (Util.isNullOrEmpty(path)) {