/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.custom.CustomAssertionDescriptor
 *  com.l7tech.gateway.common.module.CustomAssertionsScannerHelper
 *  com.l7tech.gateway.common.module.ModuleLoadingException
 *  com.l7tech.policy.assertion.ext.Category
 *  com.l7tech.policy.assertion.ext.cei.CustomExtensionInterfaceBinding
 *  com.l7tech.policy.assertion.ext.entity.CustomEntitySerializer
 *  com.l7tech.util.Background
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.IOUtils
 *  com.l7tech.util.ResourceUtils
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.policy.module;

import com.l7tech.gateway.common.custom.CustomAssertionDescriptor;
import com.l7tech.gateway.common.module.CustomAssertionsScannerHelper;
import com.l7tech.gateway.common.module.ModuleLoadingException;
import com.l7tech.policy.assertion.ext.Category;
import com.l7tech.policy.assertion.ext.cei.CustomExtensionInterfaceBinding;
import com.l7tech.policy.assertion.ext.entity.CustomEntitySerializer;
import com.l7tech.server.policy.module.AssertionModuleUnregistrationEvent;
import com.l7tech.server.policy.module.CustomAssertionClassLoader;
import com.l7tech.server.policy.module.CustomAssertionModule;
import com.l7tech.server.policy.module.CustomAssertionModulesConfig;
import com.l7tech.server.policy.module.CustomAssertionPriorityClassLoader;
import com.l7tech.server.policy.module.ModuleData;
import com.l7tech.server.policy.module.ModuleException;
import com.l7tech.server.policy.module.ModulesScanner;
import com.l7tech.server.policy.module.ScannerCallbacks;
import com.l7tech.server.policy.module.ScheduledModuleScanner;
import com.l7tech.server.policy.module.a;
import com.l7tech.util.Background;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.ResourceUtils;
import java.io.BufferedOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/*
 * Exception performing whole class analysis ignored.
 */
public class CustomAssertionsScanner
extends ScheduledModuleScanner<CustomAssertionModule> {
    private static final Logger c;
    private final CustomAssertionModulesConfig d;
    private final CustomAssertionsScannerHelper e;
    private boolean f;
    private final Set<String> g;
    private boolean h;
    private final ScannerCallbacks.CustomAssertion i;
    private static final String[] l;

    public CustomAssertionsScanner(@NotNull CustomAssertionModulesConfig customAssertionModulesConfig, @NotNull ScannerCallbacks.CustomAssertion customAssertion) {
        if (customAssertionModulesConfig == null) {
            CustomAssertionsScanner.c(0);
        }
        if (customAssertion == null) {
            CustomAssertionsScanner.c(1);
        }
        this.f = false;
        this.g = new HashSet<String>();
        this.h = true;
        this.d = customAssertionModulesConfig;
        this.i = customAssertion;
        this.e = new CustomAssertionsScannerHelper(customAssertionModulesConfig.getCustomAssertionPropertyFileName());
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Could not resolve type clashes
     * Loose catch block
     */
    private CustomAssertionClassLoader a(@NotNull File file, @NotNull ClassLoader classLoader, @NotNull File file2, @NotNull String string) throws ModuleException {
        CustomAssertionClassLoader customAssertionClassLoader;
        ArrayList<File> arrayList;
        boolean bl2;
        boolean bl3;
        block68: {
            JarFile jarFile;
            block64: {
                boolean bl4;
                Object object2;
                File file3;
                block63: {
                    try {
                        if (file == null) {
                            CustomAssertionsScanner.c(2);
                        }
                    }
                    catch (IOException iOException) {
                        throw CustomAssertionsScanner.a(iOException);
                    }
                    try {
                        if (classLoader == null) {
                            CustomAssertionsScanner.c(3);
                        }
                    }
                    catch (IOException iOException) {
                        throw CustomAssertionsScanner.a(iOException);
                    }
                    try {
                        if (file2 == null) {
                            CustomAssertionsScanner.c(4);
                        }
                    }
                    catch (IOException iOException) {
                        throw CustomAssertionsScanner.a(iOException);
                    }
                    try {
                        if (string == null) {
                            CustomAssertionsScanner.c(5);
                        }
                    }
                    catch (IOException iOException) {
                        throw CustomAssertionsScanner.a(iOException);
                    }
                    file3 = new File(file2, this.d.getExpandedModuleDirPrefix() + string + "-" + file.getName());
                    try {
                        file3.deleteOnExit();
                        if (!file3.exists() || !file3.isDirectory()) break block63;
                    }
                    catch (IOException iOException) {
                        throw CustomAssertionsScanner.a(iOException);
                    }
                    File[] fileArray = file3.listFiles();
                    if (fileArray != null) {
                        for (Object object2 : fileArray) {
                            ((File)object2).delete();
                        }
                    }
                    file3.delete();
                }
                try {
                    bl4 = !this.e.hasCustomAssertionPropertyFileName();
                }
                catch (IOException iOException) {
                    throw CustomAssertionsScanner.a(iOException);
                }
                bl3 = bl4;
                bl2 = false;
                arrayList = new ArrayList<File>();
                arrayList.add(file);
                jarFile = null;
                jarFile = new JarFile(file);
                if (!bl3) {
                    bl3 = this.e.isCustomAssertion(jarFile);
                }
                if (!bl3) break block64;
                object2 = jarFile.entries();
                while (object2.hasMoreElements()) {
                    String[] stringArray;
                    InputStream inputStream;
                    Serializable serializable;
                    JarEntry jarEntry;
                    block65: {
                        String string2;
                        block66: {
                            block71: {
                                block70: {
                                    jarEntry = (JarEntry)object2.nextElement();
                                    if (jarEntry == null) continue;
                                    try {
                                        if (jarEntry.isDirectory()) {
                                            continue;
                                        }
                                    }
                                    catch (IOException iOException) {
                                        throw CustomAssertionsScanner.a(iOException);
                                    }
                                    string2 = jarEntry.getName();
                                    if (!string2.startsWith(this.d.getLibPrefix())) break block65;
                                    if (!this.d.isSupportedLibrary(string2.toLowerCase())) break block65;
                                    break block70;
                                    catch (IOException iOException) {
                                        throw CustomAssertionsScanner.a(iOException);
                                    }
                                }
                                if (file3.exists()) break block66;
                                break block71;
                                catch (IOException iOException) {
                                    throw CustomAssertionsScanner.a(iOException);
                                }
                            }
                            try {
                                block72: {
                                    if (file3.mkdirs()) break block66;
                                    break block72;
                                    catch (IOException iOException) {
                                        throw CustomAssertionsScanner.a(iOException);
                                    }
                                }
                                throw new ModuleException(l[77] + file3.getAbsolutePath() + l[85]);
                            }
                            catch (IOException iOException) {
                                throw CustomAssertionsScanner.a(iOException);
                            }
                        }
                        serializable = new File(file3, string2.substring(this.d.getLibPrefix().length()));
                        try {
                            if (!((File)serializable).getParentFile().equals(file3)) {
                                c.info(l[47] + string2 + l[20]);
                                continue;
                            }
                        }
                        catch (IOException iOException) {
                            throw CustomAssertionsScanner.a(iOException);
                        }
                        ((File)serializable).deleteOnExit();
                        arrayList.add((File)serializable);
                        inputStream = null;
                        BufferedOutputStream bufferedOutputStream = null;
                        try {
                            inputStream = jarFile.getInputStream(jarEntry);
                            bufferedOutputStream = new BufferedOutputStream(new FileOutputStream((File)serializable));
                            IOUtils.copyStream((InputStream)inputStream, (OutputStream)bufferedOutputStream);
                            ((OutputStream)bufferedOutputStream).flush();
                        }
                        catch (IOException iOException) {
                            try {
                                stringArray = l;
                                throw new ModuleException(stringArray[55] + string2 + stringArray[45] + file3.getAbsolutePath() + stringArray[20], iOException);
                            }
                            catch (Throwable throwable) {
                                ResourceUtils.closeQuietly((Closeable)inputStream);
                                ResourceUtils.closeQuietly(bufferedOutputStream);
                                throw throwable;
                            }
                        }
                        ResourceUtils.closeQuietly((Closeable)inputStream);
                        ResourceUtils.closeQuietly((Closeable)bufferedOutputStream);
                        continue;
                    }
                    if (!this.e.isCustomAssertionPropertiesFile(jarEntry)) continue;
                    serializable = new Properties();
                    inputStream = null;
                    try {
                        inputStream = jarFile.getInputStream(jarEntry);
                        ((Properties)serializable).load(inputStream);
                    }
                    catch (Exception exception) {
                        stringArray = l;
                        c.info(stringArray[83] + exception.getMessage());
                    }
                    finally {
                        ResourceUtils.closeQuietly((Closeable)inputStream);
                    }
                    stringArray = l;
                    bl2 = Boolean.parseBoolean(((Properties)serializable).getProperty(stringArray[89], stringArray[86]));
                }
            }
            try {
                if (jarFile == null) break block68;
                jarFile.close();
                break block68;
            }
            catch (ModuleException moduleException) {
                throw CustomAssertionsScanner.a(moduleException);
            }
            {
                catch (IOException iOException) {
                    try {
                        if (c.isLoggable(Level.FINE)) {
                            c.log(Level.FINE, l[37] + file.getAbsolutePath() + l[20], iOException);
                        }
                        break block68;
                    }
                    catch (IOException iOException2) {
                        throw CustomAssertionsScanner.a(iOException2);
                    }
                }
            }
            catch (IOException iOException) {
                try {
                    String[] stringArray = l;
                    throw new ModuleException(stringArray[39] + file.getAbsolutePath() + stringArray[20], iOException);
                }
                catch (Throwable throwable) {
                    block69: {
                        try {
                            if (jarFile == null) break block69;
                            jarFile.close();
                            break block69;
                        }
                        catch (ModuleException moduleException) {
                            throw CustomAssertionsScanner.a(moduleException);
                        }
                        {
                            catch (IOException iOException3) {
                                try {
                                    if (c.isLoggable(Level.FINE)) {
                                        c.log(Level.FINE, l[42] + file.getAbsolutePath() + l[20], iOException3);
                                    }
                                }
                                catch (IOException iOException4) {
                                    throw CustomAssertionsScanner.a(iOException4);
                                }
                            }
                        }
                    }
                    throw throwable;
                }
            }
        }
        try {
            customAssertionClassLoader = !bl3 ? null : this.a(classLoader, arrayList, bl2);
        }
        catch (IOException iOException) {
            throw CustomAssertionsScanner.a(iOException);
        }
        return customAssertionClassLoader;
    }

    private CustomAssertionClassLoader a(ClassLoader classLoader, List<File> list, boolean bl2) throws ModuleException {
        CustomAssertionClassLoader customAssertionClassLoader;
        try {
            ArrayList<URL> arrayList = new ArrayList<URL>();
            for (File file : list) {
                arrayList.add(file.toURI().toURL());
            }
            URL[] uRLArray = arrayList.toArray(new URL[arrayList.size()]);
            customAssertionClassLoader = classLoader == null ? new CustomAssertionClassLoader(uRLArray) : (bl2 ? new CustomAssertionPriorityClassLoader(uRLArray, classLoader) : new CustomAssertionClassLoader(uRLArray, classLoader));
        }
        catch (MalformedURLException malformedURLException) {
            throw new ModuleException(l[66], malformedURLException);
        }
        return customAssertionClassLoader;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Loose catch block
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    private Set<CustomAssertionDescriptor> a(@NotNull String string, @Nullable String string2, @NotNull ClassLoader classLoader) throws ModuleException {
        ClassLoader classLoader2;
        Enumeration<URL> enumeration;
        InputStream inputStream;
        HashSet<CustomAssertionDescriptor> hashSet;
        block30: {
            try {
                if (string == null) {
                    CustomAssertionsScanner.c(6);
                }
            }
            catch (ModuleException moduleException) {
                throw CustomAssertionsScanner.a(moduleException);
            }
            try {
                if (classLoader == null) {
                    CustomAssertionsScanner.c(7);
                }
            }
            catch (ModuleException moduleException) {
                throw CustomAssertionsScanner.a(moduleException);
            }
            hashSet = new HashSet<CustomAssertionDescriptor>();
            inputStream = null;
            try {
                block29: {
                    enumeration = classLoader.getResources(this.d.getCustomAssertionPropertyFileName());
                    try {
                        if (!enumeration.hasMoreElements()) break block29;
                        break block30;
                    }
                    catch (ModuleException moduleException) {
                        throw CustomAssertionsScanner.a(moduleException);
                    }
                }
                String[] stringArray = l;
                c.info(stringArray[3]);
                return Collections.unmodifiableSet(hashSet);
            }
            catch (FileNotFoundException fileNotFoundException) {
                String[] stringArray = l;
                throw new ModuleException(stringArray[33] + string + stringArray[75] + this.d.getCustomAssertionPropertyFileName() + stringArray[58], ExceptionUtils.getDebugException((Throwable)fileNotFoundException));
            }
            catch (IOException iOException) {
                String[] stringArray = l;
                throw new ModuleException(stringArray[67] + string + stringArray[56] + this.d.getCustomAssertionPropertyFileName() + stringArray[84], ExceptionUtils.getDebugException((Throwable)iOException));
            }
        }
        while (enumeration.hasMoreElements()) {
            URL uRL = enumeration.nextElement();
            inputStream = uRL.openStream();
            Properties properties = new Properties();
            properties.load(inputStream);
            classLoader2 = Thread.currentThread().getContextClassLoader();
            try {
                if (classLoader2 != null) {
                    Thread.currentThread().setContextClassLoader(null);
                }
            }
            catch (ModuleException moduleException) {
                throw CustomAssertionsScanner.a(moduleException);
            }
            for (Object object : properties.keySet()) {
                String string3 = object.toString();
                try {
                    if (!string3.endsWith(l[92])) continue;
                    hashSet.add(this.a(string3.substring(0, string3.indexOf(l[16])), properties, classLoader, string, string2));
                }
                catch (FileNotFoundException fileNotFoundException) {
                    throw CustomAssertionsScanner.a(fileNotFoundException);
                }
                catch (ModuleException moduleException) {
                    String[] stringArray = l;
                    c.log(Level.WARNING, stringArray[87] + ExceptionUtils.getMessageWithCause((Throwable)moduleException), ExceptionUtils.getDebugException((Throwable)moduleException));
                }
            }
            try {
                if (classLoader2 == null) continue;
                Thread.currentThread().setContextClassLoader(classLoader2);
            }
            catch (ModuleException moduleException) {
                throw CustomAssertionsScanner.a(moduleException);
            }
        }
        return Collections.unmodifiableSet(hashSet);
        catch (Throwable throwable) {
            try {
                if (classLoader2 == null) throw throwable;
                Thread.currentThread().setContextClassLoader(classLoader2);
                throw throwable;
            }
            catch (ModuleException moduleException) {
                throw CustomAssertionsScanner.a(moduleException);
            }
        }
        finally {
            ResourceUtils.closeQuietly(inputStream);
        }
    }

    /*
     * Loose catch block
     */
    private CustomAssertionDescriptor a(String string, Properties properties, ClassLoader classLoader, String string2, String string3) throws ModuleException {
        String string4;
        String string5;
        String[] stringArray;
        block30: {
            stringArray = l;
            string5 = (String)properties.get(string + stringArray[16]);
            string4 = (String)properties.get(string + stringArray[70]);
            try {
                if (string4 != null && string5 != null) break block30;
            }
            catch (ClassNotFoundException classNotFoundException) {
                throw CustomAssertionsScanner.a(classNotFoundException);
            }
            stringArray = l;
            StringBuilder stringBuilder = new StringBuilder(stringArray[65]);
            stringBuilder.append(stringArray[59]).append(string5);
            stringBuilder.append(stringArray[10]).append(string4).append("]");
            throw new ModuleException(stringBuilder.toString());
        }
        try {
            CustomAssertionDescriptor customAssertionDescriptor;
            block35: {
                Object object;
                block33: {
                    String string6;
                    block34: {
                        String string7;
                        block32: {
                            block31: {
                                Class<?> clazz = Class.forName(string5, true, classLoader);
                                Class<?> clazz2 = Class.forName(string4, true, classLoader);
                                stringArray = l;
                                Set set = Category.asCategorySet((String)((String)properties.get(string + stringArray[44])));
                                try {
                                    if (set.isEmpty()) {
                                        set.add(Category.UNFILLED);
                                    }
                                }
                                catch (ClassNotFoundException classNotFoundException) {
                                    throw CustomAssertionsScanner.a(classNotFoundException);
                                }
                                customAssertionDescriptor = new CustomAssertionDescriptor(string, clazz, clazz2, set);
                                stringArray = l;
                                String string8 = (String)properties.get(string + stringArray[14]);
                                if (string8 == null) break block31;
                                try {
                                    block36: {
                                        if ("".equals(string8)) break block31;
                                        break block36;
                                        catch (ClassNotFoundException classNotFoundException) {
                                            throw CustomAssertionsScanner.a(classNotFoundException);
                                        }
                                    }
                                    customAssertionDescriptor.setUiClass(Class.forName(string8, true, classLoader));
                                }
                                catch (ClassNotFoundException classNotFoundException) {
                                    throw CustomAssertionsScanner.a(classNotFoundException);
                                }
                            }
                            stringArray = l;
                            string7 = (String)properties.get(string + stringArray[24]);
                            if (string7 == null) break block32;
                            try {
                                block37: {
                                    if ("".equals(string7)) break block32;
                                    break block37;
                                    catch (ClassNotFoundException classNotFoundException) {
                                        throw CustomAssertionsScanner.a(classNotFoundException);
                                    }
                                }
                                customAssertionDescriptor.setTaskActionUiClass(Class.forName(string7, true, classLoader));
                            }
                            catch (ClassNotFoundException classNotFoundException) {
                                throw CustomAssertionsScanner.a(classNotFoundException);
                            }
                        }
                        stringArray = l;
                        string6 = (String)properties.get(string + stringArray[29]);
                        try {
                            if (string7 == null || "".equals(string7)) break block33;
                        }
                        catch (ClassNotFoundException classNotFoundException) {
                            throw CustomAssertionsScanner.a(classNotFoundException);
                        }
                        object = Class.forName(string6, true, classLoader);
                        try {
                            if (!CustomExtensionInterfaceBinding.class.isAssignableFrom((Class<?>)object)) break block34;
                            customAssertionDescriptor.setExtensionInterfaceClass((Class)object);
                            break block33;
                        }
                        catch (ClassNotFoundException classNotFoundException) {
                            throw CustomAssertionsScanner.a(classNotFoundException);
                        }
                    }
                    stringArray = l;
                    throw new ModuleException(stringArray[68] + string6 + stringArray[80]);
                }
                stringArray = l;
                object = (String)properties.get(string + stringArray[8]);
                try {
                    if (object == null || "".equals(object)) break block35;
                }
                catch (ClassNotFoundException classNotFoundException) {
                    throw CustomAssertionsScanner.a(classNotFoundException);
                }
                String[] stringArray2 = ((String)object).split(",");
                try {
                    if (stringArray2 == null || stringArray2.length <= 0) break block35;
                }
                catch (ClassNotFoundException classNotFoundException) {
                    throw CustomAssertionsScanner.a(classNotFoundException);
                }
                ArrayList arrayList = new ArrayList(stringArray2.length);
                for (String string9 : stringArray2) {
                    try {
                        if (string9 == null || "".equals(string9)) continue;
                    }
                    catch (ClassNotFoundException classNotFoundException) {
                        throw CustomAssertionsScanner.a(classNotFoundException);
                    }
                    Class<?> clazz = Class.forName(string9, true, classLoader);
                    try {
                        if (CustomEntitySerializer.class.isAssignableFrom(clazz)) {
                            arrayList.add(clazz);
                            continue;
                        }
                    }
                    catch (ClassNotFoundException classNotFoundException) {
                        throw CustomAssertionsScanner.a(classNotFoundException);
                    }
                    stringArray = l;
                    throw new ModuleException(stringArray[22] + string9 + stringArray[11] + CustomEntitySerializer.class.getName());
                }
                customAssertionDescriptor.setExternalEntitySerializers(arrayList);
            }
            stringArray = l;
            customAssertionDescriptor.setDescription((String)properties.get(string + stringArray[46]));
            customAssertionDescriptor.setUiAutoOpen(Boolean.parseBoolean((String)properties.get(string + stringArray[78])));
            customAssertionDescriptor.setUiAllowedPackages((String)properties.get(string + stringArray[74]));
            customAssertionDescriptor.setUiAllowedResources((String)properties.get(string + stringArray[35]));
            customAssertionDescriptor.setPaletteNodeName((String)properties.get(string + stringArray[88]));
            customAssertionDescriptor.setPolicyNodeName((String)properties.get(string + stringArray[52]));
            customAssertionDescriptor.setModuleFileName(string2);
            customAssertionDescriptor.setModuleEntityName(string3);
            return customAssertionDescriptor;
        }
        catch (ClassNotFoundException classNotFoundException) {
            stringArray = l;
            StringBuilder stringBuilder = new StringBuilder(stringArray[18]);
            stringBuilder.append(stringArray[51]).append(string5);
            stringBuilder.append(stringArray[95]).append(string4).append("]");
            throw new ModuleException(stringBuilder.toString(), classNotFoundException);
        }
        catch (Exception exception) {
            stringArray = l;
            StringBuilder stringBuilder = new StringBuilder(stringArray[5]);
            stringBuilder.append(stringArray[51]).append(string5);
            stringBuilder.append(stringArray[95]).append(string4).append("]");
            throw new ModuleException(stringBuilder.toString(), exception);
        }
    }

    /*
     * Exception decompiling
     */
    @Override
    @NotNull
    protected ModulesScanner.ModuleLoadStatus<CustomAssertionModule> onModuleLoad(ModuleData var1_1) throws ModuleException {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [29[CATCHBLOCK]], but top level block is 16[TRYBLOCK]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    private boolean a(@NotNull Set<CustomAssertionDescriptor> set) {
        try {
            if (set == null) {
                CustomAssertionsScanner.c(12);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw CustomAssertionsScanner.a(nullPointerException);
        }
        for (CustomAssertionDescriptor customAssertionDescriptor : set) {
            try {
                if (!this.g.contains(customAssertionDescriptor.getName())) continue;
                return true;
            }
            catch (NullPointerException nullPointerException) {
                throw CustomAssertionsScanner.a(nullPointerException);
            }
        }
        return false;
    }

    private void b(@NotNull Set<CustomAssertionDescriptor> set) {
        try {
            if (set == null) {
                CustomAssertionsScanner.c(13);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw CustomAssertionsScanner.a(nullPointerException);
        }
        for (CustomAssertionDescriptor customAssertionDescriptor : set) {
            this.g.add(customAssertionDescriptor.getName());
        }
    }

    @Override
    protected boolean onModuleUnload(CustomAssertionModule customAssertionModule) throws ModuleException {
        try {
            if (customAssertionModule == null) {
                throw new ModuleException(l[48], new NullPointerException());
            }
        }
        catch (IOException iOException) {
            throw CustomAssertionsScanner.a(iOException);
        }
        try {
            if (this.removeModule(customAssertionModule) == null) {
                return false;
            }
        }
        catch (IOException iOException) {
            throw CustomAssertionsScanner.a(iOException);
        }
        this.clearFailedModTimes();
        try {
            for (CustomAssertionDescriptor customAssertionDescriptor : customAssertionModule.getDescriptors()) {
                this.i.unregisterAssertion(customAssertionDescriptor);
            }
            try {
                Background.cancelAllTasksFromClassLoader(customAssertionModule.getModuleClassLoader());
                if (!this.f) {
                    this.i.publishEvent(new AssertionModuleUnregistrationEvent(this, customAssertionModule));
                }
            }
            catch (IOException iOException) {
                throw CustomAssertionsScanner.a(iOException);
            }
            try {
                customAssertionModule.close();
                String[] stringArray = l;
                c.info(stringArray[67] + customAssertionModule.getName() + stringArray[69]);
            }
            catch (IOException iOException) {
                String[] stringArray = l;
                c.log(Level.WARNING, stringArray[31] + customAssertionModule.getName() + "\"", iOException);
            }
        }
        catch (Throwable throwable) {
            String[] stringArray = l;
            c.log(Level.WARNING, stringArray[19] + customAssertionModule.getName() + stringArray[63], throwable);
        }
        return true;
    }

    @Override
    public void loadServerModuleFile(@NotNull File file, @NotNull String string, @NotNull String string2) throws ModuleLoadingException {
        try {
            if (file == null) {
                CustomAssertionsScanner.c(14);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (string == null) {
                CustomAssertionsScanner.c(15);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (string2 == null) {
                CustomAssertionsScanner.c(16);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (!this.d.isFeatureEnabled()) {
                throw new ModuleLoadingException(l[50] + string2 + l[0]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (!this.d.isScanningEnabled()) {
                throw new ModuleLoadingException(l[32] + string2 + l[73]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        super.loadServerModuleFile(file, string, string2);
    }

    @Override
    public void updateServerModuleFile(@NotNull File file, @NotNull String string, @NotNull String string2) {
        block12: {
            try {
                if (file == null) {
                    CustomAssertionsScanner.c(17);
                }
            }
            catch (NullPointerException nullPointerException) {
                throw CustomAssertionsScanner.a(nullPointerException);
            }
            try {
                if (string == null) {
                    CustomAssertionsScanner.c(18);
                }
            }
            catch (NullPointerException nullPointerException) {
                throw CustomAssertionsScanner.a(nullPointerException);
            }
            try {
                if (string2 == null) {
                    CustomAssertionsScanner.c(19);
                }
            }
            catch (NullPointerException nullPointerException) {
                throw CustomAssertionsScanner.a(nullPointerException);
            }
            String string3 = file.getName();
            CustomAssertionModule customAssertionModule = (CustomAssertionModule)this.getModule(string3);
            try {
                if (customAssertionModule == null || !string.equals(customAssertionModule.getDigest())) break block12;
            }
            catch (NullPointerException nullPointerException) {
                throw CustomAssertionsScanner.a(nullPointerException);
            }
            customAssertionModule.setEntityName(string2);
            Collection<CustomAssertionDescriptor> collection = customAssertionModule.getDescriptors();
            for (CustomAssertionDescriptor customAssertionDescriptor : collection) {
                customAssertionDescriptor.setModuleEntityName(string2);
            }
        }
    }

    @Override
    public void unloadServerModuleFile(@NotNull File file, @NotNull String string, @NotNull String string2) throws ModuleLoadingException {
        try {
            if (file == null) {
                CustomAssertionsScanner.c(20);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (string == null) {
                CustomAssertionsScanner.c(21);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (string2 == null) {
                CustomAssertionsScanner.c(22);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (!this.d.isFeatureEnabled()) {
                throw new ModuleLoadingException(l[23] + string2 + l[1]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        try {
            if (!this.d.isScanningEnabled()) {
                throw new ModuleLoadingException(l[12] + string2 + l[38]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw CustomAssertionsScanner.a(moduleLoadingException);
        }
        super.unloadServerModuleFile(file, string, string2);
    }

    @Override
    public synchronized void destroy() {
        this.f = true;
        super.destroy();
    }

    public void startTimer(long l2) {
        try {
            if (this.d.isHotSwapEnabled()) {
                super.startTimer(l2, new a(this));
            }
        }
        catch (NullPointerException nullPointerException) {
            throw CustomAssertionsScanner.a(nullPointerException);
        }
    }

    @Override
    protected void onScanComplete(boolean bl2) {
        this.h = false;
    }

    public boolean scanModules() {
        return super.scanModules(this.d);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[96];
                var3_1 = 0;
                var2_2 = "\u0001.I@6=\u000fTt\u0010'3&\u000fP{Nsw!\u000bUpIk>*\u000fMf\f'1&\u0018\u0003V\u001ct#&\u0007\u0003T\u001at2;\u001eJz\u0007ty6\u0001.I@6=\u000fTt\u0010'3&\u000fP{Nsw!\u000bUpIk>*\u000fMf\f'1&\u0018\u0003V\u001ct#&\u0007\u0003T\u001at2;\u001eJz\u0007ty7@z\u0004(;~\u001eFv\u0001($,\u0018Up\u001b('&\u0006Jv\u0010(:&\u000eVy\f(\u0014<\u0019Wz\u0004F$:\u000fQa\u0000h9:9@t\u0007i2;\u001bmzId\":\u001eLxIf$:\u000fQa\u0000h9:JEz\u001ci3g\t@t\u0005k5(\tHf&j{\u001ff; \u000e\u0003v\u001ct#&\u0007\u0003t\u001at2;\u001eJz\u0007+w:\u0001Je\u0019n9.D\r;c\u0010A`\u0000k3\r\u000fPv\u001bn'=\u0005Qf\nF{\u001dn#0$Bx\f\u0013\rp\u0007s>=\u0013\rf\fu>(\u0006Jo\fu$\u0019Nz\rr;,.Ba\b'4(\u0004Mz\u001d'5,JM`\u0005k\u000e\u000ff\fu!,\u0018\u0003v\u0005f$:W\u0015\u00015\u0000tw'\u0005W5\u001ar5*\u0006Bf\u001a'8/J\u0016`t\u0007i8=JV{\u0005h6-JNz\rr;,J\u0001R\u00015\rh2:\u0004\u0004aId8'\u001eB|\u0007'6'\u0013\u0003c\bk>-JBf\u001ab%=\u0003L{\u001a)w\u001d\u0002F5\u0004h3<\u0006F5\u001en;%JApIu2%\u0005Bq\fcw&\u0004@pIj8-\u0003E|\fcy\u0003\r`\u0000\rTz\u001bl\u0013 \u0018Fv\u001dh%0\u0006\rv\u0005f$:\u0011``\u001as8$JBf\u001ab%=\u0003L{I8`t\u0007i8=JOz\bcw*\u0006Bf\u001a/2:C\u0003s\u0006uw*\u001fPa\u0006jw(\u0019Pp\u001bs>&\u0004\u000f5\u001al>9\u001aJ{\u000e)yg`\u0019et\u0000k2-JWzIr9%\u0005BqIj8-\u001fOpI%\u0002\u0004;8\u00015\rb$*\u0018Je\u001dh%gJw}\f':&\u000eVy\f'  \u0006O5\u000bbw;\u000fOz\bc2-JL{\nbw$\u0005G|\u000fn2-D8``\u001as8$JBf\u001ab%=\u0003L{Ib/=\u000fQ{\bkw,\u0004W|\u001d~w:\u000fQ|\bk>3\u000fQ5\nk6:\u0019\u0003{\bj2iH\u0016`t\u0007i8=JV{\u0005h6-JNz\rr;,J\u0001\u000f\ra\bt<g\u000b@a\u0000h9g\u001fJ\u0014Oz\bc\u0004,\u0018Up\u001bJ8-\u001fOp/n;,\u000e\u00015\u0000tw$\u0003Pf\u0000i0iH\u000eNz\rr;,,Jy\fI6$\u000f\fL{$h3<\u0006FY\u0006f3\u0014\rp\u0011s2'\u0019Jz\u0007)>'\u001eFg\u000ff4,\u0011Ve\rf#,\u000ef{\u001dn#0$Bx\f1fm\nb'=\u0003L{Ip? \u0006F5\nk8:\u0003MrId\":\u001eLxIf$:\u000fQa\u0000h9i\u0007Lq\u001ck2iH\u0014`t\u0007i8=JOz\bcw$\u0005G`\u0005bwk\bnz\rr;,J\u0001\u0006\u001f|\u0007n#w\u0015\r`\u0000)6%\u0006Lb\fcy;\u000fPz\u001cu4,\u0019\u0016Ve\rf#,9Fg\u001fb%\u0004\u0005G`\u0005b\u0011 \u0006F\u0017fg\u001bh%i\tOz\u001an9.Jit\u001bA>%\u000f\u00032)\u0001.ID\":\u001eLxIF$:\u000fQa\u0000h9:JPv\bi9,\u0018\u0003|\u001a'3 \u0019Bw\u0005b3g\u001b`z\u001ck3i\u0004LaIk8(\u000e\u0003x\u0006c\"%\u000f\u0003\u007f\buwn>bg\u000er:,\u0004W5\u000fh%i*mz\u001dI\"%\u0006\u0003e\bu6$\u000fWp\u001b'pl\u0019\u00045\u0006awl\u0019\r0\u001a':<\u0019W5\u0007h#i\bF5\u0007r;%\u0002Jq\u0017fg\u001bh%i\tOz\u001an9.Jit\u001bA>%\u000f\u000321et\u0000k2-JWzIr9%\u0005BqIw%,\u001cJz\u001ctw?\u000fQf\u0000h9i\u0005E5\u001do2i\u0007Lq\u001ck2iH\t\rv\bs2.\u0005Ql\u0015\u00045\u001dhw=\u000fNeIc>;\u000f@a\u0006u.iM\f\rq\ft4;\u0003Sa\u0000h9\u001ep~\u0000w' \u0004D5\u0005n5i\u0003M5\u001ar5-\u0003Qp\ns8;\u0013\u00032\u0015Nz\rr;,J@t\u0007i8=JApIi\"%\u0006*c[\u0006s\u0019<\u0006O5\u0004b#!\u0005G5Ltyl\u0019\u0003x\u001ct#i\u0004LaIu2=\u001fQ{Ii\"%\u0006\u0014`t\u0007i8=JOz\bcw$\u0005G`\u0005bwk\u0012x5\bt$,\u0018W|\u0006iw*\u0006Bf\u001a:\u0011\re\u0006k>*\u0013\r{\u0006c2g\u0004Bx\f\fNz\rr;,.Jr\ft#\u0016A`\u0000k3\u0004\u0005G`\u0005b\u0014%\u000bPf%h6-\u000fQ\u001d`z\u001ck3i\u0004LaIb/9\u000bMqIj8-\u001fOpIk>+J\u0004!\u00015 (\u0018i\u000fQg\u0006uw;\u000fBq\u0000i0i\tL{\u000fn0i\fJy\f'u\u0006St\u001bb9=\u001e\u0001;ID\":\u001eLxIf$:\u000fQa\u0000h9i\u0004LaIk8(\u000eFq\u0012x5\bt$,\u0018W|\u0006iw*\u0006Bf\u001a:\u000bGp\u001ad% \u001aWz\u001bt\u0002\u0001/7@z\u0004(;~\u001eFv\u0001($,\u0018Up\u001b('&\u0006Jv\u0010(:&\u000eVy\f(\u0014<\u0019Wz\u0004F$:\u000fQa\u0000h9:9@t\u0007i2;\u0002\u0001/\r\u0003s\u001bh:i\u0007Lq\u001ck2i&j{\nh:9\u0006Fa\f'4<\u0019Wz\u0004'6:\u0019Fg\u001dn8'F\u0003f\u0002n'9\u0003Mrc5`z\u001ck3i\u0004LaId%,\u000bWpId\":\u001eLxIf$:\u000fQa\u0000h9i\u0007Lq\u001ck2i\tOt\u001atw%\u0005Bq\fu\bnz\rr;,J\u00011``\u001as8$JBf\u001ab%=\u0003L{Ib/=\u000fMf\u0000h9i\u0003Ma\fu1(\tF5\nk6:\u0019\u0003{\bj2iH\u001b\u00015\u0000tw:\u001f@v\ft$/\u001fOy\u0010'\"'\u0006Lt\rb3h\u0007\rf\fu!,\u0018~\u00015\rh2:\u0004\u0004aIt\"9\u001aLg\u001d'30\u0004Bx\u0000dw%\u0005Bq\u0000i0i\u000bMqIn#i\u001dBfIf;;\u000fBq\u0010';&\u000bGp\r'8'\tF;IS? \u0019\u0003c\fu$ \u0005M5\u0006aw=\u0002F5\u0004h3<\u0006F5\u001en;%JApIk8(\u000eFqIh9i\u0004Fm\u001d'\u0004\u001a-\u0003f\u001df%=D\u0016V{\u0005h6-9Fg\u001fb%\u0004\u0005G`\u0005b\u0011 \u0006F)\u0001.ID\":\u001eLxIF$:\u000fQa\u0000h9:JPv\bi9,\u0018\u0003|\u001a'3 \u0019Bw\u0005b3g\u0014\r`\u0000)6%\u0006Lb\fcy9\u000b@~\b`2:2\u00019Ic8,\u0019M2\u001d'4&\u0004Wt\u0000iw*\u001fPa\u0006jw(\u0019Pp\u001bs>&\u0004P5\nh9/\u0003D5\u000fn;,J\u0001\u000eJf$h3<\u0006FY\u0006f3,\u000e(`z\u001ck3i\u0004LaId%,\u000bWpIj8-\u001fOpIs2$\u001a\u0003q\u0000u2*\u001eLg\u0010'p\r\r`\u0000)6<\u001eL;\u0006w2'\nPa\b`2-,Jy\f5\u00015\u0000tw'\u0005W5\u001ar5*\u0006Bf\u001a'8/J``\u001as8$/[a\fi$ \u0005M\\\u0007s2;\fBv\fE>'\u000eJ{\u000e)\tNz\rr;, Bg\rNz\rr;,\u0019`z\u0007a>.8v{\be;,JWzIk8(\u000e\u0003v\u001ct#&\u0007\u0003t\u001at2;\u001eJz\u0007'4%\u000bPf\u0005h6-\u000fQ5\u0019u89\u000fQa\u0000b$gJ\u001e\u0001;ID\":\u001eLxIf$:\u000fQa\u0000h9i\u0004LaIk8(\u000eFq\u0002\u0004;\u0005Et\u0005t2-`g\ff# \u0004D5\nr$=\u0005N5\bt$,\u0018W|\u0006iw-\u000fPv\u001bn'=\u0005Q5\u000ff>%\u000fG/I\u0012\re\bk2=\u001eF;\u0007h3,DMt\u0004b3``\u001as8$+Pf\fu# \u0005M;\nk6:\u0019Oz\bc2;DSg\fa2;+Pf\fu# \u0005M\\\u0007s2;\u0004By\u000b@t\no2\u0004\u0005G`\u0005b\u001cqp\u000en$=\u000fQp\r'4<\u0019Wz\u0004'6:\u0019Fg\u001dn8'J\u0006\rv\u0005f$:-fg\u001bh%i\u001dK|\u0005bw%\u0005Bq\u0000i0i\tVf\u001dh:i\u000bPf\fu# \u0005M5\u0004h3<\u0006F5K";
                var4_3 = "\u0001.I@6=\u000fTt\u0010'3&\u000fP{Nsw!\u000bUpIk>*\u000fMf\f'1&\u0018\u0003V\u001ct#&\u0007\u0003T\u001at2;\u001eJz\u0007ty6\u0001.I@6=\u000fTt\u0010'3&\u000fP{Nsw!\u000bUpIk>*\u000fMf\f'1&\u0018\u0003V\u001ct#&\u0007\u0003T\u001at2;\u001eJz\u0007ty7@z\u0004(;~\u001eFv\u0001($,\u0018Up\u001b('&\u0006Jv\u0010(:&\u000eVy\f(\u0014<\u0019Wz\u0004F$:\u000fQa\u0000h9:9@t\u0007i2;\u001bmzId\":\u001eLxIf$:\u000fQa\u0000h9:JEz\u001ci3g\t@t\u0005k5(\tHf&j{\u001ff; \u000e\u0003v\u001ct#&\u0007\u0003t\u001at2;\u001eJz\u0007+w:\u0001Je\u0019n9.D\r;c\u0010A`\u0000k3\r\u000fPv\u001bn'=\u0005Qf\nF{\u001dn#0$Bx\f\u0013\rp\u0007s>=\u0013\rf\fu>(\u0006Jo\fu$\u0019Nz\rr;,.Ba\b'4(\u0004Mz\u001d'5,JM`\u0005k\u000e\u000ff\fu!,\u0018\u0003v\u0005f$:W\u0015\u00015\u0000tw'\u0005W5\u001ar5*\u0006Bf\u001a'8/J\u0016`t\u0007i8=JV{\u0005h6-JNz\rr;,J\u0001R\u00015\rh2:\u0004\u0004aId8'\u001eB|\u0007'6'\u0013\u0003c\bk>-JBf\u001ab%=\u0003L{\u001a)w\u001d\u0002F5\u0004h3<\u0006F5\u001en;%JApIu2%\u0005Bq\fcw&\u0004@pIj8-\u0003E|\fcy\u0003\r`\u0000\rTz\u001bl\u0013 \u0018Fv\u001dh%0\u0006\rv\u0005f$:\u0011``\u001as8$JBf\u001ab%=\u0003L{I8`t\u0007i8=JOz\bcw*\u0006Bf\u001a/2:C\u0003s\u0006uw*\u001fPa\u0006jw(\u0019Pp\u001bs>&\u0004\u000f5\u001al>9\u001aJ{\u000e)yg`\u0019et\u0000k2-JWzIr9%\u0005BqIj8-\u001fOpI%\u0002\u0004;8\u00015\rb$*\u0018Je\u001dh%gJw}\f':&\u000eVy\f'  \u0006O5\u000bbw;\u000fOz\bc2-JL{\nbw$\u0005G|\u000fn2-D8``\u001as8$JBf\u001ab%=\u0003L{Ib/=\u000fQ{\bkw,\u0004W|\u001d~w:\u000fQ|\bk>3\u000fQ5\nk6:\u0019\u0003{\bj2iH\u0016`t\u0007i8=JV{\u0005h6-JNz\rr;,J\u0001\u000f\ra\bt<g\u000b@a\u0000h9g\u001fJ\u0014Oz\bc\u0004,\u0018Up\u001bJ8-\u001fOp/n;,\u000e\u00015\u0000tw$\u0003Pf\u0000i0iH\u000eNz\rr;,,Jy\fI6$\u000f\fL{$h3<\u0006FY\u0006f3\u0014\rp\u0011s2'\u0019Jz\u0007)>'\u001eFg\u000ff4,\u0011Ve\rf#,\u000ef{\u001dn#0$Bx\f1fm\nb'=\u0003L{Ip? \u0006F5\nk8:\u0003MrId\":\u001eLxIf$:\u000fQa\u0000h9i\u0007Lq\u001ck2iH\u0014`t\u0007i8=JOz\bcw$\u0005G`\u0005bwk\bnz\rr;,J\u0001\u0006\u001f|\u0007n#w\u0015\r`\u0000)6%\u0006Lb\fcy;\u000fPz\u001cu4,\u0019\u0016Ve\rf#,9Fg\u001fb%\u0004\u0005G`\u0005b\u0011 \u0006F\u0017fg\u001bh%i\tOz\u001an9.Jit\u001bA>%\u000f\u00032)\u0001.ID\":\u001eLxIF$:\u000fQa\u0000h9:JPv\bi9,\u0018\u0003|\u001a'3 \u0019Bw\u0005b3g\u001b`z\u001ck3i\u0004LaIk8(\u000e\u0003x\u0006c\"%\u000f\u0003\u007f\buwn>bg\u000er:,\u0004W5\u000fh%i*mz\u001dI\"%\u0006\u0003e\bu6$\u000fWp\u001b'pl\u0019\u00045\u0006awl\u0019\r0\u001a':<\u0019W5\u0007h#i\bF5\u0007r;%\u0002Jq\u0017fg\u001bh%i\tOz\u001an9.Jit\u001bA>%\u000f\u000321et\u0000k2-JWzIr9%\u0005BqIw%,\u001cJz\u001ctw?\u000fQf\u0000h9i\u0005E5\u001do2i\u0007Lq\u001ck2iH\t\rv\bs2.\u0005Ql\u0015\u00045\u001dhw=\u000fNeIc>;\u000f@a\u0006u.iM\f\rq\ft4;\u0003Sa\u0000h9\u001ep~\u0000w' \u0004D5\u0005n5i\u0003M5\u001ar5-\u0003Qp\ns8;\u0013\u00032\u0015Nz\rr;,J@t\u0007i8=JApIi\"%\u0006*c[\u0006s\u0019<\u0006O5\u0004b#!\u0005G5Ltyl\u0019\u0003x\u001ct#i\u0004LaIu2=\u001fQ{Ii\"%\u0006\u0014`t\u0007i8=JOz\bcw$\u0005G`\u0005bwk\u0012x5\bt$,\u0018W|\u0006iw*\u0006Bf\u001a:\u0011\re\u0006k>*\u0013\r{\u0006c2g\u0004Bx\f\fNz\rr;,.Jr\ft#\u0016A`\u0000k3\u0004\u0005G`\u0005b\u0014%\u000bPf%h6-\u000fQ\u001d`z\u001ck3i\u0004LaIb/9\u000bMqIj8-\u001fOpIk>+J\u0004!\u00015 (\u0018i\u000fQg\u0006uw;\u000fBq\u0000i0i\tL{\u000fn0i\fJy\f'u\u0006St\u001bb9=\u001e\u0001;ID\":\u001eLxIf$:\u000fQa\u0000h9i\u0004LaIk8(\u000eFq\u0012x5\bt$,\u0018W|\u0006iw*\u0006Bf\u001a:\u000bGp\u001ad% \u001aWz\u001bt\u0002\u0001/7@z\u0004(;~\u001eFv\u0001($,\u0018Up\u001b('&\u0006Jv\u0010(:&\u000eVy\f(\u0014<\u0019Wz\u0004F$:\u000fQa\u0000h9:9@t\u0007i2;\u0002\u0001/\r\u0003s\u001bh:i\u0007Lq\u001ck2i&j{\nh:9\u0006Fa\f'4<\u0019Wz\u0004'6:\u0019Fg\u001dn8'F\u0003f\u0002n'9\u0003Mrc5`z\u001ck3i\u0004LaId%,\u000bWpId\":\u001eLxIf$:\u000fQa\u0000h9i\u0007Lq\u001ck2i\tOt\u001atw%\u0005Bq\fu\bnz\rr;,J\u00011``\u001as8$JBf\u001ab%=\u0003L{Ib/=\u000fMf\u0000h9i\u0003Ma\fu1(\tF5\nk6:\u0019\u0003{\bj2iH\u001b\u00015\u0000tw:\u001f@v\ft$/\u001fOy\u0010'\"'\u0006Lt\rb3h\u0007\rf\fu!,\u0018~\u00015\rh2:\u0004\u0004aIt\"9\u001aLg\u001d'30\u0004Bx\u0000dw%\u0005Bq\u0000i0i\u000bMqIn#i\u001dBfIf;;\u000fBq\u0010';&\u000bGp\r'8'\tF;IS? \u0019\u0003c\fu$ \u0005M5\u0006aw=\u0002F5\u0004h3<\u0006F5\u001en;%JApIk8(\u000eFqIh9i\u0004Fm\u001d'\u0004\u001a-\u0003f\u001df%=D\u0016V{\u0005h6-9Fg\u001fb%\u0004\u0005G`\u0005b\u0011 \u0006F)\u0001.ID\":\u001eLxIF$:\u000fQa\u0000h9:JPv\bi9,\u0018\u0003|\u001a'3 \u0019Bw\u0005b3g\u0014\r`\u0000)6%\u0006Lb\fcy9\u000b@~\b`2:2\u00019Ic8,\u0019M2\u001d'4&\u0004Wt\u0000iw*\u001fPa\u0006jw(\u0019Pp\u001bs>&\u0004P5\nh9/\u0003D5\u000fn;,J\u0001\u000eJf$h3<\u0006FY\u0006f3,\u000e(`z\u001ck3i\u0004LaId%,\u000bWpIj8-\u001fOpIs2$\u001a\u0003q\u0000u2*\u001eLg\u0010'p\r\r`\u0000)6<\u001eL;\u0006w2'\nPa\b`2-,Jy\f5\u00015\u0000tw'\u0005W5\u001ar5*\u0006Bf\u001a'8/J``\u001as8$/[a\fi$ \u0005M\\\u0007s2;\fBv\fE>'\u000eJ{\u000e)\tNz\rr;, Bg\rNz\rr;,\u0019`z\u0007a>.8v{\be;,JWzIk8(\u000e\u0003v\u001ct#&\u0007\u0003t\u001at2;\u001eJz\u0007'4%\u000bPf\u0005h6-\u000fQ5\u0019u89\u000fQa\u0000b$gJ\u001e\u0001;ID\":\u001eLxIf$:\u000fQa\u0000h9i\u0004LaIk8(\u000eFq\u0002\u0004;\u0005Et\u0005t2-`g\ff# \u0004D5\nr$=\u0005N5\bt$,\u0018W|\u0006iw-\u000fPv\u001bn'=\u0005Q5\u000ff>%\u000fG/I\u0012\re\bk2=\u001eF;\u0007h3,DMt\u0004b3``\u001as8$+Pf\fu# \u0005M;\nk6:\u0019Oz\bc2;DSg\fa2;+Pf\fu# \u0005M\\\u0007s2;\u0004By\u000b@t\no2\u0004\u0005G`\u0005b\u001cqp\u000en$=\u000fQp\r'4<\u0019Wz\u0004'6:\u0019Fg\u001dn8'J\u0006\rv\u0005f$:-fg\u001bh%i\u001dK|\u0005bw%\u0005Bq\u0000i0i\tVf\u001dh:i\u000bPf\fu# \u0005M5\u0004h3<\u0006F5K".length();
                var1_4 = 54;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 80;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = CustomAssertionsScanner.c(v0, CustomAssertionsScanner.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "~G6J\u001a;;|O2K\u000e1X2K\u001f\u0012&=H;X\u001a\u0004i";
                    var4_3 = "~G6J\u001a;;|O2K\u000e1X2K\u001f\u0012&=H;X\u001a\u0004i".length();
                    var1_4 = 11;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 110;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = CustomAssertionsScanner.c(v0, CustomAssertionsScanner.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        CustomAssertionsScanner.l = var5;
        CustomAssertionsScanner.c = Logger.getLogger(CustomAssertionsScanner.class.getName());
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void c(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 6[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    private static Throwable a(Throwable throwable) {
        return throwable;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x3A);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String c(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 115;
                    case 1 -> 69;
                    case 2 -> 57;
                    case 3 -> 87;
                    case 4 -> 7;
                    case 5 -> 25;
                    default -> 58;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

