Program: 94076
Project: 94076
Buggy source:
@Override public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
  try {
    if (!lpparam.packageName.equals(Common.PACKAGE_SNAP))     return;
    try {
      XposedUtils.log("String_Node_Str",false);
      Object activityThread=callStaticMethod(findClass("String_Node_Str",null),"String_Node_Str");
      context=(Context)callMethod(activityThread,"String_Node_Str");
      classLoader=lpparam.classLoader;
      PackageInfo piSnapChat=context.getPackageManager().getPackageInfo(lpparam.packageName,0);
      XposedUtils.log("String_Node_Str" + piSnapChat.versionName + "String_Node_Str"+ piSnapChat.versionCode+ "String_Node_Str",false);
      XposedUtils.log("String_Node_Str" + BuildConfig.VERSION_NAME + "String_Node_Str"+ BuildConfig.VERSION_CODE+ "String_Node_Str",false);
      if (!Obfuscator.isSupported(piSnapChat.versionCode)) {
        Logger.log("String_Node_Str",true,true);
        Toast.makeText(context,"String_Node_Str",Toast.LENGTH_SHORT).show();
        return;
      }
    }
 catch (    Exception e) {
      XposedUtils.log("String_Node_Str",e);
      return;
    }
    Logger.loadSelectedLogTypes();
    Logger.log("String_Node_Str");
    Preferences.loadMapFromXposed();
    findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",int.class,new XC_MethodHook(){
      @Override protected void beforeHookedMethod(      MethodHookParam param){
        Logger.printFinalMessage("String_Node_Str" + param.args[0]);
        param.args[0]=12000000;
      }
    }
);
    final int maxRecordTime=30000;
    if (maxRecordTime > 10000) {
      try {
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",Message.class,new XC_MethodHook(){
          boolean internallyCalled=false;
          @Override protected void beforeHookedMethod(          MethodHookParam param) throws Throwable {
            super.beforeHookedMethod(param);
            Message message=(Message)param.args[0];
            Logger.log("String_Node_Str" + message.what);
            if (message.what == 15 && !internallyCalled) {
              if (maxRecordTime > 10000) {
                internallyCalled=true;
                Handler handler=message.getTarget();
                Message newMessage=Message.obtain(handler,15);
                handler.sendMessageDelayed(newMessage,maxRecordTime - 10000);
                Logger.log(String.format("String_Node_Str",maxRecordTime - 10000));
              }
              param.setResult(null);
            }
 else             if (internallyCalled)             internallyCalled=false;
          }
        }
);
      }
 catch (      Throwable t) {
        Logger.log("String_Node_Str",t,LogType.FORCED);
      }
    }
    findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",Context.class,new XC_MethodHook(){
      @Override protected void afterHookedMethod(      MethodHookParam param) throws Throwable {
        Friendmojis.init(lpparam);
        DebugHelper.init(lpparam);
        Logger.log("String_Node_Str" + param.thisObject.getClass().getCanonicalName());
        XC_MethodHook initHook=new XC_MethodHook(){
          @Override protected void afterHookedMethod(          MethodHookParam param) throws Throwable {
            SnapContext=(Activity)param.thisObject;
            if (!Preferences.getBool(Prefs.ACCEPTED_TOU)) {
              AlertDialog.Builder builder=new AlertDialog.Builder(SnapContext).setTitle("String_Node_Str").setMessage("String_Node_Str").setIcon(android.R.drawable.ic_dialog_alert);
              builder.setCancelable(false);
              final AlertDialog dialog=builder.create();
              dialog.setCanceledOnTouchOutside(false);
              dialog.show();
              return;
            }
            boolean isNull=SnapContext == null;
            Logger.log("String_Node_Str" + isNull,true);
            Saving.initSaving(lpparam,mResources,SnapContext);
            Lens.initLens(lpparam,mResources,SnapContext);
            File vfilters=new File(Preferences.getExternalPath() + "String_Node_Str");
            if (vfilters.exists()) {
              VisualFilters.initVisualFilters(lpparam);
            }
 else {
              Toast.makeText(context,"String_Node_Str",Toast.LENGTH_SHORT).show();
            }
            if (Preferences.getBool(Prefs.HIDE_LIVE) || Preferences.getBool(Prefs.HIDE_PEOPLE) || Preferences.getBool(Prefs.DISCOVER_UI)) {
              Stories.initStories(lpparam);
            }
            Groups.initGroups(lpparam);
            if (Preferences.shouldAddGhost()) {
              HookedLayouts.initVisiblity(lpparam);
            }
            if (Preferences.getBool(Prefs.MULTI_FILTER)) {
              MultiFilter.initMultiFilter(lpparam,mResources,SnapContext);
            }
            if (Preferences.getBool(Prefs.DISCOVER_SNAP)) {
              DataSaving.blockDsnap(lpparam);
            }
            if (Preferences.getBool(Prefs.STORY_PRELOAD)) {
              DataSaving.blockStoryPreLoad(lpparam);
            }
            if (Preferences.getBool(Prefs.DISCOVER_UI)) {
              DataSaving.blockFromUi(lpparam);
            }
            if (Preferences.getBool(Prefs.SPEED)) {
              Spoofing.initSpeed(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.LOCATION)) {
              Spoofing.initLocation(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.WEATHER)) {
              Spoofing.initWeather(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.PAINT_TOOLS)) {
              PaintTools.initPaint(lpparam,mResources);
            }
            if (Preferences.getBool(Prefs.TIMER_COUNTER)) {
              Misc.initTimer(lpparam,mResources);
            }
            ClassLoader cl=lpparam.classLoader;
            if (Preferences.getBool(Prefs.CHAT_AUTO_SAVE)) {
              Chat.initTextSave(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.CHAT_LOGGING))             Chat.initChatLogging(lpparam,SnapContext);
            if (Preferences.getBool(Prefs.CHAT_MEDIA_SAVE)) {
              Chat.initImageSave(lpparam,mResources);
            }
            if (Preferences.getBool(Prefs.INTEGRATION)) {
              HookedLayouts.initIntegration(lpparam,mResources);
            }
            Misc.forceNavBar(lpparam,Preferences.getInt(Prefs.FORCE_NAVBAR));
            getEditText(lpparam);
            findAndHookMethod(Obfuscator.save.SCREENSHOTDETECTOR_CLASS,lpparam.classLoader,Obfuscator.save.SCREENSHOTDETECTOR_RUN,LinkedHashMap.class,XC_MethodReplacement.DO_NOTHING);
            findAndHookMethod(Obfuscator.save.SNAPSTATEMESSAGE_CLASS,lpparam.classLoader,Obfuscator.save.SNAPSTATEMESSAGE_SETSCREENSHOTCOUNT,Long.class,new XC_MethodHook(){
              @Override protected void beforeHookedMethod(              MethodHookParam param){
                param.args[0]=0L;
                Logger.log("String_Node_Str",true);
              }
            }
);
            if (Preferences.getBool(Prefs.CUSTOM_STICKER)) {
              Stickers.initStickers(lpparam,modRes,SnapContext);
            }
            if (Preferences.getLicence() > 0)             Premium.initPremium(lpparam);
            findAndHookMethod("String_Node_Str",cl,"String_Node_Str",findClass("String_Node_Str",cl),new XC_MethodHook(){
              @Override protected void beforeHookedMethod(              MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
                Logger.log("String_Node_Str" + param.args[0].toString());
              }
            }
);
            findAndHookMethod("String_Node_Str",cl,"String_Node_Str",findClass("String_Node_Str",cl),findClass("String_Node_Str",cl),new XC_MethodHook(){
              @Override protected void beforeHookedMethod(              MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
                Object packet=param.args[0];
                Logger.log("String_Node_Str" + packet.toString(),LogType.PREMIUM);
              }
            }
);
            HookMethods.hookAllMethods("String_Node_Str",cl,false,false);
            HookMethods.hookAllMethods("String_Node_Str",cl,false,false);
          }
        }
;
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",Bundle.class,initHook);
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",initHook);
        for (        String s : Obfuscator.ROOTDETECTOR_METHODS) {
          findAndHookMethod(Obfuscator.ROOTDETECTOR_CLASS,lpparam.classLoader,s,XC_MethodReplacement.returnConstant(false));
          Logger.log("String_Node_Str" + s,true);
        }
        final Class<?> receivedSnapClass=findClass(Obfuscator.save.RECEIVEDSNAP_CLASS,lpparam.classLoader);
        try {
          XposedHelpers.setStaticIntField(receivedSnapClass,"String_Node_Str",99999);
          final Class<?> snapMediaUtils=findClass("String_Node_Str",lpparam.classLoader);
          XposedHelpers.setStaticIntField(snapMediaUtils,"String_Node_Str",100);
          XposedHelpers.setStaticIntField(snapMediaUtils,"String_Node_Str",100);
          final Class<?> profileImageUtils=findClass("String_Node_Str",lpparam.classLoader);
          XposedHelpers.setStaticIntField(profileImageUtils,"String_Node_Str",100);
          final Class<?> snapImageBryo=findClass(Obfuscator.save.SNAPIMAGEBRYO_CLASS,lpparam.classLoader);
          XposedHelpers.setStaticIntField(snapImageBryo,"String_Node_Str",100);
          Logger.log("String_Node_Str",true);
        }
 catch (        Throwable t) {
          Logger.log("String_Node_Str",true);
          Logger.log(t.toString());
        }
        if (Preferences.getBool(Prefs.CAPTION_UNLIMITED_VANILLA)) {
          XposedHelpers.findAndHookMethod(Obfuscator.misc.CAPTIONVIEW,lpparam.classLoader,Obfuscator.misc.CAPTIONVIEW_TEXT_LIMITER,int.class,new XC_MethodHook(){
            @Override protected void beforeHookedMethod(            MethodHookParam param) throws Throwable {
              param.args[0]=999999999;
            }
          }
);
        }
        String snapCaptionView="String_Node_Str";
        hookAllConstructors(findClass(snapCaptionView,lpparam.classLoader),new XC_MethodHook(){
          @Override protected void afterHookedMethod(          MethodHookParam param){
            if (Preferences.getBool(Prefs.CAPTION_UNLIMITED_VANILLA)) {
              XposedUtils.log("String_Node_Str");
              EditText vanillaCaptionEditText=(EditText)param.thisObject;
              vanillaCaptionEditText.setSingleLine(false);
              vanillaCaptionEditText.setFilters(new InputFilter[0]);
              vanillaCaptionEditText.setImeOptions(EditorInfo.IME_ACTION_NONE);
              vanillaCaptionEditText.setOnEditorActionListener(null);
              setObjectField(vanillaCaptionEditText,"String_Node_Str",null);
            }
          }
        }
);
        XposedHelpers.findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",EditorInfo.class,new XC_MethodHook(){
          @Override protected void afterHookedMethod(          MethodHookParam param) throws Throwable {
            if (Preferences.getBool(Prefs.CAPTION_UNLIMITED_VANILLA)) {
              XposedUtils.log("String_Node_Str");
              EditorInfo editorInfo=(EditorInfo)param.args[0];
              editorInfo.imeOptions=EditorInfo.IME_ACTION_NONE;
            }
          }
        }
);
        XposedHelpers.findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",TextView.class,int.class,KeyEvent.class,new XC_MethodHook(){
          @Override protected void beforeHookedMethod(          MethodHookParam param) throws Throwable {
            Logger.printFinalMessage("String_Node_Str" + param.args[1]);
          }
        }
);
        Sharing.initSharing(lpparam,mResources);
        if (Preferences.getBool(Prefs.HIDE_BF)) {
          findAndHookMethod("String_Node_Str",lpparam.classLoader,Obfuscator.FRIENDS_BF,new XC_MethodReplacement(){
            @Override protected Object replaceHookedMethod(            MethodHookParam param){
              return false;
            }
          }
);
        }
        if (Preferences.getBool(Prefs.CUSTOM_FILTER)) {
          addFilter(lpparam);
        }
        if (Preferences.getBool(Prefs.SELECT_ALL)) {
          HookSendList.initSelectAll(lpparam);
        }
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",XposedHelpers.findClass(Obfuscator.flash.KEYEVENT_CLASS,lpparam.classLoader),new XC_MethodHook(){
          public boolean frontFlash=false;
          public long lastChange=System.currentTimeMillis();
          @Override protected void beforeHookedMethod(          MethodHookParam param) throws Throwable {
            boolean isVisible=XposedHelpers.getBooleanField(param.thisObject,Obfuscator.flash.ISVISIBLE_FIELD);
            Object swipeLayout=getObjectField(param.thisObject,Obfuscator.flash.SWIPELAYOUT_FIELD);
            int resId=(int)getObjectField(swipeLayout,Obfuscator.flash.GETRESID_OBJECT);
            boolean c=(boolean)XposedHelpers.callMethod(swipeLayout,Obfuscator.flash.ISSCROLLED_METHOD);
            if (isVisible && resId != 0 && resId != 2 && !c) {
              int keycode=XposedHelpers.getIntField(param.args[0],Obfuscator.flash.KEYCODE_FIELD);
              if (keycode == KeyEvent.KEYCODE_VOLUME_UP) {
                if (System.currentTimeMillis() - lastChange > 500) {
                  lastChange=System.currentTimeMillis();
                  frontFlash=!frontFlash;
                  XposedHelpers.callMethod(getObjectField(param.thisObject,Obfuscator.flash.OVERLAY_FIELD),Obfuscator.flash.FLASH_METHOD,new Class[]{boolean.class},frontFlash);
                }
                param.setResult(null);
              }
            }
          }
        }
);
        if (Preferences.getBool(Prefs.AUTO_ADVANCE))         XposedHelpers.findAndHookMethod(Obfuscator.stories.AUTOADVANCE_CLASS,lpparam.classLoader,Obfuscator.stories.AUTOADVANCE_METHOD,XC_MethodReplacement.returnConstant(false));
      }
    }
);
  }
 catch (  Exception e) {
    Logger.log("String_Node_Str",e);
  }
}

Fixed version (ground truth):
@Override public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
  try {
    if (!lpparam.packageName.equals(Common.PACKAGE_SNAP))     return;
    try {
      XposedUtils.log("String_Node_Str",false);
      Object activityThread=callStaticMethod(findClass("String_Node_Str",null),"String_Node_Str");
      context=(Context)callMethod(activityThread,"String_Node_Str");
      classLoader=lpparam.classLoader;
      PackageInfo piSnapChat=context.getPackageManager().getPackageInfo(lpparam.packageName,0);
      XposedUtils.log("String_Node_Str" + piSnapChat.versionName + "String_Node_Str"+ piSnapChat.versionCode+ "String_Node_Str",false);
      XposedUtils.log("String_Node_Str" + BuildConfig.VERSION_NAME + "String_Node_Str"+ BuildConfig.VERSION_CODE+ "String_Node_Str",false);
      if (!Obfuscator.isSupported(piSnapChat.versionCode)) {
        Logger.log("String_Node_Str",true,true);
        Toast.makeText(context,"String_Node_Str",Toast.LENGTH_SHORT).show();
        return;
      }
    }
 catch (    Exception e) {
      XposedUtils.log("String_Node_Str",e);
      return;
    }
    Logger.loadSelectedLogTypes();
    Logger.log("String_Node_Str");
    Preferences.loadMapFromXposed();
    findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",int.class,new XC_MethodHook(){
      @Override protected void beforeHookedMethod(      MethodHookParam param){
        Logger.printFinalMessage("String_Node_Str" + param.args[0]);
        param.args[0]=12000000;
      }
    }
);
    final int maxRecordTime=30000;
    if (maxRecordTime > 10000) {
      try {
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",Message.class,new XC_MethodHook(){
          boolean internallyCalled=false;
          @Override protected void beforeHookedMethod(          MethodHookParam param) throws Throwable {
            super.beforeHookedMethod(param);
            Message message=(Message)param.args[0];
            Logger.log("String_Node_Str" + message.what);
            if (message.what == 15 && !internallyCalled) {
              if (maxRecordTime > 10000) {
                internallyCalled=true;
                Handler handler=message.getTarget();
                Message newMessage=Message.obtain(handler,15);
                handler.sendMessageDelayed(newMessage,maxRecordTime - 10000);
                Logger.log(String.format("String_Node_Str",maxRecordTime - 10000));
              }
              param.setResult(null);
            }
 else             if (internallyCalled)             internallyCalled=false;
          }
        }
);
      }
 catch (      Throwable t) {
        Logger.log("String_Node_Str",t,LogType.FORCED);
      }
    }
    findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",Context.class,new XC_MethodHook(){
      @Override protected void afterHookedMethod(      MethodHookParam param) throws Throwable {
        Friendmojis.init(lpparam);
        DebugHelper.init(lpparam);
        Logger.log("String_Node_Str" + param.thisObject.getClass().getCanonicalName());
        XC_MethodHook initHook=new XC_MethodHook(){
          @Override protected void afterHookedMethod(          MethodHookParam param) throws Throwable {
            SnapContext=(Activity)param.thisObject;
            if (!Preferences.getBool(Prefs.ACCEPTED_TOU)) {
              AlertDialog.Builder builder=new AlertDialog.Builder(SnapContext).setTitle("String_Node_Str").setMessage("String_Node_Str").setIcon(android.R.drawable.ic_dialog_alert);
              builder.setCancelable(false);
              final AlertDialog dialog=builder.create();
              dialog.setCanceledOnTouchOutside(false);
              dialog.show();
              return;
            }
            boolean isNull=SnapContext == null;
            Logger.log("String_Node_Str" + isNull,true);
            Saving.initSaving(lpparam,mResources,SnapContext);
            Lens.initLens(lpparam,mResources,SnapContext);
            File vfilters=new File(Preferences.getExternalPath() + "String_Node_Str");
            if (vfilters.exists()) {
              VisualFilters.initVisualFilters(lpparam);
            }
 else {
              Toast.makeText(context,"String_Node_Str",Toast.LENGTH_SHORT).show();
            }
            if (Preferences.getBool(Prefs.HIDE_LIVE) || Preferences.getBool(Prefs.HIDE_PEOPLE) || Preferences.getBool(Prefs.DISCOVER_UI)) {
              Stories.initStories(lpparam);
            }
            if (Preferences.getBool(Prefs.GROUPS)) {
              Groups.initGroups(lpparam);
            }
            if (Preferences.shouldAddGhost()) {
              HookedLayouts.initVisiblity(lpparam);
            }
            if (Preferences.getBool(Prefs.MULTI_FILTER)) {
              MultiFilter.initMultiFilter(lpparam,mResources,SnapContext);
            }
            if (Preferences.getBool(Prefs.DISCOVER_SNAP)) {
              DataSaving.blockDsnap(lpparam);
            }
            if (Preferences.getBool(Prefs.STORY_PRELOAD)) {
              DataSaving.blockStoryPreLoad(lpparam);
            }
            if (Preferences.getBool(Prefs.DISCOVER_UI)) {
              DataSaving.blockFromUi(lpparam);
            }
            if (Preferences.getBool(Prefs.SPEED)) {
              Spoofing.initSpeed(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.LOCATION)) {
              Spoofing.initLocation(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.WEATHER)) {
              Spoofing.initWeather(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.PAINT_TOOLS)) {
              PaintTools.initPaint(lpparam,mResources);
            }
            if (Preferences.getBool(Prefs.TIMER_COUNTER)) {
              Misc.initTimer(lpparam,mResources);
            }
            ClassLoader cl=lpparam.classLoader;
            if (Preferences.getBool(Prefs.CHAT_AUTO_SAVE)) {
              Chat.initTextSave(lpparam,SnapContext);
            }
            if (Preferences.getBool(Prefs.CHAT_LOGGING))             Chat.initChatLogging(lpparam,SnapContext);
            if (Preferences.getBool(Prefs.CHAT_MEDIA_SAVE)) {
              Chat.initImageSave(lpparam,mResources);
            }
            if (Preferences.getBool(Prefs.INTEGRATION)) {
              HookedLayouts.initIntegration(lpparam,mResources);
            }
            Misc.forceNavBar(lpparam,Preferences.getInt(Prefs.FORCE_NAVBAR));
            getEditText(lpparam);
            findAndHookMethod(Obfuscator.save.SCREENSHOTDETECTOR_CLASS,lpparam.classLoader,Obfuscator.save.SCREENSHOTDETECTOR_RUN,LinkedHashMap.class,XC_MethodReplacement.DO_NOTHING);
            findAndHookMethod(Obfuscator.save.SNAPSTATEMESSAGE_CLASS,lpparam.classLoader,Obfuscator.save.SNAPSTATEMESSAGE_SETSCREENSHOTCOUNT,Long.class,new XC_MethodHook(){
              @Override protected void beforeHookedMethod(              MethodHookParam param){
                param.args[0]=0L;
                Logger.log("String_Node_Str",true);
              }
            }
);
            if (Preferences.getBool(Prefs.CUSTOM_STICKER)) {
              Stickers.initStickers(lpparam,modRes,SnapContext);
            }
            if (Preferences.getLicence() > 0)             Premium.initPremium(lpparam);
          }
        }
;
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",Bundle.class,initHook);
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",initHook);
        for (        String s : Obfuscator.ROOTDETECTOR_METHODS) {
          findAndHookMethod(Obfuscator.ROOTDETECTOR_CLASS,lpparam.classLoader,s,XC_MethodReplacement.returnConstant(false));
          Logger.log("String_Node_Str" + s,true);
        }
        final Class<?> receivedSnapClass=findClass(Obfuscator.save.RECEIVEDSNAP_CLASS,lpparam.classLoader);
        try {
          XposedHelpers.setStaticIntField(receivedSnapClass,"String_Node_Str",99999);
          final Class<?> snapMediaUtils=findClass("String_Node_Str",lpparam.classLoader);
          XposedHelpers.setStaticIntField(snapMediaUtils,"String_Node_Str",100);
          XposedHelpers.setStaticIntField(snapMediaUtils,"String_Node_Str",100);
          final Class<?> profileImageUtils=findClass("String_Node_Str",lpparam.classLoader);
          XposedHelpers.setStaticIntField(profileImageUtils,"String_Node_Str",100);
          final Class<?> snapImageBryo=findClass(Obfuscator.save.SNAPIMAGEBRYO_CLASS,lpparam.classLoader);
          XposedHelpers.setStaticIntField(snapImageBryo,"String_Node_Str",100);
          Logger.log("String_Node_Str",true);
        }
 catch (        Throwable t) {
          Logger.log("String_Node_Str",true);
          Logger.log(t.toString());
        }
        if (Preferences.getBool(Prefs.CAPTION_UNLIMITED_VANILLA)) {
          XposedHelpers.findAndHookMethod(Obfuscator.misc.CAPTIONVIEW,lpparam.classLoader,Obfuscator.misc.CAPTIONVIEW_TEXT_LIMITER,int.class,new XC_MethodHook(){
            @Override protected void beforeHookedMethod(            MethodHookParam param) throws Throwable {
              param.args[0]=999999999;
            }
          }
);
        }
        String snapCaptionView="String_Node_Str";
        hookAllConstructors(findClass(snapCaptionView,lpparam.classLoader),new XC_MethodHook(){
          @Override protected void afterHookedMethod(          MethodHookParam param){
            if (Preferences.getBool(Prefs.CAPTION_UNLIMITED_VANILLA)) {
              XposedUtils.log("String_Node_Str");
              EditText vanillaCaptionEditText=(EditText)param.thisObject;
              vanillaCaptionEditText.setSingleLine(false);
              vanillaCaptionEditText.setFilters(new InputFilter[0]);
              vanillaCaptionEditText.setImeOptions(EditorInfo.IME_ACTION_NONE);
              vanillaCaptionEditText.setOnEditorActionListener(null);
              setObjectField(vanillaCaptionEditText,"String_Node_Str",null);
            }
          }
        }
);
        XposedHelpers.findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",EditorInfo.class,new XC_MethodHook(){
          @Override protected void afterHookedMethod(          MethodHookParam param) throws Throwable {
            if (Preferences.getBool(Prefs.CAPTION_UNLIMITED_VANILLA)) {
              XposedUtils.log("String_Node_Str");
              EditorInfo editorInfo=(EditorInfo)param.args[0];
              editorInfo.imeOptions=EditorInfo.IME_ACTION_NONE;
            }
          }
        }
);
        XposedHelpers.findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",TextView.class,int.class,KeyEvent.class,new XC_MethodHook(){
          @Override protected void beforeHookedMethod(          MethodHookParam param) throws Throwable {
            Logger.printFinalMessage("String_Node_Str" + param.args[1]);
          }
        }
);
        Sharing.initSharing(lpparam,mResources);
        if (Preferences.getBool(Prefs.HIDE_BF)) {
          findAndHookMethod("String_Node_Str",lpparam.classLoader,Obfuscator.FRIENDS_BF,new XC_MethodReplacement(){
            @Override protected Object replaceHookedMethod(            MethodHookParam param){
              return false;
            }
          }
);
        }
        if (Preferences.getBool(Prefs.CUSTOM_FILTER)) {
          addFilter(lpparam);
        }
        if (Preferences.getBool(Prefs.SELECT_ALL)) {
          HookSendList.initSelectAll(lpparam);
        }
        findAndHookMethod("String_Node_Str",lpparam.classLoader,"String_Node_Str",XposedHelpers.findClass(Obfuscator.flash.KEYEVENT_CLASS,lpparam.classLoader),new XC_MethodHook(){
          public boolean frontFlash=false;
          public long lastChange=System.currentTimeMillis();
          @Override protected void beforeHookedMethod(          MethodHookParam param) throws Throwable {
            boolean isVisible=XposedHelpers.getBooleanField(param.thisObject,Obfuscator.flash.ISVISIBLE_FIELD);
            Object swipeLayout=getObjectField(param.thisObject,Obfuscator.flash.SWIPELAYOUT_FIELD);
            int resId=(int)getObjectField(swipeLayout,Obfuscator.flash.GETRESID_OBJECT);
            boolean c=(boolean)XposedHelpers.callMethod(swipeLayout,Obfuscator.flash.ISSCROLLED_METHOD);
            if (isVisible && resId != 0 && resId != 2 && !c) {
              int keycode=XposedHelpers.getIntField(param.args[0],Obfuscator.flash.KEYCODE_FIELD);
              if (keycode == KeyEvent.KEYCODE_VOLUME_UP) {
                if (System.currentTimeMillis() - lastChange > 500) {
                  lastChange=System.currentTimeMillis();
                  frontFlash=!frontFlash;
                  XposedHelpers.callMethod(getObjectField(param.thisObject,Obfuscator.flash.OVERLAY_FIELD),Obfuscator.flash.FLASH_METHOD,new Class[]{boolean.class},frontFlash);
                }
                param.setResult(null);
              }
            }
          }
        }
);
        if (Preferences.getBool(Prefs.AUTO_ADVANCE))         XposedHelpers.findAndHookMethod(Obfuscator.stories.AUTOADVANCE_CLASS,lpparam.classLoader,Obfuscator.stories.AUTOADVANCE_METHOD,XC_MethodReplacement.returnConstant(false));
      }
    }
);
  }
 catch (  Exception e) {
    Logger.log("String_Node_Str",e);
  }
}