package com.l7tech.server;

import com.l7tech.common.mime.MimeBody;
import com.l7tech.gateway.common.LicenseException;
import com.l7tech.gateway.common.LicenseManager;
import com.l7tech.gateway.common.audit.MessageProcessingMessages;
import com.l7tech.gateway.common.audit.AuditDetailMessage.Hint;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.gateway.common.service.PublishedService.ServiceException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.variable.VariableNameSyntaxException;
import com.l7tech.security.xml.SecurityTokenResolver;
import com.l7tech.security.xml.decorator.WssDecorator;
import com.l7tech.security.xml.processor.SecurityContextFinder;
import com.l7tech.server.audit.AuditContextFactory;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.audit.MessageSummaryAuditFactory;
import com.l7tech.server.cluster.ServiceUsageManager;
import com.l7tech.server.event.MessageProcessed;
import com.l7tech.server.event.MessageReceived;
import com.l7tech.server.log.TrafficLogger;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.message.metrics.GatewayMetricsPublisher;
import com.l7tech.server.message.metrics.GatewayMetricsUtils;
import com.l7tech.server.messageprocessor.injection.MessageProcessorInjector;
import com.l7tech.server.policy.PolicyCache;
import com.l7tech.server.policy.PolicyVersionException;
import com.l7tech.server.service.ServiceCache;
import com.l7tech.server.service.ServiceMetricsServices;
import com.l7tech.server.service.resolution.ServiceResolutionException;
import com.l7tech.server.stepdebug.DebugManager;
import com.l7tech.server.util.EventChannel;
import com.l7tech.util.Background;
import com.l7tech.util.Config;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.InvalidDocumentFormatException;
import com.l7tech.util.Pair;
import com.l7tech.util.ResourceUtils;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.wsdl.Operation;
import javax.wsdl.WSDLException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.support.ApplicationObjectSupport;
import org.xml.sax.SAXException;

public class MessageProcessor extends ApplicationObjectSupport implements InitializingBean {
   private static final int a = 7937;
   private static final boolean b = true;
   private final ServiceCache c;
   private final PolicyCache d;
   private final WssDecorator e;
   private final SecurityTokenResolver f;
   private final SecurityContextFinder g;
   private final LicenseManager h;
   private final ServiceMetricsServices i;
   private final MessageProcessorInjector j;
   private final AuditContextFactory k;
   private final MessageSummaryAuditFactory l;
   private final Config m;
   private final TrafficLogger n;
   private final ArrayList<TrafficMonitor> o = new ArrayList<>();
   private final AtomicReference<av> p = new AtomicReference<>();
   private final ApplicationEventPublisher q;
   private final AtomicBoolean r = new AtomicBoolean(true);
   private final ServiceUsageManager s;
   private final MessageProcessorMediatorFactory t;
   @Inject
   @Named("debugManager")
   DebugManager debugManager;
   @Inject
   @Named("gatewayMetricsPublisher")
   GatewayMetricsPublisher gatewayMetricsEventsPublisher;
   private static final Level u;
   private static final Hint v;
   private static final Hint w;
   private Auditor x;
   final Logger y = Logger.getLogger(this.getClass().getName());
   private static final String[] z;

   public MessageProcessor(
      ServiceCache var1,
      PolicyCache var2,
      WssDecorator var3,
      SecurityTokenResolver var4,
      SecurityContextFinder var5,
      LicenseManager var6,
      ServiceMetricsServices var7,
      AuditContextFactory var8,
      MessageSummaryAuditFactory var9,
      MessageProcessorInjector var10,
      Config var11,
      TrafficLogger var12,
      ServiceUsageManager var13,
      MessageProcessorMediatorFactory var14,
      ApplicationEventPublisher var15
   ) throws IllegalArgumentException {
      if (var1 == null) {
         String[] var16 = z;
         throw new IllegalArgumentException(var16[16]);
      }

      try {
         if (var2 == null) {
            throw new IllegalArgumentException(z[20]);
         }
      } catch (IllegalArgumentException var26) {
         throw a(var26);
      }

      try {
         if (var3 == null) {
            throw new IllegalArgumentException(z[25]);
         }
      } catch (IllegalArgumentException var20) {
         throw a(var20);
      }

      try {
         if (var6 == null) {
            throw new IllegalArgumentException(z[29]);
         }
      } catch (IllegalArgumentException var25) {
         throw a(var25);
      }

      try {
         if (var7 == null) {
            throw new IllegalArgumentException(z[23]);
         }
      } catch (IllegalArgumentException var19) {
         throw a(var19);
      }

      try {
         if (var8 == null) {
            throw new IllegalArgumentException(z[1]);
         }
      } catch (IllegalArgumentException var24) {
         throw a(var24);
      }

      try {
         if (var11 == null) {
            throw new IllegalArgumentException(z[24]);
         }
      } catch (IllegalArgumentException var18) {
         throw a(var18);
      }

      try {
         if (var12 == null) {
            throw new IllegalArgumentException(z[10]);
         }
      } catch (IllegalArgumentException var23) {
         throw a(var23);
      }

      if (var15 == null) {
         var15 = new EventChannel();
      }

      try {
         if (var10 == null) {
            throw new IllegalArgumentException(z[26]);
         }
      } catch (IllegalArgumentException var22) {
         throw a(var22);
      }

      try {
         if (var13 == null) {
            throw new IllegalArgumentException(z[31]);
         }
      } catch (IllegalArgumentException var17) {
         throw a(var17);
      }

      try {
         if (var14 == null) {
            throw new IllegalArgumentException(z[30]);
         }
      } catch (IllegalArgumentException var21) {
         throw a(var21);
      }

      this.c = var1;
      this.d = var2;
      this.e = var3;
      this.f = var4;
      this.g = var5;
      this.h = var6;
      this.i = var7;
      this.k = var8;
      this.l = var9;
      this.j = var10;
      this.m = var11;
      this.n = var12;
      this.s = var13;
      this.q = var15;
      this.t = var14;
      this.a(7937);
   }

   private void a(int var1) {
      this.b(var1);
      Background.scheduleRepeated(new b6(this, var1), var1, var1);
   }

   private void b(int var1) {
      String[] var4 = z;
      long var2 = this.m.getLongProperty(var4[14], 2621440L);
      MimeBody.setFirstPartMaxBytes(var2);
      this.p
         .set(
            new av(
               this.m.getLongProperty(var4[13], 0L),
               this.m.getBooleanProperty(var4[15], true),
               this.m.getBooleanProperty(var4[2], false),
               this.m.getBooleanProperty(var4[7], false),
               this.m.getBooleanProperty(var4[5], true)
            )
         );
      this.r.set(this.m.getBooleanProperty(var4[27], true));
   }

   public AssertionStatus processMessageNoAudit(PolicyEnforcementContext param1) throws IOException, PolicyAssertionException, PolicyVersionException, LicenseException, MethodNotAllowedException, MessageProcessingSuspendedException {
      // $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: invokestatic com/l7tech/server/audit/AuditContextFactory.getCurrent ()Lcom/l7tech/server/audit/AuditContext;
      // 03: astore 2
      // 04: aload 1
      // 05: aload 2
      // 06: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setAuditContext (Lcom/l7tech/server/audit/AuditContext;)V 2
      // 0b: getstatic com/l7tech/policy/assertion/AssertionStatus.UNDEFINED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 0e: astore 3
      // 0f: aload 0
      // 10: getfield com/l7tech/server/MessageProcessor.t Lcom/l7tech/server/MessageProcessorMediatorFactory;
      // 13: invokeinterface com/l7tech/server/MessageProcessorMediatorFactory.createMessageProcessorMediator ()Lcom/l7tech/server/MessageProcessorMediator; 1
      // 18: astore 4
      // 1a: aload 4
      // 1c: aload 1
      // 1d: invokeinterface com/l7tech/server/MessageProcessorMediator.processMessageStart (Lcom/l7tech/server/message/PolicyEnforcementContext;)V 2
      // 22: aload 0
      // 23: aload 1
      // 24: aload 4
      // 26: invokevirtual com/l7tech/server/MessageProcessor.a (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/server/MessageProcessorMediator;)Lcom/l7tech/policy/assertion/AssertionStatus;
      // 29: astore 3
      // 2a: aload 4
      // 2c: aload 3
      // 2d: invokeinterface com/l7tech/server/MessageProcessorMediator.processMessagePostReallyProcessMessage (Lcom/l7tech/policy/assertion/AssertionStatus;)V 2
      // 32: aload 3
      // 33: astore 5
      // 35: aload 0
      // 36: aload 1
      // 37: aload 3
      // 38: aload 4
      // 3a: invokevirtual com/l7tech/server/MessageProcessor.a (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;Lcom/l7tech/server/MessageProcessorMediator;)V
      // 3d: invokestatic com/l7tech/server/audit/AuditLogFormatter.getContextVariablesUsed ()[Ljava/lang/String;
      // 40: astore 6
      // 42: aload 6
      // 44: ifnull 6d
      // 47: aload 6
      // 49: arraylength
      // 4a: ifle 6d
      // 4d: goto 54
      // 50: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 53: athrow
      // 54: aload 2
      // 55: aload 1
      // 56: aload 6
      // 58: aload 0
      // 59: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // 5c: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getVariableMap ([Ljava/lang/String;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/util/Map; 3
      // 61: invokeinterface com/l7tech/server/audit/AuditContext.setContextVariables (Ljava/util/Map;)V 2
      // 66: goto 6d
      // 69: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6c: athrow
      // 6d: aload 4
      // 6f: aload 1
      // 70: aload 3
      // 71: invokeinterface com/l7tech/server/MessageProcessorMediator.processMessageFinally (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;)V 3
      // 76: aload 5
      // 78: areturn
      // 79: astore 7
      // 7b: aload 0
      // 7c: aload 1
      // 7d: aload 3
      // 7e: aload 4
      // 80: invokevirtual com/l7tech/server/MessageProcessor.a (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;Lcom/l7tech/server/MessageProcessorMediator;)V
      // 83: invokestatic com/l7tech/server/audit/AuditLogFormatter.getContextVariablesUsed ()[Ljava/lang/String;
      // 86: astore 8
      // 88: aload 8
      // 8a: ifnull b3
      // 8d: aload 8
      // 8f: arraylength
      // 90: ifle b3
      // 93: goto 9a
      // 96: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 99: athrow
      // 9a: aload 2
      // 9b: aload 1
      // 9c: aload 8
      // 9e: aload 0
      // 9f: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // a2: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getVariableMap ([Ljava/lang/String;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/util/Map; 3
      // a7: invokeinterface com/l7tech/server/audit/AuditContext.setContextVariables (Ljava/util/Map;)V 2
      // ac: goto b3
      // af: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // b2: athrow
      // b3: aload 4
      // b5: aload 1
      // b6: aload 3
      // b7: invokeinterface com/l7tech/server/MessageProcessorMediator.processMessageFinally (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;)V 3
      // bc: aload 7
      // be: athrow
      // try (14 -> 24): 55 null
      // try (33 -> 46): 47 java/io/IOException
      // try (31 -> 36): 37 java/io/IOException
      // try (55 -> 56): 55 null
      // try (63 -> 68): 69 java/io/IOException
      // try (65 -> 78): 79 java/io/IOException
   }

   public AssertionStatus processMessage(PolicyEnforcementContext var1) throws IOException, PolicyAssertionException, PolicyVersionException, LicenseException, MethodNotAllowedException, MessageProcessingSuspendedException {
      MessageProcessorMediator var2 = this.t.createMessageProcessorMediator();
      var2.processMessageStart(var1);
      AssertionStatus[] var3 = new AssertionStatus[]{AssertionStatus.UNDEFINED};

      try {
         return this.k.doWithNewAuditContext(new as(this, var1, var3, var2), new at(this, var1, var3));
      } catch (IOException | PolicyAssertionException | PolicyVersionException | LicenseException | MethodNotAllowedException | MessageProcessingSuspendedException | RuntimeException var9) {
         var2.handleException(var9);
         throw var9;
      } catch (Exception var10) {
         var2.handleException(var10);
         throw new RuntimeException(var10);
      } finally {
         var2.processMessageFinally(var1, var3[0]);
      }
   }

   private AssertionStatus a(PolicyEnforcementContext var1, MessageProcessorMediator var2) throws IOException, PolicyAssertionException, PolicyVersionException, LicenseException, MethodNotAllowedException, MessageProcessingSuspendedException {
      PolicyEnforcementContext var10000;
      GatewayMetricsPublisher var10001;
      label64: {
         try {
            this.a(var1);
            var10000 = var1;
            if (this.isRelayGatewayMetricsEnable()) {
               var10001 = this.gatewayMetricsEventsPublisher;
               break label64;
            }
         } catch (ServiceException var18) {
            throw a(var18);
         }

         var10001 = null;
      }

      GatewayMetricsUtils.setPublisher(var10000, var10001);
      au var3 = new au(this, var1);

      try {
         return var3.a();
      } catch (ServiceException var13) {
         var2.handleException(var13);
         this.x.logAndAudit(MessageProcessingMessages.EXCEPTION_SEVERE_WITH_MORE_INFO, new String[]{ExceptionUtils.getMessage(var13)}, var13);
         var1.setPolicyResult(AssertionStatus.SERVER_ERROR);
         return AssertionStatus.SERVER_ERROR;
      } catch (ServiceResolutionException var14) {
         var2.handleException(var14);
         this.x
            .logAndAudit(
               MessageProcessingMessages.EXCEPTION_SEVERE_WITH_MORE_INFO,
               new String[]{ExceptionUtils.getMessage(var14)},
               ExceptionUtils.getDebugException(var14)
            );
         var1.setPolicyResult(AssertionStatus.SERVER_ERROR);
         return AssertionStatus.SERVER_ERROR;
      } catch (SAXException var15) {
         var2.handleException(var15);
         this.x.logAndAudit(MessageProcessingMessages.EXCEPTION_SEVERE_WITH_MORE_INFO, new String[]{ExceptionUtils.getMessage(var15)}, var15);
         var1.setPolicyResult(AssertionStatus.SERVER_ERROR);
         return AssertionStatus.SERVER_ERROR;
      } catch (VariableNameSyntaxException var16) {
         var2.handleException(var16);
         this.x
            .logAndAudit(
               MessageProcessingMessages.EXCEPTION_SEVERE_WITH_MORE_INFO,
               new String[]{z[11] + ExceptionUtils.getMessage(var16)},
               ExceptionUtils.getDebugException(var16)
            );
         var1.setPolicyResult(AssertionStatus.SERVER_ERROR);
         return AssertionStatus.SERVER_ERROR;
      } finally {
         ResourceUtils.closeQuietly(var3);
      }
   }

   private void a(PolicyEnforcementContext var1) throws LicenseException, MessageProcessingSuspendedException {
      try {
         var1.setAuditLevel(u);
         this.h.requireFeature(z[19]);
         if (MessageProcessor.SuspendStatus.INSTANCE.isSuspended()) {
            this.x
               .logAndAudit(
                  MessageProcessingMessages.EXCEPTION_WARNING_WITH_MORE_INFO, new String[]{z[6] + MessageProcessor.SuspendStatus.INSTANCE.getReason()}, null
               );
            throw new MessageProcessingSuspendedException(z[28]);
         }
      } catch (LicenseException var2) {
         throw a(var2);
      }
   }

   private void a(PolicyEnforcementContext param1, AssertionStatus param2, MessageProcessorMediator param3) {
      // $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: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setEndTime ()V 1
      // 06: aload 0
      // 07: invokevirtual com/l7tech/server/MessageProcessor.a ()Z
      // 0a: ifeq 6d
      // 0d: aload 1
      // 0e: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.isAuditSaveRequest ()Z 1
      // 13: ifeq 2d
      // 16: goto 1d
      // 19: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1c: athrow
      // 1d: aload 1
      // 1e: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.isAuditSaveResponse ()Z 1
      // 23: ifne 6d
      // 26: goto 2d
      // 29: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2c: athrow
      // 2d: invokestatic com/l7tech/server/audit/AuditContextFactory.getCurrent ()Lcom/l7tech/server/audit/AuditContext;
      // 30: invokeinterface com/l7tech/server/audit/AuditContext.getHints ()Ljava/util/Set; 1
      // 35: astore 4
      // 37: aload 4
      // 39: getstatic com/l7tech/server/MessageProcessor.v Lcom/l7tech/gateway/common/audit/AuditDetailMessage$Hint;
      // 3c: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 41: ifeq 52
      // 44: aload 1
      // 45: bipush 1
      // 46: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setAuditSaveRequest (Z)V 2
      // 4b: goto 52
      // 4e: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 51: athrow
      // 52: aload 4
      // 54: getstatic com/l7tech/server/MessageProcessor.w Lcom/l7tech/gateway/common/audit/AuditDetailMessage$Hint;
      // 57: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 5c: ifeq 6d
      // 5f: aload 1
      // 60: bipush 1
      // 61: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setAuditSaveResponse (Z)V 2
      // 66: goto 6d
      // 69: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6c: athrow
      // 6d: aload 0
      // 6e: aload 1
      // 6f: aload 2
      // 70: invokevirtual com/l7tech/server/MessageProcessor.c (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;)Lcom/l7tech/policy/assertion/AssertionStatus;
      // 73: astore 2
      // 74: aload 1
      // 75: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getPolicyResult ()Lcom/l7tech/policy/assertion/AssertionStatus; 1
      // 7a: ifnonnull 8b
      // 7d: aload 1
      // 7e: aload 2
      // 7f: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setPolicyResult (Lcom/l7tech/policy/assertion/AssertionStatus;)V 2
      // 84: goto 8b
      // 87: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 8a: athrow
      // 8b: aload 0
      // 8c: aload 1
      // 8d: invokevirtual com/l7tech/server/MessageProcessor.c (Lcom/l7tech/server/message/PolicyEnforcementContext;)V
      // 90: aload 3
      // 91: aload 1
      // 92: aload 0
      // 93: aload 1
      // 94: invokevirtual com/l7tech/server/MessageProcessor.f (Lcom/l7tech/server/message/PolicyEnforcementContext;)Ljava/lang/String;
      // 97: aload 0
      // 98: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // 9b: invokeinterface com/l7tech/server/MessageProcessorMediator.doRequestPostProcessing (Lcom/l7tech/server/message/PolicyEnforcementContext;Ljava/lang/String;Lcom/l7tech/server/audit/Auditor;)V 4
      // a0: aload 0
      // a1: aload 1
      // a2: aload 2
      // a3: invokevirtual com/l7tech/server/MessageProcessor.b (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;)V
      // a6: aload 1
      // a7: new com/l7tech/server/message/metrics/LatencyMetrics
      // aa: dup
      // ab: aload 1
      // ac: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getStartTime ()J 1
      // b1: aload 1
      // b2: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getEndTime ()J 1
      // b7: invokespecial com/l7tech/server/message/metrics/LatencyMetrics.<init> (JJ)V
      // ba: invokestatic com/l7tech/server/message/metrics/GatewayMetricsUtils.publishServiceFinish (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/server/message/metrics/LatencyMetrics;)V
      // bd: aload 0
      // be: aload 1
      // bf: aload 2
      // c0: invokevirtual com/l7tech/server/MessageProcessor.a (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/policy/assertion/AssertionStatus;)V
      // c3: aload 0
      // c4: getfield com/l7tech/server/MessageProcessor.n Lcom/l7tech/server/log/TrafficLogger;
      // c7: aload 1
      // c8: invokevirtual com/l7tech/server/log/TrafficLogger.log (Lcom/l7tech/server/message/PolicyEnforcementContext;)V
      // cb: return
      // try (0 -> 8): 9 java/lang/IllegalArgumentException
      // try (5 -> 14): 15 java/lang/IllegalArgumentException
      // try (20 -> 27): 28 java/lang/IllegalArgumentException
      // try (30 -> 37): 38 java/lang/IllegalArgumentException
      // try (45 -> 51): 52 java/lang/IllegalArgumentException
   }

   private void a(PolicyEnforcementContext var1, AssertionStatus var2) {
      try {
         this.q.publishEvent(new MessageProcessed(var1, var2, this));
      } catch (Throwable var4) {
         this.x.logAndAudit(MessageProcessingMessages.EVENT_MANAGER_EXCEPTION, null, var4);
      }
   }

   private void b(PolicyEnforcementContext var1) {
      try {
         this.q.publishEvent(new MessageReceived(this, var1));
      } catch (Throwable var3) {
         this.x.logAndAudit(MessageProcessingMessages.EVENT_MANAGER_EXCEPTION, null, var3);
      }
   }

   private void b(PolicyEnforcementContext var1, AssertionStatus var2) {
      for (TrafficMonitor var4 : this.o) {
         var4.recordTransactionStatus(var1, var2, var1.getEndTime() - var1.getStartTime());
      }
   }

   private AssertionStatus c(PolicyEnforcementContext param1, AssertionStatus param2) {
      // $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:
      // 000: aload 1
      // 001: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getRoutingStatus ()Lcom/l7tech/policy/assertion/RoutingStatus; 1
      // 006: astore 3
      // 007: aload 2
      // 008: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 00b: if_acmpne 061
      // 00e: aload 3
      // 00f: getstatic com/l7tech/policy/assertion/RoutingStatus.ROUTED Lcom/l7tech/policy/assertion/RoutingStatus;
      // 012: if_acmpeq 02a
      // 015: goto 01c
      // 018: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01b: athrow
      // 01c: aload 3
      // 01d: getstatic com/l7tech/policy/assertion/RoutingStatus.NONE Lcom/l7tech/policy/assertion/RoutingStatus;
      // 020: if_acmpne 050
      // 023: goto 02a
      // 026: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 029: athrow
      // 02a: aload 0
      // 02b: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // 02e: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.COMPLETION_STATUS Lcom/l7tech/gateway/common/audit/Messages$M;
      // 031: bipush 2
      // 032: anewarray 372
      // 035: dup
      // 036: bipush 0
      // 037: aload 2
      // 038: invokevirtual com/l7tech/policy/assertion/AssertionStatus.getNumeric ()I
      // 03b: invokestatic java/lang/String.valueOf (I)Ljava/lang/String;
      // 03e: aastore
      // 03f: dup
      // 040: bipush 1
      // 041: aload 2
      // 042: invokevirtual com/l7tech/policy/assertion/AssertionStatus.getMessage ()Ljava/lang/String;
      // 045: aastore
      // 046: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 049: goto 11b
      // 04c: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 04f: athrow
      // 050: aload 0
      // 051: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // 054: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SERVER_ERROR Lcom/l7tech/gateway/common/audit/Messages$M;
      // 057: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 05a: getstatic com/l7tech/policy/assertion/AssertionStatus.SERVER_ERROR Lcom/l7tech/policy/assertion/AssertionStatus;
      // 05d: astore 2
      // 05e: goto 11b
      // 061: aload 3
      // 062: getstatic com/l7tech/policy/assertion/RoutingStatus.ATTEMPTED Lcom/l7tech/policy/assertion/RoutingStatus;
      // 065: if_acmpne 08e
      // 068: aload 0
      // 069: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // 06c: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.ROUTING_FAILED Lcom/l7tech/gateway/common/audit/Messages$M;
      // 06f: bipush 2
      // 070: anewarray 372
      // 073: dup
      // 074: bipush 0
      // 075: aload 2
      // 076: invokevirtual com/l7tech/policy/assertion/AssertionStatus.getNumeric ()I
      // 079: invokestatic java/lang/String.valueOf (I)Ljava/lang/String;
      // 07c: aastore
      // 07d: dup
      // 07e: bipush 1
      // 07f: aload 2
      // 080: invokevirtual com/l7tech/policy/assertion/AssertionStatus.getMessage ()Ljava/lang/String;
      // 083: aastore
      // 084: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 087: getstatic com/l7tech/policy/assertion/AssertionStatus.FAILED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 08a: astore 2
      // 08b: goto 11b
      // 08e: aload 0
      // 08f: invokevirtual com/l7tech/server/MessageProcessor.b ()Z
      // 092: ifeq 0c5
      // 095: aload 1
      // 096: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getSeenAssertionStatus ()Ljava/util/Set; 1
      // 09b: astore 4
      // 09d: aload 0
      // 09e: aload 4
      // 0a0: invokevirtual com/l7tech/server/MessageProcessor.a (Ljava/util/Set;)Ljava/util/logging/Level;
      // 0a3: astore 5
      // 0a5: aload 5
      // 0a7: invokevirtual java/util/logging/Level.intValue ()I
      // 0aa: aload 1
      // 0ab: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getAuditLevel ()Ljava/util/logging/Level; 1
      // 0b0: invokevirtual java/util/logging/Level.intValue ()I
      // 0b3: if_icmple 0c5
      // 0b6: aload 1
      // 0b7: aload 5
      // 0b9: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setAuditLevel (Ljava/util/logging/Level;)V 2
      // 0be: goto 0c5
      // 0c1: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0c4: athrow
      // 0c5: ldc ""
      // 0c7: astore 4
      // 0c9: aload 1
      // 0ca: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getService ()Lcom/l7tech/gateway/common/service/PublishedService; 1
      // 0cf: ifnull 0f7
      // 0d2: aload 1
      // 0d3: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getService ()Lcom/l7tech/gateway/common/service/PublishedService; 1
      // 0d8: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 0db: aload 1
      // 0dc: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getService ()Lcom/l7tech/gateway/common/service/PublishedService; 1
      // 0e1: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 0e4: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0e7: getstatic com/l7tech/server/MessageProcessor.z [Ljava/lang/String;
      // 0ea: bipush 32
      // 0ec: aaload
      // 0ed: swap
      // 0ee: ldc "]"
      // 0f0: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;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\u0001\u0001" ]
      // 0f5: astore 4
      // 0f7: aload 0
      // 0f8: getfield com/l7tech/server/MessageProcessor.x Lcom/l7tech/server/audit/Auditor;
      // 0fb: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.POLICY_EVALUATION_RESULT Lcom/l7tech/gateway/common/audit/Messages$M;
      // 0fe: bipush 3
      // 0ff: anewarray 372
      // 102: dup
      // 103: bipush 0
      // 104: aload 4
      // 106: aastore
      // 107: dup
      // 108: bipush 1
      // 109: aload 2
      // 10a: invokevirtual com/l7tech/policy/assertion/AssertionStatus.getNumeric ()I
      // 10d: invokestatic java/lang/String.valueOf (I)Ljava/lang/String;
      // 110: aastore
      // 111: dup
      // 112: bipush 2
      // 113: aload 2
      // 114: invokevirtual com/l7tech/policy/assertion/AssertionStatus.getMessage ()Ljava/lang/String;
      // 117: aastore
      // 118: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 11b: aload 2
      // 11c: areturn
      // try (3 -> 9): 10 java/lang/IllegalArgumentException
      // try (6 -> 15): 16 java/lang/IllegalArgumentException
      // try (12 -> 36): 36 java/lang/IllegalArgumentException
      // try (78 -> 87): 88 java/lang/IllegalArgumentException
   }

   private void c(PolicyEnforcementContext var1) {
      this.e(var1);
      this.d(var1);
   }

   private void d(PolicyEnforcementContext var1) {
      try {
         if (!var1.isPolicyExecutionAttempted() || !this.i.isEnabled()) {
            return;
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      int var2 = (int)(var1.getEndTime() - var1.getStartTime());
      int var3 = (int)var1.getRoutingTotalTime();

      Goid var10000;
      label23: {
         try {
            if (var1.getService() == null) {
               var10000 = PublishedService.DEFAULT_GOID;
               break label23;
            }
         } catch (IllegalArgumentException var5) {
            throw a(var5);
         }

         var10000 = var1.getService().getGoid();
      }

      Goid var4 = var10000;
      this.i
         .addRequest(
            var4,
            this.f(var1),
            var1.getDefaultAuthenticationContext().getLastAuthenticatedUser(),
            var1.getMappings(),
            var1.isAuthorizedRequest(),
            var1.isCompletedRequest(),
            var2,
            var3
         );
   }

   private void e(PolicyEnforcementContext 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 0
      // 01: getfield com/l7tech/server/MessageProcessor.s Lcom/l7tech/server/cluster/ServiceUsageManager;
      // 04: invokeinterface com/l7tech/server/cluster/ServiceUsageManager.isEnabled ()Z 1
      // 09: ifne 11
      // 0c: return
      // 0d: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10: athrow
      // 11: aload 1
      // 12: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getService ()Lcom/l7tech/gateway/common/service/PublishedService; 1
      // 17: astore 2
      // 18: aload 2
      // 19: ifnull 64
      // 1c: aload 1
      // 1d: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.isPolicyExecutionAttempted ()Z 1
      // 22: ifeq 64
      // 25: goto 2c
      // 28: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2b: athrow
      // 2c: aload 0
      // 2d: getfield com/l7tech/server/MessageProcessor.c Lcom/l7tech/server/service/ServiceCache;
      // 30: aload 2
      // 31: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 34: invokevirtual com/l7tech/server/service/ServiceCache.getServiceStatistics (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/gateway/common/service/ServiceStatistics;
      // 37: astore 3
      // 38: aload 3
      // 39: invokevirtual com/l7tech/gateway/common/service/ServiceStatistics.attemptedRequest ()V
      // 3c: aload 1
      // 3d: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.isAuthorizedRequest ()Z 1
      // 42: ifeq 64
      // 45: aload 3
      // 46: invokevirtual com/l7tech/gateway/common/service/ServiceStatistics.authorizedRequest ()V
      // 49: aload 1
      // 4a: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.isCompletedRequest ()Z 1
      // 4f: ifeq 64
      // 52: goto 59
      // 55: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 58: athrow
      // 59: aload 3
      // 5a: invokevirtual com/l7tech/gateway/common/service/ServiceStatistics.completedRequest ()V
      // 5d: goto 64
      // 60: invokestatic com/l7tech/server/MessageProcessor.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 63: athrow
      // 64: return
      // try (0 -> 5): 5 java/lang/IllegalArgumentException
      // try (10 -> 15): 16 java/lang/IllegalArgumentException
      // try (24 -> 34): 35 java/lang/IllegalArgumentException
      // try (29 -> 39): 40 java/lang/IllegalArgumentException
   }

   public void registerTrafficMonitorCallback(TrafficMonitor var1) {
      try {
         if (!this.o.contains(var1)) {
            this.o.add(var1);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }
   }

   private String f(PolicyEnforcementContext var1) {
      String var2 = null;

      try {
         Pair var3 = var1.getBindingAndOperation();
         if (var3 != null) {
            Operation var4 = (Operation)var3.right;
            var2 = var4.getName();
         }
      } catch (IOException var6) {
         Logger var15 = this.y;
         Level var18 = Level.INFO;
         String var21 = ExceptionUtils.getMessage(var6);
         String[] var12 = z;
         var15.log(var18, var12[22] + var21 + var12[0], ExceptionUtils.getDebugException(var6));
      } catch (SAXException var7) {
         Logger var14 = this.y;
         Level var17 = Level.INFO;
         String var20 = ExceptionUtils.getMessage(var7);
         String[] var11 = z;
         var14.log(var17, var11[17] + var20 + var11[21], ExceptionUtils.getDebugException(var7));
      } catch (WSDLException var8) {
         Logger var13 = this.y;
         Level var16 = Level.INFO;
         String var19 = ExceptionUtils.getMessage(var8);
         String[] var10 = z;
         var13.log(var16, var10[17] + var19 + var10[21], ExceptionUtils.getDebugException(var8));
      } catch (InvalidDocumentFormatException var9) {
         Logger var10000 = this.y;
         Level var10001 = Level.INFO;
         String var10002 = ExceptionUtils.getMessage(var9);
         String[] var5 = z;
         var10000.log(var10001, var5[17] + var10002 + var5[21], ExceptionUtils.getDebugException(var9));
      }

      return var2;
   }

   public void afterPropertiesSet() throws Exception {
      try {
         if (this.debugManager == null) {
            throw new IllegalArgumentException(z[8]);
         }
      } catch (Exception var1) {
         throw a(var1);
      }

      try {
         if (this.gatewayMetricsEventsPublisher == null) {
            throw new IllegalArgumentException(z[3]);
         }
      } catch (Exception var2) {
         throw a(var2);
      }

      this.x = new Auditor(this, this.getApplicationContext(), this.y);
   }

   private Level a(Set<AssertionStatus> var1) {
      Level var2 = Level.ALL;

      for (AssertionStatus var4 : var1) {
         if (var4.getLevel().intValue() > var2.intValue()) {
            var2 = var4.getLevel();
         }
      }

      return var2;
   }

   private boolean a() {
      return this.m.getBooleanProperty(z[18], false);
   }

   private boolean b() {
      return this.m.getBooleanProperty(z[12], false);
   }

   public boolean isRelayGatewayMetricsEnable() {
      return this.r.get();
   }

   static {
      String[] var5 = new String[33];
      int var3 = 0;
      String var2 = "Vs\u001f\u0010(\u000fBJ2\u0019\u001f)\u000eSJ7\u0017\u0012)\u0004YGQ\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f.\u0006.\u0018\u0005N\u0003\u0019\u00128\u0018XQ\u0003X\u00101\u0007DI<\u0003\u001d)\u0002[R\u0014\"\u00180\u000eXJ\u0010\u001b\u0001\u000e\u0002LP\u0010\u0002\u0004/\u000eX+6<\u001fNI\u0010\u000f<8\u001fYW\u0012\u0005Q8\u001dNP\u0005\u0005Q-\u001eIR\u0018\u0005\u00198\u0019\u000bW\u0002V\u00038\u001a^W\u0003\u0013\u0015\u001c<8\u0018X_\u0016\u0013!/\u0004H[\u0002\u0005\u001e/EX_\u0007\u0013#8\u001a^[\u0002\u00023\u0006.\u0018\u0005N\u0003\u0019\u00128\u0018XQ\u0003X\u0002)\u0019B]\u0005%\u0018:\u0005JJ\u0004\u0004\u0014\u001e\u0004EX\u0018\u0004\u001c<\u001fBQ\u001f \u00101\u0002O_\u0005\u001f\u001e3\u001e<8\u0018X_\u0016\u0013Q-\u0019D]\u0014\u0005\u00024\u0005L\u001e\u0002\u0003\u0002-\u000eEZ\u0014\u0012K}.\u0006.\u0018\u0005N\u0003\u0019\u00128\u0018XQ\u0003X\u00101\u0007DI$\u0018\u001a3\u0004\\P3\u001f\u001f<\u0019Rm\u0014\u0015\u0004/\u0002_G%\u0019\u001a8\u0005X\u001958\t^YQ;\u00103\nL[\u0003V\u0018.KY[\u0000\u0003\u0018/\u000eO\u001d<8\u0018X_\u0016\u0013!/\u0004H[\u0002\u0005\u001e/EX_\u0007\u0013#8\u0018[Q\u001f\u0005\u0014\u001a%/\nMX\u0018\u0015Q\u0011\u0004LY\u0014\u0004Q4\u0018\u000bL\u0014\u0007\u00044\u0019NZ%<4\u0018XW\u001f\u0011Q2\u0019\u000bW\u001f\u0000\u00101\u0002O\u001e\u0012\u0019\u001f)\u000eSJQ\u0000\u0010/\u0002J\\\u001d\u0013K}\u001b\u0010(\u000fBJ0\u0005\u00028\u0019_W\u001e\u0018\")\n_K\u00023\u001f<\tG[\u0015\u001a\u00182*_J\u0010\u0015\u00190\u000eEJ\"\u001f\u00163\u000eOs\u0010\u000e3$\u001fNM\u0011\u001823FR!\u0017\u0003)&JF3\u000f\u00058\u0018\u0018\u00022\n[l\u0014\u001c\u0014>\u001ffK\u0002\u0002$3\u000fNL\u0002\u0002\u00103\u000f\u0019\"8\u0019]W\u0012\u0013Q\u001e\nHV\u0014V\u0018.KY[\u0000\u0003\u0018/\u000eO$22\u001eGZQ\u0018\u001e)KO[\u0005\u0013\u00030\u0002E[Q\u0005\u001e<\u001b\u000bQ\u0001\u0013\u0003<\u001fBQ\u001fVV\u0013\u0010(\u000fBJ9\u001f\u001f)\u0002EY4\u0018\u0010?\u0007NZ\u0018\u00028\u0019]W\u0012\u0013K\u0010\u000eXM\u0010\u0011\u0014\r\u0019D]\u0014\u0005\u00022\u0019\u0018!2\u0007B]\bV2<\bC[Q\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f\u0002Vs$22\u001eGZQ\u0018\u001e)KO[\u0005\u0013\u00030\u0002E[Q\u0005\u001e<\u001b\u000bQ\u0001\u0013\u0003<\u001fBQ\u001fVV#\"8\u0019]W\u0012\u0013Q\u0010\u000e_L\u0018\u0015\u0002}&JP\u0010\u0011\u0014/KBMQ\u0004\u0014,\u001eBL\u0014\u0012\u0019\"8\u0019][\u0003V22\u0005MW\u0016V\u0018.KY[\u0000\u0003\u0018/\u000eO\u0019&.\u0018\u000bz\u0014\u0015\u001e/\n_Q\u0003V\u0018.KY[\u0000\u0003\u0018/\u000eO&<8\u0018X_\u0016\u0013Q\r\u0019D]\u0014\u0005\u00022\u0019\u000bw\u001f\u001c\u0014>\u001fDLQ\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f\u001a\u00038\u0007JG6\u0017\u00058\u001cJG<\u0013\u0005/\u0002HM_\u0013\u001f<\tG[\u001c<8\u0018X_\u0016\u0013Q-\u0019D]\u0014\u0005\u00024\u0005L\u001e\u0002\u0003\u0002-\u000eEZ\u0014\u0012\u001b=4\bNP\u0002\u0013Q\u0010\nE_\u0016\u0013\u0003}\u0002X\u001e\u0003\u0013\u0000(\u0002Y[\u0015&4%\u001fNP\u0002\u001f\u001e3Kf[\u0015\u001f\u0010)\u0004Y\u001e7\u0017\u0012)\u0004YGQ\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f";
      int var4 = "Vs\u001f\u0010(\u000fBJ2\u0019\u001f)\u000eSJ7\u0017\u0012)\u0004YGQ\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f.\u0006.\u0018\u0005N\u0003\u0019\u00128\u0018XQ\u0003X\u00101\u0007DI<\u0003\u001d)\u0002[R\u0014\"\u00180\u000eXJ\u0010\u001b\u0001\u000e\u0002LP\u0010\u0002\u0004/\u000eX+6<\u001fNI\u0010\u000f<8\u001fYW\u0012\u0005Q8\u001dNP\u0005\u0005Q-\u001eIR\u0018\u0005\u00198\u0019\u000bW\u0002V\u00038\u001a^W\u0003\u0013\u0015\u001c<8\u0018X_\u0016\u0013!/\u0004H[\u0002\u0005\u001e/EX_\u0007\u0013#8\u001a^[\u0002\u00023\u0006.\u0018\u0005N\u0003\u0019\u00128\u0018XQ\u0003X\u0002)\u0019B]\u0005%\u0018:\u0005JJ\u0004\u0004\u0014\u001e\u0004EX\u0018\u0004\u001c<\u001fBQ\u001f \u00101\u0002O_\u0005\u001f\u001e3\u001e<8\u0018X_\u0016\u0013Q-\u0019D]\u0014\u0005\u00024\u0005L\u001e\u0002\u0003\u0002-\u000eEZ\u0014\u0012K}.\u0006.\u0018\u0005N\u0003\u0019\u00128\u0018XQ\u0003X\u00101\u0007DI$\u0018\u001a3\u0004\\P3\u001f\u001f<\u0019Rm\u0014\u0015\u0004/\u0002_G%\u0019\u001a8\u0005X\u001958\t^YQ;\u00103\nL[\u0003V\u0018.KY[\u0000\u0003\u0018/\u000eO\u001d<8\u0018X_\u0016\u0013!/\u0004H[\u0002\u0005\u001e/EX_\u0007\u0013#8\u0018[Q\u001f\u0005\u0014\u001a%/\nMX\u0018\u0015Q\u0011\u0004LY\u0014\u0004Q4\u0018\u000bL\u0014\u0007\u00044\u0019NZ%<4\u0018XW\u001f\u0011Q2\u0019\u000bW\u001f\u0000\u00101\u0002O\u001e\u0012\u0019\u001f)\u000eSJQ\u0000\u0010/\u0002J\\\u001d\u0013K}\u001b\u0010(\u000fBJ0\u0005\u00028\u0019_W\u001e\u0018\")\n_K\u00023\u001f<\tG[\u0015\u001a\u00182*_J\u0010\u0015\u00190\u000eEJ\"\u001f\u00163\u000eOs\u0010\u000e3$\u001fNM\u0011\u001823FR!\u0017\u0003)&JF3\u000f\u00058\u0018\u0018\u00022\n[l\u0014\u001c\u0014>\u001ffK\u0002\u0002$3\u000fNL\u0002\u0002\u00103\u000f\u0019\"8\u0019]W\u0012\u0013Q\u001e\nHV\u0014V\u0018.KY[\u0000\u0003\u0018/\u000eO$22\u001eGZQ\u0018\u001e)KO[\u0005\u0013\u00030\u0002E[Q\u0005\u001e<\u001b\u000bQ\u0001\u0013\u0003<\u001fBQ\u001fVV\u0013\u0010(\u000fBJ9\u001f\u001f)\u0002EY4\u0018\u0010?\u0007NZ\u0018\u00028\u0019]W\u0012\u0013K\u0010\u000eXM\u0010\u0011\u0014\r\u0019D]\u0014\u0005\u00022\u0019\u0018!2\u0007B]\bV2<\bC[Q\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f\u0002Vs$22\u001eGZQ\u0018\u001e)KO[\u0005\u0013\u00030\u0002E[Q\u0005\u001e<\u001b\u000bQ\u0001\u0013\u0003<\u001fBQ\u001fVV#\"8\u0019]W\u0012\u0013Q\u0010\u000e_L\u0018\u0015\u0002}&JP\u0010\u0011\u0014/KBMQ\u0004\u0014,\u001eBL\u0014\u0012\u0019\"8\u0019][\u0003V22\u0005MW\u0016V\u0018.KY[\u0000\u0003\u0018/\u000eO\u0019&.\u0018\u000bz\u0014\u0015\u001e/\n_Q\u0003V\u0018.KY[\u0000\u0003\u0018/\u000eO&<8\u0018X_\u0016\u0013Q\r\u0019D]\u0014\u0005\u00022\u0019\u000bw\u001f\u001c\u0014>\u001fDLQ\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f\u001a\u00038\u0007JG6\u0017\u00058\u001cJG<\u0013\u0005/\u0002HM_\u0013\u001f<\tG[\u001c<8\u0018X_\u0016\u0013Q-\u0019D]\u0014\u0005\u00024\u0005L\u001e\u0002\u0003\u0002-\u000eEZ\u0014\u0012\u001b=4\bNP\u0002\u0013Q\u0010\nE_\u0016\u0013\u0003}\u0002X\u001e\u0003\u0013\u0000(\u0002Y[\u0015&4%\u001fNP\u0002\u001f\u001e3Kf[\u0015\u001f\u0010)\u0004Y\u001e7\u0017\u0012)\u0004YGQ\u001f\u0002}\u0019NO\u0004\u001f\u00038\u000f"
         .length();
      char var1 = 2;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 47;
         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) {
                     z = var5;
                     u = Level.INFO;
                     String[] var8 = z;
                     v = Hint.getHint(var8[4]);
                     w = Hint.getHint(var8[9]);
                     return;
                  }

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

                  var2 = "\u0000\u001a;\u007fu01s*:h{6t\u001e\u001e'h{6&s\u0016:)n6%&\u0016;lx\u0002s$";
                  var4 = "\u0000\u001a;\u007fu01s*:h{6t\u001e\u001e'h{6&s\u0016:)n6%&\u0016;lx\u0002s$".length();
                  var1 = '!';
                  var7 = -1;
            }

            var10000 = 13;
            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] ^ 89);
      }

      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 -> 94;
            case 1 -> 114;
            case 2 -> 68;
            case 3 -> 4;
            case 4 -> 17;
            case 5 -> 94;
            default -> 89;
         });
      }

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

   public enum SuspendStatus {
      INSTANCE;

      private boolean suspended = false;
      private String reason = "";
      private final ReadWriteLock mutex = new ReentrantReadWriteLock(false);

      public boolean isSuspended() {
         try {
            this.mutex.readLock().lock();
            return this.suspended;
         } finally {
            this.mutex.readLock().unlock();
         }
      }

      public void suspend() {
         try {
            this.mutex.writeLock().lock();
            this.suspended = true;
            this.reason = "";
         } finally {
            this.mutex.writeLock().unlock();
         }
      }

      public void suspend(String var1) {
         try {
            this.mutex.writeLock().lock();
            this.suspended = true;
            this.reason = var1;
         } finally {
            this.mutex.writeLock().unlock();
         }
      }

      public void resume() {
         try {
            this.mutex.writeLock().lock();
            this.suspended = false;
         } finally {
            this.mutex.writeLock().unlock();
         }
      }

      public String getReason() {
         try {
            this.mutex.readLock().lock();
            return this.reason;
         } finally {
            this.mutex.readLock().unlock();
         }
      }

      // $VF: Failed to inline enum fields
      // 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!)
      static {
         String var10002 = a(43, a("\b\u000e;b)P[\u0004"));
         byte var10001 = -1;
         String var0 = var10002;
         INSTANCE = new MessageProcessor.SuspendStatus();
      }

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

         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 -> 106;
               case 1 -> 107;
               case 2 -> 67;
               case 3 -> 29;
               case 4 -> 67;
               case 5 -> 53;
               default -> 51;
            });
         }

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