package com.l7tech.server.policy;

import com.l7tech.identity.User;
import com.l7tech.message.HttpServletResponseKnob;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.event.system.PolicyServiceEvent;
import com.l7tech.server.message.PolicyEnforcementContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;

class ab implements Callable<Void> {
   final HttpServletRequest val$servletRequest;
   final PolicyEnforcementContext val$finalContext;
   final HttpServletResponse val$servletResponse;
   final Message val$response;
   final boolean[] val$success;
   final PolicyServlet this$0;
   private static final String[] a;

   ab(PolicyServlet var1, HttpServletRequest var2, PolicyEnforcementContext var3, HttpServletResponse var4, Message var5, boolean[] var6) {
      this.this$0 = var1;
      this.val$servletRequest = var2;
      this.val$finalContext = var3;
      this.val$servletResponse = var4;
      this.val$response = var5;
      this.val$success = var6;
   }

   // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow.
   // 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!)
   public Void call() throws Exception {
      boolean var26 = false /* VF: Semaphore variable */;

      label198: {
         Object var5;
         label199: {
            try {
               label200: {
                  var26 = true;
                  PolicyService var1 = this.this$0.getPolicyService();

                  try {
                     boolean var2 = this.this$0.systemAllowsDisabledServiceDownloads(this.val$servletRequest);
                     var1.respondToPolicyDownloadRequest(this.val$finalContext, true, this.this$0.normalPolicyGetter(true, var2, false));
                  } catch (IllegalStateException var28) {
                     this.this$0.sendExceptionFault(this.val$finalContext, var28, this.val$servletResponse);
                  }

                  HttpServletResponseKnob var42 = (HttpServletResponseKnob)this.val$response.getHttpResponseKnob();

                  try {
                     var42.beginResponse();
                     if (var42.getStatus() == 0) {
                        this.val$servletResponse.setStatus(200);
                     }
                  } catch (IllegalStateException var27) {
                     throw a(var27);
                  }

                  try {
                     if (this.val$finalContext.getPolicyResult() != AssertionStatus.NONE) {
                        this.this$0.returnFault(this.val$finalContext, this.val$servletResponse);
                        var26 = false;
                        break label198;
                     }
                  } catch (IllegalStateException var37) {
                     throw a(var37);
                  }

                  Document var3;
                  try {
                     var3 = this.val$response.getXmlKnob().getDocumentReadOnly();
                  } catch (SAXException var38) {
                     this.this$0.sendExceptionFault(this.val$finalContext, var38, this.val$servletResponse);
                     var5 = null;
                     var26 = false;
                     break label200;
                  } catch (IllegalStateException var39) {
                     this.this$0.sendExceptionFault(this.val$finalContext, var39, this.val$servletResponse);
                     var5 = null;
                     var26 = false;
                     break label199;
                  }

                  this.this$0.outputPolicyDoc(this.val$servletResponse, var3);
                  this.val$success[0] = true;
                  var26 = false;
                  break label198;
               }
            } finally {
               if (var26) {
                  try {
                     String var10000;
                     label149: {
                        try {
                           if (this.val$success[0]) {
                              var10000 = a[1];
                              break label149;
                           }
                        } catch (IllegalStateException var29) {
                           throw a(var29);
                        }

                        String[] var11 = a;
                        var10000 = var11[0];
                     }

                     String var9 = var10000;
                     User var10 = this.this$0.getUser(this.val$finalContext);
                     PolicyServlet.access$000(this.this$0)
                        .publishEvent(
                           new PolicyServiceEvent(
                              this, Level.INFO, this.val$servletRequest.getRemoteAddr(), var9, var10.getProviderId(), this.this$0.getName(var10), var10.getId()
                           )
                        );
                  } catch (Exception var30) {
                     PolicyServlet.access$100(this.this$0).log(Level.WARNING, a[3], var30);
                  }
               }
            }

            try {
               String var61;
               label168: {
                  try {
                     if (this.val$success[0]) {
                        var61 = a[2];
                        break label168;
                     }
                  } catch (IllegalStateException var33) {
                     throw a(var33);
                  }

                  String[] var50 = a;
                  var61 = var50[4];
               }

               String var45 = var61;
               User var46 = this.this$0.getUser(this.val$finalContext);
               PolicyServlet.access$000(this.this$0)
                  .publishEvent(
                     new PolicyServiceEvent(
                        this, Level.INFO, this.val$servletRequest.getRemoteAddr(), var45, var46.getProviderId(), this.this$0.getName(var46), var46.getId()
                     )
                  );
            } catch (Exception var34) {
               Logger var60 = PolicyServlet.access$100(this.this$0);
               String[] var49 = a;
               var60.log(Level.WARNING, var49[5], var34);
            }

            return (Void)var5;
         }

         try {
            String var59;
            label159: {
               try {
                  if (this.val$success[0]) {
                     var59 = a[1];
                     break label159;
                  }
               } catch (IllegalStateException var31) {
                  throw a(var31);
               }

               String[] var48 = a;
               var59 = var48[0];
            }

            String var6 = var59;
            User var7 = this.this$0.getUser(this.val$finalContext);
            PolicyServlet.access$000(this.this$0)
               .publishEvent(
                  new PolicyServiceEvent(
                     this, Level.INFO, this.val$servletRequest.getRemoteAddr(), var6, var7.getProviderId(), this.this$0.getName(var7), var7.getId()
                  )
               );
         } catch (Exception var32) {
            Logger var58 = PolicyServlet.access$100(this.this$0);
            String[] var47 = a;
            var58.log(Level.WARNING, var47[3], var32);
         }

         return (Void)var5;
      }

      try {
         String var63;
         label177: {
            try {
               if (this.val$success[0]) {
                  var63 = a[1];
                  break label177;
               }
            } catch (IllegalStateException var35) {
               throw a(var35);
            }

            String[] var52 = a;
            var63 = var52[0];
         }

         String var41 = var63;
         User var43 = this.this$0.getUser(this.val$finalContext);
         PolicyServlet.access$000(this.this$0)
            .publishEvent(
               new PolicyServiceEvent(
                  this, Level.INFO, this.val$servletRequest.getRemoteAddr(), var41, var43.getProviderId(), this.this$0.getName(var43), var43.getId()
               )
            );
      } catch (Exception var36) {
         Logger var62 = PolicyServlet.access$100(this.this$0);
         String[] var51 = a;
         var62.log(Level.WARNING, var51[3], var36);
      }

      return null;
   }

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

   static {
      String[] var5 = new String[6];
      int var3 = 0;
      String var2 = ".OJ\u0012@hd-ET\rJr!D\u0000`\u001aJ}!\u001a\u0017.OJ\u0012@hd-ET\rJr!D\u0000u\u000e@r!\rS\u0017.OJ\u0012@hd-ET\rJr!D\u0000u\u000e@r!\rS\u0016;RT\u0014Q14\u000bBJ\u0012Py-\u0010G\u0006\u001eUt*\n";
      int var4 = ".OJ\u0012@hd-ET\rJr!D\u0000`\u001aJ}!\u001a\u0017.OJ\u0012@hd-ET\rJr!D\u0000u\u000e@r!\rS\u0017.OJ\u0012@hd-ET\rJr!D\u0000u\u000e@r!\rS\u0016;RT\u0014Q14\u000bBJ\u0012Py-\u0010G\u0006\u001eUt*\n"
         .length();
      char var1 = 22;
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     a = var5;
                     return;
                  }

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

                  var2 = "}\u001c\u0019A\u0013;7~\u0016\u0007^\u0019!r\u0017S3I\u0019.rI\u0016h\u0001\u0007G\u0002bgX\u0011\u0019A\u0003*~C\u0014UM\u0006'yY";
                  var4 = "}\u001c\u0019A\u0013;7~\u0016\u0007^\u0019!r\u0017S3I\u0019.rI\u0016h\u0001\u0007G\u0002bgX\u0011\u0019A\u0003*~C\u0014UM\u0006'yY"
                     .length();
                  var1 = 22;
                  var7 = -1;
            }

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

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

      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 -> 95;
            case 1 -> 1;
            case 2 -> 7;
            case 3 -> 90;
            case 4 -> 2;
            case 5 -> 48;
            default -> 101;
         });
      }

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