package com.l7tech.policy.assertion.ext;

import java.io.ObjectStreamException;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

public class Category implements Serializable {
   public static final Category ACCESS_CONTROL;
   public static final Category MESSAGE;
   public static final Category UNFILLED;
   public static final Category THREAT_PROT;
   public static final Category AUDIT_ALERT;
   public static final Category TRANSPORT_SEC;
   public static final Category XML_SEC;
   public static final Category MSG_VAL_XSLT;
   public static final Category ROUTING;
   public static final Category AVAILABILITY;
   public static final Category LOGIC;
   public static final Category CUSTOM_ASSERTIONS;
   private final int myKey;
   private final String myName;
   static final long serialVersionUID = 6534895019625872949L;
   private static final Category[] VALUES;

   private Category(int var1, String var2) {
      this.myKey = var1;
      this.myName = var2;
   }

   public static Category[] getCategories() {
      return VALUES;
   }

   public static Category asCategory(String var0) {
      if (var0 == null) {
         return null;
      }

      var0 = var0.toLowerCase();

      for (int var1 = 0; var1 < VALUES.length; var1++) {
         Category var2 = VALUES[var1];
         String var3 = var2.myName.toLowerCase();
         if (var3.equals(var0)) {
            return var2;
         }
      }

      return null;
   }

   public static Set<Category> asCategorySet(String var0) {
      HashSet var1 = new HashSet();
      if (var0 != null) {
         String[] var2 = var0.toLowerCase().split(",");

         for (String var6 : var2) {
            Category var7 = asCategory(var6.trim());
            if (var7 != null) {
               var1.add(var7);
            }
         }
      }

      return var1;
   }

   @Override
   public String toString() {
      return this.myName;
   }

   private Object readResolve() throws ObjectStreamException {
      return VALUES[this.myKey];
   }

   @Override
   public boolean equals(Object var1) {
      if (this == var1) {
         return true;
      } else if (var1 != null && this.getClass() == var1.getClass()) {
         Category var2 = (Category)var1;
         return this.myKey == var2.myKey;
      } else {
         return false;
      }
   }

   @Override
   public int hashCode() {
      return this.myKey;
   }

   static {
      String[] var0 = new String[12];
      int var4 = 0;
      String var3 = "\u0010!\u0002\u00163\u0000V\u000f+\u0004\u0011;\tT\b\b*\u0017\f>\u000bV9\u0013\u000e!\u0003\u0013;\u0004V\u001c2\u0010\f>\u0006Q4(\u0018\u0011+\u0010\t,\u0003\u00003\u0013c/+\u0005\u00001\u0013Z2*\u0015\u0011+\u0016\u0002;\tT\u001c1\u0015\f&\u000e]:\u0005\u001d\u0000 \u0013@\u000b\u0005\t=67\u0004F/-\u0005\u001c\u000b\r+\u001d\f1\u001e\u007f2#\u0018\u0006\u0010\u001e1\u0002\u0011=\nr.7\u0014\u0017&\u000e\\37\u0007\u0010!\u0002\u00163\u0000V\u001f\u0010!\u0002\u00163\u0000V\u000b%\u001d\f6\u0006G4+\u001f1 \u0006].\"\u001e\u0017?\u0006G4+\u001f";
      int var5 = "\u0010!\u0002\u00163\u0000V\u000f+\u0004\u0011;\tT\b\b*\u0017\f>\u000bV9\u0013\u000e!\u0003\u0013;\u0004V\u001c2\u0010\f>\u0006Q4(\u0018\u0011+\u0010\t,\u0003\u00003\u0013c/+\u0005\u00001\u0013Z2*\u0015\u0011+\u0016\u0002;\tT\u001c1\u0015\f&\u000e]:\u0005\u001d\u0000 \u0013@\u000b\u0005\t=67\u0004F/-\u0005\u001c\u000b\r+\u001d\f1\u001e\u007f2#\u0018\u0006\u0010\u001e1\u0002\u0011=\nr.7\u0014\u0017&\u000e\\37\u0007\u0010!\u0002\u00163\u0000V\u001f\u0010!\u0002\u00163\u0000V\u000b%\u001d\f6\u0006G4+\u001f1 \u0006].\"\u001e\u0017?\u0006G4+\u001f"
         .length();
      char var2 = 14;
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var0[var4++] = var8;
                  if ((var7 += var2) >= var5) {
                     ACCESS_CONTROL = new Category(0, var0[10]);
                     MESSAGE = new Category(1, var0[8]);
                     UNFILLED = new Category(2, var0[1]);
                     THREAT_PROT = new Category(3, var0[3]);
                     AUDIT_ALERT = new Category(4, var0[4]);
                     TRANSPORT_SEC = new Category(5, var0[11]);
                     XML_SEC = new Category(6, var0[5]);
                     MSG_VAL_XSLT = new Category(7, var0[9]);
                     ROUTING = new Category(8, var0[0]);
                     AVAILABILITY = new Category(9, var0[2]);
                     LOGIC = new Category(10, var0[6]);
                     CUSTOM_ASSERTIONS = new Category(11, var0[7]);
                     VALUES = new Category[]{
                        ACCESS_CONTROL,
                        MESSAGE,
                        UNFILLED,
                        THREAT_PROT,
                        AUDIT_ALERT,
                        TRANSPORT_SEC,
                        XML_SEC,
                        MSG_VAL_XSLT,
                        ROUTING,
                        AVAILABILITY,
                        LOGIC,
                        CUSTOM_ASSERTIONS
                     };
                     return;
                  }

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

                  var3 = "\t2\u0007\u00154\u0001e'?\u0010\u0002(\u001e\u0016\u001c#\u0005\u001e4\u0002I:%(\u0011>\u0017T\u001b4\u0007\u00055\u001bR1";
                  var5 = "\t2\u0007\u00154\u0001e'?\u0010\u0002(\u001e\u0016\u001c#\u0005\u001e4\u0002I:%(\u0011>\u0017T\u001b4\u0007\u00055\u001bR1".length();
                  var2 = '\r';
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String a(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 -> 18;
            case 1 -> 11;
            case 2 -> 62;
            case 3 -> 42;
            case 4 -> 29;
            case 5 -> 40;
            default -> 124;
         });
      }

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