package com.l7tech.objectmodel.migration;

import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.ExternalEntityHeader;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Set;

public interface PropertyResolver {
   PropertyResolver.Type getType();

   Map<ExternalEntityHeader, Set<MigrationDependency>> getDependencies(ExternalEntityHeader var1, Object var2, Method var3, String var4) throws PropertyResolverException;

   void applyMapping(Object var1, String var2, ExternalEntityHeader var3, Object var4, ExternalEntityHeader var5) throws PropertyResolverException;

   Entity valueMapping(ExternalEntityHeader var1) throws PropertyResolverException;

   PropertyResolver getResolver(Method var1) throws PropertyResolverException;

   enum Type {
      DEFAULT,
      SERVICE,
      SERVICE_ALIAS,
      SERVICE_DOCUMENT,
      POLICY,
      POLICY_ALIAS,
      ASSERTION,
      ID_PROVIDER_CONFIG,
      USERGROUP,
      VALUE_REFERENCE,
      SSGKEY,
      SERVER_VARIABLE,
      RESOURCE_ENTRY,
      JDBC_CONNECTION,
      CASSANDRA_CONNECTION;

      // $VF: Failed to inline enum fields
      // 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!)
      static {
         String[] var0 = new String[15];
         int var4 = 0;
         String var3 = "z\"P\u000fLj\u007fz!\u0014l0F\u000eJvt}0J\u001eDv~j2A\u0014Dv\u000fy0Y\bNgbj7P\u000fNvsj\u0007|4G\u000bB{u\u000e}4F\u0012^jsj.P\u0013_ji\tn\"F\u0018Yly`?\f\u007f>Y\u0014Haon=\\\u001cX\u0010|4G\u000bB{up5Z\u001e^uua%\u0006\u007f>Y\u0014Ha\u0006|\"R\u0016Na\r|4G\u000bB{up0Y\u0014Jk\u0007k4S\u001c^td\u0012f5J\rYwff5P\u000fT{\u007fa7\\\u001a";
         int var5 = "z\"P\u000fLj\u007fz!\u0014l0F\u000eJvt}0J\u001eDv~j2A\u0014Dv\u000fy0Y\bNgbj7P\u000fNvsj\u0007|4G\u000bB{u\u000e}4F\u0012^jsj.P\u0013_ji\tn\"F\u0018Yly`?\f\u007f>Y\u0014Haon=\\\u001cX\u0010|4G\u000bB{up5Z\u001e^uua%\u0006\u007f>Y\u0014Ha\u0006|\"R\u0016Na\r|4G\u000bB{up0Y\u0014Jk\u0007k4S\u001c^td\u0012f5J\rYwff5P\u000fT{\u007fa7\\\u001a"
            .length();
         char var2 = '\t';
         int var7 = -1;

         label25:
         while (true) {
            byte var10000 = 71;
            String var10001 = var3.substring(++var7, var7 + var2);
            byte var10002 = -1;

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var0[var4++] = var8;
                     if ((var7 += var2) >= var5) {
                        DEFAULT = new PropertyResolver.Type();
                        SERVICE = new PropertyResolver.Type();
                        SERVICE_ALIAS = new PropertyResolver.Type();
                        SERVICE_DOCUMENT = new PropertyResolver.Type();
                        POLICY = new PropertyResolver.Type();
                        POLICY_ALIAS = new PropertyResolver.Type();
                        ASSERTION = new PropertyResolver.Type();
                        ID_PROVIDER_CONFIG = new PropertyResolver.Type();
                        USERGROUP = new PropertyResolver.Type();
                        VALUE_REFERENCE = new PropertyResolver.Type();
                        SSGKEY = new PropertyResolver.Type();
                        SERVER_VARIABLE = new PropertyResolver.Type();
                        RESOURCE_ENTRY = new PropertyResolver.Type();
                        JDBC_CONNECTION = new PropertyResolver.Type();
                        CASSANDRA_CONNECTION = new PropertyResolver.Type();
                        return;
                     }

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

                     var3 = "q!C\n@oku+D\nKeku\u000fh S\u001fZ~{m$S\u0000^nh~";
                     var5 = "q!C\n@oku+D\nKeku\u000fh S\u001fZ~{m$S\u0000^nh~".length();
                     var2 = 15;
                     var7 = -1;
               }

               var10000 = 83;
               var10001 = var3.substring(++var7, var7 + var2);
               var10002 = 0;
            }
         }
      }

      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 -> 104;
               case 1 -> 54;
               case 2 -> 82;
               case 3 -> 26;
               case 4 -> 76;
               case 5 -> 127;
               default -> 119;
            });
         }

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