package com.l7tech.gateway.common.audit;

import com.l7tech.common.log.HybridDiagnosticContext;
import com.l7tech.common.log.HybridDiagnosticContext.SavedDiagnosticContext;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.context.ApplicationEvent;

public class AuditDetailEvent extends ApplicationEvent {
   private final AuditDetailEvent.AuditDetailWithInfo info;
   static final long serialVersionUID = -657772871593548448L;
   private static final String[] a;

   public AuditDetailEvent(Object var1, AuditDetail var2, Throwable var3, String var4) {
      super(var1);
      this.info = new AuditDetailEvent.AuditDetailWithInfo(var1, var2, var3, var4);
   }

   @NotNull
   public AuditDetailEvent.AuditDetailWithInfo getDetailWithInfo() {
      try {
         return this.info;
      } catch (IllegalStateException var1) {
         throw a(var1);
      }
   }

   private static IllegalStateException a(IllegalStateException var0) {
      return var0;
   }

   static {
      String[] var5 = new String[3];
      int var3 = 0;
      String var2 = "\u001a}-_lvF\u001cq(_g F\u001ce!\t/\"]\u0014\u007f/\u001e/ G\u001d{4_A4V\u0010f\u0004\u0015t [\u0015W6\u0015n5*9\\/\u0004N4^\u00152-\u0015t)]\u001d2e\u0003.dAY\u007f5\u0003ta\\\u0016f`\u0002e5G\u000b|`\u001eu-^\u0011\u001ew44e5S\u0010~\u0017\u0019t){\u0017t/";
      int var4 = "\u001a}-_lvF\u001cq(_g F\u001ce!\t/\"]\u0014\u007f/\u001e/ G\u001d{4_A4V\u0010f\u0004\u0015t [\u0015W6\u0015n5*9\\/\u0004N4^\u00152-\u0015t)]\u001d2e\u0003.dAY\u007f5\u0003ta\\\u0016f`\u0002e5G\u000b|`\u001eu-^\u0011\u001ew44e5S\u0010~\u0017\u0019t){\u0017t/"
         .length();
      char var1 = '0';
      int var0 = -1;

      while (true) {
         String var10002 = a(69, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            a = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 119);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 60;
            case 1 -> 87;
            case 2 -> 5;
            case 3 -> 53;
            case 4 -> 69;
            case 5 -> 4;
            default -> 119;
         });
      }

      return new String(var10001).intern();
   }

   public static final class AuditDetailWithInfo {
      private final Object a;
      private final AuditDetail b;
      private final Throwable c;
      private final String d;
      private final SavedDiagnosticContext e;
      private static final String[] f;

      public AuditDetailWithInfo(@NotNull Object var1, @NotNull AuditDetail var2, @Nullable Throwable var3, @Nullable String var4) {
         if (var1 == null) {
            a(0);
         }

         if (var2 == null) {
            a(1);
         }

         super();
         this.e = HybridDiagnosticContext.save();
         this.a = var1;
         this.b = var2;
         this.c = var3;
         this.d = var4;
      }

      @NotNull
      public AuditDetail getDetail() {
         try {
            if (this.b == null) {
               a(2);
            }

            return this.b;
         } catch (IllegalArgumentException var1) {
            throw a(var1);
         }
      }

      @Nullable
      public Throwable getException() {
         return this.c;
      }

      @Nullable
      public String getLoggerName() {
         return this.d;
      }

      @NotNull
      public Object getSource() {
         try {
            if (this.a == null) {
               a(3);
            }

            return this.a;
         } catch (IllegalArgumentException var1) {
            throw a(var1);
         }
      }

      @NotNull
      public SavedDiagnosticContext getContext() {
         try {
            if (this.e == null) {
               a(4);
            }

            return this.e;
         } catch (IllegalArgumentException var1) {
            throw a(var1);
         }
      }

      private static IllegalArgumentException a(IllegalArgumentException var0) {
         return var0;
      }

      static {
         String[] var5 = new String[10];
         int var3 = 0;
         String var2 = "'M\u0019%\u0015\u001f\u0014\u000b#\u001b4/\u0002\u0017\u0003#S\"uO\u000bGn\u0003\"/J\u0016\bwV#>\u001e\r\u0015mV?.\u0006\u0014\t\u0000f\u0002\u0015>\u001e\u0019\u000eo\u0006\u0003f\u000202\u0006D\u0004l\u001b~7]\f\u0002`\u001e~<\u000b\f\u0002t\u0017(t\t\u0017\nn\u0019?t\u000b\r\u0003j\u0002~\u001a\u001f\u001c\u000ew24/\u000b\u0011\u000bF\u000045\u001e\\&v\u00128/.\u001d\u0013b\u001f=\f\u0003\f\u000fJ\u001874\t\u0000f\u0002\u00024\u001f\n\u0004f>&q\u0011$6\u000f\u0016\u0013#\u0010>)J8)l\u0002\u001f.\u0006\u0014Gs\u0017#:\u0007\u001d\u0013f\u0004q|O\u000b@#\u00197{O\u000bI&\u0005q6\u001f\u000b\u0013#\u0018>/J\u001a\u0002#\u0018$7\u0006\n\u0000f\u0002\u00124\u0004\f\u0002{\u0002\u0006\u0014l\u0003#8\u000f";
         int var4 = "'M\u0019%\u0015\u001f\u0014\u000b#\u001b4/\u0002\u0017\u0003#S\"uO\u000bGn\u0003\"/J\u0016\bwV#>\u001e\r\u0015mV?.\u0006\u0014\t\u0000f\u0002\u0015>\u001e\u0019\u000eo\u0006\u0003f\u000202\u0006D\u0004l\u001b~7]\f\u0002`\u001e~<\u000b\f\u0002t\u0017(t\t\u0017\nn\u0019?t\u000b\r\u0003j\u0002~\u001a\u001f\u001c\u000ew24/\u000b\u0011\u000bF\u000045\u001e\\&v\u00128/.\u001d\u0013b\u001f=\f\u0003\f\u000fJ\u001874\t\u0000f\u0002\u00024\u001f\n\u0004f>&q\u0011$6\u000f\u0016\u0013#\u0010>)J8)l\u0002\u001f.\u0006\u0014Gs\u0017#:\u0007\u001d\u0013f\u0004q|O\u000b@#\u00197{O\u000bI&\u0005q6\u001f\u000b\u0013#\u0018>/J\u001a\u0002#\u0018$7\u0006\n\u0000f\u0002\u00124\u0004\f\u0002{\u0002\u0006\u0014l\u0003#8\u000f"
            .length();
         char var1 = '*';
         int var7 = -1;

         label24:
         while (true) {
            byte var10000 = 127;
            String var10001 = var2.substring(++var7, var7 + var1);
            byte var10002 = -1;

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var5[var3++] = var8;
                     if ((var7 += var1) >= var4) {
                        f = var5;
                        return;
                     }

                     var1 = var2.charAt(var7);
                     break;
                  default:
                     var5[var3++] = var8;
                     if ((var7 += var1) < var4) {
                        var1 = var2.charAt(var7);
                        continue label24;
                     }

                     var2 = "^o\u001d=*QD\u0001i\u001e{2X\t\u0007e\u001b{9\u000e\t\u0007q\u0012-q\f\u0012\u000fk\u001c:q\u000e\b\u0006o\u0007{\u001f\u001a\u0019\u000br71*\u000e\u0014\u000eC\u000510\u001bY#s\u0017=*+\u0018\u0016g\u001a8\t\u0006\t\nO\u001d21";
                     var4 = "^o\u001d=*QD\u0001i\u001e{2X\t\u0007e\u001b{9\u000e\t\u0007q\u0012-q\f\u0012\u000fk\u001c:q\u000e\b\u0006o\u0007{\u001f\u001a\u0019\u000br71*\u000e\u0014\u000eC\u000510\u001bY#s\u0017=*+\u0018\u0016g\u001a8\t\u0006\t\nO\u001d21"
                        .length();
                     var1 = 6;
                     var7 = -1;
               }

               var10000 = 122;
               var10001 = var2.substring(++var7, var7 + var1);
               var10002 = 0;
            }
         }
      }

      private static char[] a(String var0) {
         char[] var10000 = var0.toCharArray();
         if (var10000.length < 2) {
            var10000[0] = (char)(var10000[0] ^ 7);
         }

         return var10000;
      }

      private static String a(int var0, char[] var1) {
         int var10003 = var1.length;
         int var10002 = var0;
         char[] var10001 = var1;
         int var10000 = var10003;

         for (int var2 = 0; var10000 > var2; var2++) {
            var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
               case 0 -> 24;
               case 1 -> 124;
               case 2 -> 9;
               case 3 -> 46;
               case 4 -> 36;
               case 5 -> 21;
               default -> 7;
            });
         }

         return new String(var10001).intern();
      }
   }
}
