package com.l7tech.policy.assertion;

import com.l7tech.objectmodel.ExternalEntityHeader;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.assertion.annotation.Base64Value;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.util.Charsets;
import com.l7tech.util.HexUtils;
import org.jetbrains.annotations.NotNull;

public class HardcodedResponseAssertion extends RoutingAssertion implements UsesVariables, RoutingAssertionDoesNotRoute {
   public static final String DEFAULT_STATUS;
   private String responseStatus;
   private boolean earlyResponse;
   private String responseContentType;
   private String base64ResponseBody;
   static final long serialVersionUID = 477321346947005291L;
   private static final String[] b;

   public HardcodedResponseAssertion() {
      String[] var1 = b;
      this.responseStatus = var1[14];
      this.responseContentType = var1[25];
      this.base64ResponseBody = "";
   }

   public String getResponseStatus() {
      return this.responseStatus;
   }

   public void setResponseStatus(@NotNull String var1) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(0);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.responseStatus = var1;
   }

   public void setResponseStatus(int var1) {
      this.responseStatus = String.valueOf(var1);
   }

   public boolean isEarlyResponse() {
      return this.earlyResponse;
   }

   public void setEarlyResponse(boolean var1) {
      this.earlyResponse = var1;
   }

   public String getResponseContentType() {
      return this.responseContentType;
   }

   public void setResponseContentType(String var1) {
      this.responseContentType = var1;
   }

   public String responseBodyString() {
      return new String(HexUtils.decodeBase64(this.base64ResponseBody, true), Charsets.UTF8);
   }

   public void responseBodyString(String var1) {
      this.setBase64ResponseBody(HexUtils.encodeBase64(HexUtils.encodeUtf8(var1), true));
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.REQUIRED,
      export = false,
      valueType = ExternalEntityHeader.ValueType.TEXT_ARRAY,
      resolver = PropertyResolver.Type.SERVER_VARIABLE
   )
   @Override
   public String[] getVariablesUsed() {
      return Syntax.getReferencedNames(this.responseBodyString(), this.responseContentType, this.responseStatus);
   }

   @Base64Value(decodeMethodName = "responseBodyString")
   public String getBase64ResponseBody() {
      return this.base64ResponseBody;
   }

   public void setBase64ResponseBody(String var1) {
      if (var1 == null) {
         var1 = "";
      }

      this.base64ResponseBody = var1;
   }

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

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

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

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

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = b;
      var1.put(var2[3], var2[20]);
      var1.put(var2[30], var2[15]);
      var1.put(var2[26], var2[0]);
      var1.put(var2[2], new String[]{var2[28]});
      var1.put(var2[5], var2[12]);
      var1.put(var2[18], var2[1]);
      var1.put(var2[7], var2[6]);
      var1.put(var2[10], var2[9]);
      var1.put(var2[19], var2[21]);
      var1.put(var2[27], var2[24]);
      var1.put(var2[17], var2[4]);
      var1.put(var2[8], var2[11]);
      return var1;
   }

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

   static {
      String[] var5 = new String[31];
      int var3 = 0;
      String var2 = "\\ \u0014HL?\u001dZ,\u0011HCg\u0007L \u0015\u0002\u000fz\fL \f\u0015Cm\u001a\u0010\u0002\u001c\u0014Si\u000eZ\u0003\u001c\tG|\u0001\u0012~O\u001f\u0011>GX&\u001f4\\ \u0014HL?\u001dZ,\u0011HCg\u0007L \u0015\u0002\u000fz\fL \f\u0015Cm\u001a\u0010\u0002\u001c\u0014Si\u000eZ\u0003\u001c\tG|\u0001\u0012~O\u001f\u0011>GX&\u001f\u000eO.\u0015\u0002T|\fy \u0015\u0003Ez\u001a\tL'\u0016\u0015TF\bR*7\\ \u0014IL?\u001dZ,\u0011IPg\u0005V,\u0000IW{\u0019\u0011\u0007\u0018\u0015Dk\u0006[*\u001d5E{\u0019P!\n\u0002a{\u001aZ=\r\u000eOf$^?\t\u000eNo\u0015O \u0015\u000eCq([9\u0010\u0004EK\u0005^<\n\tAe\f\u001ck*\u0014\u0017Li\u001dZo+\u0002Sx\u0006Q<\u001cGpz\u0006O*\u000b\u0013Im\u001a\u0014O=\u0016\u0017Ez\u001dV*\n&C|\u0000P!7\u0006Mm\u000eY*\u0018\u0013Uz\fl*\r)Ae\f1\\ \u0014IL?\u001dZ,\u0011ICg\u0007L \u0015\u0002\u000ex\bQ*\u0015\u0014\u000e@\bM+\u001a\bDm\rm*\n\u0017Of\u001aZ\u000b\u0010\u0006Lg\u000e\u0019O=\u0016\u0017Ez\u001dV*\n\"Da\u001dP=:\u000bA{\u001aQ.\u0014\u0002\u000b\u0017)\u000b\bMK\u0005^<\nN\u0004^:\r\b>~=\u001e\u0012Mm\u0007Ko\u001f\bR()q \r)Ud\u0005\u001f?\u0018\u0015Ae\fK*\u000bG\u0007-\u001a\u0018o\u0016\u0001\u0000-\u001a\u0011j\nGM}\u001aKo\u0017\bT(\u000bZo\u0017\u0012Ld\u0003\r\u007fI#m*\r\u0012RfI^o\r\u0002Mx\u0005^;\u001cGRm\u001aO \u0017\u0014E(\u0004Z<\n\u0006GmG\u000eM*\n\u0017Of\u001aZ\u001c\r\u0006T}\u001a\u0017H<\t3Yx\fr.\t\u0017If\u000e|#\u0018\u0014Sf\bR*\u000eO \u0015\u000eCq'P+\u001c.Cg\u0007\u0018O \u0015\u000eCq?^#\u0010\u0003A|\u0006M\f\u0015\u0006S{\u0007^\"\u001c%m*\r\u0012RfIk*\u0014\u0017Li\u001dZo+\u0002Sx\u0006Q<\u001cGTgIm*\b\u0012E{\u001dP=?\\ \u0014IL?\u001dZ,\u0011IPg\u0005V,\u0000IVi\u0005V+\u0018\u0013OzGw.\u000b\u0003Cg\rZ++\u0002Sx\u0006Q<\u001c&S{\fM;\u0010\bN^\bS&\u001d\u0006Tg\u001b\u0003\r\u007fI\u0011L*\r5E{\u0019P!\n\u0002s|\bK:\n\u0011w.\u000b\u0003Cg\rZ++\u0002Sx\u0006Q<\u001c\u0017K*\u0001\u0013\u000fp\u0004StY\u0004Hi\u001bL*\rZu\\/\u0012w\u000fO.\u0015\u0002T|\fq \u001d\u0002ik\u0006Q\u000fH<\t\"X|\fM!\u0018\u000bni\u0004Z\u0007M \f\u0013If\u000e";
      int var4 = "\\ \u0014HL?\u001dZ,\u0011HCg\u0007L \u0015\u0002\u000fz\fL \f\u0015Cm\u001a\u0010\u0002\u001c\u0014Si\u000eZ\u0003\u001c\tG|\u0001\u0012~O\u001f\u0011>GX&\u001f4\\ \u0014HL?\u001dZ,\u0011HCg\u0007L \u0015\u0002\u000fz\fL \f\u0015Cm\u001a\u0010\u0002\u001c\u0014Si\u000eZ\u0003\u001c\tG|\u0001\u0012~O\u001f\u0011>GX&\u001f\u000eO.\u0015\u0002T|\fy \u0015\u0003Ez\u001a\tL'\u0016\u0015TF\bR*7\\ \u0014IL?\u001dZ,\u0011IPg\u0005V,\u0000IW{\u0019\u0011\u0007\u0018\u0015Dk\u0006[*\u001d5E{\u0019P!\n\u0002a{\u001aZ=\r\u000eOf$^?\t\u000eNo\u0015O \u0015\u000eCq([9\u0010\u0004EK\u0005^<\n\tAe\f\u001ck*\u0014\u0017Li\u001dZo+\u0002Sx\u0006Q<\u001cGpz\u0006O*\u000b\u0013Im\u001a\u0014O=\u0016\u0017Ez\u001dV*\n&C|\u0000P!7\u0006Mm\u000eY*\u0018\u0013Uz\fl*\r)Ae\f1\\ \u0014IL?\u001dZ,\u0011ICg\u0007L \u0015\u0002\u000ex\bQ*\u0015\u0014\u000e@\bM+\u001a\bDm\rm*\n\u0017Of\u001aZ\u000b\u0010\u0006Lg\u000e\u0019O=\u0016\u0017Ez\u001dV*\n\"Da\u001dP=:\u000bA{\u001aQ.\u0014\u0002\u000b\u0017)\u000b\bMK\u0005^<\nN\u0004^:\r\b>~=\u001e\u0012Mm\u0007Ko\u001f\bR()q \r)Ud\u0005\u001f?\u0018\u0015Ae\fK*\u000bG\u0007-\u001a\u0018o\u0016\u0001\u0000-\u001a\u0011j\nGM}\u001aKo\u0017\bT(\u000bZo\u0017\u0012Ld\u0003\r\u007fI#m*\r\u0012RfI^o\r\u0002Mx\u0005^;\u001cGRm\u001aO \u0017\u0014E(\u0004Z<\n\u0006GmG\u000eM*\n\u0017Of\u001aZ\u001c\r\u0006T}\u001a\u0017H<\t3Yx\fr.\t\u0017If\u000e|#\u0018\u0014Sf\bR*\u000eO \u0015\u000eCq'P+\u001c.Cg\u0007\u0018O \u0015\u000eCq?^#\u0010\u0003A|\u0006M\f\u0015\u0006S{\u0007^\"\u001c%m*\r\u0012RfIk*\u0014\u0017Li\u001dZo+\u0002Sx\u0006Q<\u001cGTgIm*\b\u0012E{\u001dP=?\\ \u0014IL?\u001dZ,\u0011IPg\u0005V,\u0000IVi\u0005V+\u0018\u0013OzGw.\u000b\u0003Cg\rZ++\u0002Sx\u0006Q<\u001c&S{\fM;\u0010\bN^\bS&\u001d\u0006Tg\u001b\u0003\r\u007fI\u0011L*\r5E{\u0019P!\n\u0002s|\bK:\n\u0011w.\u000b\u0003Cg\rZ++\u0002Sx\u0006Q<\u001c\u0017K*\u0001\u0013\u000fp\u0004StY\u0004Hi\u001bL*\rZu\\/\u0012w\u000fO.\u0015\u0002T|\fq \u001d\u0002ik\u0006Q\u000fH<\t\"X|\fM!\u0018\u000bni\u0004Z\u0007M \f\u0013If\u000e"
         .length();
      char var1 = '4';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 88;
         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;
                     DEFAULT_STATUS = b[22];
                     return;
                  }

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

                  var2 = "$Xl04Ge\"Ti0(\u001f}.Tx09\u0003b\"Euv7\u001e>\u000fVs{;\u001fu\"SSz+\u0000~)Dd^+\u0003t5Chp6\u000b#Rr|*\u0019a3^nq";
                  var4 = "$Xl04Ge\"Ti0(\u001f}.Tx09\u0003b\"Euv7\u001e>\u000fVs{;\u001fu\"SSz+\u0000~)Dd^+\u0003t5Chp6\u000b#Rr|*\u0019a3^nq".length();
                  var1 = '6';
                  var7 = -1;
            }

            var10000 = 32;
            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] ^ 49);
      }

      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 -> 103;
            case 1 -> 23;
            case 2 -> 33;
            case 3 -> 63;
            case 4 -> 120;
            case 5 -> 80;
            default -> 49;
         });
      }

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