package com.l7tech.server.wsdm.util;

import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.server.service.ServiceCache;
import com.l7tech.server.service.resolution.ServiceResolutionException;
import com.l7tech.server.wsdm.faults.ResourceUnknownFault;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EsmUtils {
   private static final Logger a;
   public static final Pattern serviceOidQueryStringPattern;
   public static final Pattern serviceOidByUrl;
   public static final Pattern serviceUriQueryStringPattern;
   private static final String[] b;

   public static String determineServiceFromUrl(String var0, ServiceCache var1) throws ResourceUnknownFault {
      String var2 = getServiceOidFromQueryString(var0);
      if (var2 == null) {
         var2 = getServiceOidFromServiceUrl(var0);
      }

      if (var2 == null) {
         var2 = getServiceOidFromUriQueryString(var0, var1);
      }

      return var2;
   }

   public static String getServiceOidFromQueryString(String var0) {
      Matcher var1 = serviceOidQueryStringPattern.matcher(var0);
      return var1.find() && var1.groupCount() == 2 ? var1.group(1) : null;
   }

   public static String getServiceOidFromServiceUrl(String var0) {
      Matcher var1 = serviceOidByUrl.matcher(var0);
      return var1.find() && var1.groupCount() == 2 ? var1.group(1) : null;
   }

   public static String getServiceOidFromUriQueryString(String var0, ServiceCache var1) throws ResourceUnknownFault {
      Matcher var2 = serviceUriQueryStringPattern.matcher(var0);

      try {
         if (!var2.find() || var2.groupCount() != 1) {
            return null;
         }
      } catch (ServiceResolutionException var14) {
         throw a(var14);
      }

      String var3 = var2.group(1);
      String[] var10 = b;
      a.info(var10[0] + var3);

      try {
         Collection var4 = var1.resolve(var3, null, null);

         label57: {
            try {
               if (var4 == null || var4.isEmpty()) {
                  break label57;
               }
            } catch (ServiceResolutionException var12) {
               throw a(var12);
            }

            try {
               if (var4.size() > 1) {
                  throw new ResourceUnknownFault(b[2] + var3 + b[1]);
               }
            } catch (ServiceResolutionException var11) {
               throw a(var11);
            }

            PublishedService var5 = (PublishedService)var4.iterator().next();
            String var6 = var5.getId();
            Logger var10000 = a;
            String var10001 = var5.getName();
            String var7 = var3;
            String var8 = var6;
            String var9 = var10001;
            var10 = b;
            var10000.info(var10[5] + var9 + var10[10] + var8 + var10[9] + var7 + ".");
            return var5.getId();
         }

         var10 = b;
         a.warning(var10[4] + var3);
         return null;
      } catch (ServiceResolutionException var13) {
         a.log(Level.WARNING, b[3] + var3, var13);
         return null;
      }
   }

   static {
      String[] var5 = new String[11];
      int var3 = 0;
      String var2 = "VH4hi$^:R+#s/KlN8f(9\u0010:S3btjT{S8k ?Ks\u0007+qe,Pb\u0007\u00184\u0007\u000epejJ\u007fU-jc/VsC{jn9M\u007fF?#WR7wi:U\u007f\u0007(fr<PyB(#m+MyO{vr#\u0019jU>ei2\u0019&_U)lrj_sI?jn-\u0019iB)ui)\\i\u0007=lrjLhN{sr/_s_{+TH{pe8OsD>p =\\hB{eo?W~\u00076bt)QsI<#u8P:W)ff#A:\u001d\\H.mdjT{S8ki$^:T>qv#Z\u007f\u0007sma'\\'\u00114\r(fr<PyB.qiw\u00114\rr04\rtpe8OsD>,(\u0011\t7\u001e:.f\u000b\u0014\\z 027EFC 2,x\tg\u000esX/\u0016\u0006G\tq*?n.4\r(fr<PyB4jdw\u0011A\u0017v:ag_[\n\u001d^{y\u000bg[\u0007g{{\u0015(\u0017&*(l\u00170\u000ed'";
      int var4 = "VH4hi$^:R+#s/KlN8f(9\u0010:S3btjT{S8k ?Ks\u0007+qe,Pb\u0007\u00184\u0007\u000epejJ\u007fU-jc/VsC{jn9M\u007fF?#WR7wi:U\u007f\u0007(fr<PyB(#m+MyO{vr#\u0019jU>ei2\u0019&_U)lrj_sI?jn-\u0019iB)ui)\\i\u0007=lrjLhN{sr/_s_{+TH{pe8OsD>p =\\hB{eo?W~\u00076bt)QsI<#u8P:W)ff#A:\u001d\\H.mdjT{S8ki$^:T>qv#Z\u007f\u0007sma'\\'\u00114\r(fr<PyB.qiw\u00114\rr04\rtpe8OsD>,(\u0011\t7\u001e:.f\u000b\u0014\\z 027EFC 2,x\tg\u000esX/\u0016\u0006G\tq*?n.4\r(fr<PyB4jdw\u0011A\u0017v:ag_[\n\u001d^{y\u000bg[\u0007g{{\u0015(\u0017&*(l\u00170\u000ed'"
         .length();
      char var1 = ',';
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     a = Logger.getLogger(EsmUtils.class.getName());
                     String[] var8 = b;
                     serviceOidQueryStringPattern = Pattern.compile(var8[8]);
                     serviceOidByUrl = Pattern.compile(var8[7]);
                     serviceUriQueryStringPattern = Pattern.compile(var8[6]);
                     return;
                  }

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

                  var2 = "Qe_\u000e\u0010\b.\n,\u0019\u0011\u0010M=\u0011=\u0019\u0004T,]\\";
                  var4 = "Qe_\u000e\u0010\b.\n,\u0019\u0011\u0010M=\u0011=\u0019\u0004T,]\\".length();
                  var1 = 17;
                  var7 = -1;
            }

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

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

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

      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 -> 127;
            case 1 -> 66;
            case 2 -> 62;
            case 3 -> 102;
            case 4 -> 101;
            case 5 -> 47;
            default -> 92;
         });
      }

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