package com.l7tech.policy.assertion;

import com.l7tech.common.http.HttpMethod;
import com.l7tech.common.http.GenericHttpRequestParams.HttpVersion;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.ExternalEntityHeader;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.policy.wsp.Java5EnumTypeMapping;
import com.l7tech.policy.wsp.SimpleTypeMappingFinder;
import com.l7tech.policy.wsp.WspSensitive;
import com.l7tech.search.Dependency;
import com.l7tech.util.GoidUpgradeMapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jetbrains.annotations.Nullable;

public class HttpRoutingAssertion extends RoutingAssertionWithSamlSV implements UsesEntities, UsesVariables, SetsVariables, OptionalPrivateKeyable {
   public static final int DEFAULT_MAX_CONNECTIONS_PER_HOST = -1;
   public static final String VAR_ROUTING_LATENCY;
   public static final String VAR_HTTP_ROUTING_URL;
   public static final String VAR_HTTP_ROUTING_REASON_CODE;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_HOST;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_PROTOCOL;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_PORT;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_FILE;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_PATH;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_QUERY;
   public static final String VAR_HTTP_ROUTING_URL_SUFFIX_FRAGMENT;
   public static final String VAR_HTTP_ROUTING_URL_BLACKLIST;
   public static final String PROP_SSL_SESSION_TIMEOUT;
   public static final int DEFAULT_SSL_SESSION_TIMEOUT = 600;
   public static final String PROP_SSL_SESSION_CACHE_SIZE;
   public static final int DEFAULT_SSL_SESSION_CACHE_SIZE = 10000;
   public static final String KERBEROS_DATA;
   private static final String META_INITIALIZED;
   protected String protectedServiceUrl;
   protected String login;
   protected String password;
   protected String realm;
   protected String ntlmHost;
   protected String userAgent;
   protected int maxConnections;
   protected boolean passthroughHttpAuthentication;
   protected String[] customIpAddresses = null;
   protected String[] customURLs = null;
   protected String failoverStrategyName;
   private boolean taiCredentialChaining;
   protected String connectionTimeout;
   protected String timeout;
   protected String maxDurationTimeout;
   protected int maxRetries;
   protected boolean omitAuthHeaderConnectReuse;
   protected Boolean omitAuthHeaderConnectReuseSystemDefault;
   protected boolean bufferDisabled;
   protected boolean maxDurationEnabled;
   protected String requestMsgSrc;
   protected String responseMsgDest;
   protected String responseSize;
   protected HttpPassthroughRuleSet responseHeaderRules;
   protected HttpPassthroughRuleSet requestHeaderRules;
   protected HttpPassthroughRuleSet requestParamRules;
   protected boolean followRedirects;
   protected boolean failOnErrorStatus;
   protected boolean passThroughSoapFaults;
   protected boolean gzipEncodeDownstream;
   protected boolean krbDelegatedAuthentication;
   protected boolean krbUseGatewayKeytab;
   protected String krbConfiguredAccount;
   protected String krbConfiguredPassword;
   private String authOauthVersion;
   private String authOauthTokenVar;
   protected boolean usesDefaultKeyStore;
   protected boolean usesDynamicPrivateKey;
   protected String privateKeyVariableName;
   protected String certificateVariableName;
   protected boolean usesNoKey;
   protected Goid nonDefaultKeystoreId;
   protected String keyId;
   private HttpMethod httpMethod;
   private HttpVersion httpVersion;
   private boolean useKeepAlives;
   private String proxyHost;
   private String proxyPort;
   private String proxyUsername;
   private String proxyPassword;
   protected String tlsVersion;
   protected String tlsCipherSuites;
   protected Goid[] tlsTrustedCertGoids;
   protected String[] tlsTrustedCertNames;
   private boolean forceIncludeRequestBody;
   private String httpMethodAsString;
   private boolean overrideContentType;
   private boolean omitHostHeader;
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   static final long serialVersionUID = 736272666611599729L;
   private static final String[] b;

   public HttpRoutingAssertion() {
      this(null, null, null, null);
   }

   public HttpRoutingAssertion(String var1) {
      this(var1, null, null, null);
   }

   public HttpRoutingAssertion(String var1, String var2, String var3, String var4) {
      this(var1, var2, var3, var4, -1);
   }

   public HttpRoutingAssertion clone() {
      HttpRoutingAssertion var1 = (HttpRoutingAssertion)super.clone();
      var1.responseHeaderRules = this.responseHeaderRules.clone();
      var1.requestHeaderRules = this.requestHeaderRules.clone();
      var1.requestParamRules = this.requestParamRules.clone();
      return var1;
   }

   public HttpRoutingAssertion(String var1, String var2, String var3, String var4, int var5) {
      String[] var6 = b;
      this.failoverStrategyName = var6[11];
      this.taiCredentialChaining = false;
      this.maxRetries = -1;
      this.responseSize = null;
      this.responseHeaderRules = new HttpPassthroughRuleSet(false, new HttpPassthroughRule[]{new HttpPassthroughRule(var6[22], false, null)});
      this.requestHeaderRules = new HttpPassthroughRuleSet(
         false, new HttpPassthroughRule[]{new HttpPassthroughRule(var6[48], false, null), new HttpPassthroughRule(var6[42], false, null)}
      );
      this.requestParamRules = new HttpPassthroughRuleSet(true, new HttpPassthroughRule[0]);
      this.followRedirects = false;
      this.failOnErrorStatus = true;
      this.passThroughSoapFaults = true;
      this.usesDefaultKeyStore = true;
      this.usesDynamicPrivateKey = false;
      this.privateKeyVariableName = null;
      this.usesNoKey = false;
      this.useKeepAlives = true;
      this.proxyHost = null;
      this.proxyPort = var6[7];
      this.proxyUsername = "";
      this.proxyPassword = "";
      this.forceIncludeRequestBody = false;
      this.overrideContentType = false;
      this.omitHostHeader = false;
      this.protectedServiceUrl = var1;
      this.login = var2;
      this.password = var3;
      this.realm = var4;
      this.passthroughHttpAuthentication = false;
      this.maxConnections = var5;
      this.omitAuthHeaderConnectReuseSystemDefault = null;
   }

   public int getMaxConnections() {
      return this.maxConnections;
   }

   public void setMaxConnections(int var1) {
      this.maxConnections = var1;
   }

   public String getConnectionTimeout() {
      return this.connectionTimeout;
   }

   public void setConnectionTimeout(String var1) {
      this.connectionTimeout = var1;
   }

   @Deprecated
   public void setConnectionTimeout(Integer var1) {
      this.connectionTimeout = var1.toString();
   }

   public String getTimeout() {
      return this.timeout;
   }

   public void setTimeout(String var1) {
      this.timeout = var1;
   }

   @Deprecated
   public void setTimeout(Integer var1) {
      this.timeout = var1.toString();
   }

   public String getMaxDurationTimeout() {
      return this.maxDurationTimeout;
   }

   public void setMaxDurationTimeout(String var1) {
      this.maxDurationTimeout = var1;
   }

   public int getMaxRetries() {
      return this.maxRetries;
   }

   public void setMaxRetries(int var1) {
      this.maxRetries = var1;
   }

   public boolean getOmitAuthHeaderConnectReuse() {
      return this.omitAuthHeaderConnectReuse;
   }

   public void setOmitAuthHeaderConnectReuse(boolean var1) {
      this.omitAuthHeaderConnectReuse = var1;
   }

   public Boolean getOmitAuthHeaderConnectReuseSystemDefault() {
      return this.omitAuthHeaderConnectReuseSystemDefault;
   }

   public void setOmitAuthHeaderConnectReuseSystemDefault(Boolean var1) {
      this.omitAuthHeaderConnectReuseSystemDefault = var1;
   }

   public boolean isMaxDurationEnabled() {
      return this.maxDurationEnabled;
   }

   public void setMaxDurationEnabled(boolean var1) {
      this.maxDurationEnabled = var1;
   }

   public boolean isBufferDisabled() {
      return this.bufferDisabled;
   }

   public void setBufferDisabled(boolean var1) {
      this.bufferDisabled = var1;
   }

   public boolean isFailOnErrorStatus() {
      return this.failOnErrorStatus;
   }

   public void setFailOnErrorStatus(boolean var1) {
      this.failOnErrorStatus = var1;
   }

   public boolean isPassThroughSoapFaults() {
      return this.passThroughSoapFaults;
   }

   public void setPassThroughSoapFaults(boolean var1) {
      this.passThroughSoapFaults = var1;
   }

   public String getRequestMsgSrc() {
      return this.requestMsgSrc;
   }

   public void setRequestMsgSrc(String var1) {
      this.requestMsgSrc = var1;
   }

   public String getResponseMsgDest() {
      return this.responseMsgDest;
   }

   public void setResponseMsgDest(String var1) {
      this.responseMsgDest = var1;
   }

   public String getResponseSize() {
      return this.responseSize;
   }

   public void setResponseSize(String var1) {
      this.responseSize = var1;
   }

   @Override
   public boolean initializesRequest() {
      return false;
   }

   @Override
   public boolean needsInitializedRequest() {
      return null == this.requestMsgSrc;
   }

   @Override
   public boolean initializesResponse() {
      return null == this.responseMsgDest;
   }

   @Override
   public boolean needsInitializedResponse() {
      return false;
   }

   public HttpPassthroughRuleSet getResponseHeaderRules() {
      return this.responseHeaderRules;
   }

   public void setResponseHeaderRules(HttpPassthroughRuleSet var1) {
      this.responseHeaderRules = var1;
   }

   public HttpPassthroughRuleSet getRequestHeaderRules() {
      return this.requestHeaderRules;
   }

   public void setRequestHeaderRules(HttpPassthroughRuleSet var1) {
      this.requestHeaderRules = var1;
   }

   public HttpPassthroughRuleSet getRequestParamRules() {
      return this.requestParamRules;
   }

   public void setRequestParamRules(HttpPassthroughRuleSet var1) {
      this.requestParamRules = var1;
   }

   public boolean isFollowRedirects() {
      return this.followRedirects;
   }

   public void setFollowRedirects(boolean var1) {
      this.followRedirects = var1;
   }

   public boolean isPassthroughHttpAuthentication() {
      return this.passthroughHttpAuthentication;
   }

   public void setPassthroughHttpAuthentication(boolean var1) {
      this.passthroughHttpAuthentication = var1;
   }

   public String getLogin() {
      return this.login;
   }

   public void setLogin(String var1) {
      this.login = var1;
   }

   @WspSensitive
   @Dependency(methodReturnType = Dependency.MethodReturnType.VARIABLE, type = Dependency.DependencyType.SECURE_PASSWORD)
   public String getPassword() {
      return this.password;
   }

   public void setPassword(String var1) {
      this.password = var1;
   }

   public String getRealm() {
      return this.realm;
   }

   public void setRealm(String var1) {
      this.realm = var1;
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.OPTIONAL,
      valueType = ExternalEntityHeader.ValueType.HTTP_URL,
      resolver = PropertyResolver.Type.VALUE_REFERENCE
   )
   public String getProtectedServiceUrl() {
      return this.protectedServiceUrl;
   }

   public void setProtectedServiceUrl(String var1) {
      this.protectedServiceUrl = var1;
   }

   public String getUserAgent() {
      return this.userAgent;
   }

   public void setUserAgent(String var1) {
      this.userAgent = var1;
   }

   @Override
   public String toString() {
      String var10000 = super.toString();
      String var10001 = this.getProtectedServiceUrl();
      String var1 = this.getRealm();
      String var2 = this.getLogin();
      String var3 = var10001;
      String[] var4 = b;
      return var10000 + var4[27] + var3 + var4[21] + var2 + var4[23] + var1;
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.OPTIONAL,
      valueType = ExternalEntityHeader.ValueType.IP_ADDRESS_ARRAY,
      resolver = PropertyResolver.Type.VALUE_REFERENCE
   )
   public String[] getCustomIpAddresses() {
      return this.customIpAddresses;
   }

   public Goid[] getTlsTrustedCertGoids() {
      return this.tlsTrustedCertGoids;
   }

   public void setTlsTrustedCertGoids(@Nullable Goid[] var1) {
      this.tlsTrustedCertGoids = var1;
   }

   @Deprecated
   public void setTlsTrustedCertOids(@Nullable Long[] var1) {
      this.tlsTrustedCertGoids = GoidUpgradeMapper.mapOids(EntityType.TRUSTED_CERT, var1);
   }

   public String[] getTlsTrustedCertNames() {
      return this.tlsTrustedCertNames;
   }

   public String certName(int var1) {
      return this.tlsTrustedCertNames != null && var1 < this.tlsTrustedCertNames.length ? this.tlsTrustedCertNames[var1] : null;
   }

   public void setTlsTrustedCertNames(@Nullable String[] var1) {
      this.tlsTrustedCertNames = var1;
   }

   @Migration(mapName = MigrationMappingSelection.REQUIRED, resolver = PropertyResolver.Type.ASSERTION)
   @Override
   public EntityHeader[] getEntitiesUsed() {
      if (this.tlsTrustedCertGoids != null && this.tlsTrustedCertGoids.length >= 1) {
         EntityHeader[] var1 = new EntityHeader[this.tlsTrustedCertGoids.length];

         for (int var2 = 0; var2 < this.tlsTrustedCertGoids.length; var2++) {
            Goid var3 = this.tlsTrustedCertGoids[var2];
            String var4 = this.certName(var2);
            var1[var2] = new EntityHeader(var3, EntityType.TRUSTED_CERT, var4, b[41]);
         }

         return var1;
      } else {
         return new EntityHeader[0];
      }
   }

   @Override
   public void replaceEntity(EntityHeader var1, EntityHeader var2) {
      if (this.tlsTrustedCertGoids != null && EntityType.TRUSTED_CERT.equals(var1.getType()) && EntityType.TRUSTED_CERT.equals(var2.getType())) {
         for (int var3 = 0; var3 < this.tlsTrustedCertGoids.length; var3++) {
            if (Goid.equals(this.tlsTrustedCertGoids[var3], var1.getGoid())) {
               this.tlsTrustedCertGoids[var3] = var2.getGoid();
               if (this.tlsTrustedCertNames != null && this.tlsTrustedCertNames.length > var3) {
                  this.tlsTrustedCertNames[var3] = var2.getName();
               }
            }
         }
      }
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.OPTIONAL,
      valueType = ExternalEntityHeader.ValueType.HTTP_URL_ARRAY,
      resolver = PropertyResolver.Type.VALUE_REFERENCE
   )
   public String[] getCustomURLs() {
      return this.customURLs;
   }

   public void setCustomURLs(String[] var1) {
      this.customURLs = var1;
   }

   public void setCustomIpAddresses(String[] var1) {
      this.customIpAddresses = var1;
   }

   public String getFailoverStrategyName() {
      return this.failoverStrategyName;
   }

   public void setFailoverStrategyName(String var1) {
      this.failoverStrategyName = var1;
   }

   public String getTlsVersion() {
      return this.tlsVersion;
   }

   public void setTlsVersion(String var1) {
      this.tlsVersion = var1;
   }

   public String getTlsCipherSuites() {
      return this.tlsCipherSuites;
   }

   public void setTlsCipherSuites(String var1) {
      this.tlsCipherSuites = var1;
   }

   public HttpVersion getHttpVersion() {
      return this.httpVersion;
   }

   public void setHttpVersion(HttpVersion var1) {
      this.httpVersion = var1;
   }

   public boolean isForceIncludeRequestBody() {
      return this.forceIncludeRequestBody;
   }

   public void setForceIncludeRequestBody(boolean var1) {
      this.forceIncludeRequestBody = var1;
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.REQUIRED,
      export = false,
      valueType = ExternalEntityHeader.ValueType.TEXT_ARRAY,
      resolver = PropertyResolver.Type.SERVER_VARIABLE
   )
   @Override
   public String[] getVariablesUsed() {
      ArrayList var1 = new ArrayList();
      var1.add(this.login);
      var1.add(this.password);
      var1.add(this.protectedServiceUrl);
      var1.add(this.ntlmHost);
      var1.add(this.realm);
      var1.add(this.krbConfiguredAccount);
      var1.add(this.krbConfiguredPassword);
      var1.add(this.responseSize);
      var1.add(this.timeout);
      var1.add(this.connectionTimeout);
      var1.add(this.maxDurationTimeout);
      var1.add(this.httpMethodAsString);
      var1.add(this.proxyHost);
      var1.add(this.proxyPort);
      var1.add(this.proxyUsername);
      var1.add(this.proxyPassword);
      var1.add(Syntax.getVariableExpression(this.authOauthTokenVar));
      if (this.customURLs != null) {
         var1.addAll(Arrays.asList(this.customURLs));
      }

      if (this.customIpAddresses != null) {
         var1.addAll(Arrays.asList(this.customIpAddresses));
      }

      if (this.privateKeyVariableName != null) {
         var1.addAll(List.of(this.privateKeyVariableName));
      }

      if (this.certificateVariableName != null) {
         var1.addAll(List.of(this.certificateVariableName));
      }

      var1.add(Syntax.getVariableExpression(this.requestMsgSrc));
      HttpPassthroughRuleSet[] var2 = new HttpPassthroughRuleSet[]{this.responseHeaderRules, this.requestHeaderRules, this.requestParamRules};

      for (HttpPassthroughRuleSet var6 : var2) {
         if (!var6.isForwardAll()) {
            for (HttpPassthroughRule var10 : var6.getRules()) {
               var1.add(var10.getCustomizeValue());
            }
         }
      }

      return Syntax.getReferencedNames(var1.toArray(new String[var1.size()]));
   }

   @Override
   public VariableMetadata[] getVariablesSet() {
      ArrayList var1 = new ArrayList();
      String[] var2 = b;
      var1.add(new VariableMetadata(var2[40], false, false, var2[52], false));
      var1.add(new VariableMetadata(var2[6], false, false, var2[26], false));
      if (this.responseMsgDest != null) {
         var1.add(new VariableMetadata(this.responseMsgDest, false, false, this.responseMsgDest, true, DataType.MESSAGE));
      }

      if (this.krbUseGatewayKeytab || this.krbDelegatedAuthentication || this.krbConfiguredAccount != null) {
         var2 = b;
         var1.add(new VariableMetadata(var2[8], false, false, null, false, DataType.UNKNOWN));
      }

      var2 = b;
      var1.add(new VariableMetadata(var2[18], false, false, var2[0], false, DataType.INTEGER));
      return var1.toArray(new VariableMetadata[var1.size()]);
   }

   public boolean isTaiCredentialChaining() {
      return this.taiCredentialChaining;
   }

   public void setTaiCredentialChaining(boolean var1) {
      this.taiCredentialChaining = var1;
   }

   public String getNtlmHost() {
      return this.ntlmHost;
   }

   public void setNtlmHost(String var1) {
      this.ntlmHost = var1;
   }

   @Override
   public boolean isUsesDefaultKeyStore() {
      return this.usesDefaultKeyStore;
   }

   @Override
   public void setUsesDefaultKeyStore(boolean var1) {
      this.usesDefaultKeyStore = var1;
   }

   @Migration(mapName = MigrationMappingSelection.REQUIRED, export = false, resolver = PropertyResolver.Type.SSGKEY)
   @Override
   public Goid getNonDefaultKeystoreId() {
      return this.nonDefaultKeystoreId;
   }

   @Override
   public void setNonDefaultKeystoreId(Goid var1) {
      this.nonDefaultKeystoreId = var1;
   }

   @Deprecated
   public void setNonDefaultKeystoreId(long var1) {
      this.nonDefaultKeystoreId = GoidUpgradeMapper.mapOid(EntityType.SSG_KEYSTORE, var1);
   }

   @Override
   public String getKeyAlias() {
      return this.keyId;
   }

   @Override
   public void setKeyAlias(String var1) {
      this.keyId = var1;
   }

   @Override
   public boolean isDynamicPrivateKeyAllowed() {
      return true;
   }

   @Override
   public boolean isUsesDynamicPrivateKey() {
      return this.usesDynamicPrivateKey;
   }

   @Override
   public boolean isUsesNoKeyAllowed() {
      return true;
   }

   @Override
   public boolean isUsesNoKey() {
      return this.usesNoKey;
   }

   @Override
   public void setUsesNoKey(boolean var1) {
      this.usesNoKey = var1;
   }

   public boolean isGzipEncodeDownstream() {
      return this.gzipEncodeDownstream;
   }

   public void setGzipEncodeDownstream(boolean var1) {
      this.gzipEncodeDownstream = var1;
   }

   public boolean isKrbDelegatedAuthentication() {
      return this.krbDelegatedAuthentication;
   }

   public void setKrbDelegatedAuthentication(boolean var1) {
      this.krbDelegatedAuthentication = var1;
   }

   @WspSensitive
   public String getKrbConfiguredPassword() {
      return this.krbConfiguredPassword;
   }

   public void setKrbConfiguredPassword(String var1) {
      this.krbConfiguredPassword = var1;
   }

   public String getKrbConfiguredAccount() {
      return this.krbConfiguredAccount;
   }

   public void setKrbConfiguredAccount(String var1) {
      this.krbConfiguredAccount = var1;
   }

   public boolean isKrbUseGatewayKeytab() {
      return this.krbUseGatewayKeytab;
   }

   public void setKrbUseGatewayKeytab(boolean var1) {
      this.krbUseGatewayKeytab = var1;
   }

   public String getAuthOauthVersion() {
      return this.authOauthVersion;
   }

   public void setAuthOauthVersion(String var1) {
      this.authOauthVersion = var1;
   }

   public String getAuthOauthTokenVar() {
      return this.authOauthTokenVar;
   }

   public void setAuthOauthTokenVar(String var1) {
      this.authOauthTokenVar = var1;
   }

   public HttpMethod getHttpMethod() {
      return this.httpMethod;
   }

   public void setHttpMethod(HttpMethod var1) {
      this.httpMethod = var1;
   }

   public String getHttpMethodAsString() {
      return this.httpMethodAsString;
   }

   public void setHttpMethodAsString(String var1) {
      this.httpMethodAsString = var1;
   }

   public String getProxyHost() {
      return this.proxyHost;
   }

   public void setProxyHost(String var1) {
      this.proxyHost = var1;
   }

   public String getProxyPort() {
      return this.proxyPort;
   }

   public void setProxyPort(int var1) {
      this.proxyPort = Integer.toString(var1);
   }

   public void setProxyPort(String var1) {
      this.proxyPort = var1;
   }

   public String getProxyUsername() {
      return this.proxyUsername;
   }

   public void setProxyUsername(String var1) {
      this.proxyUsername = var1;
   }

   @WspSensitive
   @Dependency(methodReturnType = Dependency.MethodReturnType.VARIABLE, type = Dependency.DependencyType.SECURE_PASSWORD)
   public String getProxyPassword() {
      return this.proxyPassword;
   }

   public void setProxyPassword(String var1) {
      this.proxyPassword = var1;
   }

   public boolean isUseKeepAlives() {
      return this.useKeepAlives;
   }

   public void setUseKeepAlives(boolean var1) {
      this.useKeepAlives = var1;
   }

   public boolean isOverrideContentType() {
      return this.overrideContentType;
   }

   public void setOverrideContentType(boolean var1) {
      this.overrideContentType = var1;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[1], new String[]{var2[32]});
      var1.put(var2[30], var2[10]);
      var1.put(var2[24], var2[29]);
      var1.put(var2[15], var2[47]);
      var1.put(var2[46], policyNameFactory);
      var1.put(var2[16], var2[5]);
      var1.put(var2[25], var2[54]);
      var1.put(
         var2[44],
         new SimpleTypeMappingFinder(Arrays.asList(new Java5EnumTypeMapping(HttpMethod.class, var2[2]), new Java5EnumTypeMapping(HttpVersion.class, var2[14])))
      );
      var1.put(var2[38], var2[9]);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   public static String getVarHttpRoutingUrlHost() {
      return b[49];
   }

   public static String getVarHttpRoutingUrlProtocol() {
      return b[13];
   }

   public static String getVarHttpRoutingUrlPort() {
      return b[4];
   }

   public static String getVarHttpRoutingUrlFile() {
      return b[35];
   }

   public static String getVarHttpRoutingUrlPath() {
      return b[20];
   }

   public static String getVarHttpRoutingUrlQuery() {
      return b[39];
   }

   public static String getVarHttpRoutingUrlFragment() {
      return b[33];
   }

   public static String getVarHttpRoutingUrlBlacklist() {
      return b[12];
   }

   public boolean isOmitHostHeader() {
      return this.omitHostHeader;
   }

   public void setOmitHostHeader(boolean var1) {
      this.omitHostHeader = var1;
   }

   @Override
   public String getDynamicPrivateKeyVariable() {
      return this.privateKeyVariableName;
   }

   @Override
   public void setDynamicPrivateKeyVariable(String var1) {
      this.privateKeyVariableName = var1;
   }

   @Override
   public void setUsesDynamicPrivateKey(boolean var1) {
      this.usesDynamicPrivateKey = var1;
   }

   public String getDynamicCertificateVariable() {
      return this.certificateVariableName;
   }

   public void setDynamicCertificateVariable(String var1) {
      this.certificateVariableName = var1;
   }

   static {
      String[] var5 = new String[55];
      int var3 = 0;
      String var2 = "q*9\u0002#@\u000fm7#\u0015_]\u001fx-\"\u001c2@\u001e|\u000ei?!\u0017\u0005[\u001f_1!\u0016\u0014]\t\nq*9\u0002<J\u000eq1)\u0011K18\u0006\u0014\u000f\fp?m:%{*1\rd\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup=\u001d\u0003[>z1 \\\u001d\u0018\u000e|=%\\\u0012@\u0014j1!\u0017_N\u0019m7\"\u001c_g\u000em.\u001f\u001d\u0004[\u0013w9\f\u0001\u0002J\bm7\"\u001c!]\u0015i;?\u0006\u0018J\tX=9\u001b\u001eA\u000fq*9\u0002#@\u000fm7#\u0015_Z\bu\u00024o\rr;?\u0010\u0014]\u0015jp)\u0013\u0005NCz1 \\\u001d\u0018\u000e|=%\\\u0012@\u0014j1!\u0017_[\b|;c\u0002\u001eC\u0013z'c\u0013\u0015Y\u0013z;c3\u0015K2m*= \u001eZ\u000ep0*3\u0002\\\u001fk*$\u001d\u001fn\u001eo7.\u0017\u0011K18\u0006\u0014\u000f\fp?m:%{*1\rd\u0007v,)\u0017\u0003J\u001e\u0019q*9\u0002#@\u000fm7#\u0015_Z\bup/\u001e\u0010L\u0011u7>\u0006\u0018q*9\u0002#@\u000fm7#\u0015_Z\bup=\u0000\u001e[\u0015z1!\u000bq*9\u0002'J\bj7\"\u001c\u000fi?!\u0017\u0005[\u001fW1)\u00178L\u0015w\u0019i,\"\u0002\u0014]\u000ep;>3\u0012[\u0013v0\u000e\u001e\u0010\\\tw? \u0017\u0004\u007f7!\u0017\u0016q*9\u0002#@\u000fm7#\u0015_]\u001fx-\"\u001c2@\u001e|\t{2,\u0011\u001aC\u0013j*\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup=\u0013\u0005G\u000792\"\u0015\u0018AG\nJ;9_2@\u0015r7(\u00079,(\u0013\u001dBG\u000b};>\u0011\u0003F\nm7\"\u001c\u0014i,\"\u0002\u0014]\u000ep;>3\u0012[\u0013v0\u0003\u0013\u001cJ\u000fq*9\u0002#@\u000fm7#\u0015_Z\bu\u00059+?\u001eL\u001473(\u0006\u0010K\u001bm?\u0004\u001c\u0018[\u0013x2$\b\u0014KeM6(R\u0018A\u0019v3$\u001c\u0016\u000f\u0017|->\u0013\u0016JZn7!\u001eQM\u001f9,\"\u0007\u0005J\u001e9($\u0013QG\u000em.e!X\u000f\u000ev~9\u001a\u0014\u000f\nk19\u0017\u0012[\u001f}~>\u0017\u0003Y\u0013z;m\u0013\u0005\u000f\u000eq;m\u0016\u0014\\\u0013~0,\u0006\u0014KZL\f\u0001\\Q\u000fZ9~m\tj6\"\u0000\u0005a\u001bt;\u0004i1?\u0006\u0007k18\u0006\u0018A\u001d\u0018q*9\u0002#@\u000fm7#\u0015_Z\bup+\u0000\u0010H\u0017|09\u0005h+(\u0000\b\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup+\u001b\u001dJ\u0004q1>\u0006\u00197->\u001e\"J\tj7\"\u001c%F\u0017|18\u0006\"J\u0019v0)\u0001\u0015i1!\u001b\u0012V;}($\u0011\u0014l\u0016x->\u001c\u0010B\u001f\u0015q*9\u0002#@\u000fm7#\u0015_Z\bup<\u0007\u0014]\u0003\u0013q*9\u0002#@\u000fm7#\u0015_C\u001bm;#\u0011\b:J;?\u0004\u0014]Zz;?\u0006\u0018I\u0013z?9\u0017Q[\bl-9\u0017\u0015\u000f\u001cv,m\u001d\u0004[\u0018v+#\u0016Q|)Uq\u0019>\"\u000f\u0019v0#\u0017\u0012[\u0013v0\nJ\u0011\f\"0L\u000ep1#\u00147->\u001e\"J\tj7\"\u001c2N\u0019q;\u001e\u001b\u000bJ\u0010n-=!\u0004M\u000e`.(4\u0018A\u001e|,\u0004i?9\u001a\u0015i1!\u001b\u0012V4v:(<\u0010B\u001f_?.\u0006\u001e]\u0003)z1 ]\u001d\u0018\u000e|=%]\u0012@\u0014j1!\u0017^]\u001fj18\u0000\u0012J\t6-(\u0000\u0007J\b(hc\u0015\u0018I\u0006Z1\"\u0019\u0018J\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup%\u001d\u0002[\rr;?\u0010\u0014]\u0015jp)\u0013\u0005N\bi,\"\u0006\u001eL\u0015u\u0013q*9\u0002#@\u000fm7#\u0015_C\u001bm;#\u0011\b";
      int var4 = "q*9\u0002#@\u000fm7#\u0015_]\u001fx-\"\u001c2@\u001e|\u000ei?!\u0017\u0005[\u001f_1!\u0016\u0014]\t\nq*9\u0002<J\u000eq1)\u0011K18\u0006\u0014\u000f\fp?m:%{*1\rd\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup=\u001d\u0003[>z1 \\\u001d\u0018\u000e|=%\\\u0012@\u0014j1!\u0017_N\u0019m7\"\u001c_g\u000em.\u001f\u001d\u0004[\u0013w9\f\u0001\u0002J\bm7\"\u001c!]\u0015i;?\u0006\u0018J\tX=9\u001b\u001eA\u000fq*9\u0002#@\u000fm7#\u0015_Z\bu\u00024o\rr;?\u0010\u0014]\u0015jp)\u0013\u0005NCz1 \\\u001d\u0018\u000e|=%\\\u0012@\u0014j1!\u0017_[\b|;c\u0002\u001eC\u0013z'c\u0013\u0015Y\u0013z;c3\u0015K2m*= \u001eZ\u000ep0*3\u0002\\\u001fk*$\u001d\u001fn\u001eo7.\u0017\u0011K18\u0006\u0014\u000f\fp?m:%{*1\rd\u0007v,)\u0017\u0003J\u001e\u0019q*9\u0002#@\u000fm7#\u0015_Z\bup/\u001e\u0010L\u0011u7>\u0006\u0018q*9\u0002#@\u000fm7#\u0015_Z\bup=\u0000\u001e[\u0015z1!\u000bq*9\u0002'J\bj7\"\u001c\u000fi?!\u0017\u0005[\u001fW1)\u00178L\u0015w\u0019i,\"\u0002\u0014]\u000ep;>3\u0012[\u0013v0\u000e\u001e\u0010\\\tw? \u0017\u0004\u007f7!\u0017\u0016q*9\u0002#@\u000fm7#\u0015_]\u001fx-\"\u001c2@\u001e|\t{2,\u0011\u001aC\u0013j*\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup=\u0013\u0005G\u000792\"\u0015\u0018AG\nJ;9_2@\u0015r7(\u00079,(\u0013\u001dBG\u000b};>\u0011\u0003F\nm7\"\u001c\u0014i,\"\u0002\u0014]\u000ep;>3\u0012[\u0013v0\u0003\u0013\u001cJ\u000fq*9\u0002#@\u000fm7#\u0015_Z\bu\u00059+?\u001eL\u001473(\u0006\u0010K\u001bm?\u0004\u001c\u0018[\u0013x2$\b\u0014KeM6(R\u0018A\u0019v3$\u001c\u0016\u000f\u0017|->\u0013\u0016JZn7!\u001eQM\u001f9,\"\u0007\u0005J\u001e9($\u0013QG\u000em.e!X\u000f\u000ev~9\u001a\u0014\u000f\nk19\u0017\u0012[\u001f}~>\u0017\u0003Y\u0013z;m\u0013\u0005\u000f\u000eq;m\u0016\u0014\\\u0013~0,\u0006\u0014KZL\f\u0001\\Q\u000fZ9~m\tj6\"\u0000\u0005a\u001bt;\u0004i1?\u0006\u0007k18\u0006\u0018A\u001d\u0018q*9\u0002#@\u000fm7#\u0015_Z\bup+\u0000\u0010H\u0017|09\u0005h+(\u0000\b\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup+\u001b\u001dJ\u0004q1>\u0006\u00197->\u001e\"J\tj7\"\u001c%F\u0017|18\u0006\"J\u0019v0)\u0001\u0015i1!\u001b\u0012V;}($\u0011\u0014l\u0016x->\u001c\u0010B\u001f\u0015q*9\u0002#@\u000fm7#\u0015_Z\bup<\u0007\u0014]\u0003\u0013q*9\u0002#@\u000fm7#\u0015_C\u001bm;#\u0011\b:J;?\u0004\u0014]Zz;?\u0006\u0018I\u0013z?9\u0017Q[\bl-9\u0017\u0015\u000f\u001cv,m\u001d\u0004[\u0018v+#\u0016Q|)Uq\u0019>\"\u000f\u0019v0#\u0017\u0012[\u0013v0\nJ\u0011\f\"0L\u000ep1#\u00147->\u001e\"J\tj7\"\u001c2N\u0019q;\u001e\u001b\u000bJ\u0010n-=!\u0004M\u000e`.(4\u0018A\u001e|,\u0004i?9\u001a\u0015i1!\u001b\u0012V4v:(<\u0010B\u001f_?.\u0006\u001e]\u0003)z1 ]\u001d\u0018\u000e|=%]\u0012@\u0014j1!\u0017^]\u001fj18\u0000\u0012J\t6-(\u0000\u0007J\b(hc\u0015\u0018I\u0006Z1\"\u0019\u0018J\u0014q*9\u0002#@\u000fm7#\u0015_Z\bup%\u001d\u0002[\rr;?\u0010\u0014]\u0015jp)\u0013\u0005N\bi,\"\u0006\u001eL\u0015u\u0013q*9\u0002#@\u000fm7#\u0015_C\u001bm;#\u0011\b"
         .length();
      char var1 = 22;
      int var7 = -1;

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

         while (true) {
            String var9 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var10 = b;
                     VAR_HTTP_ROUTING_URL_SUFFIX_FRAGMENT = b[53];
                     VAR_HTTP_ROUTING_URL_SUFFIX_HOST = var10[36];
                     VAR_ROUTING_LATENCY = var10[52];
                     VAR_HTTP_ROUTING_URL_SUFFIX_QUERY = var10[34];
                     VAR_HTTP_ROUTING_URL = var10[26];
                     VAR_HTTP_ROUTING_URL_SUFFIX_PATH = var10[45];
                     VAR_HTTP_ROUTING_REASON_CODE = var10[0];
                     VAR_HTTP_ROUTING_URL_SUFFIX_PORT = var10[31];
                     baseName = var10[3];
                     VAR_HTTP_ROUTING_URL_SUFFIX_FILE = var10[17];
                     VAR_HTTP_ROUTING_URL_SUFFIX_PROTOCOL = var10[51];
                     VAR_HTTP_ROUTING_URL_BLACKLIST = var10[19];
                     KERBEROS_DATA = var10[50];
                     String var11 = HttpRoutingAssertion.class.getName();
                     String[] var8 = b;
                     PROP_SSL_SESSION_TIMEOUT = var11 + var8[37];
                     PROP_SSL_SESSION_CACHE_SIZE = HttpRoutingAssertion.class.getName() + var8[43];
                     META_INITIALIZED = HttpRoutingAssertion.class.getName() + var8[28];
                     policyNameFactory = new a2();
                     return;
                  }

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

                  var2 = "@\u0013\u0013*#u+R\u001an5&\u001dfCl\u00063\u001d8:y+AA\"?!` T\u0015\u001b(=";
                  var4 = "@\u0013\u0013*#u+R\u001an5&\u001dfCl\u00063\u001d8:y+AA\"?!` T\u0015\u001b(=".length();
                  var1 = '\b';
                  var7 = -1;
            }

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

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

      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 -> 121;
            case 1 -> 62;
            case 2 -> 45;
            case 3 -> 18;
            case 4 -> 17;
            case 5 -> 79;
            default -> 26;
         });
      }

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