home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.netscape.javascript; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Enumeration; public class ScriptRuntime { public static final Class UndefinedClass; public static final Class ScriptableClass; public static final Class StringClass; public static final Class NumberClass; public static final Class BooleanClass; public static final Class ByteClass; public static final Class ShortClass; public static final Class IntegerClass; public static final Class LongClass; public static final Class FloatClass; public static final Class DoubleClass; public static final Class CharacterClass; public static final Class ObjectClass; public static final Class FunctionClass; public static double NaN; public static Double NaNobj; public static double negativeZero; private static final boolean MSJVM_BUG_WORKAROUNDS = true; private static final int NO_INDEX = 5; private static final char NO_INDEX_CHAR = '5'; private static final int MAX_VALUE_LENGTH; public static Object[] emptyArgs; // $FF: synthetic field private static Class class$com$netscape$javascript$Undefined; // $FF: synthetic field private static Class class$com$netscape$javascript$Scriptable; // $FF: synthetic field private static Class class$java$lang$String; // $FF: synthetic field private static Class class$java$lang$Number; // $FF: synthetic field private static Class class$java$lang$Boolean; // $FF: synthetic field private static Class class$java$lang$Byte; // $FF: synthetic field private static Class class$java$lang$Short; // $FF: synthetic field private static Class class$java$lang$Integer; // $FF: synthetic field private static Class class$java$lang$Long; // $FF: synthetic field private static Class class$java$lang$Float; // $FF: synthetic field private static Class class$java$lang$Double; // $FF: synthetic field private static Class class$java$lang$Character; // $FF: synthetic field private static Class class$java$lang$Object; // $FF: synthetic field private static Class class$com$netscape$javascript$Function; // $FF: synthetic field private static Class class$com$netscape$javascript$NativeGlobal; // $FF: synthetic field private static Class class$com$netscape$javascript$NativeClosure; // $FF: synthetic field private static Class class$com$netscape$javascript$NativeWith; public static Object getProp(Object var0, String var1, Scriptable var2) { Scriptable var3; try { var3 = (Scriptable)var0; } catch (ClassCastException var6) { var3 = toObject(var2, var0); } if (var3 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { Scriptable var4 = var3; do { Object var5 = var4.get(var1, var3); if (var5 != Scriptable.NOT_FOUND) { return var5; } var4 = var4.getPrototype(); } while(var4 != null); Undefined.obj = var3; Undefined.id = var1; return Undefined.instance; } } public static Object setProp(Object var0, String var1, Object var2, Scriptable var3) { Scriptable var4; try { var4 = (Scriptable)var0; } catch (ClassCastException var6) { var4 = toObject(var3, var0); } if (var4 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { Scriptable var5 = var4; while(!var5.has(var1, var4)) { var5 = var5.getPrototype(); if (var5 == null) { var4.put(var1, var4, var2); return var2; } } var5.put(var1, var4, var2); return var2; } } public static Boolean eqB(Object var0, Object var1) { return method_1(var0, var1) ? Boolean.TRUE : Boolean.FALSE; } public static Scriptable getProto(Object var0, Scriptable var1) { Scriptable var2; try { var2 = (Scriptable)var0; } catch (ClassCastException var3) { var2 = toObject(var1, var0); } if (var2 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { return var2.getPrototype(); } } public static Object setProto(Object var0, Object var1, Scriptable var2) { Scriptable var3; try { var3 = (Scriptable)var0; } catch (ClassCastException var7) { var3 = toObject(var2, var0); } Scriptable var4 = var1 == null ? null : toObject(var2, var1); for(Scriptable var5 = var4; var5 != null; var5 = var5.getPrototype()) { if (var5 == var3) { Object[] var6 = new Object[]{"__proto__"}; throw Context.reportRuntimeError(getMessage("msg.cyclic.value", var6)); } } if (var3 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { var3.setPrototype(var4); return var4; } } public static Object getElem(Object var0, Object var1, Scriptable var2) { int var3; String var4; if (var1 instanceof Number) { double var5 = ((Number)var1).doubleValue(); var3 = (int)var5; var4 = (double)var3 == var5 ? null : toString(var1); } else { var4 = toString(var1); var3 = indexFromString(var4); if (var3 != 5) { var4 = null; } else if (var4.length() == 1 && var4.charAt(0) == '5') { var4 = null; } } Scriptable var8 = var0 instanceof Scriptable ? (Scriptable)var0 : toObject(var2, var0); Scriptable var6 = var8; if (var4 != null) { if (var4.equals("__proto__")) { return var8.getPrototype(); } else if (var4.equals("__parent__")) { return var8.getParentScope(); } else { while(var6 != null) { Object var9 = var6.get(var4, var8); if (var9 != Scriptable.NOT_FOUND) { return var9; } var6 = var6.getPrototype(); } Undefined.obj = var8; Undefined.id = var1; return Undefined.instance; } } else { while(var6 != null) { Object var7 = var6.get(var3, var8); if (var7 != Scriptable.NOT_FOUND) { return var7; } var6 = var6.getPrototype(); } return Undefined.instance; } } public static Object getElem(Scriptable var0, int var1) { for(Scriptable var2 = var0; var2 != null; var2 = var2.getPrototype()) { Object var3 = var2.get(var1, var0); if (var3 != Scriptable.NOT_FOUND) { return var3; } } Undefined.obj = var0; Undefined.id = null; return Undefined.instance; } public static boolean toBoolean(Object var0) { if (var0 == null) { return false; } else { if (var0 instanceof Scriptable) { if (Context.getContext().isVersionECMA1()) { if (var0 == Undefined.instance) { return false; } return true; } var0 = ((Scriptable)var0).getDefaultValue(BooleanClass); if (var0 instanceof Scriptable) { throw errorWithClassName("msg.primitive.expected", var0); } } if (var0 instanceof String) { return ((String)var0).length() != 0; } else if (var0 instanceof Number) { double var1 = ((Number)var0).doubleValue(); return var1 == var1 && var1 != (double)0.0F; } else if (var0 instanceof Boolean) { return (Boolean)var0; } else { throw errorWithClassName("msg.invalid.type", var0); } } } public static Object setElem(Object var0, Object var1, Object var2, Scriptable var3) { int var4; String var5; if (var1 instanceof Number) { double var6 = ((Number)var1).doubleValue(); var4 = (int)var6; var5 = (double)var4 == var6 ? null : toString(var1); } else { var5 = toString(var1); var4 = indexFromString(var5); if (var4 != 5) { var5 = null; } else if (var5.length() == 1 && var5.charAt(0) == '5') { var5 = null; } } Scriptable var8 = var0 instanceof Scriptable ? (Scriptable)var0 : toObject(var3, var0); Scriptable var7 = var8; if (var5 != null) { if (var5.equals("__proto__")) { return setProto(var0, var2, var3); } else if (var5.equals("__parent__")) { return setParent(var0, var2, var3); } else { while(!var7.has(var5, var8)) { var7 = var7.getPrototype(); if (var7 == null) { var8.put(var5, var8, var2); return var2; } } var7.put(var5, var8, var2); return var2; } } else { while(!var7.has(var4, var8)) { var7 = var7.getPrototype(); if (var7 == null) { var8.put(var4, var8, var2); return var2; } } var7.put(var4, var8, var2); return var2; } } public static Object setElem(Scriptable var0, int var1, Object var2) { Scriptable var3 = var0; while(!var3.has(var1, var0)) { var3 = var3.getPrototype(); if (var3 == null) { var0.put(var1, var0, var2); return var2; } } var3.put(var1, var0, var2); return var2; } public static Object nextEnum(Enumeration var0) { return !var0.hasMoreElements() ? null : var0.nextElement(); } private static RuntimeException errorWithClassName(String var0, Object var1) { Object[] var2 = new Object[]{var1.getClass().getName()}; return Context.reportRuntimeError(getMessage(var0, var2)); } static Scriptable newObject(Context var0, Scriptable var1, String var2, Object[] var3) { Object var4 = null; try { return var0.newObject(var1, var2, var3); } catch (NotAFunctionException var6) { var4 = var6; } catch (PropertyException var7) { var4 = var7; } catch (JavaScriptException var8) { var4 = var8; } throw Context.reportRuntimeError(((Throwable)var4).getMessage()); } public static Scriptable newObject(Context var0, Object var1, Object[] var2) throws JavaScriptException { if (!(var1 instanceof Function)) { Object[] var4 = new Object[]{toString(var1)}; throw Context.reportRuntimeError(Context.getMessage("msg.isnt.function", var4)); } else { Function var3 = (Function)var1; return var3.construct(var0, var3.getParentScope(), var2); } } public static NativeFunction createFunctionObject(Scriptable var0, Class var1) { Constructor[] var2 = var1.getConstructors(); Object var3 = null; Object[] var4 = new Object[]{var0}; try { var10 = (NativeFunction)var2[0].newInstance(var4); } catch (InstantiationException var6) { throw WrappedException.wrapException(var6); } catch (IllegalAccessException var7) { throw WrappedException.wrapException(var7); } catch (IllegalArgumentException var8) { throw WrappedException.wrapException(var8); } catch (InvocationTargetException var9) { throw WrappedException.wrapException(var9); } ((ScriptableObject)var10).setPrototype(ScriptableObject.getClassPrototype(var0, "Function")); ((ScriptableObject)var10).setParentScope(var0); return var10; } public static String getMessage(String var0, Object[] var1) { return Context.getMessage(var0, var1); } public static Object postIncrement(Object var0) { Double var1; if (var0 instanceof Number) { var1 = new Double(((Number)var0).doubleValue() + (double)1.0F); } else { var1 = new Double(toNumber(var0) + (double)1.0F); } return var1; } public static Object postIncrement(Scriptable var0, String var1) { for(Scriptable var2 = var0; var2 != null; var2 = var2.getParentScope()) { Scriptable var3 = var2; while(true) { Object var4 = var3.get(var1, var2); if (var4 != Scriptable.NOT_FOUND) { if (var4 instanceof Number) { Double var6 = new Double(((Number)var4).doubleValue() + (double)1.0F); var3.put(var1, var2, var6); return var4; } Double var5 = new Double(toNumber(var4) + (double)1.0F); var3.put(var1, var2, var5); return new Double(toNumber(var4)); } var3 = var3.getPrototype(); if (var3 == null) { break; } } } throw Context.reportRuntimeError(var1.toString() + " is not defined"); } public static Object postIncrement(Object var0, String var1, Scriptable var2) { Scriptable var3; try { var3 = (Scriptable)var0; } catch (ClassCastException var7) { var3 = toObject(var2, var0); } if (var3 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { Scriptable var4 = var3; do { Object var5 = var4.get(var1, var3); if (var5 != Scriptable.NOT_FOUND) { if (var5 instanceof Number) { Double var8 = new Double(((Number)var5).doubleValue() + (double)1.0F); var4.put(var1, var3, var8); return var5; } else { Double var6 = new Double(toNumber(var5) + (double)1.0F); var4.put(var1, var3, var6); return new Double(toNumber(var5)); } } var4 = var4.getPrototype(); } while(var4 != null); Undefined.obj = var3; Undefined.id = var1; return Undefined.instance; } } public static void main(String var0, String[] var1) throws JavaScriptException { Context var2 = new Context(); try { var2.enter(); } catch (InterruptedException var13) { throw WrappedException.wrapException(var13); } catch (ThreadLinkException var14) { throw WrappedException.wrapException(var14); } Scriptable var3 = var2.initStandardObjects((ScriptableObject)null); Scriptable var4; try { var4 = var2.newObject(var3, "Array"); } catch (PropertyException var10) { throw WrappedException.wrapException(var10); } catch (NotAFunctionException var11) { throw WrappedException.wrapException(var11); } catch (JavaScriptException var12) { throw WrappedException.wrapException(var12); } for(int var5 = 1; var5 < var1.length; ++var5) { var4.put(var5 - 1, var4, var1[var5]); } var3.put("arguments", var3, var4); try { Class var15 = Class.forName(var0); Script var6 = (Script)var15.newInstance(); var6.exec(var2, var3); return; } catch (ClassNotFoundException var7) { } catch (InstantiationException var8) { } catch (IllegalAccessException var9) { } throw new RuntimeException("Error creating script object"); } public static Scriptable newScope() { return new NativeObject(); } protected static boolean jsDelegatesTo(Scriptable var0, Scriptable var1) { for(Scriptable var2 = var0.getPrototype(); var2 != null; var2 = var2.getPrototype()) { if (var2.equals(var1)) { return true; } } return false; } public static String escapeString(String var0) { String var1 = "\bb\ff\nn\rr\tt\u000bv\"\"''"; StringBuffer var2 = new StringBuffer(var0.length()); for(int var3 = 0; var3 < var0.length(); ++var3) { char var4 = var0.charAt(var3); if (var4 >= ' ' && var4 <= '~' && var4 != '"') { var2.append(var4); } else { int var5; if ((var5 = var1.indexOf(var4)) >= 0) { var2.append("\\"); var2.append(var1.charAt(var5 + 1)); } else if (var4 < 256) { String var8 = Integer.toHexString(var4); if (var8.length() == 1) { var2.append("\\x0"); var2.append(var8); } else { var2.append("\\x"); var2.append(var8); } } else { String var6 = Integer.toHexString(var4); var2.append("\\u"); for(int var7 = var6.length(); var7 < 4; ++var7) { var2.append("0"); } var2.append(var6); } } } return var2.toString(); } public static Boolean cmp_LEB(Object var0, Object var1) { return cmp_LE(var0, var1) == 1 ? Boolean.TRUE : Boolean.FALSE; } private static Class getTypeOfValue(Object var0) { if (var0 == null) { return ScriptableClass; } else if (var0 == Undefined.instance) { return UndefinedClass; } else if (var0 instanceof Scriptable) { return ScriptableClass; } else { return var0 instanceof Number ? NumberClass : var0.getClass(); } } public static int toInt32(Object var0) { double var1 = (double)4.2949673E9F; double var3 = (double)(float)Integer.MAX_VALUE; if (var0 instanceof Byte) { return ((Number)var0).intValue(); } else { double var5 = toNumber(var0); if (var5 == var5 && var5 != (double)0.0F && var5 != Double.POSITIVE_INFINITY && var5 != Double.NEGATIVE_INFINITY) { var5 = Math.IEEEremainder(var5, var1); var5 = var5 >= (double)0.0F ? var5 : var5 + var1; return var5 >= var3 ? (int)(var5 - var1) : (int)var5; } else { return 0; } } } public static int toInt32(double var0) { double var2 = (double)4.2949673E9F; double var4 = (double)(float)Integer.MAX_VALUE; if (var0 == var0 && var0 != (double)0.0F && var0 != Double.POSITIVE_INFINITY && var0 != Double.NEGATIVE_INFINITY) { var0 = Math.IEEEremainder(var0, var2); var0 = var0 >= (double)0.0F ? var0 : var0 + var2; return var0 >= var4 ? (int)(var0 - var2) : (int)var0; } else { return 0; } } public static Object callSpecial(Context var0, Object var1, Object var2, Object[] var3, Scriptable var4, Scriptable var5, String var6, int var7) throws JavaScriptException { return callOrNewSpecial(var0, var5, var1, var4, var3, true, var6, var7); } public static String toString(Object var0) { while(var0 != null) { if (var0 instanceof Scriptable) { var0 = ((Scriptable)var0).getDefaultValue(StringClass); if (var0 == Undefined.instance || !(var0 instanceof Scriptable)) { continue; } throw errorWithClassName("msg.primitive.expected", var0); } if (var0 instanceof Number) { return numberToString(((Number)var0).doubleValue()); } return var0.toString(); } return "null"; } private static int indexFromString(String var0) { int var1 = var0.length(); char var2; if (var1 > 0 && '0' <= (var2 = var0.charAt(0)) && var2 <= '9' && var1 <= MAX_VALUE_LENGTH) { int var3 = var2 - 48; int var4 = 0; int var5 = 1; if (var3 != 0) { while(var5 < var1 && '0' <= (var2 = var0.charAt(var5)) && var2 <= '9') { var4 = var3; var3 = 10 * var3 + (var2 - 48); ++var5; } } if (var5 == var1 && (var4 < 214748364 || var4 == 214748364 && var2 < 7)) { return var3; } } return 5; } public static int cmp_LT(Object var0, Object var1) { if (var0 instanceof Scriptable) { var0 = ((Scriptable)var0).getDefaultValue(NumberClass); } if (var1 instanceof Scriptable) { var1 = ((Scriptable)var1).getDefaultValue(NumberClass); } if (var0 instanceof String && var1 instanceof String) { return toString(var0).compareTo(toString(var1)) < 0 ? 1 : 0; } else { double var2 = toNumber(var0); if (var2 != var2) { return 0; } else { double var4 = toNumber(var1); if (var4 != var4) { return 0; } else { return var2 < var4 ? 1 : 0; } } } } public static char toUint16(Object var0) { long var1 = 65536L; double var3 = toNumber(var0); if (var3 == var3 && var3 != (double)0.0F && var3 != Double.POSITIVE_INFINITY && var3 != Double.NEGATIVE_INFINITY) { var3 = Math.IEEEremainder(var3, (double)var1); var3 = var3 >= (double)0.0F ? var3 : var3 + (double)var1; return (char)((int)Math.floor(var3)); } else { return '\u0000'; } } static int getIntId(Object var0) { if (var0 instanceof Number) { double var4 = ((Number)var0).doubleValue(); int var3 = (int)var4; return (double)var3 == var4 ? var3 : 0; } else { String var1 = toString(var0); int var2 = indexFromString(var1); return var2 == 5 && (var1.length() != 1 || var1.charAt(0) != '5') ? 0 : var2; } } public static Object postIncrementElem(Object var0, Object var1, Scriptable var2) { Object var3 = getElem(var0, var1, var2); if (var3 == Undefined.instance) { return Undefined.instance; } else { double var4 = toNumber(var3); Double var6 = new Double(var4 + (double)1.0F); setElem(var0, var1, var6, var2); return new Double(var4); } } // $FF: synthetic method private static Class class$(String var0) { try { return Class.forName(var0); } catch (ClassNotFoundException var2) { throw new NoClassDefFoundError(((Throwable)var2).getMessage()); } } public static Object call(Context var0, Object var1, Object var2, Object[] var3) throws JavaScriptException { Function var4; try { var4 = (Function)var1; } catch (ClassCastException var7) { Object[] var5 = new Object[]{toString(var1)}; throw Context.reportRuntimeError(Context.getMessage("msg.isnt.function", var5)); } Scriptable var8; try { var8 = (Scriptable)var2; } catch (ClassCastException var6) { var8 = toObject(ScriptableObject.getTopLevelScope(var4), var2); } return var4.call(var0, var4.getParentScope(), var8, var3); } public static Scriptable toObject(Scriptable var0, Object var1) { if (var1 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else if (var1 instanceof Scriptable) { if (var1 == Undefined.instance) { throw Context.reportRuntimeError(getMessage("msg.undef.to.object", (Object[])null)); } else { return (Scriptable)var1; } } else { String var2 = var1 instanceof String ? "String" : (var1 instanceof Number ? "Number" : (var1 instanceof Boolean ? "Boolean" : null)); if (var2 == null) { Object var6 = NativeJavaObject.wrap(var0, var1, (Class)null); if (var6 instanceof Scriptable) { return (Scriptable)var6; } else { throw errorWithClassName("msg.invalid.type", var1); } } else { Object[] var3 = new Object[]{var1}; var0 = ScriptableObject.getTopLevelScope(var0); Scriptable var4 = newObject(Context.getContext(), var0, var2, var3); var4.setPrototype(ScriptableObject.getClassPrototype(var0, var2)); var4.setParentScope(var0); return var4; } } } public static Scriptable initScript(Context var0, Scriptable var1, NativeFunction var2, Scriptable var3) { String[] var4 = var2.names; if (var4 != null) { ScriptableObject var5; try { var5 = (ScriptableObject)var1; } catch (ClassCastException var8) { var5 = null; } for(int var6 = var2.names.length - 1; var6 > 0; --var6) { String var7 = var2.names[var6]; if (var1.get(var7, var1) == Scriptable.NOT_FOUND) { if (var5 != null) { var5.defineProperty(var7, Undefined.instance, 4); } else { var1.put(var7, var1, Undefined.instance); } } } } if (var0.getDebugLevel() > 0) { new NativeCall(var0, var1, var2, var3); } return var1; } public static double toNumber(Object var0) { if (var0 != null && var0 instanceof Scriptable) { var0 = ((Scriptable)var0).getDefaultValue(NumberClass); if (var0 != null && var0 instanceof Scriptable) { throw errorWithClassName("msg.primitive.expected", var0); } } if (var0 == null) { return (double)0.0F; } else if (var0 instanceof String) { return toNumber((String)var0); } else if (var0 instanceof Number) { return ((Number)var0).doubleValue(); } else if (var0 instanceof Boolean) { return (Boolean)var0 ? (double)1.0F : (double)0.0F; } else { throw errorWithClassName("msg.invalid.type", var0); } } static double stringToNumber(String var0, int var1, int var2) { char var3 = '9'; char var4 = 'a'; char var5 = 'A'; int var6 = var0.length(); if (var2 < 10) { var3 = (char)(48 + var2 - 1); } if (var2 > 10) { var4 = (char)(97 + var2 - 10); var5 = (char)(65 + var2 - 10); } double var8 = (double)0.0F; int var7; for(var7 = var1; var7 < var6; ++var7) { char var10 = var0.charAt(var7); int var11; if ('0' <= var10 && var10 <= var3) { var11 = var10 - 48; } else if ('a' <= var10 && var10 < var4) { var11 = var10 - 97 + 10; } else { if ('A' > var10 || var10 >= var5) { break; } var11 = var10 - 65 + 10; } var8 = var8 * (double)var2 + (double)var11; } if (var1 == var7) { return NaN; } else { if (var8 >= (double)9.007199E15F) { if (var2 == 10) { try { return Double.valueOf(var0.substring(var1, var7)); } catch (NumberFormatException var17) { return NaN; } } if (var2 == 2 || var2 == 4 || var2 == 8 || var2 == 16 || var2 == 32) { BinaryDigitReader var19 = new BinaryDigitReader(var2, var0, var1, var7); var8 = (double)0.0F; int var20; do { var20 = var19.getNextBinaryDigit(); } while(var20 == 0); if (var20 == 1) { var8 = (double)1.0F; int var12 = 52; do { var20 = var19.getNextBinaryDigit(); if (var20 < 0) { return var8; } var8 = var8 * (double)2.0F + (double)var20; --var12; } while(var12 != 0); var12 = var19.getNextBinaryDigit(); if (var12 >= 0) { double var13 = (double)2.0F; int var15; int var16; for(var15 = 0; (var16 = var19.getNextBinaryDigit()) >= 0; var13 *= (double)2.0F) { var15 |= var16; } var8 += (double)(var12 & (var20 | var15)); var8 *= var13; } } } } return var8; } } public static double toNumber(String var0) { int var1 = var0.length(); for(int var2 = 0; var2 != var1; ++var2) { char var3 = var0.charAt(var2); if (!Character.isWhitespace(var3)) { if (var3 == '0' && var2 + 2 < var1 && Character.toLowerCase(var0.charAt(var2 + 1)) == 'x') { return stringToNumber(var0, var2 + 2, 16); } if ((var3 == '+' || var3 == '-') && var2 + 3 < var1 && var0.charAt(var2 + 1) == '0' && Character.toLowerCase(var0.charAt(var2 + 2)) == 'x') { double var10 = stringToNumber(var0, var2 + 3, 16); if (var3 == '-') { return -var10; } return var10; } int var4; char var5; for(var4 = var1 - 1; Character.isWhitespace(var5 = var0.charAt(var4)); --var4) { } if (var5 == 'y') { if (var3 == '+' || var3 == '-') { ++var2; } String var11 = var0.substring(var2, var4 + 1); if (var11.equals("Infinity")) { if (var3 == '-') { return Double.NEGATIVE_INFINITY; } return Double.POSITIVE_INFINITY; } return NaN; } String var6 = var0.substring(var2, var4 + 1); for(int var7 = var6.length() - 1; var7 >= 0; --var7) { char var8 = var6.charAt(var7); if (('0' > var8 || var8 > '9') && var8 != '.' && var8 != 'e' && var8 != 'E' && var8 != '+' && var8 != '-') { return NaN; } } try { return Double.valueOf(var6); } catch (NumberFormatException var9) { return NaN; } } } return (double)0.0F; } public static String typeof(Object var0) { if (var0 == Undefined.instance) { return "undefined"; } else if (var0 == null) { return "object"; } else if (var0 instanceof Scriptable) { return var0 instanceof Function ? "function" : "object"; } else if (var0 instanceof String) { return "string"; } else if (var0 instanceof Number) { return "number"; } else if (var0 instanceof Boolean) { return "boolean"; } else { throw errorWithClassName("msg.invalid.type", var0); } } public static Object postDecrement(Object var0) { Double var1; if (var0 instanceof Number) { var1 = new Double(((Number)var0).doubleValue() - (double)1.0F); } else { var1 = new Double(toNumber(var0) - (double)1.0F); } return var1; } public static Object postDecrement(Scriptable var0, String var1) { for(Scriptable var2 = var0; var2 != null; var2 = var2.getParentScope()) { Scriptable var3 = var2; while(true) { Object var4 = var3.get(var1, var2); if (var4 != Scriptable.NOT_FOUND) { if (var4 instanceof Number) { Double var6 = new Double(((Number)var4).doubleValue() - (double)1.0F); var3.put(var1, var2, var6); return var4; } Double var5 = new Double(toNumber(var4) - (double)1.0F); var3.put(var1, var2, var5); return new Double(toNumber(var4)); } var3 = var3.getPrototype(); if (var3 == null) { break; } } } throw Context.reportRuntimeError(var1.toString() + " is not defined"); } public static Object postDecrement(Object var0, String var1, Scriptable var2) { Scriptable var3; try { var3 = (Scriptable)var0; } catch (ClassCastException var7) { var3 = toObject(var2, var0); } if (var3 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { Scriptable var4 = var3; do { Object var5 = var4.get(var1, var3); if (var5 != Scriptable.NOT_FOUND) { if (var5 instanceof Number) { Double var8 = new Double(((Number)var5).doubleValue() - (double)1.0F); var4.put(var1, var3, var8); return var5; } else { Double var6 = new Double(toNumber(var5) - (double)1.0F); var4.put(var1, var3, var6); return new Double(toNumber(var5)); } } var4 = var4.getPrototype(); } while(var4 != null); Undefined.obj = var3; Undefined.id = var1; return Undefined.instance; } } public static boolean instanceOf(Object var0, Object var1) { if (!(var1 instanceof Scriptable)) { throw Context.reportRuntimeError(getMessage("msg.instanceof.not.object", (Object[])null)); } else { return !(var0 instanceof Scriptable) ? false : ((Scriptable)var1).hasInstance((Scriptable)var0); } } public static int cmp_LE(Object var0, Object var1) { if (var0 instanceof Scriptable) { var0 = ((Scriptable)var0).getDefaultValue(NumberClass); } if (var1 instanceof Scriptable) { var1 = ((Scriptable)var1).getDefaultValue(NumberClass); } if (var0 instanceof String && var1 instanceof String) { return toString(var0).compareTo(toString(var1)) <= 0 ? 1 : 0; } else { double var2 = toNumber(var0); if (var2 != var2) { return 0; } else { double var4 = toNumber(var1); if (var4 != var4) { return 0; } else { return var2 <= var4 ? 1 : 0; } } } } public static NativeCall getCurrentActivation(Context var0) { return var0.currentActivation; } public static void setCurrentActivation(Context var0, NativeCall var1) { var0.currentActivation = var1; } public static boolean shallowEq(Object var0, Object var1) { Class var2 = getTypeOfValue(var0); if (var2 != getTypeOfValue(var1)) { return false; } else if (var2 != StringClass && var2 != BooleanClass) { if (var2 == NumberClass) { return ((Number)var0).doubleValue() == ((Number)var1).doubleValue(); } else if (var2 == ScriptableClass) { if (var0 == var1) { return true; } else if (var0 instanceof NativeJavaObject && var1 instanceof NativeJavaObject) { return ((NativeJavaObject)var0).unwrap() == ((NativeJavaObject)var1).unwrap(); } else { return false; } } else { return var2 == UndefinedClass; } } else { return var0.equals(var1); } } public static Boolean sneB(Object var0, Object var1) { return shallowEq(var0, var1) ? Boolean.FALSE : Boolean.TRUE; } static void checkDeprecated(Context var0, String var1) { int var2 = var0.getLanguageVersion(); if (var2 >= 140 || var2 == 0) { Object[] var3 = new Object[]{var1}; String var4 = getMessage("msg.deprec.ctor", var3); if (var2 == 0) { Context.reportWarning(var4); } else { throw Context.reportRuntimeError(var4); } } } // $FF: renamed from: in (java.lang.Object, java.lang.Object) boolean public static boolean method_0(Object var0, Object var1) { if (!(var1 instanceof Scriptable)) { throw Context.reportRuntimeError(getMessage("msg.in.not.object", (Object[])null)); } else { FlattenedObject var2 = new FlattenedObject((Scriptable)var1); return var2.hasProperty(var0); } } public static Object add(Object var0, Object var1) { if (var0 instanceof Scriptable) { var0 = ((Scriptable)var0).getDefaultValue((Class)null); } if (var1 instanceof Scriptable) { var1 = ((Scriptable)var1).getDefaultValue((Class)null); } if (!(var0 instanceof String) && !(var1 instanceof String)) { return var0 instanceof Number && var1 instanceof Number ? new Double(((Number)var0).doubleValue() + ((Number)var1).doubleValue()) : new Double(toNumber(var0) + toNumber(var1)); } else { return toString(var0) + toString(var1); } } static String getStringId(Object var0) { if (var0 instanceof Number) { double var4 = ((Number)var0).doubleValue(); int var3 = (int)var4; return (double)var3 == var4 ? null : toString(var0); } else { String var1 = toString(var0); int var2 = indexFromString(var1); return var2 == 5 && (var1.length() != 1 || var1.charAt(0) != '5') ? var1 : null; } } public static Scriptable getBase(Scriptable var0, String var1) { Scriptable var2 = var0; label21: while(var2 != null) { Scriptable var3 = var2; while(var3.get(var1, var2) == Scriptable.NOT_FOUND) { var3 = var3.getPrototype(); if (var3 == null) { var2 = var2.getParentScope(); continue label21; } } return var2; } Object[] var4 = new Object[]{var1}; throw Context.reportRuntimeError(getMessage("msg.is.not.defined", var4)); } public static Boolean neB(Object var0, Object var1) { return method_1(var0, var1) ? Boolean.FALSE : Boolean.TRUE; } public static Scriptable newObjectSpecial(Context var0, Object var1, Object[] var2, Scriptable var3) throws JavaScriptException { return (Scriptable)callOrNewSpecial(var0, var3, var1, (Object)null, var2, false, (String)null, -1); } public static Boolean cmp_LTB(Object var0, Object var1) { return cmp_LT(var0, var1) == 1 ? Boolean.TRUE : Boolean.FALSE; } // $FF: renamed from: eq (java.lang.Object, java.lang.Object) boolean public static boolean method_1(Object var0, Object var1) { Object var2 = var0; Object var3 = var1; while(true) { Class var4 = getTypeOfValue(var0); Class var5 = getTypeOfValue(var1); if (var4 == var5) { if (var4 == UndefinedClass) { return true; } if (var4 == NumberClass) { if (((Number)var0).doubleValue() != ((Number)var1).doubleValue()) { return false; } return true; } if (var4 != StringClass && var4 != BooleanClass) { if (var4 == ScriptableClass) { if (var0 == var1) { return true; } if (var0 instanceof NativeJavaObject && var1 instanceof NativeJavaObject) { if (((NativeJavaObject)var0).unwrap() != ((NativeJavaObject)var1).unwrap()) { return false; } return true; } return false; } throw new RuntimeException(); } return var2.equals(var3); } if (var0 == null && var1 == Undefined.instance) { return true; } if (var0 == Undefined.instance && var1 == null) { return true; } if (var4 == NumberClass && var5 == StringClass) { if (((Number)var0).doubleValue() != toNumber(var1)) { return false; } return true; } if (var4 == StringClass && var5 == NumberClass) { if (toNumber(var0) != ((Number)var1).doubleValue()) { return false; } return true; } if (var4 != BooleanClass) { if (var5 != BooleanClass) { if (var4 != StringClass && var4 != NumberClass || var5 != ScriptableClass || var1 == null) { if (var4 != ScriptableClass || var0 == null || var5 != StringClass && var5 != NumberClass) { return false; } var0 = toPrimitive(var0); var2 = var0; } else { var1 = toPrimitive(var1); var3 = var1; } } else { var1 = new Double(toNumber(var1)); var3 = var1; } } else { var0 = new Double(toNumber(var0)); var2 = var0; } } } public static double toInteger(Object var0) { double var1 = toNumber(var0); if (var1 != var1) { return (double)0.0F; } else if (var1 != (double)0.0F && var1 != Double.POSITIVE_INFINITY && var1 != Double.NEGATIVE_INFINITY) { return var1 > (double)0.0F ? Math.floor(var1) : Math.ceil(var1); } else { return var1; } } public static double toInteger(double var0) { if (var0 != var0) { return (double)0.0F; } else if (var0 != (double)0.0F && var0 != Double.POSITIVE_INFINITY && var0 != Double.NEGATIVE_INFINITY) { return var0 > (double)0.0F ? Math.floor(var0) : Math.ceil(var0); } else { return var0; } } public static Object setName(Scriptable var0, Object var1, Scriptable var2, String var3) { if (var0 != null) { return setProp(var0, var3, var1, var2); } else { Scriptable var4 = var2; do { var0 = var4; var4 = var4.getParentScope(); } while(var4 != null); var0.put(var3, var0, var1); String[] var5 = new String[]{var3}; String var6 = getMessage("msg.assn.create", var5); Context.reportWarning(var6); return var1; } } public static String typeofName(Scriptable var0, String var1) { Scriptable var2 = bind(var0, var1); return var2 == null ? "undefined" : typeof(getProp(var2, var1, var0)); } public static long toUint32(double var0) { double var2 = (double)4.2949673E9F; if (var0 == var0 && var0 != (double)0.0F && var0 != Double.POSITIVE_INFINITY && var0 != Double.NEGATIVE_INFINITY) { if (var0 > (double)0.0F) { var0 = Math.floor(var0); } else { var0 = Math.ceil(var0); } var0 = Math.IEEEremainder(var0, var2); var0 = var0 >= (double)0.0F ? var0 : var0 + var2; return (long)Math.floor(var0); } else { return 0L; } } public static long toUint32(Object var0) { return toUint32(toNumber(var0)); } public static Object[] padArguments(Object[] var0, int var1) { if (var1 < var0.length) { return var0; } else { Object[] var3 = new Object[var1]; int var2; for(var2 = 0; var2 < var0.length; ++var2) { var3[var2] = var0[var2]; } while(var2 < var1) { var3[var2] = Undefined.instance; ++var2; } return var3; } } private static Object callOrNewSpecial(Context var0, Scriptable var1, Object var2, Object var3, Object[] var4, boolean var5, String var6, int var7) throws JavaScriptException { if (var2 instanceof FunctionObject) { FunctionObject var8 = (FunctionObject)var2; Method var9 = var8.method; Class var10 = var9.getDeclaringClass(); String var11 = var9.getName(); if (var11.equals("eval") && var10 == (class$com$netscape$javascript$NativeGlobal != null ? class$com$netscape$javascript$NativeGlobal : (class$com$netscape$javascript$NativeGlobal = class$("com.netscape.javascript.NativeGlobal")))) { return NativeGlobal.evalSpecial(var0, var1, var3, var4, var6, var7); } if (var11.equals("js_Closure") && var10 == (class$com$netscape$javascript$NativeClosure != null ? class$com$netscape$javascript$NativeClosure : (class$com$netscape$javascript$NativeClosure = class$("com.netscape.javascript.NativeClosure")))) { return NativeClosure.newClosureSpecial(var0, var1, var4, var8); } if (var11.equals("With") && var10 == (class$com$netscape$javascript$NativeWith != null ? class$com$netscape$javascript$NativeWith : (class$com$netscape$javascript$NativeWith = class$("com.netscape.javascript.NativeWith")))) { return NativeWith.newWithSpecial(var0, var4, var8, !var5); } } return var5 ? call(var0, var2, var3, var4) : newObject(var0, var2, var4); } public static Enumeration initEnum(Object var0, Scriptable var1) { Scriptable var2 = toObject(var1, var0); return new IdEnumeration(var2); } public static Object postDecrementElem(Object var0, Object var1, Scriptable var2) { Object var3 = getElem(var0, var1, var2); if (var3 == Undefined.instance) { return Undefined.instance; } else { double var4 = toNumber(var3); Double var6 = new Double(var4 - (double)1.0F); setElem(var0, var1, var6, var2); return new Double(var4); } } public static Object toPrimitive(Object var0) { if (var0 != null && var0 instanceof Scriptable) { Object var1 = ((Scriptable)var0).getDefaultValue((Class)null); if (var1 != null && var1 instanceof Scriptable) { throw Context.reportRuntimeError(getMessage("msg.bad.default.value", (Object[])null)); } else { return var1; } } else { return var0; } } public static Object unwrapJavaScriptException(JavaScriptException var0) { return var0.value; } public static Scriptable initVarObj(Context var0, Scriptable var1, NativeFunction var2, Scriptable var3, Object[] var4) { NativeCall var5 = new NativeCall(var0, var1, var2, var3, var4); String[] var6 = var2.names; if (var6 != null) { for(int var7 = var2.argCount + 1; var7 < var2.names.length; ++var7) { String var8 = var2.names[var7]; ((ScriptableObject)var5).put(var8, var5, Undefined.instance); } } return var5; } public static void popActivation(Context var0) { if (var0.currentActivation != null) { var0.currentActivation = var0.currentActivation.caller; } } public static NativeFunction defineFunction(Scriptable var0, String var1, String var2, Object var3) throws ClassNotFoundException { NativeFunction var4; try { ClassLoader var5 = var3.getClass().getClassLoader(); Class var6 = var5 == null ? Class.forName(var1) : var5.loadClass(var1); var4 = createFunctionObject(var0, var6); } catch (ClassNotFoundException var7) { throw WrappedException.wrapException(var7); } if (var2 != null && var2.length() != 0) { setName(var0, var4, var0, var2); } return var4; } protected ScriptRuntime() { } public static Scriptable getParent(Object var0) { Scriptable var1; try { var1 = (Scriptable)var0; } catch (ClassCastException var2) { return null; } return var1 == null ? null : getThis(var1.getParentScope()); } public static Scriptable getParent(Object var0, Scriptable var1) { Scriptable var2; try { var2 = (Scriptable)var0; } catch (ClassCastException var3) { var2 = toObject(var1, var0); } if (var2 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { return var2.getParentScope(); } } public static Object setParent(Object var0, Object var1, Scriptable var2) { Scriptable var3; try { var3 = (Scriptable)var0; } catch (ClassCastException var7) { var3 = toObject(var2, var0); } Scriptable var4 = var1 == null ? null : toObject(var2, var1); for(Scriptable var5 = var4; var5 != null; var5 = var5.getParentScope()) { if (var5 == var3) { Object[] var6 = new Object[]{"__parent__"}; throw Context.reportRuntimeError(getMessage("msg.cyclic.value", var6)); } } if (var3 == null) { throw Context.reportRuntimeError(getMessage("msg.null.to.object", (Object[])null)); } else { var3.setParentScope(var4); return var4; } } public static Scriptable bind(Scriptable var0, String var1) { Scriptable var2 = var0; label21: while(var2 != null) { Scriptable var3 = var2; while(!var3.has(var1, var2)) { var3 = var3.getPrototype(); if (var3 == null) { var2 = var2.getParentScope(); continue label21; } } return var2; } return null; } public static String numberToString(double var0) { if (var0 != var0) { return "NaN"; } else if (var0 == Double.POSITIVE_INFINITY) { return "Infinity"; } else if (var0 == Double.NEGATIVE_INFINITY) { return "-Infinity"; } else if (var0 == (double)0.0F) { return "0"; } else { boolean var2 = true; boolean var3 = true; String var4 = Double.toString(var0); char[] var5 = var4.toCharArray(); int var6 = -1; int var7 = -1; boolean var8 = false; boolean var9 = false; for(int var10 = 0; var10 < var5.length; ++var10) { switch (var5[var10]) { case '-': if (var7 == -1) { var8 = true; } else { var9 = true; } break; case '.': var6 = var10; break; case 'E': var7 = var10; } } if (var7 == -1) { return var6 == var5.length - 2 && var5[var5.length - 1] == '0' ? new String(var5, 0, var5.length - 2) : var4; } else { int var16 = Integer.parseInt(new String(var5, var7 + 1, var5.length - var7 - 1)); StringBuffer var11 = new StringBuffer(); boolean var12 = var6 + 2 == var7 && var5[var6 + 1] == '0'; if (var16 >= -6 && var16 <= 20) { if (var8) { var11.append('-'); } if (var16 < 0) { var11.append("0."); for(int var17 = var16 + 1; var17 < 0; ++var17) { var11.append('0'); } } var11.append(var5[var6 - 1]); int var18 = 0; if (!var12) { var18 = var7 - var6 - 1; if (var16 > 0 && var16 < var18) { var11.append(var5, var6 + 1, var16); var11.append('.'); var11.append(var5, var6 + var16 + 1, var18 - var16); } else { var11.append(var5, var6 + 1, var18); } } if (var16 > 0) { for(int var19 = var18; var19 < var16; ++var19) { var11.append('0'); } } return var11.toString(); } else { int var13 = var12 ? 1 : var7; if (var8) { var11.append('-'); var11.append(var5, 1, var13); } else { var11.append(var5, 0, var13); } var11.append('e'); var11.append((char)(var16 < 0 ? '-' : '+')); int var14 = var7 + (var16 < 0 ? 2 : 1); var11.append(var5, var14, var5.length - var14); return var11.toString(); } } } } static { UndefinedClass = class$com$netscape$javascript$Undefined != null ? class$com$netscape$javascript$Undefined : (class$com$netscape$javascript$Undefined = class$("com.netscape.javascript.Undefined")); ScriptableClass = class$com$netscape$javascript$Scriptable != null ? class$com$netscape$javascript$Scriptable : (class$com$netscape$javascript$Scriptable = class$("com.netscape.javascript.Scriptable")); StringClass = class$java$lang$String != null ? class$java$lang$String : (class$java$lang$String = class$("java.lang.String")); NumberClass = class$java$lang$Number != null ? class$java$lang$Number : (class$java$lang$Number = class$("java.lang.Number")); BooleanClass = class$java$lang$Boolean != null ? class$java$lang$Boolean : (class$java$lang$Boolean = class$("java.lang.Boolean")); ByteClass = class$java$lang$Byte != null ? class$java$lang$Byte : (class$java$lang$Byte = class$("java.lang.Byte")); ShortClass = class$java$lang$Short != null ? class$java$lang$Short : (class$java$lang$Short = class$("java.lang.Short")); IntegerClass = class$java$lang$Integer != null ? class$java$lang$Integer : (class$java$lang$Integer = class$("java.lang.Integer")); LongClass = class$java$lang$Long != null ? class$java$lang$Long : (class$java$lang$Long = class$("java.lang.Long")); FloatClass = class$java$lang$Float != null ? class$java$lang$Float : (class$java$lang$Float = class$("java.lang.Float")); DoubleClass = class$java$lang$Double != null ? class$java$lang$Double : (class$java$lang$Double = class$("java.lang.Double")); CharacterClass = class$java$lang$Character != null ? class$java$lang$Character : (class$java$lang$Character = class$("java.lang.Character")); ObjectClass = class$java$lang$Object != null ? class$java$lang$Object : (class$java$lang$Object = class$("java.lang.Object")); FunctionClass = class$com$netscape$javascript$Function != null ? class$com$netscape$javascript$Function : (class$com$netscape$javascript$Function = class$("com.netscape.javascript.Function")); NaN = Double.NaN; NaNobj = new Double(Double.NaN); negativeZero = (double)-0.0F; MAX_VALUE_LENGTH = Integer.toString(Integer.MAX_VALUE).length(); emptyArgs = new Object[0]; } public static Scriptable getThis(Scriptable var0) { while(var0 instanceof NativeWith) { var0 = var0.getPrototype(); } if (var0 instanceof NativeCall) { var0 = ScriptableObject.getTopLevelScope(var0); } return var0; } public static Boolean seqB(Object var0, Object var1) { return shallowEq(var0, var1) ? Boolean.TRUE : Boolean.FALSE; } public static Object delete(Object var0, Object var1) { if (!(var0 instanceof Scriptable)) { return Boolean.TRUE; } else { FlattenedObject var2 = new FlattenedObject((Scriptable)var0); return var2.deleteProperty(var1) ? Boolean.TRUE : Boolean.FALSE; } } public static Scriptable enterWith(Object var0, Scriptable var1) { return new NativeWith(var1, toObject(var1, var0)); } public static Scriptable leaveWith(Scriptable var0) { return var0.getParentScope(); } public static Object name(Scriptable var0, String var1) { for(Scriptable var2 = var0; var2 != null; var2 = var2.getParentScope()) { Scriptable var3 = var2; while(true) { Object var4 = var3.get(var1, var2); if (var4 != Scriptable.NOT_FOUND) { return var4; } var3 = var3.getPrototype(); if (var3 == null) { break; } } } Object[] var5 = new Object[]{var1.toString()}; throw Context.reportRuntimeError(getMessage("msg.is.not.defined", var5)); } }