package com.l7tech.server.util.res;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.policy.AssertionResourceInfo;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.server.policy.ServerPolicyException;
import com.l7tech.server.url.UrlResolver;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Map;
import java.util.regex.Pattern;

public abstract class ResourceGetter<R, M> {
   protected static final Pattern MATCH_ALL;
   protected final Audit audit;
   private static final String[] f;

   protected ResourceGetter(Audit var1) {
      this.audit = var1;
   }

   public abstract void close();

   public abstract R getResource(M var1, Map<String, Object> var2) throws IOException, ResourceGetter.InvalidMessageException, ResourceGetter.UrlNotFoundException, ResourceGetter.MalformedResourceUrlException, ResourceGetter.UrlNotPermittedException, ResourceGetter.ResourceIOException, ResourceGetter.ResourceParseException, GeneralSecurityException;

   public static <R, M> ResourceGetter<R, M> createResourceGetter(
      Assertion param0, AssertionResourceInfo param1, ResourceObjectFactory<R> param2, UrlFinder<M> param3, UrlResolver<R> param4, Audit param5
   ) throws ServerPolicyException {
      // $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 16
      // 04: new com/l7tech/server/policy/ServerPolicyException
      // 07: dup
      // 08: aload 0
      // 09: getstatic com/l7tech/server/util/res/ResourceGetter.f [Ljava/lang/String;
      // 0c: bipush 0
      // 0d: aaload
      // 0e: invokespecial com/l7tech/server/policy/ServerPolicyException.<init> (Lcom/l7tech/policy/assertion/Assertion;Ljava/lang/String;)V
      // 11: athrow
      // 12: invokestatic com/l7tech/server/util/res/ResourceGetter.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 15: athrow
      // 16: aload 1
      // 17: instanceof com/l7tech/policy/MessageUrlResourceInfo
      // 1a: ifeq 32
      // 1d: new com/l7tech/server/util/res/d
      // 20: dup
      // 21: aload 1
      // 22: checkcast com/l7tech/policy/MessageUrlResourceInfo
      // 25: aload 4
      // 27: aload 3
      // 28: aload 5
      // 2a: invokespecial com/l7tech/server/util/res/d.<init> (Lcom/l7tech/policy/MessageUrlResourceInfo;Lcom/l7tech/server/url/UrlResolver;Lcom/l7tech/server/util/res/UrlFinder;Lcom/l7tech/gateway/common/audit/Audit;)V
      // 2d: areturn
      // 2e: invokestatic com/l7tech/server/util/res/ResourceGetter.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 31: athrow
      // 32: aload 1
      // 33: instanceof com/l7tech/policy/SingleUrlResourceInfo
      // 36: ifeq 4e
      // 39: new com/l7tech/server/util/res/e
      // 3c: dup
      // 3d: aload 0
      // 3e: aload 1
      // 3f: checkcast com/l7tech/policy/SingleUrlResourceInfo
      // 42: aload 4
      // 44: aload 5
      // 46: invokespecial com/l7tech/server/util/res/e.<init> (Lcom/l7tech/policy/assertion/Assertion;Lcom/l7tech/policy/SingleUrlResourceInfo;Lcom/l7tech/server/url/UrlResolver;Lcom/l7tech/gateway/common/audit/Audit;)V
      // 49: areturn
      // 4a: invokestatic com/l7tech/server/util/res/ResourceGetter.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4d: athrow
      // 4e: aload 1
      // 4f: instanceof com/l7tech/policy/StaticResourceInfo
      // 52: ifeq 69
      // 55: new com/l7tech/server/util/res/b
      // 58: dup
      // 59: aload 0
      // 5a: aload 1
      // 5b: checkcast com/l7tech/policy/StaticResourceInfo
      // 5e: aload 2
      // 5f: aload 5
      // 61: invokespecial com/l7tech/server/util/res/b.<init> (Lcom/l7tech/policy/assertion/Assertion;Lcom/l7tech/policy/StaticResourceInfo;Lcom/l7tech/server/util/res/ResourceObjectFactory;Lcom/l7tech/gateway/common/audit/Audit;)V
      // 64: areturn
      // 65: invokestatic com/l7tech/server/util/res/ResourceGetter.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 68: athrow
      // 69: new com/l7tech/server/policy/ServerPolicyException
      // 6c: dup
      // 6d: aload 0
      // 6e: aload 1
      // 6f: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 72: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 75: getstatic com/l7tech/server/util/res/ResourceGetter.f [Ljava/lang/String;
      // 78: astore 7
      // 7a: aload 7
      // 7c: bipush 2
      // 7d: aaload
      // 7e: swap
      // 7f: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 84: invokespecial com/l7tech/server/policy/ServerPolicyException.<init> (Lcom/l7tech/policy/assertion/Assertion;Ljava/lang/String;)V
      // 87: athrow
      // 88: astore 6
      // 8a: new com/l7tech/server/policy/ServerPolicyException
      // 8d: dup
      // 8e: aload 0
      // 8f: aload 6
      // 91: invokevirtual java/util/regex/PatternSyntaxException.getPattern ()Ljava/lang/String;
      // 94: getstatic com/l7tech/server/util/res/ResourceGetter.f [Ljava/lang/String;
      // 97: bipush 1
      // 98: aaload
      // 99: swap
      // 9a: ldc "'"
      // 9c: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // a1: aload 6
      // a3: invokespecial com/l7tech/server/policy/ServerPolicyException.<init> (Lcom/l7tech/policy/assertion/Assertion;Ljava/lang/String;Ljava/lang/Throwable;)V
      // a6: athrow
      // try (0 -> 10): 10 java/util/regex/PatternSyntaxException
      // try (12 -> 23): 69 java/util/regex/PatternSyntaxException
      // try (12 -> 24): 24 com/l7tech/server/policy/ServerPolicyException
      // try (26 -> 37): 69 java/util/regex/PatternSyntaxException
      // try (26 -> 38): 38 com/l7tech/server/policy/ServerPolicyException
      // try (40 -> 51): 69 java/util/regex/PatternSyntaxException
      // try (40 -> 52): 52 com/l7tech/server/policy/ServerPolicyException
      // try (54 -> 69): 69 java/util/regex/PatternSyntaxException
   }

   public static <R, M> ResourceGetter<R, M> createErrorResourceGetter(Exception var0) {
      return new a(null, var0);
   }

   static {
      String[] var5 = new String[3];
      int var3 = 0;
      String var2 = "v\u0013kHqWmX\u000e8NlMpV\tv^#Mk\u00172}^lVvT\u0005QCeL$G\u0012w[jGaS%t\u000fmAgM#C@{BnSm[\u00058_fDq[\u0001j\rf[tE\u0005k^jLj\u0017G\u001bb\u000ekXsSkE\u0014}I#QaD\u000fm_`F$^\u000e~B9\u0003";
      int var4 = "v\u0013kHqWmX\u000e8NlMpV\tv^#Mk\u00172}^lVvT\u0005QCeL$G\u0012w[jGaS%t\u000fmAgM#C@{BnSm[\u00058_fDq[\u0001j\rf[tE\u0005k^jLj\u0017G\u001bb\u000ekXsSkE\u0014}I#QaD\u000fm_`F$^\u000e~B9\u0003"
         .length();
      char var1 = '+';
      int var0 = -1;

      while (true) {
         String var10002 = a(12, b(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            f = var5;
            MATCH_ALL = Pattern.compile(".");
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static Exception b(Exception var0) {
      return var0;
   }

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

      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 -> 59;
            case 1 -> 108;
            case 2 -> 20;
            case 3 -> 33;
            case 4 -> 15;
            case 5 -> 47;
            default -> 8;
         });
      }

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

   public static class InvalidMessageException extends Exception {
      static final long serialVersionUID = -2820066767261379525L;

      public InvalidMessageException() {
      }

      public InvalidMessageException(String var1) {
         super(var1);
      }

      public InvalidMessageException(String var1, Throwable var2) {
         super(var1, var2);
      }

      public InvalidMessageException(Throwable var1) {
         super(var1);
      }
   }

   public static class MalformedResourceUrlException extends ResourceGetter.UrlResourceException {
      static final long serialVersionUID = 4845964503271521352L;

      public MalformedResourceUrlException(String var1, String var2) {
         super(var1, var2);
      }
   }

   public static class ResourceIOException extends ResourceGetter.UrlResourceException {
      static final long serialVersionUID = 5586329984478951953L;

      public ResourceIOException(IOException var1, String var2) {
         super(var1, var2);
      }

      public ResourceIOException(String var1, IOException var2, String var3) {
         super(var1, var2, var3);
      }

      public ResourceIOException(String var1, String var2) {
         super(var1, var2);
      }

      public IOException getIOException() {
         return (IOException)this.getCause();
      }
   }

   public static class ResourceParseException extends ResourceGetter.UrlResourceException {
      static final long serialVersionUID = 6458749143587660808L;

      public ResourceParseException(Throwable var1, String var2) {
         super(var1, var2);
      }

      public ResourceParseException(String var1, Throwable var2, String var3) {
         super(var1, var2, var3);
      }
   }

   public static class UrlNotFoundException extends Exception {
      static final long serialVersionUID = -871264281722028198L;
      private static final String a;

      public UrlNotFoundException() {
         super(a);
      }

      static {
         String var10002 = a(
            46,
            a("::]\u0004*,\u0017\u0006;\u001c\rr*\u0017\u0007:\b\u00131=R!\u00071A%9\u0001T3\u0012\u0014<<R\u001d;]\u0015:1\u0001T8\u0018\u0012!9\u0015\u0011")
         );
         byte var10001 = -1;
         a = var10002;
      }

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

         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 -> 90;
               case 1 -> 123;
               case 2 -> 83;
               case 3 -> 79;
               case 4 -> 124;
               case 5 -> 118;
               default -> 92;
            });
         }

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

   public static class UrlNotPermittedException extends ResourceGetter.UrlResourceException {
      static final long serialVersionUID = -5375029166527170667L;

      public UrlNotPermittedException(String var1, String var2) {
         super(var1, var2);
      }
   }

   public static class UrlResourceException extends Exception {
      private final String url;
      static final long serialVersionUID = 7016479975932594557L;

      public UrlResourceException(String var1, String var2) {
         super(var1);
         this.url = var2;
      }

      public UrlResourceException(String var1, Throwable var2, String var3) {
         super(var1, var2);
         this.url = var3;
      }

      public UrlResourceException(Throwable var1, String var2) {
         super(var1);
         this.url = var2;
      }

      public String getUrl() {
         return this.url;
      }
   }
}
