package com.l7tech.server;

import com.l7tech.common.http.GenericHttpClientFactory;
import com.l7tech.common.http.GenericHttpHeader;
import com.l7tech.common.http.GenericHttpRequest;
import com.l7tech.common.http.GenericHttpRequestParams;
import com.l7tech.common.http.GenericHttpResponse;
import com.l7tech.common.http.HttpHeader;
import com.l7tech.common.http.HttpMethod;
import com.l7tech.common.protocol.SecureSpanConstants;
import com.l7tech.gateway.common.LicenseException;
import com.l7tech.gateway.common.audit.AuditDetail;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.ServiceMessages;
import com.l7tech.gateway.common.cluster.ClusterNodeInfo;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.gateway.common.security.rbac.Role.Tag;
import com.l7tech.gateway.common.transport.SsgConnector.Endpoint;
import com.l7tech.identity.BadCredentialsException;
import com.l7tech.identity.IssuedCertNotPresentedException;
import com.l7tech.identity.MissingCredentialsException;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.FindException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.server.cluster.ClusterInfoManager;
import com.l7tech.server.event.system.BackupEvent;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.security.rbac.RoleManager;
import com.l7tech.server.transport.ListenerException;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.ResourceUtils;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.util.Arrays;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class BackupServlet extends AuthenticatableHttpServlet {
   private static final Logger _logger;
   private WebApplicationContext _webApplicationContext;
   private ClusterInfoManager _clusterInfoManager;
   private RoleManager _roleManager;
   private GenericHttpClientFactory _httpClientFactory;
   static final long serialVersionUID = -5821429193704728158L;
   private static final String[] b;

   @Override
   protected String getFeature() {
      return b[2];
   }

   @Override
   protected Endpoint getRequiredEndpoint() {
      return Endpoint.ADMIN_REMOTE_SSM;
   }

   @Override
   public void init(ServletConfig var1) throws ServletException {
      try {
         super.init(var1);
         this._webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
         if (this._webApplicationContext == null) {
            throw new ServletException(b[16]);
         }
      } catch (ServletException var3) {
         throw a(var3);
      }

      String[] var2 = b;
      this._clusterInfoManager = (ClusterInfoManager)this._webApplicationContext.getBean(var2[80]);
      this._roleManager = (RoleManager)this._webApplicationContext.getBean(var2[56]);
      this._httpClientFactory = (GenericHttpClientFactory)this._webApplicationContext.getBean(var2[88]);
   }

   public void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
      try {
         if (!var1.isSecure()) {
            this.logAndAudit(this.getOriginalClientAddr(var1), null, b[73], ServiceMessages.BACKUP_NOT_SSL, null);
            this.respondError(var2, 403, b[45]);
            return;
         }
      } catch (BadCredentialsException var14) {
         throw a(var14);
      }

      try {
         if (this.findCredentialsBasic(var1) == null) {
            _logger.fine(b[6]);
            this.doHttpBasicChallenge(var2);
            return;
         }
      } catch (BadCredentialsException var19) {
         throw a(var19);
      }

      AuthenticationResult[] var3;
      try {
         var3 = this.authenticateRequestBasic(var1, true);
      } catch (BadCredentialsException var9) {
         String var31 = this.getOriginalClientAddr(var1);
         String[] var25 = b;
         this.logAndAudit(var31, null, var25[57], ServiceMessages.BACKUP_BAD_CREDENTIALS, ExceptionUtils.getDebugException(var9));
         this.respondError(var2, 403, var25[22]);
         return;
      } catch (MissingCredentialsException var10) {
         String var30 = this.getOriginalClientAddr(var1);
         String[] var24 = b;
         this.logAndAudit(var30, null, var24[57], ServiceMessages.BACKUP_BAD_CREDENTIALS, ExceptionUtils.getDebugException(var10));
         this.respondError(var2, 403, var24[43]);
         return;
      } catch (IssuedCertNotPresentedException var11) {
         String var29 = this.getOriginalClientAddr(var1);
         String[] var23 = b;
         this.logAndAudit(var29, null, var23[57], ServiceMessages.BACKUP_NO_CLIENT_CERT, ExceptionUtils.getDebugException(var11));
         this.respondError(var2, 403, var23[32]);
         return;
      } catch (LicenseException var12) {
         String var28 = this.getOriginalClientAddr(var1);
         String[] var22 = b;
         this.logAndAudit(var28, null, var22[57], ServiceMessages.BACKUP_NOT_LICENSED, var12);
         this.respondError(var2, 403, var22[53]);
         return;
      } catch (ListenerException var13) {
         String var10001 = this.getOriginalClientAddr(var1);
         String[] var8 = b;
         this.logAndAudit(var10001, null, var8[57], ServiceMessages.BACKUP_BAD_CONNECTOR, var13);
         this.respondError(var2, 403, var8[39]);
         return;
      }

      try {
         if (var3.length <= 0) {
            this.logAndAudit(this.getOriginalClientAddr(var1), null, b[57], ServiceMessages.BACKUP_NO_AUTHENTICATED_USER, null);
            this.respondError(var2, 403, b[87]);
            return;
         }
      } catch (BadCredentialsException var18) {
         throw a(var18);
      }

      User var4 = var3[0].getUser();

      try {
         boolean var5 = false;

         for (Role var7 : this._roleManager.getAssignedRoles(var4)) {
            if (var7.getTag() == Tag.ADMIN) {
               var5 = true;
               break;
            }
         }

         if (!var5) {
            String var33 = this.getOriginalClientAddr(var1);
            String[] var27 = b;
            this.logAndAudit(var33, var4, var27[57], ServiceMessages.BACKUP_NO_PERMISSION, null, var4.getName());
            this.respondError(var2, 403, var27[24]);
            return;
         }
      } catch (FindException var17) {
         String var32 = this.getOriginalClientAddr(var1);
         String[] var26 = b;
         this.logAndAudit(var32, var4, var26[15], ServiceMessages.BACKUP_PERMISSION_CHECK_FAILED, var17);
         this.respondError(var2, 500, var26[27]);
         return;
      }

      String var20 = var1.getParameter(b[48]);

      try {
         if (var20 == null) {
            this.doMainPage(var2);
            return;
         }
      } catch (BadCredentialsException var16) {
         throw a(var16);
      }

      String var21 = this._clusterInfoManager.getSelfNodeInf().getName();

      try {
         if (var20.equals(var21)) {
            this.doBackup(var1, var2, var21, var4);
            return;
         }
      } catch (BadCredentialsException var15) {
         throw a(var15);
      }

      this.routeBackup(var1, var2, var20, var4);
   }

   private void doMainPage(HttpServletResponse var1) throws IOException {
      Collection var2;
      try {
         var2 = this._clusterInfoManager.retrieveClusterStatus();
      } catch (FindException var10) {
         Logger var10000 = _logger;
         String var10001 = var10.toString();
         String[] var7 = b;
         var10000.warning(var7[12] + var10001);
         this.respondError(var1, 500, var7[8]);
         return;
      }

      String[] var12 = b;
      var1.setContentType(var12[35]);
      PrintWriter var3 = var1.getWriter();

      try {
         var3.println(var12[47]);
         var3.println(var12[69]);
         var3.println(var12[29]);
         var3.println(var12[41]);
         var3.println(var12[51]);
         var3.println(var12[82]);
         var3.println(var12[64]);
         var3.println(var12[25]);
         var3.println(var12[44]);
         var3.println(var12[42]);
         var3.println(var12[59]);
         var3.println(var12[11]);
         var3.println("}");
         var3.println(var12[70]);
         var3.println(var12[1]);
         var3.println(var12[61]);
         var3.println(var12[66]);
         var3.println(var12[9]);
         var3.println(var12[10]);
         var3.println(var12[52]);

         for (ClusterNodeInfo var5 : var2) {
            var12 = b;
            var3.println(var12[67]);
            var3.println(var12[60]);
            var3.println(var12[46] + var5.getName() + var12[83]);
            var3.println(var12[85] + var5.getName() + var12[4]);
            var3.println(var12[71]);
         }

         var12 = b;
         var3.println(var12[20]);
         var3.println(var12[7]);
      } finally {
         var3.close();
      }
   }

   private void doBackup(HttpServletRequest param1, HttpServletResponse param2, String param3, User param4) throws IOException {
      // $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: aconst_null
      // 001: astore 5
      // 003: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 006: astore 23
      // 008: aload 23
      // 00a: bipush 75
      // 00c: aaload
      // 00d: aload 23
      // 00f: bipush 33
      // 011: aaload
      // 012: aconst_null
      // 013: bipush 0
      // 014: invokestatic com/l7tech/util/FileUtils.createTempDirectory (Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)Ljava/io/File;
      // 017: astore 5
      // 019: aload 23
      // 01b: bipush 30
      // 01d: aaload
      // 01e: astore 6
      // 020: aload 23
      // 022: bipush 81
      // 024: aaload
      // 025: invokestatic com/l7tech/util/ConfigFactory.getProperty (Ljava/lang/String;)Ljava/lang/String;
      // 028: astore 7
      // 02a: new java/io/File
      // 02d: dup
      // 02e: aload 7
      // 030: aload 23
      // 032: bipush 77
      // 034: aaload
      // 035: invokespecial java/io/File.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 038: astore 8
      // 03a: aload 1
      // 03b: aload 23
      // 03d: bipush 74
      // 03f: aaload
      // 040: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2
      // 045: astore 9
      // 047: aload 9
      // 049: ifnull 068
      // 04c: aload 9
      // 04e: aload 23
      // 050: bipush 23
      // 052: aaload
      // 053: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 056: ifeq 068
      // 059: goto 060
      // 05c: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 05f: athrow
      // 060: bipush 1
      // 061: goto 069
      // 064: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 067: athrow
      // 068: bipush 0
      // 069: istore 10
      // 06b: new java/util/ArrayList
      // 06e: dup
      // 06f: invokespecial java/util/ArrayList.<init> ()V
      // 072: astore 11
      // 074: aload 11
      // 076: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 079: bipush 19
      // 07b: aaload
      // 07c: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 081: pop
      // 082: aload 11
      // 084: new java/io/File
      // 087: dup
      // 088: aload 5
      // 08a: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 08d: bipush 76
      // 08f: aaload
      // 090: invokespecial java/io/File.<init> (Ljava/io/File;Ljava/lang/String;)V
      // 093: invokevirtual java/io/File.getCanonicalPath ()Ljava/lang/String;
      // 096: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 09b: pop
      // 09c: iload 10
      // 09e: ifeq 0b6
      // 0a1: aload 11
      // 0a3: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 0a6: bipush 14
      // 0a8: aaload
      // 0a9: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 0ae: pop
      // 0af: goto 0b6
      // 0b2: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0b5: athrow
      // 0b6: aload 8
      // 0b8: new java/io/File
      // 0bb: dup
      // 0bc: aload 8
      // 0be: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 0c1: astore 23
      // 0c3: aload 23
      // 0c5: bipush 54
      // 0c7: aaload
      // 0c8: invokespecial java/io/File.<init> (Ljava/io/File;Ljava/lang/String;)V
      // 0cb: aload 11
      // 0cd: aload 11
      // 0cf: invokeinterface java/util/List.size ()I 1
      // 0d4: anewarray 562
      // 0d7: invokeinterface java/util/List.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2
      // 0dc: checkcast [Ljava/lang/String;
      // 0df: aconst_null
      // 0e0: checkcast [B
      // 0e3: bipush 0
      // 0e4: invokestatic com/l7tech/common/io/ProcUtils.exec (Ljava/io/File;Ljava/io/File;[Ljava/lang/String;[BZ)Lcom/l7tech/common/io/ProcResult;
      // 0e7: astore 12
      // 0e9: aload 0
      // 0ea: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 0ed: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level;
      // 0f0: aload 23
      // 0f2: bipush 78
      // 0f4: aaload
      // 0f5: new java/lang/String
      // 0f8: dup
      // 0f9: aload 12
      // 0fb: invokevirtual com/l7tech/common/io/ProcResult.getOutput ()[B
      // 0fe: invokespecial java/lang/String.<init> ([B)V
      // 101: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
      // 104: goto 16b
      // 107: astore 9
      // 109: aload 0
      // 10a: aload 0
      // 10b: aload 1
      // 10c: invokevirtual com/l7tech/server/BackupServlet.getOriginalClientAddr (Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String;
      // 10f: aload 4
      // 111: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 114: astore 23
      // 116: aload 23
      // 118: bipush 28
      // 11a: aaload
      // 11b: getstatic com/l7tech/gateway/common/audit/ServiceMessages.BACKUP_CANT_CREATE_IMAGE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 11e: aload 9
      // 120: bipush 1
      // 121: anewarray 562
      // 124: dup
      // 125: bipush 0
      // 126: aload 3
      // 127: aastore
      // 128: invokevirtual com/l7tech/server/BackupServlet.logAndAudit (Ljava/lang/String;Lcom/l7tech/identity/User;Ljava/lang/String;Lcom/l7tech/gateway/common/audit/AuditDetailMessage;Ljava/lang/Throwable;[Ljava/lang/String;)V
      // 12b: aload 0
      // 12c: aload 2
      // 12d: sipush 500
      // 130: aload 23
      // 132: bipush 17
      // 134: aaload
      // 135: invokevirtual com/l7tech/server/BackupServlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V
      // 138: aload 5
      // 13a: ifnull 16a
      // 13d: aload 5
      // 13f: invokestatic com/l7tech/util/FileUtils.deleteDir (Ljava/io/File;)Z
      // 142: istore 10
      // 144: iload 10
      // 146: ifne 16a
      // 149: aload 0
      // 14a: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 14d: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 150: aload 5
      // 152: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 155: aload 23
      // 157: bipush 37
      // 159: aaload
      // 15a: swap
      // 15b: invokedynamic makeConcatWithConstants (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" ]
      // 160: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 163: goto 16a
      // 166: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 169: athrow
      // 16a: return
      // 16b: aload 5
      // 16d: new com/l7tech/server/g
      // 170: dup
      // 171: aload 0
      // 172: invokespecial com/l7tech/server/g.<init> (Lcom/l7tech/server/BackupServlet;)V
      // 175: invokevirtual java/io/File.listFiles (Ljava/io/FilenameFilter;)[Ljava/io/File;
      // 178: astore 9
      // 17a: aload 9
      // 17c: arraylength
      // 17d: ifne 1e1
      // 180: aload 0
      // 181: aload 0
      // 182: aload 1
      // 183: invokevirtual com/l7tech/server/BackupServlet.getOriginalClientAddr (Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String;
      // 186: aload 4
      // 188: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 18b: astore 23
      // 18d: aload 23
      // 18f: bipush 17
      // 191: aaload
      // 192: getstatic com/l7tech/gateway/common/audit/ServiceMessages.BACKUP_CANNOT_FIND_BACKUP Lcom/l7tech/gateway/common/audit/Messages$M;
      // 195: aconst_null
      // 196: bipush 1
      // 197: anewarray 562
      // 19a: dup
      // 19b: bipush 0
      // 19c: aload 3
      // 19d: aastore
      // 19e: invokevirtual com/l7tech/server/BackupServlet.logAndAudit (Ljava/lang/String;Lcom/l7tech/identity/User;Ljava/lang/String;Lcom/l7tech/gateway/common/audit/AuditDetailMessage;Ljava/lang/Throwable;[Ljava/lang/String;)V
      // 1a1: aload 0
      // 1a2: aload 2
      // 1a3: sipush 500
      // 1a6: aload 23
      // 1a8: bipush 17
      // 1aa: aaload
      // 1ab: invokevirtual com/l7tech/server/BackupServlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V
      // 1ae: aload 5
      // 1b0: ifnull 1e0
      // 1b3: aload 5
      // 1b5: invokestatic com/l7tech/util/FileUtils.deleteDir (Ljava/io/File;)Z
      // 1b8: istore 10
      // 1ba: iload 10
      // 1bc: ifne 1e0
      // 1bf: aload 0
      // 1c0: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 1c3: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 1c6: aload 5
      // 1c8: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 1cb: aload 23
      // 1cd: bipush 31
      // 1cf: aaload
      // 1d0: swap
      // 1d1: invokedynamic makeConcatWithConstants (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" ]
      // 1d6: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 1d9: goto 1e0
      // 1dc: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1df: athrow
      // 1e0: return
      // 1e1: aload 9
      // 1e3: bipush 0
      // 1e4: aaload
      // 1e5: astore 10
      // 1e7: aload 0
      // 1e8: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 1eb: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level;
      // 1ee: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 1f1: astore 23
      // 1f3: aload 23
      // 1f5: bipush 0
      // 1f6: aaload
      // 1f7: aload 10
      // 1f9: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 1fc: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
      // 1ff: aconst_null
      // 200: astore 11
      // 202: aconst_null
      // 203: astore 12
      // 205: aload 10
      // 207: invokevirtual java/io/File.length ()J
      // 20a: lstore 13
      // 20c: new java/io/BufferedInputStream
      // 20f: dup
      // 210: new java/io/FileInputStream
      // 213: dup
      // 214: aload 10
      // 216: invokespecial java/io/FileInputStream.<init> (Ljava/io/File;)V
      // 219: invokespecial java/io/BufferedInputStream.<init> (Ljava/io/InputStream;)V
      // 21c: astore 11
      // 21e: goto 29c
      // 221: astore 15
      // 223: aload 0
      // 224: aload 0
      // 225: aload 1
      // 226: invokevirtual com/l7tech/server/BackupServlet.getOriginalClientAddr (Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String;
      // 229: aload 4
      // 22b: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 22e: astore 23
      // 230: aload 23
      // 232: bipush 17
      // 234: aaload
      // 235: getstatic com/l7tech/gateway/common/audit/ServiceMessages.BACKUP_CANT_READ_IMAGE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 238: aload 15
      // 23a: bipush 1
      // 23b: anewarray 562
      // 23e: dup
      // 23f: bipush 0
      // 240: aload 3
      // 241: aastore
      // 242: invokevirtual com/l7tech/server/BackupServlet.logAndAudit (Ljava/lang/String;Lcom/l7tech/identity/User;Ljava/lang/String;Lcom/l7tech/gateway/common/audit/AuditDetailMessage;Ljava/lang/Throwable;[Ljava/lang/String;)V
      // 245: aload 0
      // 246: aload 2
      // 247: sipush 500
      // 24a: aload 23
      // 24c: bipush 17
      // 24e: aaload
      // 24f: invokevirtual com/l7tech/server/BackupServlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V
      // 252: bipush 2
      // 253: anewarray 152
      // 256: dup
      // 257: bipush 0
      // 258: aload 11
      // 25a: aastore
      // 25b: dup
      // 25c: bipush 1
      // 25d: aload 12
      // 25f: aastore
      // 260: invokestatic com/l7tech/util/ResourceUtils.closeQuietly ([Ljava/io/Closeable;)V
      // 263: aload 10
      // 265: invokevirtual java/io/File.delete ()Z
      // 268: pop
      // 269: aload 5
      // 26b: ifnull 29b
      // 26e: aload 5
      // 270: invokestatic com/l7tech/util/FileUtils.deleteDir (Ljava/io/File;)Z
      // 273: istore 16
      // 275: iload 16
      // 277: ifne 29b
      // 27a: aload 0
      // 27b: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 27e: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 281: aload 5
      // 283: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 286: aload 23
      // 288: bipush 31
      // 28a: aaload
      // 28b: swap
      // 28c: invokedynamic makeConcatWithConstants (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" ]
      // 291: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 294: goto 29b
      // 297: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 29a: athrow
      // 29b: return
      // 29c: aload 3
      // 29d: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 2a0: astore 23
      // 2a2: aload 23
      // 2a4: bipush 49
      // 2a6: aaload
      // 2a7: invokedynamic makeConcatWithConstants (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" ]
      // 2ac: astore 15
      // 2ae: aload 2
      // 2af: aload 23
      // 2b1: bipush 63
      // 2b3: aaload
      // 2b4: invokeinterface jakarta/servlet/http/HttpServletResponse.setContentType (Ljava/lang/String;)V 2
      // 2b9: lload 13
      // 2bb: ldc2_w 2147483647
      // 2be: lcmp
      // 2bf: ifgt 2d2
      // 2c2: aload 2
      // 2c3: lload 13
      // 2c5: l2i
      // 2c6: invokeinterface jakarta/servlet/http/HttpServletResponse.setContentLength (I)V 2
      // 2cb: goto 2e0
      // 2ce: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2d1: athrow
      // 2d2: aload 2
      // 2d3: getstatic com/l7tech/common/http/HttpConstants.HEADER_CONTENT_LENGTH Ljava/lang/String;
      // 2d6: lload 13
      // 2d8: invokestatic java/lang/Long.toString (J)Ljava/lang/String;
      // 2db: invokeinterface jakarta/servlet/http/HttpServletResponse.addHeader (Ljava/lang/String;Ljava/lang/String;)V 3
      // 2e0: aload 2
      // 2e1: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 2e4: astore 23
      // 2e6: aload 23
      // 2e8: bipush 55
      // 2ea: aaload
      // 2eb: aload 15
      // 2ed: lload 13
      // 2ef: lstore 20
      // 2f1: astore 22
      // 2f3: aload 23
      // 2f5: bipush 40
      // 2f7: aaload
      // 2f8: aload 22
      // 2fa: aload 23
      // 2fc: bipush 38
      // 2fe: aaload
      // 2ff: lload 20
      // 301: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)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" ]
      // 306: invokeinterface jakarta/servlet/http/HttpServletResponse.setHeader (Ljava/lang/String;Ljava/lang/String;)V 3
      // 30b: aload 2
      // 30c: aload 23
      // 30e: bipush 5
      // 30f: aaload
      // 310: aload 23
      // 312: bipush 58
      // 314: aaload
      // 315: invokeinterface jakarta/servlet/http/HttpServletResponse.setHeader (Ljava/lang/String;Ljava/lang/String;)V 3
      // 31a: aload 2
      // 31b: invokeinterface jakarta/servlet/http/HttpServletResponse.getOutputStream ()Ljakarta/servlet/ServletOutputStream; 1
      // 320: astore 12
      // 322: aload 11
      // 324: aload 12
      // 326: invokestatic com/l7tech/util/IOUtils.copyStream (Ljava/io/InputStream;Ljava/io/OutputStream;)J
      // 329: pop2
      // 32a: bipush 2
      // 32b: anewarray 152
      // 32e: dup
      // 32f: bipush 0
      // 330: aload 11
      // 332: aastore
      // 333: dup
      // 334: bipush 1
      // 335: aload 12
      // 337: aastore
      // 338: invokestatic com/l7tech/util/ResourceUtils.closeQuietly ([Ljava/io/Closeable;)V
      // 33b: aload 10
      // 33d: invokevirtual java/io/File.delete ()Z
      // 340: pop
      // 341: goto 360
      // 344: astore 17
      // 346: bipush 2
      // 347: anewarray 152
      // 34a: dup
      // 34b: bipush 0
      // 34c: aload 11
      // 34e: aastore
      // 34f: dup
      // 350: bipush 1
      // 351: aload 12
      // 353: aastore
      // 354: invokestatic com/l7tech/util/ResourceUtils.closeQuietly ([Ljava/io/Closeable;)V
      // 357: aload 10
      // 359: invokevirtual java/io/File.delete ()Z
      // 35c: pop
      // 35d: aload 17
      // 35f: athrow
      // 360: aload 5
      // 362: ifnull 3ce
      // 365: aload 5
      // 367: invokestatic com/l7tech/util/FileUtils.deleteDir (Ljava/io/File;)Z
      // 36a: istore 6
      // 36c: iload 6
      // 36e: ifne 393
      // 371: aload 0
      // 372: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 375: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 378: aload 5
      // 37a: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 37d: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 380: bipush 31
      // 382: aaload
      // 383: swap
      // 384: invokedynamic makeConcatWithConstants (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" ]
      // 389: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 38c: goto 393
      // 38f: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 392: athrow
      // 393: goto 3ce
      // 396: astore 18
      // 398: aload 5
      // 39a: ifnull 3cb
      // 39d: aload 5
      // 39f: invokestatic com/l7tech/util/FileUtils.deleteDir (Ljava/io/File;)Z
      // 3a2: istore 19
      // 3a4: iload 19
      // 3a6: ifne 3cb
      // 3a9: aload 0
      // 3aa: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger;
      // 3ad: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 3b0: aload 5
      // 3b2: invokevirtual java/io/File.getAbsolutePath ()Ljava/lang/String;
      // 3b5: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 3b8: bipush 31
      // 3ba: aaload
      // 3bb: swap
      // 3bc: invokedynamic makeConcatWithConstants (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" ]
      // 3c1: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 3c4: goto 3cb
      // 3c7: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3ca: athrow
      // 3cb: aload 18
      // 3cd: athrow
      // 3ce: aload 0
      // 3cf: aload 0
      // 3d0: aload 1
      // 3d1: invokevirtual com/l7tech/server/BackupServlet.getOriginalClientAddr (Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String;
      // 3d4: aload 4
      // 3d6: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String;
      // 3d9: bipush 34
      // 3db: aaload
      // 3dc: getstatic com/l7tech/gateway/common/audit/ServiceMessages.BACKUP_SUCCESS Lcom/l7tech/gateway/common/audit/Messages$M;
      // 3df: aconst_null
      // 3e0: bipush 3
      // 3e1: anewarray 562
      // 3e4: dup
      // 3e5: bipush 0
      // 3e6: aload 3
      // 3e7: aastore
      // 3e8: dup
      // 3e9: bipush 1
      // 3ea: aload 4
      // 3ec: invokeinterface com/l7tech/identity/User.getName ()Ljava/lang/String; 1
      // 3f1: aastore
      // 3f2: dup
      // 3f3: bipush 2
      // 3f4: aload 0
      // 3f5: aload 1
      // 3f6: invokevirtual com/l7tech/server/BackupServlet.getOriginalClientHostAndAddr (Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String;
      // 3f9: aastore
      // 3fa: invokevirtual com/l7tech/server/BackupServlet.logAndAudit (Ljava/lang/String;Lcom/l7tech/identity/User;Ljava/lang/String;Lcom/l7tech/gateway/common/audit/AuditDetailMessage;Ljava/lang/Throwable;[Ljava/lang/String;)V
      // 3fd: return
      // try (58 -> 83): 84 java/io/IOException
      // try (39 -> 50): 50 java/io/IOException
      // try (37 -> 45): 46 java/io/IOException
      // try (31 -> 119): 120 java/io/IOException
      // try (246 -> 257): 258 java/lang/Exception
      // try (246 -> 285): 400 null
      // try (329 -> 343): 343 java/io/IOException
      // try (321 -> 385): 400 null
      // try (400 -> 401): 400 null
      // try (2 -> 147): 439 null
      // try (152 -> 165): 166 java/io/IOException
      // try (169 -> 205): 439 null
      // try (210 -> 223): 224 java/io/IOException
      // try (227 -> 299): 439 null
      // try (304 -> 317): 318 java/io/IOException
      // try (321 -> 417): 439 null
      // try (422 -> 435): 436 java/io/IOException
      // try (439 -> 440): 439 null
      // try (445 -> 458): 459 java/io/IOException
   }

   private void routeBackup(HttpServletRequest var1, HttpServletResponse var2, String var3, User var4) throws IOException {
      String var5 = null;

      try {
         for (ClusterNodeInfo var8 : this._clusterInfoManager.retrieveClusterStatus()) {
            if (var8.getName().equals(var3)) {
               var5 = var8.getAddress();
               break;
            }
         }
      } catch (FindException var45) {
         String var10001 = this.getOriginalClientAddr(var1);
         String[] var21 = b;
         this.logAndAudit(var10001, var4, var21[26], ServiceMessages.BACKUP_NO_CLUSTER_INFO, var45);
         this.respondError(var2, 500, var21[62]);
         return;
      }

      try {
         if (var5 == null) {
            this.logAndAudit(this.getOriginalClientAddr(var1), var4, b[84], ServiceMessages.BACKUP_NO_SUCH_NODE, null, var3);
            this.respondError(var2, 400, b[13]);
            return;
         }
      } catch (FindException var44) {
         throw a(var44);
      }

      GenericHttpRequest var46 = null;
      GenericHttpResponse var47 = null;

      try {
         try {
            if (_logger.isLoggable(Level.FINE)) {
               _logger.fine(b[86] + var3 + b[65] + var5);
            }
         } catch (FindException var41) {
            throw a(var41);
         }

         String var48 = var1.getRequestURI() + "?" + var1.getQueryString();
         URL var9 = new URL(var1.getScheme(), var5, var1.getLocalPort(), var48);
         GenericHttpRequestParams var10 = new GenericHttpRequestParams(var9);
         LoginCredentials var11 = this.findCredentialsBasic(var1);
         var10.setPasswordAuthentication(new PasswordAuthentication(var11.getName(), var11.getCredentials()));
         var10.setPreemptiveAuthentication(true);
         var10.addExtraHeader(new GenericHttpHeader(SecureSpanConstants.HEADER_ORIGINAL_HOST, var1.getRemoteHost()));
         var10.addExtraHeader(new GenericHttpHeader(SecureSpanConstants.HEADER_ORIGINAL_ADDR, var1.getRemoteAddr()));
         var46 = this._httpClientFactory.createHttpClient().createRequest(HttpMethod.GET, var10);
         var47 = var46.getResponse();

         for (HttpHeader var15 : var47.getHeaders().toArray()) {
            try {
               var2.addHeader(var15.getName(), var15.getFullValue());
               if (_logger.isLoggable(Level.FINEST)) {
                  _logger.finest(b[18] + var15.getName() + "=" + var15.getFullValue());
               }
            } catch (FindException var40) {
               throw a(var40);
            }
         }

         byte var49 = 0;
         BufferedInputStream var50 = null;
         BufferedOutputStream var51 = null;

         try {
            var50 = new BufferedInputStream(var47.getInputStream());
            var51 = new BufferedOutputStream(var2.getOutputStream());

            while (true) {
               int var52;
               int var10000 = var52 = var50.read();

               try {
                  if (var10000 == -1) {
                     break;
                  }

                  var51.write(var52);
               } catch (FindException var38) {
                  throw a(var38);
               }
            }
         } finally {
            ResourceUtils.closeQuietly(var50);
            ResourceUtils.closeQuietly(var51);
         }

         if (_logger.isLoggable(Level.FINE)) {
            byte var18 = var49;
            String var19 = var5;
            String var20 = var3;
            String[] var54 = b;
            _logger.fine(var54[21] + var20 + var54[79] + var19 + var54[68] + var18 + var54[50]);
         }
      } catch (IOException var42) {
         String var55 = this.getOriginalClientAddr(var1);
         String[] var53 = b;
         this.logAndAudit(var55, var4, var53[84], ServiceMessages.BACKUP_ROUTING_IO_ERROR_INFO, null, ExceptionUtils.getMessage(var42));
         this.respondError(var2, 500, var53[72]);
      } finally {
         ResourceUtils.closeQuietly(var46);
         ResourceUtils.closeQuietly(var47);
      }
   }

   private void respondError(HttpServletResponse var1, int var2, String var3) throws IOException {
      var1.setStatus(var2);
      var1.setContentType(b[3]);
      PrintWriter var4 = var1.getWriter();
      var4.print(var2);
      var4.print(" ");
      var4.print(var3);
      var4.close();
   }

   private void logAndAudit(String var1, User var2, String var3, AuditDetailMessage var4, Throwable var5, String... var6) {
      BackupEvent var7 = new BackupEvent(this, var4.getLevel(), var3, var1, var2);
      var7.setAuditDetails(Arrays.asList(new AuditDetail(var4, var6, var5)));
      this._webApplicationContext.publishEvent(var7);
   }

   private String getOriginalClientHost(HttpServletRequest var1) {
      String var2 = var1.getHeader(SecureSpanConstants.HEADER_ORIGINAL_HOST);
      if (var2 == null) {
         var2 = var1.getRemoteHost();
      }

      return var2;
   }

   private String getOriginalClientAddr(HttpServletRequest var1) {
      String var2 = var1.getHeader(SecureSpanConstants.HEADER_ORIGINAL_ADDR);
      if (var2 == null) {
         var2 = var1.getRemoteAddr();
      }

      return var2;
   }

   private String getOriginalClientHostAndAddr(HttpServletRequest var1) {
      String var2 = this.getOriginalClientHost(var1);
      String var3 = this.getOriginalClientAddr(var1);
      return var3.equals(var2) ? var3 : var2 + b[36] + var3 + ")";
   }

   static {
      String[] var5 = new String[89];
      int var3 = 0;
      String var2 = "\u001eP\u0019\u001b\\P\"5\\\u001b\u0017L\u0000a.T\u001b\u0004LD\"=_\u001ePOOw2U@P#[2!-=\u001f\u0018\u0005]Tm2\u000b\u0012\u001f_Ep|JZ\u0012HCi;C\u0015\u0005GD/?^\u0016\u001f[\u001a\"\u007fuJ4\u0019d2g\u0011\u0007\u0018/T\b\u0006@Cgf|\u001f\u0003ZAe9a\b\u001fJEq/^\b\n(T\u0002\u0004\u0006Pn=X\u0014\u0004~\u0011UN\r\u001dR\u0019\u0015YT/\u000eP\u0014\u0017LSA\u000fT\u0014\u0014@Ne|R\u0012\u0011ELg2V\u001fP[Eq,^\u0014\u0003L\u0000v3\u0011\u0018\u0011JKw,\u0011\b\u0015XUg/EZ\u0007@Tj3D\u000ePJRg8T\u0014\u0004@An/\u001f\u0007`\u001e\u0012\u0004DL<\u000e\u0015_\u000e\u0015[Nc0\u0011\u001f\u0002[Op\u0006`S\u0015\u0014P\u001e\u001f`YKNnAv9F\u001b\t\tbc?Z\u000f\u0000\tsg.G\u0013\u0013L\u001c-4\u0000D\u001d|\u0011ZPYAf8X\u0014\u0017\u0013\u00000,IZFYX\"nA\u0002P\u001fPzg+\u001aP\u0013\u001cLD\"(^Z\u001fKTc5_Z\u0013EUq(T\bPGOf9\u0011\u0013\u001eOOp1P\u000e\u0019FN8|\f\u0012^Z\u0003\\Cj|_\u0015\u0014L\u0003qX\u001b(\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|A\u001f\u0002DIq/X\u0015\u001e\tCj9R\u0011\u0015M\u0000d=X\u0016\u0015M6\u001f^\u0014\u0016@Gw.P\u000e\u0019FN\"9C\b\u001f[\u001b\"?^\u000f\u001cM\u0000l3EZ\u0017LT\"=A\n\u001c@Cc(X\u0015\u001e\tCm2E\u001f\b]\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD5\u001f^\n\u0019LD\"3G\u001f\u0002\thV\baZ\u0018LAf9CZ\u0016[Oo|C\u0015\u0005]Ef|S\u001b\u0013BUr|C\u001f\u0003YOl/T@P\u0006qX\u0017\u0011NE\u0007`\u001e\u0018\u001fMY<\u001c\u000e^\u000f\u0004LD\">P\u0019\u001b\\P\".T\t\u0000FNq9\u0011\u001c\u0002FM\"\u000f\u001eP\u001ePJRg8T\u0014\u0004@An/\u0004(C\u000f\u0015\r\u0012^\u000ePYEp1X\u000e\u0004LD\u001c|\u0011ZPKOp8T\bJ\t\u0012r$\u0011\u0015\u0005]Sg(\u0011\u001d\u0002HY9\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u0017\fT\b\u001d@Sq5^\u0014PJHg?ZZ\u0016HIn9U\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD%`E\u0013\u0004EE<\u001bP\u000e\u0015^A{|s\u001b\u0013BUr|b\u001f\u0002_Ia9\rU\u0004@Tn9\u000f\t5\\\u001b\u0017L\u000ex5A\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\u0015\u0012^Z\u0013EIg2EZ\u0013LRv5W\u0013\u0013HTg\u0003(\\\n\u0011\u001eP\u0019\u001b\\P\"8^\r\u001eEOc8T\u001e\t(T\u0002\u0004\u0006Hv1]\u0002|\u0019\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\b~\nZ\u0003@Zga\u0015\u001f^\u0014\u001eLCv3CZ\u001eFT\"9_\u001b\u0012EEf\u0016=E\u000e\u0011JHo9_\u000eK\tFk0T\u0014\u0011DE?~E`]\u0013\u001eB\u0000p9]GR@Cm2\u0013Z\u0004PPga\u0013\u0013\u001dHGgsA\u0014\u0017\u000b\u0000j.T\u001cM\u000b\u000fq/VU\u0007LBc8\\\u0013\u001e\u0006Fc*X\u0019\u001fG\u000ek?^XP\u0006\u001e\u0016|\u0011ZPOOl(\u001c\r\u0015@Gj(\u000bZ\u0012FLfg\u0013\u0011X\t\u0003@Ne|R\b\u0015MEl(X\u001b\u001cZ\u001c|\u0011ZPOOl(\u001c\u001c\u0011DIn%\u000bZ\u0003HNqqB\u001f\u0002@F9\f\u000fb6P[Es)X\b\u0015M(`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002j5U\u001e\u0015G\u0002\"2P\u0017\u0015\u0014\u0002l3U\u001fR\tVc0D\u001fM\u000b\u0006`Y\u000e\u001dE\u001e\u00042^\u001e\u0015\u0004rK\u0013\u0000\u000e|S\u0003\u0004LS\"5_Z\u0012FD{\u0017`B\u000e\tEE\"(H\n\u0015\u0014\u0002v9I\u000e_JSq~\u000f/`AD EEc/TZ\u0003LLg?EZ\u0011\tgc(T\r\u0011P\u0000l3U\u001fP]O\">P\u0019\u001b\tUrf\rU\u0000\u0017\n\t_\u0016\u0019JEl/T\u001e\f/B\u001d\u0012HCi)AT\u0003A\u0013\u001f^\u0014\u0004LNvqu\u0013\u0003YOq5E\u0013\u001fG\u000b.^\u0016\u0015dAl=V\u001f\u0002\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u00042^\u0014\u0015\u0014|\u0011ZPDIlqF\u0013\u0014]H8|\u0006J\u0000Q\u001bH`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002a4T\u0019\u001bKOz~\u0011\u0014\u0011DE?~P\u000f\u0014@Tq~\u0011\f\u0011EUga\u0013\u000e\u0002\\E bx\u0014\u0013EUf9\u0011;\u0005MIv/\rU\u0019GPw(\u000f\b`\u001e\t\u0004PLgb\u0010\u001fP\u0014\u001eFT\":X\u0014\u0014\tNm8T\u000f=A\n\u001c@Cc(X\u0015\u001e\u0006Zk,\u001e|\u0011ZPKAa7V\b\u001f\\NfqR\u0015\u001cFR8|\u0012?Hl\u0018Gd\n\u0004|P\u000eP\u0007`\u001e\u0012\u0015HD<(`W\u0015\u0002D\u0000c?E\u0013\u001fG\u001d sB\t\u0017\u0006Bc?Z\u000f\u0000\u000b\u0000o9E\u0012\u001fM\u001d ;T\u000eR\u0017\u0002f\u0011\u0006`Y\u001f\u0011M\u001ei=\u001f\u0018\u0005]Tm2\u000b\u0016\u0019GK.|PT\u0012\\Tv3_@\u0006@Sk(T\u001e\\\tA,>D\u000e\u0004FN84^\f\u0015[\f\"=\u001f\u0018\u0005]Tm2\u000b\u001b\u0013]It9\u0011\u0001PJOn3C@PKLc?ZAP]Ez(\u001c\u001e\u0015JOp=E\u0013\u001fG\u001a\"2^\u0014\u0015\u0012\u0000\u007f\u000b`\u001e\u001c\u001f[M<`S\bN\u000e\u000e^\u000f\u0004@Ne|W\u001b\u0019EEf\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u0006=D\u001e\u0019]S\u0012/B\u001d/KAa7D\n/[Eq(^\b\u0015\t5\\\u001b\u0017L\u000ex5A\u0013r\u001fU^\u0007\u000fa3_\u001c\u0019N\u000f`=R\u0011\u0005Y\"\u001eP\u0019\u001b\\P\"?^\u0017\u0000EEv9UZ\u0007@Tj|^\u000f\u0004YUvf\u0011p\u000b\u0019]\u0004|P\u000eP\u0012?]\u000f\u0003]Ep\u0015_\u001c\u001fdAl=V\u001f\u0002\u0016?^\u0017^E\u0017v9R\u0012^ZEp*T\b^AOo9\n=\u001f\u0018\u0005]Tm2\u0011\u0001\u0004~\u0011UN\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u001c`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002q)S\u0017\u0019]\u0002\"*P\u0016\u0005L\u001d \u001a\u000e^\u000f\u0004@Ne|S\u001b\u0013BUr|C\u001f\u0001\\Eq(\u0011\u000e\u001f\t";
      int var4 = "\u001eP\u0019\u001b\\P\"5\\\u001b\u0017L\u0000a.T\u001b\u0004LD\"=_\u001ePOOw2U@P#[2!-=\u001f\u0018\u0005]Tm2\u000b\u0012\u001f_Ep|JZ\u0012HCi;C\u0015\u0005GD/?^\u0016\u001f[\u001a\"\u007fuJ4\u0019d2g\u0011\u0007\u0018/T\b\u0006@Cgf|\u001f\u0003ZAe9a\b\u001fJEq/^\b\n(T\u0002\u0004\u0006Pn=X\u0014\u0004~\u0011UN\r\u001dR\u0019\u0015YT/\u000eP\u0014\u0017LSA\u000fT\u0014\u0014@Ne|R\u0012\u0011ELg2V\u001fP[Eq,^\u0014\u0003L\u0000v3\u0011\u0018\u0011JKw,\u0011\b\u0015XUg/EZ\u0007@Tj3D\u000ePJRg8T\u0014\u0004@An/\u001f\u0007`\u001e\u0012\u0004DL<\u000e\u0015_\u000e\u0015[Nc0\u0011\u001f\u0002[Op\u0006`S\u0015\u0014P\u001e\u001f`YKNnAv9F\u001b\t\tbc?Z\u000f\u0000\tsg.G\u0013\u0013L\u001c-4\u0000D\u001d|\u0011ZPYAf8X\u0014\u0017\u0013\u00000,IZFYX\"nA\u0002P\u001fPzg+\u001aP\u0013\u001cLD\"(^Z\u001fKTc5_Z\u0013EUq(T\bPGOf9\u0011\u0013\u001eOOp1P\u000e\u0019FN8|\f\u0012^Z\u0003\\Cj|_\u0015\u0014L\u0003qX\u001b(\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|A\u001f\u0002DIq/X\u0015\u001e\tCj9R\u0011\u0015M\u0000d=X\u0016\u0015M6\u001f^\u0014\u0016@Gw.P\u000e\u0019FN\"9C\b\u001f[\u001b\"?^\u000f\u001cM\u0000l3EZ\u0017LT\"=A\n\u001c@Cc(X\u0015\u001e\tCm2E\u001f\b]\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD5\u001f^\n\u0019LD\"3G\u001f\u0002\thV\baZ\u0018LAf9CZ\u0016[Oo|C\u0015\u0005]Ef|S\u001b\u0013BUr|C\u001f\u0003YOl/T@P\u0006qX\u0017\u0011NE\u0007`\u001e\u0018\u001fMY<\u001c\u000e^\u000f\u0004LD\">P\u0019\u001b\\P\".T\t\u0000FNq9\u0011\u001c\u0002FM\"\u000f\u001eP\u001ePJRg8T\u0014\u0004@An/\u0004(C\u000f\u0015\r\u0012^\u000ePYEp1X\u000e\u0004LD\u001c|\u0011ZPKOp8T\bJ\t\u0012r$\u0011\u0015\u0005]Sg(\u0011\u001d\u0002HY9\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u0017\fT\b\u001d@Sq5^\u0014PJHg?ZZ\u0016HIn9U\r\u001eP\u0019\u001b\\P\":P\u0013\u001cLD%`E\u0013\u0004EE<\u001bP\u000e\u0015^A{|s\u001b\u0013BUr|b\u001f\u0002_Ia9\rU\u0004@Tn9\u000f\t5\\\u001b\u0017L\u000ex5A\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\u0015\u0012^Z\u0013EIg2EZ\u0013LRv5W\u0013\u0013HTg\u0003(\\\n\u0011\u001eP\u0019\u001b\\P\"8^\r\u001eEOc8T\u001e\t(T\u0002\u0004\u0006Hv1]\u0002|\u0019\u001b\u001f^\u000f\u001cM\u0000l3EZ\u0014LLg(TZ\u0014@Rg?E\u0015\u0002P\u0000\b~\nZ\u0003@Zga\u0015\u001f^\u0014\u001eLCv3CZ\u001eFT\"9_\u001b\u0012EEf\u0016=E\u000e\u0011JHo9_\u000eK\tFk0T\u0014\u0011DE?~E`]\u0013\u001eB\u0000p9]GR@Cm2\u0013Z\u0004PPga\u0013\u0013\u001dHGgsA\u0014\u0017\u000b\u0000j.T\u001cM\u000b\u000fq/VU\u0007LBc8\\\u0013\u001e\u0006Fc*X\u0019\u001fG\u000ek?^XP\u0006\u001e\u0016|\u0011ZPOOl(\u001c\r\u0015@Gj(\u000bZ\u0012FLfg\u0013\u0011X\t\u0003@Ne|R\b\u0015MEl(X\u001b\u001cZ\u001c|\u0011ZPOOl(\u001c\u001c\u0011DIn%\u000bZ\u0003HNqqB\u001f\u0002@F9\f\u000fb6P[Es)X\b\u0015M(`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002j5U\u001e\u0015G\u0002\"2P\u0017\u0015\u0014\u0002l3U\u001fR\tVc0D\u001fM\u000b\u0006`Y\u000e\u001dE\u001e\u00042^\u001e\u0015\u0004rK\u0013\u0000\u000e|S\u0003\u0004LS\"5_Z\u0012FD{\u0017`B\u000e\tEE\"(H\n\u0015\u0014\u0002v9I\u000e_JSq~\u000f/`AD EEc/TZ\u0003LLg?EZ\u0011\tgc(T\r\u0011P\u0000l3U\u001fP]O\">P\u0019\u001b\tUrf\rU\u0000\u0017\n\t_\u0016\u0019JEl/T\u001e\f/B\u001d\u0012HCi)AT\u0003A\u0013\u001f^\u0014\u0004LNvqu\u0013\u0003YOq5E\u0013\u001fG\u000b.^\u0016\u0015dAl=V\u001f\u0002\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u00042^\u0014\u0015\u0014|\u0011ZPDIlqF\u0013\u0014]H8|\u0006J\u0000Q\u001bH`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002a4T\u0019\u001bKOz~\u0011\u0014\u0011DE?~P\u000f\u0014@Tq~\u0011\f\u0011EUga\u0013\u000e\u0002\\E bx\u0014\u0013EUf9\u0011;\u0005MIv/\rU\u0019GPw(\u000f\b`\u001e\t\u0004PLgb\u0010\u001fP\u0014\u001eFT\":X\u0014\u0014\tNm8T\u000f=A\n\u001c@Cc(X\u0015\u001e\u0006Zk,\u001e|\u0011ZPKAa7V\b\u001f\\NfqR\u0015\u001cFR8|\u0012?Hl\u0018Gd\n\u0004|P\u000eP\u0007`\u001e\u0012\u0015HD<(`W\u0015\u0002D\u0000c?E\u0013\u001fG\u001d sB\t\u0017\u0006Bc?Z\u000f\u0000\u000b\u0000o9E\u0012\u001fM\u001d ;T\u000eR\u0017\u0002f\u0011\u0006`Y\u001f\u0011M\u001ei=\u001f\u0018\u0005]Tm2\u000b\u0016\u0019GK.|PT\u0012\\Tv3_@\u0006@Sk(T\u001e\\\tA,>D\u000e\u0004FN84^\f\u0015[\f\"=\u001f\u0018\u0005]Tm2\u000b\u001b\u0013]It9\u0011\u0001PJOn3C@PKLc?ZAP]Ez(\u001c\u001e\u0015JOp=E\u0013\u001fG\u001a\"2^\u0014\u0015\u0012\u0000\u007f\u000b`\u001e\u001c\u001f[M<`S\bN\u000e\u000e^\u000f\u0004@Ne|W\u001b\u0019EEf\u0016\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|S\u0016\u001fJKg8\u0006=D\u001e\u0019]S\u0012/B\u001d/KAa7D\n/[Eq(^\b\u0015\t5\\\u001b\u0017L\u000ex5A\u0013r\u001fU^\u0007\u000fa3_\u001c\u0019N\u000f`=R\u0011\u0005Y\"\u001eP\u0019\u001b\\P\"?^\u0017\u0000EEv9UZ\u0007@Tj|^\u000f\u0004YUvf\u0011p\u000b\u0019]\u0004|P\u000eP\u0012?]\u000f\u0003]Ep\u0015_\u001c\u001fdAl=V\u001f\u0002\u0016?^\u0017^E\u0017v9R\u0012^ZEp*T\b^AOo9\n=\u001f\u0018\u0005]Tm2\u0011\u0001\u0004~\u0011UN\u001d\u001eP\u0019\u001b\\P\".T\u000b\u0005LSv|C\u0015\u0005]Il;\u0011\u001c\u0011@Lg8\u001c`X\u0014\u0000\\T\"(H\n\u0015\u0014\u0002q)S\u0017\u0019]\u0002\"*P\u0016\u0005L\u001d \u001a\u000e^\u000f\u0004@Ne|S\u001b\u0013BUr|C\u001f\u0001\\Eq(\u0011\u000e\u001f\t"
         .length();
      char var1 = '$';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     _logger = Logger.getLogger(BackupServlet.class.getName());
                     return;
                  }

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

                  var2 = "w!e{#6\u0019L;mm6*\u0019F\u001aK!pk%0\u0013F*Lz#.?N&a`#\u0018\u001dA;k|.";
                  var4 = "w!e{#6\u0019L;mm6*\u0019F\u001aK!pk%0\u0013F*Lz#.?N&a`#\u0018\u001dA;k|.".length();
                  var1 = 15;
                  var7 = -1;
            }

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

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

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

      return var10000;
   }

   private static String b(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 -> 31;
            case 1 -> 114;
            case 2 -> 57;
            case 3 -> 51;
            case 4 -> 106;
            case 5 -> 99;
            default -> 65;
         });
      }

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