diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f066e03e..9e520f6e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - Text display - Alpha channel should not be supported for texts using device fonts - [#2192] Long script lines are now wrapped (1000 chars limit by default) to avoid problems on Linux - [#2354] Simplify expressions problems in some cases +- [#2353] AS1/2 - fscommand and other dynamic GetURL related calls (decompilation + editation) ## [21.1.1] - 2024-10-13 ### Added @@ -3627,6 +3628,7 @@ Major version of SWF to XML export changed to 2. [#2345]: https://www.free-decompiler.com/flash/issues/2345 [#2192]: https://www.free-decompiler.com/flash/issues/2192 [#2354]: https://www.free-decompiler.com/flash/issues/2354 +[#2353]: https://www.free-decompiler.com/flash/issues/2353 [#2321]: https://www.free-decompiler.com/flash/issues/2321 [#2305]: https://www.free-decompiler.com/flash/issues/2305 [#2328]: https://www.free-decompiler.com/flash/issues/2328 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java index a23720477..79d0bf5aa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf3.ActionGetURL; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; @@ -94,7 +95,7 @@ public class FSCommandActionItem extends ActionItem { ((parameter instanceof DirectValueActionItem) && ((DirectValueActionItem) parameter).isString()))) { return toSourceMerge(localData, generator, new ActionGetURL("FSCommand:" + ((DirectValueActionItem) command).getAsString(), parameter == null ? "" : ((DirectValueActionItem) parameter).getAsString(), charset)); } - return toSourceMerge(localData, generator, new AddActionItem(null, null, asGenerator.pushConstTargetItem("FSCommand:"), command, true), parameter == null ? asGenerator.pushConstTargetItem("") : parameter, new ActionGetURL2(1/*GET*/, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); + return toSourceMerge(localData, generator, new StringAddActionItem(null, null, asGenerator.pushConstTargetItem("FSCommand:"), command), parameter == null ? asGenerator.pushConstTargetItem("") : parameter, new ActionGetURL2(1/*GET*/, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java index 14d08db26..a95c98426 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieNumActionItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.flash.action.swf4.ActionPush; @@ -111,7 +112,7 @@ public class LoadMovieNumActionItem extends ActionItem { if ((num instanceof DirectValueActionItem) && (((DirectValueActionItem) num).value instanceof Long)) { lev = asGenerator.pushConstTargetItem("_level" + ((DirectValueActionItem) num).value); } else { - lev = new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num, true); + lev = new StringAddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num); } return toSourceMerge(localData, generator, urlString, lev, new ActionGetURL2(method, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java index fe2d81ffd..2bff005ea 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesNumActionItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.flash.action.swf4.ActionPush; @@ -111,7 +112,7 @@ public class LoadVariablesNumActionItem extends ActionItem { if ((num instanceof DirectValueActionItem) && (((DirectValueActionItem) num).value instanceof Long)) { lev = asGenerator.pushConstTargetItem("_level" + ((DirectValueActionItem) num).value); } else { - lev = new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num, true); + lev = new StringAddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num); } return toSourceMerge(localData, generator, urlString, lev, new ActionGetURL2(method, true, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java index 0695a19d7..3d23369de 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintAsBitmapNumActionItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.flash.action.swf4.ActionPush; @@ -97,7 +98,7 @@ public class PrintAsBitmapNumActionItem extends ActionItem { if ((num instanceof DirectValueActionItem) && (((DirectValueActionItem) num).value instanceof Long)) { lev = asGenerator.pushConstTargetItem("_level" + ((DirectValueActionItem) num).value); } else { - lev = new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num, true); + lev = new StringAddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num); } return toSourceMerge(localData, generator, new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("printasbitmap:#"), boundingBox, true), lev, new ActionGetURL2(0, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java index 5c641d084..65f33d783 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/PrintNumActionItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; import com.jpexs.decompiler.flash.action.swf4.ActionPush; @@ -97,7 +98,7 @@ public class PrintNumActionItem extends ActionItem { if ((num instanceof DirectValueActionItem) && (((DirectValueActionItem) num).value instanceof Long)) { lev = asGenerator.pushConstTargetItem("_level" + ((DirectValueActionItem) num).value); } else { - lev = new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num, true); + lev = new StringAddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num); } return toSourceMerge(localData, generator, new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("print:#"), boundingBox, true), lev, new ActionGetURL2(0, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java index db81c76c2..25d41736c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieNumActionItem.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.model.operations.AddActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.script.ActionSourceGenerator; import com.jpexs.decompiler.flash.action.swf3.ActionGetURL; import com.jpexs.decompiler.flash.action.swf4.ActionGetURL2; @@ -87,7 +88,7 @@ public class UnLoadMovieNumActionItem extends ActionItem { if ((num instanceof DirectValueActionItem) && (((DirectValueActionItem) num).value instanceof Long)) { return toSourceMerge(localData, generator, new ActionGetURL("", "_level" + ((DirectValueActionItem) num).value, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } else { - return toSourceMerge(localData, generator, new ActionPush("", charset), new AddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num, true), new ActionGetURL2(0, false, true, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); + return toSourceMerge(localData, generator, new ActionPush("", charset), new StringAddActionItem(getSrc(), getLineStartItem(), asGenerator.pushConstTargetItem("_level"), num), new ActionGetURL2(0, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java index a1fbe6173..6ebee4f2b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java @@ -23,6 +23,7 @@ import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.LocalDataArea; import com.jpexs.decompiler.flash.action.as2.Trait; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; +import com.jpexs.decompiler.flash.action.model.FSCommandActionItem; import com.jpexs.decompiler.flash.action.model.GetURL2ActionItem; import com.jpexs.decompiler.flash.action.model.LoadMovieActionItem; import com.jpexs.decompiler.flash.action.model.LoadMovieNumActionItem; @@ -34,6 +35,7 @@ import com.jpexs.decompiler.flash.action.model.PrintAsBitmapNumActionItem; import com.jpexs.decompiler.flash.action.model.PrintNumActionItem; import com.jpexs.decompiler.flash.action.model.UnLoadMovieActionItem; import com.jpexs.decompiler.flash.action.model.UnLoadMovieNumActionItem; +import com.jpexs.decompiler.flash.action.model.operations.StringAddActionItem; import com.jpexs.decompiler.flash.action.parser.ActionParseException; import com.jpexs.decompiler.flash.action.parser.pcode.ASMParsedSymbol; import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; @@ -187,7 +189,7 @@ public class ActionGetURL2 extends Action { public void translate(Map> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List output, HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { GraphTargetItem targetString = stack.pop(); GraphTargetItem urlString = stack.pop(); - Integer num = null; + GraphTargetItem num = null; if (targetString.isCompileTime()) { Object res = targetString.getResult(); if (res instanceof String) { @@ -195,16 +197,35 @@ public class ActionGetURL2 extends Action { String levelPrefix = "_level"; if (tarStr.startsWith(levelPrefix)) { try { - num = Integer.valueOf(tarStr.substring(levelPrefix.length())); + num = new DirectValueActionItem(Long.valueOf(tarStr.substring(levelPrefix.length()))); } catch (NumberFormatException nfe) { //ignored } } } } + if (num == null) { + if (targetString instanceof StringAddActionItem) { + StringAddActionItem sa = (StringAddActionItem) targetString; + if (sa.leftSide.isCompileTime()) { + Object res = sa.leftSide.getResult(); + if (res instanceof String) { + String tarStr = (String) res; + String levelPrefix = "_level"; + if (tarStr.equals(levelPrefix)) { + num = sa.rightSide; + } + } + } + } + } + + + + if (loadVariablesFlag) { if (num != null) { - output.add(new LoadVariablesNumActionItem(this, lineStartAction, urlString, new DirectValueActionItem(null, null, 0, (Long) (long) (int) num, new ArrayList<>()), sendVarsMethod)); + output.add(new LoadVariablesNumActionItem(this, lineStartAction, urlString, num, sendVarsMethod)); } else { output.add(new LoadVariablesActionItem(this, lineStartAction, urlString, targetString, sendVarsMethod)); } @@ -215,28 +236,72 @@ public class ActionGetURL2 extends Action { output.add(new LoadMovieActionItem(this, lineStartAction, urlString, targetString, sendVarsMethod)); } } else { - String printPrefix = "print:#"; - String printAsBitmapPrefix = "printasbitmap:#"; - String urlStr = null; + final String printPrefix = "print:#"; + final String printAsBitmapPrefix = "printasbitmap:#"; + final String fscommandPrefix = "FSCommand:"; + GraphTargetItem printType = null; + boolean doPrint = false; + boolean doPrintAsBitmap = false; + boolean doFSCommand = false; + boolean doUnload = false; + if (urlString.isCompileTime() && (urlString.getResult() instanceof String)) { - urlStr = (String) urlString.getResult(); - } + String urlStr = (String) urlString.getResult(); + if ("".equals(urlStr)) { + doUnload = true; + } else if (urlStr.startsWith(printPrefix)) { + printType = new DirectValueActionItem(urlStr.substring(printPrefix.length())); + doPrint = true; + } else if (urlStr.startsWith(printAsBitmapPrefix)) { + printType = new DirectValueActionItem(urlStr.substring(printAsBitmapPrefix.length())); + doPrintAsBitmap = true; + } else if (urlStr.startsWith(fscommandPrefix)) { + urlString = new DirectValueActionItem(urlStr.substring(fscommandPrefix.length())); + doFSCommand = true; + } + } else if (urlString instanceof StringAddActionItem) { + StringAddActionItem sa = (StringAddActionItem) urlString; + if (sa.leftSide.isCompileTime()) { + Object res = sa.leftSide.getResult(); + if (res instanceof String) { + String urlStr = (String) res; + switch (urlStr) { + case printPrefix: + printType = sa.rightSide; + doPrint = true; + urlString = null; + break; + case printAsBitmapPrefix: + printType = sa.rightSide; + doPrintAsBitmap = true; + urlString = null; + break; + case fscommandPrefix: + urlString = sa.rightSide; + doFSCommand = true; + break; + } + } + } + } if (num != null) { - if ("".equals(urlStr)) { - output.add(new UnLoadMovieNumActionItem(this, lineStartAction, new DirectValueActionItem(null, null, 0, (Long) (long) (int) num, new ArrayList<>()))); - } else if (urlStr != null && urlStr.startsWith(printPrefix)) { - output.add(new PrintNumActionItem(this, lineStartAction, new DirectValueActionItem((Long) (long) (int) num), - new DirectValueActionItem(urlStr.substring(printPrefix.length())))); - } else if (urlStr != null && urlStr.startsWith(printAsBitmapPrefix)) { - output.add(new PrintAsBitmapNumActionItem(this, lineStartAction, new DirectValueActionItem((Long) (long) (int) num), new DirectValueActionItem(urlStr.substring(printAsBitmapPrefix.length())))); + if (doUnload) { + output.add(new UnLoadMovieNumActionItem(this, lineStartAction, num)); + } else if (doPrint) { + output.add(new PrintNumActionItem(this, lineStartAction, num, + printType)); + } else if (doPrintAsBitmap) { + output.add(new PrintAsBitmapNumActionItem(this, lineStartAction, num, printType)); } else { - output.add(new LoadMovieNumActionItem(this, lineStartAction, urlString, new DirectValueActionItem(null, null, 0, (Long) (long) (int) num, new ArrayList<>()), sendVarsMethod)); + output.add(new LoadMovieNumActionItem(this, lineStartAction, urlString, num, sendVarsMethod)); } - } else if (urlStr != null && urlStr.startsWith(printPrefix)) { - output.add(new PrintActionItem(this, lineStartAction, targetString, new DirectValueActionItem(urlStr.substring(printPrefix.length())))); - } else if (urlStr != null && urlStr.startsWith(printAsBitmapPrefix)) { - output.add(new PrintAsBitmapActionItem(this, lineStartAction, targetString, new DirectValueActionItem(urlStr.substring(printAsBitmapPrefix.length())))); + } else if (doPrint) { + output.add(new PrintActionItem(this, lineStartAction, targetString, printType)); + } else if (doPrintAsBitmap) { + output.add(new PrintAsBitmapActionItem(this, lineStartAction, targetString, printType)); + } else if (doFSCommand) { + output.add(new FSCommandActionItem(this, lineStartAction, urlString, targetString)); } else { output.add(new GetURL2ActionItem(this, lineStartAction, urlString, targetString, sendVarsMethod)); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java index 0581b9750..10eaf75fa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphTargetItem.java @@ -142,6 +142,9 @@ public abstract class GraphTargetItem implements Serializable, Cloneable { /** * Converts a value to an item * + * FIXME!!! This should only convert to values relatable to current Graph type, + * e.g. ActionItems for AS1/2, AVM2Items for AS3 + * * @param r Value * @return Graph target item */ diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 42ad04b7f..3e143f286 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -2478,4 +2478,21 @@ public class ActionScript2Test extends ActionScript2TestBase { + "var g = 0x0641 ^ a;\r\n" ); } + + @Test + public void frame91_dynamicGetUrlTest() { + compareSrc(91, "trace(\"dynamicGetUrlTest\");\r\n" + + "var n = 5;\r\n" + + "unloadMovieNum(n);\r\n" + + "printNum(n,\"bmax\");\r\n" + + "printAsBitmapNum(n,\"bmax\");\r\n" + + "loadMovieNum(\"something.swf\",n,\"POST\");\r\n" + + "var v = _root.something;\r\n" + + "print(v,\"bmax\");\r\n" + + "printAsBitmap(v,\"bmax\");\r\n" + + "var r = 5;\r\n" + + "getURL(\"file\" + r + \".swf\",\"_blank\",\"POST\");\r\n" + + "fscommand(\"test\" + r,\"xx\");\r\n" + ); + } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2Generator.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2Generator.java index a897e2b47..c7fef2f5d 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2Generator.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2Generator.java @@ -41,6 +41,7 @@ public class AS2Generator { public static void main(String[] args) throws Exception { Configuration.autoDeobfuscate.set(false); + Configuration.simplifyExpressions.set(false); SWF swf = new SWF(new BufferedInputStream(new FileInputStream("testdata/as2/as2.swf")), false); DoABC2Tag tag = null; DoActionTag doa = null; diff --git a/libsrc/ffdec_lib/testdata/as2/as2.swf b/libsrc/ffdec_lib/testdata/as2/as2.swf index b664f2ada..73a27b6ba 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2.swf and b/libsrc/ffdec_lib/testdata/as2/as2.swf differ diff --git a/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml b/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml index 93a88d6db..7e827fc36 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml @@ -31,7 +31,7 @@ - + @@ -761,9 +761,9 @@ +!3159 7239[3270 7033 3327 6947!3327 6947[3353 6908 3412 6794!3412 6794[3470 6682 3500 6639!3500 6639[3602 6491 3649 6692!3649 6692|3713 6670!3713 6670[3760 6655 3782 6655!3782 6655[3942 6655 3985 6781!3985 6781[4007 6844 3996 6914!3996 + 6914[3996 6948 3999 6995!3999 6995[4000 7031 3993 7054!3993 7054[3976 7106 3860 7224!3860 7224[3847 7237 3741 7292!3741 7292[3638 7346 3616 7372!3616 7372[3594 7396 3511 7442!3511 7442[3435 7483 3427 7483!3427 7483[3409 7483 3407 7468 +!3407 7468[3405 7453 3386 7453!3386 7453[3361 7468 3330 7483!3330 7483[3270 7512 3235 7512!3235 7512[3220 7512 3156 7501!3156 7501[3091 7490 3054 7490!3054 7490[3050 7494 3050 7457!3050 7457[3050 7441 3159 7239"/> + + + + + @@ -3398,6 +3417,10 @@ var g = 0x0641 ^ a;]]> + + + + @@ -3414,9 +3437,5 @@ var g = 0x0641 ^ a;]]> - - - - \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml index 84d7e0a40..6d961fbcc 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml @@ -37,30 +37,28 @@ - - - - - + + + + + - - - + + + - - +!1000 4000|7000 4000!0 1000|0 3000"/> + diff --git a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml index 32e670e1f..7aa0f1c9f 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml @@ -36,8 +36,8 @@ trace("init_blue"); - + diff --git a/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml b/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml index 2a74b2c4e..42e21776c 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml @@ -5,8 +5,8 @@ xmlns:xmp="http://ns.adobe.com/xap/1.0/"> Adobe Flash CS4 Professional 2010-08-03T10:48:58+02:00 - 2024-08-01T11:46:08-07:00 - 2024-08-01T11:46:08-07:00 + 2024-10-26T14:36:05-07:00 + 2024-10-26T14:36:05-07:00 @@ -22,7 +22,7 @@ xmp.did:8DD71700DC9EDF1194ADAC9B23608190 xmp.did:F0EB4FF7CAC3ED11AC9DC078F41E1AA7 - xmp.iid:D9738656C14FEF119527A7276211BF58 + xmp.iid:BC64DA72B493EF119A09BEAA35197FE1 xmp.did:8DD71700DC9EDF1194ADAC9B23608190 @@ -464,6 +464,12 @@ 2010-08-03T10:48:58+02:00 Adobe Flash Professional CS6 - build 481 + + created + xmp.iid:BC64DA72B493EF119A09BEAA35197FE1 + 2010-08-03T10:48:58+02:00 + Adobe Flash Professional CS6 - build 481 + diff --git a/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache b/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache index e8105f01f..de89e01ba 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache and b/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache differ