Info Call to External Storage API

Description

List of all external storage API calls. Insecure storage of sensitive information by setting insecure permissions or storing data without encryption might expose this information to an attacker.

Recommendation

This entry is informative, no recommendations applicable.

Technical details

Method gnu.expr.ModuleExp.evalToClass() calling method java.io.FileOutputStream.<init>()


    public static Class evalToClass(gnu.expr.Compilation p30, java.net.URL p31)
    {
        p30.getModule();
        gnu.text.SourceMessages v18 = p30.getMessages();
        try {
            Class v5_0;
            p30.minfo.loadByStages(12);
        } catch (Throwable v14_2) {
            gnu.bytecode.ArrayClassLoader v26_19 = new gnu.mapping.WrappedException;
            v26_19("I/O error in lambda eval", v14_2);
            throw v26_19;
        } catch (Throwable v14_1) {
            gnu.bytecode.ArrayClassLoader v26_18 = new gnu.mapping.WrappedException;
            v26_18("class not found in lambda eval", v14_1);
            throw v26_18;
        } catch (Throwable v14_0) {
            p30.getMessages().error(102, new StringBuilder().append("internal compile error - caught ").append(v14_0).toString(), v14_0);
            gnu.bytecode.ArrayClassLoader v26_17 = new gnu.text.SyntaxException;
            v26_17(v18);
            throw v26_17;
        }
        if (!v18.seenErrors()) {
            gnu.bytecode.ArrayClassLoader v17 = p30.loader;
            if (p31 == null) {
                p31 = gnu.text.Path.currentPath().toURL();
            }
            v17.setResourceContext(p31);
            java.util.zip.ZipOutputStream v25 = 0;
            if (gnu.expr.ModuleExp.dumpZipPrefix != null) {
                StringBuffer v24 = new StringBuffer;
                v24(gnu.expr.ModuleExp.dumpZipPrefix);
                gnu.expr.ModuleExp.lastZipCounter = (gnu.expr.ModuleExp.lastZipCounter + 1);
                if (gnu.expr.ModuleExp.interactiveCounter > gnu.expr.ModuleExp.lastZipCounter) {
                    gnu.expr.ModuleExp.lastZipCounter = gnu.expr.ModuleExp.interactiveCounter;
                }
                v24.append(gnu.expr.ModuleExp.lastZipCounter);
                v24.append(".zip");
                java.io.FileOutputStream v23 = new java.io.FileOutputStream;
                v23(v24.toString());
                v25 = new java.util.zip.ZipOutputStream;
                v25(v23);
            }
            int v15_1 = 0;
            while (v15_1 < p30.numClasses) {
                Class v5_1 = p30.classes[v15_1];
                String v7 = v5_1.getName();
                byte[] v6 = v5_1.writeToArray();
                v17.addClass(v7, v6);
                if (v25 != null) {
                    java.util.zip.ZipEntry v22 = new java.util.zip.ZipEntry;
                    v22(new StringBuilder().append(v7.replace(46, 47)).append(".class").toString());
                    v22.setSize(((long) v6.length));
                    java.util.zip.CRC32 v10_1 = new java.util.zip.CRC32();
                    v10_1.update(v6);
                    v22.setCrc(v10_1.getValue());
                    v22.setMethod(0);
                    v25.putNextEntry(v22);
                    v25.write(v6);
                }
                v15_1++;
            }
            if (v25 != null) {
                v25.close();
            }
            v5_0 = 0;
            gnu.bytecode.ArrayClassLoader v9_1 = v17;
            while ((v9_1.getParent() instanceof gnu.bytecode.ArrayClassLoader)) {
                v9_1 = ((gnu.bytecode.ArrayClassLoader) v9_1.getParent());
            }
            int v15_0 = 0;
            while (v15_0 < p30.numClasses) {
                gnu.bytecode.ClassType v11 = p30.classes[v15_0];
                Class v4 = v17.loadClass(v11.getName());
                v11.setReflectClass(v4);
                v11.setExisting(1);
                if (v15_0 != 0) {
                    if (v9_1 != v17) {
                        v9_1.addClass(v4);
                    }
                } else {
                    v5_0 = v4;
                }
                v15_0++;
            }
            gnu.expr.ModuleInfo v20 = p30.minfo;
            v20.setModuleClass(v5_0);
            p30.cleanupAfterCompilation();
            int v21 = v20.numDependencies;
            int v16 = 0;
            while (v16 < v21) {
                gnu.expr.ModuleInfo v13 = v20.dependencies[v16];
                Class v12 = v13.getModuleClassRaw();
                if (v12 == null) {
                    v12 = gnu.expr.ModuleExp.evalToClass(v13.comp, 0);
                }
                p30.loader.addClass(v12);
                v16++;
            }
        } else {
            v5_0 = 0;
        }
        return v5_0;
    }

Method com.google.appinventor.components.runtime.Canvas.saveFile() calling method java.io.FileOutputStream.<init>()


    private String saveFile(java.io.File p10, android.graphics.Bitmap$CompressFormat p11, String p12)
    {
        String v7 = 1;
        try {
            com.google.appinventor.components.runtime.Form v4_5;
            android.graphics.Bitmap v0;
            java.io.FileOutputStream v2_1 = new java.io.FileOutputStream(p10);
        } catch (java.io.IOException v1) {
            com.google.appinventor.components.runtime.Form v4_9 = this.container.$form();
            Object[] v6_3 = new Object[v7];
            v7 = p10.getAbsolutePath();
            v6_3[0] = v7;
            v4_9.dispatchErrorOccurredEvent(this, p12, 707, v6_3);
            v4_5 = "";
            return v4_5;
        } catch (java.io.IOException v1) {
            com.google.appinventor.components.runtime.Form v4_7 = this.container.$form();
            Object[] v6_2 = new Object[v7];
            v7 = v1.getMessage();
            v6_2[0] = v7;
            v4_7.dispatchErrorOccurredEvent(this, p12, 708, v6_2);
        }
        if (com.google.appinventor.components.runtime.Canvas$CanvasView.access$1300(this.view) != null) {
            v0 = com.google.appinventor.components.runtime.Canvas$CanvasView.access$1300(this.view);
        } else {
            v0 = com.google.appinventor.components.runtime.Canvas$CanvasView.access$1400(this.view);
        }
        boolean v3 = v0.compress(p11, 100, v2_1);
        v2_1.close();
        if (!v3) {
            Object[] v6_1 = new Object[0];
            this.container.$form().dispatchErrorOccurredEvent(this, p12, 1001, v6_1);
        } else {
            v4_5 = p10.getAbsolutePath();
            return v4_5;
        }
    }

Method gnu.text.URLPath.openOutputStream() calling method java.io.FileOutputStream.<init>()


    public static java.io.OutputStream openOutputStream(java.net.URL p5)
    {
        Throwable v2_0;
        String v1 = p5.toString();
        if (!v1.startsWith("file:")) {
            java.net.URLConnection v0 = p5.openConnection();
            v0.setDoInput(0);
            v0.setDoOutput(1);
            v2_0 = v0.getOutputStream();
        } else {
            try {
                v2_0 = new java.io.FileOutputStream(new java.io.File(new java.net.URI(v1)));
            } catch (Throwable v2) {
            }
        }
        return v2_0;
    }

Method gnu.bytecode.ClassType.writeToFile() calling method java.io.FileOutputStream.<init>()


    public void writeToFile(String p3)
    {
        java.io.BufferedOutputStream v0_1 = new java.io.BufferedOutputStream(new java.io.FileOutputStream(p3));
        this.writeToStream(v0_1);
        v0_1.close();
        return;
    }

Method com.google.appinventor.components.runtime.Web.saveResponseContent() calling method java.io.FileOutputStream.<init>()


    private static String saveResponseContent(java.net.HttpURLConnection p6, String p7, String p8)
    {
        java.io.File v1 = com.google.appinventor.components.runtime.Web.createFile(p7, p8);
        java.io.BufferedInputStream v2_1 = new java.io.BufferedInputStream(com.google.appinventor.components.runtime.Web.getConnectionStream(p6), 4096);
        try {
            java.io.BufferedOutputStream v3_0 = new java.io.BufferedOutputStream(new java.io.FileOutputStream(v1), 4096);
            try {
                while(true) {
                    int v0 = v2_1.read();
                    v3_0.write(v0);
                }
                v3_0.flush();
                v3_0.close();
                v2_1.close();
                return v1.getAbsolutePath();
            } catch (String v4_1) {
                v3_0.close();
                throw v4_1;
            }
            if (v0 != -1) {
            }
        } catch (String v4_3) {
            v2_1.close();
            throw v4_3;
        }
    }

Method gnu.text.FilePath.openOutputStream() calling method java.io.FileOutputStream.<init>()


    public java.io.OutputStream openOutputStream()
    {
        return new java.io.FileOutputStream(this.file);
    }

Method gnu.expr.Compilation.compileToArchive() calling method java.io.FileOutputStream.<init>()


    public void compileToArchive(gnu.expr.ModuleExp p13, String p14)
    {
        int v3;
        if (!p14.endsWith(".zip")) {
            if (!p14.endsWith(".jar")) {
                p14 = new StringBuilder().append(p14).append(".zip").toString();
                v3 = 0;
            } else {
                v3 = 1;
            }
        } else {
            v3 = 0;
        }
        this.process(12);
        java.io.File v4_1 = new java.io.File(p14);
        if (v4_1.exists()) {
            v4_1.delete();
        }
        java.util.zip.ZipOutputStream v7_1;
        if (v3 == 0) {
            v7_1 = new java.util.zip.ZipOutputStream(new java.io.FileOutputStream(v4_1));
        } else {
            v7_1 = new java.util.jar.JarOutputStream(new java.io.FileOutputStream(v4_1));
        }
        byte[][] v1 = new byte[][this.numClasses];
        java.util.zip.CRC32 v5_1 = new java.util.zip.CRC32();
        int v2 = 0;
        while (v2 < this.numClasses) {
            gnu.bytecode.ClassType v0 = this.classes[v2];
            v1[v2] = v0.writeToArray();
            java.util.zip.ZipEntry v6_1 = new java.util.zip.ZipEntry(new StringBuilder().append(v0.getName().replace(46, 47)).append(".class").toString());
            v6_1.setSize(((long) v1[v2].length));
            v5_1.reset();
            v5_1.update(v1[v2], 0, v1[v2].length);
            v6_1.setCrc(v5_1.getValue());
            v7_1.putNextEntry(v6_1);
            v7_1.write(v1[v2]);
            v2++;
        }
        v7_1.close();
        return;
    }

Method com.google.appinventor.components.runtime.util.AppInvHTTPD.copyFile() calling method java.io.FileOutputStream.<init>()


    private void copyFile(java.io.File p7, java.io.File p8)
    {
        try {
            java.io.FileInputStream v2_1 = new java.io.FileInputStream(p7);
            java.io.FileOutputStream v4_1 = new java.io.FileOutputStream(p8);
            byte[] v0 = new byte[32768];
        } catch (java.io.IOException v1) {
            v1.printStackTrace();
            return;
        }
        while(true) {
            int v3 = v2_1.read(v0);
            if (v3 <= 0) {
                break;
            }
            v4_1.write(v0, 0, v3);
        }
        v2_1.close();
        v4_1.close();
        return;
    }

Method org.acra.util.Installation.writeInstallationFile() calling method java.io.FileOutputStream.<init>()


    private static void writeInstallationFile(java.io.File p3)
    {
        java.io.FileOutputStream v1_1 = new java.io.FileOutputStream(p3);
        try {
            v1_1.write(java.util.UUID.randomUUID().toString().getBytes());
            v1_1.close();
            return;
        } catch (Throwable v2_0) {
            v1_1.close();
            throw v2_0;
        }
    }

Method gnu.xquery.util.Debug.trace() calling method java.io.FileOutputStream.<init>()


    public static declared_synchronized Object trace(Object p8, Object p9)
    {
        try {
            gnu.mapping.OutPort v1 = gnu.xquery.util.Debug.tracePort;
        } catch (gnu.mapping.WrappedException v4_6) {
            throw v4_6;
        }
        if (v1 == null) {
            try {
                v1 = new gnu.mapping.OutPort(new java.io.FileOutputStream(gnu.xquery.util.Debug.traceFilename, gnu.xquery.util.Debug.traceShouldAppend));
            } catch (Throwable v0) {
                new gnu.mapping.WrappedException(new StringBuilder().append("Could not open \'").append(gnu.xquery.util.Debug.traceFilename).append("\' for fn:trace output").toString(), v0);
            }
            gnu.xquery.util.Debug.tracePort = v1;
        }
        v1.print(gnu.xquery.util.Debug.tracePrefix);
        v1.print(p9);
        v1.print(32);
        new gnu.xml.XMLPrinter(v1, 0).writeObject(p8);
        v1.println();
        if (gnu.xquery.util.Debug.traceShouldFlush) {
            v1.flush();
        }
        return p8;
    }

Method gnu.kawa.util.PreProcess.filter() calling method java.io.FileOutputStream.<init>()


    public void filter(String p5)
    {
        if (this.filter(p5, new java.io.BufferedInputStream(new java.io.FileInputStream(p5)))) {
            java.io.FileOutputStream v0_1 = new java.io.FileOutputStream(p5);
            v0_1.write(this.resultBuffer, 0, this.resultLength);
            v0_1.close();
            System.err.println(new StringBuilder().append("Pre-processed ").append(p5).toString());
        }
        return;
    }

Method gnu.kawa.util.FileInfo.write() calling method java.io.FileOutputStream.<init>()


    public void write()
    {
        int v2 = 0;
        gnu.kawa.util.FileInfo v1 = this;
        while (v1.parent != null) {
            v1 = v1.parent;
            v2++;
        }
        this.cout.println("<!--start-generated-navbar-->");
        this.writeLinks(v2, this.newNavbarText);
        this.cout.print(this.newNavbarText);
        this.cout.println("<!--end-generated-navbar-->");
        while(true) {
            String v3 = this.in.readLine();
            if (v3 == null) {
                break;
            }
            this.cout.println(v3);
        }
        new StringBuffer();
        this.in.close();
        if (!this.oldNavbarText.toString().equals(this.newNavbarText.toString())) {
            java.io.FileOutputStream v4_1 = new java.io.FileOutputStream(this.file);
            v4_1.write(this.bout.toByteArray());
            v4_1.close();
            System.err.println(new StringBuilder().append("fixup ").append(this.file).append(" - updated").toString());
        } else {
            System.err.println(new StringBuilder().append("fixup ").append(this.file).append(" - no change").toString());
        }
        return;
    }

Method gnu.bytecode.ZipArchive.main() calling method java.io.FileOutputStream.<init>()


    public static void main(String[] p20)
    {
        if (p20.length < 2) {
            gnu.bytecode.ZipArchive.usage();
        }
        String v4 = p20[0];
        String v2 = p20[1];
        try {
            if ((!v4.equals("t")) && ((!v4.equals("p")) && (!v4.equals("x")))) {
                if (!v4.equals("q")) {
                    gnu.bytecode.ZipArchive.usage();
                } else {
                    int v17_32 = new java.io.FileOutputStream;
                    v17_32(v2);
                    java.util.zip.ZipOutputStream v13_3 = new java.util.zip.ZipOutputStream(v17_32);
                    int v8_1 = 2;
                    while (v8_1 < p20.length) {
                        java.io.File v9_3 = new java.io.File(p20[v8_1]);
                        if (v9_3.exists()) {
                            if (v9_3.canRead()) {
                                int v12 = ((int) v9_3.length());
                                java.io.FileInputStream v7_1 = new java.io.FileInputStream(v9_3);
                                byte[] v5 = new byte[v12];
                                if (v7_1.read(v5) == v12) {
                                    v7_1.close();
                                    java.util.zip.ZipEntry v14_1 = new java.util.zip.ZipEntry(p20[v8_1]);
                                    v14_1.setSize(((long) v12));
                                    v14_1.setTime(v9_3.lastModified());
                                    v13_3.putNextEntry(v14_1);
                                    v13_3.write(v5, 0, v12);
                                    v8_1++;
                                } else {
                                    throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - read error").toString());
                                }
                            } else {
                                throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - not readable").toString());
                            }
                        } else {
                            throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - not found").toString());
                        }
                    }
                    v13_3.close();
                }
            } else {
                java.io.PrintStream v11 = System.out;
                byte[] v3 = new byte[1024];
                if (p20.length != 2) {
                    java.util.zip.ZipOutputStream v13_1 = new java.util.zip.ZipFile(v2);
                    int v8_0 = 2;
                    while (v8_0 < p20.length) {
                        String v10_0 = p20[v8_0];
                        java.util.zip.ZipEntry v15_0 = v13_1.getEntry(v10_0);
                        if (v15_0 != null) {
                            if (!v4.equals("t")) {
                                if (!v4.equals("p")) {
                                    gnu.bytecode.ZipArchive.copy(v13_1.getInputStream(v15_0), v10_0, v3);
                                } else {
                                    gnu.bytecode.ZipArchive.copy(v13_1.getInputStream(v15_0), v11, v3);
                                }
                            } else {
                                v11.print(v10_0);
                                v11.print(" size: ");
                                v11.println(v15_0.getSize());
                            }
                        } else {
                            System.err.println(new StringBuilder().append("zipfile ").append(v2).append(":").append(p20[v8_0]).append(" - not found").toString());
                            System.exit(-1);
                        }
                        v8_0++;
                    }
                } else {
                    int v17_19 = new java.io.FileInputStream;
                    v17_19(v2);
                    java.util.zip.ZipInputStream v16 = new java.util.zip.ZipInputStream;
                    v16(new java.io.BufferedInputStream(v17_19));
                    while(true) {
                        java.util.zip.ZipEntry v15_1 = v16.getNextEntry();
                        if (v15_1 == null) {
                            break;
                        }
                        String v10_1 = v15_1.getName();
                        if (!v4.equals("t")) {
                            if (!v4.equals("p")) {
                                gnu.bytecode.ZipArchive.copy(v16, v10_1, v3);
                            } else {
                                gnu.bytecode.ZipArchive.copy(v16, v11, v3);
                            }
                        } else {
                            v11.print(v10_1);
                            v11.print(" size: ");
                            v11.println(v15_1.getSize());
                        }
                    }
                }
            }
        } catch (java.io.IOException v6) {
            System.err.println(new StringBuilder().append("I/O Exception:  ").append(v6).toString());
        }
        return;
    }

Method gnu.bytecode.ZipArchive.copy() calling method java.io.FileOutputStream.<init>()


    public static void copy(java.io.InputStream p7, String p8, byte[] p9)
    {
        java.io.File v2_1 = new java.io.File(p8);
        String v1 = v2_1.getParent();
        if (v1 != null) {
            java.io.File v0_1 = new java.io.File(v1);
            if (!v0_1.exists()) {
                System.err.println(new StringBuilder().append("mkdirs:").append(v0_1.mkdirs()).toString());
            }
        }
        if (p8.charAt((p8.length() - 1)) != 47) {
            java.io.BufferedOutputStream v3_1 = new java.io.BufferedOutputStream(new java.io.FileOutputStream(v2_1));
            gnu.bytecode.ZipArchive.copy(p7, v3_1, p9);
            v3_1.close();
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD$HTTPSession.run() calling method java.io.FileOutputStream.<init>()


    public void run()
    {
        try {
            java.io.InputStream v28 = this.mySocket.getInputStream();
        } catch (java.io.IOException v27) {
            try {
                this.sendError("500 Internal Server Error", new StringBuilder().append("SERVER INTERNAL ERROR: IOException: ").append(v27.getMessage()).toString());
            } catch (StringBuilder v4) {
            }
            return;
        }
        if (v28 != null) {
            char[] v0_42 = new byte[8192];
            byte[] v19_1 = v0_42;
            int v34 = v28.read(v19_1, 0, 8192);
            if (v34 <= 0) {
                return;
            } else {
                java.io.ByteArrayInputStream v25 = new java.io.ByteArrayInputStream;
                v25(v19_1, 0, v34);
                java.io.BufferedReader v26 = new java.io.BufferedReader;
                v26(new java.io.InputStreamReader(v25));
                java.util.Properties v31_1 = new java.util.Properties();
                java.util.Properties v8_1 = new java.util.Properties();
                java.util.Properties v13_1 = new java.util.Properties();
                java.util.Properties v9_1 = new java.util.Properties();
                this.decodeHeader(v26, v31_1, v8_1, v13_1);
                String v12 = v31_1.getProperty("method");
                String v11 = v31_1.getProperty("uri");
                long v36 = nan;
                String v21 = v13_1.getProperty("content-length");
                if (v21 != null) {
                    try {
                        v36 = ((long) Integer.parseInt(v21));
                    } catch (StringBuilder v4) {
                    }
                }
                int v38_0 = 0;
                int v35 = 0;
                while (v38_0 < v34) {
                    if (v19_1[v38_0] == 13) {
                        v38_0++;
                        if (v19_1[v38_0] == 10) {
                            v38_0++;
                            if (v19_1[v38_0] == 13) {
                                v38_0++;
                                if (v19_1[v38_0] == 10) {
                                    v35 = 1;
                                    break;
                                }
                            }
                        }
                    }
                    v38_0++;
                }
                java.io.ByteArrayOutputStream v24_2;
                int v38_1 = (v38_0 + 1);
                if (!v12.equalsIgnoreCase("PUT")) {
                    v24_2 = new java.io.ByteArrayOutputStream();
                } else {
                    java.io.File v40 = java.io.File.createTempFile("upload", "bin");
                    v40.deleteOnExit();
                    v24_2 = new java.io.FileOutputStream;
                    v24_2(v40);
                    v9_1.put("content", v40.getAbsolutePath());
                }
                if (v38_1 < v34) {
                    v24_2.write(v19_1, v38_1, (v34 - v38_1));
                }
                if (v38_1 >= v34) {
                    if ((v35 == 0) || (v36 == nan)) {
                        v36 = 0;
                    }
                } else {
                    v36 -= ((long) ((v34 - v38_1) + 1));
                }
                char[] v0_5 = new byte[512];
                byte[] v19_0 = v0_5;
                while ((v34 >= 0) && (v36 > 0)) {
                    v34 = v28.read(v19_0, 0, 512);
                    v36 -= ((long) v34);
                    if (v34 > 0) {
                        v24_2.write(v19_0, 0, v34);
                    }
                }
                if (!v12.equalsIgnoreCase("POST")) {
                    if (v12.equalsIgnoreCase("PUT ")) {
                        v24_2.close();
                    }
                } else {
                    byte[] v6 = ((java.io.ByteArrayOutputStream) v24_2).toByteArray();
                    java.io.ByteArrayInputStream v17 = new java.io.ByteArrayInputStream;
                    v17(v6);
                    java.io.BufferedReader v7_1 = new java.io.BufferedReader(new java.io.InputStreamReader(v17));
                    String v22 = "";
                    java.util.StringTokenizer v39_0 = new java.util.StringTokenizer;
                    v39_0(v13_1.getProperty("content-type"), "; ");
                    if (v39_0.hasMoreTokens()) {
                        v22 = v39_0.nextToken();
                    }
                    if (!v22.equalsIgnoreCase("multipart/form-data")) {
                        String v30_0 = "";
                        char[] v0_10 = new char[512];
                        char[] v29 = v0_10;
                        int v33 = v7_1.read(v29);
                        while ((v33 >= 0) && (!v30_0.endsWith("\r\n"))) {
                            v30_0 = new StringBuilder().append(v30_0).append(String.valueOf(v29, 0, v33)).toString();
                            v33 = v7_1.read(v29);
                        }
                        this.decodeParms(v30_0.trim(), v8_1);
                    } else {
                        if (!v39_0.hasMoreTokens()) {
                            this.sendError("400 Bad Request", "BAD REQUEST: Content type is multipart/form-data but boundary missing. Usage: GET /example/file.html");
                        }
                        java.util.StringTokenizer v39_1 = new java.util.StringTokenizer;
                        v39_1(v39_0.nextToken(), "=");
                        if (v39_1.countTokens() != 2) {
                            this.sendError("400 Bad Request", "BAD REQUEST: Content type is multipart/form-data but boundary syntax error. Usage: GET /example/file.html");
                        }
                        v39_1.nextToken();
                        this.decodeMultipartData(v39_1.nextToken(), v6, v7_1, v8_1, v9_1);
                    }
                    v7_1.close();
                }
                com.google.appinventor.components.runtime.util.NanoHTTPD$Response v32 = this.this$0.serve(v11, v12, v13_1, v8_1, v9_1, this.mySocket);
                if (v32 != null) {
                    this.sendResponse(v32.status, v32.mimeType, v32.header, v32.data);
                } else {
                    this.sendError("500 Internal Server Error", "SERVER INTERNAL ERROR: Serve() returned a null response.");
                }
                v28.close();
                return;
            }
        } else {
            return;
        }
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD$HTTPSession.saveTmpFile() calling method java.io.FileOutputStream.<init>()


    private String saveTmpFile(byte[] p9, int p10, int p11)
    {
        String v2 = "";
        if (p11 > 0) {
            try {
                java.io.File v3 = java.io.File.createTempFile("NanoHTTPD", "", new java.io.File(System.getProperty("java.io.tmpdir")));
                java.io.FileOutputStream v1_1 = new java.io.FileOutputStream(v3);
                v1_1.write(p9, p10, p11);
                v1_1.close();
                v2 = v3.getAbsolutePath();
            } catch (Exception v0) {
                com.google.appinventor.components.runtime.util.NanoHTTPD.myErr.println(new StringBuilder().append("Error: ").append(v0.getMessage()).toString());
            }
        }
        return v2;
    }

Method com.google.appinventor.components.runtime.util.JsonUtil.writeFile() calling method java.io.FileOutputStream.<init>()


    private static String writeFile(String p10, String p11)
    {
        try {
            if ((p11.length() == 3) || (p11.length() == 4)) {
                byte[] v0 = android.util.Base64.decode(p10, 0);
                java.io.File v2_1 = new java.io.File(new StringBuilder().append(android.os.Environment.getExternalStorageDirectory()).append("/AppInventorBinaries").toString());
                v2_1.mkdirs();
                java.io.File v1 = java.io.File.createTempFile("BinFile", new StringBuilder().append(".").append(p11).toString(), v2_1);
                java.io.FileOutputStream v5_1 = new java.io.FileOutputStream(v1);
                v5_1.write(v0);
                v5_1.close();
                String v6 = v1.toURI().toASCIIString();
                com.google.appinventor.components.runtime.util.JsonUtil.trimDirectory(20, v2_1);
                return v6;
            } else {
                throw new com.google.appinventor.components.runtime.errors.YailRuntimeError("File Extension must be three or four characters", "Write Error");
            }
        } catch (Exception v3) {
            throw new com.google.appinventor.components.runtime.errors.YailRuntimeError(v3.getMessage(), "Write");
        }
    }

Method com.google.appinventor.components.runtime.util.GeoJSONUtil.writeFeaturesAsGeoJSON() calling method java.io.FileOutputStream.<init>()


    public static void writeFeaturesAsGeoJSON(java.util.List p7, String p8)
    {
        java.io.PrintStream v2 = 0;
        try {
            java.io.PrintStream v3_1 = new java.io.PrintStream(new java.io.FileOutputStream(p8));
            try {
                com.google.appinventor.components.runtime.util.GeoJSONUtil$FeatureWriter v4_1 = new com.google.appinventor.components.runtime.util.GeoJSONUtil$FeatureWriter(v3_1, 0);
                v3_1.print("{\"type\": \"FeatureCollection\", \"features\":[");
                java.util.Iterator v1 = p7.iterator();
            } catch (Object[] v5_8) {
                v2 = v3_1;
                com.google.appinventor.components.runtime.util.IOUtils.closeQuietly("GeoJSONUtil", v2);
                throw v5_8;
            }
            if (v1.hasNext()) {
                Object[] v5_3 = new Object[0];
                ((com.google.appinventor.components.runtime.util.MapFactory$MapFeature) v1.next()).accept(v4_1, v5_3);
                while (v1.hasNext()) {
                    com.google.appinventor.components.runtime.util.MapFactory$MapFeature v0_3 = ((com.google.appinventor.components.runtime.util.MapFactory$MapFeature) v1.next());
                    v3_1.print(44);
                    Object[] v5_11 = new Object[0];
                    v0_3.accept(v4_1, v5_11);
                }
            }
            v3_1.print("]}");
            com.google.appinventor.components.runtime.util.IOUtils.closeQuietly("GeoJSONUtil", v3_1);
            return;
        } catch (Object[] v5_8) {
        }
    }

Method com.google.appinventor.components.runtime.util.FileUtil.writeStreamToFile() calling method java.io.FileOutputStream.<init>()


    public static String writeStreamToFile(java.io.InputStream p3, String p4)
    {
        java.io.File v0_1 = new java.io.File(p4);
        v0_1.getParentFile().mkdirs();
        java.io.FileOutputStream v1_1 = new java.io.FileOutputStream(v0_1);
        try {
            com.google.appinventor.components.runtime.util.FileUtil.copy(p3, v1_1);
            Throwable v2_0 = v0_1.toURI().toString();
            v1_1.flush();
            v1_1.close();
            return v2_0;
        } catch (Throwable v2_1) {
            v1_1.flush();
            v1_1.close();
            throw v2_1;
        }
    }

Method com.google.appinventor.components.runtime.util.AssetFetcher.getFile() calling method java.io.FileOutputStream.<init>()


    private static java.io.File getFile(String p18, String p19, String p20, int p21)
    {
        try {
            java.io.File v10;
            if (p21 <= 1) {
                int v6 = 0;
                v10 = 0;
                try {
                    java.net.HttpURLConnection v4_0 = ((java.net.HttpURLConnection) new java.net.URL(p18).openConnection());
                } catch (java.io.IOException v5) {
                    android.util.Log.e(com.google.appinventor.components.runtime.util.AssetFetcher.LOG_TAG, new StringBuilder().append("Exception while fetching ").append(p18).toString());
                    v10 = com.google.appinventor.components.runtime.util.AssetFetcher.getFile(p18, p19, p20, (p21 + 1));
                }
                if (v4_0 == null) {
                    v6 = 1;
                } else {
                    v4_0.setRequestMethod("GET");
                    v4_0.addRequestProperty("Cookie", new StringBuilder().append("AppInventor = ").append(p19).toString());
                    android.util.Log.d(com.google.appinventor.components.runtime.util.AssetFetcher.LOG_TAG, new StringBuilder().append("asset = ").append(p20).append(" responseCode = ").append(v4_0.getResponseCode()).toString());
                    java.io.File v11_1 = new java.io.File(new StringBuilder().append(com.google.appinventor.components.runtime.util.AssetFetcher.REPL_ASSET_DIR).append(p20).toString());
                    try {
                        java.io.File v12 = v11_1.getParentFile();
                    } catch (java.io.IOException v5) {
                    }
                    if (!v12.exists()) {
                        v12.mkdirs();
                    }
                    java.io.BufferedInputStream v8_1 = new java.io.BufferedInputStream(v4_0.getInputStream(), 4096);
                    java.io.BufferedOutputStream v9_1 = new java.io.BufferedOutputStream(new java.io.FileOutputStream(v11_1), 4096);
                    try {
                        while(true) {
                            int v3 = v8_1.read();
                            v9_1.write(v3);
                        }
                        v9_1.flush();
                        v9_1.close();
                        v4_0.disconnect();
                        v10 = v11_1;
                    } catch (String v15_23) {
                        v9_1.close();
                        throw v15_23;
                    } catch (java.io.IOException v5) {
                        android.util.Log.e(com.google.appinventor.components.runtime.util.AssetFetcher.LOG_TAG, "copying assets", v5);
                        v6 = 1;
                        v9_1.close();
                    }
                    if (v3 != -1) {
                    }
                }
                if (v6 != 0) {
                    v10 = com.google.appinventor.components.runtime.util.AssetFetcher.getFile(p18, p19, p20, (p21 + 1));
                }
            } else {
                if (!com.google.appinventor.components.runtime.util.AssetFetcher.inError) {
                    com.google.appinventor.components.runtime.util.AssetFetcher.inError = 1;
                    com.google.appinventor.components.runtime.Form.getActiveForm().runOnUiThread(new com.google.appinventor.components.runtime.util.AssetFetcher$2(p18));
                    v10 = 0;
                } else {
                    v10 = 0;
                }
            }
        } catch (String v15_9) {
            throw v15_9;
        }
        return v10;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDexExtractor.extract() calling method java.io.FileOutputStream.<init>()


    private static void extract(java.util.zip.ZipFile p10, java.util.zip.ZipEntry p11, java.io.File p12, String p13)
    {
        java.io.InputStream v2 = p10.getInputStream(p11);
        java.io.File v6 = java.io.File.createTempFile(p13, ".zip", p12.getParentFile());
        android.util.Log.i("MultiDex", new StringBuilder().append("Extracting ").append(v6.getPath()).toString());
        try {
            java.util.zip.ZipOutputStream v5_1 = new java.util.zip.ZipOutputStream(new java.io.BufferedOutputStream(new java.io.FileOutputStream(v6)));
            try {
                java.util.zip.ZipEntry v1_1 = new java.util.zip.ZipEntry("classes.dex");
                v1_1.setTime(p11.getTime());
                v5_1.putNextEntry(v1_1);
                byte[] v0 = new byte[16384];
                int v3 = v2.read(v0);
            } catch (String v7_14) {
                v5_1.close();
                throw v7_14;
            } catch (String v7_2) {
                com.google.appinventor.components.runtime.util.IOUtils.closeQuietly("MultiDex", v2);
                v6.delete();
                throw v7_2;
            }
            while (v3 != -1) {
                v5_1.write(v0, 0, v3);
                v3 = v2.read(v0);
            }
            v5_1.closeEntry();
            v5_1.close();
            android.util.Log.i("MultiDex", new StringBuilder().append("Renaming to ").append(p12.getPath()).toString());
            if (v6.renameTo(p12)) {
                com.google.appinventor.components.runtime.util.IOUtils.closeQuietly("MultiDex", v2);
                v6.delete();
                return;
            } else {
                throw new java.io.IOException(new StringBuilder().append("Failed to rename \"").append(v6.getAbsolutePath()).append("\" to \"").append(p12.getAbsolutePath()).append("\"").toString());
            }
        } catch (String v7_2) {
        }
    }

Method com.google.appinventor.components.runtime.File$3.run() calling method java.io.FileOutputStream.<init>()


    public void run()
    {
        String v3 = com.google.appinventor.components.runtime.File.access$000(this.this$0, this.val$filename);
        if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFile(v3)) {
            this.this$0.form.assertPermission("android.permission.WRITE_EXTERNAL_STORAGE");
        }
        java.io.File v1_1 = new java.io.File(v3);
        if (v1_1.exists()) {
            try {
                java.io.FileOutputStream v2_1 = new java.io.FileOutputStream(v1_1, this.val$append);
                java.io.OutputStreamWriter v4_1 = new java.io.OutputStreamWriter(v2_1);
                v4_1.write(this.val$text);
                v4_1.flush();
                v4_1.close();
                v2_1.close();
                com.google.appinventor.components.runtime.File.access$200(this.this$0).runOnUiThread(new com.google.appinventor.components.runtime.File$3$1(this));
            } catch (java.io.IOException v0) {
                if (!this.val$append) {
                    com.google.appinventor.components.runtime.Form v5_15 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_6 = this.this$0;
                    Object[] v8_3 = new Object[1];
                    v8_3[0] = v3;
                    v5_15.dispatchErrorOccurredEvent(v6_6, "SaveFile", 2104, v8_3);
                } else {
                    com.google.appinventor.components.runtime.Form v5_17 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_7 = this.this$0;
                    Object[] v8_4 = new Object[1];
                    v8_4[0] = v3;
                    v5_17.dispatchErrorOccurredEvent(v6_7, "AppendTo", 2104, v8_4);
                }
            }
        } else {
            try {
                v1_1.createNewFile();
            } catch (java.io.IOException v0) {
                if (!this.val$append) {
                    com.google.appinventor.components.runtime.Form v5_5 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_1 = this.this$0;
                    Object[] v8_1 = new Object[1];
                    v8_1[0] = v3;
                    v5_5.dispatchErrorOccurredEvent(v6_1, "SaveFile", 2103, v8_1);
                } else {
                    com.google.appinventor.components.runtime.Form v5_7 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_2 = this.this$0;
                    Object[] v8_2 = new Object[1];
                    v8_2[0] = v3;
                    v5_7.dispatchErrorOccurredEvent(v6_2, "AppendTo", 2103, v8_2);
                }
            }
        }
        return;
    }

Method android.support.v4.util.AtomicFile.startWrite() calling method java.io.FileOutputStream.<init>()


    public java.io.FileOutputStream startWrite()
    {
        if (this.mBaseName.exists()) {
            if (this.mBackupName.exists()) {
                this.mBaseName.delete();
            } else {
                if (!this.mBaseName.renameTo(this.mBackupName)) {
                    android.util.Log.w("AtomicFile", new StringBuilder().append("Couldn\'t rename file ").append(this.mBaseName).append(" to backup file ").append(this.mBackupName).toString());
                }
            }
        }
        try {
            java.io.FileOutputStream v3_1 = new java.io.FileOutputStream(this.mBaseName);
        } catch (java.io.FileNotFoundException v0) {
            if (this.mBaseName.getParentFile().mkdirs()) {
                try {
                    v3_1 = new java.io.FileOutputStream(this.mBaseName);
                } catch (java.io.FileNotFoundException v1) {
                    throw new java.io.IOException(new StringBuilder().append("Couldn\'t create ").append(this.mBaseName).toString());
                }
            } else {
                throw new java.io.IOException(new StringBuilder().append("Couldn\'t create directory ").append(this.mBaseName).toString());
            }
        }
        return v3_1;
    }

Method android.support.v4.print.PrintHelper$PrintHelperApi19$2.doInBackground() calling method java.io.FileOutputStream.<init>()


    protected varargs Throwable doInBackground(Void[] p13)
    {
        Throwable v7 = 0;
        try {
            if (!this.val$cancellationSignal.isCanceled()) {
                android.print.pdf.PrintedPdfDocument v6_1 = new android.print.pdf.PrintedPdfDocument(this.this$0.mContext, this.val$pdfAttributes);
                android.graphics.Bitmap v4 = android.support.v4.print.PrintHelper$PrintHelperApi19.access$100(this.this$0, this.val$bitmap, this.val$pdfAttributes.getColorMode());
                if (!this.val$cancellationSignal.isCanceled()) {
                    try {
                        android.graphics.RectF v0_1;
                        android.graphics.pdf.PdfDocument$Page v5 = v6_1.startPage(1);
                    } catch (java.io.IOException v8_30) {
                        v6_1.close();
                        if (this.val$fileDescriptor != null) {
                            try {
                                this.val$fileDescriptor.close();
                            } catch (java.io.FileDescriptor v9) {
                            }
                        }
                        if (v4 != this.val$bitmap) {
                            v4.recycle();
                        }
                        throw v8_30;
                    }
                    if (!this.this$0.mIsMinMarginsHandlingCorrect) {
                        android.print.pdf.PrintedPdfDocument v1_1 = new android.print.pdf.PrintedPdfDocument(this.this$0.mContext, this.val$attributes);
                        android.graphics.pdf.PdfDocument$Page v2 = v1_1.startPage(1);
                        v0_1 = new android.graphics.RectF(v2.getInfo().getContentRect());
                        v1_1.finishPage(v2);
                        v1_1.close();
                    } else {
                        v0_1 = new android.graphics.RectF(v5.getInfo().getContentRect());
                    }
                    android.graphics.Matrix v3 = android.support.v4.print.PrintHelper$PrintHelperApi19.access$200(this.this$0, v4.getWidth(), v4.getHeight(), v0_1, this.val$fittingMode);
                    if (!this.this$0.mIsMinMarginsHandlingCorrect) {
                        v3.postTranslate(v0_1.left, v0_1.top);
                        v5.getCanvas().clipRect(v0_1);
                    }
                    v5.getCanvas().drawBitmap(v4, v3, 0);
                    v6_1.finishPage(v5);
                    if (!this.val$cancellationSignal.isCanceled()) {
                        v6_1.writeTo(new java.io.FileOutputStream(this.val$fileDescriptor.getFileDescriptor()));
                        v6_1.close();
                        if (this.val$fileDescriptor != null) {
                            try {
                                this.val$fileDescriptor.close();
                            } catch (java.io.IOException v8) {
                            }
                        }
                        if (v4 != this.val$bitmap) {
                            v4.recycle();
                        }
                    } else {
                        v6_1.close();
                        if (this.val$fileDescriptor != null) {
                            try {
                                this.val$fileDescriptor.close();
                            } catch (java.io.IOException v8) {
                            }
                        }
                        if (v4 != this.val$bitmap) {
                            v4.recycle();
                        }
                    }
                }
            }
        } catch (Throwable v7) {
        }
        return v7;
    }

Method android.support.v4.graphics.TypefaceCompatUtil.copyToFile() calling method java.io.FileOutputStream.<init>()


    public static boolean copyToFile(java.io.File p9, java.io.InputStream p10)
    {
        int v5_0 = 0;
        java.io.FileOutputStream v2 = 0;
        try {
            java.io.FileOutputStream v3_1 = new java.io.FileOutputStream(p9, 0);
            try {
                byte[] v0 = new byte[1024];
            } catch (int v5_1) {
                v2 = v3_1;
                android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v2);
                throw v5_1;
            } catch (java.io.IOException v1) {
                v2 = v3_1;
                android.util.Log.e("TypefaceCompatUtil", new StringBuilder().append("Error copying resource contents to temp file: ").append(v1.getMessage()).toString());
                android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v2);
                return v5_0;
            }
            while(true) {
                int v4 = p10.read(v0);
                if (v4 == -1) {
                    break;
                }
                v3_1.write(v0, 0, v4);
            }
            v5_0 = 1;
            android.support.v4.graphics.TypefaceCompatUtil.closeQuietly(v3_1);
            return v5_0;
        } catch (int v5_1) {
        } catch (java.io.IOException v1) {
        }
    }

Method gnu.mapping.OutPort.setLogFile() calling method java.io.FileWriter.<init>()


    public static void setLogFile(String p3)
    {
        if (gnu.mapping.OutPort.logFile != null) {
            gnu.mapping.OutPort.closeLogFile();
        }
        gnu.mapping.OutPort.logFile = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(p3)));
        if ((gnu.mapping.OutPort.outInitial.base instanceof gnu.mapping.LogWriter)) {
            ((gnu.mapping.LogWriter) gnu.mapping.OutPort.outInitial.base).setLogFile(gnu.mapping.OutPort.logFile);
        }
        if ((gnu.mapping.OutPort.errInitial.base instanceof gnu.mapping.LogWriter)) {
            ((gnu.mapping.LogWriter) gnu.mapping.OutPort.errInitial.base).setLogFile(gnu.mapping.OutPort.logFile);
        }
        return;
    }

Method gnu.mapping.LogWriter.setLogFile() calling method java.io.FileWriter.<init>()


    public void setLogFile(String p4)
    {
        this.log = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(p4)));
        return;
    }

Method kawa.repl.processArgs() calling method java.io.FileInputStream.<init>()


    public static int processArgs(String[] p45, int p46, int p47)
    {
        int v39 = 0;
        while (p46 < p47) {
            String v14_0 = p45[p46];
            if ((!v14_0.equals("-c")) && (!v14_0.equals("-e"))) {
                if (!v14_0.equals("-f")) {
                    if (!v14_0.startsWith("--script")) {
                        if (!v14_0.equals("\\")) {
                            if ((!v14_0.equals("-s")) && (!v14_0.equals("--"))) {
                                if (!v14_0.equals("-w")) {
                                    if (!v14_0.equals("-d")) {
                                        if ((!v14_0.equals("--target")) && (!v14_0.equals("target"))) {
                                            if (!v14_0.equals("-P")) {
                                                if (!v14_0.equals("-T")) {
                                                    if (!v14_0.equals("-C")) {
                                                        if ((!v14_0.equals("--output-format")) && (!v14_0.equals("--format"))) {
                                                            if (!v14_0.equals("--connect")) {
                                                                if (!v14_0.equals("--server")) {
                                                                    if (!v14_0.equals("--http-auto-handler")) {
                                                                        if (!v14_0.equals("--http-start")) {
                                                                            if (!v14_0.equals("--main")) {
                                                                                if (!v14_0.equals("--applet")) {
                                                                                    if (!v14_0.equals("--servlet")) {
                                                                                        if (!v14_0.equals("--debug-dump-zip")) {
                                                                                            if (!v14_0.equals("--debug-print-expr")) {
                                                                                                if (!v14_0.equals("--debug-print-final-expr")) {
                                                                                                    if (!v14_0.equals("--debug-error-prints-stack-trace")) {
                                                                                                        if (!v14_0.equals("--debug-warning-prints-stack-trace")) {
                                                                                                            if ((!v14_0.equals("--module-nonstatic")) && (!v14_0.equals("--no-module-static"))) {
                                                                                                                if (!v14_0.equals("--module-static")) {
                                                                                                                    if (!v14_0.equals("--module-static-run")) {
                                                                                                                        if ((!v14_0.equals("--no-inline")) && (!v14_0.equals("--inline=none"))) {
                                                                                                                            if (!v14_0.equals("--no-console")) {
                                                                                                                                if (!v14_0.equals("--inline")) {
                                                                                                                                    if (!v14_0.equals("--cps")) {
                                                                                                                                        if (!v14_0.equals("--full-tailcalls")) {
                                                                                                                                            if (!v14_0.equals("--no-full-tailcalls")) {
                                                                                                                                                if (!v14_0.equals("--pedantic")) {
                                                                                                                                                    if (!v14_0.equals("--help")) {
                                                                                                                                                        if (!v14_0.equals("--author")) {
                                                                                                                                                            if (!v14_0.equals("--version")) {
                                                                                                                                                                if ((v14_0.length() <= 0) || (v14_0.charAt(0) != 45)) {
                                                                                                                                                                    if (!gnu.expr.ApplicationMainSupport.processSetProperty(v14_0)) {
                                                                                                                                                                        break;
                                                                                                                                                                    }
                                                                                                                                                                } else {
                                                                                                                                                                    String v28 = v14_0;
                                                                                                                                                                    if ((v28.length() > 2) && (v28.charAt(0) == 45)) {
                                                                                                                                                                        int v3_53;
                                                                                                                                                                        if (v28.charAt(1) != 45) {
                                                                                                                                                                            v3_53 = 1;
                                                                                                                                                                        } else {
                                                                                                                                                                            v3_53 = 2;
                                                                                                                                                                        }
                                                                                                                                                                        v28 = v28.substring(v3_53);
                                                                                                                                                                    }
                                                                                                                                                                    gnu.expr.Language v25 = gnu.expr.Language.getInstance(v28);
                                                                                                                                                                    if (v25 == null) {
                                                                                                                                                                        String v30;
                                                                                                                                                                        int v19 = v28.indexOf("=");
                                                                                                                                                                        if (v19 >= 0) {
                                                                                                                                                                            v30 = v28.substring((v19 + 1));
                                                                                                                                                                            v28 = v28.substring(0, v19);
                                                                                                                                                                        } else {
                                                                                                                                                                            v30 = 0;
                                                                                                                                                                        }
                                                                                                                                                                        if ((!v28.startsWith("no-")) || (v28.length() <= 3)) {
                                                                                                                                                                            int v42 = 0;
                                                                                                                                                                        } else {
                                                                                                                                                                            v42 = 1;
                                                                                                                                                                        }
                                                                                                                                                                        if ((v30 == null) && (v42 != 0)) {
                                                                                                                                                                            v30 = "no";
                                                                                                                                                                            v28 = v28.substring(3);
                                                                                                                                                                        }
                                                                                                                                                                        String v27 = gnu.expr.Compilation.options.set(v28, v30);
                                                                                                                                                                        if (v27 != null) {
                                                                                                                                                                            if ((v42 != 0) && (v27 == "unknown option name")) {
                                                                                                                                                                                v27 = new StringBuilder().append("both \'--no-\' prefix and \'=").append(v30).append("\' specified").toString();
                                                                                                                                                                            }
                                                                                                                                                                            if (v27 != "unknown option name") {
                                                                                                                                                                                System.err.println(new StringBuilder().append("kawa: bad option \'").append(v14_0).append("\': ").append(v27).toString());
                                                                                                                                                                                System.exit(-1);
                                                                                                                                                                            } else {
                                                                                                                                                                                kawa.repl.bad_option(v14_0);
                                                                                                                                                                            }
                                                                                                                                                                        }
                                                                                                                                                                    } else {
                                                                                                                                                                        if (kawa.repl.previousLanguage != null) {
                                                                                                                                                                            gnu.expr.Language.setCurrentLanguage(v25);
                                                                                                                                                                        } else {
                                                                                                                                                                            gnu.expr.Language.setDefaults(v25);
                                                                                                                                                                        }
                                                                                                                                                                        kawa.repl.previousLanguage = v25;
                                                                                                                                                                    }
                                                                                                                                                                }
                                                                                                                                                            } else {
                                                                                                                                                                System.out.print("Kawa ");
                                                                                                                                                                System.out.print(kawa.Version.getVersion());
                                                                                                                                                                System.out.println();
                                                                                                                                                                System.out.println("Copyright (C) 2009 Per Bothner");
                                                                                                                                                                v39 = 1;
                                                                                                                                                            }
                                                                                                                                                        } else {
                                                                                                                                                            System.out.println("Per Bothner <per@bothner.com>");
                                                                                                                                                            System.exit(0);
                                                                                                                                                        }
                                                                                                                                                    } else {
                                                                                                                                                        kawa.repl.printOptions(System.out);
                                                                                                                                                        System.exit(0);
                                                                                                                                                    }
                                                                                                                                                } else {
                                                                                                                                                    gnu.expr.Language.requirePedantic = 1;
                                                                                                                                                }
                                                                                                                                            } else {
                                                                                                                                                gnu.expr.Compilation.defaultCallConvention = 1;
                                                                                                                                            }
                                                                                                                                        } else {
                                                                                                                                            gnu.expr.Compilation.defaultCallConvention = 3;
                                                                                                                                        }
                                                                                                                                    } else {
                                                                                                                                        gnu.expr.Compilation.defaultCallConvention = 4;
                                                                                                                                    }
                                                                                                                                } else {
                                                                                                                                    gnu.expr.Compilation.inlineOk = 1;
                                                                                                                                }
                                                                                                                            } else {
                                                                                                                                kawa.repl.noConsole = 1;
                                                                                                                            }
                                                                                                                        } else {
                                                                                                                            gnu.expr.Compilation.inlineOk = 0;
                                                                                                                        }
                                                                                                                    } else {
                                                                                                                        gnu.expr.Compilation.moduleStatic = 2;
                                                                                                                    }
                                                                                                                } else {
                                                                                                                    gnu.expr.Compilation.moduleStatic = 1;
                                                                                                                }
                                                                                                            } else {
                                                                                                                gnu.expr.Compilation.moduleStatic = -1;
                                                                                                            }
                                                                                                        } else {
                                                                                                            gnu.text.SourceMessages.debugStackTraceOnWarning = 1;
                                                                                                        }
                                                                                                    } else {
                                                                                                        gnu.text.SourceMessages.debugStackTraceOnError = 1;
                                                                                                    }
                                                                                                } else {
                                                                                                    gnu.expr.Compilation.debugPrintFinalExpr = 1;
                                                                                                }
                                                                                            } else {
                                                                                                gnu.expr.Compilation.debugPrintExpr = 1;
                                                                                            }
                                                                                        } else {
                                                                                            gnu.expr.ModuleExp.dumpZipPrefix = "kawa-zip-dump-";
                                                                                        }
                                                                                    } else {
                                                                                        kawa.repl.defaultParseOptions = (kawa.repl.defaultParseOptions | 32);
                                                                                        gnu.kawa.servlet.HttpRequestContext.importServletDefinitions = 2;
                                                                                    }
                                                                                } else {
                                                                                    kawa.repl.defaultParseOptions = (kawa.repl.defaultParseOptions | 16);
                                                                                }
                                                                            } else {
                                                                                gnu.expr.Compilation.generateMainDefault = 1;
                                                                            }
                                                                        } else {
                                                                            p46++;
                                                                            if (p46 >= p47) {
                                                                                kawa.repl.bad_option("missing httpd port argument");
                                                                            }
                                                                            System.err.println("kawa: HttpServer classes not found");
                                                                            System.exit(-1);
                                                                        }
                                                                    } else {
                                                                        p46 += 2;
                                                                        if (p46 >= p47) {
                                                                            kawa.repl.bad_option(v14_0);
                                                                        }
                                                                        System.err.println("kawa: HttpServer classes not found");
                                                                        System.exit(-1);
                                                                    }
                                                                } else {
                                                                    kawa.repl.getLanguage();
                                                                    int v46_1 = (p46 + 1);
                                                                    if (v46_1 == p47) {
                                                                        kawa.repl.bad_option(v14_0);
                                                                    }
                                                                    int v31_0;
                                                                    if (!p45[v46_1].equals("-")) {
                                                                        try {
                                                                            v31_0 = Integer.parseInt(p45[v46_1]);
                                                                        } catch (java.io.IOException v21) {
                                                                            kawa.repl.bad_option("--server port#");
                                                                            v31_0 = -1;
                                                                        }
                                                                        java.net.ServerSocket v41 = new java.net.ServerSocket;
                                                                        v41(v31_0);
                                                                        System.err.println(new StringBuilder().append("Listening on port ").append(v41.getLocalPort()).toString());
                                                                        while(true) {
                                                                            System.err.print("waiting ... ");
                                                                            System.err.flush();
                                                                            java.net.Socket v16 = v41.accept();
                                                                            System.err.println(new StringBuilder().append("got connection from ").append(v16.getInetAddress()).append(" port:").append(v16.getPort()).toString());
                                                                            kawa.TelnetRepl.serve(gnu.expr.Language.getDefaultLanguage(), v16);
                                                                        }
                                                                    } else {
                                                                        v31_0 = 0;
                                                                    }
                                                                    try {
                                                                    } catch (java.io.IOException v21_0) {
                                                                        throw new Error(v21_0.toString());
                                                                    }
                                                                }
                                                            } else {
                                                                p46++;
                                                                if (p46 == p47) {
                                                                    kawa.repl.bad_option(v14_0);
                                                                }
                                                                int v31_2;
                                                                if (!p45[p46].equals("-")) {
                                                                    try {
                                                                        v31_2 = Integer.parseInt(p45[p46]);
                                                                    } catch (java.io.IOException v21) {
                                                                        kawa.repl.bad_option("--connect port#");
                                                                        v31_2 = -1;
                                                                    }
                                                                    java.net.Socket v38 = new java.net.Socket;
                                                                    v38(java.net.InetAddress.getByName(0), v31_2);
                                                                    kawa.Telnet v17 = new kawa.Telnet;
                                                                    v17(v38, 1);
                                                                    kawa.TelnetInputStream v36 = v17.getInputStream();
                                                                    java.io.PrintStream v32 = new java.io.PrintStream;
                                                                    v32(v17.getOutputStream(), 1);
                                                                    System.setIn(v36);
                                                                    System.setOut(v32);
                                                                    System.setErr(v32);
                                                                    p46++;
                                                                } else {
                                                                    v31_2 = 0;
                                                                }
                                                                try {
                                                                } catch (java.io.IOException v21_1) {
                                                                    v21_1.printStackTrace(System.err);
                                                                    throw new Error(v21_1.toString());
                                                                }
                                                            }
                                                        } else {
                                                            p46++;
                                                            if (p46 == p47) {
                                                                kawa.repl.bad_option(v14_0);
                                                            }
                                                            kawa.Shell.setDefaultFormat(p45[p46]);
                                                        }
                                                    } else {
                                                        int v46_2 = (p46 + 1);
                                                        if (v46_2 == p47) {
                                                            kawa.repl.bad_option(v14_0);
                                                        }
                                                        kawa.repl.compileFiles(p45, v46_2, p47);
                                                        int v3_46 = -1;
                                                        return v3_46;
                                                    }
                                                } else {
                                                    p46++;
                                                    if (p46 == p47) {
                                                        kawa.repl.bad_option(v14_0);
                                                    }
                                                    kawa.repl.compilationTopname = p45[p46];
                                                }
                                            } else {
                                                p46++;
                                                if (p46 == p47) {
                                                    kawa.repl.bad_option(v14_0);
                                                }
                                                gnu.expr.Compilation.classPrefixDefault = p45[p46];
                                            }
                                        } else {
                                            p46++;
                                            if (p46 == p47) {
                                                kawa.repl.bad_option(v14_0);
                                            }
                                            String v14_1 = p45[p46];
                                            if (v14_1.equals("7")) {
                                                gnu.expr.Compilation.defaultClassFileVersion = 3342336;
                                            }
                                            if ((!v14_1.equals("6")) && (!v14_1.equals("1.6"))) {
                                                if ((!v14_1.equals("5")) && (!v14_1.equals("1.5"))) {
                                                    if (!v14_1.equals("1.4")) {
                                                        if (!v14_1.equals("1.3")) {
                                                            if (!v14_1.equals("1.2")) {
                                                                if (!v14_1.equals("1.1")) {
                                                                    kawa.repl.bad_option(v14_1);
                                                                } else {
                                                                    gnu.expr.Compilation.defaultClassFileVersion = 2949123;
                                                                }
                                                            } else {
                                                                gnu.expr.Compilation.defaultClassFileVersion = 3014656;
                                                            }
                                                        } else {
                                                            gnu.expr.Compilation.defaultClassFileVersion = 3080192;
                                                        }
                                                    } else {
                                                        gnu.expr.Compilation.defaultClassFileVersion = 3145728;
                                                    }
                                                } else {
                                                    gnu.expr.Compilation.defaultClassFileVersion = 3211264;
                                                }
                                            } else {
                                                gnu.expr.Compilation.defaultClassFileVersion = 3276800;
                                            }
                                        }
                                    } else {
                                        p46++;
                                        if (p46 == p47) {
                                            kawa.repl.bad_option(v14_0);
                                        }
                                        gnu.expr.ModuleManager.getInstance().setCompilationDirectory(p45[p46]);
                                    }
                                } else {
                                    p46++;
                                    kawa.repl.getLanguage();
                                    kawa.repl.setArgs(p45, p46);
                                    kawa.repl.checkInitFile();
                                    kawa.repl.startGuiConsole();
                                    v39 = 1;
                                }
                            } else {
                                int v46_3 = (p46 + 1);
                                kawa.repl.getLanguage();
                                kawa.repl.setArgs(p45, v46_3);
                                kawa.repl.checkInitFile();
                                kawa.Shell.run(gnu.expr.Language.getDefaultLanguage(), gnu.mapping.Environment.getCurrent());
                                v3_46 = -1;
                                return v3_46;
                            }
                        } else {
                            int v46_4 = (p46 + 1);
                            if (v46_4 == p47) {
                                kawa.repl.bad_option(v14_0);
                            }
                            String v22_0 = p45[v46_4];
                            gnu.text.SourceMessages v7_1 = new gnu.text.SourceMessages();
                            try {
                                java.io.BufferedInputStream v23 = new java.io.BufferedInputStream;
                                v23(new java.io.FileInputStream(v22_0));
                                int v15_0 = v23.read();
                            } catch (java.io.IOException v21_3) {
                                kawa.Shell.printError(v21_3, v7_1, gnu.mapping.OutPort.errDefault());
                                System.exit(1);
                                v3_46 = -1;
                                return v3_46;
                            }
                            if (v15_0 == 35) {
                                StringBuffer v34 = new StringBuffer;
                                v34(100);
                                java.util.Vector v44 = new java.util.Vector;
                                v44(10);
                                int v43 = 0;
                                while ((v15_0 != 10) && ((v15_0 != 13) && (v15_0 >= 0))) {
                                    v15_0 = v23.read();
                                }
                                while(true) {
                                    int v15_1 = v23.read();
                                    if (v15_1 < 0) {
                                        System.err.println(new StringBuilder().append("unexpected end-of-file processing argument line for: \'").append(v22_0).append(39).toString());
                                        System.exit(-1);
                                    }
                                    if (v43 != 0) {
                                        if (v43 != 92) {
                                            if (v15_1 == v43) {
                                                v43 = 0;
                                            }
                                        } else {
                                            v43 = 0;
                                        }
                                    } else {
                                        if ((v15_1 != 92) && ((v15_1 != 39) && (v15_1 != 34))) {
                                            if ((v15_1 == 10) || (v15_1 == 13)) {
                                                break;
                                            }
                                            if ((v15_1 == 32) || (v15_1 == 9)) {
                                                if (v34.length() > 0) {
                                                    v44.addElement(v34.toString());
                                                    v34.setLength(0);
                                                }
                                            }
                                        } else {
                                            v43 = v15_1;
                                        }
                                    }
                                    v34.append(((char) v15_1));
                                }
                                if (v34.length() > 0) {
                                    v44.addElement(v34.toString());
                                }
                                int v29 = v44.size();
                                if (v29 <= 0) {
                                    kawa.repl.getLanguageFromFilenameExtension(v22_0);
                                    gnu.mapping.InPort v10 = gnu.mapping.InPort.openFile(v23, v22_0);
                                    kawa.repl.setArgs(p45, (v46_4 + 1));
                                    kawa.repl.checkInitFile();
                                    gnu.mapping.OutPort v20 = gnu.mapping.OutPort.errDefault();
                                    java.io.IOException v21_2 = kawa.Shell.run(gnu.expr.Language.getDefaultLanguage(), gnu.mapping.Environment.getCurrent(), v10, gnu.mapping.OutPort.outDefault(), 0, v7_1);
                                    v7_1.printAll(v20, 20);
                                    if (v21_2 == null) {
                                    } else {
                                        if (((v21_2 instanceof gnu.text.SyntaxException)) && (((gnu.text.SyntaxException) v21_2).getMessages() == v7_1)) {
                                            System.exit(1);
                                        }
                                        throw v21_2;
                                    }
                                } else {
                                    String v0_45 = new String[v29];
                                    String[] v33 = v0_45;
                                    v44.copyInto(v33);
                                    int v24 = kawa.repl.processArgs(v33, 0, v29);
                                    if ((v24 < 0) || (v24 >= v29)) {
                                    } else {
                                        System.err.println(new StringBuilder().append("").append((v29 - v24)).append(" unused meta args").toString());
                                    }
                                }
                            }
                        }
                    } else {
                        String v18 = v14_0.substring(8);
                        int v46_5 = (p46 + 1);
                        int v37 = 0;
                        if (v18.length() > 0) {
                            try {
                                v37 = Integer.parseInt(v18);
                            } catch (java.io.IOException v21) {
                                v46_5 = p47;
                            }
                        }
                        if (v46_5 == p47) {
                            kawa.repl.bad_option(v14_0);
                        }
                        String v22_1 = p45[v46_5];
                        kawa.repl.getLanguageFromFilenameExtension(v22_1);
                        kawa.repl.setArgs(p45, (v46_5 + 1));
                        kawa.repl.checkInitFile();
                        if (!kawa.Shell.runFileOrClass(v22_1, 1, v37)) {
                            System.exit(-1);
                        }
                        v3_46 = -1;
                        return v3_46;
                    }
                } else {
                    p46++;
                    if (p46 == p47) {
                        kawa.repl.bad_option(v14_0);
                    }
                    String v22_2 = p45[p46];
                    kawa.repl.getLanguageFromFilenameExtension(v22_2);
                    kawa.repl.setArgs(p45, (p46 + 1));
                    kawa.repl.checkInitFile();
                    if (!kawa.Shell.runFileOrClass(v22_2, 1, 0)) {
                        System.exit(-1);
                    }
                    v39 = 1;
                }
            } else {
                p46++;
                if (p46 == p47) {
                    kawa.repl.bad_option(v14_0);
                }
                kawa.repl.getLanguage();
                kawa.repl.setArgs(p45, (p46 + 1));
                if (v14_0.equals("-c")) {
                    kawa.repl.checkInitFile();
                }
                gnu.expr.Language v2 = gnu.expr.Language.getDefaultLanguage();
                gnu.text.SourceMessages v7_3 = new gnu.text.SourceMessages();
                java.io.IOException v21_4 = kawa.Shell.run(v2, gnu.mapping.Environment.getCurrent(), new gnu.mapping.CharArrayInPort(p45[p46]), gnu.mapping.OutPort.outDefault(), 0, v7_3);
                if (v21_4 != null) {
                    kawa.Shell.printError(v21_4, v7_3, gnu.mapping.OutPort.errDefault());
                    System.exit(-1);
                }
                v39 = 1;
            }
        }
        if (v39 == 0) {
            v3_46 = p46;
        } else {
            v3_46 = -1;
        }
        return v3_46;
    }

Method android.support.v4.graphics.TypefaceCompatApi21Impl.createFromFontInfo() calling method java.io.FileInputStream.<init>()


    public android.graphics.Typeface createFromFontInfo(android.content.Context p12, android.os.CancellationSignal p13, android.support.v4.provider.FontsContractCompat$FontInfo[] p14, int p15)
    {
        Throwable v6_2;
        if (p14.length >= 1) {
            try {
                android.os.ParcelFileDescriptor v4 = p12.getContentResolver().openFileDescriptor(this.findBestInfo(p14, p15).getUri(), "r", p13);
                try {
                    java.io.File v2 = this.getFile(v4);
                } catch (Throwable v6_6) {
                    Throwable v7_4 = 0;
                    if (v4 != null) {
                        if (v7_4 == null) {
                            v4.close();
                        } else {
                            v4.close();
                        }
                    }
                    throw v6_6;
                } catch (Throwable v6_5) {
                    try {
                        throw v6_5;
                    } catch (Throwable v7_3) {
                        v7_4 = v6_5;
                        v6_6 = v7_3;
                    }
                }
                if ((v2 != null) && (v2.canRead())) {
                    v6_2 = android.graphics.Typeface.createFromFile(v2);
                    if (v4 != null) {
                        if (0 == 0) {
                            v4.close();
                        } else {
                            try {
                                v4.close();
                            } catch (Throwable v7_1) {
                                0.addSuppressed(v7_1);
                            }
                        }
                    }
                } else {
                    java.io.FileInputStream v3_1 = new java.io.FileInputStream(v4.getFileDescriptor());
                    Throwable v7_2 = 0;
                    try {
                        v6_2 = super.createFromInputStream(p12, v3_1);
                    } catch (Throwable v7_2) {
                        throw v7_2;
                    } catch (Throwable v6_4) {
                        if (v3_1 != null) {
                            if (v7_2 == null) {
                                v3_1.close();
                            } else {
                                v3_1.close();
                            }
                        }
                        throw v6_4;
                    }
                    if (v3_1 != null) {
                        if (0 == 0) {
                            v3_1.close();
                        } else {
                            try {
                                v3_1.close();
                            } catch (Throwable v9_1) {
                                0.addSuppressed(v9_1);
                            }
                        }
                    }
                    if (v4 != null) {
                        if (0 == 0) {
                            v4.close();
                        } else {
                            try {
                                v4.close();
                            } catch (Throwable v7_5) {
                                0.addSuppressed(v7_5);
                            }
                        }
                    }
                }
            } catch (java.io.IOException v1) {
                v6_2 = 0;
            }
        } else {
            v6_2 = 0;
        }
        return v6_2;
    }

Method gnu.text.FilePath.openInputStream() calling method java.io.FileInputStream.<init>()


    public java.io.InputStream openInputStream()
    {
        return new java.io.FileInputStream(this.file);
    }

Method gnu.bytecode.dump.main() calling method java.io.FileInputStream.<init>()


    public static void main(String[] p27)
    {
        int v4 = p27.length;
        gnu.bytecode.ClassTypeWriter v19 = new gnu.bytecode.ClassTypeWriter;
        v19(0, System.out, 0);
        if (v4 == 0) {
            gnu.bytecode.dump.usage(System.err);
        }
        int v14 = 0;
        while (v14 < v4) {
            String v12 = p27[v14];
            if ((!v12.equals("-verbose")) && (!v12.equals("--verbose"))) {
                try {
                    int v15_0;
                    if (!gnu.bytecode.dump.uriSchemeSpecified(v12)) {
                        try {
                            v15_0 = new java.io.FileInputStream(v12);
                        } catch (java.util.zip.ZipException v8) {
                            try {
                                ClassLoader v18 = gnu.bytecode.ObjectType.getContextClass(v12).getClassLoader();
                            } catch (java.io.FileNotFoundException v9) {
                                v18 = gnu.bytecode.ObjectType.getContextClassLoader();
                            }
                            try {
                                java.net.URL v21 = v18.getResource(new StringBuilder().append(v12.replace(46, 47)).append(".class").toString());
                                v15_0 = v21.openConnection().getInputStream();
                                v12 = v21.toString();
                            } catch (Throwable v10) {
                                System.err.print("Can\'t find .class file for class ");
                                System.err.print(v12);
                                System.err.print(" - ");
                                System.err.println(v10);
                                System.exit(-1);
                                v15_0 = 0;
                            }
                        }
                    } else {
                        int v16 = v12.startsWith("jar:");
                        if (v16 != 0) {
                            String v20_0 = v12.substring(4);
                            if (!gnu.bytecode.dump.uriSchemeSpecified(v20_0)) {
                                int v11_0 = v20_0.indexOf(33);
                                if (v11_0 >= 0) {
                                    int v24_3 = new java.io.File;
                                    v24_3(v20_0.substring(0, v11_0));
                                    v12 = new StringBuilder().append("jar:").append(v24_3.toURI().toURL().toString()).append(v20_0.substring(v11_0)).toString();
                                }
                            }
                            if (v20_0.indexOf("!/") < 0) {
                                int v11_1 = v12.lastIndexOf(33);
                                if (v11_1 > 0) {
                                    if (v12.indexOf(47, v11_1) < 0) {
                                        v12 = new StringBuilder().append(v12.substring(0, (v11_1 + 1))).append(47).append(v12.substring((v11_1 + 1)).replace(46, 47)).append(".class").toString();
                                    }
                                } else {
                                    v16 = 0;
                                }
                            }
                        }
                        try {
                            java.net.URL v23 = new java.net.URL;
                            v23(v12);
                            try {
                                v15_0 = v23.openConnection().getInputStream();
                            } catch (java.util.zip.ZipException v8_0) {
                                if (v16 != 0) {
                                    String v13_2 = v23.getFile();
                                    int v22 = v13_2.lastIndexOf(33);
                                    if (v22 > 0) {
                                        v13_2 = v13_2.substring(0, v22);
                                    }
                                    try {
                                        int v24_30 = new java.net.URL;
                                        v24_30(v13_2);
                                        v24_30.openConnection().getInputStream();
                                    } catch (java.io.FileNotFoundException v9) {
                                        System.err.print("Jar File for URL ");
                                        System.err.print(v13_2);
                                        System.err.println(" not found.");
                                        System.exit(-1);
                                    }
                                }
                                throw v8_0;
                            }
                        } catch (java.util.zip.ZipException v8) {
                            System.err.print("File for URL ");
                            System.err.print(v12);
                            System.err.println(" not found.");
                            System.exit(-1);
                            v15_0 = 0;
                        } catch (java.util.zip.ZipException v8_1) {
                            System.err.print("Error opening zip archive ");
                            System.err.print(v12);
                            System.err.println(" not found.");
                            v8_1.printStackTrace();
                            if (v8_1.getCause() != null) {
                                v8_1.getCause().printStackTrace();
                            }
                            System.exit(-1);
                            v15_0 = 0;
                        }
                    }
                    gnu.bytecode.dump.process(v15_0, v12, v19);
                } catch (java.io.IOException v7) {
                    v7.printStackTrace();
                    System.err.println("caught ");
                    System.err.print(v7);
                    System.exit(-1);
                }
            } else {
                v19.setFlags(15);
            }
            v14++;
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.AppInvHTTPD.copyFile() calling method java.io.FileInputStream.<init>()


    private void copyFile(java.io.File p7, java.io.File p8)
    {
        try {
            java.io.FileInputStream v2_1 = new java.io.FileInputStream(p7);
            java.io.FileOutputStream v4_1 = new java.io.FileOutputStream(p8);
            byte[] v0 = new byte[32768];
        } catch (java.io.IOException v1) {
            v1.printStackTrace();
            return;
        }
        while(true) {
            int v3 = v2_1.read(v0);
            if (v3 <= 0) {
                break;
            }
            v4_1.write(v0, 0, v3);
        }
        v2_1.close();
        v4_1.close();
        return;
    }

Method org.acra.collector.LogFileCollector.collectLogFile() calling method java.io.FileInputStream.<init>()


    public static String collectLogFile(android.content.Context p6, String p7, int p8)
    {
        java.io.BufferedReader v1_0;
        org.acra.util.BoundedLinkedList v2_1 = new org.acra.util.BoundedLinkedList(p8);
        if (!p7.contains("/")) {
            v1_0 = new java.io.BufferedReader(new java.io.InputStreamReader(p6.openFileInput(p7)), 1024);
        } else {
            v1_0 = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(p7)), 1024);
        }
        String v0 = v1_0.readLine();
        while (v0 != null) {
            v2_1.add(new StringBuilder().append(v0).append("\n").toString());
            v0 = v1_0.readLine();
        }
        return v2_1.toString();
    }

Method gnu.kawa.util.PreProcess.filter() calling method java.io.FileInputStream.<init>()


    public void filter(String p5)
    {
        if (this.filter(p5, new java.io.BufferedInputStream(new java.io.FileInputStream(p5)))) {
            java.io.FileOutputStream v0_1 = new java.io.FileOutputStream(p5);
            v0_1.write(this.resultBuffer, 0, this.resultLength);
            v0_1.close();
            System.err.println(new StringBuilder().append("Pre-processed ").append(p5).toString());
        }
        return;
    }

Method gnu.kawa.util.FileInfo.scan() calling method java.io.FileInputStream.<init>()


    public void scan()
    {
        if (!this.scanned) {
            this.scanned = 1;
            this.fin = new java.io.FileInputStream(this.file);
            this.in = new gnu.mapping.InPort(new java.io.BufferedInputStream(this.fin));
            this.oldNavbarText = new StringBuffer();
            this.newNavbarText = new StringBuffer();
            if (this.writeNeeded) {
                this.bout = new java.io.ByteArrayOutputStream();
                this.cout = new gnu.mapping.OutPort(this.bout);
            }
            int v4 = 0;
            int v3 = 0;
            java.util.Vector v2_1 = new java.util.Vector();
            while(true) {
                String v5 = this.in.readLine();
                if (v5 == null) {
                    break;
                }
                if (v4 == 0) {
                    if (v5.indexOf("<!--start-generated-navbar-->") >= 0) {
                        v4 = 1;
                    }
                } else {
                    if (v5.indexOf("<!--end-generated-navbar-->") >= 0) {
                        break;
                    }
                    this.oldNavbarText.append(v5);
                    this.oldNavbarText.append(10);
                    if (v3 != 0) {
                        if (v5.indexOf("<!--end-children-toc-->") < 0) {
                            java.util.regex.Matcher v1 = gnu.kawa.util.FileInfo.childPat.matcher(v5);
                            if (v1.find()) {
                                v2_1.add(v1.group());
                            }
                            java.util.regex.Matcher v9 = gnu.kawa.util.FileInfo.parentPat.matcher(v5);
                            if ((v9.find()) && (this.parentName == null)) {
                                this.parentName = v9.group(1);
                            }
                        } else {
                            v3 = 0;
                        }
                    }
                    if (v5.indexOf("<!--start-children-toc-->") >= 0) {
                        v3 = 1;
                    }
                }
                if ((this.writeNeeded) && (v4 == 0)) {
                    this.cout.println(v5);
                }
            }
            String[] v0 = new String[v2_1.size()];
            this.nchildren = v0.length;
            v2_1.copyInto(v0);
            this.childLinkText = v0;
            if (!this.writeNeeded) {
                this.in.close();
            }
            if (this.parentName == null) {
                return;
            } else {
                gnu.kawa.util.FileInfo v8 = gnu.kawa.util.FileInfo.find(new java.io.File(this.file.toURI().resolve(this.parentName)));
                v8.scan();
                this.parent = v8;
                return;
            }
        }
        return;
    }

Method gnu.bytecode.ZipArchive.main() calling method java.io.FileInputStream.<init>()


    public static void main(String[] p20)
    {
        if (p20.length < 2) {
            gnu.bytecode.ZipArchive.usage();
        }
        String v4 = p20[0];
        String v2 = p20[1];
        try {
            if ((!v4.equals("t")) && ((!v4.equals("p")) && (!v4.equals("x")))) {
                if (!v4.equals("q")) {
                    gnu.bytecode.ZipArchive.usage();
                } else {
                    int v17_32 = new java.io.FileOutputStream;
                    v17_32(v2);
                    java.util.zip.ZipOutputStream v13_3 = new java.util.zip.ZipOutputStream(v17_32);
                    int v8_1 = 2;
                    while (v8_1 < p20.length) {
                        java.io.File v9_3 = new java.io.File(p20[v8_1]);
                        if (v9_3.exists()) {
                            if (v9_3.canRead()) {
                                int v12 = ((int) v9_3.length());
                                java.io.FileInputStream v7_1 = new java.io.FileInputStream(v9_3);
                                byte[] v5 = new byte[v12];
                                if (v7_1.read(v5) == v12) {
                                    v7_1.close();
                                    java.util.zip.ZipEntry v14_1 = new java.util.zip.ZipEntry(p20[v8_1]);
                                    v14_1.setSize(((long) v12));
                                    v14_1.setTime(v9_3.lastModified());
                                    v13_3.putNextEntry(v14_1);
                                    v13_3.write(v5, 0, v12);
                                    v8_1++;
                                } else {
                                    throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - read error").toString());
                                }
                            } else {
                                throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - not readable").toString());
                            }
                        } else {
                            throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - not found").toString());
                        }
                    }
                    v13_3.close();
                }
            } else {
                java.io.PrintStream v11 = System.out;
                byte[] v3 = new byte[1024];
                if (p20.length != 2) {
                    java.util.zip.ZipOutputStream v13_1 = new java.util.zip.ZipFile(v2);
                    int v8_0 = 2;
                    while (v8_0 < p20.length) {
                        String v10_0 = p20[v8_0];
                        java.util.zip.ZipEntry v15_0 = v13_1.getEntry(v10_0);
                        if (v15_0 != null) {
                            if (!v4.equals("t")) {
                                if (!v4.equals("p")) {
                                    gnu.bytecode.ZipArchive.copy(v13_1.getInputStream(v15_0), v10_0, v3);
                                } else {
                                    gnu.bytecode.ZipArchive.copy(v13_1.getInputStream(v15_0), v11, v3);
                                }
                            } else {
                                v11.print(v10_0);
                                v11.print(" size: ");
                                v11.println(v15_0.getSize());
                            }
                        } else {
                            System.err.println(new StringBuilder().append("zipfile ").append(v2).append(":").append(p20[v8_0]).append(" - not found").toString());
                            System.exit(-1);
                        }
                        v8_0++;
                    }
                } else {
                    int v17_19 = new java.io.FileInputStream;
                    v17_19(v2);
                    java.util.zip.ZipInputStream v16 = new java.util.zip.ZipInputStream;
                    v16(new java.io.BufferedInputStream(v17_19));
                    while(true) {
                        java.util.zip.ZipEntry v15_1 = v16.getNextEntry();
                        if (v15_1 == null) {
                            break;
                        }
                        String v10_1 = v15_1.getName();
                        if (!v4.equals("t")) {
                            if (!v4.equals("p")) {
                                gnu.bytecode.ZipArchive.copy(v16, v10_1, v3);
                            } else {
                                gnu.bytecode.ZipArchive.copy(v16, v11, v3);
                            }
                        } else {
                            v11.print(v10_1);
                            v11.print(" size: ");
                            v11.println(v15_1.getSize());
                        }
                    }
                }
            }
        } catch (java.io.IOException v6) {
            System.err.println(new StringBuilder().append("I/O Exception:  ").append(v6).toString());
        }
        return;
    }

Method gnu.bytecode.ListCodeSize.main() calling method java.io.FileInputStream.<init>()


    public static final void main(String[] p11)
    {
        if (p11.length == 0) {
            gnu.bytecode.ListCodeSize.usage();
        }
        String v2 = p11[0];
        try {
            java.io.FileInputStream v4_1 = new java.io.FileInputStream(v2);
            gnu.bytecode.ClassType v0_1 = new gnu.bytecode.ClassType();
            new gnu.bytecode.ClassFileInput(v0_1, v4_1);
        } catch (java.io.IOException v1) {
            System.err.println(new StringBuilder().append("File ").append(v2).append(" not found").toString());
            System.exit(-1);
            return;
        } catch (java.io.IOException v1) {
            System.err.println(v1);
            v1.printStackTrace();
            System.exit(-1);
            return;
        }
        if (p11.length != 1) {
            int v3 = 1;
            while (v3 < p11.length) {
                gnu.bytecode.Method v5_0 = v0_1.getMethods();
                while (v5_0 != null) {
                    StringBuffer v6_1 = new StringBuffer();
                    v6_1.append(v5_0.getName());
                    v5_0.listParameters(v6_1);
                    v6_1.append(v5_0.getReturnType().getName());
                    if (v6_1.toString().startsWith(p11[v3])) {
                        gnu.bytecode.ListCodeSize.print(v5_0);
                    }
                    v5_0 = v5_0.getNext();
                }
                v3++;
            }
            return;
        } else {
            gnu.bytecode.Method v5_1 = v0_1.getMethods();
            while (v5_1 != null) {
                gnu.bytecode.ListCodeSize.print(v5_1);
                v5_1 = v5_1.getNext();
            }
            return;
        }
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD.serveFile() calling method java.io.FileInputStream.<init>()


    public com.google.appinventor.components.runtime.util.NanoHTTPD$Response serveFile(String p41, java.util.Properties p42, java.io.File p43, boolean p44)
    {
        com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_0 = 0;
        if (!p43.isDirectory()) {
            v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
            v29_0(this, "500 Internal Server Error", "text/plain", "INTERNAL ERRROR: serveFile(): given homeDir is not a directory.");
        }
        if (v29_0 == null) {
            p41 = p41.trim().replace(java.io.File.separatorChar, 47);
            if (p41.indexOf(63) >= 0) {
                p41 = p41.substring(0, p41.indexOf(63));
            }
            if ((p41.startsWith("..")) || ((p41.endsWith("..")) || (p41.indexOf("../") >= 0))) {
                v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                v29_0(this, "403 Forbidden", "text/plain", "FORBIDDEN: Won\'t serve ../ for security reasons.");
            }
        }
        java.io.File v14_1 = new java.io.File(p43, p41);
        if ((v29_0 == null) && (!v14_1.exists())) {
            v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
            v29_0(this, "404 Not Found", "text/plain", "Error 404, file not found.");
        }
        if ((v29_0 != null) || (!v14_1.isDirectory())) {
            com.google.appinventor.components.runtime.util.NanoHTTPD$Response v30 = v29_0;
        } else {
            if (!p41.endsWith("/")) {
                p41 = new StringBuilder().append(p41).append("/").toString();
                v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                v29_0(this, "301 Moved Permanently", "text/html", new StringBuilder().append("<html><body>Redirected: <a href=\"").append(p41).append("\">").append(p41).append("</a></body></html>").toString());
                v29_0.addHeader("Location", p41);
            }
            if (v29_0 != null) {
            } else {
                StringBuilder v35_3 = new java.io.File;
                v35_3(v14_1, "index.html");
                if (!v35_3.exists()) {
                    StringBuilder v35_5 = new java.io.File;
                    v35_5(v14_1, "index.htm");
                    if (!v35_5.exists()) {
                        if ((!p44) || (!v14_1.canRead())) {
                            com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_1 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                            v29_1(this, "403 Forbidden", "text/plain", "FORBIDDEN: No directory listing.");
                            v30 = v29_1;
                        } else {
                            String[] v15 = v14_1.list();
                            String v25_0 = new StringBuilder().append("<html><body><h1>Directory ").append(p41).append("</h1><br/>").toString();
                            if (p41.length() > 1) {
                                String v34 = p41.substring(0, (p41.length() - 1));
                                int v31 = v34.lastIndexOf(47);
                                if ((v31 >= 0) && (v31 < v34.length())) {
                                    v25_0 = new StringBuilder().append(v25_0).append("<b><a href=\"").append(p41.substring(0, (v31 + 1))).append("\">..</a></b><br/>").toString();
                                }
                            }
                            if (v15 != null) {
                                int v19 = 0;
                                while (v19 < v15.length) {
                                    java.io.File v6_1 = new java.io.File(v14_1, v15[v19]);
                                    boolean v7 = v6_1.isDirectory();
                                    if (v7) {
                                        v25_0 = new StringBuilder().append(v25_0).append("<b>").toString();
                                        v15[v19] = new StringBuilder().append(v15[v19]).append("/").toString();
                                    }
                                    String v25_2 = new StringBuilder().append(v25_0).append("<a href=\"").append(this.encodeUri(new StringBuilder().append(p41).append(v15[v19]).toString())).append("\">").append(v15[v19]).append("</a>").toString();
                                    if (v6_1.isFile()) {
                                        String v25_4;
                                        long v22 = v6_1.length();
                                        String v25_3 = new StringBuilder().append(v25_2).append(" &nbsp;<font size=2>(").toString();
                                        if (v22 >= 1024) {
                                            if (v22 >= 1048576) {
                                                v25_4 = new StringBuilder().append(v25_3).append((v22 / 1048576)).append(".").append((((v22 % 1048576) / 10) % 100)).append(" MB").toString();
                                            } else {
                                                v25_4 = new StringBuilder().append(v25_3).append((v22 / 1024)).append(".").append((((v22 % 1024) / 10) % 100)).append(" KB").toString();
                                            }
                                        } else {
                                            v25_4 = new StringBuilder().append(v25_3).append(v22).append(" bytes").toString();
                                        }
                                        v25_2 = new StringBuilder().append(v25_4).append(")</font>").toString();
                                    }
                                    v25_0 = new StringBuilder().append(v25_2).append("<br/>").toString();
                                    if (v7) {
                                        v25_0 = new StringBuilder().append(v25_0).append("</b>").toString();
                                    }
                                    v19++;
                                }
                            }
                            com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_2 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                            v29_2(this, "200 OK", "text/html", new StringBuilder().append(v25_0).append("</body></html>").toString());
                            v30 = v29_2;
                        }
                    } else {
                        v14_1 = new java.io.File(p43, new StringBuilder().append(p41).append("/index.htm").toString());
                        v30 = v29_0;
                    }
                } else {
                    v14_1 = new java.io.File(p43, new StringBuilder().append(p41).append("/index.html").toString());
                    v30 = v29_0;
                }
            }
        }
        com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_3;
        if (v30 != null) {
            v29_3 = v30;
        } else {
            String v21 = 0;
            try {
                int v10 = v14_1.getCanonicalPath().lastIndexOf(46);
            } catch (java.io.IOException v20) {
                v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                v29_3(this, "403 Forbidden", "text/plain", "FORBIDDEN: Reading file failed.");
            }
            if (v10 >= 0) {
                v21 = ((String) com.google.appinventor.components.runtime.util.NanoHTTPD.theMimeTypes.get(v14_1.getCanonicalPath().substring((v10 + 1)).toLowerCase()));
            }
            if (v21 == null) {
                v21 = "application/octet-stream";
            }
            String v11 = Integer.toHexString(new StringBuilder().append(v14_1.getAbsolutePath()).append(v14_1.lastModified()).append("").append(v14_1.length()).toString().hashCode());
            long v32 = 0;
            long v12 = -1;
            String v28 = p42.getProperty("range");
            if ((v28 != null) && (v28.startsWith("bytes="))) {
                v28 = v28.substring("bytes=".length());
                int v24 = v28.indexOf(45);
                if (v24 > 0) {
                    try {
                        v32 = Long.parseLong(v28.substring(0, v24));
                        v12 = Long.parseLong(v28.substring((v24 + 1)));
                    } catch (StringBuilder v35) {
                    }
                }
            }
            long v16 = v14_1.length();
            try {
                if ((v28 == null) || (v32 < 0)) {
                    if (!v11.equals(p42.getProperty("if-none-match"))) {
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        String v36_67 = new java.io.FileInputStream;
                        v36_67(v14_1);
                        v29_3(this, "200 OK", v21, v36_67);
                        v29_3.addHeader("Content-Length", new StringBuilder().append("").append(v16).toString());
                        v29_3.addHeader("ETag", v11);
                    } else {
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        v29_3(this, "304 Not Modified", v21, "");
                    }
                } else {
                    if (v32 < v16) {
                        if (v12 < 0) {
                            v12 = (v16 - 1);
                        }
                        long v26 = ((v12 - v32) + 1);
                        if (v26 < 0) {
                            v26 = 0;
                        }
                        long v8 = v26;
                        com.google.appinventor.components.runtime.util.NanoHTTPD$2 v18 = new com.google.appinventor.components.runtime.util.NanoHTTPD$2;
                        v18(this, v14_1, v8);
                        v18.skip(v32);
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        v29_3(this, "206 Partial Content", v21, v18);
                        v29_3.addHeader("Content-Length", new StringBuilder().append("").append(v8).toString());
                        v29_3.addHeader("Content-Range", new StringBuilder().append("bytes ").append(v32).append("-").append(v12).append("/").append(v16).toString());
                        v29_3.addHeader("ETag", v11);
                    } else {
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        v29_3(this, "416 Requested Range Not Satisfiable", "text/plain", "");
                        v29_3.addHeader("Content-Range", new StringBuilder().append("bytes 0-0/").append(v16).toString());
                        v29_3.addHeader("ETag", v11);
                    }
                }
            } catch (java.io.IOException v20) {
            }
        }
        v29_3.addHeader("Accept-Ranges", "bytes");
        return v29_3;
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD$2.<init>() calling method java.io.FileInputStream.<init>()


    NanoHTTPD$2(com.google.appinventor.components.runtime.util.NanoHTTPD p2, java.io.File p3, long p4)
    {
        this.this$0 = p2;
        this.val$dataLen = p4;
        super(p3);
        return;
    }

Method com.google.appinventor.components.runtime.util.MediaUtil.openMedia() calling method java.io.FileInputStream.<init>()


    private static java.io.InputStream openMedia(com.google.appinventor.components.runtime.Form p4, String p5, com.google.appinventor.components.runtime.util.MediaUtil$MediaSource p6)
    {
        java.io.InputStream v0_0;
        switch (com.google.appinventor.components.runtime.util.MediaUtil$3.$SwitchMap$com$google$appinventor$components$runtime$util$MediaUtil$MediaSource[p6.ordinal()]) {
            case 1:
                v0_0 = com.google.appinventor.components.runtime.util.MediaUtil.getAssetsIgnoreCaseInputStream(p4, p5);
                break;
            case 2:
                p4.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                v0_0 = new java.io.FileInputStream(com.google.appinventor.components.runtime.util.MediaUtil.replAssetPath(p5));
                break;
            case 3:
                p4.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                v0_0 = new java.io.FileInputStream(p5);
                break;
            case 4:
                if (!com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p5)) {
                    v0_0 = new java.net.URL(p5).openStream();
                } else {
                    p4.assertPermission("android.permission.READ_EXTERNAL_STORAGE");
                }
            case 6:
                v0_0 = p4.getContentResolver().openInputStream(android.net.Uri.parse(p5));
                break;
            case 7:
                if (com.google.appinventor.components.runtime.util.SdkLevel.getLevel() < 12) {
                    v0_0 = android.provider.Contacts$People.openContactPhotoInputStream(p4.getContentResolver(), android.net.Uri.parse(p5));
                } else {
                    v0_0 = com.google.appinventor.components.runtime.util.HoneycombMR1Util.openContactPhotoInputStreamHelper(p4.getContentResolver(), android.net.Uri.parse(p5));
                }
                if (v0_0 != null) {
                } else {
                    throw new java.io.IOException(new StringBuilder().append("Unable to open contact photo ").append(p5).append(".").toString());
                }
                break;
            default:
                throw new java.io.IOException(new StringBuilder().append("Unable to open media ").append(p5).append(".").toString());
        }
        return v0_0;
    }

Method com.google.appinventor.components.runtime.util.FileUtil.openFile() calling method java.io.FileInputStream.<init>()


    public static java.io.FileInputStream openFile(java.net.URI p2)
    {
        if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p2.toString())) {
            com.google.appinventor.components.runtime.Form.getActiveForm().assertPermission("android.permission.READ_EXTERNAL_STORAGE");
        }
        return new java.io.FileInputStream(new java.io.File(p2));
    }

Method com.google.appinventor.components.runtime.util.FileUtil.openFile() calling method java.io.FileInputStream.<init>()


    public static java.io.FileInputStream openFile(String p2)
    {
        if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFile(p2)) {
            com.google.appinventor.components.runtime.Form.getActiveForm().assertPermission("android.permission.READ_EXTERNAL_STORAGE");
        }
        return new java.io.FileInputStream(p2);
    }

Method com.google.appinventor.components.runtime.util.FileUtil.copyFile() calling method java.io.FileInputStream.<init>()


    public static String copyFile(String p2, String p3)
    {
        java.io.FileInputStream v0_1 = new java.io.FileInputStream(p2);
        try {
            Throwable v1_0 = com.google.appinventor.components.runtime.util.FileUtil.writeStreamToFile(v0_1, p3);
            v0_1.close();
            return v1_0;
        } catch (Throwable v1_1) {
            v0_1.close();
            throw v1_1;
        }
    }

Method android.support.v4.util.AtomicFile.openRead() calling method java.io.FileInputStream.<init>()


    public java.io.FileInputStream openRead()
    {
        if (this.mBackupName.exists()) {
            this.mBaseName.delete();
            this.mBackupName.renameTo(this.mBaseName);
        }
        return new java.io.FileInputStream(this.mBaseName);
    }

Method android.support.v4.graphics.TypefaceCompatUtil.mmap() calling method java.io.FileInputStream.<init>()


    private static java.nio.ByteBuffer mmap(java.io.File p11)
    {
        java.io.FileInputStream v7_1 = new java.io.FileInputStream(p11);
        try {
            java.nio.channels.FileChannel v0 = v7_1.getChannel();
            Throwable v1_0 = v0.map(java.nio.channels.FileChannel$MapMode.READ_ONLY, 0, v0.size());
        } catch (Throwable v1_2) {
            Throwable v2_1 = 0;
            if (v7_1 != null) {
                if (v2_1 == null) {
                    v7_1.close();
                } else {
                    v7_1.close();
                }
            }
            throw v1_2;
        } catch (Throwable v1_1) {
            try {
                throw v1_1;
            } catch (Throwable v2_0) {
                v2_1 = v1_1;
                v1_2 = v2_0;
            }
        }
        if (v7_1 == null) {
            return v1_0;
        } else {
            if (0 == 0) {
                v7_1.close();
                return v1_0;
            } else {
                try {
                    v7_1.close();
                } catch (Throwable v2_2) {
                    0.addSuppressed(v2_2);
                }
                return v1_0;
            }
        }
    }

Method android.support.v4.graphics.TypefaceCompatUtil.mmap() calling method java.io.FileInputStream.<init>()


    public static java.nio.ByteBuffer mmap(android.content.Context p13, android.os.CancellationSignal p14, android.net.Uri p15)
    {
        try {
            android.os.ParcelFileDescriptor v8 = p13.getContentResolver().openFileDescriptor(p15, "r", p14);
            try {
                java.io.FileInputStream v7_1 = new java.io.FileInputStream(v8.getFileDescriptor());
                try {
                    java.nio.channels.FileChannel v0 = v7_1.getChannel();
                    Throwable v1_1 = v0.map(java.nio.channels.FileChannel$MapMode.READ_ONLY, 0, v0.size());
                } catch (Throwable v1_4) {
                    Throwable v2_2 = 0;
                    if (v7_1 != null) {
                        if (v2_2 == null) {
                            v7_1.close();
                        } else {
                            v7_1.close();
                        }
                    }
                    throw v1_4;
                } catch (Throwable v1_3) {
                    try {
                        throw v1_3;
                    } catch (Throwable v2_1) {
                        v2_2 = v1_3;
                        v1_4 = v2_1;
                    }
                }
                if (v7_1 != null) {
                    if (0 == 0) {
                        v7_1.close();
                    } else {
                        try {
                            v7_1.close();
                        } catch (Throwable v2_3) {
                            0.addSuppressed(v2_3);
                        }
                    }
                }
                if (v8 == null) {
                    return v1_1;
                } else {
                    if (0 == 0) {
                        v8.close();
                        return v1_1;
                    } else {
                        try {
                            v8.close();
                        } catch (Throwable v2_6) {
                            0.addSuppressed(v2_6);
                        }
                        return v1_1;
                    }
                }
            } catch (Throwable v1_6) {
                Throwable v2_5 = 0;
                if (v8 != null) {
                    if (v2_5 == null) {
                        v8.close();
                    } else {
                        try {
                            v8.close();
                        } catch (Throwable v3_1) {
                            v2_5.addSuppressed(v3_1);
                        }
                    }
                }
                throw v1_6;
            } catch (Throwable v1_5) {
                try {
                    throw v1_5;
                } catch (Throwable v2_4) {
                    v2_5 = v1_5;
                    v1_6 = v2_4;
                }
            }
        } catch (java.io.IOException v6) {
            v1_1 = 0;
            return v1_1;
        }
    }

Method kawa.lib.files.directoryFiles() calling method java.io.File.<init>()


    public static Object directoryFiles(gnu.text.FilePath p3)
    {
        gnu.lists.LList v1_3;
        gnu.lists.LList v1_2 = p3.toFile();
        if (v1_2 != null) {
            v1_3 = v1_2.toString();
        } else {
            v1_3 = 0;
        }
        gnu.lists.LList v1_1;
        String[] v0 = new java.io.File(v1_3).list();
        if (v0 != null) {
            v1_1 = gnu.lists.LList.makeList(v0, 0);
        } else {
            v1_1 = Boolean.FALSE;
        }
        return v1_1;
    }

Method com.google.appinventor.components.runtime.ImagePicker.copyToExternalStorageAndDeleteSource() calling method java.io.File.<init>()


    private void copyToExternalStorageAndDeleteSource(java.io.File p11, String p12)
    {
        java.io.File v1_1 = new java.io.File(new StringBuilder().append(android.os.Environment.getExternalStorageDirectory()).append("/Pictures/_app_inventor_image_picker").toString());
        try {
            v1_1.mkdirs();
            java.io.File v0 = java.io.File.createTempFile("picked_image", p12, v1_1);
            this.selectionSavedImage = v0.getPath();
            android.util.Log.i("ImagePicker", new StringBuilder().append("saved file path is: ").append(this.selectionSavedImage).toString());
            com.google.appinventor.components.runtime.util.FileUtil.copyFile(p11.getAbsolutePath(), v0.getAbsolutePath());
            android.util.Log.i("ImagePicker", new StringBuilder().append("Image was copied to ").append(this.selectionSavedImage).toString());
        } catch (java.io.IOException v2) {
            String v3 = new StringBuilder().append("destination is ").append(this.selectionSavedImage).append(": error is ").append(v2.getMessage()).toString();
            android.util.Log.i("ImagePicker", new StringBuilder().append("copyFile failed. ").append(v3).toString());
            int v5_16 = this.container.$form();
            Object[] v8_1 = new Object[1];
            v8_1[0] = v3;
            v5_16.dispatchErrorOccurredEvent(this, "SaveImage", 1601, v8_1);
            this.selectionSavedImage = "";
            v0.delete();
        }
        p11.delete();
        this.trimDirectory(com.google.appinventor.components.runtime.ImagePicker.maxSavedFiles, v1_1);
        return;
    }

Method kawa.repl.checkInitFile() calling method java.io.File.<init>()


    static void checkInitFile()
    {
        if (kawa.repl.homeDirectory == null) {
            Boolean v3_1;
            java.io.File v1_0 = 0;
            kawa.repl.homeDirectory = System.getProperty("user.home");
            if (kawa.repl.homeDirectory == null) {
                v3_1 = Boolean.FALSE;
            } else {
                String v2;
                v3_1 = new gnu.lists.FString(kawa.repl.homeDirectory);
                if (!"/".equals(System.getProperty("file.separator"))) {
                    v2 = "kawarc.scm";
                } else {
                    v2 = ".kawarc.scm";
                }
                v1_0 = new java.io.File(kawa.repl.homeDirectory, v2);
            }
            gnu.mapping.Environment.getCurrent().put("home-directory", v3_1);
            if ((v1_0 != null) && ((v1_0.exists()) && (!kawa.Shell.runFileOrClass(v1_0.getPath(), 1, 0)))) {
                System.exit(-1);
            }
        }
        return;
    }

Method com.google.appinventor.components.runtime.ReplForm.startHTTPD() calling method java.io.File.<init>()


    public void startHTTPD(boolean p6)
    {
        try {
            if (this.httpdServer == null) {
                this.checkAssetDir();
                this.httpdServer = new com.google.appinventor.components.runtime.util.AppInvHTTPD(8001, new java.io.File(com.google.appinventor.components.runtime.ReplForm.REPL_ASSET_DIR), p6, this);
                android.util.Log.i(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, "started AppInvHTTPD");
            }
        } catch (java.io.IOException v0) {
            android.util.Log.e(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, new StringBuilder().append("Setting up NanoHTTPD: ").append(v0.toString()).toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.ReplForm.loadComponents() calling method java.io.File.<init>()


    public void loadComponents(java.util.List p18)
    {
        java.util.HashSet v7_1 = new java.util.HashSet(p18);
        java.io.File v6 = com.google.appinventor.components.runtime.ReplForm.activeForm.$context().getDir("componentDexs", 0);
        java.io.File v4_1 = new java.io.File(com.google.appinventor.components.runtime.ReplForm.REPL_COMP_DIR);
        if (this.checkComponentDir()) {
            ClassLoader v9 = com.google.appinventor.components.runtime.ReplForm.getClassLoader();
            StringBuilder v10_1 = new StringBuilder();
            this.loadedExternalDexs.clear();
            String v12_2 = v4_1.listFiles();
            int v13_2 = v12_2.length;
            int v11_1 = 0;
            while (v11_1 < v13_2) {
                java.io.File v2 = v12_2[v11_1];
                if ((v2.isDirectory()) && (v7_1.contains(v2.getName()))) {
                    java.io.File v3_1 = new java.io.File(new StringBuilder().append(v2.getPath()).append(java.io.File.separator).append("classes.jar").toString());
                    java.io.File v8_0 = new java.io.File(new StringBuilder().append(v2.getPath()).append(java.io.File.separator).append(v2.getName()).append(".jar").toString());
                    v3_1.renameTo(v8_0);
                    if ((v8_0.exists()) && (!this.loadedExternalDexs.contains(v8_0.getName()))) {
                        android.util.Log.d(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, new StringBuilder().append("Loading component dex ").append(v8_0.getAbsolutePath()).toString());
                        this.loadedExternalDexs.add(v8_0.getName());
                        v10_1.append(java.io.File.pathSeparatorChar);
                        v10_1.append(v8_0.getAbsolutePath());
                    }
                }
                v11_1++;
            }
            dalvik.system.DexClassLoader v5_1 = new dalvik.system.DexClassLoader(v10_1.substring(1), v6.getAbsolutePath(), 0, v9);
            Thread.currentThread().setContextClassLoader(v5_1);
            android.util.Log.d(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, Thread.currentThread().toString());
            android.util.Log.d(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, android.os.Looper.getMainLooper().getThread().toString());
            android.os.Looper.getMainLooper().getThread().setContextClassLoader(v5_1);
        } else {
            android.util.Log.d(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, "Unable to create components directory");
            int v13_1 = new Object[3];
            v13_1[0] = Integer.valueOf(1);
            v13_1[1] = "App Inventor";
            v13_1[2] = "Unable to create component directory.";
            this.dispatchErrorOccurredEventDialog(this, "loadComponents", 3300, v13_1);
        }
        return;
    }

Method com.google.appinventor.components.runtime.ReplForm.getAssetPathForExtension() calling method java.io.File.<init>()


    public String getAssetPathForExtension(com.google.appinventor.components.runtime.Component p9, String p10)
    {
        String v5_21;
        com.google.appinventor.components.annotations.SimpleObject v0_1 = ((com.google.appinventor.components.annotations.SimpleObject) p9.getClass().getAnnotation(com.google.appinventor.components.annotations.SimpleObject));
        if ((v0_1 == null) || (v0_1.external())) {
            String v2 = p9.getClass().getName();
            String v3 = 0;
            while (v2.contains(".")) {
                java.io.File v1_1 = new java.io.File(new StringBuilder().append(com.google.appinventor.components.runtime.ReplForm.REPL_COMP_DIR).append(v2).append("/assets").toString());
                if ((!v1_1.exists()) || (!v1_1.isDirectory())) {
                    v2 = v2.substring(0, v2.lastIndexOf(46));
                } else {
                    v3 = v1_1.getAbsolutePath();
                    break;
                }
            }
            if (v3 != null) {
                java.io.File v4_1 = new java.io.File(v3, p10);
                android.util.Log.d(com.google.appinventor.components.runtime.ReplForm.LOG_TAG, new StringBuilder().append("result = ").append(v4_1.getAbsolutePath()).toString());
                if (v4_1.exists()) {
                    v5_21 = new StringBuilder().append("file://").append(v4_1.getAbsolutePath()).toString();
                    return v5_21;
                }
            }
            throw new java.io.FileNotFoundException();
        } else {
            v5_21 = new StringBuilder().append("file:///android_asset/").append(p10).toString();
        }
        return v5_21;
    }

Method com.google.appinventor.components.runtime.ReplForm.checkComponentDir() calling method java.io.File.<init>()


    private boolean checkComponentDir()
    {
        int v1_2;
        java.io.File v0_1 = new java.io.File(com.google.appinventor.components.runtime.ReplForm.REPL_COMP_DIR);
        if (v0_1.exists()) {
            v1_2 = 1;
        } else {
            v1_2 = v0_1.mkdirs();
        }
        return v1_2;
    }

Method com.google.appinventor.components.runtime.ReplForm.checkAssetDir() calling method java.io.File.<init>()


    private void checkAssetDir()
    {
        java.io.File v0_1 = new java.io.File(com.google.appinventor.components.runtime.ReplForm.REPL_ASSET_DIR);
        if (!v0_1.exists()) {
            v0_1.mkdirs();
        }
        return;
    }

Method kawa.standard.define_autoload.scanFile() calling method java.io.File.<init>()


    public boolean scanFile(String p21, gnu.expr.ScopeExp p22, kawa.lang.Translator p23)
    {
        // Both branches of the condition point to the same code.
        // if (!p21.endsWith(".el")) {
            java.io.File v9_1 = new java.io.File(p21);
            if (!v9_1.isAbsolute()) {
                v9_1 = new java.io.File(new java.io.File(p23.getFileName()).getParent(), p21);
            }
            int v17_13;
            String v10 = v9_1.getPath();
            int v5 = v10.lastIndexOf(46);
            if (v5 < 0) {
                v17_13 = 1;
            } else {
                String v7 = v10.substring(v5);
                gnu.expr.Language v12 = gnu.expr.Language.getInstance(v7);
                if (v12 != null) {
                    String v15 = p23.classPrefix;
                    String v4 = p21.substring(0, (p21.length() - v7.length()));
                    while (v4.startsWith("../")) {
                        int v11 = v15.lastIndexOf(46, (v15.length() - 2));
                        if (v11 >= 0) {
                            v15 = v15.substring(0, (v11 + 1));
                            v4 = v4.substring(3);
                        } else {
                            p23.syntaxError(new StringBuilder().append("cannot use relative filename \"").append(p21).append("\" with simple prefix \"").append(v15).append("\"").toString());
                            v17_13 = 0;
                        }
                    }
                    try {
                        kawa.standard.define_autoload.findAutoloadComments(((gnu.kawa.lispexpr.LispReader) v12.getLexer(gnu.mapping.InPort.openFile(v10), p23.getMessages())), new StringBuilder().append(v15).append(v4).toString().replace(47, 46), p22, p23);
                    } catch (Exception v6) {
                        p23.syntaxError(new StringBuilder().append("error reading ").append(v10).append(": ").append(v6).toString());
                        v17_13 = 1;
                    }
                } else {
                    p23.syntaxError(new StringBuilder().append("unknown extension for ").append(v10).toString());
                    v17_13 = 1;
                }
            }
            return v17_13;
        // }
    }

Method gnu.text.URLPath.openOutputStream() calling method java.io.File.<init>()


    public static java.io.OutputStream openOutputStream(java.net.URL p5)
    {
        Throwable v2_0;
        String v1 = p5.toString();
        if (!v1.startsWith("file:")) {
            java.net.URLConnection v0 = p5.openConnection();
            v0.setDoInput(0);
            v0.setDoOutput(1);
            v2_0 = v0.getOutputStream();
        } else {
            try {
                v2_0 = new java.io.FileOutputStream(new java.io.File(new java.net.URI(v1)));
            } catch (Throwable v2) {
            }
        }
        return v2_0;
    }

Method com.google.appinventor.components.runtime.Sharing.ShareFileWithMessage() calling method java.io.File.<init>()


    public void ShareFileWithMessage(String p14, String p15)
    {
        String v4 = this.form.$context().getPackageName();
        if (!p14.startsWith("file://")) {
            p14 = new StringBuilder().append("file://").append(p14).toString();
        }
        java.io.File v2_1 = new java.io.File(android.net.Uri.parse(p14).getPath());
        if (!v2_1.isFile()) {
            String v0 = "ShareFile";
            if (p15.equals("")) {
                v0 = "ShareFileWithMessage";
            }
            com.google.appinventor.components.runtime.Form v9_10 = this.form;
            Object[] v11_0 = new Object[1];
            v11_0[0] = p14;
            v9_10.dispatchErrorOccurredEvent(this, v0, 2001, v11_0);
        } else {
            String v7 = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(p14.substring((p14.lastIndexOf(".") + 1)).toLowerCase());
            android.net.Uri v6 = android.support.v4.content.FileProvider.getUriForFile(this.form.$context(), new StringBuilder().append(v4).append(".provider").toString(), v2_1);
            android.content.Intent v5_1 = new android.content.Intent("android.intent.action.SEND");
            v5_1.putExtra("android.intent.extra.STREAM", v6);
            v5_1.setFlags(1);
            v5_1.setType(v7);
            if (p15.length() > 0) {
                v5_1.putExtra("android.intent.extra.TEXT", p15);
            }
            this.form.startActivity(v5_1);
        }
        return;
    }

Method com.google.appinventor.components.runtime.MediaStore.PostMedia() calling method java.io.File.<init>()


    public void PostMedia(String p17)
    {
        com.google.appinventor.components.runtime.MediaStore$1 v7_1 = new com.google.appinventor.components.runtime.MediaStore$1(this);
        try {
            String v8;
            org.apache.http.impl.client.DefaultHttpClient v1_1 = new org.apache.http.impl.client.DefaultHttpClient();
            org.apache.http.entity.mime.MultipartEntityBuilder v4 = org.apache.http.entity.mime.MultipartEntityBuilder.create();
            v4.setMode(org.apache.http.entity.mime.HttpMultipartMode.BROWSER_COMPATIBLE);
        } catch (Exception v2) {
            v2.printStackTrace();
            v7_1.onFailure(v2.getMessage());
            return;
        }
        if (!p17.split("/")[0].equals("file:")) {
            v8 = p17;
        } else {
            v8 = new java.io.File(new java.net.URL(p17).toURI()).getAbsolutePath();
        }
        v4.addPart("file", new org.apache.http.entity.mime.content.FileBody(new java.io.File(v8)));
        org.apache.http.HttpEntity v3 = v4.build();
        org.apache.http.client.methods.HttpPost v10_1 = new org.apache.http.client.methods.HttpPost(this.getUploadUrl());
        v10_1.setEntity(v3);
        v7_1.onSuccess(org.apache.http.util.EntityUtils.toString(v1_1.execute(v10_1).getEntity()));
        return;
    }

Method com.google.appinventor.components.runtime.File.AbsoluteFileName() calling method java.io.File.<init>()


    private String AbsoluteFileName(String p5)
    {
        String v2_12;
        if (!p5.startsWith("/")) {
            java.io.File v0_1 = this.activity.getFilesDir();
            if (this.isRepl) {
                v0_1 = new java.io.File(new StringBuilder().append(android.os.Environment.getExternalStorageDirectory().getPath()).append("/AppInventor/data/").toString());
                if (!v0_1.exists()) {
                    v0_1.mkdirs();
                }
            }
            v2_12 = new StringBuilder().append(v0_1.getPath()).append("/").append(p5).toString();
        } else {
            v2_12 = new StringBuilder().append(android.os.Environment.getExternalStorageDirectory().getPath()).append(p5).toString();
        }
        return v2_12;
    }

Method com.google.appinventor.components.runtime.CloudDB.getFileExtension() calling method java.io.File.<init>()


    private String getFileExtension(String p4)
    {
        String v2_2;
        String v1 = new java.io.File(p4).getName();
        int v0 = v1.lastIndexOf(".");
        if (v0 != -1) {
            v2_2 = v1.substring((v0 + 1));
        } else {
            v2_2 = "";
        }
        return v2_2;
    }

Method com.google.appinventor.components.runtime.Camera.resultReturned() calling method java.io.File.<init>()


    public void resultReturned(int p7, int p8, android.content.Intent p9)
    {
        android.util.Log.i("CameraComponent", new StringBuilder().append("Returning result. Request code = ").append(p7).append(", result code = ").append(p8).toString());
        if ((p7 != this.requestCode) || (p8 != -1)) {
            this.deleteFile(this.imageFile);
        } else {
            java.io.File v0_1 = new java.io.File(this.imageFile.getPath());
            if (v0_1.length() == 0) {
                this.deleteFile(this.imageFile);
                if ((p9 == null) || (p9.getData() == null)) {
                    android.util.Log.i("CameraComponent", "Couldn\'t find an image file from the Camera result");
                    Object[] v5_1 = new Object[0];
                    this.form.dispatchErrorOccurredEvent(this, "TakePicture", 201, v5_1);
                } else {
                    android.net.Uri v1 = p9.getData();
                    android.util.Log.i("CameraComponent", new StringBuilder().append("Calling Camera.AfterPicture with image path ").append(v1.toString()).toString());
                    this.AfterPicture(v1.toString());
                }
            } else {
                this.scanFileToAdd(v0_1);
                this.AfterPicture(this.imageFile.toString());
            }
        }
        return;
    }

Method com.google.appinventor.components.runtime.Camera.TakePicture() calling method java.io.File.<init>()


    public void TakePicture()
    {
        java.util.Date v0_1 = new java.util.Date();
        String v4 = android.os.Environment.getExternalStorageState();
        if (this.havePermission) {
            if (!"mounted".equals(v4)) {
                if (!"mounted_ro".equals(v4)) {
                    Object[] v9_1 = new Object[0];
                    this.form.dispatchErrorOccurredEvent(this, "TakePicture", 705, v9_1);
                } else {
                    Object[] v9_2 = new Object[0];
                    this.form.dispatchErrorOccurredEvent(this, "TakePicture", 704, v9_2);
                }
            } else {
                android.util.Log.i("CameraComponent", "External storage is available and writable");
                this.imageFile = android.net.Uri.fromFile(new java.io.File(android.os.Environment.getExternalStorageDirectory(), new StringBuilder().append("/Pictures/app_inventor_").append(v0_1.getTime()).append(".jpg").toString()));
                android.content.ContentValues v5_1 = new android.content.ContentValues();
                v5_1.put("_data", this.imageFile.getPath());
                v5_1.put("mime_type", "image/jpeg");
                v5_1.put("title", this.imageFile.getLastPathSegment());
                if (this.requestCode == 0) {
                    this.requestCode = this.form.registerForActivityResult(this);
                }
                android.net.Uri v1 = this.container.$context().getContentResolver().insert(android.provider.MediaStore$Images$Media.INTERNAL_CONTENT_URI, v5_1);
                android.content.Intent v2_1 = new android.content.Intent("android.media.action.IMAGE_CAPTURE");
                v2_1.putExtra("output", v1);
                if (this.useFront) {
                    v2_1.putExtra("android.intent.extras.CAMERA_FACING", 1);
                }
                this.container.$context().startActivityForResult(v2_1, this.requestCode);
            }
        } else {
            this.form.runOnUiThread(new com.google.appinventor.components.runtime.Camera$1(this, this));
        }
        return;
    }

Method com.google.appinventor.components.runtime.Camera.deleteFile() calling method java.io.File.<init>()


    private void deleteFile(android.net.Uri p6)
    {
        try {
            if (!new java.io.File(p6.getPath()).delete()) {
                android.util.Log.i("CameraComponent", new StringBuilder().append("Could not delete file ").append(p6.toString()).toString());
            } else {
                android.util.Log.i("CameraComponent", new StringBuilder().append("Deleted file ").append(p6.toString()).toString());
            }
        } catch (SecurityException v0) {
            android.util.Log.i("CameraComponent", new StringBuilder().append("Got security exception trying to delete file ").append(p6.toString()).toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.Camcorder.deleteFile() calling method java.io.File.<init>()


    private void deleteFile(android.net.Uri p6)
    {
        try {
            if (!new java.io.File(p6.getPath()).delete()) {
                android.util.Log.i("CamcorderComponent", new StringBuilder().append("Could not delete file ").append(p6.toString()).toString());
            } else {
                android.util.Log.i("CamcorderComponent", new StringBuilder().append("Deleted file ").append(p6.toString()).toString());
            }
        } catch (SecurityException v0) {
            android.util.Log.i("CamcorderComponent", new StringBuilder().append("Got security exception trying to delete file ").append(p6.toString()).toString());
        }
        return;
    }

Method com.google.appinventor.components.runtime.ActivityStarter.buildActivityIntent() calling method java.io.File.<init>()


    private android.content.Intent buildActivityIntent()
    {
        android.net.Uri v7;
        if (this.dataUri.length() == 0) {
            v7 = 0;
        } else {
            v7 = android.net.Uri.parse(this.dataUri);
        }
        int v4_0 = new android.content.Intent(this.action);
        if ((v7 != null) && (this.dataUri.toLowerCase().startsWith("file://"))) {
            android.util.Log.d("ActivityStarter", "Using file://");
            java.io.File v3_1 = new java.io.File(v7.getPath());
            if (v3_1.isFile()) {
                android.util.Log.d("ActivityStarter", "It\'s a file");
                v7 = android.support.v4.content.FileProvider.getUriForFile(this.form.$context(), new StringBuilder().append(this.form.$context().getPackageName()).append(".provider").toString(), v3_1);
                v4_0 = new android.content.Intent(this.action);
                v4_0.setFlags(1);
                android.util.Log.d("ActivityStarter", "added permissions");
            }
        }
        if (!android.text.TextUtils.isEmpty(this.Action())) {
            if (this.dataType.length() == 0) {
                v4_0.setData(v7);
            } else {
                if (v7 == null) {
                    v4_0.setType(this.dataType);
                } else {
                    v4_0.setDataAndType(v7, this.dataType);
                }
            }
            if ((this.activityPackage.length() == 0) && (this.activityClass.length() == 0)) {
                if (this.Action().equals("android.intent.action.MAIN")) {
                    v4_0 = 0;
                    return v4_0;
                }
            } else {
                v4_0.setComponent(new android.content.ComponentName(this.activityPackage, this.activityClass));
            }
            if ((this.extraKey.length() != 0) && (this.extraValue.length() != 0)) {
                android.util.Log.i("ActivityStarter", new StringBuilder().append("Adding extra, key = ").append(this.extraKey).append(" value = ").append(this.extraValue).toString());
                v4_0.putExtra(this.extraKey, this.extraValue);
            }
            String v10_8 = this.extras.toArray();
            String v11_4 = v10_8.length;
            int v9_6 = 0;
            while (v9_6 < v11_4) {
                com.google.appinventor.components.runtime.util.YailList v0_1 = ((com.google.appinventor.components.runtime.util.YailList) v10_8[v9_6]);
                String v5 = v0_1.getString(0);
                String v8 = v0_1.getString(1);
                if ((v5.length() != 0) && (v8.length() != 0)) {
                    android.util.Log.i("ActivityStarter", new StringBuilder().append("Adding extra (pairs), key = ").append(v5).append(" value = ").append(v8).toString());
                    v4_0.putExtra(v5, v8);
                }
                v9_6++;
            }
        } else {
            v4_0 = 0;
        }
        return v4_0;
    }

Method android.support.v4.graphics.TypefaceCompatApi21Impl.getFile() calling method java.io.File.<init>()


    private java.io.File getFile(android.os.ParcelFileDescriptor p6)
    {
        try {
            int v2_6;
            String v1 = android.system.Os.readlink(new StringBuilder().append("/proc/self/fd/").append(p6.getFd()).toString());
        } catch (android.system.ErrnoException v0) {
            v2_6 = 0;
            return v2_6;
        }
        if (!android.system.OsConstants.S_ISREG(android.system.Os.stat(v1).st_mode)) {
            v2_6 = 0;
            return v2_6;
        } else {
            v2_6 = new java.io.File(v1);
            return v2_6;
        }
    }

Method gnu.text.URIPath.resolve() calling method java.io.File.<init>()


    public gnu.text.Path resolve(String p9)
    {
        char v3_6;
        if (!gnu.text.Path.uriSchemeSpecified(p9)) {
            char v1 = java.io.File.separatorChar;
            if (v1 != 47) {
                if ((p9.length() < 2) || (((p9.charAt(1) != 58) || (!Character.isLetter(p9.charAt(0)))) && ((p9.charAt(0) != v1) || (p9.charAt(1) != v1)))) {
                    p9 = p9.replace(v1, 47);
                } else {
                    v3_6 = gnu.text.FilePath.valueOf(new java.io.File(p9));
                    return v3_6;
                }
            }
            try {
                v3_6 = gnu.text.URIPath.valueOf(this.uri.resolve(new java.net.URI(0, p9, 0)));
            } catch (Throwable v0) {
                throw gnu.mapping.WrappedException.wrapIfNeeded(v0);
            }
        } else {
            v3_6 = gnu.text.URIPath.valueOf(p9);
        }
        return v3_6;
    }

Method gnu.text.FilePath.resolve() calling method java.io.File.<init>()


    public gnu.text.Path resolve(String p6)
    {
        java.io.File v3_7;
        if (!gnu.text.Path.uriSchemeSpecified(p6)) {
            java.io.File v1_1 = new java.io.File(p6);
            if (!v1_1.isAbsolute()) {
                char v2 = java.io.File.separatorChar;
                if (v2 != 47) {
                    p6 = p6.replace(47, v2);
                }
                java.io.File v0_1;
                if (this != gnu.text.Path.userDirPath) {
                    java.io.File v3_4;
                    if (!this.isDirectory()) {
                        v3_4 = this.file.getParentFile();
                    } else {
                        v3_4 = this.file;
                    }
                    v0_1 = new java.io.File(v3_4, p6);
                } else {
                    v0_1 = new java.io.File(System.getProperty("user.dir"), p6);
                }
                v3_7 = gnu.text.FilePath.valueOf(v0_1);
            } else {
                v3_7 = gnu.text.FilePath.valueOf(v1_1);
            }
        } else {
            v3_7 = gnu.text.URLPath.valueOf(p6);
        }
        return v3_7;
    }

Method gnu.text.FilePath.valueOf() calling method java.io.File.<init>()


    public static gnu.text.FilePath valueOf(String p3)
    {
        return new gnu.text.FilePath(new java.io.File(p3), p3);
    }

Method gnu.text.FilePath.coerceToFilePathOrNull() calling method java.io.File.<init>()


    public static gnu.text.FilePath coerceToFilePathOrNull(Object p3)
    {
        int v3_1;
        if (!(p3 instanceof gnu.text.FilePath)) {
            if (!(p3 instanceof gnu.text.URIPath)) {
                if (!(p3 instanceof java.net.URI)) {
                    if (!(p3 instanceof java.io.File)) {
                        String v0_1;
                        if (!(p3 instanceof gnu.lists.FString)) {
                            if (!(p3 instanceof String)) {
                                v3_1 = 0;
                                return v3_1;
                            } else {
                                v0_1 = ((String) p3);
                            }
                        } else {
                            v0_1 = p3.toString();
                        }
                        v3_1 = gnu.text.FilePath.valueOf(v0_1);
                    } else {
                        v3_1 = gnu.text.FilePath.valueOf(((java.io.File) p3));
                    }
                } else {
                    v3_1 = gnu.text.FilePath.valueOf(new java.io.File(((java.net.URI) p3)));
                }
            } else {
                v3_1 = gnu.text.FilePath.valueOf(new java.io.File(((gnu.text.URIPath) p3).uri));
            }
        } else {
            v3_1 = ((gnu.text.FilePath) p3);
        }
        return v3_1;
    }

Method gnu.expr.Compilation.outputClass() calling method java.io.File.<init>()


    public void outputClass(String p9)
    {
        int v2 = 0;
        while (v2 < this.numClasses) {
            gnu.bytecode.ClassType v0 = this.classes[v2];
            String v3 = new StringBuilder().append(p9).append(v0.getName().replace(46, java.io.File.separatorChar)).append(".class").toString();
            String v4 = new java.io.File(v3).getParent();
            if (v4 != null) {
                new java.io.File(v4).mkdirs();
            }
            v0.writeToFile(v3);
            v2++;
        }
        this.minfo.cleanupAfterCompilation();
        return;
    }

Method gnu.expr.Compilation.compileToArchive() calling method java.io.File.<init>()


    public void compileToArchive(gnu.expr.ModuleExp p13, String p14)
    {
        int v3;
        if (!p14.endsWith(".zip")) {
            if (!p14.endsWith(".jar")) {
                p14 = new StringBuilder().append(p14).append(".zip").toString();
                v3 = 0;
            } else {
                v3 = 1;
            }
        } else {
            v3 = 0;
        }
        this.process(12);
        java.io.File v4_1 = new java.io.File(p14);
        if (v4_1.exists()) {
            v4_1.delete();
        }
        java.util.zip.ZipOutputStream v7_1;
        if (v3 == 0) {
            v7_1 = new java.util.zip.ZipOutputStream(new java.io.FileOutputStream(v4_1));
        } else {
            v7_1 = new java.util.jar.JarOutputStream(new java.io.FileOutputStream(v4_1));
        }
        byte[][] v1 = new byte[][this.numClasses];
        java.util.zip.CRC32 v5_1 = new java.util.zip.CRC32();
        int v2 = 0;
        while (v2 < this.numClasses) {
            gnu.bytecode.ClassType v0 = this.classes[v2];
            v1[v2] = v0.writeToArray();
            java.util.zip.ZipEntry v6_1 = new java.util.zip.ZipEntry(new StringBuilder().append(v0.getName().replace(46, 47)).append(".class").toString());
            v6_1.setSize(((long) v1[v2].length));
            v5_1.reset();
            v5_1.update(v1[v2], 0, v1[v2].length);
            v6_1.setCrc(v5_1.getValue());
            v7_1.putNextEntry(v6_1);
            v7_1.write(v1[v2]);
            v2++;
        }
        v7_1.close();
        return;
    }

Method gnu.bytecode.dump.main() calling method java.io.File.<init>()


    public static void main(String[] p27)
    {
        int v4 = p27.length;
        gnu.bytecode.ClassTypeWriter v19 = new gnu.bytecode.ClassTypeWriter;
        v19(0, System.out, 0);
        if (v4 == 0) {
            gnu.bytecode.dump.usage(System.err);
        }
        int v14 = 0;
        while (v14 < v4) {
            String v12 = p27[v14];
            if ((!v12.equals("-verbose")) && (!v12.equals("--verbose"))) {
                try {
                    int v15_0;
                    if (!gnu.bytecode.dump.uriSchemeSpecified(v12)) {
                        try {
                            v15_0 = new java.io.FileInputStream(v12);
                        } catch (java.util.zip.ZipException v8) {
                            try {
                                ClassLoader v18 = gnu.bytecode.ObjectType.getContextClass(v12).getClassLoader();
                            } catch (java.io.FileNotFoundException v9) {
                                v18 = gnu.bytecode.ObjectType.getContextClassLoader();
                            }
                            try {
                                java.net.URL v21 = v18.getResource(new StringBuilder().append(v12.replace(46, 47)).append(".class").toString());
                                v15_0 = v21.openConnection().getInputStream();
                                v12 = v21.toString();
                            } catch (Throwable v10) {
                                System.err.print("Can\'t find .class file for class ");
                                System.err.print(v12);
                                System.err.print(" - ");
                                System.err.println(v10);
                                System.exit(-1);
                                v15_0 = 0;
                            }
                        }
                    } else {
                        int v16 = v12.startsWith("jar:");
                        if (v16 != 0) {
                            String v20_0 = v12.substring(4);
                            if (!gnu.bytecode.dump.uriSchemeSpecified(v20_0)) {
                                int v11_0 = v20_0.indexOf(33);
                                if (v11_0 >= 0) {
                                    int v24_3 = new java.io.File;
                                    v24_3(v20_0.substring(0, v11_0));
                                    v12 = new StringBuilder().append("jar:").append(v24_3.toURI().toURL().toString()).append(v20_0.substring(v11_0)).toString();
                                }
                            }
                            if (v20_0.indexOf("!/") < 0) {
                                int v11_1 = v12.lastIndexOf(33);
                                if (v11_1 > 0) {
                                    if (v12.indexOf(47, v11_1) < 0) {
                                        v12 = new StringBuilder().append(v12.substring(0, (v11_1 + 1))).append(47).append(v12.substring((v11_1 + 1)).replace(46, 47)).append(".class").toString();
                                    }
                                } else {
                                    v16 = 0;
                                }
                            }
                        }
                        try {
                            java.net.URL v23 = new java.net.URL;
                            v23(v12);
                            try {
                                v15_0 = v23.openConnection().getInputStream();
                            } catch (java.util.zip.ZipException v8_0) {
                                if (v16 != 0) {
                                    String v13_2 = v23.getFile();
                                    int v22 = v13_2.lastIndexOf(33);
                                    if (v22 > 0) {
                                        v13_2 = v13_2.substring(0, v22);
                                    }
                                    try {
                                        int v24_30 = new java.net.URL;
                                        v24_30(v13_2);
                                        v24_30.openConnection().getInputStream();
                                    } catch (java.io.FileNotFoundException v9) {
                                        System.err.print("Jar File for URL ");
                                        System.err.print(v13_2);
                                        System.err.println(" not found.");
                                        System.exit(-1);
                                    }
                                }
                                throw v8_0;
                            }
                        } catch (java.util.zip.ZipException v8) {
                            System.err.print("File for URL ");
                            System.err.print(v12);
                            System.err.println(" not found.");
                            System.exit(-1);
                            v15_0 = 0;
                        } catch (java.util.zip.ZipException v8_1) {
                            System.err.print("Error opening zip archive ");
                            System.err.print(v12);
                            System.err.println(" not found.");
                            v8_1.printStackTrace();
                            if (v8_1.getCause() != null) {
                                v8_1.getCause().printStackTrace();
                            }
                            System.exit(-1);
                            v15_0 = 0;
                        }
                    }
                    gnu.bytecode.dump.process(v15_0, v12, v19);
                } catch (java.io.IOException v7) {
                    v7.printStackTrace();
                    System.err.println("caught ");
                    System.err.print(v7);
                    System.exit(-1);
                }
            } else {
                v19.setFlags(15);
            }
            v14++;
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.NativeOpenStreetMapController.<init>() calling method java.io.File.<init>()


    NativeOpenStreetMapController(com.google.appinventor.components.runtime.Form p8)
    {
        this.compass = 0;
        this.rotation = 0;
        this.eventListeners = new java.util.HashSet();
        this.featureOverlays = new java.util.HashMap();
        this.defaultMarkerSVG = 0;
        this.touch = 0;
        this.defaultInfoWindow = 0;
        this.ready = 0;
        this.zoomControls = 0;
        this.lastAzimuth = 2143289344;
        org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants.setUserAgentValue(p8.getApplication().getPackageName());
        java.io.File v0_1 = new java.io.File(p8.getCacheDir(), "osmdroid");
        if ((v0_1.exists()) || (v0_1.mkdirs())) {
            org.osmdroid.config.Configuration.getInstance().setOsmdroidBasePath(v0_1);
            java.io.File v1_1 = new java.io.File(v0_1, "tiles");
            if ((v1_1.exists()) || (v1_1.mkdirs())) {
                org.osmdroid.config.Configuration.getInstance().setOsmdroidTileCache(v1_1);
                this.caches = 1;
            }
        }
        this.form = p8;
        this.touch = new com.google.appinventor.components.runtime.util.NativeOpenStreetMapController$TouchOverlay(this, 0);
        this.view = new com.google.appinventor.components.runtime.util.NativeOpenStreetMapController$CustomMapView(this, p8.getApplicationContext());
        this.locationProvider = new com.google.appinventor.components.runtime.util.NativeOpenStreetMapController$AppInventorLocationSensorAdapter(0);
        this.defaultInfoWindow = new org.osmdroid.views.overlay.infowindow.OverlayInfoWindow(this.view);
        this.view.setTilesScaledToDpi(1);
        this.view.setMapListener(this);
        this.view.getOverlayManager().add(this.touch);
        this.view.addOnTapListener(new com.google.appinventor.components.runtime.util.NativeOpenStreetMapController$1(this));
        this.zoomControls = new com.google.appinventor.components.runtime.view.ZoomControlView(this.view);
        this.userLocation = new org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay(this.locationProvider, this.view);
        this.scaleBar = new org.osmdroid.views.overlay.ScaleBarOverlay(this.view);
        this.scaleBar.setAlignBottom(1);
        this.scaleBar.setAlignRight(1);
        this.scaleBar.disableScaleBar();
        this.view.getOverlayManager().add(this.scaleBar);
        this.containerView = new android.widget.RelativeLayout(p8);
        this.containerView.setClipChildren(1);
        this.containerView.addView(this.view, new android.widget.RelativeLayout$LayoutParams(-1, -1));
        this.containerView.addView(this.zoomControls);
        this.zoomControls.setVisibility(8);
        return;
    }

Method com.google.appinventor.components.runtime.File$2.HandlePermissionResponse() calling method java.io.File.<init>()


    public void HandlePermissionResponse(String p10, boolean p11)
    {
        if (!p11) {
            this.this$0.form.dispatchPermissionDeniedEvent(this.this$0, "Delete", p10);
        } else {
            if (!this.val$fileName.startsWith("//")) {
                String v1 = com.google.appinventor.components.runtime.File.access$000(this.this$0, this.val$fileName);
                if ((com.google.appinventor.components.runtime.util.MediaUtil.isExternalFile(this.val$fileName)) && (this.this$0.form.isDeniedPermission("android.permission.WRITE_EXTERNAL_STORAGE"))) {
                    this.this$0.form.dispatchPermissionDeniedEvent(this.this$0, "Delete", new com.google.appinventor.components.runtime.errors.PermissionException("android.permission.WRITE_EXTERNAL_STORAGE"));
                }
                new java.io.File(v1).delete();
            } else {
                com.google.appinventor.components.runtime.Form v2_11 = this.this$0.form;
                com.google.appinventor.components.runtime.File v3_4 = this.this$0;
                String v6_2 = new Object[1];
                v6_2[0] = this.val$fileName;
                v2_11.dispatchErrorOccurredEvent(v3_4, "DeleteFile", 2105, v6_2);
            }
        }
        return;
    }

Method android.support.v4.provider.RawDocumentFile.renameTo() calling method java.io.File.<init>()


    public boolean renameTo(String p3)
    {
        int v1_1;
        java.io.File v0_1 = new java.io.File(this.mFile.getParentFile(), p3);
        if (!this.mFile.renameTo(v0_1)) {
            v1_1 = 0;
        } else {
            this.mFile = v0_1;
            v1_1 = 1;
        }
        return v1_1;
    }

Method android.support.v4.provider.RawDocumentFile.createFile() calling method java.io.File.<init>()


    public android.support.v4.provider.DocumentFile createFile(String p7, String p8)
    {
        String v1 = android.webkit.MimeTypeMap.getSingleton().getExtensionFromMimeType(p7);
        if (v1 != null) {
            p8 = new StringBuilder().append(p8).append(".").append(v1).toString();
        }
        java.io.File v2_1 = new java.io.File(this.mFile, p8);
        try {
            v2_1.createNewFile();
            int v3_5 = new android.support.v4.provider.RawDocumentFile(this, v2_1);
        } catch (java.io.IOException v0) {
            android.util.Log.w("DocumentFile", new StringBuilder().append("Failed to createFile: ").append(v0).toString());
            v3_5 = 0;
        }
        return v3_5;
    }

Method android.support.v4.provider.RawDocumentFile.createDirectory() calling method java.io.File.<init>()


    public android.support.v4.provider.DocumentFile createDirectory(String p3)
    {
        int v1_2;
        java.io.File v0_1 = new java.io.File(this.mFile, p3);
        if ((!v0_1.isDirectory()) && (!v0_1.mkdir())) {
            v1_2 = 0;
        } else {
            v1_2 = new android.support.v4.provider.RawDocumentFile(this, v0_1);
        }
        return v1_2;
    }

Method android.support.v4.content.FileProvider$SimplePathStrategy.getFileForUri() calling method java.io.File.<init>()


    public java.io.File getFileForUri(android.net.Uri p10)
    {
        String v2_1 = p10.getEncodedPath();
        int v4 = v2_1.indexOf(47, 1);
        String v5 = android.net.Uri.decode(v2_1.substring(1, v4));
        String vtmp6 = android.net.Uri.decode(v2_1.substring((v4 + 1)));
        java.io.File v3_1 = ((java.io.File) this.mRoots.get(v5));
        if (v3_1 != null) {
            try {
                java.io.File v1_2 = new java.io.File(v3_1, vtmp6).getCanonicalFile();
            } catch (java.io.IOException v0) {
                throw new IllegalArgumentException(new StringBuilder().append("Failed to resolve canonical path for ").append(v1_2).toString());
            }
            if (v1_2.getPath().startsWith(v3_1.getPath())) {
                return v1_2;
            } else {
                throw new SecurityException("Resolved path jumped beyond configured root");
            }
        } else {
            throw new IllegalArgumentException(new StringBuilder().append("Unable to find configured root for ").append(p10).toString());
        }
    }

Method org.acra.util.Installation.id() calling method java.io.File.<init>()


    public static declared_synchronized String id(android.content.Context p6)
    {
        try {
            if (org.acra.util.Installation.sID != null) {
                String v2_3 = org.acra.util.Installation.sID;
            } else {
                java.io.File v1_1 = new java.io.File(p6.getFilesDir(), "ACRA-INSTALLATION");
                try {
                    if (!v1_1.exists()) {
                        org.acra.util.Installation.writeInstallationFile(v1_1);
                    }
                } catch (RuntimeException v0_1) {
                    android.util.Log.w(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Couldn\'t retrieve InstallationId for ").append(p6.getPackageName()).toString(), v0_1);
                    v2_3 = "Couldn\'t retrieve InstallationId";
                } catch (RuntimeException v0_0) {
                    android.util.Log.w(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Couldn\'t retrieve InstallationId for ").append(p6.getPackageName()).toString(), v0_0);
                    v2_3 = "Couldn\'t retrieve InstallationId";
                }
                org.acra.util.Installation.sID = org.acra.util.Installation.readInstallationFile(v1_1);
            }
        } catch (String v2_5) {
            throw v2_5;
        }
        return v2_3;
    }

Method org.acra.SendWorker.approvePendingReports() calling method java.io.File.<init>()


    private void approvePendingReports()
    {
        android.util.Log.d(org.acra.ACRA.LOG_TAG, "Mark all pending reports as approved.");
        String[] v0 = new org.acra.CrashReportFinder(this.context).getCrashReportFiles();
        int v2 = v0.length;
        int v1 = 0;
        while (v1 < v2) {
            String v6 = v0[v1];
            if (!this.fileNameParser.isApproved(v6)) {
                java.io.File v5_1 = new java.io.File(this.context.getFilesDir(), v6);
                java.io.File v3_1 = new java.io.File(this.context.getFilesDir(), v6.replace(".stacktrace", "-approved.stacktrace"));
                if (!v5_1.renameTo(v3_1)) {
                    android.util.Log.e(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Could not rename approved report from ").append(v5_1).append(" to ").append(v3_1).toString());
                }
            }
            v1++;
        }
        return;
    }

Method org.acra.ErrorReporter.deletePendingReports() calling method java.io.File.<init>()


    private void deletePendingReports(boolean p10, boolean p11, int p12)
    {
        String[] v2 = new org.acra.CrashReportFinder(this.mContext).getCrashReportFiles();
        java.util.Arrays.sort(v2);
        if (v2 != null) {
            int v3 = 0;
            while (v3 < (v2.length - p12)) {
                String v0 = v2[v3];
                boolean v4 = this.fileNameParser.isApproved(v0);
                if (((v4) && (p10)) || ((!v4) && (p11))) {
                    java.io.File v1_1 = new java.io.File(this.mContext.getFilesDir(), v0);
                    if (!v1_1.delete()) {
                        android.util.Log.e(org.acra.ACRA.LOG_TAG, new StringBuilder().append("Could not delete report : ").append(v1_1).toString());
                    }
                }
                v3++;
            }
        }
        return;
    }

Method gnu.text.Path.<clinit>() calling method java.io.File.<init>()


    static Path()
    {
        gnu.text.Path.userDirPath = gnu.text.FilePath.valueOf(new java.io.File("."));
        gnu.text.Path.defaultPath = gnu.text.Path.userDirPath;
        gnu.text.Path.pathLocation = new ThreadLocal();
        return;
    }

Method gnu.kawa.util.FixupHtmlToc.main() calling method java.io.File.<init>()


    public static void main(String[] p6)
    {
        try {
            gnu.kawa.util.FileInfo v3_1 = new gnu.kawa.util.FileInfo[p6.length];
            gnu.kawa.util.FixupHtmlToc.argFiles = v3_1;
            int v1_1 = 0;
        } catch (Throwable v0) {
            System.err.println(new StringBuilder().append("caught ").append(v0).toString());
            v0.printStackTrace();
            return;
        }
        while (v1_1 < p6.length) {
            gnu.kawa.util.FileInfo v2 = gnu.kawa.util.FileInfo.find(new java.io.File(p6[v1_1]));
            v2.writeNeeded = 1;
            gnu.kawa.util.FixupHtmlToc.argFiles[v1_1] = v2;
            v1_1++;
        }
        int v1_0 = 0;
        while (v1_0 < p6.length) {
            gnu.kawa.util.FixupHtmlToc.argFiles[v1_0].scan();
            gnu.kawa.util.FixupHtmlToc.argFiles[v1_0].write();
            v1_0++;
        }
        return;
    }

Method gnu.kawa.util.FileInfo.writeLinks() calling method java.io.File.<init>()


    public void writeLinks(int p18, StringBuffer p19)
    {
        gnu.kawa.util.FileInfo v4 = this;
        gnu.kawa.util.FileInfo v13 = 0;
        int v8_1 = p18;
        while(true) {
            v8_1--;
            if (v8_1 < 0) {
                break;
            }
            v13 = v4;
            v4 = v4.parent;
        }
        if (p18 == 0) {
            p19.append("<!--start-children-toc-->\n");
        }
        if ((p18 != 0) || (this.parentName == null)) {
            p19.append("<ul>\n");
        } else {
            p19.append("<ul parent=\"");
            p19.append(this.parentName);
            p19.append("\">\n");
        }
        java.net.URI v12 = this.file.toURI();
        java.net.URI v5 = v4.file.toURI();
        int v8_0 = 0;
        while (v8_0 < v4.nchildren) {
            String v10 = v4.childLinkText[v8_0];
            int v2 = 0;
            if (p18 <= 0) {
                p19.append("<li>");
                p19.append(v10);
                if (v2 != 0) {
                    p19.append(10);
                    this.writeLinks((p18 - 1), p19);
                }
                p19.append("</li>\n");
            } else {
                java.util.regex.Matcher v9 = gnu.kawa.util.FileInfo.linkPat.matcher(v10);
                v9.find();
                String v7 = v9.group(1);
                v10 = v9.replaceFirst(new StringBuilder().append(" href=\"").append(gnu.text.Path.relativize(v5.resolve(v7).toString(), v12.toString())).append("\"").toString());
                int v6 = v7.indexOf(35);
                if (v6 >= 0) {
                    v7 = v7.substring(0, v6);
                }
                if (gnu.kawa.util.FileInfo.find(new java.io.File(v5.resolve(v7))) != v13) {
                    v2 = 0;
                } else {
                    v2 = 1;
                }
                if ((v2 != 0) || (p18 <= 1)) {
                }
            }
            v8_0++;
        }
        p19.append("</ul>\n");
        if (p18 == 0) {
            p19.append("<!--end-children-toc-->\n");
        }
        return;
    }

Method gnu.kawa.util.FileInfo.scan() calling method java.io.File.<init>()


    public void scan()
    {
        if (!this.scanned) {
            this.scanned = 1;
            this.fin = new java.io.FileInputStream(this.file);
            this.in = new gnu.mapping.InPort(new java.io.BufferedInputStream(this.fin));
            this.oldNavbarText = new StringBuffer();
            this.newNavbarText = new StringBuffer();
            if (this.writeNeeded) {
                this.bout = new java.io.ByteArrayOutputStream();
                this.cout = new gnu.mapping.OutPort(this.bout);
            }
            int v4 = 0;
            int v3 = 0;
            java.util.Vector v2_1 = new java.util.Vector();
            while(true) {
                String v5 = this.in.readLine();
                if (v5 == null) {
                    break;
                }
                if (v4 == 0) {
                    if (v5.indexOf("<!--start-generated-navbar-->") >= 0) {
                        v4 = 1;
                    }
                } else {
                    if (v5.indexOf("<!--end-generated-navbar-->") >= 0) {
                        break;
                    }
                    this.oldNavbarText.append(v5);
                    this.oldNavbarText.append(10);
                    if (v3 != 0) {
                        if (v5.indexOf("<!--end-children-toc-->") < 0) {
                            java.util.regex.Matcher v1 = gnu.kawa.util.FileInfo.childPat.matcher(v5);
                            if (v1.find()) {
                                v2_1.add(v1.group());
                            }
                            java.util.regex.Matcher v9 = gnu.kawa.util.FileInfo.parentPat.matcher(v5);
                            if ((v9.find()) && (this.parentName == null)) {
                                this.parentName = v9.group(1);
                            }
                        } else {
                            v3 = 0;
                        }
                    }
                    if (v5.indexOf("<!--start-children-toc-->") >= 0) {
                        v3 = 1;
                    }
                }
                if ((this.writeNeeded) && (v4 == 0)) {
                    this.cout.println(v5);
                }
            }
            String[] v0 = new String[v2_1.size()];
            this.nchildren = v0.length;
            v2_1.copyInto(v0);
            this.childLinkText = v0;
            if (!this.writeNeeded) {
                this.in.close();
            }
            if (this.parentName == null) {
                return;
            } else {
                gnu.kawa.util.FileInfo v8 = gnu.kawa.util.FileInfo.find(new java.io.File(this.file.toURI().resolve(this.parentName)));
                v8.scan();
                this.parent = v8;
                return;
            }
        }
        return;
    }

Method gnu.kawa.functions.FileUtils.createTempFile() calling method java.io.File.<init>()


    public static java.io.File createTempFile(String p7)
    {
        if (p7 == null) {
            p7 = "kawa~d.tmp";
        }
        String v1;
        String v3;
        int v4 = p7.indexOf(126);
        java.io.File v0_1 = 0;
        if (v4 >= 0) {
            v1 = p7.substring(0, v4);
            v3 = p7.substring((v4 + 2));
        } else {
            v1 = p7;
            v3 = ".tmp";
        }
        int v2 = v1.indexOf(java.io.File.separatorChar);
        if (v2 >= 0) {
            v0_1 = new java.io.File(v1.substring(0, v2));
            v1 = v1.substring((v2 + 1));
        }
        return java.io.File.createTempFile(v1, v3, v0_1);
    }

Method gnu.bytecode.ZipArchive.main() calling method java.io.File.<init>()


    public static void main(String[] p20)
    {
        if (p20.length < 2) {
            gnu.bytecode.ZipArchive.usage();
        }
        String v4 = p20[0];
        String v2 = p20[1];
        try {
            if ((!v4.equals("t")) && ((!v4.equals("p")) && (!v4.equals("x")))) {
                if (!v4.equals("q")) {
                    gnu.bytecode.ZipArchive.usage();
                } else {
                    int v17_32 = new java.io.FileOutputStream;
                    v17_32(v2);
                    java.util.zip.ZipOutputStream v13_3 = new java.util.zip.ZipOutputStream(v17_32);
                    int v8_1 = 2;
                    while (v8_1 < p20.length) {
                        java.io.File v9_3 = new java.io.File(p20[v8_1]);
                        if (v9_3.exists()) {
                            if (v9_3.canRead()) {
                                int v12 = ((int) v9_3.length());
                                java.io.FileInputStream v7_1 = new java.io.FileInputStream(v9_3);
                                byte[] v5 = new byte[v12];
                                if (v7_1.read(v5) == v12) {
                                    v7_1.close();
                                    java.util.zip.ZipEntry v14_1 = new java.util.zip.ZipEntry(p20[v8_1]);
                                    v14_1.setSize(((long) v12));
                                    v14_1.setTime(v9_3.lastModified());
                                    v13_3.putNextEntry(v14_1);
                                    v13_3.write(v5, 0, v12);
                                    v8_1++;
                                } else {
                                    throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - read error").toString());
                                }
                            } else {
                                throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - not readable").toString());
                            }
                        } else {
                            throw new java.io.IOException(new StringBuilder().append(p20[v8_1]).append(" - not found").toString());
                        }
                    }
                    v13_3.close();
                }
            } else {
                java.io.PrintStream v11 = System.out;
                byte[] v3 = new byte[1024];
                if (p20.length != 2) {
                    java.util.zip.ZipOutputStream v13_1 = new java.util.zip.ZipFile(v2);
                    int v8_0 = 2;
                    while (v8_0 < p20.length) {
                        String v10_0 = p20[v8_0];
                        java.util.zip.ZipEntry v15_0 = v13_1.getEntry(v10_0);
                        if (v15_0 != null) {
                            if (!v4.equals("t")) {
                                if (!v4.equals("p")) {
                                    gnu.bytecode.ZipArchive.copy(v13_1.getInputStream(v15_0), v10_0, v3);
                                } else {
                                    gnu.bytecode.ZipArchive.copy(v13_1.getInputStream(v15_0), v11, v3);
                                }
                            } else {
                                v11.print(v10_0);
                                v11.print(" size: ");
                                v11.println(v15_0.getSize());
                            }
                        } else {
                            System.err.println(new StringBuilder().append("zipfile ").append(v2).append(":").append(p20[v8_0]).append(" - not found").toString());
                            System.exit(-1);
                        }
                        v8_0++;
                    }
                } else {
                    int v17_19 = new java.io.FileInputStream;
                    v17_19(v2);
                    java.util.zip.ZipInputStream v16 = new java.util.zip.ZipInputStream;
                    v16(new java.io.BufferedInputStream(v17_19));
                    while(true) {
                        java.util.zip.ZipEntry v15_1 = v16.getNextEntry();
                        if (v15_1 == null) {
                            break;
                        }
                        String v10_1 = v15_1.getName();
                        if (!v4.equals("t")) {
                            if (!v4.equals("p")) {
                                gnu.bytecode.ZipArchive.copy(v16, v10_1, v3);
                            } else {
                                gnu.bytecode.ZipArchive.copy(v16, v11, v3);
                            }
                        } else {
                            v11.print(v10_1);
                            v11.print(" size: ");
                            v11.println(v15_1.getSize());
                        }
                    }
                }
            }
        } catch (java.io.IOException v6) {
            System.err.println(new StringBuilder().append("I/O Exception:  ").append(v6).toString());
        }
        return;
    }

Method gnu.bytecode.ZipArchive.copy() calling method java.io.File.<init>()


    public static void copy(java.io.InputStream p7, String p8, byte[] p9)
    {
        java.io.File v2_1 = new java.io.File(p8);
        String v1 = v2_1.getParent();
        if (v1 != null) {
            java.io.File v0_1 = new java.io.File(v1);
            if (!v0_1.exists()) {
                System.err.println(new StringBuilder().append("mkdirs:").append(v0_1.mkdirs()).toString());
            }
        }
        if (p8.charAt((p8.length() - 1)) != 47) {
            java.io.BufferedOutputStream v3_1 = new java.io.BufferedOutputStream(new java.io.FileOutputStream(v2_1));
            gnu.bytecode.ZipArchive.copy(p7, v3_1, p9);
            v3_1.close();
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD.serveFile() calling method java.io.File.<init>()


    public com.google.appinventor.components.runtime.util.NanoHTTPD$Response serveFile(String p41, java.util.Properties p42, java.io.File p43, boolean p44)
    {
        com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_0 = 0;
        if (!p43.isDirectory()) {
            v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
            v29_0(this, "500 Internal Server Error", "text/plain", "INTERNAL ERRROR: serveFile(): given homeDir is not a directory.");
        }
        if (v29_0 == null) {
            p41 = p41.trim().replace(java.io.File.separatorChar, 47);
            if (p41.indexOf(63) >= 0) {
                p41 = p41.substring(0, p41.indexOf(63));
            }
            if ((p41.startsWith("..")) || ((p41.endsWith("..")) || (p41.indexOf("../") >= 0))) {
                v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                v29_0(this, "403 Forbidden", "text/plain", "FORBIDDEN: Won\'t serve ../ for security reasons.");
            }
        }
        java.io.File v14_1 = new java.io.File(p43, p41);
        if ((v29_0 == null) && (!v14_1.exists())) {
            v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
            v29_0(this, "404 Not Found", "text/plain", "Error 404, file not found.");
        }
        if ((v29_0 != null) || (!v14_1.isDirectory())) {
            com.google.appinventor.components.runtime.util.NanoHTTPD$Response v30 = v29_0;
        } else {
            if (!p41.endsWith("/")) {
                p41 = new StringBuilder().append(p41).append("/").toString();
                v29_0 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                v29_0(this, "301 Moved Permanently", "text/html", new StringBuilder().append("<html><body>Redirected: <a href=\"").append(p41).append("\">").append(p41).append("</a></body></html>").toString());
                v29_0.addHeader("Location", p41);
            }
            if (v29_0 != null) {
            } else {
                StringBuilder v35_3 = new java.io.File;
                v35_3(v14_1, "index.html");
                if (!v35_3.exists()) {
                    StringBuilder v35_5 = new java.io.File;
                    v35_5(v14_1, "index.htm");
                    if (!v35_5.exists()) {
                        if ((!p44) || (!v14_1.canRead())) {
                            com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_1 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                            v29_1(this, "403 Forbidden", "text/plain", "FORBIDDEN: No directory listing.");
                            v30 = v29_1;
                        } else {
                            String[] v15 = v14_1.list();
                            String v25_0 = new StringBuilder().append("<html><body><h1>Directory ").append(p41).append("</h1><br/>").toString();
                            if (p41.length() > 1) {
                                String v34 = p41.substring(0, (p41.length() - 1));
                                int v31 = v34.lastIndexOf(47);
                                if ((v31 >= 0) && (v31 < v34.length())) {
                                    v25_0 = new StringBuilder().append(v25_0).append("<b><a href=\"").append(p41.substring(0, (v31 + 1))).append("\">..</a></b><br/>").toString();
                                }
                            }
                            if (v15 != null) {
                                int v19 = 0;
                                while (v19 < v15.length) {
                                    java.io.File v6_1 = new java.io.File(v14_1, v15[v19]);
                                    boolean v7 = v6_1.isDirectory();
                                    if (v7) {
                                        v25_0 = new StringBuilder().append(v25_0).append("<b>").toString();
                                        v15[v19] = new StringBuilder().append(v15[v19]).append("/").toString();
                                    }
                                    String v25_2 = new StringBuilder().append(v25_0).append("<a href=\"").append(this.encodeUri(new StringBuilder().append(p41).append(v15[v19]).toString())).append("\">").append(v15[v19]).append("</a>").toString();
                                    if (v6_1.isFile()) {
                                        String v25_4;
                                        long v22 = v6_1.length();
                                        String v25_3 = new StringBuilder().append(v25_2).append(" &nbsp;<font size=2>(").toString();
                                        if (v22 >= 1024) {
                                            if (v22 >= 1048576) {
                                                v25_4 = new StringBuilder().append(v25_3).append((v22 / 1048576)).append(".").append((((v22 % 1048576) / 10) % 100)).append(" MB").toString();
                                            } else {
                                                v25_4 = new StringBuilder().append(v25_3).append((v22 / 1024)).append(".").append((((v22 % 1024) / 10) % 100)).append(" KB").toString();
                                            }
                                        } else {
                                            v25_4 = new StringBuilder().append(v25_3).append(v22).append(" bytes").toString();
                                        }
                                        v25_2 = new StringBuilder().append(v25_4).append(")</font>").toString();
                                    }
                                    v25_0 = new StringBuilder().append(v25_2).append("<br/>").toString();
                                    if (v7) {
                                        v25_0 = new StringBuilder().append(v25_0).append("</b>").toString();
                                    }
                                    v19++;
                                }
                            }
                            com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_2 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                            v29_2(this, "200 OK", "text/html", new StringBuilder().append(v25_0).append("</body></html>").toString());
                            v30 = v29_2;
                        }
                    } else {
                        v14_1 = new java.io.File(p43, new StringBuilder().append(p41).append("/index.htm").toString());
                        v30 = v29_0;
                    }
                } else {
                    v14_1 = new java.io.File(p43, new StringBuilder().append(p41).append("/index.html").toString());
                    v30 = v29_0;
                }
            }
        }
        com.google.appinventor.components.runtime.util.NanoHTTPD$Response v29_3;
        if (v30 != null) {
            v29_3 = v30;
        } else {
            String v21 = 0;
            try {
                int v10 = v14_1.getCanonicalPath().lastIndexOf(46);
            } catch (java.io.IOException v20) {
                v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                v29_3(this, "403 Forbidden", "text/plain", "FORBIDDEN: Reading file failed.");
            }
            if (v10 >= 0) {
                v21 = ((String) com.google.appinventor.components.runtime.util.NanoHTTPD.theMimeTypes.get(v14_1.getCanonicalPath().substring((v10 + 1)).toLowerCase()));
            }
            if (v21 == null) {
                v21 = "application/octet-stream";
            }
            String v11 = Integer.toHexString(new StringBuilder().append(v14_1.getAbsolutePath()).append(v14_1.lastModified()).append("").append(v14_1.length()).toString().hashCode());
            long v32 = 0;
            long v12 = -1;
            String v28 = p42.getProperty("range");
            if ((v28 != null) && (v28.startsWith("bytes="))) {
                v28 = v28.substring("bytes=".length());
                int v24 = v28.indexOf(45);
                if (v24 > 0) {
                    try {
                        v32 = Long.parseLong(v28.substring(0, v24));
                        v12 = Long.parseLong(v28.substring((v24 + 1)));
                    } catch (StringBuilder v35) {
                    }
                }
            }
            long v16 = v14_1.length();
            try {
                if ((v28 == null) || (v32 < 0)) {
                    if (!v11.equals(p42.getProperty("if-none-match"))) {
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        String v36_67 = new java.io.FileInputStream;
                        v36_67(v14_1);
                        v29_3(this, "200 OK", v21, v36_67);
                        v29_3.addHeader("Content-Length", new StringBuilder().append("").append(v16).toString());
                        v29_3.addHeader("ETag", v11);
                    } else {
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        v29_3(this, "304 Not Modified", v21, "");
                    }
                } else {
                    if (v32 < v16) {
                        if (v12 < 0) {
                            v12 = (v16 - 1);
                        }
                        long v26 = ((v12 - v32) + 1);
                        if (v26 < 0) {
                            v26 = 0;
                        }
                        long v8 = v26;
                        com.google.appinventor.components.runtime.util.NanoHTTPD$2 v18 = new com.google.appinventor.components.runtime.util.NanoHTTPD$2;
                        v18(this, v14_1, v8);
                        v18.skip(v32);
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        v29_3(this, "206 Partial Content", v21, v18);
                        v29_3.addHeader("Content-Length", new StringBuilder().append("").append(v8).toString());
                        v29_3.addHeader("Content-Range", new StringBuilder().append("bytes ").append(v32).append("-").append(v12).append("/").append(v16).toString());
                        v29_3.addHeader("ETag", v11);
                    } else {
                        v29_3 = new com.google.appinventor.components.runtime.util.NanoHTTPD$Response;
                        v29_3(this, "416 Requested Range Not Satisfiable", "text/plain", "");
                        v29_3.addHeader("Content-Range", new StringBuilder().append("bytes 0-0/").append(v16).toString());
                        v29_3.addHeader("ETag", v11);
                    }
                }
            } catch (java.io.IOException v20) {
            }
        }
        v29_3.addHeader("Accept-Ranges", "bytes");
        return v29_3;
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD.main() calling method java.io.File.<init>()


    public static void main(String[] p7)
    {
        com.google.appinventor.components.runtime.util.NanoHTTPD.myOut.println("NanoHTTPD 1.25 (C) 2001,2005-2011 Jarno Elonen and (C) 2010 Konstantinos Togias\n(Command line options: [-p port] [-d root-dir] [--licence])\n");
        int v2 = 80;
        java.io.File v3 = new java.io.File(".").getAbsoluteFile();
        int v0 = 0;
        while (v0 < p7.length) {
            if (!p7[v0].equalsIgnoreCase("-p")) {
                if (!p7[v0].equalsIgnoreCase("-d")) {
                    if (p7[v0].toLowerCase().endsWith("licence")) {
                        com.google.appinventor.components.runtime.util.NanoHTTPD.myOut.println("Copyright (C) 2001,2005-2011 by Jarno Elonen <elonen@iki.fi>\nand Copyright (C) 2010 by Konstantinos Togias <info@ktogias.gr>\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\nRedistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer. Redistributions in\nbinary form must reproduce the above copyright notice, this list of\nconditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution. The name of the author may not\nbe used to endorse or promote products derived from this software without\nspecific prior written permission. \n \nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS\'\' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n");
                        break;
                    }
                } else {
                    v3 = new java.io.File(p7[(v0 + 1)]).getAbsoluteFile();
                }
            } else {
                v2 = Integer.parseInt(p7[(v0 + 1)]);
            }
            v0++;
        }
        try {
            new com.google.appinventor.components.runtime.util.NanoHTTPD(v2, v3);
        } catch (java.io.IOException v1) {
            com.google.appinventor.components.runtime.util.NanoHTTPD.myErr.println(new StringBuilder().append("Couldn\'t start server:\n").append(v1).toString());
            System.exit(-1);
        }
        com.google.appinventor.components.runtime.util.NanoHTTPD.myOut.println(new StringBuilder().append("Now serving files in port ").append(v2).append(" from \"").append(v3).append("\"").toString());
        com.google.appinventor.components.runtime.util.NanoHTTPD.myOut.println("Hit Enter to stop.\n");
        try {
            System.in.read();
        } catch (Throwable v4) {
        }
        return;
    }

Method com.google.appinventor.components.runtime.util.NanoHTTPD$HTTPSession.saveTmpFile() calling method java.io.File.<init>()


    private String saveTmpFile(byte[] p9, int p10, int p11)
    {
        String v2 = "";
        if (p11 > 0) {
            try {
                java.io.File v3 = java.io.File.createTempFile("NanoHTTPD", "", new java.io.File(System.getProperty("java.io.tmpdir")));
                java.io.FileOutputStream v1_1 = new java.io.FileOutputStream(v3);
                v1_1.write(p9, p10, p11);
                v1_1.close();
                v2 = v3.getAbsolutePath();
            } catch (Exception v0) {
                com.google.appinventor.components.runtime.util.NanoHTTPD.myErr.println(new StringBuilder().append("Error: ").append(v0.getMessage()).toString());
            }
        }
        return v2;
    }

Method com.google.appinventor.components.runtime.util.MediaUtil.fileUrlToFilePath() calling method java.io.File.<init>()


    static String fileUrlToFilePath(String p4)
    {
        try {
            return new java.io.File(new java.net.URL(p4).toURI()).getAbsolutePath();
        } catch (Exception v0) {
            throw new java.io.IOException(new StringBuilder().append("Unable to determine file path of file url ").append(p4).toString());
        } catch (Exception v0) {
            throw new java.io.IOException(new StringBuilder().append("Unable to determine file path of file url ").append(p4).toString());
        }
    }

Method com.google.appinventor.components.runtime.util.JsonUtil.writeFile() calling method java.io.File.<init>()


    private static String writeFile(String p10, String p11)
    {
        try {
            if ((p11.length() == 3) || (p11.length() == 4)) {
                byte[] v0 = android.util.Base64.decode(p10, 0);
                java.io.File v2_1 = new java.io.File(new StringBuilder().append(android.os.Environment.getExternalStorageDirectory()).append("/AppInventorBinaries").toString());
                v2_1.mkdirs();
                java.io.File v1 = java.io.File.createTempFile("BinFile", new StringBuilder().append(".").append(p11).toString(), v2_1);
                java.io.FileOutputStream v5_1 = new java.io.FileOutputStream(v1);
                v5_1.write(v0);
                v5_1.close();
                String v6 = v1.toURI().toASCIIString();
                com.google.appinventor.components.runtime.util.JsonUtil.trimDirectory(20, v2_1);
                return v6;
            } else {
                throw new com.google.appinventor.components.runtime.errors.YailRuntimeError("File Extension must be three or four characters", "Write Error");
            }
        } catch (Exception v3) {
            throw new com.google.appinventor.components.runtime.errors.YailRuntimeError(v3.getMessage(), "Write");
        }
    }

Method com.google.appinventor.components.runtime.util.FileUtil.writeStreamToFile() calling method java.io.File.<init>()


    public static String writeStreamToFile(java.io.InputStream p3, String p4)
    {
        java.io.File v0_1 = new java.io.File(p4);
        v0_1.getParentFile().mkdirs();
        java.io.FileOutputStream v1_1 = new java.io.FileOutputStream(v0_1);
        try {
            com.google.appinventor.components.runtime.util.FileUtil.copy(p3, v1_1);
            Throwable v2_0 = v0_1.toURI().toString();
            v1_1.flush();
            v1_1.close();
            return v2_0;
        } catch (Throwable v2_1) {
            v1_1.flush();
            v1_1.close();
            throw v2_1;
        }
    }

Method com.google.appinventor.components.runtime.util.FileUtil.readFile() calling method java.io.File.<init>()


    public static byte[] readFile(String p9)
    {
        java.io.File v3_1 = new java.io.File(p9);
        if (v3_1.isFile()) {
            byte[] v1 = 0;
            try {
                java.io.FileInputStream v4 = com.google.appinventor.components.runtime.util.FileUtil.openFile(p9);
                int v2 = ((int) v3_1.length());
                v1 = new byte[v2];
                int v5 = 0;
            } catch (int v6_1) {
                if (v4 != null) {
                    v4.close();
                }
                throw v6_1;
            }
            do {
                int v0 = v4.read(v1, v5, (v2 - v5));
                if (v0 > 0) {
                    v5 += v0;
                }
            } while((v5 != v2) && (v0 >= 0));
            if (v4 != null) {
                v4.close();
            }
            return v1;
        } else {
            throw new java.io.FileNotFoundException(new StringBuilder().append("Cannot find file: ").append(p9).toString());
        }
    }

Method com.google.appinventor.components.runtime.util.FileUtil.openFile() calling method java.io.File.<init>()


    public static java.io.FileInputStream openFile(java.net.URI p2)
    {
        if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFileUrl(p2.toString())) {
            com.google.appinventor.components.runtime.Form.getActiveForm().assertPermission("android.permission.READ_EXTERNAL_STORAGE");
        }
        return new java.io.FileInputStream(new java.io.File(p2));
    }

Method com.google.appinventor.components.runtime.util.FileUtil.getFileUrl() calling method java.io.File.<init>()


    public static String getFileUrl(String p2)
    {
        return new java.io.File(p2).toURI().toString();
    }

Method com.google.appinventor.components.runtime.util.FileUtil.getExternalFile() calling method java.io.File.<init>()


    public static java.io.File getExternalFile(String p5)
    {
        com.google.appinventor.components.runtime.util.FileUtil.checkExternalStorageWriteable();
        java.io.File v1_1 = new java.io.File(android.os.Environment.getExternalStorageDirectory(), p5);
        java.io.File v0 = v1_1.getParentFile();
        if (com.google.appinventor.components.runtime.Form.getActiveForm() != null) {
            com.google.appinventor.components.runtime.Form.getActiveForm().assertPermission("android.permission.WRITE_EXTERNAL_STORAGE");
        }
        if ((v0.exists()) || (v0.mkdirs())) {
            if ((!v1_1.exists()) || (v1_1.delete())) {
                return v1_1;
            } else {
                throw new java.io.IOException(new StringBuilder().append("Cannot overwrite existing file ").append(v1_1.getAbsolutePath()).toString());
            }
        } else {
            throw new java.io.IOException(new StringBuilder().append("Unable to create directory ").append(v0.getAbsolutePath()).toString());
        }
    }

Method com.google.appinventor.components.runtime.util.AssetFetcher.getFile() calling method java.io.File.<init>()


    private static java.io.File getFile(String p18, String p19, String p20, int p21)
    {
        try {
            java.io.File v10;
            if (p21 <= 1) {
                int v6 = 0;
                v10 = 0;
                try {
                    java.net.HttpURLConnection v4_0 = ((java.net.HttpURLConnection) new java.net.URL(p18).openConnection());
                } catch (java.io.IOException v5) {
                    android.util.Log.e(com.google.appinventor.components.runtime.util.AssetFetcher.LOG_TAG, new StringBuilder().append("Exception while fetching ").append(p18).toString());
                    v10 = com.google.appinventor.components.runtime.util.AssetFetcher.getFile(p18, p19, p20, (p21 + 1));
                }
                if (v4_0 == null) {
                    v6 = 1;
                } else {
                    v4_0.setRequestMethod("GET");
                    v4_0.addRequestProperty("Cookie", new StringBuilder().append("AppInventor = ").append(p19).toString());
                    android.util.Log.d(com.google.appinventor.components.runtime.util.AssetFetcher.LOG_TAG, new StringBuilder().append("asset = ").append(p20).append(" responseCode = ").append(v4_0.getResponseCode()).toString());
                    java.io.File v11_1 = new java.io.File(new StringBuilder().append(com.google.appinventor.components.runtime.util.AssetFetcher.REPL_ASSET_DIR).append(p20).toString());
                    try {
                        java.io.File v12 = v11_1.getParentFile();
                    } catch (java.io.IOException v5) {
                    }
                    if (!v12.exists()) {
                        v12.mkdirs();
                    }
                    java.io.BufferedInputStream v8_1 = new java.io.BufferedInputStream(v4_0.getInputStream(), 4096);
                    java.io.BufferedOutputStream v9_1 = new java.io.BufferedOutputStream(new java.io.FileOutputStream(v11_1), 4096);
                    try {
                        while(true) {
                            int v3 = v8_1.read();
                            v9_1.write(v3);
                        }
                        v9_1.flush();
                        v9_1.close();
                        v4_0.disconnect();
                        v10 = v11_1;
                    } catch (String v15_23) {
                        v9_1.close();
                        throw v15_23;
                    } catch (java.io.IOException v5) {
                        android.util.Log.e(com.google.appinventor.components.runtime.util.AssetFetcher.LOG_TAG, "copying assets", v5);
                        v6 = 1;
                        v9_1.close();
                    }
                    if (v3 != -1) {
                    }
                }
                if (v6 != 0) {
                    v10 = com.google.appinventor.components.runtime.util.AssetFetcher.getFile(p18, p19, p20, (p21 + 1));
                }
            } else {
                if (!com.google.appinventor.components.runtime.util.AssetFetcher.inError) {
                    com.google.appinventor.components.runtime.util.AssetFetcher.inError = 1;
                    com.google.appinventor.components.runtime.Form.getActiveForm().runOnUiThread(new com.google.appinventor.components.runtime.util.AssetFetcher$2(p18));
                    v10 = 0;
                } else {
                    v10 = 0;
                }
            }
        } catch (String v15_9) {
            throw v15_9;
        }
        return v10;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDexExtractor.performExtractions() calling method java.io.File.<init>()


    private static java.util.List performExtractions(java.io.File p14, java.io.File p15)
    {
        String v4 = new StringBuilder().append(p14.getName()).append(".classes").toString();
        com.google.appinventor.components.runtime.multidex.MultiDexExtractor.prepareDexDir(p15, v4);
        java.util.ArrayList v6_1 = new java.util.ArrayList();
        java.util.zip.ZipFile v0_1 = new java.util.zip.ZipFile(p14);
        int v9 = 2;
        try {
            java.util.zip.ZipEntry v1 = v0_1.getEntry(new StringBuilder().append("classes").append(2).append(".dex").toString());
        } catch (String v10_13) {
            try {
                v0_1.close();
            } catch (java.io.IOException v2_0) {
                android.util.Log.w("MultiDex", "Failed to close resource", v2_0);
            }
            throw v10_13;
        }
        while (v1 != null) {
            java.io.File v3_1 = new java.io.File(p15, new StringBuilder().append(v4).append(v9).append(".zip").toString());
            v6_1.add(v3_1);
            android.util.Log.i("MultiDex", new StringBuilder().append("Extraction is needed for file ").append(v3_1).toString());
            int v8 = 0;
            boolean v7 = 0;
            while ((v8 < 3) && (!v7)) {
                String v10_5;
                v8++;
                com.google.appinventor.components.runtime.multidex.MultiDexExtractor.extract(v0_1, v1, v3_1, v4);
                v7 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.verifyZipFile(v3_1);
                StringBuilder vtmp22 = new StringBuilder().append("Extraction ");
                if (!v7) {
                    v10_5 = "failed";
                } else {
                    v10_5 = "success";
                }
                android.util.Log.i("MultiDex", vtmp22.append(v10_5).append(" - length ").append(v3_1.getAbsolutePath()).append(": ").append(v3_1.length()).toString());
                if (!v7) {
                    v3_1.delete();
                    if (v3_1.exists()) {
                        android.util.Log.w("MultiDex", new StringBuilder().append("Failed to delete corrupted secondary dex \'").append(v3_1.getPath()).append("\'").toString());
                    }
                }
            }
            if (v7) {
                v9++;
                v1 = v0_1.getEntry(new StringBuilder().append("classes").append(v9).append(".dex").toString());
            } else {
                throw new java.io.IOException(new StringBuilder().append("Could not create zip file ").append(v3_1.getAbsolutePath()).append(" for secondary dex (").append(v9).append(")").toString());
            }
        }
        try {
            v0_1.close();
        } catch (java.io.IOException v2_1) {
            android.util.Log.w("MultiDex", "Failed to close resource", v2_1);
        }
        return v6_1;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDexExtractor.mustLoad() calling method java.io.File.<init>()


    public static boolean mustLoad(android.content.Context p4, android.content.pm.ApplicationInfo p5)
    {
        java.io.File v2_1 = new java.io.File(p5.sourceDir);
        try {
            int v3_1;
            if (!com.google.appinventor.components.runtime.multidex.MultiDexExtractor.isModified(p4, v2_1, com.google.appinventor.components.runtime.multidex.MultiDexExtractor.getZipCrc(v2_1))) {
                v3_1 = 0;
            } else {
                v3_1 = 1;
            }
        } catch (int v3) {
        }
        return v3_1;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDexExtractor.loadExistingExtractions() calling method java.io.File.<init>()


    private static java.util.List loadExistingExtractions(android.content.Context p9, java.io.File p10, java.io.File p11)
    {
        android.util.Log.i("MultiDex", "loading existing secondary dex files");
        String v1 = new StringBuilder().append(p10.getName()).append(".classes").toString();
        int v5 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.getMultiDexPreferences(p9).getInt("dex.number", 1);
        java.util.ArrayList v3_1 = new java.util.ArrayList(v5);
        int v4 = 2;
        while (v4 <= v5) {
            java.io.File v0_1 = new java.io.File(p11, new StringBuilder().append(v1).append(v4).append(".zip").toString());
            if (!v0_1.isFile()) {
                throw new java.io.IOException(new StringBuilder().append("Missing extracted secondary dex file \'").append(v0_1.getPath()).append("\'").toString());
            } else {
                v3_1.add(v0_1);
                if (com.google.appinventor.components.runtime.multidex.MultiDexExtractor.verifyZipFile(v0_1)) {
                    v4++;
                } else {
                    android.util.Log.i("MultiDex", new StringBuilder().append("Invalid zip file: ").append(v0_1).toString());
                    throw new java.io.IOException("Invalid ZIP file.");
                }
            }
        }
        return v3_1;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDexExtractor.load() calling method java.io.File.<init>()


    static java.util.List load(android.content.Context p9, android.content.pm.ApplicationInfo p10, java.io.File p11, boolean p12)
    {
        java.util.List v0;
        android.util.Log.i("MultiDex", new StringBuilder().append("MultiDexExtractor.load(").append(p10.sourceDir).append(", ").append(p12).append(")").toString());
        java.io.File v8_1 = new java.io.File(p10.sourceDir);
        long v4 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.getZipCrc(v8_1);
        if ((p12) || (com.google.appinventor.components.runtime.multidex.MultiDexExtractor.isModified(p9, v8_1, v4))) {
            android.util.Log.i("MultiDex", "Detected that extraction must be performed.");
            v0 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.performExtractions(v8_1, p11);
            com.google.appinventor.components.runtime.multidex.MultiDexExtractor.putStoredApkInfo(p9, com.google.appinventor.components.runtime.multidex.MultiDexExtractor.getTimeStamp(v8_1), v4, (v0.size() + 1));
        } else {
            try {
                v0 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.loadExistingExtractions(p9, v8_1, p11);
            } catch (java.io.IOException v7) {
                android.util.Log.w("MultiDex", "Failed to reload existing extracted secondary dex files, falling back to fresh extraction", v7);
                v0 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.performExtractions(v8_1, p11);
                com.google.appinventor.components.runtime.multidex.MultiDexExtractor.putStoredApkInfo(p9, com.google.appinventor.components.runtime.multidex.MultiDexExtractor.getTimeStamp(v8_1), v4, (v0.size() + 1));
            }
        }
        android.util.Log.i("MultiDex", new StringBuilder().append("load found ").append(v0.size()).append(" secondary dex files").toString());
        return v0;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDex.install() calling method java.io.File.<init>()


    public static boolean install(android.content.Context p14, boolean p15)
    {
        RuntimeException v7_3 = 1;
        com.google.appinventor.components.runtime.multidex.MultiDex.installedApk.clear();
        android.util.Log.i("MultiDex", new StringBuilder().append("install: doIt = ").append(p15).toString());
        if (!com.google.appinventor.components.runtime.multidex.MultiDex.IS_VM_MULTIDEX_CAPABLE) {
            if (android.os.Build$VERSION.SDK_INT >= 4) {
                try {
                    android.content.pm.ApplicationInfo v1 = com.google.appinventor.components.runtime.multidex.MultiDex.getApplicationInfo(p14);
                } catch (RuntimeException v3_0) {
                    android.util.Log.e("MultiDex", "Multidex installation failure", v3_0);
                    throw new RuntimeException(new StringBuilder().append("Multi dex installation failed (").append(v3_0.getMessage()).append(").").toString());
                }
                if (v1 != null) {
                    String v0 = v1.sourceDir;
                    if (!com.google.appinventor.components.runtime.multidex.MultiDex.installedApk.contains(v0)) {
                        com.google.appinventor.components.runtime.multidex.MultiDex.installedApk.add(v0);
                        if (android.os.Build$VERSION.SDK_INT > 20) {
                            android.util.Log.w("MultiDex", new StringBuilder().append("MultiDex is not guaranteed to work in SDK version ").append(android.os.Build$VERSION.SDK_INT).append(": SDK version higher than ").append(20).append(" should be backed by runtime with built-in multidex capabilty but it\'s not the case here: java.vm.version=\"").append(System.getProperty("java.vm.version")).append("\"").toString());
                        }
                        try {
                            ClassLoader v5 = p14.getClassLoader();
                        } catch (RuntimeException v3_1) {
                            android.util.Log.w("MultiDex", "Failure while trying to obtain Context class loader. Must be running in test mode. Skip patching.", v3_1);
                        }
                        if (v5 != null) {
                            com.google.appinventor.components.runtime.multidex.MultiDex.clearOldDexDir(p14);
                            java.io.File v2_1 = new java.io.File(v1.dataDir, com.google.appinventor.components.runtime.multidex.MultiDex.SECONDARY_FOLDER_NAME);
                            if ((p15) || (!com.google.appinventor.components.runtime.multidex.MultiDexExtractor.mustLoad(p14, v1))) {
                                android.util.Log.d("MultiDex", "Proceeding with installation...");
                                java.util.List v4_0 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.load(p14, v1, v2_1, 0);
                                if (!com.google.appinventor.components.runtime.multidex.MultiDex.checkValidZipFiles(v4_0)) {
                                    android.util.Log.w("MultiDex", "Files were not valid zip files.  Forcing a reload.");
                                    java.util.List v4_1 = com.google.appinventor.components.runtime.multidex.MultiDexExtractor.load(p14, v1, v2_1, 1);
                                    if (!com.google.appinventor.components.runtime.multidex.MultiDex.checkValidZipFiles(v4_1)) {
                                        throw new RuntimeException("Zip files were not valid.");
                                    } else {
                                        com.google.appinventor.components.runtime.multidex.MultiDex.installSecondaryDexes(v5, v2_1, v4_1);
                                    }
                                } else {
                                    com.google.appinventor.components.runtime.multidex.MultiDex.installSecondaryDexes(v5, v2_1, v4_0);
                                }
                                android.util.Log.i("MultiDex", "install done");
                            } else {
                                android.util.Log.d("MultiDex", "Returning because of mustLoad");
                                v7_3 = 0;
                            }
                        } else {
                            android.util.Log.e("MultiDex", "Context class loader is null. Must be running in test mode. Skip patching.");
                        }
                    } else {
                    }
                } else {
                    android.util.Log.d("MultiDex", "applicationInfo is null, returning");
                }
            } else {
                throw new RuntimeException(new StringBuilder().append("Multi dex installation failed. SDK ").append(android.os.Build$VERSION.SDK_INT).append(" is unsupported. Min SDK version is ").append(4).append(".").toString());
            }
        } else {
            android.util.Log.i("MultiDex", "VM has multidex support, MultiDex support library is disabled.");
        }
        return v7_3;
    }

Method com.google.appinventor.components.runtime.multidex.MultiDex.clearOldDexDir() calling method java.io.File.<init>()


    private static void clearOldDexDir(android.content.Context p10)
    {
        java.io.File v0_1 = new java.io.File(p10.getFilesDir(), "secondary-dexes");
        if (v0_1.isDirectory()) {
            android.util.Log.i("MultiDex", new StringBuilder().append("Clearing old secondary dex dir (").append(v0_1.getPath()).append(").").toString());
            java.io.File[] v1 = v0_1.listFiles();
            if (v1 != null) {
                String v4_11 = v1.length;
                int v3_0 = 0;
                while (v3_0 < v4_11) {
                    java.io.File v2 = v1[v3_0];
                    android.util.Log.i("MultiDex", new StringBuilder().append("Trying to delete old file ").append(v2.getPath()).append(" of size ").append(v2.length()).toString());
                    if (v2.delete()) {
                        android.util.Log.i("MultiDex", new StringBuilder().append("Deleted old file ").append(v2.getPath()).toString());
                    } else {
                        android.util.Log.w("MultiDex", new StringBuilder().append("Failed to delete old file ").append(v2.getPath()).toString());
                    }
                    v3_0++;
                }
                if (v0_1.delete()) {
                    android.util.Log.i("MultiDex", new StringBuilder().append("Deleted old secondary dex dir ").append(v0_1.getPath()).toString());
                } else {
                    android.util.Log.w("MultiDex", new StringBuilder().append("Failed to delete secondary dex dir ").append(v0_1.getPath()).toString());
                }
            } else {
                android.util.Log.w("MultiDex", new StringBuilder().append("Failed to list secondary dex dir content (").append(v0_1.getPath()).append(").").toString());
            }
        }
        return;
    }

Method com.google.appinventor.components.runtime.Twitter$5.run() calling method java.io.File.<init>()


    public void run()
    {
        try {
            String v0 = this.val$imagePath;
        } catch (twitter4j.TwitterException v1) {
            com.google.appinventor.components.runtime.Form v4_8 = this.this$0.form;
            com.google.appinventor.components.runtime.Twitter v5_1 = this.this$0;
            Object[] v8_3 = new Object[1];
            v8_3[0] = v1.getMessage();
            v4_8.dispatchErrorOccurredEvent(v5_1, "TweetWithImage", 306, v8_3);
            return;
        }
        if (v0.startsWith("file://")) {
            v0 = this.val$imagePath.replace("file://", "");
        }
        java.io.File v2_1 = new java.io.File(v0);
        if (!v2_1.exists()) {
            Object[] v8_1 = new Object[0];
            this.this$0.form.dispatchErrorOccurredEvent(this.this$0, "TweetWithImage", 315, v8_1);
            return;
        } else {
            twitter4j.StatusUpdate v3_1 = new twitter4j.StatusUpdate(this.val$status);
            v3_1.setMedia(v2_1);
            com.google.appinventor.components.runtime.Twitter.access$200(this.this$0).updateStatus(v3_1);
            return;
        }
    }

Method com.google.appinventor.components.runtime.File$3.run() calling method java.io.File.<init>()


    public void run()
    {
        String v3 = com.google.appinventor.components.runtime.File.access$000(this.this$0, this.val$filename);
        if (com.google.appinventor.components.runtime.util.MediaUtil.isExternalFile(v3)) {
            this.this$0.form.assertPermission("android.permission.WRITE_EXTERNAL_STORAGE");
        }
        java.io.File v1_1 = new java.io.File(v3);
        if (v1_1.exists()) {
            try {
                java.io.FileOutputStream v2_1 = new java.io.FileOutputStream(v1_1, this.val$append);
                java.io.OutputStreamWriter v4_1 = new java.io.OutputStreamWriter(v2_1);
                v4_1.write(this.val$text);
                v4_1.flush();
                v4_1.close();
                v2_1.close();
                com.google.appinventor.components.runtime.File.access$200(this.this$0).runOnUiThread(new com.google.appinventor.components.runtime.File$3$1(this));
            } catch (java.io.IOException v0) {
                if (!this.val$append) {
                    com.google.appinventor.components.runtime.Form v5_15 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_6 = this.this$0;
                    Object[] v8_3 = new Object[1];
                    v8_3[0] = v3;
                    v5_15.dispatchErrorOccurredEvent(v6_6, "SaveFile", 2104, v8_3);
                } else {
                    com.google.appinventor.components.runtime.Form v5_17 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_7 = this.this$0;
                    Object[] v8_4 = new Object[1];
                    v8_4[0] = v3;
                    v5_17.dispatchErrorOccurredEvent(v6_7, "AppendTo", 2104, v8_4);
                }
            }
        } else {
            try {
                v1_1.createNewFile();
            } catch (java.io.IOException v0) {
                if (!this.val$append) {
                    com.google.appinventor.components.runtime.Form v5_5 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_1 = this.this$0;
                    Object[] v8_1 = new Object[1];
                    v8_1[0] = v3;
                    v5_5.dispatchErrorOccurredEvent(v6_1, "SaveFile", 2103, v8_1);
                } else {
                    com.google.appinventor.components.runtime.Form v5_7 = this.this$0.form;
                    com.google.appinventor.components.runtime.File v6_2 = this.this$0;
                    Object[] v8_2 = new Object[1];
                    v8_2[0] = v3;
                    v5_7.dispatchErrorOccurredEvent(v6_2, "AppendTo", 2103, v8_2);
                }
            }
        }
        return;
    }

Method android.support.v4.util.AtomicFile.<init>() calling method java.io.File.<init>()


    public AtomicFile(java.io.File p4)
    {
        this.mBaseName = p4;
        this.mBackupName = new java.io.File(new StringBuilder().append(p4.getPath()).append(".bak").toString());
        return;
    }

Method android.support.v4.graphics.TypefaceCompatUtil.getTempFile() calling method java.io.File.<init>()


    public static java.io.File getTempFile(android.content.Context p5)
    {
        String v2 = new StringBuilder().append(".font").append(android.os.Process.myPid()).append("-").append(android.os.Process.myTid()).append("-").toString();
        int v1 = 0;
        while (v1 < 100) {
            int v0_0 = new java.io.File(p5.getCacheDir(), new StringBuilder().append(v2).append(v1).toString());
            try {
                if (v0_0.createNewFile()) {
                    return v0_0;
                }
                v1++;
            } catch (java.io.IOException v3) {
            }
        }
        v0_0 = 0;
        return v0_0;
    }

Method android.support.v4.content.FileProvider.buildPath() calling method java.io.File.<init>()


    private static varargs java.io.File buildPath(java.io.File p5, String[] p6)
    {
        int v4 = p6.length;
        int v3 = 0;
        java.io.File v1 = p5;
        while (v3 < v4) {
            java.io.File v0_1;
            String v2 = p6[v3];
            if (v2 == null) {
                v0_1 = v1;
            } else {
                v0_1 = new java.io.File(v1, v2);
            }
            v3++;
            v1 = v0_1;
        }
        return v1;
    }

Method android.support.v4.content.FileProvider.<clinit>() calling method java.io.File.<init>()


    static FileProvider()
    {
        java.util.HashMap v0_1 = new String[2];
        v0_1[0] = "_display_name";
        v0_1[1] = "_size";
        android.support.v4.content.FileProvider.COLUMNS = v0_1;
        android.support.v4.content.FileProvider.DEVICE_ROOT = new java.io.File("/");
        android.support.v4.content.FileProvider.sCache = new java.util.HashMap();
        return;
    }

Method android.support.v4.content.ContextCompat.getNoBackupFilesDir() calling method java.io.File.<init>()


    public static final java.io.File getNoBackupFilesDir(android.content.Context p4)
    {
        java.io.File v1_1;
        if (android.os.Build$VERSION.SDK_INT < 21) {
            v1_1 = android.support.v4.content.ContextCompat.createFilesDir(new java.io.File(p4.getApplicationInfo().dataDir, "no_backup"));
        } else {
            v1_1 = p4.getNoBackupFilesDir();
        }
        return v1_1;
    }

Method android.support.v4.content.ContextCompat.getDataDir() calling method java.io.File.<init>()


    public static java.io.File getDataDir(android.content.Context p3)
    {
        int v1_1;
        if (android.os.Build$VERSION.SDK_INT < 24) {
            String v0 = p3.getApplicationInfo().dataDir;
            if (v0 == null) {
                v1_1 = 0;
            } else {
                v1_1 = new java.io.File(v0);
            }
        } else {
            v1_1 = p3.getDataDir();
        }
        return v1_1;
    }

Method android.support.v4.content.ContextCompat.getCodeCacheDir() calling method java.io.File.<init>()


    public static java.io.File getCodeCacheDir(android.content.Context p4)
    {
        java.io.File v1_1;
        if (android.os.Build$VERSION.SDK_INT < 21) {
            v1_1 = android.support.v4.content.ContextCompat.createFilesDir(new java.io.File(p4.getApplicationInfo().dataDir, "code_cache"));
        } else {
            v1_1 = p4.getCodeCacheDir();
        }
        return v1_1;
    }

Method android.support.v4.content.ContextCompat.buildPath() calling method java.io.File.<init>()


    private static varargs java.io.File buildPath(java.io.File p5, String[] p6)
    {
        int v4 = p6.length;
        int v3 = 0;
        java.io.File v1 = p5;
        while (v3 < v4) {
            java.io.File v0_2;
            String v2 = p6[v3];
            if (v1 != null) {
                if (v2 == null) {
                    v0_2 = v1;
                } else {
                    v0_2 = new java.io.File(v1, v2);
                }
            } else {
                v0_2 = new java.io.File(v2);
            }
            v3++;
            v1 = v0_2;
        }
        return v1;
    }

Method org.acra.util.Installation.readInstallationFile() calling method java.io.RandomAccessFile.<init>()


    private static String readInstallationFile(java.io.File p4)
    {
        java.io.RandomAccessFile v1_1 = new java.io.RandomAccessFile(p4, "r");
        byte[] v0 = new byte[((int) v1_1.length())];
        try {
            v1_1.readFully(v0);
            v1_1.close();
            return new String(v0);
        } catch (Throwable v2_2) {
            v1_1.close();
            throw v2_2;
        }
    }

Method com.google.appinventor.components.runtime.multidex.ZipUtil.getZipCrc() calling method java.io.RandomAccessFile.<init>()


    static long getZipCrc(java.io.File p4)
    {
        java.io.RandomAccessFile v1_1 = new java.io.RandomAccessFile(p4, "r");
        try {
            Throwable v2_1 = com.google.appinventor.components.runtime.multidex.ZipUtil.computeCrcOfCentralDir(v1_1, com.google.appinventor.components.runtime.multidex.ZipUtil.findCentralDirectory(v1_1));
            v1_1.close();
            return v2_1;
        } catch (Throwable v2_2) {
            v1_1.close();
            throw v2_2;
        }
    }

Method com.google.appinventor.components.runtime.Texting.addMessageToCache() calling method android.content.Context.openFileOutput()


    private static void addMessageToCache(android.content.Context p6, String p7, String p8)
    {
        try {
            String v0 = new StringBuilder().append(p7).append(":").append(p8).append("\u0001").toString();
            android.util.Log.i("Texting Component", new StringBuilder().append("Caching ").append(v0).toString());
            java.io.FileOutputStream v2 = p6.openFileOutput("textingmsgcache", 32768);
            v2.write(v0.getBytes());
            v2.close();
            com.google.appinventor.components.runtime.Texting.messagesCached = (com.google.appinventor.components.runtime.Texting.messagesCached + 1);
            android.util.Log.i("Texting Component", new StringBuilder().append("Cached ").append(v0).toString());
        } catch (java.io.IOException v1_1) {
            android.util.Log.e("Texting Component", "File not found error writing to cache file");
            v1_1.printStackTrace();
        } catch (java.io.IOException v1_0) {
            android.util.Log.e("Texting Component", "I/O Error writing to cache file");
            v1_0.printStackTrace();
        }
        return;
    }

Method org.acra.CrashReportPersister.store() calling method android.content.Context.openFileOutput()


    public void store(org.acra.collector.CrashReportData p9, String p10)
    {
        java.io.FileOutputStream v4 = this.context.openFileOutput(p10, 0);
        try {
            StringBuilder v0_1 = new StringBuilder(200);
            java.io.OutputStreamWriter v5_1 = new java.io.OutputStreamWriter(v4, "ISO8859_1");
            java.util.Iterator v2 = p9.entrySet().iterator();
        } catch (int v6_3) {
            v4.close();
            throw v6_3;
        }
        while (v2.hasNext()) {
            java.util.Map$Entry v1_1 = ((java.util.Map$Entry) v2.next());
            this.dumpString(v0_1, ((org.acra.ReportField) v1_1.getKey()).toString(), 1);
            v0_1.append(61);
            this.dumpString(v0_1, ((String) v1_1.getValue()), 0);
            v0_1.append("\n");
            v5_1.write(v0_1.toString());
            v0_1.setLength(0);
        }
        v5_1.flush();
        v4.close();
        return;
    }

Method android.support.v7.widget.ActivityChooserModel$PersistHistoryAsyncTask.doInBackground() calling method android.content.Context.openFileOutput()


    public varargs Void doInBackground(Object[] p19)
    {
        java.util.List v4_1 = ((java.util.List) p19[0]);
        String v5_1 = ((String) p19[1]);
        try {
            java.io.FileOutputStream v3 = this.this$0.mContext.openFileOutput(v5_1, 0);
            org.xmlpull.v1.XmlSerializer v12 = android.util.Xml.newSerializer();
            try {
                v12.setOutput(v3, 0);
                v12.startDocument("UTF-8", Boolean.valueOf(1));
                v12.startTag(0, "historical-records");
                int v11 = v4_1.size();
                int v6 = 0;
            } catch (IllegalArgumentException v7) {
                android.util.Log.e(android.support.v7.widget.ActivityChooserModel.LOG_TAG, new StringBuilder().append("Error writing historical record file: ").append(this.this$0.mHistoryFileName).toString(), v7);
                this.this$0.mCanReadHistoricalData = 1;
                if (v3 == null) {
                    java.io.IOException v13_3 = 0;
                    return v13_3;
                } else {
                    try {
                        v3.close();
                    } catch (java.io.IOException v13) {
                    }
                }
            } catch (IllegalStateException v9) {
                android.util.Log.e(android.support.v7.widget.ActivityChooserModel.LOG_TAG, new StringBuilder().append("Error writing historical record file: ").append(this.this$0.mHistoryFileName).toString(), v9);
                this.this$0.mCanReadHistoricalData = 1;
                if (v3 == null) {
                } else {
                    try {
                        v3.close();
                    } catch (java.io.IOException v13) {
                    }
                }
            } catch (java.io.IOException v8) {
                android.util.Log.e(android.support.v7.widget.ActivityChooserModel.LOG_TAG, new StringBuilder().append("Error writing historical record file: ").append(this.this$0.mHistoryFileName).toString(), v8);
                this.this$0.mCanReadHistoricalData = 1;
                if (v3 == null) {
                } else {
                    try {
                        v3.close();
                    } catch (java.io.IOException v13) {
                    }
                }
            } catch (java.io.IOException v13_2) {
                this.this$0.mCanReadHistoricalData = 1;
                if (v3 != null) {
                    try {
                        v3.close();
                    } catch (int v14) {
                    }
                }
                throw v13_2;
            }
            while (v6 < v11) {
                android.support.v7.widget.ActivityChooserModel$HistoricalRecord v10_1 = ((android.support.v7.widget.ActivityChooserModel$HistoricalRecord) v4_1.remove(0));
                v12.startTag(0, "historical-record");
                v12.attribute(0, "activity", v10_1.activity.flattenToString());
                v12.attribute(0, "time", String.valueOf(v10_1.time));
                v12.attribute(0, "weight", String.valueOf(v10_1.weight));
                v12.endTag(0, "historical-record");
                v6++;
            }
            v12.endTag(0, "historical-records");
            v12.endDocument();
            this.this$0.mCanReadHistoricalData = 1;
            if (v3 == null) {
            } else {
                try {
                    v3.close();
                } catch (java.io.IOException v13) {
                }
            }
        } catch (java.io.FileNotFoundException v2) {
            android.util.Log.e(android.support.v7.widget.ActivityChooserModel.LOG_TAG, new StringBuilder().append("Error writing historical record file: ").append(v5_1).toString(), v2);
            v13_3 = 0;
            return v13_3;
        }
    }