package com.l7tech.identity.ldap;

import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.IdentityProviderType;
import com.l7tech.search.Dependency;
import com.l7tech.search.Dependency.DependencyType;
import com.l7tech.search.Dependency.MethodReturnType;
import com.l7tech.util.DeserializeSafe;
import com.l7tech.util.TimeUnit;
import jakarta.persistence.DiscriminatorValue;
import jakarta.persistence.Entity;
import jakarta.persistence.Transient;
import jakarta.xml.bind.annotation.XmlEnumValue;
import jakarta.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeSet;
import org.hibernate.annotations.Proxy;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@XmlRootElement
@Entity
@Proxy(lazy = false)
@DiscriminatorValue("2")
@DeserializeSafe
public class LdapIdentityProviderConfig extends LdapUrlBasedIdentityProviderConfig implements Serializable {
   public static final String SEARCH_BASE;
   public static final String WRITE_BASE;
   public static final String WRITABLE;
   private static final String GROUP_MAPPINGS;
   private static final String USER_MAPPINGS;
   private static final String BIND_DN;
   private static final String BIND_PASS;
   private static final String BASE_TEMPLATE;
   private static final String USERCERTS_ENABLED;
   private static final String USER_CERT_USE_TYPE;
   private static final String USER_CERT_CUSTOM_INDEX;
   private static final String USER_CERT_SEARCH_ISSUER_SERIAL;
   private static final String USER_CERT_SEARCH_SKI;
   private static final String USER_LOOKUP_BY_CERT_MODE;
   private static final String RETURNING_ATTRIBUTES;
   private static final String GROUP_CACHE_SIZE;
   private static final String GROUP_CACHE_MAX_AGE;
   private static final String GROUP_CACHE_MAX_AGE_UNIT;
   private static final String GROUP_MAX_NESTING;
   private static final String GROUP_MEMBERSHIP_CASE_INSENSITIVE;
   public static final String NTLM_AUTHENTICATION_PROVIDER_PROPERTIES;
   static final long serialVersionUID = 7140064167036858194L;
   private static final String[] d;

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

   public LdapIdentityProviderConfig() {
      super(IdentityProviderType.LDAP);
   }

   public static LdapIdentityProviderConfig newLdapIdentityProviderConfig() {
      LdapIdentityProviderConfig var0 = new LdapIdentityProviderConfig();
      var0.setReturningAttributes(new String[0]);
      var0.setGroupCacheSize(100);
      var0.setGroupMaxNesting(5);
      return var0;
   }

   @Transient
   @Override
   public boolean isWritable() {
      return this.getBooleanProperty(d[16], false);
   }

   public void setWritable(boolean var1) {
      this.setProperty(d[24], var1);
   }

   @Transient
   public String getSearchBase() {
      return this.getProperty(d[7]);
   }

   public void setSearchBase(String var1) {
      this.setProperty(d[41], var1);
   }

   @Transient
   public String getWriteBase() {
      return this.getProperty(d[35]);
   }

   public void setWriteBase(String var1) {
      this.setProperty(d[13], var1);
   }

   public GroupMappingConfig getGroupMapping(String var1) {
      HashMap var2 = this.getProperty(d[44]);

      try {
         if (var2 == null) {
            return null;
         }
      } catch (IllegalArgumentException var3) {
         throw var3;
      }

      return (GroupMappingConfig)var2.get(var1.toLowerCase());
   }

   @Transient
   public GroupMappingConfig[] getGroupMappings() {
      HashMap var1 = this.getProperty(d[44]);

      try {
         if (var1 == null) {
            return new GroupMappingConfig[0];
         }
      } catch (IllegalArgumentException var8) {
         throw var8;
      }

      Collection var2 = var1.values();

      try {
         if (var2 == null) {
            return new GroupMappingConfig[0];
         }
      } catch (IllegalArgumentException var7) {
         throw var7;
      }

      GroupMappingConfig[] var3 = new GroupMappingConfig[var2.size()];
      int var4 = 0;
      Iterator var5 = var2.iterator();

      try {
         while (var5.hasNext()) {
            var3[var4] = (GroupMappingConfig)var5.next();
            var4++;
         }

         return var3;
      } catch (IllegalArgumentException var6) {
         throw var6;
      }
   }

   public void setGroupMapping(GroupMappingConfig var1) {
      String[] var3 = d;
      HashMap var2 = this.getProperty(var3[44]);
      if (var2 == null) {
         var2 = new HashMap();
         this.setProperty(var3[44], var2);
      }

      var2.put(var1.getObjClass().toLowerCase(), var1);
   }

   public void setGroupMappings(GroupMappingConfig[] var1) {
      String[] var7 = d;
      HashMap var2 = this.getProperty(var7[1]);
      if (var2 == null) {
         var2 = new HashMap();
         this.setProperty(var7[44], var2);
      } else {
         var2.clear();
      }

      for (GroupMappingConfig var6 : var1) {
         var2.put(var6.getObjClass().toLowerCase(), var6);
      }
   }

   public UserMappingConfig getUserMapping(String var1) {
      HashMap var2 = this.getProperty(d[27]);

      try {
         if (var2 == null) {
            return null;
         }
      } catch (IllegalArgumentException var3) {
         throw var3;
      }

      return (UserMappingConfig)var2.get(var1.toLowerCase());
   }

   @Transient
   public UserMappingConfig[] getUserMappings() {
      HashMap var1 = this.getProperty(d[43]);

      try {
         if (var1 == null) {
            return new UserMappingConfig[0];
         }
      } catch (IllegalArgumentException var8) {
         throw var8;
      }

      Collection var2 = var1.values();

      try {
         if (var2 == null) {
            return new UserMappingConfig[0];
         }
      } catch (IllegalArgumentException var7) {
         throw var7;
      }

      UserMappingConfig[] var3 = new UserMappingConfig[var2.size()];
      int var4 = 0;

      for (Object var6 : var2) {
         var3[var4] = (UserMappingConfig)var6;
         var4++;
      }

      return var3;
   }

   public void setUserMapping(UserMappingConfig var1) {
      String[] var3 = d;
      HashMap var2 = this.getProperty(var3[27]);
      if (var2 == null) {
         var2 = new HashMap();
         this.setProperty(var3[27], var2);
      }

      var2.put(var1.getObjClass().toLowerCase(), var1);
   }

   public void setUserMappings(UserMappingConfig[] var1) {
      String[] var7 = d;
      HashMap var2 = this.getProperty(var7[27]);
      if (var2 == null) {
         var2 = new HashMap();
         this.setProperty(var7[27], var2);
      } else {
         var2.clear();
      }

      for (UserMappingConfig var6 : var1) {
         var2.put(var6.getObjClass().toLowerCase(), var6);
      }
   }

   @Transient
   public String getBindDN() {
      return this.getProperty(d[39]);
   }

   public void setBindDN(String var1) {
      this.setProperty(d[30], var1);
   }

   @Transient
   @Dependency(methodReturnType = MethodReturnType.VARIABLE, type = DependencyType.SECURE_PASSWORD)
   public String getBindPasswd() {
      return this.getProperty(d[10]);
   }

   public void setBindPasswd(String var1) {
      this.setProperty(d[10], var1);
   }

   @Transient
   public String getTemplateName() {
      return this.getProperty(d[14]);
   }

   public void setTemplateName(String var1) {
      this.setProperty(d[33], var1);
   }

   @Transient
   @Override
   protected String[] getUnexportablePropKeys() {
      return new String[]{d[12]};
   }

   @Transient
   @Override
   public boolean canIssueCertificates() {
      try {
         if (this.getUserCertificateUseType() == LdapIdentityProviderConfig.UserCertificateUseType.NONE) {
            return true;
         }
      } catch (IllegalArgumentException var1) {
         throw var1;
      }

      return false;
   }

   @Transient
   public String getUserCertificateIndexSearchFilter() {
      return this.getProperty(d[22]);
   }

   public void setUserCertificateIndexSearchFilter(String var1) {
      this.setProperty(d[26], var1);
   }

   @Transient
   public String getUserCertificateIssuerSerialSearchFilter() {
      return this.getProperty(d[0]);
   }

   public void setUserCertificateIssuerSerialSearchFilter(String var1) {
      this.setProperty(d[11], var1);
   }

   @Transient
   public String getUserCertificateSKISearchFilter() {
      return this.getProperty(d[15]);
   }

   public void setUserCertificateSKISearchFilter(String var1) {
      this.setProperty(d[20], var1);
   }

   @Transient
   public LdapIdentityProviderConfig.UserCertificateUseType getUserCertificateUseType() {
      // $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 0
      // 01: getstatic com/l7tech/identity/ldap/LdapIdentityProviderConfig.d [Ljava/lang/String;
      // 04: astore 4
      // 06: aload 4
      // 08: bipush 34
      // 0a: aaload
      // 0b: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getProperty (Ljava/lang/String;)Ljava/lang/Object;
      // 0e: checkcast java/lang/String
      // 11: astore 2
      // 12: aload 2
      // 13: ifnonnull 3f
      // 16: aload 0
      // 17: aload 4
      // 19: bipush 2
      // 1a: aaload
      // 1b: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getProperty (Ljava/lang/String;)Ljava/lang/Object;
      // 1e: checkcast java/lang/Boolean
      // 21: astore 3
      // 22: aload 3
      // 23: ifnull 38
      // 26: aload 3
      // 27: invokevirtual java/lang/Boolean.booleanValue ()Z
      // 2a: ifeq 38
      // 2d: goto 31
      // 30: athrow
      // 31: getstatic com/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType.INDEX Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType;
      // 34: goto 3b
      // 37: athrow
      // 38: getstatic com/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType.NONE Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType;
      // 3b: astore 1
      // 3c: goto 52
      // 3f: aload 0
      // 40: getstatic com/l7tech/identity/ldap/LdapIdentityProviderConfig.d [Ljava/lang/String;
      // 43: bipush 25
      // 45: aaload
      // 46: getstatic com/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType.NONE Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType;
      // 49: ldc com/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType
      // 4b: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getEnumProperty (Ljava/lang/String;Ljava/lang/Enum;Ljava/lang/Class;)Ljava/lang/Enum;
      // 4e: checkcast com/l7tech/identity/ldap/LdapIdentityProviderConfig$UserCertificateUseType
      // 51: astore 1
      // 52: aload 1
      // 53: areturn
      // try (18 -> 23): 24 java/lang/IllegalArgumentException
      // try (20 -> 27): 27 java/lang/IllegalArgumentException
   }

   public void setUserCertificateUseType(LdapIdentityProviderConfig.UserCertificateUseType var1) {
      String[] var2 = d;
      this.setProperty(var2[25], var1.toString());
      this.setProperty(var2[17], null);
   }

   @Transient
   public String[] getReturningAttributes() {
      String[] var1 = null;
      Object var2 = this.getProperty(d[29]);
      if (var2 instanceof String[]) {
         var1 = (String[])var2;
      }

      return var1;
   }

   public void setReturningAttributes(String[] var1) {
      try {
         if (var1 == null) {
            this.setProperty(d[5], null);
            return;
         }
      } catch (IllegalArgumentException var3) {
         throw var3;
      }

      TreeSet var2 = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
      var2.addAll(Arrays.asList(var1));
      this.setProperty(d[5], var2.toArray(new String[var2.size()]));
   }

   @Transient
   public Integer getGroupCacheSize() {
      return this.getProperty(d[42]);
   }

   public void setGroupCacheSize(Integer var1) {
      this.setProperty(d[23], var1);
   }

   @Transient
   public Long getGroupCacheMaxAge() {
      Object var1 = this.getProperty(d[37]);

      try {
         if (var1 == null) {
            return null;
         }
      } catch (IllegalArgumentException var2) {
         throw var2;
      }

      try {
         if (var1 instanceof Integer) {
            return ((Integer)var1).longValue();
         }
      } catch (IllegalArgumentException var3) {
         throw var3;
      }

      return (Long)var1;
   }

   public void setGroupCacheMaxAge(Long var1) {
      this.setProperty(d[40], var1);
   }

   @Transient
   public TimeUnit getGroupCacheMaxAgeUnit() {
      Object var1 = this.getProperty(d[6]);

      try {
         if (var1 == null) {
            return TimeUnit.MINUTES;
         }
      } catch (IllegalArgumentException var2) {
         throw var2;
      }

      return TimeUnit.fromAbbreviation((String)var1);
   }

   public void setGroupCacheMaxAgeUnit(TimeUnit var1) {
      this.setProperty(d[45], var1.getAbbreviation());
   }

   @Transient
   public Integer getGroupMaxNesting() {
      return this.getProperty(d[3]);
   }

   public void setGroupMaxNesting(Integer var1) {
      this.setProperty(d[32], var1);
   }

   @Transient
   public boolean isGroupMembershipCaseInsensitive() {
      return this.getBooleanProperty(d[19], false);
   }

   public void setGroupMembershipCaseInsensitive(boolean var1) {
      this.setProperty(d[21], var1);
   }

   @Transient
   public LdapIdentityProviderConfig.UserLookupByCertMode getUserLookupByCertMode() {
      return this.getEnumProperty(d[18], LdapIdentityProviderConfig.UserLookupByCertMode.LOGIN, LdapIdentityProviderConfig.UserLookupByCertMode.class);
   }

   public void setUserLookupByCertMode(@Nullable LdapIdentityProviderConfig.UserLookupByCertMode var1) {
      LdapIdentityProviderConfig var10000;
      String var10001;
      String var10002;
      label16: {
         try {
            var10000 = this;
            var10001 = d[38];
            if (var1 == null) {
               var10002 = LdapIdentityProviderConfig.UserLookupByCertMode.LOGIN.toString();
               break label16;
            }
         } catch (IllegalArgumentException var2) {
            throw var2;
         }

         var10002 = var1.toString();
      }

      var10000.setProperty(var10001, var10002);
   }

   @Transient
   public Map<String, String> getNtlmAuthenticationProviderProperties() {
      Map var1 = this.getProperty(d[8]);

      try {
         if (var1 != null) {
            return var1;
         }
      } catch (IllegalArgumentException var2) {
         throw var2;
      }

      return Collections.emptyMap();
   }

   public void setNtlmAuthenticationProviderProperties(@NotNull Map<String, String> var1) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(0);
         }
      } catch (IllegalArgumentException var2) {
         throw var2;
      }

      this.setProperty(d[28], var1);
   }

   static {
      String[] var5 = new String[46];
      int var3 = 0;
      String var2 = "\u0013RR\nm\tE\u0012rR\u0019\\\u000f_/RD\rK\u001ed\u0003S^\u0019B\u000b\u0001SG\u0015O\u001cG\u000fOP\u000b\u0010\u0013RR\nm\tE\u0012Rr\u0016O\u000e[\u0003E\u000f\u0001SX\r^!V\u001eoR\u000bZ\u0005Y\u0001>'SP\rC\tY\u0012\u0001Q\u0017\\Lw(NC6[\u0000[FQV\nO\u0001R\u0012DEX\tIDA\u0001X\u001e\u000eIDH\u0004DXC\u0019D\u0012\u0001Y\u0017ZLU\u0003\u0001Y\rB\u0000\u0013\u0014DC\r\\\u0002^\bFv\fZ\u001e^\u0004TC\u001d]\u0014\u0001SX\r^/V\u0005IR5O\u0014v\u0001Db\u0016G\u0018\u000e\nEV\b]\tV\u0014B_\u001aO\u001fR\u0016\bU[\u0015~\u001eX\u0010HS\u001d\\<E\tQR\nZ\u0005R\u0015\u0005\u0016SX\b]\f\nEV\bl\u0005Y\u0002qV\u000b]\u001a\u0013RR\nm\tE\u0012rR\u0019\\\u000f_/RD\rK\u001ed\u0003S^\u0019B\f\nEV\bl\u0005Y\u0002qV\u000b]\r\nEV\bY\u001e^\u0012DU\u0019]\t\u0014\tS^\u001fG\u0002V\nuR\u0015^\u0000V\u0012Dy\u0019C\t\u0011\u0013RR\nm\tE\u0012rR\u0019\\\u000f_5j~\b\u0011S^\fO\u000e[\u0003\u0010\u0013RR\nm\tE\u0012Rr\u0016O\u000e[\u0003E\u0014\u0013RR\nb\u0003X\rTG:W/R\u0014Uz\u0017J\t\u001e\u0001SX\r^!R\u000bCR\n]\u0004^\u0016bV\u000bK%Y\u0015DY\u000bG\u0018^\u0010D\u0011\u0013RR\nm\tE\u0012rR\u0019\\\u000f_5j~\u001e\u0001SX\r^!R\u000bCR\n]\u0004^\u0016bV\u000bK%Y\u0015DY\u000bG\u0018^\u0010D\r\u0013RR\nm\tE\u0012hY\u001cK\u0014\u000e\u0001SX\r^/V\u0005IR+G\u0016R\b\u0011S^\fO\u000e[\u0003\u000f\u0013RR\nm\tE\u0012tD\u001dz\u0015G\u0003\r\u0013RR\nm\tE\u0012hY\u001cK\u0014\u000b\u0013RE\u0015O\u001cG\u000fOP\u000b\u0016\bU[\u0015~\u001eX\u0010HS\u001d\\<E\tQR\nZ\u0005R\u0015\u0013\u0014DC\r\\\u0002^\bFv\fZ\u001e^\u0004TC\u001d]\n\nEV\bl\u0005Y\u0002ey'\u0015DC6Z\u0000Z'TC\u0010K\u0002C\u000fBV\fG\u0003Y6SX\u000eG\bR\u0014qE\u0017^\tE\u0012HR\u000b\u000f\u0001SX\r^!V\u001eoR\u000bZ\u0005Y\u0001\u0014\tS^\u001fG\u0002V\nuR\u0015^\u0000V\u0012Dy\u0019C\t\u000f\u0013RR\nm\tE\u0012tD\u001dz\u0015G\u0003\r\nEV\bY\u001e^\u0012DU\u0019]\t3\u0005NZWB[C\u0003B_WG\bR\bU^\fWC[\u0002@GWb\bV\u0016hS\u001d@\u0018^\u0012Xg\nA\u001a^\u0002DE;A\u0002Q\u000fF\u0010\u0001SX\r^/V\u0005IR5O\u0014v\u0001D\u0014\u0013RR\nb\u0003X\rTG:W/R\u0014Uz\u0017J\t\n\nEV\bl\u0005Y\u0002ey\u0010\u0001SX\r^/V\u0005IR5O\u0014v\u0001D\u000e\nEV\b]\tV\u0014B_\u001aO\u001fR\u000e\u0001SX\r^/V\u0005IR+G\u0016R\u000b\u0013RE\u0015O\u001cG\u000fOP\u000b";
      int var4 = "\u0013RR\nm\tE\u0012rR\u0019\\\u000f_/RD\rK\u001ed\u0003S^\u0019B\u000b\u0001SG\u0015O\u001cG\u000fOP\u000b\u0010\u0013RR\nm\tE\u0012Rr\u0016O\u000e[\u0003E\u000f\u0001SX\r^!V\u001eoR\u000bZ\u0005Y\u0001>'SP\rC\tY\u0012\u0001Q\u0017\\Lw(NC6[\u0000[FQV\nO\u0001R\u0012DEX\tIDA\u0001X\u001e\u000eIDH\u0004DXC\u0019D\u0012\u0001Y\u0017ZLU\u0003\u0001Y\rB\u0000\u0013\u0014DC\r\\\u0002^\bFv\fZ\u001e^\u0004TC\u001d]\u0014\u0001SX\r^/V\u0005IR5O\u0014v\u0001Db\u0016G\u0018\u000e\nEV\b]\tV\u0014B_\u001aO\u001fR\u0016\bU[\u0015~\u001eX\u0010HS\u001d\\<E\tQR\nZ\u0005R\u0015\u0005\u0016SX\b]\f\nEV\bl\u0005Y\u0002qV\u000b]\u001a\u0013RR\nm\tE\u0012rR\u0019\\\u000f_/RD\rK\u001ed\u0003S^\u0019B\f\nEV\bl\u0005Y\u0002qV\u000b]\r\nEV\bY\u001e^\u0012DU\u0019]\t\u0014\tS^\u001fG\u0002V\nuR\u0015^\u0000V\u0012Dy\u0019C\t\u0011\u0013RR\nm\tE\u0012rR\u0019\\\u000f_5j~\b\u0011S^\fO\u000e[\u0003\u0010\u0013RR\nm\tE\u0012Rr\u0016O\u000e[\u0003E\u0014\u0013RR\nb\u0003X\rTG:W/R\u0014Uz\u0017J\t\u001e\u0001SX\r^!R\u000bCR\n]\u0004^\u0016bV\u000bK%Y\u0015DY\u000bG\u0018^\u0010D\u0011\u0013RR\nm\tE\u0012rR\u0019\\\u000f_5j~\u001e\u0001SX\r^!R\u000bCR\n]\u0004^\u0016bV\u000bK%Y\u0015DY\u000bG\u0018^\u0010D\r\u0013RR\nm\tE\u0012hY\u001cK\u0014\u000e\u0001SX\r^/V\u0005IR+G\u0016R\b\u0011S^\fO\u000e[\u0003\u000f\u0013RR\nm\tE\u0012tD\u001dz\u0015G\u0003\r\u0013RR\nm\tE\u0012hY\u001cK\u0014\u000b\u0013RE\u0015O\u001cG\u000fOP\u000b\u0016\bU[\u0015~\u001eX\u0010HS\u001d\\<E\tQR\nZ\u0005R\u0015\u0013\u0014DC\r\\\u0002^\bFv\fZ\u001e^\u0004TC\u001d]\n\nEV\bl\u0005Y\u0002ey'\u0015DC6Z\u0000Z'TC\u0010K\u0002C\u000fBV\fG\u0003Y6SX\u000eG\bR\u0014qE\u0017^\tE\u0012HR\u000b\u000f\u0001SX\r^!V\u001eoR\u000bZ\u0005Y\u0001\u0014\tS^\u001fG\u0002V\nuR\u0015^\u0000V\u0012Dy\u0019C\t\u000f\u0013RR\nm\tE\u0012tD\u001dz\u0015G\u0003\r\nEV\bY\u001e^\u0012DU\u0019]\t3\u0005NZWB[C\u0003B_WG\bR\bU^\fWC[\u0002@GWb\bV\u0016hS\u001d@\u0018^\u0012Xg\nA\u001a^\u0002DE;A\u0002Q\u000fF\u0010\u0001SX\r^/V\u0005IR5O\u0014v\u0001D\u0014\u0013RR\nb\u0003X\rTG:W/R\u0014Uz\u0017J\t\n\nEV\bl\u0005Y\u0002ey\u0010\u0001SX\r^/V\u0005IR5O\u0014v\u0001D\u000e\nEV\b]\tV\u0014B_\u001aO\u001fR\u000e\u0001SX\r^/V\u0005IR+G\u0016R\u000b\u0013RE\u0015O\u001cG\u000fOP\u000b"
         .length();
      char var1 = 26;
      int var7 = -1;

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

         while (true) {
            String var13 = c(d(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var13;
                  if ((var7 += var1) >= var4) {
                     d = var5;
                     String[] var9 = d;
                     BIND_DN = d[39];
                     GROUP_CACHE_MAX_AGE_UNIT = var9[6];
                     USERCERTS_ENABLED = var9[17];
                     NTLM_AUTHENTICATION_PROVIDER_PROPERTIES = var9[8];
                     BIND_PASS = var9[10];
                     USER_MAPPINGS = var9[27];
                     BASE_TEMPLATE = var9[14];
                     GROUP_MEMBERSHIP_CASE_INSENSITIVE = var9[19];
                     USER_LOOKUP_BY_CERT_MODE = var9[38];
                     WRITABLE = var9[24];
                     GROUP_MAPPINGS = var9[44];
                     USER_CERT_CUSTOM_INDEX = var9[26];
                     GROUP_CACHE_MAX_AGE = var9[40];
                     USER_CERT_SEARCH_ISSUER_SERIAL = var9[11];
                     RETURNING_ATTRIBUTES = var9[5];
                     GROUP_CACHE_SIZE = var9[23];
                     SEARCH_BASE = var9[41];
                     USER_CERT_SEARCH_SKI = var9[15];
                     GROUP_MAX_NESTING = var9[3];
                     WRITE_BASE = var9[35];
                     USER_CERT_USE_TYPE = var9[25];
                     return;
                  }

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

                  var2 = "\u0001SG\u0015O\u001cG\u000fOP\u000b\u0014\u0001SX\r^/V\u0005IR5O\u0014v\u0001Db\u0016G\u0018";
                  var4 = "\u0001SG\u0015O\u001cG\u000fOP\u000b\u0014\u0001SX\r^/V\u0005IR5O\u0014v\u0001Db\u0016G\u0018".length();
                  var1 = 11;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String c(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 -> 102;
            case 1 -> 33;
            case 2 -> 55;
            case 3 -> 120;
            case 4 -> 46;
            case 5 -> 108;
            default -> 55;
         });
      }

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

   public enum UserCertificateUseType {
      @XmlEnumValue("None")
      NONE,
      @XmlEnumValue("Index")
      INDEX,
      @XmlEnumValue("Custom Index")
      INDEX_CUSTOM,
      @XmlEnumValue("Search")
      SEARCH;

      // $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[4];
         int var4 = 0;
         String var3 = "Z6\u001ex\u0006G<\u0011o\u0010u";
         int var5 = "Z6\u001ex\u0006G<\u0011o\u0010u".length();
         char var2 = 4;
         int var7 = -1;

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

            while (true) {
               String var12 = a(a(var10000));
               switch (var10001) {
                  case 0:
                     var0[var4++] = var12;
                     if ((var7 += var2) >= var5) {
                        NONE = new LdapIdentityProviderConfig.UserCertificateUseType();
                        INDEX = new LdapIdentityProviderConfig.UserCertificateUseType();
                        INDEX_CUSTOM = new LdapIdentityProviderConfig.UserCertificateUseType();
                        SEARCH = new LdapIdentityProviderConfig.UserCertificateUseType();
                        return;
                     }

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

                     var3 = "]7\u0014x\u000bbgA*\u0004r\u001e\u0005]7\u0014x\u000b";
                     var5 = "]7\u0014x\u000bbgA*\u0004r\u001e\u0005]7\u0014x\u000b".length();
                     var2 = '\f';
                     var7 = -1;
               }

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

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

         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 -> 20;
               case 1 -> 121;
               case 2 -> 80;
               case 3 -> 61;
               case 4 -> 83;
               case 5 -> 61;
               default -> 36;
            });
         }

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

   public enum UserLookupByCertMode {
      @XmlEnumValue("Common Name from Certificate")
      LOGIN,
      @XmlEnumValue("Entire Certificate")
      CERT;

      // $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[2];
         int var4 = 0;
         String var3 = "\u000foLtV\u0004\u0000eYi";
         int var5 = "\u000foLtV\u0004\u0000eYi".length();
         char var2 = 5;
         int var1 = -1;

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

            var2 = var3.charAt(var1);
         }
      }

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

         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 -> 67;
               case 1 -> 32;
               case 2 -> 11;
               case 3 -> 61;
               case 4 -> 24;
               case 5 -> 32;
               default -> 1;
            });
         }

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