package com.l7tech.gateway.api.impl;

import com.l7tech.util.Functions;
import com.l7tech.util.Functions.Unary;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlTransient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@XmlTransient
public class ExtensionSupport {
   private Extension a;
   private List<Object> b;
   private Map<QName, Object> c;
   private static final String[] z;

   @XmlAnyAttribute
   protected Map<QName, Object> getAttributeExtensions() {
      return this.c;
   }

   protected final void setAttributeExtensions(Map<QName, Object> var1) {
      this.c = var1;
   }

   protected Extension getExtension() {
      return this.a;
   }

   protected void setExtension(Extension var1) {
      this.a = var1;
   }

   protected List<Object> getExtensions() {
      return this.b;
   }

   protected final void setExtensions(List<Object> var1) {
      this.b = var1;
   }

   @Nullable
   public <O> O getUniqueExtension(@NotNull Unary<Boolean, Object> param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnonnull 0c
      // 04: bipush 0
      // 05: invokestatic com/l7tech/gateway/api/impl/ExtensionSupport.a (I)V
      // 08: goto 0c
      // 0b: athrow
      // 0c: aload 0
      // 0d: invokevirtual com/l7tech/gateway/api/impl/ExtensionSupport.getExtension ()Lcom/l7tech/gateway/api/impl/Extension;
      // 10: ifnull 21
      // 13: aload 0
      // 14: invokevirtual com/l7tech/gateway/api/impl/ExtensionSupport.getExtension ()Lcom/l7tech/gateway/api/impl/Extension;
      // 17: invokevirtual com/l7tech/gateway/api/impl/Extension.getExtensions ()Ljava/util/List;
      // 1a: ifnonnull 26
      // 1d: goto 21
      // 20: athrow
      // 21: aconst_null
      // 22: goto 39
      // 25: athrow
      // 26: aload 0
      // 27: invokevirtual com/l7tech/gateway/api/impl/ExtensionSupport.getExtension ()Lcom/l7tech/gateway/api/impl/Extension;
      // 2a: invokevirtual com/l7tech/gateway/api/impl/Extension.getExtensions ()Ljava/util/List;
      // 2d: new com/l7tech/gateway/api/impl/m
      // 30: dup
      // 31: aload 0
      // 32: aload 1
      // 33: invokespecial com/l7tech/gateway/api/impl/m.<init> (Lcom/l7tech/gateway/api/impl/ExtensionSupport;Lcom/l7tech/util/Functions$Unary;)V
      // 36: invokestatic com/l7tech/util/Functions.grepFirst (Ljava/lang/Iterable;Lcom/l7tech/util/Functions$Unary;)Ljava/lang/Object;
      // 39: areturn
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (6 -> 13): 14 java/lang/IllegalArgumentException
      // try (9 -> 17): 17 java/lang/IllegalArgumentException
   }

   public <O> void setUniqueExtension(@Nullable O var1, @NotNull Unary<Boolean, Object> var2) {
      try {
         if (var2 == null) {
            a(1);
         }
      } catch (IllegalArgumentException var6) {
         throw var6;
      }

      List var3;
      label47: {
         label46: {
            try {
               if (this.getExtension() == null || this.getExtension().getExtensions() == null) {
                  break label46;
               }
            } catch (IllegalArgumentException var8) {
               throw var8;
            }

            var3 = Functions.grep(this.getExtension().getExtensions(), new n(this, var2));
            break label47;
         }

         Extension var4 = new Extension();
         this.setExtension(var4);
         var3 = new ArrayList();
      }

      try {
         if (var1 != null) {
            var3.add(var1);
         }
      } catch (IllegalArgumentException var5) {
         throw var5;
      }

      try {
         if (var3.isEmpty()) {
            this.setExtension(null);
            return;
         }
      } catch (IllegalArgumentException var7) {
         throw var7;
      }

      this.getExtension().setExtensions(var3);
   }

   static {
      String[] var5 = new String[5];
      int var3 = 0;
      String var2 = "t(f\u0011X0Vr(W<B<It$}*>F?u1[<Ismt+DygI\"f\nC5K'=s6W4Bs(`d\u0011|T m}\"\u0016|T)had[,Tsm|+ByEbm|1Z5,d\"\u007fkZnSb.zkQ8Sb:s=\u00198Wnb{)F5\bB5f!X*Nh#A1F)Hu9";
      int var4 = "t(f\u0011X0Vr(W<B<It$}*>F?u1[<Ismt+DygI\"f\nC5K'=s6W4Bs(`d\u0011|T m}\"\u0016|T)had[,Tsm|+ByEbm|1Z5,d\"\u007fkZnSb.zkQ8Sb:s=\u00198Wnb{)F5\bB5f!X*Nh#A1F)Hu9"
         .length();
      char var1 = 18;
      int var7 = -1;

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

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

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

                  var2 = "`(f\u0011X0Vr(W<B<It$}*\u0007j,f'^<U";
                  var4 = "`(f\u0011X0Vr(W<B<It$}*\u0007j,f'^<U".length();
                  var1 = 18;
                  var7 = -1;
            }

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

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

      return var10000;
   }

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

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 7;
            case 1 -> 77;
            case 2 -> 18;
            case 3 -> 68;
            case 4 -> 54;
            case 5 -> 89;
            default -> 39;
         });
      }

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