package com.l7tech.gateway.api;

import com.l7tech.util.ExceptionUtils;
import com.sun.ws.management.client.exceptions.FaultException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public interface Accessor<AO extends AccessibleObject> {
   Class<AO> getType();

   AO get(String var1) throws Accessor.AccessorException;

   AO get(String var1, Object var2) throws Accessor.AccessorException;

   AO get(Map<String, Object> var1) throws Accessor.AccessorException;

   AO put(AO var1) throws Accessor.AccessorException;

   String create(AO var1) throws Accessor.AccessorException;

   void delete(String var1) throws Accessor.AccessorException;

   void delete(String var1, Object var2) throws Accessor.AccessorException;

   void delete(Map<String, Object> var1) throws Accessor.AccessorException;

   Iterator<AO> enumerate() throws Accessor.AccessorException;

   class AccessorException extends ManagementException {
      static final long serialVersionUID = 5583977731316357700L;

      public AccessorException(String var1) {
         super(var1);
      }

      public AccessorException(String var1, Throwable var2) {
         super(var1, var2);
      }

      public AccessorException(Throwable var1) {
         super(var1);
      }
   }

   class AccessorNetworkException extends Accessor.AccessorRuntimeException {
      static final long serialVersionUID = 7376720277506487448L;

      public AccessorNetworkException(Throwable var1) {
         super(ExceptionUtils.getMessage(var1), var1);
      }
   }

   class AccessorNotFoundException extends Accessor.AccessorException {
      static final long serialVersionUID = -3797812574742300034L;

      public AccessorNotFoundException(String var1) {
         super(var1);
      }
   }

   class AccessorRuntimeException extends ManagementRuntimeException {
      static final long serialVersionUID = 3403702092244991727L;

      public AccessorRuntimeException(String var1) {
         super(var1);
      }

      public AccessorRuntimeException(String var1, Throwable var2) {
         super(var1, var2);
      }

      public AccessorRuntimeException(Throwable var1) {
         super(var1);
      }
   }

   class AccessorSOAPFaultException extends Accessor.AccessorRuntimeException {
      static final Pattern SOAP_FAULT_PATTERN;
      private final String fault;
      private final String role;
      private final String code;
      private final List<String> subcodes;
      private final List<String> details;
      static final long serialVersionUID = -2591895624829761130L;
      private static final String[] a;

      public AccessorSOAPFaultException(FaultException var1) {
         super(ExceptionUtils.getMessage(var1), var1);
         Matcher var2 = SOAP_FAULT_PATTERN.matcher(ExceptionUtils.getMessage(var1));

         try {
            if (var2.matches()) {
               this.fault = var2.group(1);
               this.role = var2.group(2);
               this.code = var2.group(3);
               this.subcodes = this.list(var2.group(4), true);
               this.details = this.list(var2.group(5), false);
               return;
            }
         } catch (Accessor.AccessorRuntimeException var4) {
            throw var4;
         }

         this.fault = ExceptionUtils.getMessage(var1);
         String[] var3 = a;
         this.role = var3[1];
         this.code = var3[0];
         this.subcodes = Collections.emptyList();
         this.details = Collections.emptyList();
      }

      public String getFault() {
         return this.fault;
      }

      public String getRole() {
         return this.role;
      }

      public List<String> getDetails() {
         return this.details;
      }

      protected String getCode() {
         return this.code;
      }

      protected List<String> getSubcodes() {
         return this.subcodes;
      }

      private List<String> list(String var1, boolean var2) {
         String var10000;
         label43: {
            try {
               if (var2) {
                  var10000 = a[4];
                  break label43;
               }
            } catch (Accessor.AccessorRuntimeException var12) {
               throw var12;
            }

            var10000 = a[3];
         }

         String var4 = var10000;
         List var3;
         if (var1 == null) {
            var3 = Collections.emptyList();
         } else {
            ArrayList var5 = new ArrayList();
            String[] var6 = var1.split(var4);

            for (String var10 : var6) {
               try {
                  if (!var10.trim().isEmpty()) {
                     var5.add(var10.trim());
                  }
               } catch (Accessor.AccessorRuntimeException var11) {
                  throw var11;
               }
            }

            var3 = Collections.unmodifiableList(var5);
         }

         return var3;
      }

      static {
         String[] var5 = new String[5];
         int var3 = 0;
         String var2 = "\u001e\f\u0010TQJ\u001a\u0007\u001e\f\u0010TQJ\u001a\u008d\u0018-:j\u001e{\u0015>\u000e\u000f\u0000\u001e\u0015ZaK fLa\u001a\u0016\u0019J\u0016\f@TkB[\u001a\u007f^\u0000$\u0010A\u001a\u0016\u0013^b9'HbS)0SW\bC\u001dTkB[\u001a}R\u0010.X[\u0012\u0010\u0017]\u0010>\tfP`\u000fzNIG\u0016\u0002NkB(O\\^\u001b/\u0007\b\u0000e\u001d)tJU\u0010\u0017f(9>\u0015gE\fXy\u001f\u0007\u0013\u0016\u0002NkB[\u001azX\u0000*\u000b\u0017\u0000\u001e\u0015\\t\u0011A\u0014\u0014\u0014]b";
         int var4 = "\u001e\f\u0010TQJ\u001a\u0007\u001e\f\u0010TQJ\u001a\u008d\u0018-:j\u001e{\u0015>\u000e\u000f\u0000\u001e\u0015ZaK fLa\u001a\u0016\u0019J\u0016\f@TkB[\u001a\u007f^\u0000$\u0010A\u001a\u0016\u0013^b9'HbS)0SW\bC\u001dTkB[\u001a}R\u0010.X[\u0012\u0010\u0017]\u0010>\tfP`\u000fzNIG\u0016\u0002NkB(O\\^\u001b/\u0007\b\u0000e\u001d)tJU\u0010\u0017f(9>\u0015gE\fXy\u001f\u0007\u0013\u0016\u0002NkB[\u001azX\u0000*\u000b\u0017\u0000\u001e\u0015\\t\u0011A\u0014\u0014\u0014]b"
            .length();
         char var1 = 7;
         int var7 = -1;

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

            while (true) {
               String var12 = a(a(var10000));
               switch (var10001) {
                  case 0:
                     var5[var3++] = var12;
                     if ((var7 += var1) >= var4) {
                        a = var5;
                        SOAP_FAULT_PATTERN = Pattern.compile(a[2], 8);
                        return;
                     }

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

                     var2 = "\u0010oqgE\fXy\u001f\n\u0010oq\u001acFEgP\u0006";
                     var4 = "\u0010oqgE\fXy\u001f\n\u0010oq\u001acFEgP\u0006".length();
                     var1 = '\t';
                     var7 = -1;
               }

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

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

         return var10000;
      }

      private static String a(char[] var0) {
         int var10002 = var0.length;
         char[] var10001 = var0;
         int var10000 = var10002;

         for (int var1 = 0; var10000 > var1; var1++) {
            var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
               case 0 -> 75;
               case 1 -> 98;
               case 2 -> 123;
               case 3 -> 58;
               case 4 -> 62;
               case 5 -> 61;
               default -> 116;
            });
         }

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