// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Constants.java
// public class Constants {
// 
//     public static final String TAG = "Hawk";
// 
//     public static final String TEMP_SUFFIX = ".atp";
// 
//     /** The intent that gets sent when the service must wake up for a retry */
//     public static final String ACTION_RETRY = "android.intent.action.DOWNLOAD_WAKEUP";
// 
//     /** the intent that gets sent when clicking an incomplete/failed download  */
//     public static final String ACTION_LIST = "android.intent.action.DOWNLOAD_LIST";
// 
//     /** the intent that gets sent when clicking a successful download */
//     public static final String ACTION_OPEN = "android.intent.action.DOWNLOAD_OPEN";
// 
//     /** the intent that gets sent when deleting the notification of a completed download */
//     public static final String ACTION_HIDE = "android.intent.action.DOWNLOAD_HIDE";
// 
//     /** The minimum amount of progress that has to be done before the progress bar gets updated */
//     public static final int MIN_PROGRESS_STEP = 65536;
// 
//     /** The minimum amount of time that has to elapse before the progress bar gets updated, in ms */
//     public static final long MIN_PROGRESS_TIME = 1000;// 2000
// 
//     /**
//      * The number of times that the download manager will retry its network
//      * operations when no progress is happening before it gives up.
//      */
//     public static final int MAX_RETRIES = 5;
// 
// }
// 
// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Utils.java
// public class Utils {
// 
//     public static void close(Closeable closeable) {
//         try {
//             if (closeable != null)
//                 closeable.close();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static String getDownloaderTAG(Request request) {
//         return Constants.TAG + "_Thread_" + request.key;
//     }
// 
//     public static long now() {
//         return System.currentTimeMillis();
//     }
// 
//     public static long realtime() {
//         return SystemClock.elapsedRealtime();
//     }
// 
//     public static boolean isNetworkActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null && networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
//     public static boolean isWifiActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null &&
//                         networkInfo.getType() == ConnectivityManager.TYPE_WIFI &&
//                         networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
// }


import android.util.Log;
import org.aiwen.downloader.utils.Constants;
import org.aiwen.downloader.utils.Utils;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.UnknownHostException;
            Log.e(tag, log);
        }
    }

    // 这个日志会打印，不会因为release版本屏蔽
    static void sysout(String msg) {
        try {
            Log.v(TAG, msg);
        } catch (Throwable e) {
        }
    }

    static void printExc(Class<?> clazz, Throwable e) {
        try {
            if (DEBUG) {
                e.printStackTrace();
            }
            else {
                String clazzName = clazz == null ? "Unknow" : clazz.getSimpleName();

                Log.v(TAG, String.format("class[%s], %s", clazzName, e + ""));
            }
        } catch (Throwable ee) {
            ee.printStackTrace();
        }
    }

    static void printStackTrace(Exception e) {
        e(Constants.TAG, e + "");

// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Constants.java
// public class Constants {
// 
//     public static final String TAG = "Hawk";
// 
//     public static final String TEMP_SUFFIX = ".atp";
// 
//     /** The intent that gets sent when the service must wake up for a retry */
//     public static final String ACTION_RETRY = "android.intent.action.DOWNLOAD_WAKEUP";
// 
//     /** the intent that gets sent when clicking an incomplete/failed download  */
//     public static final String ACTION_LIST = "android.intent.action.DOWNLOAD_LIST";
// 
//     /** the intent that gets sent when clicking a successful download */
//     public static final String ACTION_OPEN = "android.intent.action.DOWNLOAD_OPEN";
// 
//     /** the intent that gets sent when deleting the notification of a completed download */
//     public static final String ACTION_HIDE = "android.intent.action.DOWNLOAD_HIDE";
// 
//     /** The minimum amount of progress that has to be done before the progress bar gets updated */
//     public static final int MIN_PROGRESS_STEP = 65536;
// 
//     /** The minimum amount of time that has to elapse before the progress bar gets updated, in ms */
//     public static final long MIN_PROGRESS_TIME = 1000;// 2000
// 
//     /**
//      * The number of times that the download manager will retry its network
//      * operations when no progress is happening before it gives up.
//      */
//     public static final int MAX_RETRIES = 5;
// 
// }
// 
// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Utils.java
// public class Utils {
// 
//     public static void close(Closeable closeable) {
//         try {
//             if (closeable != null)
//                 closeable.close();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static String getDownloaderTAG(Request request) {
//         return Constants.TAG + "_Thread_" + request.key;
//     }
// 
//     public static long now() {
//         return System.currentTimeMillis();
//     }
// 
//     public static long realtime() {
//         return SystemClock.elapsedRealtime();
//     }
// 
//     public static boolean isNetworkActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null && networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
//     public static boolean isWifiActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null &&
//                         networkInfo.getType() == ConnectivityManager.TYPE_WIFI &&
//                         networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
// }


// Path: aisen_downloader/src/main/java/org/aiwen/downloader/DLogger.java
import android.util.Log;
import org.aiwen.downloader.utils.Constants;
import org.aiwen.downloader.utils.Utils;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.UnknownHostException;

            Log.e(tag, log);
        }
    }

    // 这个日志会打印，不会因为release版本屏蔽
    static void sysout(String msg) {
        try {
            Log.v(TAG, msg);
        } catch (Throwable e) {
        }
    }

    static void printExc(Class<?> clazz, Throwable e) {
        try {
            if (DEBUG) {
                e.printStackTrace();
            }
            else {
                String clazzName = clazz == null ? "Unknow" : clazz.getSimpleName();

                Log.v(TAG, String.format("class[%s], %s", clazzName, e + ""));
            }
        } catch (Throwable ee) {
            ee.printStackTrace();
        }
    }

    static void printStackTrace(Exception e) {
        e(Constants.TAG, e + "");

        printExc(Utils.class, e);