diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b8a0a315..2df3aacff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added +- AS3 support for logical AND/OR compound operator + ### Fixed - [#1981] AS3 fully qualified (colliding) types in submethods - AS3 direct editation - Allow member or call for doubles diff --git a/libsrc/ffdec_lib/lexers/actionscript3_script.flex b/libsrc/ffdec_lib/lexers/actionscript3_script.flex index 0298a68d2..b3b2b3281 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_script.flex @@ -311,7 +311,9 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* ">=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); } "!==" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); } "!=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); } + "&&=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_AND, yytext()); } "&&" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); } + "||=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_OR, yytext()); } "||" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); } "++" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); } "--" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java index 23f402ade..1c474fff2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/SetLocalTypeIns.java @@ -127,8 +127,8 @@ public abstract class SetLocalTypeIns extends InstructionDefinition implements S SetLocalAVM2Item result = new SetLocalAVM2Item(ins, localData.lineStartInstruction, regId, value, value.returnType()); if (value.getNotCoerced() instanceof CompoundableBinaryOp) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) value.getNotCoerced(); - if (binaryOp.getLeftSide() instanceof LocalRegAVM2Item) { - LocalRegAVM2Item loc = (LocalRegAVM2Item) binaryOp.getLeftSide(); + if (binaryOp.getLeftSide().getNotCoerced() instanceof LocalRegAVM2Item) { + LocalRegAVM2Item loc = (LocalRegAVM2Item) binaryOp.getLeftSide().getNotCoerced(); if (loc.regIndex == regId) { result.setCompoundValue(binaryOp.getRightSide()); result.setCompoundOperator(binaryOp.getOperator()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java index 41bb93f00..903831712 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetPropertyIns.java @@ -78,8 +78,8 @@ public class SetPropertyIns extends InstructionDefinition implements SetTypeIns if (setLocName.regIndex == locName.regIndex) { if (setLocVal.value instanceof CompoundableBinaryOp) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) setLocVal.value; - if (binaryOp.getLeftSide() instanceof GetPropertyAVM2Item) { - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) binaryOp.getLeftSide(); + if (binaryOp.getLeftSide().getNotCoerced() instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) binaryOp.getLeftSide().getNotCoerced(); if (((FullMultinameAVM2Item) getProp.propertyName).compareSame(multiname) && Objects.equals(getProp.object, obj)) { multiname.name = setLocName.value; result.setCompoundValue(binaryOp.getRightSide()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSlotIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSlotIns.java index ae4e5d859..c00e7a113 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSlotIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSlotIns.java @@ -158,8 +158,8 @@ public class SetSlotIns extends InstructionDefinition implements SetTypeIns { if (value.getNotCoerced() instanceof CompoundableBinaryOp) { if (!obj.hasSideEffect()) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) value.getNotCoerced(); - if (binaryOp.getLeftSide() instanceof GetSlotAVM2Item) { - GetSlotAVM2Item getSlot = (GetSlotAVM2Item) binaryOp.getLeftSide(); + if (binaryOp.getLeftSide().getNotCoerced() instanceof GetSlotAVM2Item) { + GetSlotAVM2Item getSlot = (GetSlotAVM2Item) binaryOp.getLeftSide().getNotCoerced(); if (Objects.equals(obj, getSlot.scope.getThroughDuplicate()) && slotIndex == getSlot.slotIndex) { result.compoundValue = binaryOp.getRightSide(); result.compoundOperator = binaryOp.getOperator(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java index 1dcb4314a..0559398e0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/other/SetSuperIns.java @@ -61,8 +61,8 @@ public class SetSuperIns extends InstructionDefinition implements SetTypeIns { if (value.getNotCoercedNoDup() instanceof CompoundableBinaryOp) { if (!obj.hasSideEffect() && !multiname.hasSideEffect()) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) value.getNotCoercedNoDup(); - if (binaryOp.getLeftSide() instanceof GetSuperAVM2Item) { - GetSuperAVM2Item getSuper = (GetSuperAVM2Item) binaryOp.getLeftSide(); + if (binaryOp.getLeftSide().getNotCoerced() instanceof GetSuperAVM2Item) { + GetSuperAVM2Item getSuper = (GetSuperAVM2Item) binaryOp.getLeftSide().getNotCoerced(); if (Objects.equals(obj, getSuper.object.getThroughDuplicate()) && Objects.equals(multiname, getSuper.propertyName)) { result.setCompoundValue(binaryOp.getRightSide()); result.setCompoundOperator(binaryOp.getOperator()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index 62fdc812b..8158b47e9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -2133,11 +2133,10 @@ public class ActionScript3Parser { case ASSIGN_SHIFT_RIGHT: case ASSIGN_USHIFT_RIGHT: case ASSIGN_XOR: + case ASSIGN_AND: + case ASSIGN_OR: GraphTargetItem assigned = rhs; - switch (op.type) { - case ASSIGN: - //assigned = assigned; - break; + switch (op.type) { case ASSIGN_BITAND: assigned = new BitAndAVM2Item(null, null, lhs, assigned); break; @@ -2171,6 +2170,16 @@ public class ActionScript3Parser { case ASSIGN_XOR: assigned = new BitXorAVM2Item(null, null, lhs, assigned); break; + case ASSIGN_AND: + assigned = new AndItem(null, null, lhs, assigned); + break; + case ASSIGN_OR: + assigned = new OrItem(null, null, lhs, assigned); + break; + case ASSIGN: + default: + //assigned = assigned; + break; } if (!(lhs instanceof AssignableAVM2Item)) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java index 07d49c9fd..d273808c4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java @@ -258,23 +258,23 @@ public final class ActionScriptLexer { "\1\150\1\151\1\152\2\0\1\153\1\154\1\155\1\0"+ "\1\65\1\156\1\157\1\6\1\160\5\6\1\161\6\6"+ "\1\162\4\6\1\163\4\6\1\164\6\6\1\165\12\6"+ - "\1\166\1\6\1\167\1\6\1\170\2\0\1\171\1\172"+ - "\1\0\1\173\2\0\1\174\4\0\1\175\1\176\2\0"+ - "\1\60\1\150\1\177\1\0\1\200\4\6\1\201\1\202"+ - "\2\6\1\203\12\6\1\204\1\205\1\6\1\206\11\6"+ - "\1\207\5\6\1\210\1\6\1\211\2\0\1\212\1\213"+ - "\1\0\1\214\1\0\1\215\1\0\1\216\1\217\2\6"+ - "\1\220\1\6\1\221\1\222\1\6\1\223\1\6\1\224"+ - "\4\6\1\225\11\6\1\226\5\6\2\0\3\6\1\227"+ - "\1\6\1\230\1\231\1\6\1\232\1\6\1\233\3\6"+ - "\1\234\3\6\1\235\4\6\1\236\1\6\2\0\1\237"+ - "\1\6\1\240\10\6\1\241\1\242\1\6\1\243\1\244"+ - "\1\6\2\0\1\245\1\246\1\247\3\6\1\250\3\6"+ - "\1\251\1\0\1\252\1\253\1\6\1\254\1\6\1\255"+ - "\1\256\1\257\1\260\1\261"; + "\1\166\1\6\1\167\1\6\1\170\1\171\1\172\2\0"+ + "\1\173\1\174\1\0\1\175\2\0\1\176\4\0\1\177"+ + "\1\200\2\0\1\60\1\150\1\201\1\0\1\202\4\6"+ + "\1\203\1\204\2\6\1\205\12\6\1\206\1\207\1\6"+ + "\1\210\11\6\1\211\5\6\1\212\1\6\1\213\2\0"+ + "\1\214\1\215\1\0\1\216\1\0\1\217\1\0\1\220"+ + "\1\221\2\6\1\222\1\6\1\223\1\224\1\6\1\225"+ + "\1\6\1\226\4\6\1\227\11\6\1\230\5\6\2\0"+ + "\3\6\1\231\1\6\1\232\1\233\1\6\1\234\1\6"+ + "\1\235\3\6\1\236\3\6\1\237\4\6\1\240\1\6"+ + "\2\0\1\241\1\6\1\242\10\6\1\243\1\244\1\6"+ + "\1\245\1\246\1\6\2\0\1\247\1\250\1\251\3\6"+ + "\1\252\3\6\1\253\1\0\1\254\1\255\1\6\1\256"+ + "\1\6\1\257\1\260\1\261\1\262\1\263"; private static int [] zzUnpackAction() { - int [] result = new int[459]; + int [] result = new int[461]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -321,45 +321,45 @@ public final class ActionScriptLexer { "\0\u20a8\0\u20f4\0\u2140\0\u218c\0\u0558\0\u0558\0\u21d8\0\u2224"+ "\0\u2270\0\u22bc\0\u2308\0\u0558\0\u2354\0\u23a0\0\u23ec\0\u2438"+ "\0\u2484\0\u24d0\0\u251c\0\u2568\0\u25b4\0\u2600\0\u264c\0\u03dc"+ - "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc"+ - "\0\u2698\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u26e4"+ - "\0\u03dc\0\u1268\0\u03dc\0\u1300\0\u03dc\0\u03dc\0\u2730\0\u277c"+ - "\0\u27c8\0\u2814\0\u2860\0\u28ac\0\u03dc\0\u03dc\0\u28f8\0\u03dc"+ - "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u2944\0\u2990"+ - "\0\u29dc\0\u2a28\0\u2a74\0\u2ac0\0\u03dc\0\u2b0c\0\u2b58\0\u2ba4"+ - "\0\u2bf0\0\u2c3c\0\u2c88\0\u03dc\0\u03dc\0\u2cd4\0\u2d20\0\u03dc"+ - "\0\u2d6c\0\u03dc\0\u2db8\0\u2db8\0\u03dc\0\u1a20\0\u2e04\0\u0558"+ - "\0\u2e50\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u2fcc\0\u3018\0\u3064"+ - "\0\u30b0\0\u30fc\0\u3148\0\u3194\0\u0558\0\u31e0\0\u322c\0\u3278"+ - "\0\u32c4\0\u0558\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u0558\0\u3440"+ - "\0\u348c\0\u34d8\0\u3524\0\u3570\0\u35bc\0\u0558\0\u3608\0\u3654"+ - "\0\u36a0\0\u36ec\0\u3738\0\u3784\0\u37d0\0\u381c\0\u3868\0\u38b4"+ - "\0\u0558\0\u3900\0\u0558\0\u394c\0\u0558\0\u3998\0\u39e4\0\u03dc"+ - "\0\u03dc\0\u3a30\0\u03dc\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac"+ - "\0\u3bf8\0\u3c44\0\u03dc\0\u03dc\0\u3c90\0\u3cdc\0\u2a74\0\u3d28"+ - "\0\u03dc\0\u3d74\0\u03dc\0\u3dc0\0\u3e0c\0\u3e58\0\u3ea4\0\u0558"+ - "\0\u0558\0\u3ef0\0\u3f3c\0\u0558\0\u3f88\0\u3fd4\0\u4020\0\u406c"+ - "\0\u40b8\0\u4104\0\u4150\0\u419c\0\u41e8\0\u4234\0\u0558\0\u0558"+ - "\0\u4280\0\u0558\0\u42cc\0\u4318\0\u4364\0\u43b0\0\u43fc\0\u4448"+ - "\0\u4494\0\u44e0\0\u452c\0\u0558\0\u4578\0\u45c4\0\u4610\0\u465c"+ - "\0\u46a8\0\u0558\0\u46f4\0\u03dc\0\u2698\0\u4740\0\u03dc\0\u03dc"+ - "\0\u478c\0\u03dc\0\u28f8\0\u03dc\0\u47d8\0\u0558\0\u4824\0\u4870"+ - "\0\u48bc\0\u0558\0\u4908\0\u0558\0\u0558\0\u4954\0\u0558\0\u49a0"+ - "\0\u0558\0\u49ec\0\u4a38\0\u4a84\0\u4ad0\0\u0558\0\u4b1c\0\u4b68"+ - "\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4\0\u4d30\0\u4d7c\0\u0558"+ - "\0\u4dc8\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u4f44\0\u4f90\0\u4fdc"+ - "\0\u5028\0\u5074\0\u0558\0\u50c0\0\u0558\0\u0558\0\u510c\0\u0558"+ - "\0\u5158\0\u0558\0\u51a4\0\u51f0\0\u523c\0\u0558\0\u5288\0\u52d4"+ - "\0\u5320\0\u0558\0\u536c\0\u53b8\0\u5404\0\u5450\0\u0558\0\u549c"+ - "\0\u54e8\0\u5534\0\u0558\0\u5580\0\u0558\0\u55cc\0\u5618\0\u5664"+ - "\0\u56b0\0\u56fc\0\u5748\0\u5794\0\u57e0\0\u0558\0\u0558\0\u582c"+ - "\0\u0558\0\u0558\0\u5878\0\u58c4\0\u5910\0\u0558\0\u0558\0\u0558"+ - "\0\u595c\0\u59a8\0\u59f4\0\u0558\0\u5a40\0\u5a8c\0\u5ad8\0\u0558"+ - "\0\u5b24\0\u03dc\0\u0558\0\u5b70\0\u0558\0\u5bbc\0\u0558\0\u0558"+ - "\0\u03dc\0\u0558\0\u0558"; + "\0\u2698\0\u03dc\0\u26e4\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc"+ + "\0\u2730\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u277c"+ + "\0\u03dc\0\u1268\0\u03dc\0\u1300\0\u03dc\0\u03dc\0\u27c8\0\u2814"+ + "\0\u2860\0\u28ac\0\u28f8\0\u2944\0\u03dc\0\u03dc\0\u2990\0\u03dc"+ + "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u29dc\0\u2a28"+ + "\0\u2a74\0\u2ac0\0\u2b0c\0\u2b58\0\u03dc\0\u2ba4\0\u2bf0\0\u2c3c"+ + "\0\u2c88\0\u2cd4\0\u2d20\0\u03dc\0\u03dc\0\u2d6c\0\u2db8\0\u03dc"+ + "\0\u2e04\0\u03dc\0\u2e50\0\u2e50\0\u03dc\0\u1a20\0\u2e9c\0\u0558"+ + "\0\u2ee8\0\u2f34\0\u2f80\0\u2fcc\0\u3018\0\u3064\0\u30b0\0\u30fc"+ + "\0\u3148\0\u3194\0\u31e0\0\u322c\0\u0558\0\u3278\0\u32c4\0\u3310"+ + "\0\u335c\0\u0558\0\u33a8\0\u33f4\0\u3440\0\u348c\0\u0558\0\u34d8"+ + "\0\u3524\0\u3570\0\u35bc\0\u3608\0\u3654\0\u0558\0\u36a0\0\u36ec"+ + "\0\u3738\0\u3784\0\u37d0\0\u381c\0\u3868\0\u38b4\0\u3900\0\u394c"+ + "\0\u0558\0\u3998\0\u0558\0\u39e4\0\u0558\0\u03dc\0\u03dc\0\u3a30"+ + "\0\u3a7c\0\u03dc\0\u03dc\0\u3ac8\0\u03dc\0\u3b14\0\u3b60\0\u3bac"+ + "\0\u3bf8\0\u3c44\0\u3c90\0\u3cdc\0\u03dc\0\u03dc\0\u3d28\0\u3d74"+ + "\0\u2b0c\0\u3dc0\0\u03dc\0\u3e0c\0\u03dc\0\u3e58\0\u3ea4\0\u3ef0"+ + "\0\u3f3c\0\u0558\0\u0558\0\u3f88\0\u3fd4\0\u0558\0\u4020\0\u406c"+ + "\0\u40b8\0\u4104\0\u4150\0\u419c\0\u41e8\0\u4234\0\u4280\0\u42cc"+ + "\0\u0558\0\u0558\0\u4318\0\u0558\0\u4364\0\u43b0\0\u43fc\0\u4448"+ + "\0\u4494\0\u44e0\0\u452c\0\u4578\0\u45c4\0\u0558\0\u4610\0\u465c"+ + "\0\u46a8\0\u46f4\0\u4740\0\u0558\0\u478c\0\u03dc\0\u2730\0\u47d8"+ + "\0\u03dc\0\u03dc\0\u4824\0\u03dc\0\u2990\0\u03dc\0\u4870\0\u0558"+ + "\0\u48bc\0\u4908\0\u4954\0\u0558\0\u49a0\0\u0558\0\u0558\0\u49ec"+ + "\0\u0558\0\u4a38\0\u0558\0\u4a84\0\u4ad0\0\u4b1c\0\u4b68\0\u0558"+ + "\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4\0\u4d30\0\u4d7c\0\u4dc8"+ + "\0\u4e14\0\u0558\0\u4e60\0\u4eac\0\u4ef8\0\u4f44\0\u4f90\0\u4fdc"+ + "\0\u5028\0\u5074\0\u50c0\0\u510c\0\u0558\0\u5158\0\u0558\0\u0558"+ + "\0\u51a4\0\u0558\0\u51f0\0\u0558\0\u523c\0\u5288\0\u52d4\0\u0558"+ + "\0\u5320\0\u536c\0\u53b8\0\u0558\0\u5404\0\u5450\0\u549c\0\u54e8"+ + "\0\u0558\0\u5534\0\u5580\0\u55cc\0\u0558\0\u5618\0\u0558\0\u5664"+ + "\0\u56b0\0\u56fc\0\u5748\0\u5794\0\u57e0\0\u582c\0\u5878\0\u0558"+ + "\0\u0558\0\u58c4\0\u0558\0\u0558\0\u5910\0\u595c\0\u59a8\0\u0558"+ + "\0\u0558\0\u0558\0\u59f4\0\u5a40\0\u5a8c\0\u0558\0\u5ad8\0\u5b24"+ + "\0\u5b70\0\u0558\0\u5bbc\0\u03dc\0\u0558\0\u5c08\0\u0558\0\u5c54"+ + "\0\u0558\0\u0558\0\u03dc\0\u0558\0\u0558"; private static int [] zzUnpackRowMap() { - int [] result = new int[459]; + int [] result = new int[461]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -541,251 +541,252 @@ public final class ActionScriptLexer { "\7\24\4\0\10\24\1\u011b\15\24\23\0\3\24\7\0"+ "\3\24\3\0\4\24\4\0\3\24\1\u011c\3\24\4\0"+ "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\25\24\1\u011d\35\0\1\u011e\1\0\1\u011e"+ - "\3\0\3\u011e\5\0\1\u011e\2\0\4\u011e\4\0\1\u011e"+ - "\1\0\1\u011e\1\0\1\u011e\6\0\1\u011e\47\0\1\u011f"+ - "\1\0\1\u011f\3\0\3\u011f\5\0\1\u011f\2\0\4\u011f"+ - "\4\0\1\u011f\1\0\1\u011f\1\0\1\u011f\6\0\1\u011f"+ - "\45\0\1\u0120\113\0\1\u0121\105\0\1\u0122\6\0\3\u0122"+ - "\4\0\4\u0122\5\0\3\u0122\1\0\2\u0122\4\0\26\u0122"+ - "\2\0\1\u0123\22\0\2\312\3\0\1\312\1\0\5\312"+ - "\2\0\4\312\4\0\7\312\4\0\26\312\32\0\1\u0124"+ - "\7\0\1\u0125\76\0\1\u0126\6\0\3\u0126\4\0\4\u0126"+ - "\5\0\3\u0126\1\0\2\u0126\4\0\26\u0126\35\0\1\u0127"+ - "\1\0\1\u0127\3\0\3\u0127\5\0\1\u0127\2\0\4\u0127"+ - "\4\0\1\u0127\1\0\1\u0127\1\0\1\u0127\6\0\1\u0127"+ - "\47\0\1\u0128\1\0\1\u0128\3\0\3\u0128\5\0\1\u0128"+ - "\2\0\4\u0128\4\0\1\u0128\1\0\1\u0128\1\0\1\u0128"+ - "\6\0\1\u0128\51\0\1\u0129\13\0\1\u012a\3\0\1\u0129"+ - "\67\0\1\u012b\113\0\1\u012c\116\0\1\333\15\0\1\333"+ - "\1\0\1\333\2\0\1\333\4\0\24\333\21\0\1\335"+ - "\111\0\1\336\2\337\1\336\1\340\1\u012d\40\336\1\342"+ - "\45\336\5\337\1\u012e\113\337\1\u012e\13\337\1\340\15\337"+ - "\1\340\1\337\1\340\2\337\1\340\4\337\24\340\17\337"+ - "\1\146\2\0\1\146\1\u012f\1\341\40\146\1\152\45\146"+ - "\1\336\2\337\1\336\1\u0130\1\u012d\40\336\1\342\45\336"+ - "\1\146\2\0\1\146\1\333\14\146\1\343\15\146\1\343"+ - "\1\146\1\343\2\146\1\343\1\146\1\152\2\146\24\343"+ - "\17\146\15\0\1\u0131\124\0\1\u0132\120\0\1\u0133\102\0"+ - "\1\354\13\0\1\354\3\0\1\354\57\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\5\24\1\u0134"+ - "\20\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\2\24\1\u0135\23\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u0136"+ - "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u0137\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\16\24\1\u0138\7\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u0139\4\0\26\24\23\0\3\366\7\0\3\366\3\0"+ - "\4\366\4\0\7\366\4\0\26\366\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u013a"+ + "\7\24\4\0\25\24\1\u011d\50\0\1\u011e\113\0\1\u011f"+ + "\100\0\1\u0120\1\0\1\u0120\3\0\3\u0120\5\0\1\u0120"+ + "\2\0\4\u0120\4\0\1\u0120\1\0\1\u0120\1\0\1\u0120"+ + "\6\0\1\u0120\47\0\1\u0121\1\0\1\u0121\3\0\3\u0121"+ + "\5\0\1\u0121\2\0\4\u0121\4\0\1\u0121\1\0\1\u0121"+ + "\1\0\1\u0121\6\0\1\u0121\45\0\1\u0122\113\0\1\u0123"+ + "\105\0\1\u0124\6\0\3\u0124\4\0\4\u0124\5\0\3\u0124"+ + "\1\0\2\u0124\4\0\26\u0124\2\0\1\u0125\22\0\2\312"+ + "\3\0\1\312\1\0\5\312\2\0\4\312\4\0\7\312"+ + "\4\0\26\312\32\0\1\u0126\7\0\1\u0127\76\0\1\u0128"+ + "\6\0\3\u0128\4\0\4\u0128\5\0\3\u0128\1\0\2\u0128"+ + "\4\0\26\u0128\35\0\1\u0129\1\0\1\u0129\3\0\3\u0129"+ + "\5\0\1\u0129\2\0\4\u0129\4\0\1\u0129\1\0\1\u0129"+ + "\1\0\1\u0129\6\0\1\u0129\47\0\1\u012a\1\0\1\u012a"+ + "\3\0\3\u012a\5\0\1\u012a\2\0\4\u012a\4\0\1\u012a"+ + "\1\0\1\u012a\1\0\1\u012a\6\0\1\u012a\51\0\1\u012b"+ + "\13\0\1\u012c\3\0\1\u012b\67\0\1\u012d\113\0\1\u012e"+ + "\116\0\1\333\15\0\1\333\1\0\1\333\2\0\1\333"+ + "\4\0\24\333\21\0\1\335\111\0\1\336\2\337\1\336"+ + "\1\340\1\u012f\40\336\1\342\45\336\5\337\1\u0130\113\337"+ + "\1\u0130\13\337\1\340\15\337\1\340\1\337\1\340\2\337"+ + "\1\340\4\337\24\340\17\337\1\146\2\0\1\146\1\u0131"+ + "\1\341\40\146\1\152\45\146\1\336\2\337\1\336\1\u0132"+ + "\1\u012f\40\336\1\342\45\336\1\146\2\0\1\146\1\333"+ + "\14\146\1\343\15\146\1\343\1\146\1\343\2\146\1\343"+ + "\1\146\1\152\2\146\24\343\17\146\15\0\1\u0133\124\0"+ + "\1\u0134\120\0\1\u0135\102\0\1\354\13\0\1\354\3\0"+ + "\1\354\57\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\5\24\1\u0136\20\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u0137"+ "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\12\24\1\u013b\13\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\6\24\1\u013c\4\0\26\24"+ + "\7\24\4\0\4\24\1\u0138\21\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u0139\4\0\26\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\4\24\1\u013d\21\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\5\24\1\u013e\2\24"+ - "\1\u013f\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\5\24\1\u0140\20\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ - "\1\u0141\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u0142\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u0143"+ - "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\1\24\1\u0144\24\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u0145"+ - "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u0146\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\14\24\1\u0147\11\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u0148\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\6\24\1\u0149\17\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\5\24\1\u014a\20\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\6\24\1\u014b\4\0\26\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ - "\1\u014c\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u014d\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\6\24\1\u014e"+ - "\5\24\1\u014f\11\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\6\24\1\u0150\4\0\26\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ - "\1\u0151\23\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u0152\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u0153"+ - "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\16\24\1\u0154\7\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\14\24\1\u0155"+ - "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\10\24\1\u0156\15\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\22\24\1\u0157"+ - "\3\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\3\24\1\u0158\22\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\14\24\1\u0159"+ - "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\13\24\1\u015a\12\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u015b"+ - "\14\24\35\0\1\u015c\1\0\1\u015c\3\0\3\u015c\5\0"+ - "\1\u015c\2\0\4\u015c\4\0\1\u015c\1\0\1\u015c\1\0"+ - "\1\u015c\6\0\1\u015c\47\0\1\u015d\1\0\1\u015d\3\0"+ - "\3\u015d\5\0\1\u015d\2\0\4\u015d\4\0\1\u015d\1\0"+ - "\1\u015d\1\0\1\u015d\6\0\1\u015d\30\0\2\u015e\5\0"+ - "\2\u0122\1\0\1\u015e\1\0\1\u0122\1\u015f\5\u0122\2\0"+ - "\4\u0122\4\0\7\u0122\4\0\26\u0122\32\0\1\u0160\124\0"+ - "\1\u0161\75\0\2\u0126\3\0\1\u0126\1\0\5\u0126\2\0"+ - "\4\u0126\4\0\7\u0126\4\0\26\u0126\35\0\1\u0162\1\0"+ - "\1\u0162\3\0\3\u0162\5\0\1\u0162\2\0\4\u0162\4\0"+ - "\1\u0162\1\0\1\u0162\1\0\1\u0162\6\0\1\u0162\47\0"+ - "\1\u0163\1\0\1\u0163\3\0\3\u0163\5\0\1\u0163\2\0"+ - "\4\u0163\4\0\1\u0163\1\0\1\u0163\1\0\1\u0163\6\0"+ - "\1\u0163\51\0\1\u0129\13\0\1\u0129\3\0\1\u0129\37\0"+ - "\1\u0164\113\0\1\u0164\11\0\1\336\2\337\1\336\1\u012f"+ - "\1\u012d\40\336\1\342\45\336\4\337\1\335\1\u012e\106\337"+ - "\1\336\2\337\1\336\1\340\1\u012d\13\336\1\u0130\15\336"+ - "\1\u0130\1\336\1\u0130\2\336\1\u0130\1\336\1\342\2\336"+ - "\24\u0130\17\336\27\0\1\u0165\72\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\u0166\4\0\26\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\14\24\1\u0167\11\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\10\24\1\u0168\15\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\7\24\1\u0169\16\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\3\24\1\u016a\22\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\1\24\1\u016b\24\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\16\24\1\u016c\7\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\10\24\1\u016d\15\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\11\24\1\u016e\14\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\5\24\1\u016f\20\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\11\24\1\u0170\14\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\1\24\1\u0171\24\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\4\24\1\u0172\21\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\1\24\1\u0173\24\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\22\24\1\u0174\3\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\5\24\1\u0175\20\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\15\24\1\u0176\10\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\6\24\1\u0177\17\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\2\24\1\u0178\23\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\1\24\1\u0179\24\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\1\24\1\u017a\24\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u017b"+ - "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\3\24\1\u017c\3\24\4\0\26\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\12\24"+ - "\1\u017d\13\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\10\24\1\u017e\15\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\21\24"+ - "\1\u017f\4\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u0180\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\6\24\1\u0181\4\0\26\24"+ + "\4\0\16\24\1\u013a\7\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\6\24\1\u013b\4\0\26\24\23\0"+ + "\3\366\7\0\3\366\3\0\4\366\4\0\7\366\4\0"+ + "\26\366\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\2\24\1\u013c\23\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\12\24\1\u013d"+ + "\13\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u013e\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\4\24\1\u013f\21\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\2\24\1\u0182\23\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\2\24\1\u0183\23\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\11\24\1\u0184\14\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\7\24\1\u0185\16\24"+ - "\16\0\2\u015e\10\0\1\u015e\2\0\1\u015f\124\0\1\u0186"+ - "\114\0\1\u0187\71\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\14\24\1\u0188\11\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ - "\1\u0189\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\13\24\1\u018a\12\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\7\24"+ - "\1\u018b\16\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\7\24\1\u018c\16\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ - "\1\u018d\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\16\24\1\u018e\7\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ - "\1\u018f\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u0190\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\17\24\1\u0191"+ - "\6\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\3\24\1\u0192\3\24\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\7\24\1\u0193"+ - "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\3\24\1\u0194\3\24\4\0\7\24\1\u0195\16\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\10\24\1\u0196\15\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\21\24\1\u0197\4\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\11\24\1\u0198\14\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\14\24\1\u0199\11\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u019a"+ - "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\11\24\1\u019b\14\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ - "\1\u019c\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\10\24\1\u019d\15\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\23\24"+ - "\1\u019e\2\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\4\24\1\u019f\21\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ - "\1\u01a0\14\24\45\0\1\u01a1\114\0\1\u01a2\70\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\20\24"+ - "\1\u01a3\5\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\6\24\1\u01a4\17\24\23\0\3\24"+ + "\4\0\5\24\1\u0140\2\24\1\u0141\15\24\23\0\3\24"+ "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\5\24"+ - "\1\u01a5\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\12\24\1\u01a6\13\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\13\24"+ - "\1\u01a7\12\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\2\24\1\u01a8\23\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ - "\1\u01a9\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\2\24\1\u01aa\23\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ - "\1\u01ab\23\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u01ac\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\7\24\1\u01ad"+ - "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\10\24\1\u01ae\15\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u01af"+ - "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\10\24\1\u01b0\15\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\6\24\1\u01b1\4\0\26\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u01b2\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\10\24\1\u01b3\15\24\46\0"+ - "\1\u01b4\112\0\1\u01b5\71\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\7\24\1\u01b6\16\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u01b7"+ - "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u01b8\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u01b9"+ - "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u01ba\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\4\24\1\u01bb\21\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\14\24\1\u01bc\11\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\7\24\1\u01bd\16\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u01be\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\6\24\1\u01bf\4\0\26\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\20\24"+ - "\1\u01c0\5\24\45\0\1\u01c1\110\0\1\u01c2\74\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\6\24\1\u01c3\4\0"+ + "\1\u0142\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\10\24\1\u0143\15\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u0144\4\0"+ "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\6\24\1\u01c4\17\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\6\24\1\u01c5\4\0\26\24"+ + "\7\24\4\0\10\24\1\u0145\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\1\24\1\u0146"+ + "\24\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\11\24\1\u0147\14\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u0148\4\0\26\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\10\24\1\u01c6\15\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\13\24\1\u01c7\12\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\13\24\1\u01c8\12\24\42\0\1\u01c9\74\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\3\24\1\u01ca\3\24"+ + "\4\0\14\24\1\u0149\11\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\6\24\1\u014a\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\6\24\1\u014b\17\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\5\24\1\u014c\20\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u014d"+ "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\5\24\1\u01cb\20\24\15\0"; + "\4\0\7\24\4\0\10\24\1\u014e\15\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u014f\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\6\24\1\u0150\5\24\1\u0151\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u0152"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\2\24\1\u0153\23\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u0154\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\2\24\1\u0155\23\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\16\24\1\u0156"+ + "\7\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\14\24\1\u0157\11\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u0158"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\22\24\1\u0159\3\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\3\24\1\u015a"+ + "\22\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\14\24\1\u015b\11\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\13\24\1\u015c"+ + "\12\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\11\24\1\u015d\14\24\35\0\1\u015e\1\0"+ + "\1\u015e\3\0\3\u015e\5\0\1\u015e\2\0\4\u015e\4\0"+ + "\1\u015e\1\0\1\u015e\1\0\1\u015e\6\0\1\u015e\47\0"+ + "\1\u015f\1\0\1\u015f\3\0\3\u015f\5\0\1\u015f\2\0"+ + "\4\u015f\4\0\1\u015f\1\0\1\u015f\1\0\1\u015f\6\0"+ + "\1\u015f\30\0\2\u0160\5\0\2\u0124\1\0\1\u0160\1\0"+ + "\1\u0124\1\u0161\5\u0124\2\0\4\u0124\4\0\7\u0124\4\0"+ + "\26\u0124\32\0\1\u0162\124\0\1\u0163\75\0\2\u0128\3\0"+ + "\1\u0128\1\0\5\u0128\2\0\4\u0128\4\0\7\u0128\4\0"+ + "\26\u0128\35\0\1\u0164\1\0\1\u0164\3\0\3\u0164\5\0"+ + "\1\u0164\2\0\4\u0164\4\0\1\u0164\1\0\1\u0164\1\0"+ + "\1\u0164\6\0\1\u0164\47\0\1\u0165\1\0\1\u0165\3\0"+ + "\3\u0165\5\0\1\u0165\2\0\4\u0165\4\0\1\u0165\1\0"+ + "\1\u0165\1\0\1\u0165\6\0\1\u0165\51\0\1\u012b\13\0"+ + "\1\u012b\3\0\1\u012b\37\0\1\u0166\113\0\1\u0166\11\0"+ + "\1\336\2\337\1\336\1\u0131\1\u012f\40\336\1\342\45\336"+ + "\4\337\1\335\1\u0130\106\337\1\336\2\337\1\336\1\340"+ + "\1\u012f\13\336\1\u0132\15\336\1\u0132\1\336\1\u0132\2\336"+ + "\1\u0132\1\336\1\342\2\336\24\u0132\17\336\27\0\1\u0167"+ + "\72\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ + "\1\u0168\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\14\24\1\u0169\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\10\24\1\u016a\15\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\7\24\1\u016b\16\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\3\24\1\u016c\22\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\1\24\1\u016d\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\16\24\1\u016e\7\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\10\24\1\u016f\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\11\24\1\u0170\14\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\5\24\1\u0171\20\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\11\24\1\u0172\14\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\1\24\1\u0173\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\4\24\1\u0174\21\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\1\24\1\u0175\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\22\24\1\u0176\3\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\5\24\1\u0177\20\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\15\24\1\u0178\10\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\6\24\1\u0179\17\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\2\24\1\u017a\23\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\1\24\1\u017b\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\u017c\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u017d\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\3\24\1\u017e\3\24"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\12\24\1\u017f\13\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ + "\1\u0180\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\21\24\1\u0181\4\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u0182\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u0183\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\2\24\1\u0184\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\2\24\1\u0185\23\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\11\24\1\u0186\14\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\7\24\1\u0187\16\24\16\0\2\u0160\10\0\1\u0160"+ + "\2\0\1\u0161\124\0\1\u0188\114\0\1\u0189\71\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\14\24"+ + "\1\u018a\11\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\11\24\1\u018b\14\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\13\24"+ + "\1\u018c\12\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\7\24\1\u018d\16\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\7\24"+ + "\1\u018e\16\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\4\24\1\u018f\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\16\24"+ + "\1\u0190\7\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\11\24\1\u0191\14\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u0192\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\17\24\1\u0193\6\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\3\24\1\u0194\3\24\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\7\24\1\u0195\16\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\3\24\1\u0196\3\24\4\0"+ + "\7\24\1\u0197\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\10\24\1\u0198\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\21\24\1\u0199\4\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\11\24\1\u019a\14\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\14\24\1\u019b\11\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u019c\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ + "\1\u019d\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\4\24\1\u019e\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ + "\1\u019f\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\23\24\1\u01a0\2\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ + "\1\u01a1\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\11\24\1\u01a2\14\24\45\0\1\u01a3"+ + "\114\0\1\u01a4\70\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\20\24\1\u01a5\5\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\6\24"+ + "\1\u01a6\17\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\5\24\1\u01a7\20\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\12\24"+ + "\1\u01a8\13\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\13\24\1\u01a9\12\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\u01aa\23\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\4\24\1\u01ab\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\u01ac\23\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\2\24\1\u01ad\23\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u01ae\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\7\24\1\u01af\16\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u01b0"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\4\24\1\u01b1\21\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u01b2"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u01b3\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\6\24\1\u01b4\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\10\24\1\u01b5\15\24\46\0\1\u01b6\112\0\1\u01b7\71\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\7\24\1\u01b8\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u01b9\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u01ba\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\4\24\1\u01bb\21\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u01bc\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\4\24\1\u01bd\21\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\14\24\1\u01be\11\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\7\24\1\u01bf\16\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\6\24\1\u01c0\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u01c1"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\20\24\1\u01c2\5\24\45\0\1\u01c3"+ + "\110\0\1\u01c4\74\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u01c5\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\6\24\1\u01c6"+ + "\17\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u01c7\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\10\24\1\u01c8\15\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\13\24\1\u01c9\12\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\13\24\1\u01ca\12\24"+ + "\42\0\1\u01cb\74\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\3\24\1\u01cc\3\24\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\5\24"+ + "\1\u01cd\20\24\15\0"; private static int [] zzUnpackTrans() { - int [] result = new int[23560]; + int [] result = new int[23712]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -830,18 +831,18 @@ public final class ActionScriptLexer { "\1\1\1\0\1\1\1\0\1\11\1\1\1\11\1\1"+ "\1\11\2\1\1\0\2\11\1\1\2\11\1\1\2\11"+ "\1\0\3\1\1\0\7\1\2\11\1\0\1\1\1\11"+ - "\44\1\11\11\1\1\6\11\1\1\1\11\1\0\1\11"+ - "\1\0\2\11\3\0\1\1\2\0\2\11\1\1\7\11"+ - "\2\1\2\0\2\1\1\11\2\0\1\1\2\0\1\1"+ - "\2\11\2\0\1\11\1\1\1\11\1\0\1\1\1\11"+ - "\60\1\2\0\2\11\1\0\1\11\2\0\1\1\4\0"+ - "\2\11\2\0\2\1\1\11\1\0\1\11\50\1\1\11"+ - "\2\0\2\11\1\0\1\11\1\0\1\11\1\0\40\1"+ - "\2\0\31\1\2\0\21\1\2\0\13\1\1\0\1\11"+ - "\6\1\1\11\2\1"; + "\44\1\1\11\1\1\1\11\1\1\5\11\1\1\6\11"+ + "\1\1\1\11\1\0\1\11\1\0\2\11\3\0\1\1"+ + "\2\0\2\11\1\1\7\11\2\1\2\0\2\1\1\11"+ + "\2\0\1\1\2\0\1\1\2\11\2\0\1\11\1\1"+ + "\1\11\1\0\1\1\1\11\60\1\2\11\2\0\2\11"+ + "\1\0\1\11\2\0\1\1\4\0\2\11\2\0\2\1"+ + "\1\11\1\0\1\11\50\1\1\11\2\0\2\11\1\0"+ + "\1\11\1\0\1\11\1\0\40\1\2\0\31\1\2\0"+ + "\21\1\2\0\13\1\1\0\1\11\6\1\1\11\2\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[459]; + int [] result = new int[461]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1327,52 +1328,52 @@ public final class ActionScriptLexer { case 1: { } - case 178: break; + case 180: break; case 2: { yyline++; if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } } - case 179: break; + case 181: break; case 3: { if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } } - case 180: break; + case 182: break; case 4: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); } - case 181: break; + case 183: break; case 5: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); } - case 182: break; + case 184: break; case 6: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } - case 183: break; + case 185: break; case 7: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); } - case 184: break; + case 186: break; case 8: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); } - case 185: break; + case 187: break; case 9: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); } - case 186: break; + case 188: break; case 10: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); } - case 187: break; + case 189: break; case 11: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); } - case 188: break; + case 190: break; case 12: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); } - case 189: break; + case 191: break; case 13: { try{ return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext())); @@ -1381,98 +1382,98 @@ public final class ActionScriptLexer { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(yytext())); } } - case 190: break; + case 192: break; case 14: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); } - case 191: break; + case 193: break; case 15: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); } - case 192: break; + case 194: break; case 16: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); } - case 193: break; + case 195: break; case 17: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); } - case 194: break; + case 196: break; case 18: { string.setLength(0); yybegin(STRING); } - case 195: break; + case 197: break; case 19: { string.setLength(0); yybegin(CHARLITERAL); } - case 196: break; + case 198: break; case 20: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); } - case 197: break; + case 199: break; case 21: { string.setLength(0); yybegin(OIDENTIFIER); } - case 198: break; + case 200: break; case 22: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); } - case 199: break; + case 201: break; case 23: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); } - case 200: break; + case 202: break; case 24: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); } - case 201: break; + case 203: break; case 25: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); } - case 202: break; + case 204: break; case 26: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); } - case 203: break; + case 205: break; case 27: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); } - case 204: break; + case 206: break; case 28: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); } - case 205: break; + case 207: break; case 29: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); } - case 206: break; + case 208: break; case 30: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); } - case 207: break; + case 209: break; case 31: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); } - case 208: break; + case 210: break; case 32: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); } - case 209: break; + case 211: break; case 33: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); } - case 210: break; + case 212: break; case 34: { string.append(yytext()); } - case 211: break; + case 213: break; case 35: { yybegin(YYINITIAL); yyline++; } - case 212: break; + case 214: break; case 36: { yybegin(YYINITIAL); // length also includes the trailing quote @@ -1480,21 +1481,21 @@ public final class ActionScriptLexer { string.setLength(0); return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, tos); } - case 213: break; + case 215: break; case 37: { yybegin(YYINITIAL); yyline++; } - case 214: break; + case 216: break; case 38: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); } - case 215: break; + case 217: break; case 39: { string.append(yytext()); yyline++; } - case 216: break; + case 218: break; case 40: { yybegin(XML); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext())); @@ -1504,7 +1505,7 @@ public final class ActionScriptLexer { } return lex(); } - case 217: break; + case 219: break; case 41: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext())); @@ -1514,7 +1515,7 @@ public final class ActionScriptLexer { } return lex(); } - case 218: break; + case 220: break; case 42: { yybegin(XML); pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext())); @@ -1524,16 +1525,16 @@ public final class ActionScriptLexer { } return lex(); } - case 219: break; + case 221: break; case 43: { yybegin(YYINITIAL); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); } - case 220: break; + case 222: break; case 44: { string.append(yytext()); yyline++; } - case 221: break; + case 223: break; case 45: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext())); @@ -1543,92 +1544,92 @@ public final class ActionScriptLexer { } return lex(); } - case 222: break; + case 224: break; case 46: { for(int r=0;r 0){ @@ -1913,8 +1922,8 @@ public final class ActionScriptLexer { } return lex(); } - case 300: break; - case 124: + case 304: break; + case 126: { yybegin(XMLINSTR); if (string.length() > 0){ String tos = string.toString(); @@ -1924,69 +1933,69 @@ public final class ActionScriptLexer { } string.append(yytext()); } - case 301: break; - case 125: + case 305: break; + case 127: { string.append(yytext()); yybegin(YYINITIAL); String ret = string.toString(); string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); } - case 302: break; - case 126: + case 306: break; + case 128: { string.append(yytext()); yybegin(YYINITIAL); String ret = string.toString(); string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); } - case 303: break; - case 127: + case 307: break; + case 129: { string.setLength(0); string.append(yytext() ); yybegin(XMLCOMMENTALONE); } - case 304: break; - case 128: + case 308: break; + case 130: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); } - case 305: break; - case 129: + case 309: break; + case 131: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); } - case 306: break; - case 130: + case 310: break; + case 132: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); } - case 307: break; - case 131: + case 311: break; + case 133: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); } - case 308: break; - case 132: + case 312: break; + case 134: { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); } - case 309: break; - case 133: + case 313: break; + case 135: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); } - case 310: break; - case 134: + case 314: break; + case 136: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); } - case 311: break; - case 135: + case 315: break; + case 137: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); } - case 312: break; - case 136: + case 316: break; + case 138: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); } - case 313: break; - case 137: + case 317: break; + case 139: { char val = (char) Integer.parseInt(yytext().substring(2), 16); string.append(val); } - case 314: break; - case 138: + case 318: break; + case 140: { pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext())); if (string.length() > 0){ pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); @@ -1994,166 +2003,166 @@ public final class ActionScriptLexer { } return lex(); } - case 315: break; - case 139: + case 319: break; + case 141: { String ret = string.toString(); string.setLength(0); string.append(yytext()); yybegin(XMLCOMMENT); if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } - case 316: break; - case 140: + case 320: break; + case 142: { char val = (char) Integer.parseInt(yytext().substring(2), 16); for(int r=0;r>", "int", "int"); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java index 27ead450b..accce5f11 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/SubtractActionItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.action.model.operations; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; +import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; import com.jpexs.decompiler.flash.action.swf4.ActionSubtract; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; @@ -35,7 +36,7 @@ import java.util.List; * * @author JPEXS */ -public class SubtractActionItem extends BinaryOpItem implements CompoundableBinaryOp { +public class SubtractActionItem extends BinaryOpItem implements CompoundableBinaryOpAs12 { public SubtractActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem leftSide, GraphTargetItem rightSide) { super(instruction, lineStartIns, PRECEDENCE_ADDITIVE, leftSide, rightSide, "-", "Number", "Number"); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/URShiftActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/URShiftActionItem.java index 11b056315..fca91f4dd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/URShiftActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/URShiftActionItem.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.action.model.operations; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; +import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12; import com.jpexs.decompiler.flash.action.swf5.ActionBitURShift; import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; @@ -32,7 +33,7 @@ import java.util.List; * * @author JPEXS */ -public class URShiftActionItem extends BinaryOpItem implements CompoundableBinaryOp { +public class URShiftActionItem extends BinaryOpItem implements CompoundableBinaryOpAs12 { public URShiftActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem leftSide, GraphTargetItem rightSide) { super(instruction, lineStartIns, PRECEDENCE_BITWISESHIFT, leftSide, rightSide, ">>>", "Number", "Number"); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionSetVariable.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionSetVariable.java index 4b86810d6..6c1f44679 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionSetVariable.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionSetVariable.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.BaseLocalData; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.LocalDataArea; import com.jpexs.decompiler.flash.action.StoreTypeAction; +import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12; import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.action.model.DecrementActionItem; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; @@ -136,7 +137,7 @@ public class ActionSetVariable extends Action implements StoreTypeAction { if (inside instanceof StoreRegisterActionItem) { inside = inside.value; } - if (inside instanceof CompoundableBinaryOp) { + if (inside instanceof CompoundableBinaryOpAs12) { if (!name.hasSideEffect()) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) inside; if (binaryOp.getLeftSide() instanceof GetVariableActionItem) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionSetMember.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionSetMember.java index dd2b73bf6..38c48482b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionSetMember.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionSetMember.java @@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.BaseLocalData; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.ActionScriptObject; import com.jpexs.decompiler.flash.action.LocalDataArea; +import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12; import com.jpexs.decompiler.flash.action.model.DecrementActionItem; import com.jpexs.decompiler.flash.action.model.GetMemberActionItem; import com.jpexs.decompiler.flash.action.model.IncrementActionItem; @@ -122,7 +123,7 @@ public class ActionSetMember extends Action { if (inside instanceof StoreRegisterActionItem) { inside = inside.value; } - if (inside instanceof CompoundableBinaryOp) { + if (inside instanceof CompoundableBinaryOpAs12) { if (!object.hasSideEffect() && !memberName.hasSideEffect()) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) inside; if (binaryOp.getLeftSide() instanceof GetMemberActionItem) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionStoreRegister.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionStoreRegister.java index 67c4ca80d..beced63ab 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionStoreRegister.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf5/ActionStoreRegister.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.SWFOutputStream; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.LocalDataArea; import com.jpexs.decompiler.flash.action.StoreTypeAction; +import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12; import com.jpexs.decompiler.flash.action.model.ConstantPool; import com.jpexs.decompiler.flash.action.model.DecrementActionItem; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; @@ -166,7 +167,7 @@ public class ActionStoreRegister extends Action implements StoreTypeAction { variables.remove("__register" + registerNumber); } StoreRegisterActionItem ret = new StoreRegisterActionItem(this, lineStartAction, rn, value, define); - if (value.getNotCoercedNoDup() instanceof CompoundableBinaryOp) { + if (value.getNotCoercedNoDup() instanceof CompoundableBinaryOpAs12) { CompoundableBinaryOp binaryOp = (CompoundableBinaryOp) value.getNotCoercedNoDup(); if (binaryOp.getLeftSide() instanceof DirectValueActionItem) { DirectValueActionItem directValue = (DirectValueActionItem) binaryOp.getLeftSide(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/FFDecAs3ScriptReplacer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/FFDecAs3ScriptReplacer.java index 406970b68..24f353e19 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/FFDecAs3ScriptReplacer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/FFDecAs3ScriptReplacer.java @@ -86,10 +86,10 @@ public class FFDecAs3ScriptReplacer implements As3ScriptReplacerInterface { abc.pack();//remove old deleted items ((Tag) abc.parentTag).setModified(true); } catch (AVM2ParseException ex) { - ex.printStackTrace(); + //ex.printStackTrace(); throw new As3ScriptReplaceException(new As3ScriptReplaceExceptionItem(null, ex.text, (int) ex.line)); } catch (CompilationException ex) { - ex.printStackTrace(); + //ex.printStackTrace(); throw new As3ScriptReplaceException(new As3ScriptReplaceExceptionItem(null, ex.text, (int) ex.line)); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/AndItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/AndItem.java index 9d95fa961..7c6cf5bdc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/AndItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/AndItem.java @@ -30,7 +30,7 @@ import java.util.List; * * @author JPEXS */ -public class AndItem extends BinaryOpItem { +public class AndItem extends BinaryOpItem implements CompoundableBinaryOp { @Override public List getNeededSources() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/OrItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/OrItem.java index 72427d380..675121d00 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/OrItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/OrItem.java @@ -30,7 +30,7 @@ import java.util.List; * * @author JPEXS */ -public class OrItem extends BinaryOpItem { +public class OrItem extends BinaryOpItem implements CompoundableBinaryOp { public OrItem(GraphSourceItem src, GraphSourceItem lineStartIns, GraphTargetItem leftSide, GraphTargetItem rightSide) { super(src, lineStartIns, PRECEDENCE_LOGICALOR, leftSide, rightSide, "||", "Boolean", "Boolean"); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 556c39ce0..f3ea4cbb1 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -1475,8 +1475,10 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile public void testOperations() { decompileMethod("classic_air", "testOperations", "var cr:MyClass = null;\r\n" + "var br:* = false;\r\n" - + "var r:Number = NaN;\r\n" + + "var r:* = NaN;\r\n" + + "var v:* = undefined;\r\n" + "var xlr:XMLList = null;\r\n" + + "var sr:String = null;\r\n" + "var c:MyClass = new MyClass();\r\n" + "var d:Dictionary = new Dictionary();\r\n" + "var n1:Number = 2;\r\n" @@ -1491,6 +1493,18 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "\r\n" + "three\r\n" + ";\r\n" + + "var o:Object = {\r\n" + + "\"a\":1,\r\n" + + "\"b\":2\r\n" + + "};\r\n" + + "var s1:String = \"hello\";\r\n" + + "var s2:String = \"there\";\r\n" + + "r = -n1;\r\n" + + "r = ~n1;\r\n" + + "br = !b1;\r\n" + + "n1++;\r\n" + + "r = n1;\r\n" + + "r = n1++;\r\n" + "cr = c as MyClass;\r\n" + "br = \"hello\" in d;\r\n" + "r = b1 ? n1 : n2;\r\n" @@ -1518,6 +1532,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "br = c instanceof MyClass;\r\n" + "br = c is MyClass;\r\n" + "xlr = x..b;\r\n" + + "sr = s1 + s2;\r\n" + "r &= n1;\r\n" + "r |= n1;\r\n" + "r /= n1;\r\n" @@ -1528,7 +1543,20 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "r <<= n1;\r\n" + "r >>= n1;\r\n" + "r >>>= n1;\r\n" - + "r ^= n1;\r\n", + + "r ^= n1;\r\n" + + "if(br)\r\n" + + "{\r\n" + + "br = b1;\r\n" + + "}\r\n" + + "if(!br)\r\n" + + "{\r\n" + + "br = b1;\r\n" + + "}\r\n" + + "sr += s1;\r\n" + + "delete o.a;\r\n" + + "\"test\" + this.f();\r\n" + + "v = undefined;\r\n" + + "sr = typeof c;\r\n", false); } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index f3666abfa..45b9d5d97 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -1468,7 +1468,9 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes decompileMethod("classic", "testOperations", "var cr:MyClass = null;\r\n" + "var br:Boolean = false;\r\n" + "var r:Number = NaN;\r\n" + + "var v:* = undefined;\r\n" + "var xlr:XMLList = null;\r\n" + + "var sr:String = null;\r\n" + "var c:MyClass = new MyClass();\r\n" + "var d:Dictionary = new Dictionary();\r\n" + "var n1:Number = 2;\r\n" @@ -1483,6 +1485,17 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "\r\n" + "three\r\n" + ";\r\n" + + "var o:Object = {\r\n" + + "\"a\":1,\r\n" + + "\"b\":2\r\n" + + "};\r\n" + + "var s1:String = \"hello\";\r\n" + + "var s2:String = \"there\";\r\n" + + "r = -n1;\r\n" + + "r = ~n1;\r\n" + + "br = !b1;\r\n" + + "r = ++n1;\r\n" + + "r = n1++;\r\n" + "cr = c as MyClass;\r\n" + "br = \"hello\" in d;\r\n" + "r = b1 ? n1 : n2;\r\n" @@ -1510,6 +1523,7 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "br = c instanceof MyClass;\r\n" + "br = c is MyClass;\r\n" + "xlr = x..b;\r\n" + + "sr = s1 + s2;\r\n" + "r &= n1;\r\n" + "r |= n1;\r\n" + "r /= n1;\r\n" @@ -1520,7 +1534,14 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "r <<= n1;\r\n" + "r >>= n1;\r\n" + "r >>>= n1;\r\n" - + "r ^= n1;\r\n", + + "r ^= n1;\r\n" + + "br &&= b1;\r\n" + + "br ||= b1;\r\n" + + "sr += s1;\r\n" + + "delete o.a;\r\n" + + "\"test\" + this.f();\r\n" + + "v = undefined;\r\n" + + "sr = typeof c;\r\n", false); } diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index b0c7221f6..a544f65ea 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 3320455a7..c0f722a66 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as index aea21cd07..1096d9455 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as @@ -15,6 +15,7 @@ package tests var b2:Boolean = false; var br:Boolean; var r:Number; + var v:*; var x:XML = one @@ -23,7 +24,18 @@ package tests three ; - var xlr:XMLList; + var xlr:XMLList; + var o:Object = {a:1, b:2}; + var sr:String; + var s1:String = "hello"; + var s2:String = "there"; + + + r = -n1; + r = ~n1; + br = !b1; + r = ++n1; + r = n1++; cr = c as MyClass; br = "hello" in d; @@ -53,7 +65,7 @@ package tests br = c instanceof MyClass; br = c is MyClass; xlr = x..b; - + sr = s1 + s2; r &= n1; r |= n1; @@ -65,10 +77,21 @@ package tests r <<= n1; r >>= n1; r >>>= n1; - r ^= n1; - + r ^= n1; + br &&= b1; + br ||= b1; + sr += s1; + + delete o.a; + v = void("test" + this.f()); //TODO: implement compiling this + sr = typeof c; } + + public function f():int { + trace("f"); + return 5; + } } }