package com.l7tech.server.identity;

import com.l7tech.identity.Group;
import com.l7tech.identity.GroupMembership;
import com.l7tech.identity.Identity;
import com.l7tech.identity.PersistentGroup;
import com.l7tech.identity.PersistentUser;
import com.l7tech.identity.User;
import com.l7tech.identity.fed.VirtualGroup;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.DuplicateObjectException;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.StaleUpdateException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.EntityManager.UniqueType;
import com.l7tech.objectmodel.imp.PersistentEntityUtil;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.util.ExceptionUtils;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.HibernateException;
import org.jetbrains.annotations.Nullable;
import org.springframework.dao.DataAccessException;

public abstract class PersistentGroupManagerImpl<UT extends PersistentUser, GT extends PersistentGroup, UMT extends PersistentUserManager<UT>, GMT extends PersistentGroupManager<UT, GT>>
   extends HibernateEntityManager<GT, IdentityHeader>
   implements PersistentGroupManager<UT, GT> {
   private final String m;
   private final String n;
   private static final String o;
   private final String p;
   private final String q;
   private String r;
   protected PersistentIdentityProvider<UT, GT, UMT, GMT> identityProvider;
   private final Logger s;
   private static final String[] w;

   protected PersistentGroupManagerImpl() {
      String var10001 = this.getImpClass().getName();
      String[] var1 = w;
      this.m = var1[34] + var10001 + var1[14];
      this.n = var1[23] + this.getMembershipClass().getName() + var1[9];
      this.p = var1[4] + this.getImpClass().getName() + var1[1] + this.getMembershipClass().getName() + var1[12];
      this.q = var1[35] + this.getMembershipClass().getName() + var1[8];
      this.s = Logger.getLogger(this.getClass().getName());
   }

   public synchronized void setIdentityProvider(PersistentIdentityProvider<UT, GT, UMT, GMT> var1) {
      try {
         if (this.identityProvider != null) {
            throw new IllegalStateException(w[17]);
         }
      } catch (IllegalStateException var2) {
         throw a(var2);
      }

      this.identityProvider = var1;
   }

   private synchronized String a() {
      if (this.r == null) {
         String[] var2 = w;
         StringBuilder var1 = new StringBuilder(var2[19]);
         var1.append(((PersistentUserManager)this.identityProvider.getUserManager()).getImpClass().getName()).append(var2[18]);
         var1.append(var2[31]).append(this.getMembershipClass().getName());
         var1.append(var2[20]);
         var1.append(var2[22]);
         this.r = var1.toString();
      }

      return this.r;
   }

   public GT findByName(String var1) throws FindException {
      PersistentGroup var2 = (PersistentGroup)super.findByUniqueName(var1);

      try {
         if (var2 != null) {
            var2.setProviderId(this.identityProvider.getConfig().getGoid());
         }

         return (GT)var2;
      } catch (FindException var3) {
         throw a(var3);
      }
   }

   public GT findByPrimaryKey(String param1) throws FindException {
      // $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 17
      // 04: aload 0
      // 05: getfield com/l7tech/server/identity/PersistentGroupManagerImpl.s Ljava/util/logging/Logger;
      // 08: getstatic com/l7tech/server/identity/PersistentGroupManagerImpl.w [Ljava/lang/String;
      // 0b: bipush 15
      // 0d: aaload
      // 0e: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 11: aconst_null
      // 12: areturn
      // 13: invokestatic com/l7tech/server/identity/PersistentGroupManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16: athrow
      // 17: aload 0
      // 18: aload 0
      // 19: invokevirtual com/l7tech/server/identity/PersistentGroupManagerImpl.getImpClass ()Ljava/lang/Class;
      // 1c: aload 1
      // 1d: invokestatic com/l7tech/objectmodel/Goid.parseGoid (Ljava/lang/String;)Lcom/l7tech/objectmodel/Goid;
      // 20: invokevirtual com/l7tech/server/identity/PersistentGroupManagerImpl.findByPrimaryKey (Ljava/lang/Class;Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity;
      // 23: checkcast com/l7tech/identity/PersistentGroup
      // 26: astore 2
      // 27: aload 2
      // 28: ifnonnull 2d
      // 2b: aconst_null
      // 2c: areturn
      // 2d: aload 2
      // 2e: aload 0
      // 2f: invokevirtual com/l7tech/server/identity/PersistentGroupManagerImpl.getProviderGoid ()Lcom/l7tech/objectmodel/Goid;
      // 32: invokevirtual com/l7tech/identity/PersistentGroup.setProviderId (Lcom/l7tech/objectmodel/Goid;)V
      // 35: aload 2
      // 36: areturn
      // 37: astore 2
      // 38: new com/l7tech/objectmodel/FindException
      // 3b: dup
      // 3c: aload 1
      // 3d: getstatic com/l7tech/server/identity/PersistentGroupManagerImpl.w [Ljava/lang/String;
      // 40: bipush 26
      // 42: aaload
      // 43: swap
      // 44: 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" ]
      // 49: aload 2
      // 4a: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 4d: athrow
      // try (0 -> 9): 30 java/lang/IllegalArgumentException
      // try (0 -> 10): 10 com/l7tech/objectmodel/FindException
      // try (12 -> 23): 30 java/lang/IllegalArgumentException
      // try (24 -> 29): 30 java/lang/IllegalArgumentException
   }

   public Collection<IdentityHeader> search(String var1) throws FindException {
      try {
         return (Collection<IdentityHeader>)this.getHibernateTemplate().execute(new q(this, var1));
      } catch (HibernateException var5) {
         String var10000 = this.getInterfaceClass().getName();
         String[] var4 = w;
         String var3 = var4[2] + var10000 + var4[5];
         this.s.log(Level.SEVERE, var3, var5);
         throw new FindException(var3, var5);
      }
   }

   protected IdentityHeader newHeader(GT var1) {
      return new IdentityHeader(this.getProviderGoid(), var1.getGoid(), EntityType.GROUP, var1.getName(), var1.getDescription(), null, var1.getVersion());
   }

   protected Goid getProviderGoid() {
      return this.identityProvider.getConfig().getGoid();
   }

   @Override
   public void delete(Goid var1) throws DeleteException, FindException {
      this.findAndDelete(var1);
   }

   public void delete(GT var1) throws DeleteException {
      try {
         PersistentGroup var2 = this.cast(var1);
         this.preDelete((GT)var2);

         for (Object var5 : this.getUserHeaders((GT)var2)) {
            PersistentUser var6 = (PersistentUser)((PersistentUserManager)this.identityProvider.getUserManager()).headerToUser((IdentityHeader)var5);
            this.deleteMembership((GT)var2, (UT)var6);
         }

         this.getHibernateTemplate().delete(var2);
         this.postDelete((GT)var2);
      } catch (ObjectModelException var7) {
         throw new DeleteException(var7.getMessage(), var7);
      } catch (HibernateException var8) {
         throw new DeleteException(var8.toString(), var8);
      }
   }

   protected abstract Class getMembershipClass();

   protected void preSave(GT var1) throws SaveException {
   }

   protected void preDelete(GT var1) throws DeleteException {
   }

   protected void postDelete(GT var1) throws DeleteException {
   }

   protected void preUpdate(GT var1) throws FindException, UpdateException {
   }

   protected void postUpdate(GT var1) throws UpdateException {
   }

   protected abstract GT cast(Group var1);

   public void delete(String var1) throws DeleteException, ObjectNotFoundException {
      String[] var4 = w;
      String var2 = var4[27];

      try {
         PersistentGroup var3 = this.findByPrimaryKey(var1);

         try {
            if (var3 == null) {
               throw new ObjectNotFoundException(var4[24]);
            }
         } catch (FindException var5) {
            throw a(var5);
         }

         this.delete((GT)var3);
      } catch (FindException var6) {
         this.s.log(Level.WARNING, var6.getMessage(), var6);
         throw new ObjectNotFoundException(w[24], var6);
      }
   }

   public void deleteAll(Goid var1) throws DeleteException, ObjectNotFoundException {
      try {
         this.getHibernateTemplate().execute(new k(this, var1));
      } catch (Exception var3) {
         this.s.log(Level.SEVERE, var3.getMessage(), var3);
         throw new DeleteException(var3.getMessage(), var3);
      }

      this.postDelete(null);
   }

   public void deleteAllVirtual(Goid var1) throws DeleteException, ObjectNotFoundException {
      try {
         this.getHibernateTemplate().execute(new l(this, var1));
      } catch (Exception var3) {
         this.s.log(Level.SEVERE, var3.getMessage(), var3);
         throw new DeleteException(var3.getMessage(), var3);
      }
   }

   public String saveGroup(GT var1) throws SaveException {
      return this.save((GT)var1, null);
   }

   public String save(GT var1, Set<IdentityHeader> var2) throws SaveException {
      return this.save(null, (GT)var1, var2);
   }

   public String save(@Nullable Goid var1, GT var2, Set<IdentityHeader> var3) throws SaveException {
      try {
         Group var4;
         try {
            var4 = (Group)this.findByUniqueName(var2.getName());
         } catch (FindException var14) {
            var4 = null;
         }

         label93: {
            try {
               if (var4 != null || var1 == null) {
                  break label93;
               }
            } catch (FindException var20) {
               throw a(var20);
            }

            try {
               var4 = (Group)this.findByPrimaryKey(var1);
            } catch (FindException var13) {
               var4 = null;
            }
         }

         try {
            if (var4 != null) {
               throw new DuplicateObjectException(w[0] + var2.getName() + "'");
            }
         } catch (FindException var12) {
            throw a(var12);
         }

         PersistentGroup var5 = this.cast(var2);
         var5.setProviderId(this.identityProvider.getConfig().getGoid());
         this.preSave((GT)var5);
         if (var1 != null) {
            boolean var6 = PersistentEntityUtil.preserveId(var5);

            try {
               if (!var6) {
                  throw new SaveException(w[25] + var5.getClass().getSimpleName());
               }
            } catch (FindException var19) {
               throw a(var19);
            }

            var5.setGoid(var1);
         }

         String var22 = this.getHibernateTemplate().save(var5).toString();

         label105: {
            try {
               if (var1 != null && !var1.toString().equals(var22)) {
                  break label105;
               }
            } catch (FindException var18) {
               throw a(var18);
            }

            FindException var23;
            label62: {
               try {
                  if (var3 == null) {
                     return var22;
                  }

                  try {
                     this.setUserHeaders(var22, var3);
                     return var22;
                  } catch (FindException var15) {
                     var23 = var15;
                     break label62;
                  } catch (UpdateException var16) {
                     var7 = var16;
                  }
               } catch (DataAccessException var17) {
                  throw a(var17);
               }

               this.s.log(Level.SEVERE, var7.getMessage());
               throw new SaveException(var7.getMessage(), var7);
            }

            this.s.log(Level.SEVERE, var23.getMessage());
            throw new SaveException(var23.getMessage(), var23);
         }

         String var10002 = String.valueOf(var1);
         String var8 = var5.getClass().getSimpleName();
         String var9 = var22;
         String var10 = var10002;
         String[] var11 = w;
         throw new SaveException(var11[33] + var10 + var11[21] + var9 + var11[11] + var8);
      } catch (DataAccessException var21) {
         throw new SaveException(var21.toString(), var21);
      }
   }

   public void update(GT var1) throws UpdateException {
      this.update((GT)var1, null);
   }

   public void update(GT var1, Set<IdentityHeader> var2) throws UpdateException {
      PersistentGroup var3 = this.cast(var1);

      try {
         this.preUpdate((GT)var3);
         PersistentGroup var4 = this.findByPrimaryKey(var1.getId());

         try {
            if (var4 == null) {
               throw new FindException(w[32] + var1.getName());
            }
         } catch (FindException var8) {
            throw a(var8);
         }

         if (var4.getVersion() != var3.getVersion()) {
            String[] var6 = w;
            String var5 = var6[30];
            this.s.info(var5);
            throw new StaleUpdateException(var5);
         }

         try {
            if (!var1.getProviderId().equals(this.identityProvider.getConfig().getGoid())) {
               throw new IllegalArgumentException(w[6]);
            }
         } catch (FindException var7) {
            throw a(var7);
         }

         this.setUserHeaders(var1.getId(), var2);
         var4.copyFrom(var3);
         this.getHibernateTemplate().update(var4);
         this.postUpdate((GT)var4);
      } catch (FindException var9) {
         throw new UpdateException(w[16], var9);
      } catch (DataAccessException var10) {
         throw new UpdateException(var10.toString(), var10);
      }
   }

   public boolean isMember(User var1, GT var2) throws FindException {
      try {
         if (!this.checkProvider(var1)) {
            return false;
         }
      } catch (Exception var5) {
         throw a(var5);
      }

      try {
         return (Boolean)this.getHibernateTemplate().execute(new r(this, var1, var2));
      } catch (Exception var4) {
         throw new FindException(var4.getMessage(), var4);
      }
   }

   protected boolean checkProvider(User var1) {
      String var2 = null;
      Level var3 = null;
      if (Goid.isDefault(var1.getProviderId())) {
         String[] var4 = w;
         var2 = var4[7];
         var3 = Level.WARNING;
      } else if (!var1.getProviderId().equals(this.identityProvider.getConfig().getGoid())) {
         var2 = w[3];
         var3 = Level.FINE;
      }

      try {
         if (var2 != null) {
            this.s.log(var3, var2);
            return false;
         } else {
            return true;
         }
      } catch (IllegalStateException var5) {
         throw a(var5);
      }
   }

   public void addUsers(GT var1, Set<UT> var2) throws FindException, UpdateException {
      PersistentGroup var3 = this.cast(var1);

      try {
         for (PersistentUser var5 : var2) {
            this.getHibernateTemplate().save(this.newMembership((GT)var3, (UT)var5));
         }
      } catch (Exception var6) {
         throw new FindException(var6.getMessage(), var6);
      }
   }

   public void removeUsers(GT var1, Set<UT> var2) throws FindException, UpdateException {
      PersistentGroup var3 = this.cast(var1);

      try {
         for (PersistentUser var5 : var2) {
            this.deleteMembership((GT)var3, (UT)var5);
         }
      } catch (HibernateException var7) {
         throw new FindException(var7.getMessage(), var7);
      }

      try {
         this.postDelete(null);
      } catch (DeleteException var6) {
         throw new UpdateException(ExceptionUtils.getMessage(var6), var6);
      }
   }

   @Override
   public void deleteMembership(GT var1, UT var2) throws HibernateException {
      this.getHibernateTemplate().execute(new m(this, var2, var1));
   }

   protected abstract Predicate addMembershipPredicate(Predicate var1, CriteriaBuilder var2, Root<GroupMembership> var3, Group var4, Identity var5);

   public void addUser(UT var1, Set<GT> var2) throws FindException, UpdateException {
      PersistentUser var3 = ((PersistentUserManager)this.identityProvider.getUserManager()).cast(var1);

      try {
         for (PersistentGroup var5 : var2) {
            this.getHibernateTemplate().save(this.newMembership((GT)var5, (UT)var3));
         }
      } catch (Exception var6) {
         throw new FindException(var6.getMessage(), var6);
      }
   }

   public void removeUser(UT var1, Set<GT> var2) throws FindException, UpdateException {
      PersistentUser var3 = ((PersistentUserManager)this.identityProvider.getUserManager()).cast(var1);

      try {
         for (PersistentGroup var5 : var2) {
            this.deleteMembership((GT)var5, (UT)var3);
         }
      } catch (HibernateException var7) {
         throw new FindException(var7.getMessage(), var7);
      }

      try {
         this.postDelete(null);
      } catch (DeleteException var6) {
         throw new UpdateException(ExceptionUtils.getMessage(var6), var6);
      }
   }

   public void addUser(UT var1, GT var2) throws FindException, UpdateException {
      PersistentUser var3 = ((PersistentUserManager)this.identityProvider.getUserManager()).cast(var1);
      PersistentGroup var4 = this.cast(var2);

      try {
         this.getHibernateTemplate().save(this.newMembership((GT)var4, (UT)var3));
      } catch (HibernateException var6) {
         throw new FindException(var6.getMessage(), var6);
      }
   }

   public void removeUser(UT var1, GT var2) throws FindException, UpdateException {
      PersistentUser var3 = ((PersistentUserManager)this.identityProvider.getUserManager()).cast(var1);
      PersistentGroup var4 = this.cast(var2);

      try {
         this.deleteMembership((GT)var4, (UT)var3);
      } catch (HibernateException var7) {
         throw new FindException(var7.getMessage(), var7);
      }

      try {
         this.postDelete(null);
      } catch (DeleteException var6) {
         throw new UpdateException(ExceptionUtils.getMessage(var6), var6);
      }
   }

   public Set<IdentityHeader> getGroupHeaders(UT var1) throws FindException {
      return this.getGroupHeaders(var1.getId());
   }

   public Set<IdentityHeader> getGroupHeaders(String var1) throws FindException {
      try {
         return this.a(var1);
      } catch (HibernateException var3) {
         throw new FindException(var3.toString(), var3);
      }
   }

   public Set<IdentityHeader> getGroupHeadersForNestedGroup(String var1) throws FindException {
      return Collections.emptySet();
   }

   public void setGroupHeaders(UT var1, Set<IdentityHeader> var2) throws FindException, UpdateException {
      this.setGroupHeaders(var1.getId(), var2);
   }

   public void setGroupHeaders(String var1, Set<IdentityHeader> var2) throws FindException, UpdateException {
      try {
         if (var2 == null) {
            return;
         }
      } catch (HibernateException var11) {
         throw a(var11);
      }

      try {
         Set var3 = this.a(var2);
         Set var4 = this.a(this.a(var1));
         PersistentUser var6 = (PersistentUser)((PersistentUserManager)this.identityProvider.getUserManager()).findByPrimaryKey(var1);

         for (String var8 : var3) {
            if (!var4.contains(var8)) {
               PersistentGroup var9 = this.cast(this.findByPrimaryKey(var8));
               GroupMembership var5 = this.newMembership((GT)var9, (UT)var6);
               this.getHibernateTemplate().save(var5);
            }
         }

         for (String var13 : var4) {
            if (!var3.contains(var13)) {
               PersistentGroup var14 = this.findByPrimaryKey(var13);
               this.deleteMembership((GT)var14, (UT)var6);
            }
         }
      } catch (HibernateException var10) {
         throw new UpdateException(var10.toString(), var10);
      }
   }

   public Set<IdentityHeader> getUserHeaders(GT var1) throws FindException {
      return this.getUserHeaders(var1.getId());
   }

   public Set<IdentityHeader> getUserHeaders(String var1) throws FindException {
      try {
         return this.a(Goid.parseGoid(var1));
      } catch (HibernateException var3) {
         throw new FindException(var3.toString(), var3);
      }
   }

   private Set<IdentityHeader> a(Goid var1) throws HibernateException {
      return (Set<IdentityHeader>)this.getHibernateTemplate().execute(new s(this, var1));
   }

   private Set<IdentityHeader> a(String var1) throws HibernateException {
      return (Set<IdentityHeader>)this.getHibernateTemplate().execute(new t(this, var1));
   }

   public void setUserHeaders(GT var1, Set<IdentityHeader> var2) throws FindException, UpdateException {
      this.setUserHeaders(var1.getId(), var2);
   }

   private Set<String> a(Set<IdentityHeader> var1) {
      HashSet var2 = new HashSet();

      for (EntityHeader var4 : var1) {
         var2.add(var4.getStrId());
      }

      return var2;
   }

   public void setUserHeaders(String var1, Set<IdentityHeader> var2) throws FindException, UpdateException {
      try {
         if (var2 == null) {
            return;
         }
      } catch (HibernateException var11) {
         throw a(var11);
      }

      try {
         Set var3 = this.a(var2);
         Set var4 = this.a(this.a(Goid.parseGoid(var1)));
         PersistentGroup var5 = this.findByPrimaryKey(var1);
         PersistentUserManager var6 = (PersistentUserManager)this.identityProvider.getUserManager();

         for (String var8 : var3) {
            if (!var4.contains(var8)) {
               PersistentUser var9 = (PersistentUser)var6.findByPrimaryKey(var8);
               this.getHibernateTemplate().save(this.newMembership((GT)var5, (UT)var9));
            }
         }

         for (String var13 : var4) {
            if (!var3.contains(var13)) {
               PersistentUser var14 = (PersistentUser)var6.findByPrimaryKey(var13);
               this.deleteMembership((GT)var5, (UT)var14);
            }
         }
      } catch (HibernateException var10) {
         throw new UpdateException(var10.toString(), var10);
      }
   }

   protected Collection<Map<String, Object>> getUniqueConstraints(GT var1) {
      HashMap var2 = new HashMap();
      String[] var3 = w;
      var2.put(var3[28], var1.getProviderId());
      var2.put(var3[13], var1.getName());
      return Arrays.asList(var2);
   }

   @Override
   protected UniqueType getUniqueType() {
      return UniqueType.OTHER;
   }

   @Override
   public EntityType getEntityType() {
      return EntityType.GROUP;
   }

   static {
      String[] var5 = new String[36];
      int var3 = 0;
      String var2 = "LD\r\u0015[\u0012pwY\u0014F\u0018\u0014lvC\u0010F\u0019\u0010\"kM\u0012\u0003\u001fU`}O\u0005\u0013\b\u0010\"yBD\u0003\u0003\u001cqlE\n\u0001[\u0012pwY\u0014F\u001a\u0019p}M\u0000\u001f[\u0000q}_D\u0012\u0013\u0010\"vM\t\u0003[R\u000f4\f\t\u0003\u0016Ukv\f\u0007\n\u001a\u0006q8\u001a]^\u0016\t\tUupE\b\u0003[\u0006gy^\u0007\u000e\u0012\u001be8J\u000b\u0014[7M_\u0001\u0014[\u0002ck\f\u0005\u0013\u000f\u001dgvX\r\u0005\u001a\u0001g|\f\u0006\u001f[\u0014\"|E\u0002\u0000\u001e\u0007gvXD\u000f\u001f\u0010llE\u0010\u001f[\u0005pwZ\r\u0002\u001e\u0007\u001dkI\b\u0003\u0018\u0001\"\u007f^\u0014F\u001d\u0007mu\f\u0003\u0014\u000bUkv\f\u0007\n\u001a\u0006q8\u000b8E\n\u0015\u000f\u0014l{I\u0017H.[M\nA\u000fUwhH\u0005\u0012\u001eUc8k\u0016\t\u000e\u0005\"~^\u000b\u000b[\u0014\"|E\u0002\u0000\u001e\u0007gvXD\u0016\t\u001atqH\u0001\u00146M_\u0001\u0014[\u0002ck\f\u0005\u0013\u000f\u001dgvX\r\u0005\u001a\u0001g|\f\u0006\u001f[\u0014l8Y\n\r\u0015\u001auv\f\r\u0002\u001e\u001bvqX\u001dF\u000b\u0007mnE\u0000\u0003\tX8[\f\u0003\t\u0010\"uI\t\u0004\u001e\u0007qpE\u0014H\u0016\u0010ozI\u00163\b\u0010pQHD[[Oo}A\u0006\u0003\t q}^-\u0002[\u0014l|\f\t\u0003\u0016\u0017gj_\f\u000f\u000b[vpE\u0017!\t\u001awhe\u0000FFU8lD\r\u0015<\u0007mm\\-\u000298{,#)0\"uI\tH\u000f\u001dkkk\u0016\t\u000e\u0005RjC\u0012\u000f\u001f\u0010p_C\r\u0002[H\"\"X\f\u000f\b2pwY\u00146\t\u001atqH\u0001\u0014<\u001ak|\"8{,#)0\"nKJ\u0016\t\u001atqH\u0001\u00142\u0011\"%\f^\u0016\t\u001atqH\u0001\u00142\u0011\n6\f!\b\u000f\u001cva\u0016DF8[\f\u0003\t\u0010\"uI\tH\u000f\u001dkkk\u0016\t\u000e\u0005K|\fYF\u001c\u0007r6K\u000b\u000f\u001fUcvHD\u000b\u001e\u0018,uI\t\u0004\u001e\u0007WkI\u0016/\u001fU?8\u0016\t\u0003\u0016\u0017gjy\u0017\u0003\t<f\u0004vM\t\u0003#8{,#)0\"\u007f^\u0014H\u000b\u0007mnE\u0000\u0003\t<f8\u0011D\\\u000b\u0007mnE\u0000\u0003\t<f&~E\n\u00029\fRjE\t\u0007\t\fI}UD\u0005\u001a\u0019n}HD\u0011\u0012\u0001j8B\u0011\n\u0017UcjKJ2M\\\u0000\u0007\u000f\u0010\"{M\b\n\u001e\u0011\"wBD\u0001\t\u001awh\f\u0010\u000e\u001a\u0001\"|C\u0001\u0015[\u001bml\f\u0005\n\t\u0010c|UD\u0003\u0003\u001cql\u001fqH\u0001\b\u000f\u001cva|\u0016\t\r\u001cf}^D\u000f\bUct^\u0001\u0007\u001f\f\"kI\u0010\u00024\f\u001dkI\b\u0003\u0018\u0001\"m_\u0016F\u001d\u0007mu\f\u0011\u0015\tUkv\f\u0007\n\u001a\u0006q8*8[\f\u0003\t\u0010\"uI\t\u0004\u001e\u0007qpE\u0014H\u0016\u0010ozI\u00163\b\u0010pQHD[[\u0000qj\u0002\u0003\t\u0012\u0011\"\u00068Y\u0017\u0003\u001fU)yB\u0000F\u0016\u0010ozI\u0016\u0015\u0013\u001cr6X\f\u000f\b2pwY\u0014/\u001fU?8\u0016\u0010\u000e\u0012\u0006EjC\u0011\u00162\u0011\u0012^~++[\u0018gu\f-([6NY\u007f7F![C\u0011\n\u001f\u001b%l\f\u0002\u000f\u0015\u0011\"\u007f^\u000b\u0013\u000bUvw\f\u0006\u0003[\u0011gtI\u0010\u0003\u001f[[M\n\b\u0014\u0001\"kM\u0012\u0003[\u0014l8I\n\u0012\u0012\u0001{8[\r\u0012\u0013Uc8_\u0014\u0003\u0018\u001cdqOD/?[\"OM\u0017F\u000e\u001bcz@\u0001F\u000f\u001a\"h^\u0001\u0015\u001e\u0007t}\f\u0010\u000e\u001eUgvX\r\u0012\u0002UK\\\f\u0002\t\tUgvX\r\u0012\u0002O\" [M\nA\u000fUdqB\u0000F\u001c\u0007mm\\\u0017F\f\u001cvp\f\u0006\u0007\u001fUK\\_^F![C\u0011\n\u001f\u001b%l\f\u0002\u000f\u0015\u0011\"\u007f^\u000b\u0013\u000bUvw\f\u0006\u0003[\u0011gtI\u0010\u0003\u001f\nh^\u000b\u0010\u0012\u0011gje\u0000\u0011^~++[\u0003e8e*F89CK\u007fD\u0010nI\u0016\u0015\u0012\u001al8A\r\u0015\u0016\u0014v{D\u0014uI\t\u0004\u001e\u0007qpE\u0014F\u0012\u001b\"{@\u0005\u0015\bU([C\u0011\n\u001f\u001b%l\f\u0002\u000f\u0015\u0011\"w^\r\u0001\u0012\u001bct\f\u0012\u0003\t\u0006kwBD\t\u001dUEjC\u0011\u0016[]]^\u0016\t\tUqyZ\r\b\u001cUgvX\r\u0012\u0002UuqX\fF\u001aUqhI\u0007\u000f\u001d\u001ca8e H[!j}\f\u0017\u0007\r\u0010\"uI\u0010\u000e\u0014\u0011\"kM\u0012\u0003\u001fUuqX\fF\u001aUfqJ\u0002\u0003\t\u0010ll\f\r\u0002UUG`\\\u0001\u0005\u000f\u0010f\"\f";
      int var4 = "LD\r\u0015[\u0012pwY\u0014F\u0018\u0014lvC\u0010F\u0019\u0010\"kM\u0012\u0003\u001fU`}O\u0005\u0013\b\u0010\"yBD\u0003\u0003\u001cqlE\n\u0001[\u0012pwY\u0014F\u001a\u0019p}M\u0000\u001f[\u0000q}_D\u0012\u0013\u0010\"vM\t\u0003[R\u000f4\f\t\u0003\u0016Ukv\f\u0007\n\u001a\u0006q8\u001a]^\u0016\t\tUupE\b\u0003[\u0006gy^\u0007\u000e\u0012\u001be8J\u000b\u0014[7M_\u0001\u0014[\u0002ck\f\u0005\u0013\u000f\u001dgvX\r\u0005\u001a\u0001g|\f\u0006\u001f[\u0014\"|E\u0002\u0000\u001e\u0007gvXD\u000f\u001f\u0010llE\u0010\u001f[\u0005pwZ\r\u0002\u001e\u0007\u001dkI\b\u0003\u0018\u0001\"\u007f^\u0014F\u001d\u0007mu\f\u0003\u0014\u000bUkv\f\u0007\n\u001a\u0006q8\u000b8E\n\u0015\u000f\u0014l{I\u0017H.[M\nA\u000fUwhH\u0005\u0012\u001eUc8k\u0016\t\u000e\u0005\"~^\u000b\u000b[\u0014\"|E\u0002\u0000\u001e\u0007gvXD\u0016\t\u001atqH\u0001\u00146M_\u0001\u0014[\u0002ck\f\u0005\u0013\u000f\u001dgvX\r\u0005\u001a\u0001g|\f\u0006\u001f[\u0014l8Y\n\r\u0015\u001auv\f\r\u0002\u001e\u001bvqX\u001dF\u000b\u0007mnE\u0000\u0003\tX8[\f\u0003\t\u0010\"uI\t\u0004\u001e\u0007qpE\u0014H\u0016\u0010ozI\u00163\b\u0010pQHD[[Oo}A\u0006\u0003\t q}^-\u0002[\u0014l|\f\t\u0003\u0016\u0017gj_\f\u000f\u000b[vpE\u0017!\t\u001awhe\u0000FFU8lD\r\u0015<\u0007mm\\-\u000298{,#)0\"uI\tH\u000f\u001dkkk\u0016\t\u000e\u0005RjC\u0012\u000f\u001f\u0010p_C\r\u0002[H\"\"X\f\u000f\b2pwY\u00146\t\u001atqH\u0001\u0014<\u001ak|\"8{,#)0\"nKJ\u0016\t\u001atqH\u0001\u00142\u0011\"%\f^\u0016\t\u001atqH\u0001\u00142\u0011\n6\f!\b\u000f\u001cva\u0016DF8[\f\u0003\t\u0010\"uI\tH\u000f\u001dkkk\u0016\t\u000e\u0005K|\fYF\u001c\u0007r6K\u000b\u000f\u001fUcvHD\u000b\u001e\u0018,uI\t\u0004\u001e\u0007WkI\u0016/\u001fU?8\u0016\t\u0003\u0016\u0017gjy\u0017\u0003\t<f\u0004vM\t\u0003#8{,#)0\"\u007f^\u0014H\u000b\u0007mnE\u0000\u0003\t<f8\u0011D\\\u000b\u0007mnE\u0000\u0003\t<f&~E\n\u00029\fRjE\t\u0007\t\fI}UD\u0005\u001a\u0019n}HD\u0011\u0012\u0001j8B\u0011\n\u0017UcjKJ2M\\\u0000\u0007\u000f\u0010\"{M\b\n\u001e\u0011\"wBD\u0001\t\u001awh\f\u0010\u000e\u001a\u0001\"|C\u0001\u0015[\u001bml\f\u0005\n\t\u0010c|UD\u0003\u0003\u001cql\u001fqH\u0001\b\u000f\u001cva|\u0016\t\r\u001cf}^D\u000f\bUct^\u0001\u0007\u001f\f\"kI\u0010\u00024\f\u001dkI\b\u0003\u0018\u0001\"m_\u0016F\u001d\u0007mu\f\u0011\u0015\tUkv\f\u0007\n\u001a\u0006q8*8[\f\u0003\t\u0010\"uI\t\u0004\u001e\u0007qpE\u0014H\u0016\u0010ozI\u00163\b\u0010pQHD[[\u0000qj\u0002\u0003\t\u0012\u0011\"\u00068Y\u0017\u0003\u001fU)yB\u0000F\u0016\u0010ozI\u0016\u0015\u0013\u001cr6X\f\u000f\b2pwY\u0014/\u001fU?8\u0016\u0010\u000e\u0012\u0006EjC\u0011\u00162\u0011\u0012^~++[\u0018gu\f-([6NY\u007f7F![C\u0011\n\u001f\u001b%l\f\u0002\u000f\u0015\u0011\"\u007f^\u000b\u0013\u000bUvw\f\u0006\u0003[\u0011gtI\u0010\u0003\u001f[[M\n\b\u0014\u0001\"kM\u0012\u0003[\u0014l8I\n\u0012\u0012\u0001{8[\r\u0012\u0013Uc8_\u0014\u0003\u0018\u001cdqOD/?[\"OM\u0017F\u000e\u001bcz@\u0001F\u000f\u001a\"h^\u0001\u0015\u001e\u0007t}\f\u0010\u000e\u001eUgvX\r\u0012\u0002UK\\\f\u0002\t\tUgvX\r\u0012\u0002O\" [M\nA\u000fUdqB\u0000F\u001c\u0007mm\\\u0017F\f\u001cvp\f\u0006\u0007\u001fUK\\_^F![C\u0011\n\u001f\u001b%l\f\u0002\u000f\u0015\u0011\"\u007f^\u000b\u0013\u000bUvw\f\u0006\u0003[\u0011gtI\u0010\u0003\u001f\nh^\u000b\u0010\u0012\u0011gje\u0000\u0011^~++[\u0003e8e*F89CK\u007fD\u0010nI\u0016\u0015\u0012\u001al8A\r\u0015\u0016\u0014v{D\u0014uI\t\u0004\u001e\u0007qpE\u0014F\u0012\u001b\"{@\u0005\u0015\bU([C\u0011\n\u001f\u001b%l\f\u0002\u000f\u0015\u0011\"w^\r\u0001\u0012\u001bct\f\u0012\u0003\t\u0006kwBD\t\u001dUEjC\u0011\u0016[]]^\u0016\t\tUqyZ\r\b\u001cUgvX\r\u0012\u0002UuqX\fF\u001aUqhI\u0007\u000f\u001d\u001ca8e H[!j}\f\u0017\u0007\r\u0010\"uI\u0010\u000e\u0014\u0011\"kM\u0012\u0003\u001fUuqX\fF\u001aUfqJ\u0002\u0003\t\u0010ll\f\r\u0002UUG`\\\u0001\u0005\u000f\u0010f\"\f"
         .length();
      char var1 = 'L';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 95;
         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;
                     String var10 = VirtualGroup.class.getName();
                     String[] var8 = w;
                     o = var8[29] + var10 + var8[10];
                     return;
                  }

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

                  var2 = "%\u0005PP i\u000b\u0013wVS M5\"\u0004L=\u0019\u0005%pp c\u001c\u000e5zosf\u0010\u0013wvs m\u0015\u0002$l=";
                  var4 = "%\u0005PP i\u000b\u0013wVS M5\"\u0004L=\u0019\u0005%pp c\u001c\u000e5zosf\u0010\u0013wvs m\u0015\u0002$l=".length();
                  var1 = 18;
                  var7 = -1;
            }

            var10000 = 36;
            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] ^ 93);
      }

      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 -> 71;
            case 1 -> 115;
            case 2 -> 59;
            case 3 -> 57;
            case 4 -> 36;
            case 5 -> 42;
            default -> 93;
         });
      }

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