package com.l7tech.server.util;

import com.l7tech.common.http.CookieUtils;
import com.l7tech.common.http.GenericHttpHeader;
import com.l7tech.common.http.GenericHttpRequestParams;
import com.l7tech.common.http.HttpConstants;
import com.l7tech.common.http.HttpCookie;
import com.l7tech.common.http.HttpHeader;
import com.l7tech.common.http.HttpCookie.IllegalFormatException;
import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.message.HeadersKnob;
import com.l7tech.message.HttpInboundResponseKnob;
import com.l7tech.message.HttpRequestKnob;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.HttpPassthroughRule;
import com.l7tech.policy.assertion.HttpPassthroughRuleSet;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.variable.ExpandVariables;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.Nullable;

public class HttpForwardingRuleEnforcer {
   private static final Logger a;
   private static final String[] b;

   public static void handleRequestHeaders(
      Message param0,
      GenericHttpRequestParams param1,
      PolicyEnforcementContext param2,
      HttpPassthroughRuleSet param3,
      Audit param4,
      @Nullable Map<String, ?> param5,
      @Nullable String[] param6
   ) 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: aload 3
      // 001: getstatic com/l7tech/common/http/HttpConstants.HEADER_USER_AGENT Ljava/lang/String;
      // 004: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.ruleForName (Ljava/lang/String;)I
      // 007: bipush 3
      // 008: if_icmpeq 019
      // 00b: getstatic com/l7tech/common/http/HttpConstants.HEADER_USER_AGENT Ljava/lang/String;
      // 00e: aload 1
      // 00f: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/String;Lcom/l7tech/common/http/GenericHttpRequestParams;)V
      // 012: goto 019
      // 015: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 018: athrow
      // 019: new com/l7tech/common/http/GenericHttpRequestParams
      // 01c: dup
      // 01d: aload 1
      // 01e: invokespecial com/l7tech/common/http/GenericHttpRequestParams.<init> (Lcom/l7tech/common/http/GenericHttpRequestParams;)V
      // 021: astore 7
      // 023: aload 7
      // 025: bipush 0
      // 026: anewarray 449
      // 029: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.setExtraHeaders ([Lcom/l7tech/common/http/HttpHeader;)V
      // 02c: new java/util/ArrayList
      // 02f: dup
      // 030: invokespecial java/util/ArrayList.<init> ()V
      // 033: astore 8
      // 035: aload 3
      // 036: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.isForwardAll ()Z
      // 039: ifne 1c8
      // 03c: new java/util/HashSet
      // 03f: dup
      // 040: invokespecial java/util/HashSet.<init> ()V
      // 043: astore 9
      // 045: bipush 0
      // 046: istore 10
      // 048: iload 10
      // 04a: aload 3
      // 04b: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.getRules ()[Lcom/l7tech/policy/assertion/HttpPassthroughRule;
      // 04e: arraylength
      // 04f: if_icmpge 1c5
      // 052: aload 3
      // 053: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.getRules ()[Lcom/l7tech/policy/assertion/HttpPassthroughRule;
      // 056: iload 10
      // 058: aaload
      // 059: astore 11
      // 05b: aload 11
      // 05d: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRule.getName ()Ljava/lang/String;
      // 060: astore 12
      // 062: aload 12
      // 064: invokevirtual java/lang/String.isEmpty ()Z
      // 067: ifeq 07b
      // 06a: new java/io/IOException
      // 06d: dup
      // 06e: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 071: bipush 3
      // 072: aaload
      // 073: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 076: athrow
      // 077: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 07a: athrow
      // 07b: aload 11
      // 07d: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRule.isUsesCustomizedValue ()Z
      // 080: ifeq 13e
      // 083: aload 11
      // 085: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRule.getCustomizeValue ()Ljava/lang/String;
      // 088: astore 13
      // 08a: aload 6
      // 08c: ifnull 0bf
      // 08f: aload 6
      // 091: arraylength
      // 092: ifle 0bf
      // 095: goto 09c
      // 098: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 09b: athrow
      // 09c: aload 5
      // 09e: ifnonnull 0b4
      // 0a1: goto 0a8
      // 0a4: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a7: athrow
      // 0a8: aload 2
      // 0a9: aload 6
      // 0ab: aload 4
      // 0ad: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getVariableMap ([Ljava/lang/String;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/util/Map; 3
      // 0b2: astore 5
      // 0b4: aload 13
      // 0b6: aload 5
      // 0b8: aload 4
      // 0ba: invokestatic com/l7tech/server/policy/variable/ExpandVariables.process (Ljava/lang/String;Ljava/util/Map;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/lang/String;
      // 0bd: astore 13
      // 0bf: aload 12
      // 0c1: getstatic com/l7tech/common/http/HttpConstants.HEADER_HOST Ljava/lang/String;
      // 0c4: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 0c7: ifeq 0f4
      // 0ca: aload 1
      // 0cb: aload 13
      // 0cd: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.setVirtualHost (Ljava/lang/String;)V
      // 0d0: aload 7
      // 0d2: getstatic com/l7tech/common/http/HttpConstants.HEADER_HOST Ljava/lang/String;
      // 0d5: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.removeExtraHeader (Ljava/lang/String;)Z
      // 0d8: pop
      // 0d9: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a Ljava/util/logging/Logger;
      // 0dc: aload 13
      // 0de: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 0e1: bipush 12
      // 0e3: aaload
      // 0e4: swap
      // 0e5: 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" ]
      // 0ea: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 0ed: goto 13b
      // 0f0: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f3: athrow
      // 0f4: aload 12
      // 0f6: getstatic com/l7tech/common/http/HttpConstants.HEADER_COOKIE Ljava/lang/String;
      // 0f9: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 0fc: ifeq 113
      // 0ff: aload 8
      // 101: aload 13
      // 103: invokestatic com/l7tech/common/http/CookieUtils.splitCookieHeader (Ljava/lang/String;)Ljava/util/List;
      // 106: invokeinterface java/util/List.addAll (Ljava/util/Collection;)Z 2
      // 10b: pop
      // 10c: goto 13b
      // 10f: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 112: athrow
      // 113: aload 12
      // 115: bipush 1
      // 116: anewarray 287
      // 119: dup
      // 11a: bipush 0
      // 11b: aload 13
      // 11d: aastore
      // 11e: aload 9
      // 120: aload 12
      // 122: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 125: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 12a: ifne 135
      // 12d: bipush 1
      // 12e: goto 136
      // 131: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 134: athrow
      // 135: bipush 0
      // 136: aload 7
      // 138: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/String;[Ljava/lang/String;ZLcom/l7tech/common/http/GenericHttpRequestParams;)V
      // 13b: goto 1b2
      // 13e: aload 0
      // 13f: invokevirtual com/l7tech/message/Message.getHeadersKnob ()Lcom/l7tech/message/HeadersKnob;
      // 142: aload 12
      // 144: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 147: astore 18
      // 149: aload 18
      // 14b: bipush 7
      // 14d: aaload
      // 14e: bipush 0
      // 14f: invokeinterface com/l7tech/message/HeadersKnob.getHeaderValues (Ljava/lang/String;Ljava/lang/String;Z)[Ljava/lang/String; 4
      // 154: astore 13
      // 156: aload 12
      // 158: getstatic com/l7tech/common/http/HttpConstants.HEADER_COOKIE Ljava/lang/String;
      // 15b: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 15e: ifeq 191
      // 161: aload 13
      // 163: astore 14
      // 165: aload 14
      // 167: arraylength
      // 168: istore 15
      // 16a: bipush 0
      // 16b: istore 16
      // 16d: iload 16
      // 16f: iload 15
      // 171: if_icmpge 18e
      // 174: aload 14
      // 176: iload 16
      // 178: aaload
      // 179: astore 17
      // 17b: aload 8
      // 17d: aload 17
      // 17f: invokestatic com/l7tech/common/http/CookieUtils.splitCookieHeader (Ljava/lang/String;)Ljava/util/List;
      // 182: invokeinterface java/util/List.addAll (Ljava/util/Collection;)Z 2
      // 187: pop
      // 188: iinc 16 1
      // 18b: goto 16d
      // 18e: goto 1b2
      // 191: aload 12
      // 193: aload 13
      // 195: aload 9
      // 197: aload 12
      // 199: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 19c: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 1a1: ifne 1ac
      // 1a4: bipush 1
      // 1a5: goto 1ad
      // 1a8: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1ab: athrow
      // 1ac: bipush 0
      // 1ad: aload 7
      // 1af: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/String;[Ljava/lang/String;ZLcom/l7tech/common/http/GenericHttpRequestParams;)V
      // 1b2: aload 9
      // 1b4: aload 12
      // 1b6: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 1b9: invokeinterface java/util/Set.add (Ljava/lang/Object;)Z 2
      // 1be: pop
      // 1bf: iinc 10 1
      // 1c2: goto 048
      // 1c5: goto 25f
      // 1c8: new java/util/HashSet
      // 1cb: dup
      // 1cc: invokespecial java/util/HashSet.<init> ()V
      // 1cf: astore 9
      // 1d1: aload 0
      // 1d2: invokevirtual com/l7tech/message/Message.getHeadersKnob ()Lcom/l7tech/message/HeadersKnob;
      // 1d5: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 1d8: astore 18
      // 1da: aload 18
      // 1dc: bipush 7
      // 1de: aaload
      // 1df: bipush 0
      // 1e0: bipush 0
      // 1e1: invokeinterface com/l7tech/message/HeadersKnob.getHeaderNames (Ljava/lang/String;ZZ)[Ljava/lang/String; 4
      // 1e6: astore 10
      // 1e8: aload 10
      // 1ea: arraylength
      // 1eb: istore 11
      // 1ed: bipush 0
      // 1ee: istore 12
      // 1f0: iload 12
      // 1f2: iload 11
      // 1f4: if_icmpge 24e
      // 1f7: aload 10
      // 1f9: iload 12
      // 1fb: aaload
      // 1fc: astore 13
      // 1fe: aload 13
      // 200: getstatic com/l7tech/common/http/HttpConstants.HEADER_COOKIE Ljava/lang/String;
      // 203: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 206: ifne 248
      // 209: aload 13
      // 20b: aload 0
      // 20c: invokevirtual com/l7tech/message/Message.getHeadersKnob ()Lcom/l7tech/message/HeadersKnob;
      // 20f: aload 13
      // 211: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 214: bipush 7
      // 216: aaload
      // 217: bipush 0
      // 218: invokeinterface com/l7tech/message/HeadersKnob.getHeaderValues (Ljava/lang/String;Ljava/lang/String;Z)[Ljava/lang/String; 4
      // 21d: aload 9
      // 21f: aload 13
      // 221: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 226: ifne 238
      // 229: goto 230
      // 22c: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22f: athrow
      // 230: bipush 1
      // 231: goto 239
      // 234: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 237: athrow
      // 238: bipush 0
      // 239: aload 7
      // 23b: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/String;[Ljava/lang/String;ZLcom/l7tech/common/http/GenericHttpRequestParams;)V
      // 23e: aload 9
      // 240: aload 13
      // 242: invokeinterface java/util/Set.add (Ljava/lang/Object;)Z 2
      // 247: pop
      // 248: iinc 12 1
      // 24b: goto 1f0
      // 24e: aload 8
      // 250: aload 0
      // 251: invokevirtual com/l7tech/message/Message.getHttpCookiesKnob ()Lcom/l7tech/message/HttpCookiesKnob;
      // 254: invokeinterface com/l7tech/message/HttpCookiesKnob.getCookiesAsHeaders ()Ljava/util/Set; 1
      // 259: invokeinterface java/util/List.addAll (Ljava/util/Collection;)Z 2
      // 25e: pop
      // 25f: aload 7
      // 261: aload 8
      // 263: aload 4
      // 265: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Lcom/l7tech/common/http/GenericHttpRequestParams;Ljava/util/Collection;Lcom/l7tech/gateway/common/audit/Audit;)V
      // 268: aload 7
      // 26a: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.getExtraHeaders ()Ljava/util/List;
      // 26d: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 272: astore 9
      // 274: aload 9
      // 276: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 27b: ifeq 293
      // 27e: aload 9
      // 280: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 285: checkcast com/l7tech/common/http/HttpHeader
      // 288: astore 10
      // 28a: aload 1
      // 28b: aload 10
      // 28d: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.addExtraHeader (Lcom/l7tech/common/http/HttpHeader;)V
      // 290: goto 274
      // 293: return
      // try (0 -> 8): 9 java/io/IOException
      // try (46 -> 56): 56 java/io/IOException
      // try (64 -> 69): 70 java/io/IOException
      // try (66 -> 74): 75 java/io/IOException
      // try (87 -> 107): 107 java/io/IOException
      // try (109 -> 119): 119 java/io/IOException
      // try (121 -> 135): 135 java/io/IOException
      // try (178 -> 187): 187 java/io/IOException
      // try (227 -> 244): 245 java/io/IOException
      // try (231 -> 249): 249 java/io/IOException
   }

   private static void a(String var0, GenericHttpRequestParams var1) {
      List var2 = var1.getExtraHeaders();
      Iterator var3 = var2.iterator();

      while (var3.hasNext()) {
         GenericHttpHeader var4 = (GenericHttpHeader)var3.next();
         if (var0.compareToIgnoreCase(var4.getName()) == 0) {
            Logger var10000 = a;
            String var10002 = var4.getFullValue();
            String[] var5 = b;
            var10000.finest(var5[0] + var0 + var5[6] + var10002);
            var3.remove();
         }
      }
   }

   public static List<HttpForwardingRuleEnforcer.Param> handleRequestParameters(
      PolicyEnforcementContext param0, Message param1, HttpPassthroughRuleSet param2, Audit param3, @Nullable Map<String, ?> param4, @Nullable String[] param5
   ) 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: aload 1
      // 001: ldc com/l7tech/message/HttpServletRequestKnob
      // 003: invokevirtual com/l7tech/message/Message.getKnob (Ljava/lang/Class;)Ljava/lang/Object;
      // 006: checkcast com/l7tech/message/HttpServletRequestKnob
      // 009: astore 6
      // 00b: aload 6
      // 00d: ifnonnull 025
      // 010: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a Ljava/util/logging/Logger;
      // 013: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 016: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 019: bipush 15
      // 01b: aaload
      // 01c: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 01f: aconst_null
      // 020: areturn
      // 021: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 024: athrow
      // 025: aload 6
      // 027: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Lcom/l7tech/message/HttpRequestKnob;)Z
      // 02a: ifne 042
      // 02d: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a Ljava/util/logging/Logger;
      // 030: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 033: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 036: bipush 8
      // 038: aaload
      // 039: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 03c: aconst_null
      // 03d: areturn
      // 03e: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 041: athrow
      // 042: new java/util/ArrayList
      // 045: dup
      // 046: invokespecial java/util/ArrayList.<init> ()V
      // 049: astore 7
      // 04b: aload 6
      // 04d: invokevirtual com/l7tech/message/HttpServletRequestKnob.getRequestBodyParameterMap ()Ljava/util/Map;
      // 050: astore 8
      // 052: aload 2
      // 053: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.isForwardAll ()Z
      // 056: ifeq 0cc
      // 059: aload 8
      // 05b: invokeinterface java/util/Map.entrySet ()Ljava/util/Set; 1
      // 060: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 065: astore 9
      // 067: aload 9
      // 069: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 06e: ifeq 0c9
      // 071: aload 9
      // 073: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 078: checkcast java/util/Map$Entry
      // 07b: astore 10
      // 07d: aload 10
      // 07f: invokeinterface java/util/Map$Entry.getKey ()Ljava/lang/Object; 1
      // 084: checkcast java/lang/String
      // 087: astore 11
      // 089: aload 10
      // 08b: invokeinterface java/util/Map$Entry.getValue ()Ljava/lang/Object; 1
      // 090: checkcast [Ljava/lang/String;
      // 093: astore 12
      // 095: aload 12
      // 097: astore 13
      // 099: aload 13
      // 09b: arraylength
      // 09c: istore 14
      // 09e: bipush 0
      // 09f: istore 15
      // 0a1: iload 15
      // 0a3: iload 14
      // 0a5: if_icmpge 0c6
      // 0a8: aload 13
      // 0aa: iload 15
      // 0ac: aaload
      // 0ad: astore 16
      // 0af: aload 7
      // 0b1: new com/l7tech/server/util/HttpForwardingRuleEnforcer$Param
      // 0b4: dup
      // 0b5: aload 11
      // 0b7: aload 16
      // 0b9: invokespecial com/l7tech/server/util/HttpForwardingRuleEnforcer$Param.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 0bc: invokevirtual java/util/ArrayList.add (Ljava/lang/Object;)Z
      // 0bf: pop
      // 0c0: iinc 15 1
      // 0c3: goto 0a1
      // 0c6: goto 067
      // 0c9: goto 196
      // 0cc: bipush 0
      // 0cd: istore 9
      // 0cf: iload 9
      // 0d1: aload 2
      // 0d2: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.getRules ()[Lcom/l7tech/policy/assertion/HttpPassthroughRule;
      // 0d5: arraylength
      // 0d6: if_icmpge 196
      // 0d9: aload 2
      // 0da: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRuleSet.getRules ()[Lcom/l7tech/policy/assertion/HttpPassthroughRule;
      // 0dd: iload 9
      // 0df: aaload
      // 0e0: astore 10
      // 0e2: aload 10
      // 0e4: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRule.getName ()Ljava/lang/String;
      // 0e7: astore 11
      // 0e9: aload 10
      // 0eb: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRule.isUsesCustomizedValue ()Z
      // 0ee: ifeq 13f
      // 0f1: aload 10
      // 0f3: invokevirtual com/l7tech/policy/assertion/HttpPassthroughRule.getCustomizeValue ()Ljava/lang/String;
      // 0f6: astore 12
      // 0f8: aload 5
      // 0fa: ifnull 12b
      // 0fd: aload 5
      // 0ff: arraylength
      // 100: ifle 12b
      // 103: goto 10a
      // 106: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 109: athrow
      // 10a: aload 4
      // 10c: ifnonnull 121
      // 10f: goto 116
      // 112: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 115: athrow
      // 116: aload 0
      // 117: aload 5
      // 119: aload 3
      // 11a: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getVariableMap ([Ljava/lang/String;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/util/Map; 3
      // 11f: astore 4
      // 121: aload 12
      // 123: aload 4
      // 125: aload 3
      // 126: invokestatic com/l7tech/server/policy/variable/ExpandVariables.process (Ljava/lang/String;Ljava/util/Map;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/lang/String;
      // 129: astore 12
      // 12b: aload 7
      // 12d: new com/l7tech/server/util/HttpForwardingRuleEnforcer$Param
      // 130: dup
      // 131: aload 11
      // 133: aload 12
      // 135: invokespecial com/l7tech/server/util/HttpForwardingRuleEnforcer$Param.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 138: invokevirtual java/util/ArrayList.add (Ljava/lang/Object;)Z
      // 13b: pop
      // 13c: goto 190
      // 13f: aload 8
      // 141: aload 11
      // 143: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 148: checkcast [Ljava/lang/String;
      // 14b: astore 12
      // 14d: aload 12
      // 14f: ifnull 190
      // 152: aload 12
      // 154: arraylength
      // 155: ifle 190
      // 158: goto 15f
      // 15b: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 15e: athrow
      // 15f: aload 12
      // 161: astore 13
      // 163: aload 13
      // 165: arraylength
      // 166: istore 14
      // 168: bipush 0
      // 169: istore 15
      // 16b: iload 15
      // 16d: iload 14
      // 16f: if_icmpge 190
      // 172: aload 13
      // 174: iload 15
      // 176: aaload
      // 177: astore 16
      // 179: aload 7
      // 17b: new com/l7tech/server/util/HttpForwardingRuleEnforcer$Param
      // 17e: dup
      // 17f: aload 11
      // 181: aload 16
      // 183: invokespecial com/l7tech/server/util/HttpForwardingRuleEnforcer$Param.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 186: invokevirtual java/util/ArrayList.add (Ljava/lang/Object;)Z
      // 189: pop
      // 18a: iinc 15 1
      // 18d: goto 16b
      // 190: iinc 9 1
      // 193: goto 0cf
      // 196: aload 7
      // 198: areturn
      // try (5 -> 15): 15 java/io/IOException
      // try (17 -> 28): 28 java/io/IOException
      // try (106 -> 111): 112 java/io/IOException
      // try (108 -> 116): 117 java/io/IOException
      // try (143 -> 148): 149 java/io/IOException
   }

   public static void handleResponseHeaders(
      HttpInboundResponseKnob var0,
      Message var1,
      Audit var2,
      HttpPassthroughRuleSet var3,
      PolicyEnforcementContext var4,
      GenericHttpRequestParams var5,
      @Nullable Map<String, ?> var6,
      @Nullable String[] var7
   ) {
      if (var1 != null && var1.getHeadersKnob() != null) {
         HeadersKnob var8 = var1.getHeadersKnob();
         URL var9 = var5.getTargetUrl();
         if (var3.isForwardAll()) {
            boolean var10 = a.isLoggable(Level.FINE);

            for (HttpHeader var14 : var0.getHeadersArray()) {
               if (HttpConstants.HEADER_SET_COOKIE.equalsIgnoreCase(var14.getName())) {
                  String var15 = var14.getFullValue();
                  a(var4, var8, var9, var15);
               } else {
                  boolean var26 = !a(var14.getName());
                  if (!var26 && var10) {
                     Logger var10000 = a;
                     String var10001 = var14.getName();
                     String var10002 = var14.getFullValue();
                     String[] var19 = b;
                     var10000.fine(var19[2] + var10001 + var19[16] + var10002);
                  }

                  String var33 = var14.getName();
                  String var37 = var14.getFullValue();
                  String[] var28 = b;
                  var8.addHeader(var33, var37, var28[7], var26);
               }
            }
         } else {
            for (HttpPassthroughRule var23 : var3.getRules()) {
               if (var23.isUsesCustomizedValue()) {
                  String var25 = var23.getCustomizeValue();
                  if (var7 != null && var7.length > 0) {
                     if (var6 == null) {
                        var6 = var4.getVariableMap(var7, var2);
                     }

                     var25 = ExpandVariables.process(var25, var6, var2);
                  }

                  String var36 = var23.getName();
                  String[] var31 = b;
                  var8.addHeader(var36, var25, var31[7]);
               } else {
                  String[] var24 = var0.getHeaderValues(var23.getName());
                  if (var24 != null && var24.length > 0) {
                     for (String var18 : var24) {
                        if (HttpConstants.HEADER_SET_COOKIE.equalsIgnoreCase(var23.getName())) {
                           a(var4, var8, var9, var18);
                        } else {
                           String var35 = var23.getName();
                           String[] var30 = b;
                           var8.addHeader(var35, var18, var30[7]);
                        }
                     }
                  } else {
                     Logger var32 = a;
                     String var34 = var23.getName();
                     String[] var29 = b;
                     var32.fine(var29[1] + var34 + var29[9]);
                  }
               }
            }
         }
      } else {
         a.log(Level.WARNING, b[11]);
      }
   }

   private static void a(PolicyEnforcementContext var0, HeadersKnob var1, URL var2, String var3) {
      StringBuffer var4 = new StringBuffer();
      String var5 = var0.isOverwriteResponseCookieDomain() ? CookieUtils.DOMAIN + "=" + var2.getHost() : null;
      String var6 = var0.isOverwriteResponseCookiePath() ? CookieUtils.PATH + "=" + var2.getPath() : null;
      List var7 = CookieUtils.splitCookieHeader(var3);

      for (int var8 = 0; var8 < var7.size(); var8++) {
         if (var8 > 0) {
            var4.append(CookieUtils.ATTRIBUTE_DELIMITER);
         }

         var4.append(CookieUtils.addCookieDomainAndPath((String)var7.get(var8), var5, var6));
      }

      String var9 = var4.toString();
      var1.addHeader(HttpConstants.HEADER_SET_COOKIE, var9, b[10]);
   }

   private static boolean a(HttpRequestKnob var0) {
      String[] var6 = b;
      String[] var1 = var0.getHeaderValues(var6[5]);
      if (var1 != null) {
         for (String var5 : var1) {
            if (var5.toLowerCase().contains(b[13])) {
               return true;
            }
         }
      }

      return false;
   }

   private static boolean a(String var0) {
      return HttpPassthroughRuleSet.HEADERS_NOT_TO_IMPLICITLY_FORWARD.contains(var0.toLowerCase());
   }

   private static Collection<String> a(Collection<String> var0, Audit var1) {
      ArrayList var2 = new ArrayList();

      for (String var4 : var0) {
         try {
            HttpCookie var5 = new HttpCookie(var4);
            if (CookieUtils.isPassThroughCookie(var5)) {
               var1.logAndAudit(AssertionMessages.HTTPROUTE_ADDCOOKIE_VERSION, new String[]{var5.getCookieName(), String.valueOf(var5.getVersion())});
               String var6 = CookieUtils.getNameAndValue(var4);

               try {
                  if (var6 != null) {
                     var2.add(var6);
                     continue;
                  }
               } catch (IllegalFormatException var7) {
                  throw a(var7);
               }

               var2.add(var4);
            }
         } catch (IllegalFormatException var8) {
            var2.add(var4);
         }
      }

      return var2;
   }

   private static void a(String param0, String[] param1, boolean param2, GenericHttpRequestParams param3) 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:
      // 00: aload 0
      // 01: invokestatic org/apache/commons/lang3/StringUtils.isBlank (Ljava/lang/CharSequence;)Z
      // 04: ifeq 19
      // 07: new java/io/IOException
      // 0a: dup
      // 0b: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 0e: bipush 14
      // 10: aaload
      // 11: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 14: athrow
      // 15: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 18: athrow
      // 19: aload 0
      // 1a: getstatic com/l7tech/common/http/HttpConstants.HEADER_AUTHORIZATION Ljava/lang/String;
      // 1d: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 20: ifeq 43
      // 23: aload 3
      // 24: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.getPasswordAuthentication ()Ljava/net/PasswordAuthentication;
      // 27: ifnull 43
      // 2a: goto 31
      // 2d: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 30: athrow
      // 31: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a Ljava/util/logging/Logger;
      // 34: getstatic com/l7tech/server/util/HttpForwardingRuleEnforcer.b [Ljava/lang/String;
      // 37: bipush 4
      // 38: aaload
      // 39: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 3c: goto 8c
      // 3f: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 42: athrow
      // 43: bipush 0
      // 44: istore 4
      // 46: iload 4
      // 48: aload 1
      // 49: arraylength
      // 4a: if_icmpge 8c
      // 4d: aload 1
      // 4e: iload 4
      // 50: aaload
      // 51: astore 5
      // 53: iload 2
      // 54: ifeq 78
      // 57: iload 4
      // 59: ifne 78
      // 5c: goto 63
      // 5f: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 62: athrow
      // 63: aload 3
      // 64: new com/l7tech/common/http/GenericHttpHeader
      // 67: dup
      // 68: aload 0
      // 69: aload 5
      // 6b: invokespecial com/l7tech/common/http/GenericHttpHeader.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 6e: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.replaceExtraHeader (Lcom/l7tech/common/http/HttpHeader;)V
      // 71: goto 86
      // 74: invokestatic com/l7tech/server/util/HttpForwardingRuleEnforcer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 77: athrow
      // 78: aload 3
      // 79: new com/l7tech/common/http/GenericHttpHeader
      // 7c: dup
      // 7d: aload 0
      // 7e: aload 5
      // 80: invokespecial com/l7tech/common/http/GenericHttpHeader.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 83: invokevirtual com/l7tech/common/http/GenericHttpRequestParams.addExtraHeader (Lcom/l7tech/common/http/HttpHeader;)V
      // 86: iinc 4 1
      // 89: goto 46
      // 8c: return
      // try (0 -> 10): 10 java/io/IOException
      // try (12 -> 19): 20 java/io/IOException
      // try (16 -> 28): 28 java/io/IOException
      // try (40 -> 44): 45 java/io/IOException
      // try (42 -> 55): 55 java/io/IOException
   }

   private static void a(GenericHttpRequestParams var0, Collection<String> var1, Audit var2) {
      Collection var3 = a(var1, var2);
      if (!var3.isEmpty()) {
         String var4 = StringUtils.join(var3, b[17]);
         var0.addExtraHeader(new GenericHttpHeader(HttpConstants.HEADER_COOKIE, var4));
      }
   }

   static {
      String[] var5 = new String[18];
      int var3 = 0;
      String var2 = "%<`je~p0y-#1hwv7w$yl%pbm#6`%abr2ykja7x8+zdasw9>-mvvz2+-\u001e\u0016=il}p>96c(cvm$\rew|by?ye`rs{%y>\u001f-yuCvm$-ew|by?\u000bxiv7}87ydzymw8c%[CJ\u0007ye`rs{%yzlg\u007f>67-`~gj.ycd~r_96y%cvm$0cb3cv%6xb{7\u007f\"-eja~d6-dj}7v28i`a7|2:lp`r>4+havyj>8av3vl2y~uvtw10ha3qq%yodp|327i%aro\"<~q\f46cqvyjz-tuv\u0012w,~`a7\u007f0<cq3a\u007f;,h%\u000b\u001f\rYU3_{6=hwH#1dv3e{&,hvg7w$ycjg7\u007fw?bw~7n8*y%`x>#1h%cvl64hqve>%,a``7\u007f%<-gv~p0ydb}xl2=4w.dq{7w9:bhzyyw/lifr>5,y%g\u007fw$ye`rs{%ydv3yq#y}wvd{9-#\u000b\u001f\rYU3_{6=hw@\u00027lg\u007fr>#6-c|ei6+i%arm'6cvv7v28i`ad>5<ndfd{w1hdwrl$yfk|u>>*-kf{ry\u001b!0\u007fqfvrz1bvg7q!<\u007fwzs{w*hq)7\u000416\u007fh%\u00127njfyj2+ha3\u007f{6=hw3`w#1-d}7{:)y|3y\u007f:<>96-ure\u007f:<y`a7j8ykja`\u007f%=-frbm2yymv7w9:bhzyyw+htfrm#ydv3yq#yeqgg";
      int var4 = "%<`je~p0y-#1hwv7w$yl%pbm#6`%abr2ykja7x8+zdasw9>-mvvz2+-\u001e\u0016=il}p>96c(cvm$\rew|by?ye`rs{%y>\u001f-yuCvm$-ew|by?\u000bxiv7}87ydzymw8c%[CJ\u0007ye`rs{%yzlg\u007f>67-`~gj.ycd~r_96y%cvm$0cb3cv%6xb{7\u007f\"-eja~d6-dj}7v28i`a7|2:lp`r>4+havyj>8av3vl2y~uvtw10ha3qq%yodp|327i%aro\"<~q\f46cqvyjz-tuv\u0012w,~`a7\u007f0<cq3a\u007f;,h%\u000b\u001f\rYU3_{6=hwH#1dv3e{&,hvg7w$ycjg7\u007fw?bw~7n8*y%`x>#1h%cvl64hqve>%,a``7\u007f%<-gv~p0ydb}xl2=4w.dq{7w9:bhzyyw/lifr>5,y%g\u007fw$ye`rs{%ydv3yq#y}wvd{9-#\u000b\u001f\rYU3_{6=hw@\u00027lg\u007fr>#6-c|ei6+i%arm'6cvv7v28i`ad>5<ndfd{w1hdwrl$yfk|u>>*-kf{ry\u001b!0\u007fqfvrz1bvg7q!<\u007fwzs{w*hq)7\u000416\u007fh%\u00127njfyj2+ha3\u007f{6=hw3`w#1-d}7{:)y|3y\u007f:<>96-ure\u007f:<y`a7j8ykja`\u007f%=-frbm2yymv7w9:bhzyyw+htfrm#ydv3yq#yeqgg"
         .length();
      char var1 = '\t';
      int var7 = -1;

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

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

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

                  var2 = "b;qdn\"}# mu&\u0002yl";
                  var4 = "b;qdn\"}# mu&\u0002yl".length();
                  var1 = '\f';
                  var7 = -1;
            }

            var10000 = 34;
            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] ^ 41);
      }

      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 -> 96;
            case 1 -> 110;
            case 2 -> 58;
            case 3 -> 50;
            case 4 -> 36;
            case 5 -> 32;
            default -> 41;
         });
      }

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

   public static class Param {
      public final String name;
      public final String value;

      Param(String var1, String var2) {
         this.name = var1;
         this.value = var2;
      }
   }
}
