package com.l7tech.identity.fed;

import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.IdentityProviderType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.search.Dependency;
import com.l7tech.search.Dependency.DependencyType;
import com.l7tech.search.Dependency.MethodReturnType;
import jakarta.persistence.DiscriminatorValue;
import jakarta.persistence.Entity;
import jakarta.persistence.Transient;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import java.util.HashMap;
import java.util.Set;
import org.hibernate.annotations.Proxy;

@XmlRootElement
@Entity
@Proxy(lazy = false)
@DiscriminatorValue("3")
public class FederatedIdentityProviderConfig extends IdentityProviderConfig {
   private static final String PROP_SAML_SUPPORTED;
   private static final String PROP_X509_SUPPORTED;
   private static final String PROP_X509_CONFIG;
   public static final String PROP_CERT_GOIDS;
   private static final String PROP_CERT_OIDS;
   private HashMap<String, FederatedUser> importedUsers;
   private HashMap<String, FederatedGroup> importedGroups;
   private HashMap<String, Set<String>> importedGroupMembership;
   static final long serialVersionUID = 2277546056430978504L;
   private static final String[] c;

   public FederatedIdentityProviderConfig(IdentityProviderConfig var1) {
      super(IdentityProviderType.FEDERATED);
      this.setVersion(var1.getVersion());
      this.setGoid(var1.getGoid());
      this.copyFrom(var1);
   }

   public FederatedIdentityProviderConfig() {
      super(IdentityProviderType.FEDERATED);
   }

   @Transient
   @Override
   public boolean isWritable() {
      return true;
   }

   @Transient
   @Override
   public boolean canIssueCertificates() {
      return false;
   }

   @Transient
   public boolean isSamlSupported() {
      return this.getBooleanProperty(c[9], false);
   }

   public void setSamlSupported(boolean var1) {
      this.setProperty(c[12], var1);
   }

   @Transient
   public boolean isX509Supported() {
      return this.getBooleanProperty(c[2], true);
   }

   public void setX509Supported(boolean var1) {
      this.setProperty(c[8], var1);
   }

   @Transient
   public X509Config getX509Config() {
      String[] var2 = c;
      X509Config var1 = this.getProperty(var2[3]);
      if (var1 == null) {
         var1 = new X509Config();
         this.setProperty(var2[1], var1);
      }

      return var1;
   }

   @Transient
   @Dependency(methodReturnType = MethodReturnType.GOID, type = DependencyType.TRUSTED_CERT)
   public Goid[] getTrustedCertGoids() {
      String[] var2 = c;
      Goid[] var1 = this.getProperty(var2[17]);
      if (var1 == null) {
         var1 = new Goid[0];
         this.setProperty(var2[17], var1);
      }

      return var1;
   }

   public void setTrustedCertGoids(Goid[] var1) {
      this.setProperty(c[17], var1);
   }

   @Transient
   @Override
   protected String[] getUnexportablePropKeys() {
      String[] var10000 = new String[2];
      String[] var1 = c;
      var10000[0] = var1[6];
      var10000[1] = var1[4];
      return var10000;
   }

   @Transient
   public HashMap<String, FederatedGroup> getImportedGroups() {
      return this.importedGroups;
   }

   public void setImportedGroups(HashMap<String, FederatedGroup> var1) {
      this.importedGroups = var1;
   }

   @Transient
   public HashMap<String, FederatedUser> getImportedUsers() {
      return this.importedUsers;
   }

   public void setImportedUsers(HashMap<String, FederatedUser> var1) {
      this.importedUsers = var1;
   }

   @XmlTransient
   @Transient
   public HashMap<String, Set<String>> getImportedGroupMembership() {
      return this.importedGroupMembership;
   }

   public void setImportedGroupMembership(HashMap<String, Set<String>> var1) {
      this.importedGroupMembership = var1;
   }

   public String toString() {
      String[] var2 = c;
      StringBuilder var1 = new StringBuilder(var2[14]);
      var1.append(var2[0]).append(this.getGoid()).append(var2[5]);
      var1.append(var2[13]).append(this._name).append(var2[18]);
      var1.append(var2[10]).append(this.isSamlSupported()).append(var2[18]);
      var1.append(var2[11]).append(this.isX509Supported()).append(var2[15]);
      var1.append(this.getX509Config().toString());
      var1.append(var2[16]);
      return var1.toString();
   }

   static {
      String[] var5 = new String[19];
      int var3 = 0;
      String var2 = "6\u0005@\u0011b|\n)_\u0019L\u001c197\u0003N\r)_\u0019L\f+'!\u0005[\u0001::\n)_\u0019L\u001c197\u0003N\u0010%\u0018\\\u0006+;3\u0012\u000f[\u0001\u00181>5\u0019\u0002sJ\u000f%\u0018\\\u0006+;3\u0012\u000f[\u0001\u001073\"\u000f%\u0018\\\u0006+;3\u0012\u000f[\u0001\u001073\"\r)_\u0019L\f+'!\u0005[\u0001::\r\"\u000bD\u0019\f+'!\u0005[\u0001::\u000f\"\u000bD\u0019\f+'!\u0005[\u0001::js\u000f)_\u0019L\f+'!\u0005[\u0001::js\r\"\u000bD\u0019\f+'!\u0005[\u0001::\u0006?\u000bD\u0010b|!m,L\u0011:,6%\u000fM<;;9%\u0003]\f\u000f,8'\u0003M\u0010-\u001d8?\f@\u0012\u007f\u0005sT#U\u007f\"mEo\u0010;;%0\u001eL\u0011\u0016:2?\u001e@\u0001&\u000e%>\u001c@\u0011:,\u0014>\u0004O\u001c8`";
      int var4 = "6\u0005@\u0011b|\n)_\u0019L\u001c197\u0003N\r)_\u0019L\f+'!\u0005[\u0001::\n)_\u0019L\u001c197\u0003N\u0010%\u0018\\\u0006+;3\u0012\u000f[\u0001\u00181>5\u0019\u0002sJ\u000f%\u0018\\\u0006+;3\u0012\u000f[\u0001\u001073\"\u000f%\u0018\\\u0006+;3\u0012\u000f[\u0001\u001073\"\r)_\u0019L\f+'!\u0005[\u0001::\r\"\u000bD\u0019\f+'!\u0005[\u0001::\u000f\"\u000bD\u0019\f+'!\u0005[\u0001::js\u000f)_\u0019L\f+'!\u0005[\u0001::js\r\"\u000bD\u0019\f+'!\u0005[\u0001::\u0006?\u000bD\u0010b|!m,L\u0011:,6%\u000fM<;;9%\u0003]\f\u000f,8'\u0003M\u0010-\u001d8?\f@\u0012\u007f\u0005sT#U\u007f\"mEo\u0010;;%0\u001eL\u0011\u0016:2?\u001e@\u0001&\u000e%>\u001c@\u0011:,\u0014>\u0004O\u001c8`"
         .length();
      char var1 = 6;
      int var7 = -1;

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

         while (true) {
            String var13 = b(c(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var13;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     String[] var9 = c;
                     PROP_SAML_SUPPORTED = c[9];
                     PROP_X509_CONFIG = var9[1];
                     PROP_CERT_OIDS = var9[7];
                     PROP_X509_SUPPORTED = var9[2];
                     PROP_CERT_GOIDS = var9[17];
                     return;
                  }

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

                  var2 = "%\u0018\\\u0006+;3\u0012\u000f[\u0001\u00181>5\u0019\u0002sJ";
                  var4 = "%\u0018\\\u0006+;3\u0012\u000f[\u0001\u00181>5\u0019\u0002sJ".length();
                  var1 = 16;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(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 -> 81;
            case 1 -> 106;
            case 2 -> 41;
            case 3 -> 117;
            case 4 -> 95;
            case 5 -> 94;
            default -> 87;
         });
      }

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