package com.l7tech.server.admin;

import com.l7tech.identity.AuthenticationException;
import com.l7tech.identity.FailAttemptsExceededException;
import com.l7tech.identity.FailInactivityPeriodExceededException;
import com.l7tech.identity.Group;
import com.l7tech.identity.IdentityProvider;
import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.User;
import com.l7tech.identity.UserDisabledException;
import com.l7tech.identity.ValidationException;
import com.l7tech.identity.internal.InternalUser;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.security.token.SecurityTokenType;
import com.l7tech.security.token.UsernamePasswordSecurityToken;
import com.l7tech.server.cluster.ClusterMaster;
import com.l7tech.server.event.EntityClassEvent;
import com.l7tech.server.event.admin.Updated;
import com.l7tech.server.event.system.ReadyForMessages;
import com.l7tech.server.identity.AuthenticatingIdentityProvider;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.identity.IdentityProviderFactory;
import com.l7tech.server.identity.internal.InternalIdentityProvider;
import com.l7tech.server.identity.internal.InternalUserManager;
import com.l7tech.server.identity.internal.InternalUserPasswordManager;
import com.l7tech.server.logon.LogonService;
import com.l7tech.server.security.PasswordEnforcerManager;
import com.l7tech.server.security.rbac.RbacServices;
import com.l7tech.server.security.rbac.RoleManager;
import com.l7tech.server.security.rbac.RoleManagerIdentitySourceSupport;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.util.Background;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.Pair;
import com.l7tech.util.TimeUnit;
import com.l7tech.util.ValidatedConfig;
import com.l7tech.util.Functions.Nullary;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.security.SecureRandom;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.Timer;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.login.LoginException;
import org.apache.commons.collections.map.LRUMap;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationEvent;

public class AdminSessionManager extends RoleManagerIdentitySourceSupport implements PostStartupApplicationListener, PropertyChangeListener {
   private static final Logger a;
   private static final a b;
   private static final long c;
   private static final long d;
   private static final long e;
   private static final long f;
   private final Config g;
   private final LogonService h;
   private final Timer i;
   private RbacServices j;
   private IdentityProviderFactory k;
   private PasswordEnforcerManager l;
   private final ClusterMaster m;
   private static Nullary<Boolean> n;
   private final LRUMap o = new LRUMap(1000);
   private static final SecureRandom p;
   private final Object q = new Object();
   private final GroupCache r;
   private Set<IdentityProvider> s;
   private static final long t;
   private final AtomicLong u = new AtomicLong();
   private static final String[] w;

   public AdminSessionManager(Config var1, LogonService var2, Timer var3, ClusterMaster var4) {
      Background.scheduleRepeated(new s(this), f * 4L, f);
      this.g = this.a(var1);
      this.h = var2;
      this.i = var3;
      this.m = var4;
      String[] var8 = w;
      int var5 = var1.getIntProperty(var8[19], 100);
      int var6 = var1.getIntProperty(var8[26], 300000);
      int var7 = var1.getIntProperty(var8[24], 50);
      this.r = new GroupCache(var8[8], var5, var6, var7);
      this.u.set(this.a());
   }

   public void setRoleManager(RoleManager var1) {
      this.roleManager = var1;
   }

   public void setIdentityProviderFactory(IdentityProviderFactory var1) {
      this.k = var1;
   }

   public void setPasswordEnforcerManager(PasswordEnforcerManager var1) {
      this.l = var1;
   }

   public void setRbacServices(RbacServices var1) {
      this.j = var1;
   }

   @Override
   public void onApplicationEvent(ApplicationEvent var1) {
      if (var1 instanceof EntityClassEvent var2) {
         try {
            if (var2.getEntityClass() == IdentityProviderConfig.class) {
               this.b();
            }
         } catch (IllegalStateException var6) {
            throw a(var6);
         }
      } else if (var1 instanceof Updated var8) {
         Entity var3 = var8.getEntity();

         try {
            if (var3 instanceof Group) {
               this.r.invalidate(((Group)var3).getProviderId());
            }
         } catch (IllegalStateException var7) {
            throw a(var7);
         }

         try {
            if (var3 instanceof User) {
               this.r.invalidate(((User)var3).getProviderId());
            }
         } catch (IllegalStateException var5) {
            throw a(var5);
         }
      } else {
         try {
            if (var1 instanceof ReadyForMessages) {
               this.i.scheduleAtFixedRate(new q(this), 1L, TimeUnit.HOURS.toMillis(24L));
               this.i.scheduleAtFixedRate(new r(this), 1L, TimeUnit.HOURS.toMillis(24L));
            }
         } catch (IllegalStateException var4) {
            throw a(var4);
         }
      }
   }

   @Override
   public void propertyChange(PropertyChangeEvent var1) {
      String var2 = var1.getPropertyName();

      label31: {
         try {
            if (var2 == null || !var2.equals(w[14])) {
               break label31;
            }
         } catch (IllegalStateException var7) {
            throw a(var7);
         }

         String[] var5 = w;
         int var3 = this.g.getIntProperty(var5[26], 300000);
         a.config(var5[25] + var3 + var5[33]);
         this.r.a(var3);
      }

      try {
         if (var2 == null || !var2.equals(w[37])) {
            return;
         }
      } catch (IllegalStateException var6) {
         throw a(var6);
      }

      long var8 = this.a();
      String[] var9 = w;
      a.config(var9[18] + var8 + var9[33]);
      this.u.set(var8);
   }

   public User authorize(Goid var1, String var2) throws ObjectModelException {
      Set var3 = this.getAdminIdentityProviders();
      User var4 = null;

      for (IdentityProvider var6 : var3) {
         if (var6.getConfig().getGoid().equals(var1)) {
            try {
               User var7 = var6.getUserManager().findByPrimaryKey(var2);
               if (var7 != null) {
                  this.a(var7);
                  Logger var11 = a;
                  String var10001 = var6.getConfig().getName();
                  String[] var10 = w;
                  var11.fine(var10[40] + var10001);
                  var4 = var7;
               }
            } catch (AuthenticationException var9) {
               Logger var10000 = a;
               String var10002 = ExceptionUtils.getMessage(var9);
               String[] var8 = w;
               var10000.warning(var8[15] + var2 + var8[22] + var10002 + var8[33]);
            }
            break;
         }
      }

      return var4;
   }

   public AuthenticationResult authenticate(LoginCredentials var1) throws ObjectModelException, LoginException, FailAttemptsExceededException, FailInactivityPeriodExceededException, UserDisabledException {
      boolean var2 = this.g.getBooleanProperty(w[9], true);
      return this.authenticate(var1, var2);
   }

   public AuthenticationResult authenticate(LoginCredentials param1, boolean param2) throws ObjectModelException, LoginException, FailAttemptsExceededException, FailInactivityPeriodExceededException, UserDisabledException {
      // $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:
      // 000: aload 0
      // 001: invokevirtual com/l7tech/server/admin/AdminSessionManager.getAdminIdentityProviders ()Ljava/util/Set;
      // 004: astore 3
      // 005: aconst_null
      // 006: astore 4
      // 008: aconst_null
      // 009: astore 5
      // 00b: aload 1
      // 00c: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getFormat ()Lcom/l7tech/policy/assertion/credential/CredentialFormat;
      // 00f: astore 6
      // 011: aload 6
      // 013: getstatic com/l7tech/policy/assertion/credential/CredentialFormat.CLEARTEXT Lcom/l7tech/policy/assertion/credential/CredentialFormat;
      // 016: if_acmpeq 028
      // 019: aload 6
      // 01b: getstatic com/l7tech/policy/assertion/credential/CredentialFormat.CLIENTCERT Lcom/l7tech/policy/assertion/credential/CredentialFormat;
      // 01e: if_acmpne 030
      // 021: goto 028
      // 024: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 027: athrow
      // 028: bipush 1
      // 029: goto 031
      // 02c: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 02f: athrow
      // 030: bipush 0
      // 031: istore 7
      // 033: iload 7
      // 035: ifne 055
      // 038: new javax/security/auth/login/LoginException
      // 03b: dup
      // 03c: aload 6
      // 03e: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 041: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 044: bipush 11
      // 046: aaload
      // 047: swap
      // 048: 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" ]
      // 04d: invokespecial javax/security/auth/login/LoginException.<init> (Ljava/lang/String;)V
      // 050: athrow
      // 051: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 054: athrow
      // 055: bipush 0
      // 056: istore 8
      // 058: aconst_null
      // 059: astore 9
      // 05b: aload 3
      // 05c: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 061: astore 10
      // 063: aload 10
      // 065: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 06a: ifeq 213
      // 06d: aload 10
      // 06f: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 074: checkcast com/l7tech/identity/IdentityProvider
      // 077: astore 11
      // 079: iload 8
      // 07b: ifeq 085
      // 07e: goto 213
      // 081: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 084: athrow
      // 085: iload 2
      // 086: ifeq 0d1
      // 089: aload 6
      // 08b: getstatic com/l7tech/policy/assertion/credential/CredentialFormat.CLEARTEXT Lcom/l7tech/policy/assertion/credential/CredentialFormat;
      // 08e: if_acmpne 0d1
      // 091: goto 098
      // 094: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 097: athrow
      // 098: aload 11
      // 09a: aload 1
      // 09b: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String;
      // 09e: invokeinterface com/l7tech/identity/IdentityProvider.hasClientCert (Ljava/lang/String;)Z 2
      // 0a3: ifeq 0d1
      // 0a6: goto 0ad
      // 0a9: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ac: athrow
      // 0ad: bipush 1
      // 0ae: istore 8
      // 0b0: new com/l7tech/identity/BadCredentialsException
      // 0b3: dup
      // 0b4: aload 1
      // 0b5: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String;
      // 0b8: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 0bb: astore 15
      // 0bd: aload 15
      // 0bf: bipush 32
      // 0c1: aaload
      // 0c2: swap
      // 0c3: aload 15
      // 0c5: bipush 13
      // 0c7: aaload
      // 0c8: 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" ]
      // 0cd: invokespecial com/l7tech/identity/BadCredentialsException.<init> (Ljava/lang/String;)V
      // 0d0: athrow
      // 0d1: aconst_null
      // 0d2: astore 12
      // 0d4: aload 11
      // 0d6: checkcast com/l7tech/server/identity/AuthenticatingIdentityProvider
      // 0d9: aload 1
      // 0da: invokeinterface com/l7tech/server/identity/AuthenticatingIdentityProvider.findUserByCredential (Lcom/l7tech/policy/assertion/credential/LoginCredentials;)Lcom/l7tech/identity/User; 2
      // 0df: astore 12
      // 0e1: aload 12
      // 0e3: ifnonnull 0e9
      // 0e6: goto 063
      // 0e9: aload 0
      // 0ea: getfield com/l7tech/server/admin/AdminSessionManager.h Lcom/l7tech/server/logon/LogonService;
      // 0ed: aload 12
      // 0ef: invokeinterface com/l7tech/server/logon/LogonService.hookPreLoginCheck (Lcom/l7tech/identity/User;)V 2
      // 0f4: aload 11
      // 0f6: checkcast com/l7tech/server/identity/AuthenticatingIdentityProvider
      // 0f9: aload 1
      // 0fa: bipush 1
      // 0fb: invokeinterface com/l7tech/server/identity/AuthenticatingIdentityProvider.authenticate (Lcom/l7tech/policy/assertion/credential/LoginCredentials;Z)Lcom/l7tech/server/identity/AuthenticationResult; 3
      // 100: astore 13
      // 102: aload 13
      // 104: ifnonnull 10f
      // 107: aconst_null
      // 108: goto 114
      // 10b: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10e: athrow
      // 10f: aload 13
      // 111: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 114: astore 14
      // 116: aload 14
      // 118: ifnull 184
      // 11b: aload 0
      // 11c: aload 14
      // 11e: invokevirtual com/l7tech/server/admin/AdminSessionManager.a (Lcom/l7tech/identity/User;)V
      // 121: getstatic com/l7tech/server/admin/AdminSessionManager.a Ljava/util/logging/Logger;
      // 124: aload 11
      // 126: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 12b: invokevirtual com/l7tech/identity/IdentityProviderConfig.getName ()Ljava/lang/String;
      // 12e: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 131: bipush 34
      // 133: aaload
      // 134: swap
      // 135: 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" ]
      // 13a: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 13d: aload 0
      // 13e: getfield com/l7tech/server/admin/AdminSessionManager.l Lcom/l7tech/server/security/PasswordEnforcerManager;
      // 141: aload 14
      // 143: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.isPasswordExpired (Lcom/l7tech/identity/User;)Z
      // 146: ifeq 179
      // 149: goto 150
      // 14c: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14f: athrow
      // 150: aload 1
      // 151: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getClientCert ()Ljava/security/cert/X509Certificate;
      // 154: ifnonnull 179
      // 157: goto 15e
      // 15a: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 15d: athrow
      // 15e: new com/l7tech/identity/CredentialExpiredPasswordDetailsException
      // 161: dup
      // 162: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 165: bipush 2
      // 166: aaload
      // 167: aload 0
      // 168: getfield com/l7tech/server/admin/AdminSessionManager.l Lcom/l7tech/server/security/PasswordEnforcerManager;
      // 16b: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.getPasswordPolicy ()Lcom/l7tech/identity/IdentityProviderPasswordPolicy;
      // 16e: invokevirtual com/l7tech/identity/IdentityProviderPasswordPolicy.getDescription ()Ljava/lang/String;
      // 171: invokespecial com/l7tech/identity/CredentialExpiredPasswordDetailsException.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 174: athrow
      // 175: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 178: athrow
      // 179: aload 13
      // 17b: astore 4
      // 17d: aload 14
      // 17f: astore 5
      // 181: goto 213
      // 184: goto 192
      // 187: astore 13
      // 189: aload 9
      // 18b: ifnonnull 192
      // 18e: aload 12
      // 190: astore 9
      // 192: goto 210
      // 195: astore 12
      // 197: getstatic com/l7tech/server/admin/AdminSessionManager.a Ljava/util/logging/Logger;
      // 19a: aload 11
      // 19c: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1
      // 1a1: invokevirtual com/l7tech/identity/IdentityProviderConfig.getName ()Ljava/lang/String;
      // 1a4: aload 12
      // 1a6: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 1a9: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 1ac: bipush 27
      // 1ae: aaload
      // 1af: dup_x2
      // 1b0: pop
      // 1b1: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 1b4: bipush 1
      // 1b5: aaload
      // 1b6: swap
      // 1b7: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 1bc: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 1bf: aload 12
      // 1c1: ldc com/l7tech/identity/FailAttemptsExceededException
      // 1c3: invokestatic com/l7tech/util/ExceptionUtils.causedBy (Ljava/lang/Throwable;Ljava/lang/Class;)Z
      // 1c6: ifeq 1da
      // 1c9: new com/l7tech/identity/FailAttemptsExceededException
      // 1cc: dup
      // 1cd: aload 12
      // 1cf: invokevirtual com/l7tech/identity/AuthenticationException.getMessage ()Ljava/lang/String;
      // 1d2: invokespecial com/l7tech/identity/FailAttemptsExceededException.<init> (Ljava/lang/String;)V
      // 1d5: athrow
      // 1d6: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1d9: athrow
      // 1da: aload 12
      // 1dc: ldc com/l7tech/identity/FailInactivityPeriodExceededException
      // 1de: invokestatic com/l7tech/util/ExceptionUtils.causedBy (Ljava/lang/Throwable;Ljava/lang/Class;)Z
      // 1e1: ifeq 1f5
      // 1e4: new com/l7tech/identity/FailInactivityPeriodExceededException
      // 1e7: dup
      // 1e8: aload 12
      // 1ea: invokevirtual com/l7tech/identity/AuthenticationException.getMessage ()Ljava/lang/String;
      // 1ed: invokespecial com/l7tech/identity/FailInactivityPeriodExceededException.<init> (Ljava/lang/String;)V
      // 1f0: athrow
      // 1f1: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f4: athrow
      // 1f5: aload 12
      // 1f7: ldc com/l7tech/identity/UserDisabledException
      // 1f9: invokestatic com/l7tech/util/ExceptionUtils.causedBy (Ljava/lang/Throwable;Ljava/lang/Class;)Z
      // 1fc: ifeq 210
      // 1ff: new com/l7tech/identity/UserDisabledException
      // 202: dup
      // 203: aload 12
      // 205: invokevirtual com/l7tech/identity/AuthenticationException.getMessage ()Ljava/lang/String;
      // 208: invokespecial com/l7tech/identity/UserDisabledException.<init> (Ljava/lang/String;)V
      // 20b: athrow
      // 20c: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 20f: athrow
      // 210: goto 063
      // 213: aload 5
      // 215: ifnull 22c
      // 218: aload 0
      // 219: getfield com/l7tech/server/admin/AdminSessionManager.h Lcom/l7tech/server/logon/LogonService;
      // 21c: aload 5
      // 21e: aload 4
      // 220: invokeinterface com/l7tech/server/logon/LogonService.updateLogonAttempt (Lcom/l7tech/identity/User;Lcom/l7tech/server/identity/AuthenticationResult;)V 3
      // 225: goto 255
      // 228: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22b: athrow
      // 22c: aload 9
      // 22e: ifnull 244
      // 231: aload 0
      // 232: getfield com/l7tech/server/admin/AdminSessionManager.h Lcom/l7tech/server/logon/LogonService;
      // 235: aload 9
      // 237: aconst_null
      // 238: invokeinterface com/l7tech/server/logon/LogonService.updateLogonAttempt (Lcom/l7tech/identity/User;Lcom/l7tech/server/identity/AuthenticationResult;)V 3
      // 23d: goto 244
      // 240: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 243: athrow
      // 244: iload 8
      // 246: ifeq 255
      // 249: new com/l7tech/identity/LoginRequireClientCertificateException
      // 24c: dup
      // 24d: invokespecial com/l7tech/identity/LoginRequireClientCertificateException.<init> ()V
      // 250: athrow
      // 251: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 254: athrow
      // 255: aload 4
      // 257: areturn
      // try (25 -> 38): 38 com/l7tech/identity/BadCredentialsException
      // try (13 -> 21): 21 com/l7tech/identity/BadCredentialsException
      // try (10 -> 16): 17 com/l7tech/identity/BadCredentialsException
      // try (95 -> 102): 170 com/l7tech/identity/BadCredentialsException
      // try (145 -> 162): 162 com/l7tech/identity/BadCredentialsException
      // try (124 -> 148): 149 com/l7tech/identity/BadCredentialsException
      // try (122 -> 142): 143 com/l7tech/identity/BadCredentialsException
      // try (113 -> 117): 117 com/l7tech/identity/BadCredentialsException
      // try (103 -> 168): 170 com/l7tech/identity/BadCredentialsException
      // try (54 -> 56): 176 com/l7tech/identity/AuthenticationException
      // try (61 -> 72): 73 com/l7tech/identity/BadCredentialsException
      // try (59 -> 64): 65 com/l7tech/identity/BadCredentialsException
      // try (54 -> 57): 57 com/l7tech/objectmodel/ObjectModelException
      // try (59 -> 102): 176 com/l7tech/identity/AuthenticationException
      // try (103 -> 168): 176 com/l7tech/identity/AuthenticationException
      // try (169 -> 175): 176 com/l7tech/identity/AuthenticationException
      // try (177 -> 204): 204 com/l7tech/identity/BadCredentialsException
      // try (206 -> 216): 216 com/l7tech/identity/BadCredentialsException
      // try (218 -> 228): 228 com/l7tech/identity/BadCredentialsException
      // try (231 -> 239): 239 com/l7tech/identity/BadCredentialsException
      // try (241 -> 248): 249 com/l7tech/identity/BadCredentialsException
      // try (251 -> 257): 257 com/l7tech/identity/BadCredentialsException
   }

   public boolean changePassword(String var1, String var2, String var3) throws LoginException, ObjectModelException {
      Set var4 = this.getAdminIdentityProviders();
      User var5 = null;

      for (IdentityProvider var7 : var4) {
         var5 = var7.getUserManager().findByLogin(var1);
         if (var5 != null) {
            try {
               try {
                  if (var7.hasClientCert(var1)) {
                     throw new LoginException(w[36]);
                  }
                  break;
               } catch (LoginException var9) {
                  throw a(var9);
               }
            } catch (AuthenticationException var11) {
               a.log(Level.WARNING, w[42], var11);
               var5 = null;
            }
         }
      }

      try {
         if (var5 == null) {
            return false;
         }
      } catch (AuthenticationException var10) {
         throw a(var10);
      }

      return this.changePassword(var5, var2, var3);
   }

   public boolean changePassword(User var1, String var2, String var3) throws ObjectModelException {
      boolean var4 = false;
      Set var5 = this.getAdminIdentityProviders();
      IdentityProvider var6 = null;

      for (IdentityProvider var8 : var5) {
         if (var8.getConfig().getGoid().equals(var1.getProviderId())) {
            var6 = var8;
            break;
         }
      }

      if (var6 != null) {
         LoginCredentials var19 = LoginCredentials.makeLoginCredentials(
            new UsernamePasswordSecurityToken(SecurityTokenType.UNKNOWN, var1.getLogin(), var2.toCharArray()), null
         );

         try {
            AuthenticationResult var20 = ((AuthenticatingIdentityProvider)var6).authenticate(var19, true);

            User var23;
            label48: {
               try {
                  if (var20 == null) {
                     var23 = null;
                     break label48;
                  }
               } catch (AuthenticationException var17) {
                  throw a(var17);
               }

               var23 = var20.getUser();
            }

            User var9 = var23;
            if (!(var9 instanceof InternalUser)) {
               String[] var22 = w;
               throw new IllegalStateException(var22[41]);
            }

            InternalUser var10 = new InternalUser();
            InternalUser var11 = (InternalUser)var9;
            var10.copyFrom(var11);
            var10.setVersion(var11.getVersion());
            this.a(var10);
            this.l.isPasswordPolicyCompliant(var10, var3, var2);
            this.l.setUserPasswordPolicyAttributes(var10, false);
            InternalUserManager var21 = (InternalUserManager)((InternalIdentityProvider)var6).getUserManager();
            InternalUserPasswordManager var12 = var21.getUserPasswordManager();
            String var13 = var10.getHashedPassword();
            boolean var14 = var12.configureUserPasswordHashes(var10, var3);

            try {
               if (!var14) {
                  throw new IllegalStateException(w[3]);
               }
            } catch (AuthenticationException var16) {
               throw a(var16);
            }

            var10.addPasswordChange(var13);
            var21.update(var10);
            var4 = true;
         } catch (AuthenticationException var18) {
            Logger var10000 = a;
            String var10001 = var6.getConfig().getName();
            String var10002 = ExceptionUtils.getMessage(var18);
            String[] var15 = w;
            var10000.info(var15[6] + var10001 + var15[39] + var10002);
         }
      }

      return var4;
   }

   public synchronized String createSession(User var1, Object var2) {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (IllegalStateException var6) {
         throw a(var6);
      }

      byte[] var3 = new byte[20];
      p.nextBytes(var3);
      String var4 = HexUtils.encodeBase64(var3, true);

      try {
         this.o.put(var4, new b(var1, var4, var2));
         if (a.isLoggable(Level.FINE)) {
            a.log(Level.FINE, w[21], new String[]{var1.getName(), var4});
         }

         return var4;
      } catch (IllegalStateException var5) {
         throw a(var5);
      }
   }

   public synchronized Object getSessionInfo(String var1) {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (IllegalStateException var4) {
         throw a(var4);
      }

      b var2 = (b)this.o.get(var1);

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

      return var2.getSessionInfo();
   }

   public synchronized User resumeSession(String param1) throws AuthenticationException, ObjectModelException {
      // $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 10
      // 04: new java/lang/NullPointerException
      // 07: dup
      // 08: invokespecial java/lang/NullPointerException.<init> ()V
      // 0b: athrow
      // 0c: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f: athrow
      // 10: aload 0
      // 11: getfield com/l7tech/server/admin/AdminSessionManager.o Lorg/apache/commons/collections/map/LRUMap;
      // 14: aload 1
      // 15: invokevirtual org/apache/commons/collections/map/LRUMap.get (Ljava/lang/Object;)Ljava/lang/Object;
      // 18: checkcast com/l7tech/server/admin/b
      // 1b: astore 2
      // 1c: aload 2
      // 1d: ifnonnull 52
      // 20: getstatic com/l7tech/server/admin/AdminSessionManager.a Ljava/util/logging/Logger;
      // 23: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 26: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 29: bipush 23
      // 2b: aaload
      // 2c: getstatic com/l7tech/server/admin/AdminSessionManager.a Ljava/util/logging/Logger;
      // 2f: getstatic java/util/logging/Level.FINER Ljava/util/logging/Level;
      // 32: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 35: ifeq 47
      // 38: goto 3f
      // 3b: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3e: athrow
      // 3f: aload 1
      // 40: goto 4d
      // 43: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 46: athrow
      // 47: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 4a: bipush 29
      // 4c: aaload
      // 4d: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
      // 50: aconst_null
      // 51: areturn
      // 52: aload 2
      // 53: invokevirtual com/l7tech/server/admin/b.getUser ()Lcom/l7tech/identity/User;
      // 56: astore 3
      // 57: aload 0
      // 58: aload 3
      // 59: invokevirtual com/l7tech/server/admin/AdminSessionManager.a (Lcom/l7tech/identity/User;)V
      // 5c: aload 3
      // 5d: areturn
      // try (0 -> 6): 6 com/l7tech/identity/AuthenticationException
      // try (14 -> 25): 26 com/l7tech/identity/AuthenticationException
      // try (16 -> 30): 30 com/l7tech/identity/AuthenticationException
   }

   public synchronized void destroySession(String var1) {
      this.o.remove(var1);
   }

   public boolean isExpired(String var1, boolean var2) {
      boolean var3 = true;

      b var10000;
      label42: {
         try {
            if (var1 == null) {
               var10000 = null;
               break label42;
            }
         } catch (IllegalStateException var8) {
            throw a(var8);
         }

         var10000 = (b)this.o.get(var1);
      }

      b var4 = var10000;

      label46: {
         try {
            if (var4 == null) {
               return var3;
            }

            if (System.currentTimeMillis() - var4.getLastUsed() > this.u.get()) {
               break label46;
            }
         } catch (IllegalStateException var7) {
            throw a(var7);
         }

         var3 = false;

         try {
            if (var2) {
               var4.onUsed();
            }

            return var3;
         } catch (IllegalStateException var6) {
            throw a(var6);
         }
      }

      Logger var9 = a;
      String var10001 = var4.getUser().getName();
      String[] var5 = w;
      var9.info(var5[16] + var10001 + var5[17]);
      this.destroySession(var1);
      return var3;
   }

   @Override
   public Set<IdentityHeader> getGroups(User var1, boolean var2) throws FindException {
      Goid var3 = var1.getProviderId();
      Set var4 = this.getAdminIdentityProviders();
      HashSet var5 = new HashSet();

      for (IdentityProvider var7 : var4) {
         if (var7.getConfig().getGoid().equals(var3)) {
            try {
               Set var8 = this.r.getCachedValidatedGroups(var1, var7, var2);

               try {
                  if (var8 != null) {
                     var5.addAll(var8);
                  }

                  return var5;
               } catch (ValidationException var9) {
                  throw a(var9);
               }
            } catch (ValidationException var10) {
               throw new FindException(w[7], var10);
            }
         }
      }

      return Collections.emptySet();
   }

   @Override
   public Set<IdentityHeader> getGroups(@NotNull Group var1) throws FindException {
      try {
         if (var1 == null) {
            b(0);
         }
      } catch (FindException var9) {
         throw a(var9);
      }

      Goid var2 = var1.getProviderId();
      Set var3 = this.getAdminIdentityProviders();
      HashSet var4 = new HashSet();

      for (IdentityProvider var6 : var3) {
         if (var6.getConfig().getGoid().equals(var2)) {
            Set var7 = this.r.getCachedGroups(var1, var6);

            try {
               if (var7 != null) {
                  var4.addAll(var7);
               }

               return var4;
            } catch (FindException var8) {
               throw a(var8);
            }
         }
      }

      return Collections.emptySet();
   }

   public boolean isAdministrativeUser(User var1) throws FindException {
      return this.j.isAdministrativeUser(new Pair(var1.getProviderId(), var1.getId()), var1);
   }

   public static void setCertRequirementWavedChecker(Nullary<Boolean> param0) {
      // $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: ifnull 27
      // 04: getstatic com/l7tech/server/admin/AdminSessionManager.n Lcom/l7tech/util/Functions$Nullary;
      // 07: ifnull 23
      // 0a: goto 11
      // 0d: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10: athrow
      // 11: new java/lang/IllegalStateException
      // 14: dup
      // 15: getstatic com/l7tech/server/admin/AdminSessionManager.w [Ljava/lang/String;
      // 18: bipush 12
      // 1a: aaload
      // 1b: invokespecial java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
      // 1e: athrow
      // 1f: invokestatic com/l7tech/server/admin/AdminSessionManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: aload 0
      // 24: putstatic com/l7tech/server/admin/AdminSessionManager.n Lcom/l7tech/util/Functions$Nullary;
      // 27: return
      // try (0 -> 4): 5 java/lang/IllegalStateException
      // try (2 -> 14): 14 java/lang/IllegalStateException
   }

   @Override
   protected Set<IdentityProvider> getAdminIdentityProviders() {
      synchronized (this.q) {
         if (this.s == null) {
            this.b();
         }

         return this.s;
      }
   }

   private long a() {
      return this.g.getTimeUnitProperty(w[37], t);
   }

   private void a(User var1) throws AuthenticationException, FindException {
      boolean var2 = this.isAdministrativeUser(var1);

      try {
         if (!var2) {
            throw new AuthenticationException(var1.getName() + w[4]);
         }
      } catch (AuthenticationException var3) {
         throw a(var3);
      }
   }

   private void b() {
      try {
         TreeSet var1 = new TreeSet<>(b);

         for (IdentityProvider var3 : this.k.findAllIdentityProviders()) {
            IdentityProviderConfig var4 = var3.getConfig();

            try {
               if (var4.isAdminEnabled()) {
                  a.info(w[20] + var4.getName() + w[28]);
                  var1.add(var3);
               }
            } catch (Exception var7) {
               throw a(var7);
            }
         }

         synchronized (this.q) {
            this.s = Collections.unmodifiableSet(var1);
         }
      } catch (Exception var8) {
         a.log(Level.WARNING, w[38], var8);
      }
   }

   private Config a(Config var1) {
      ValidatedConfig var2 = new ValidatedConfig(var1, a);
      String[] var3 = w;
      var2.setMinimumValue(var3[10], TimeUnit.MINUTES.toMillis(1L));
      var2.setMaximumValue(var3[37], e);
      return var2;
   }

   static {
      String[] var5 = new String[44];
      int var3 = 0;
      String var2 = "%p4zurg#|1zj a0z+zx!~/qv\u0014}(z(L<&j,|(R8;x\"v4\u0002|?\u0011\u0016~*&n*a\"?<-i,a#{w\u001d\u0013l<'96{)j519-r0zy7| }fj)1x1v\":f{60je})ky=x3vfo+<o,\u007f#x<um*3'|:0j63'{4<w,`2m8!p3vfl<'o,p#l.%p4{urg#|1{j a0z+{x!~/qw&|6`/p7\u0016u r(j)\u001cw1v4i89-\u0007j-=|+g/|8!p*}fy6'95r5l.:k!3%w8;~ 3 ~09|!3)qy\u0017\u0013l<'93r*v=4m,|(??4p)v\"1\u0016\u0016m0;z,c's\u001a4z-v\u0019j7<\u007f,v\"45z: k,g?1):u,p?R8;x\"v41?:k'z\"O8&j2|4{\u000e=|+P#m-\u0005k `#q-\u0013*p>:wk`#l*<v+V>o0'`0\u0013q* i5|4k<19&a#{<;m,r*??:k(r2??:ker\"r0;9$p%z*&#e4\u0005z+!97v7j0'|(v(ky\"x3v\"?:=|&x#my=x63's+0x!jf}<0we`#kw/a?=<}e})ky j 3%z+!p#z%~-09$`fs62p+3%m<1|+g/~5&7\u001c6m0;z,c's\n0j6z)q\u001a4z-v\u000b~!\u0001p(v\u001f\u0007j-=v7z<~-<v+3 ~09|!3 p+ul6v4?~*\u0003g)<k,}!?81t,}/l-'x1z0zy&|6`/p7u\u007f*afj*0ke4\u0002a1$\u0013o=4m,}!?*0j6z)qy<w$p2v/<m<36z+<v!3a\u00196m0;z,c's\n0j6z)q\u001a4z-v\u0015v#0\t\u0003q87u,}!?9\u0007j-=|+g/|8!|!33l<'9>#;3y&|1g/q>ux!~/qy&|6`/p7uz*|-v<o9>\";\u000ba3y1l 32pyr$\u0007{4<we`#l*<v+<%p6>p 3(p-u\u007f*f({cubunh'6m0;z,c's\n0j6z)q\u001a4z-v\u000b~!\u0005k,}%v)4u\u0002a)j)&+\u0013o=4m,}!?)'p+p/o8996v5l0:wep'|109(r>?-<t 3a\u001c6m0;z,c's\n0j6z)q\u001a4z-v\u000b~!\u0001p(v\u0019\u0007j-=|+g/|8!p*}fy8<u wfp7u\u0011fy6'9$w+v7uu*t/q*\u000bzq6!96{)h7k>\u0007m> t }2??:keS\bp-\u001bl)\u007ffo8'x(v2z+u>``a?639``h:*ut0`2?7:meq#?7 u)\t!z-\u0012k*f6l\u0006\u0013l<'9b\u0002a1\u0011\u0007j-=|+g/|8!|!3)qy\u0005!m6 i8\u0016~*&n*a\"?:=x+t#?7:mec#m4<m1v\"?= |eg)?0&j0v\"?:0k1z v:4m =\u0013*p>:wk`#l*<v+V>o0'`\u001e\u0005p,9}+42?*0m0cf~=8p+36m6#p!v4l\u0002|?\u000e\u0007j-=v7z<z=uv+3 \u0005~7;v13%w8;~ 36~*&n*a\"??:kef5z+{";
      int var4 = "%p4zurg#|1zj a0z+zx!~/qv\u0014}(z(L<&j,|(R8;x\"v4\u0002|?\u0011\u0016~*&n*a\"?<-i,a#{w\u001d\u0013l<'96{)j519-r0zy7| }fj)1x1v\":f{60je})ky=x3vfo+<o,\u007f#x<um*3'|:0j63'{4<w,`2m8!p3vfl<'o,p#l.%p4{urg#|1{j a0z+{x!~/qw&|6`/p7\u0016u r(j)\u001cw1v4i89-\u0007j-=|+g/|8!p*}fy6'95r5l.:k!3%w8;~ 3 ~09|!3)qy\u0017\u0013l<'93r*v=4m,|(??4p)v\"1\u0016\u0016m0;z,c's\u001a4z-v\u0019j7<\u007f,v\"45z: k,g?1):u,p?R8;x\"v41?:k'z\"O8&j2|4{\u000e=|+P#m-\u0005k `#q-\u0013*p>:wk`#l*<v+V>o0'`0\u0013q* i5|4k<19&a#{<;m,r*??:k(r2??:ker\"r0;9$p%z*&#e4\u0005z+!97v7j0'|(v(ky\"x3v\"?:=|&x#my=x63's+0x!jf}<0we`#kw/a?=<}e})ky j 3%z+!p#z%~-09$`fs62p+3%m<1|+g/~5&7\u001c6m0;z,c's\n0j6z)q\u001a4z-v\u000b~!\u0001p(v\u001f\u0007j-=v7z<~-<v+3 ~09|!3 p+ul6v4?~*\u0003g)<k,}!?81t,}/l-'x1z0zy&|6`/p7u\u007f*afj*0ke4\u0002a1$\u0013o=4m,}!?*0j6z)qy<w$p2v/<m<36z+<v!3a\u00196m0;z,c's\n0j6z)q\u001a4z-v\u0015v#0\t\u0003q87u,}!?9\u0007j-=|+g/|8!|!33l<'9>#;3y&|1g/q>ux!~/qy&|6`/p7uz*|-v<o9>\";\u000ba3y1l 32pyr$\u0007{4<we`#l*<v+<%p6>p 3(p-u\u007f*f({cubunh'6m0;z,c's\n0j6z)q\u001a4z-v\u000b~!\u0005k,}%v)4u\u0002a)j)&+\u0013o=4m,}!?)'p+p/o8996v5l0:wep'|109(r>?-<t 3a\u001c6m0;z,c's\n0j6z)q\u001a4z-v\u000b~!\u0001p(v\u0019\u0007j-=|+g/|8!p*}fy8<u wfp7u\u0011fy6'9$w+v7uu*t/q*\u000bzq6!96{)h7k>\u0007m> t }2??:keS\bp-\u001bl)\u007ffo8'x(v2z+u>``a?639``h:*ut0`2?7:meq#?7 u)\t!z-\u0012k*f6l\u0006\u0013l<'9b\u0002a1\u0011\u0007j-=|+g/|8!|!3)qy\u0005!m6 i8\u0016~*&n*a\"?:=x+t#?7:mec#m4<m1v\"?= |eg)?0&j0v\"?:0k1z v:4m =\u0013*p>:wk`#l*<v+V>o0'`\u001e\u0005p,9}+42?*0m0cf~=8p+36m6#p!v4l\u0002|?\u000e\u0007j-=v7z<z=uv+3 \u0005~7;v13%w8;~ 36~*&n*a\"??:kef5z+{"
         .length();
      char var1 = '+';
      int var7 = -1;

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

         while (true) {
            String var9 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     w = var5;
                     a = Logger.getLogger(AdminSessionManager.class.getName());
                     b = new a();
                     c = TimeUnit.DAYS.toMillis(1L);
                     d = TimeUnit.MINUTES.toMillis(1L);
                     String[] var8 = w;
                     e = ConfigFactory.getLongProperty(var8[43], c);
                     f = ConfigFactory.getLongProperty(var8[5], d);
                     p = new SecureRandom();
                     t = TimeUnit.MINUTES.toMillis(30L);
                     return;
                  }

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

                  var2 = "\u001ep6'vx~)m'-w+g5ed=w=|{d+:$(o(q3'v<.8j%&c= (8m)fhoz>a,fw=|-g6fe<c2lj;a+}2m*\r|(g){\u0005/a";
                  var4 = "\u001ep6'vx~)m'-w+g5ed=w=|{d+:$(o(q3'v<.8j%&c= (8m)fhoz>a,fw=|-g6fe<c2lj;a+}2m*\r|(g){\u0005/a".length();
                  var1 = '*';
                  var7 = -1;
            }

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

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

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

      return var10000;
   }

   private static String b(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 -> 107;
            case 1 -> 50;
            case 2 -> 116;
            case 3 -> 120;
            case 4 -> 52;
            case 5 -> 104;
            default -> 62;
         });
      }

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