package com.l7tech.server.security.rbac;

import com.l7tech.gateway.common.security.rbac.EntityFolderAncestryPredicate;
import com.l7tech.gateway.common.security.rbac.FolderPredicate;
import com.l7tech.gateway.common.security.rbac.ObjectIdentityPredicate;
import com.l7tech.gateway.common.security.rbac.OperationType;
import com.l7tech.gateway.common.security.rbac.Permission;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.gateway.common.security.rbac.RoleAssignment;
import com.l7tech.gateway.common.security.rbac.RoleEntityHeader;
import com.l7tech.gateway.common.security.rbac.ScopePredicate;
import com.l7tech.gateway.common.security.rbac.SecurityZonePredicate;
import com.l7tech.gateway.common.security.rbac.Role.Tag;
import com.l7tech.identity.Group;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.Entity;
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.OrganizationHeader;
import com.l7tech.objectmodel.RuleViolationUpdateException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.imp.NamedEntityImp;
import com.l7tech.server.EntityFinder;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.server.util.PostStartupTransactionalApplicationListener;
import com.l7tech.util.Either;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Pair;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.hibernate.HibernateException;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationListener;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class RoleManagerImpl
   extends HibernateEntityManager<Role, EntityHeader>
   implements RoleManager,
   RbacServices,
   PostStartupTransactionalApplicationListener {
   private static final Logger m;
   private static final String n;
   private static final String o;
   private static final String p;
   private RbacServices q;
   private static final String r;
   private static final String s;
   private static final String t;
   private static final String u;
   private static RoleManagerIdentitySource v;
   private static final String[] w;

   public static void setIdentitySource(RoleManagerIdentitySource var0) {
      v = var0;
   }

   public Class<Role> getImpClass() {
      return Role.class;
   }

   @Override
   public Class<Role> getInterfaceClass() {
      return Role.class;
   }

   @Override
   public String getTableName() {
      return w[49];
   }

   @Transactional(readOnly = true)
   @Override
   public Collection<Role> getAssignedRoles(User var1) throws FindException {
      return this.a(var1, false, false);
   }

   @Override
   public Collection<Role> getAssignedRoles(@NotNull Group var1) throws FindException {
      try {
         if (var1 == null) {
            b(0);
         }
      } catch (FindException var6) {
         throw a(var6);
      }

      ArrayList var2 = new ArrayList<>(this.a(var1.getProviderId(), var1.getId(), false));

      for (IdentityHeader var5 : v.getGroups(var1)) {
         var2.addAll(this.a(var5.getProviderGoid(), var5.getStrId(), true));
      }

      return var2;
   }

   @Override
   public Collection<Role> getAssignedRoles(User var1, boolean var2, boolean var3) throws FindException {
      return this.a(var1, var2, var3);
   }

   @Override
   public Collection<Pair<Goid, String>> getExplicitRoleAssignments() {
      return (Collection<Pair<Goid, String>>)this.getHibernateTemplate().execute(new j(this));
   }

   private Collection<Role> a(Goid var1, String var2, boolean var3) throws FindException {
      try {
         return (Collection<Role>)this.getHibernateTemplate().execute(new k(this, var2, var1, var3));
      } catch (Exception var5) {
         throw new FindException(w[21], var5);
      }
   }

   private Collection<Role> a(User var1, boolean var2, boolean var3) throws FindException {
      Set var4 = v.getGroups(var1, var2);
      Either var5 = (Either)this.getHibernateTemplate().execute(new l(this, var1, var4, var3));
      return (Collection<Role>)var5.either(new e(this), new f(this));
   }

   private Collection<Role> a(Group var1) throws FindException {
      return (Collection<Role>)this.getHibernateTemplate().execute(new m(this, var1));
   }

   @Transactional(readOnly = true)
   @Override
   public boolean isPermittedForEntitiesOfTypes(User var1, OperationType var2, Set<EntityType> var3) throws FindException {
      return this.q.isPermittedForEntitiesOfTypes(var1, var2, var3);
   }

   @Transactional(readOnly = true)
   @Override
   public boolean isPermittedForAnyEntityOfType(User var1, OperationType var2, EntityType var3) throws FindException {
      return this.q.isPermittedForAnyEntityOfType(var1, var2, var3);
   }

   @Transactional(readOnly = true)
   @Override
   public boolean isPermittedForSomeEntityOfType(User var1, OperationType var2, EntityType var3) throws FindException {
      return this.q.isPermittedForSomeEntityOfType(var1, var2, var3);
   }

   public void update(Role param1) throws UpdateException {
      // $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: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getTag ()Lcom/l7tech/gateway/common/security/rbac/Role$Tag;
      // 04: getstatic com/l7tech/gateway/common/security/rbac/Role$Tag.ADMIN Lcom/l7tech/gateway/common/security/rbac/Role$Tag;
      // 07: if_acmpne 2f
      // 0a: aload 1
      // 0b: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getRoleAssignments ()Ljava/util/Set;
      // 0e: invokeinterface java/util/Set.isEmpty ()Z 1
      // 13: ifeq 2f
      // 16: goto 1d
      // 19: invokestatic com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1c: athrow
      // 1d: new com/l7tech/objectmodel/UpdateException
      // 20: dup
      // 21: getstatic com/l7tech/server/security/rbac/RoleManagerImpl.w [Ljava/lang/String;
      // 24: bipush 13
      // 26: aaload
      // 27: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;)V
      // 2a: athrow
      // 2b: invokestatic com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2e: athrow
      // 2f: bipush 0
      // 30: istore 2
      // 31: aload 1
      // 32: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getRoleAssignments ()Ljava/util/Set;
      // 35: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 3a: astore 3
      // 3b: aload 3
      // 3c: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 41: ifeq 5f
      // 44: aload 3
      // 45: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 4a: checkcast com/l7tech/gateway/common/security/rbac/RoleAssignment
      // 4d: astore 4
      // 4f: aload 4
      // 51: invokevirtual com/l7tech/gateway/common/security/rbac/RoleAssignment.isUnsaved ()Z
      // 54: ifeq 5c
      // 57: bipush 1
      // 58: istore 2
      // 59: goto 5f
      // 5c: goto 3b
      // 5f: iload 2
      // 60: ifeq da
      // 63: aload 0
      // 64: aload 1
      // 65: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 68: invokevirtual com/l7tech/server/security/rbac/RoleManagerImpl.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity;
      // 6b: checkcast com/l7tech/gateway/common/security/rbac/Role
      // 6e: astore 3
      // 6f: aload 3
      // 70: ifnull 7e
      // 73: aload 3
      // 74: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getRoleAssignments ()Ljava/util/Set;
      // 77: goto 81
      // 7a: invokestatic com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7d: athrow
      // 7e: invokestatic java/util/Collections.emptySet ()Ljava/util/Set;
      // 81: astore 4
      // 83: aload 1
      // 84: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getRoleAssignments ()Ljava/util/Set;
      // 87: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 8c: astore 5
      // 8e: aload 5
      // 90: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 95: ifeq c3
      // 98: aload 5
      // 9a: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 9f: checkcast com/l7tech/gateway/common/security/rbac/RoleAssignment
      // a2: astore 6
      // a4: aload 6
      // a6: invokevirtual com/l7tech/gateway/common/security/rbac/RoleAssignment.isUnsaved ()Z
      // a9: ifeq c0
      // ac: aload 6
      // ae: aload 0
      // af: aload 4
      // b1: aload 6
      // b3: invokevirtual com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/util/Set;Lcom/l7tech/gateway/common/security/rbac/RoleAssignment;)Lcom/l7tech/objectmodel/Goid;
      // b6: invokevirtual com/l7tech/gateway/common/security/rbac/RoleAssignment.setGoid (Lcom/l7tech/objectmodel/Goid;)V
      // b9: goto c0
      // bc: invokestatic com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // bf: athrow
      // c0: goto 8e
      // c3: goto da
      // c6: astore 3
      // c7: getstatic com/l7tech/server/security/rbac/RoleManagerImpl.m Ljava/util/logging/Logger;
      // ca: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // cd: getstatic com/l7tech/server/security/rbac/RoleManagerImpl.w [Ljava/lang/String;
      // d0: bipush 56
      // d2: aaload
      // d3: aload 3
      // d4: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // d7: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // da: aload 0
      // db: aload 1
      // dc: invokespecial com/l7tech/server/HibernateEntityManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V
      // df: aload 0
      // e0: invokevirtual com/l7tech/server/security/rbac/RoleManagerImpl.validateRoleAssignments ()V
      // e3: return
      // try (68 -> 77): 78 com/l7tech/objectmodel/FindException
      // try (48 -> 53): 53 com/l7tech/objectmodel/FindException
      // try (4 -> 18): 18 com/l7tech/objectmodel/FindException
      // try (0 -> 8): 9 com/l7tech/objectmodel/FindException
      // try (42 -> 81): 82 com/l7tech/objectmodel/FindException
   }

   @Transactional(readOnly = true)
   @Override
   public void validateRoleAssignments() throws UpdateException {
      try {
         v.validateRoleAssignments();
      } catch (UpdateException var2) {
         throw new RuleViolationUpdateException(w[2], var2);
      }
   }

   @Transactional(readOnly = true)
   @Override
   public boolean isPermittedForEntity(User var1, Entity var2, OperationType var3, String var4) throws FindException {
      return this.q.isPermittedForEntity(var1, var2, var3, var4);
   }

   @Transactional(readOnly = true)
   @Override
   public Role findByTag(Tag var1) throws FindException {
      try {
         if (var1 == null) {
            throw new IllegalArgumentException(w[22]);
         }
      } catch (FindException var6) {
         throw a(var6);
      }

      Role var2 = null;
      String[] var4 = w;
      List var3 = this.findByPropertyMaybeNull(var4[37], var1);

      try {
         if (var3.size() > 1) {
            throw new FindException(var4[10] + var1 + var4[8]);
         }
      } catch (FindException var5) {
         throw a(var5);
      }

      if (!var3.isEmpty()) {
         var2 = (Role)var3.iterator().next();
      }

      return var2;
   }

   @Transactional(readOnly = true)
   @Override
   public Collection<Role> findEntitySpecificRoles(EntityType var1, Goid var2) throws FindException {
      return (Collection<Role>)this.getHibernateTemplate().execute(new n(this, var1, var2));
   }

   @Override
   public void deleteEntitySpecificRoles(EntityType var1, Goid var2) throws DeleteException {
      try {
         Collection var3 = this.findEntitySpecificRoles(var1, var2);
         if (var3 != null) {
            for (Role var5 : var3) {
               Logger var10000 = m;
               String var10001 = String.valueOf(var5.getGoid());
               String var10002 = var5.getName();
               String[] var6 = w;
               var10000.info(var6[19] + var10001 + var6[0] + var10002 + ")");
               this.delete(var5);
            }

            this.a(new HashSet<>(var3), var1, var2);
         }
      } catch (FindException var7) {
         throw new DeleteException(w[3], var7);
      }
   }

   @Override
   public void deleteEntitySpecificPermissions(@NotNull EntityType var1, @NotNull String var2) throws DeleteException {
      try {
         if (var1 == null) {
            b(1);
         }
      } catch (UpdateException var13) {
         throw a(var13);
      }

      try {
         if (var2 == null) {
            b(2);
         }
      } catch (UpdateException var14) {
         throw a(var14);
      }

      for (Permission var5 : this.a(var1, var2)) {
         Role var6 = var5.getRole();
         var6.getPermissions().remove(var5);

         try {
            this.update(var6);
         } catch (UpdateException var12) {
            Logger var10000 = m;
            Level var10001 = Level.SEVERE;
            String var10002 = String.valueOf(var6.getGoid());
            String var10003 = var6.getName();
            String var8 = ExceptionUtils.getMessage(var12);
            String var9 = var10003;
            String var10 = var10002;
            String[] var11 = w;
            var10000.log(var10001, var11[45] + var10 + var11[39] + var9 + var11[52] + var8, ExceptionUtils.getDebugException(var12));
         }
      }
   }

   private void a(Set<Role> var1, EntityType var2, Goid var3) throws DeleteException {
      HashSet var4 = new HashSet();

      try {
         var4.addAll(this.a(var2, var3));
         var4.addAll(this.b(var2, var3));
         if (EntityType.FOLDER.equals(var2)) {
            var4.addAll(this.a(var3));
         }
      } catch (UpdateException var15) {
         throw a(var15);
      }

      try {
         if (EntityType.SECURITY_ZONE.equals(var2)) {
            var4.addAll(this.b(var3));
         }
      } catch (UpdateException var16) {
         throw a(var16);
      }

      HashSet var5 = new HashSet();

      for (Permission var7 : var4) {
         this.getHibernateTemplate().delete(var7);
         Role var8 = var7.getRole();

         try {
            if (!var1.contains(var8)) {
               var8.getPermissions().remove(var7);
               var5.add(var8);
            }
         } catch (UpdateException var14) {
            throw a(var14);
         }
      }

      for (Role var18 : var5) {
         try {
            Logger var20 = m;
            String var21 = String.valueOf(var18.getGoid());
            String var22 = var18.getName();
            String[] var19 = w;
            var20.info(var19[9] + var21 + var19[0] + var22 + ")");
            this.update(var18);
         } catch (UpdateException var13) {
            Logger var10000 = m;
            Level var10001 = Level.SEVERE;
            String var10002 = String.valueOf(var18.getGoid());
            String var10003 = var18.getName();
            String var9 = ExceptionUtils.getMessage(var13);
            String var10 = var10003;
            String var11 = var10002;
            String[] var12 = w;
            var10000.log(var10001, var12[42] + var11 + var12[0] + var10 + var12[41] + var9, ExceptionUtils.getDebugException(var13));
         }
      }
   }

   private Set<Permission> a(EntityType var1, Goid var2) {
      return this.a(var1, var2.toHexString());
   }

   private Set<Permission> a(EntityType var1, String var2) {
      HashSet var3 = new HashSet();
      HibernateTemplate var10000 = this.getHibernateTemplate();
      String[] var8 = w;

      for (Object var6 : var10000.findByNamedParam(t, var8[28], var2)) {
         try {
            if (!(var6 instanceof ObjectIdentityPredicate)) {
               throw new HibernateException(w[5] + var6.getClass() + w[46]);
            }
         } catch (IllegalArgumentException var10) {
            throw a(var10);
         }

         ObjectIdentityPredicate var7 = (ObjectIdentityPredicate)var6;

         try {
            if (var1.equals(var7.getPermission().getEntityType())) {
               var3.add(var7.getPermission());
            }
         } catch (IllegalArgumentException var9) {
            throw a(var9);
         }
      }

      return var3;
   }

   private Set<Permission> b(EntityType var1, Goid var2) {
      HashSet var3 = new HashSet();
      HibernateTemplate var10000 = this.getHibernateTemplate();
      String var10001 = u;
      String[] var10002 = new String[2];
      String[] var8 = w;
      var10002[0] = var8[48];
      var10002[1] = var8[6];

      for (Object var6 : var10000.findByNamedParam(var10001, var10002, new Object[]{var2.toHexString(), var1})) {
         try {
            if (!(var6 instanceof EntityFolderAncestryPredicate)) {
               throw new HibernateException(w[63] + var6.getClass() + w[59]);
            }
         } catch (IllegalArgumentException var9) {
            throw a(var9);
         }

         EntityFolderAncestryPredicate var7 = (EntityFolderAncestryPredicate)var6;
         var3.add(var7.getPermission());
      }

      return var3;
   }

   private Set<Permission> a(Goid var1) {
      HashSet var2 = new HashSet();
      HibernateTemplate var10000 = this.getHibernateTemplate();
      String[] var7 = w;

      for (Object var5 : var10000.findByNamedParam(s, var7[43], var1)) {
         try {
            if (!(var5 instanceof FolderPredicate)) {
               throw new HibernateException(w[63] + var5.getClass() + w[33]);
            }
         } catch (IllegalArgumentException var8) {
            throw a(var8);
         }

         FolderPredicate var6 = (FolderPredicate)var5;
         var2.add(var6.getPermission());
      }

      return var2;
   }

   private Set<Permission> b(Goid var1) {
      HashSet var2 = new HashSet();
      HibernateTemplate var10000 = this.getHibernateTemplate();
      String[] var7 = w;

      for (Object var5 : var10000.findByNamedParam(r, var7[40], var1)) {
         try {
            if (!(var5 instanceof ScopePredicate)) {
               throw new HibernateException(w[63] + var5.getClass() + w[31]);
            }
         } catch (IllegalArgumentException var8) {
            throw a(var8);
         }

         ScopePredicate var6 = (ScopePredicate)var5;
         var2.add(var6.getPermission());
      }

      return var2;
   }

   @Override
   public void renameEntitySpecificRoles(EntityType var1, NamedEntityImp var2, Pattern var3) throws FindException, UpdateException {
      Collection var4 = this.findEntitySpecificRoles(var1, var2.getGoid());

      try {
         if (var4 == null) {
            m.warning(MessageFormat.format(w[64], var2.getName(), var1.getName(), var2.getGoid()));
            return;
         }
      } catch (FindException var12) {
         throw a(var12);
      }

      for (Role var6 : var4) {
         String var7 = var6.getName();
         Matcher var8 = var3.matcher(var7);
         String var10001 = var2.getName();
         String[] var10 = w;
         String var9 = var8.replaceAll(var10001.replace("\\", var10[26]).replace("$", var10[58]));

         try {
            if (!var9.equals(var7)) {
               m.info(MessageFormat.format(var10[14], var6.getName(), var9));
               var6.setName(var9);
               this.update(var6);
            }
         } catch (FindException var11) {
            throw a(var11);
         }
      }
   }

   @Transactional(readOnly = true)
   private Goid a(Set<RoleAssignment> var1, RoleAssignment var2) {
      Goid var3 = RoleAssignment.DEFAULT_GOID;

      for (RoleAssignment var5 : var1) {
         try {
            if (!var5.getProviderId().equals(var2.getProviderId()) || !var5.getIdentityId().equals(var2.getIdentityId())) {
               continue;
            }
         } catch (IllegalArgumentException var6) {
            throw a(var6);
         }

         var3 = var5.getGoid();
         break;
      }

      return var3;
   }

   @Transactional(readOnly = true)
   @Override
   public <T extends OrganizationHeader> Iterable<T> filterPermittedHeaders(User var1, OperationType var2, Iterable<T> var3, EntityFinder var4) throws FindException {
      return this.q.filterPermittedHeaders(var1, var2, var3, var4);
   }

   @Override
   public boolean isAdministrativeUser(@NotNull Pair<Goid, String> var1, @NotNull User var2) throws FindException {
      try {
         if (var1 == null) {
            b(3);
         }
      } catch (FindException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            b(4);
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      return this.q.isAdministrativeUser(var1, var2);
   }

   @Override
   public Collection<Role> getAssignedRoles(@NotNull Pair<Goid, String> var1, @NotNull User var2) throws FindException {
      try {
         if (var1 == null) {
            b(5);
         }
      } catch (FindException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            b(6);
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      return this.q.getAssignedRoles(var1, var2);
   }

   @Override
   public void deleteRoleAssignmentsForUser(User var1) throws DeleteException {
      try {
         for (Role var4 : this.getAssignedRoles(var1, true, false)) {
            var4.removeAssignedUser(var1);
            this.update(var4);
         }
      } catch (FindException var6) {
         Logger var10000 = m;
         Level var10001 = Level.INFO;
         String var10002 = var1.getLogin();
         String var10003 = String.valueOf(var1.getProviderId());
         String[] var8 = w;
         var10000.log(var10001, var8[30] + var10002 + var8[18] + var10003);
         throw new DeleteException(var8[51] + var1.getLogin() + "'", var6.getCause());
      } catch (UpdateException var7) {
         String[] var5 = w;
         m.log(Level.INFO, var5[29]);
         throw new DeleteException(var5[47] + var1.getLogin() + "'", var7.getCause());
      }
   }

   @Override
   public void deleteRoleAssignmentsForGroup(Group var1) throws DeleteException {
      try {
         for (Role var4 : this.a(var1)) {
            var4.removeAssignedGroup(var1);
            this.update(var4);
         }
      } catch (FindException var6) {
         Logger var10000 = m;
         Level var10001 = Level.INFO;
         String var10002 = var1.getName();
         String var10003 = String.valueOf(var1.getProviderId());
         String[] var8 = w;
         var10000.log(var10001, var8[54] + var10002 + var8[24] + var10003);
         throw new DeleteException(var8[44] + var1.getName() + "'", var6.getCause());
      } catch (UpdateException var7) {
         String[] var5 = w;
         m.log(Level.INFO, var5[20]);
         throw new DeleteException(var5[16] + var1.getName() + "'", var7.getCause());
      }
   }

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

   protected void initDao() throws Exception {
      try {
         super.initDao();
         if (this.q == null) {
            throw new IllegalStateException(w[62]);
         }
      } catch (Exception var1) {
         throw a(var1);
      }
   }

   @NotNull
   @Override
   public ApplicationListener getListener() {
      return new g(this);
   }

   protected EntityHeader newHeader(Role var1) {
      return new RoleEntityHeader(
         var1.getGoid(), var1.getName(), var1.getDescription(), var1.getVersion(), var1.isUserCreated(), var1.getEntityGoid(), var1.getEntityType()
      );
   }

   protected void initializeLazilyLoaded(Role var1) {
      this.a(var1);
   }

   private void a(Role param1) {
      // $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: ifnull 23
      // 04: aload 1
      // 05: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getPermissions ()Ljava/util/Set;
      // 08: invokestatic org/hibernate/Hibernate.isInitialized (Ljava/lang/Object;)Z
      // 0b: ifne 23
      // 0e: goto 15
      // 11: invokestatic com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: aload 1
      // 16: invokevirtual com/l7tech/gateway/common/security/rbac/Role.getPermissions ()Ljava/util/Set;
      // 19: invokestatic org/hibernate/Hibernate.initialize (Ljava/lang/Object;)V
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/server/security/rbac/RoleManagerImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: return
      // try (0 -> 6): 7 java/lang/IllegalArgumentException
      // try (2 -> 12): 13 java/lang/IllegalArgumentException
   }

   static {
      String[] var5 = new String[65];
      int var3 = 0;
      String var2 = "Hu!\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b!\u00019\\\u00185w-\u0004<\u000f\u0002{Z))\\\u001d>6=\u001c}\u0013\u001f>w+\u0006<\u001e\u001d>3n=.\u0019\u0003{ '\u001c5\\\u001f4w+\u0010-\u0015\u0003\"w#\u001d.\bQ:;9\t$\u000fQ92n\t.\u000f\u0018<9+\f}\b\u001e{#&\r}=\u00156> \u0001.\b\u0003:#!\u001a}\u000e\u001e72#+2\t\u001d?9i\u001c}\u001a\u001853n:2\u0010\u0014(w(\u0007/\\\u00053>=H\u0018\u0012\u00052#70H*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+7;\u0013\u001d?2<F;\u0013\u001d?2<F:\u0013\u0018?wsHg\u001b\u001e23$/2\bQ.9+\u0010-\u0019\u0012/2*H/\u0019\u0005.% H+\u001d\u001d.2n\u001c$\f\u0014{8(H\n\r3\b\u0018/.\u001a\u0011-\u0019pH*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+78\u0012\u00052#7\u000e2\u0010\u0015>%`\r3\b\u0018/.\u0007\f}AQa2 \u001c4\b\b\u00123n\t3\u0018Q)5/\u000b\u0002\f\u0003>3'\u000b<\b\u0014\u00042 \u001c4\b\b=8\"\f8\u000e_>9:\u0001)\u0005%\"'+H`\\K>9:\u0001)\u0005%\"'+\u0002Os):8\u0011\u001e-> \u000f}\u0013\u0013(8\"\r)\u0019Q+2<\u00054\u000f\u000228 \u001b}\u001a\u00034:n:2\u0010\u0014{t'.2\t\u001f?w#\u001d1\b\u0018+;+H0\u001d\u00058?'\u0006:\\\u00034;+\u001b}\u001a\u001e)w:\t:\\V=H*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+7.\u0019\u0012.%'\u001c$#\u000b49+F/\u0019\u0000.><\r9&\u001e52`\u000f2\u0015\u0015{jnR:\u0013\u0018?>)/\u001b\u000462 \u001c}\u001a\u001e)w\u000e&2\b?.;\"H-\u001d\u0003::+\u001c8\u000eQ|r=O}\u0013\u0017{r=Fx\u000fQ6\"=\u001c}\u0012\u001e/w,\r}\u0012\u00047;Z))\\\u001d>6=\u001c}\u0013\u001f>w+\u0006<\u001e\u001d>3n=.\u0019\u0003{ '\u001c5\\\u001f4w+\u0010-\u0015\u0003\"w#\u001d.\bQ:;9\t$\u000fQ92n\t.\u000f\u0018<9+\f}\b\u001e{#&\r}=\u00156> \u0001.\b\u0003:#!\u001a}\u000e\u001e72,=-\u0018\u0010/> \u000f}[V g3Oz\\#4;+H*\u0015\u00053w \r*\\\u001f::+R}[V f3Oz$\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b(\u00071\u0018\u0014)w'\u0006}\u001f\u001d:$=H,.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\u001b\u00034\">Hz\u0010\u000f8\b0($'\u000f3\u0019\u0015\t8\"\r.\u000fO}\u001a\u001e)w>\u001a2\n\u0018?2<H\u0018,8\u0010\u0014/> \u000f}\u0013\u0013(8\"\r)\u0019Q\t8\"\r}_1.<\u0015\u001d>3n\u001c2\\\u0004+3/\u001c8\\\u00034;+H;\u0013\u0003{6=\u001b4\u001b\u001f>3n\u001a2\u0010\u0014(w*\r1\u0019\u000528  -/\u000e\u001e)w<\r)\u000e\u0018>!'\u0006:\\\u00034;+\u001b}\u001a\u001e)w)\u001a2\t\u0001\u0014\u001c<\u001bQ6\"=\u001c}\u0012\u001e/w,\r}\u0012\u00047;\n\u00019\u0019\u001f/>:\u0011\u0014\u0018\u000fO}\u001a\u001e)w>\u001a2\n\u0018?2<H*\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b+\u0006)\u0015\u0005\"1!\u00049\u0019\u0003{> H>\u0010\u0010($n\u00024\u0001\u0005\u000f/\u0013\u0004+\u000e\u001c<\u000e\u0016>#\u000b\u0006)\u0015\u0005\"\u001e*1.<\u0015\u001d>3n\u001c2\\\u0004+3/\u001c8\\\u00034;+H;\u0013\u0003{6=\u001b4\u001b\u001f>3n\u001a2\u0010\u0014(w*\r1\u0019\u000528 (.<\u0015\u001d>3n\u001c2\\\u001729*H<\u000f\u000220 \r9\\\u00034;+\u001b}\u001a\u001e)w;\u001b8\u000eQ|5H*\u0014\u001872n\u000e4\u0012\u001529)H;\u0013\u001d?2<H-\u000e\u0014?>-\t)\u0019\u0002{57H.\u0019\u0012.%'\u001c$\\\u000b49+H2\u0015\u0015\n\u0018/\u0013\u000723+\u001a\u0014\u0018.H*\u0014\u001872n\u000e4\u0012\u001529)H;\u0013\u001d?2<H-\u000e\u0014?>-\t)\u0019\u0002{57H;\u0013\u001d?2<H2\u0015\u0015\b\r3\b\u0018/.\u0007\f\n\r3\b\u0018/.\u001a\u0011-\u0019/\u000b2\u0011^7`:\r>\u0014^(2<\u001e8\u000e^(2-\u001d/\u0015\u0005\"x<\n<\u001f^\t8\"\r\u0010\u001d\u001f:0+\u001a\u0014\u0011\u00017\u0003\u001c<\u001b+\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b=\r>\t\u00032#77'\u0013\u001f>w'\u0006}\u001f\u001d:$=H\u0002Hu\u0004\u000f2\u0015\u0015\u0003Ag\\1=3\u001d\u001372n\u001c2\\\u0003>:!\u001e8\\\u001e9$!\u00048\b\u0014{'+\u001a0\u0015\u0002(>!\u0006.\\\u0017)8#H\u000f\u0013\u001d>wm\u0004\u000f2\u0015\u0015,.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\u001b\u00034\">Hz1=3\u001d\u001372n\u001c2\\\u0003>:!\u001e8\\\u001e9$!\u00048\b\u0014{'+\u001a0\u0015\u0002(>!\u0006.\\\u0017)8#H\u000f\u0013\u001d>wm6H*\u0014\u001872n\u000e4\u0012\u001529)H2\u001e\u001b>4:H4\u0018\u00145#'\u001c$\\\u0001)2*\u0001>\u001d\u0005>$n\n$\\\u00145#'\u001c$\\\u0018?+.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\t\u0002>%nO\b\r3\b\u0018/.\u0007\f\t\u001a?\u001d\u0012\u0004%!\u00048\u0011\u0018/\u0013\u000723+\u001a\u001c\u0012\u0015\u000e$+\u001a\u0014\u0018+.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\t\u0002>%nO\u0003Ag\\:H*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+72\u0015\u0015u#/\u001a:\u0019\u0005\u001e9:\u0001)\u00058?wsHg\b\u0010)0+\u001c\u0018\u0012\u00052#7!9).<\u0015\u001d>3n\u001c2\\\u001729*H<\u000f\u000220 \r9\\\u00034;+\u001b}\u001a\u001e)w)\u001a2\t\u0001{p\u0004\u001d.\u0019\u0003,.4\u0012\u0015{2<\u001a2\u000eQ,?+\u0006}\u0011\u0014)0'\u0006:\\\u0010($'\u000f3\u0011\u00145#=H;\u0013\u0003{%!\u00048\u0014\u0001.=\u00156> \u0001.\b\u0003:#'\u001e8)\u0002>%\u00024yHH*\u0014\u001872n\u000e4\u0012\u001529)H8\u0012\u00052#7H;\u0013\u001d?2<H<\u0012\u0012>$:\u001a$\\\u0001)2*\u0001>\u001d\u0005>$n\n$\\\u00145#'\u001c$\\\u00164>*H<\u0012\u0015{#7\u00188\u001f\f8\u0010\u0014/2\u000b\u0006)\u0015\u0005\"\u0004>\r>\u0015\u001724\u001e\r/\u0011\u0018($'\u00073\u000f\u0005\r)\u0005\u0001>!\u001a?\u001d\u0012\b2<\u001e4\u001f\u0014(w-\u00070\f\u001e52 \u001c}\u0015\u0002{:'\u001b.\u0015\u001f<";
      int var4 = "Hu!\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b!\u00019\\\u00185w-\u0004<\u000f\u0002{Z))\\\u001d>6=\u001c}\u0013\u001f>w+\u0006<\u001e\u001d>3n=.\u0019\u0003{ '\u001c5\\\u001f4w+\u0010-\u0015\u0003\"w#\u001d.\bQ:;9\t$\u000fQ92n\t.\u000f\u0018<9+\f}\b\u001e{#&\r}=\u00156> \u0001.\b\u0003:#!\u001a}\u000e\u001e72#+2\t\u001d?9i\u001c}\u001a\u001853n:2\u0010\u0014(w(\u0007/\\\u00053>=H\u0018\u0012\u00052#70H*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+7;\u0013\u001d?2<F;\u0013\u001d?2<F:\u0013\u0018?wsHg\u001b\u001e23$/2\bQ.9+\u0010-\u0019\u0012/2*H/\u0019\u0005.% H+\u001d\u001d.2n\u001c$\f\u0014{8(H\n\r3\b\u0018/.\u001a\u0011-\u0019pH*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+78\u0012\u00052#7\u000e2\u0010\u0015>%`\r3\b\u0018/.\u0007\f}AQa2 \u001c4\b\b\u00123n\t3\u0018Q)5/\u000b\u0002\f\u0003>3'\u000b<\b\u0014\u00042 \u001c4\b\b=8\"\f8\u000e_>9:\u0001)\u0005%\"'+H`\\K>9:\u0001)\u0005%\"'+\u0002Os):8\u0011\u001e-> \u000f}\u0013\u0013(8\"\r)\u0019Q+2<\u00054\u000f\u000228 \u001b}\u001a\u00034:n:2\u0010\u0014{t'.2\t\u001f?w#\u001d1\b\u0018+;+H0\u001d\u00058?'\u0006:\\\u00034;+\u001b}\u001a\u001e)w:\t:\\V=H*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+7.\u0019\u0012.%'\u001c$#\u000b49+F/\u0019\u0000.><\r9&\u001e52`\u000f2\u0015\u0015{jnR:\u0013\u0018?>)/\u001b\u000462 \u001c}\u001a\u001e)w\u000e&2\b?.;\"H-\u001d\u0003::+\u001c8\u000eQ|r=O}\u0013\u0017{r=Fx\u000fQ6\"=\u001c}\u0012\u001e/w,\r}\u0012\u00047;Z))\\\u001d>6=\u001c}\u0013\u001f>w+\u0006<\u001e\u001d>3n=.\u0019\u0003{ '\u001c5\\\u001f4w+\u0010-\u0015\u0003\"w#\u001d.\bQ:;9\t$\u000fQ92n\t.\u000f\u0018<9+\f}\b\u001e{#&\r}=\u00156> \u0001.\b\u0003:#!\u001a}\u000e\u001e72,=-\u0018\u0010/> \u000f}[V g3Oz\\#4;+H*\u0015\u00053w \r*\\\u001f::+R}[V f3Oz$\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b(\u00071\u0018\u0014)w'\u0006}\u001f\u001d:$=H,.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\u001b\u00034\">Hz\u0010\u000f8\b0($'\u000f3\u0019\u0015\t8\"\r.\u000fO}\u001a\u001e)w>\u001a2\n\u0018?2<H\u0018,8\u0010\u0014/> \u000f}\u0013\u0013(8\"\r)\u0019Q\t8\"\r}_1.<\u0015\u001d>3n\u001c2\\\u0004+3/\u001c8\\\u00034;+H;\u0013\u0003{6=\u001b4\u001b\u001f>3n\u001a2\u0010\u0014(w*\r1\u0019\u000528  -/\u000e\u001e)w<\r)\u000e\u0018>!'\u0006:\\\u00034;+\u001b}\u001a\u001e)w)\u001a2\t\u0001\u0014\u001c<\u001bQ6\"=\u001c}\u0012\u001e/w,\r}\u0012\u00047;\n\u00019\u0019\u001f/>:\u0011\u0014\u0018\u000fO}\u001a\u001e)w>\u001a2\n\u0018?2<H*\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b+\u0006)\u0015\u0005\"1!\u00049\u0019\u0003{> H>\u0010\u0010($n\u00024\u0001\u0005\u000f/\u0013\u0004+\u000e\u001c<\u000e\u0016>#\u000b\u0006)\u0015\u0005\"\u001e*1.<\u0015\u001d>3n\u001c2\\\u0004+3/\u001c8\\\u00034;+H;\u0013\u0003{6=\u001b4\u001b\u001f>3n\u001a2\u0010\u0014(w*\r1\u0019\u000528 (.<\u0015\u001d>3n\u001c2\\\u001729*H<\u000f\u000220 \r9\\\u00034;+\u001b}\u001a\u001e)w;\u001b8\u000eQ|5H*\u0014\u001872n\u000e4\u0012\u001529)H;\u0013\u001d?2<H-\u000e\u0014?>-\t)\u0019\u0002{57H.\u0019\u0012.%'\u001c$\\\u000b49+H2\u0015\u0015\n\u0018/\u0013\u000723+\u001a\u0014\u0018.H*\u0014\u001872n\u000e4\u0012\u001529)H;\u0013\u001d?2<H-\u000e\u0014?>-\t)\u0019\u0002{57H;\u0013\u001d?2<H2\u0015\u0015\b\r3\b\u0018/.\u0007\f\n\r3\b\u0018/.\u001a\u0011-\u0019/\u000b2\u0011^7`:\r>\u0014^(2<\u001e8\u000e^(2-\u001d/\u0015\u0005\"x<\n<\u001f^\t8\"\r\u0010\u001d\u001f:0+\u001a\u0014\u0011\u00017\u0003\u001c<\u001b+\u000e/\u0013\u001c{%,\t>#\u0001)2*\u0001>\u001d\u0005>\b=\r>\t\u00032#77'\u0013\u001f>w'\u0006}\u001f\u001d:$=H\u0002Hu\u0004\u000f2\u0015\u0015\u0003Ag\\1=3\u001d\u001372n\u001c2\\\u0003>:!\u001e8\\\u001e9$!\u00048\b\u0014{'+\u001a0\u0015\u0002(>!\u0006.\\\u0017)8#H\u000f\u0013\u001d>wm\u0004\u000f2\u0015\u0015,.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\u001b\u00034\">Hz1=3\u001d\u001372n\u001c2\\\u0003>:!\u001e8\\\u001e9$!\u00048\b\u0014{'+\u001a0\u0015\u0002(>!\u0006.\\\u0017)8#H\u000f\u0013\u001d>wm6H*\u0014\u001872n\u000e4\u0012\u001529)H2\u001e\u001b>4:H4\u0018\u00145#'\u001c$\\\u0001)2*\u0001>\u001d\u0005>$n\n$\\\u00145#'\u001c$\\\u0018?+.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\t\u0002>%nO\b\r3\b\u0018/.\u0007\f\t\u001a?\u001d\u0012\u0004%!\u00048\u0011\u0018/\u0013\u000723+\u001a\u001c\u0012\u0015\u000e$+\u001a\u0014\u0018+.<\u0015\u001d>3n\u001c2\\\u0015>;+\u001c8\\\u00034;+H<\u000f\u000220 \u00058\u0012\u0005{1!\u001a}\t\u0002>%nO\u0003Ag\\:H*\u0014\u0014)2n\u001a?\u001d\u0012\u0004'<\r9\u0015\u0012:#+72\u0015\u0015u#/\u001a:\u0019\u0005\u001e9:\u0001)\u00058?wsHg\b\u0010)0+\u001c\u0018\u0012\u00052#7!9).<\u0015\u001d>3n\u001c2\\\u001729*H<\u000f\u000220 \r9\\\u00034;+\u001b}\u001a\u001e)w)\u001a2\t\u0001{p\u0004\u001d.\u0019\u0003,.4\u0012\u0015{2<\u001a2\u000eQ,?+\u0006}\u0011\u0014)0'\u0006:\\\u0010($'\u000f3\u0011\u00145#=H;\u0013\u0003{%!\u00048\u0014\u0001.=\u00156> \u0001.\b\u0003:#'\u001e8)\u0002>%\u00024yHH*\u0014\u001872n\u000e4\u0012\u001529)H8\u0012\u00052#7H;\u0013\u001d?2<H<\u0012\u0012>$:\u001a$\\\u0001)2*\u0001>\u001d\u0005>$n\n$\\\u00145#'\u001c$\\\u00164>*H<\u0012\u0015{#7\u00188\u001f\f8\u0010\u0014/2\u000b\u0006)\u0015\u0005\"\u0004>\r>\u0015\u001724\u001e\r/\u0011\u0018($'\u00073\u000f\u0005\r)\u0005\u0001>!\u001a?\u001d\u0012\b2<\u001e4\u001f\u0014(w-\u00070\f\u001e52 \u001c}\u0015\u0002{:'\u001b.\u0015\u001f<"
         .length();
      char var1 = 2;
      int var7 = -1;

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

         while (true) {
            String var9 = b(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     w = var5;
                     String[] var10 = w;
                     n = w[23];
                     o = var10[32];
                     p = var10[35];
                     m = Logger.getLogger(RoleManagerImpl.class.getName());
                     String var11 = SecurityZonePredicate.class.getName();
                     String[] var8 = w;
                     r = var8[38] + var11 + var8[11];
                     s = var8[15] + FolderPredicate.class.getName() + var8[4];
                     t = var8[1] + ObjectIdentityPredicate.class.getName() + var8[53];
                     u = var8[25] + EntityFolderAncestryPredicate.class.getName() + var8[7];
                     v = new d();
                     return;
                  }

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

                  var2 = "/2\bQ.9+\u0010-\u0019\u0012/2*H/\u0019\u0005.% H+\u001d\u001d.2n\u001c$\f\u0014{8(H8&2\\\u00145#'\u001c$Q\u0002+2-\u0001;\u0015\u0012{%!\u00048\\\u0006:$n\u000e2\t\u001f?w(\u0007/\\\nk*nOz\u0007@&piHu_\ni*g";
                  var4 = "/2\bQ.9+\u0010-\u0019\u0012/2*H/\u0019\u0005.% H+\u001d\u001d.2n\u001c$\f\u0014{8(H8&2\\\u00145#'\u001c$Q\u0002+2-\u0001;\u0015\u0012{%!\u00048\\\u0006:$n\u000e2\t\u001f?w(\u0007/\\\nk*nOz\u0007@&piHu_\ni*g"
                     .length();
                  var1 = '$';
                  var7 = -1;
            }

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

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

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

      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 -> 110;
            case 1 -> 91;
            case 2 -> 122;
            case 3 -> 119;
            case 4 -> 93;
            case 5 -> 81;
            default -> 72;
         });
      }

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