package com.l7tech.policy.assertion.composite;

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.Assertion;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.SetsVariables;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;
import java.util.List;
import java.util.logging.Logger;

public class ForEachLoopAssertion extends CompositeAssertion implements UsesVariables, SetsVariables {
   protected static final Logger logger;
   public static final String BREAK;
   private String loopVariableName;
   private String variablePrefix;
   private int iterationLimit;
   private static final String META_INITIALIZED;
   static final AssertionNodeNameFactory policyNameFactory;
   static final long serialVersionUID = 4180954718619583162L;
   private static final String[] c;

   public ForEachLoopAssertion() {
   }

   public ForEachLoopAssertion(List<? extends Assertion> var1) {
      super(var1);
   }

   public ForEachLoopAssertion(String var1, String var2, List<? extends Assertion> var3) {
      super(var3);
      this.setLoopVariableName(var1);
      this.setVariablePrefix(var2);
   }

   public String getLoopVariableName() {
      return this.loopVariableName;
   }

   public void setLoopVariableName(String var1) {
      this.loopVariableName = var1;
   }

   public String getVariablePrefix() {
      return this.variablePrefix;
   }

   public void setVariablePrefix(String var1) {
      this.variablePrefix = var1;
   }

   public int getIterationLimit() {
      return this.iterationLimit;
   }

   public void setIterationLimit(int var1) {
      this.iterationLimit = var1;
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.REQUIRED,
      export = false,
      valueType = ExternalEntityHeader.ValueType.TEXT_ARRAY,
      resolver = PropertyResolver.Type.SERVER_VARIABLE
   )
   @Override
   public String[] getVariablesUsed() {
      return this.loopVariableName == null ? new String[0] : new String[]{this.loopVariableName};
   }

   @Override
   public VariableMetadata[] getVariablesSet() {
      VariableMetadata[] var10000;
      if (this.variablePrefix == null) {
         var10000 = new VariableMetadata[0];
      } else {
         var10000 = new VariableMetadata[3];
         String[] var1 = c;
         var10000[0] = new VariableMetadata(this.variablePrefix + var1[10], false, false, null, true, DataType.UNKNOWN);
         var10000[1] = new VariableMetadata(this.variablePrefix + var1[29], false, false, null, true, DataType.INTEGER);
         var10000[2] = new VariableMetadata(this.variablePrefix + var1[16], false, false, null, true, DataType.BOOLEAN);
      }

      return var10000;
   }

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

      String[] var2 = c;
      var1.put(var2[31], var2[4]);
      var1.put(var2[17], var2[23]);
      var1.put(var2[9], var2[21]);
      var1.put(var2[7], var2[18]);
      var1.put(var2[5], var2[8]);
      var1.put(var2[28], var2[19]);
      var1.put(var2[25], new String[]{var2[22]});
      var1.put(var2[11], var2[0]);
      var1.put(var2[26], var2[30]);
      var1.put(var2[20], var2[13]);
      var1.put(var2[24], var2[2]);
      var1.put(var2[27], policyNameFactory);
      var1.put(var2[14], var2[3]);
      var1.put(var2[6], var2[15]);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   static {
      String[] var5 = new String[32];
      int var3 = 0;
      String var2 = "rv\t7\u001e\u001dwtz\f7\u0011Embv\b}]Xfbv\u0011j\u0011Op>\u007f\u000bt\u0016Oq?~\r~\u0014?t\u0001l\u0013Nbex-v\u001b^jpu\rb\u0017N+rv\t7\u001e\u001dwtz\f7\u0011Embv\b}]Xfbv\u0011j\u0011Op>\u007f\u000bt\u0016Oq^i\u0001v\\Mjw>rv\t6\u001e\u001dwtz\f6\u0011Embv\b}\\Zb\u007f|\bk\\llc\\\u0005{\u001afl~i%k\u0001Oqep\u000bv\"Xla|\u0016l\u001bOpUp\u0005t\u001dM\u001cCl\n83Yptk\u0010q\u001dDp1\u007f\u000bjRobrqDQ\u0006On\u0013av\bq\u0011SM~}\u0001[\u001eKpbw\u0005u\u0017\u000ew|\u0005l\u0007XfB|\u0010V\u0013Gf\u0018av\bq\u0011SUpu\r|\u0013^lcZ\by\u0001Ympt\u00018rv\t6\u001e\u001dwtz\f6\u0011Embv\b}\\Zb\u007f|\bk\\llc\\\u0005{\u001afl~i%k\u0001Oqep\u000bv\"Eoxz\u001dV\u001dNf\u000bu|\u0017{\u0000Csep\u000bv\b?z\u0011j\u0000Ome\u000fax\b}\u0006^f_v\u0000};Il\u007f\u0006?{\u0016}\u0013A'rv\t7\u001e\u001dwtz\f7\u0011Embv\b}]Xfbv\u0011j\u0011Op>\u007f\u000bt\u0016Oq?~\r~\u0019ak\u000bh\u0017Xwx|\u0017]\u0016Cw~k't\u0013Yp\u007fx\t}\u000b9\u007f\u0016w\u001fiopj\u00171\u000e?|\u001c{\u0017Ogt}\bq\u001fCw\b}v\n\u007f<KntCrv\t6\u001e\u001dwtz\f6\u0002Eoxz\u001d6\u0013Yptk\u0010q\u001dD-rv\th\u001dYje|J^\u001dXFpz\fT\u001dEsPj\u0017}\u0000^j~w2y\u001eCgpm\u000bjErv\t6\u001e\u001dwtz\f6\u0002Eoxz\u001d6\u0013Yptk\u0010q\u001dD-rv\th\u001dYje|J^\u001dXFpz\fT\u001dEsPj\u0017}\u0000^j~w0a\u0002ONpi\u0014q\u001cM\u000fax\b}\u0006^f_v\u0000};Il\u007fÆP9\u0007w\u001fZlbp\u0010}RKpb|\u0016l\u001bEm1m\fy\u0006\nqdw\u00178\u0013Fo1z\fq\u001eN#pj\u0017}\u0000^j~w\u00178\u0013Mbxw\u0017lRObrqDn\u0013Fvt9\u0013q\u0006Bj\u007f9\u00058\u001f_oep\u0012y\u001e_fu9\u0007w\u001c^fimDn\u0013Xjp{\b}\\\nWy|Dt\u001dEs1z\u0005vRHf1m\u0001j\u001fCmpm\u0001|RObcu\u001d8\u0010S#b|\u0010l\u001bDd1m\fq\u0001\nupk\ry\u0010Ff+9Bt\u0006\u0011sc|\u0002q\n\fde\"Jz\u0000Obz9Y8\u0006Xvt7\u000bav\bq\u0011SO~~\r{4Cl\n83Yptk\u0010q\u001dDp1\u007f\u000bjRobrqDQ\u0006On1V\u00028?_oep\u0012y\u001e_fu92y\u0000Cbsu\u0001\u0012av\bq\u0011SM~}\u0001Q\u0011Em^i\u0001v\u000eax\b}\u0006^fWv\b|\u0017Xp\u0015av\bq\u0011SBuo\r{\u0017iopj\u0017v\u0013Gf\u0015av\bq\u0011SM~}\u0001V\u0013GfWx\u0007l\u001dXz\u0017fj\u0014L\u000bZf\\x\u0014h\u001bDdRu\u0005k\u0001Db||\u000b?p\u0010}\u0000Kwxv\nk";
      int var4 = "rv\t7\u001e\u001dwtz\f7\u0011Embv\b}]Xfbv\u0011j\u0011Op>\u007f\u000bt\u0016Oq?~\r~\u0014?t\u0001l\u0013Nbex-v\u001b^jpu\rb\u0017N+rv\t7\u001e\u001dwtz\f7\u0011Embv\b}]Xfbv\u0011j\u0011Op>\u007f\u000bt\u0016Oq^i\u0001v\\Mjw>rv\t6\u001e\u001dwtz\f6\u0011Embv\b}\\Zb\u007f|\bk\\llc\\\u0005{\u001afl~i%k\u0001Oqep\u000bv\"Xla|\u0016l\u001bOpUp\u0005t\u001dM\u001cCl\n83Yptk\u0010q\u001dDp1\u007f\u000bjRobrqDQ\u0006On\u0013av\bq\u0011SM~}\u0001[\u001eKpbw\u0005u\u0017\u000ew|\u0005l\u0007XfB|\u0010V\u0013Gf\u0018av\bq\u0011SUpu\r|\u0013^lcZ\by\u0001Ympt\u00018rv\t6\u001e\u001dwtz\f6\u0011Embv\b}\\Zb\u007f|\bk\\llc\\\u0005{\u001afl~i%k\u0001Oqep\u000bv\"Eoxz\u001dV\u001dNf\u000bu|\u0017{\u0000Csep\u000bv\b?z\u0011j\u0000Ome\u000fax\b}\u0006^f_v\u0000};Il\u007f\u0006?{\u0016}\u0013A'rv\t7\u001e\u001dwtz\f7\u0011Embv\b}]Xfbv\u0011j\u0011Op>\u007f\u000bt\u0016Oq?~\r~\u0019ak\u000bh\u0017Xwx|\u0017]\u0016Cw~k't\u0013Yp\u007fx\t}\u000b9\u007f\u0016w\u001fiopj\u00171\u000e?|\u001c{\u0017Ogt}\bq\u001fCw\b}v\n\u007f<KntCrv\t6\u001e\u001dwtz\f6\u0002Eoxz\u001d6\u0013Yptk\u0010q\u001dD-rv\th\u001dYje|J^\u001dXFpz\fT\u001dEsPj\u0017}\u0000^j~w2y\u001eCgpm\u000bjErv\t6\u001e\u001dwtz\f6\u0002Eoxz\u001d6\u0013Yptk\u0010q\u001dD-rv\th\u001dYje|J^\u001dXFpz\fT\u001dEsPj\u0017}\u0000^j~w0a\u0002ONpi\u0014q\u001cM\u000fax\b}\u0006^f_v\u0000};Il\u007fÆP9\u0007w\u001fZlbp\u0010}RKpb|\u0016l\u001bEm1m\fy\u0006\nqdw\u00178\u0013Fo1z\fq\u001eN#pj\u0017}\u0000^j~w\u00178\u0013Mbxw\u0017lRObrqDn\u0013Fvt9\u0013q\u0006Bj\u007f9\u00058\u001f_oep\u0012y\u001e_fu9\u0007w\u001c^fimDn\u0013Xjp{\b}\\\nWy|Dt\u001dEs1z\u0005vRHf1m\u0001j\u001fCmpm\u0001|RObcu\u001d8\u0010S#b|\u0010l\u001bDd1m\fq\u0001\nupk\ry\u0010Ff+9Bt\u0006\u0011sc|\u0002q\n\fde\"Jz\u0000Obz9Y8\u0006Xvt7\u000bav\bq\u0011SO~~\r{4Cl\n83Yptk\u0010q\u001dDp1\u007f\u000bjRobrqDQ\u0006On1V\u00028?_oep\u0012y\u001e_fu92y\u0000Cbsu\u0001\u0012av\bq\u0011SM~}\u0001Q\u0011Em^i\u0001v\u000eax\b}\u0006^fWv\b|\u0017Xp\u0015av\bq\u0011SBuo\r{\u0017iopj\u0017v\u0013Gf\u0015av\bq\u0011SM~}\u0001V\u0013GfWx\u0007l\u001dXz\u0017fj\u0014L\u000bZf\\x\u0014h\u001bDdRu\u0005k\u0001Db||\u000b?p\u0010}\u0000Kwxv\nk"
         .length();
      char var1 = '\'';
      int var7 = -1;

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

         while (true) {
            String var8 = c(var10000, c(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     BREAK = c[12];
                     logger = Logger.getLogger(ForEachLoopAssertion.class.getName());
                     META_INITIALIZED = ForEachLoopAssertion.class.getName() + c[1];
                     policyNameFactory = new a();
                     return;
                  }

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

                  var2 = ".2N)\t</U4X:<\"\"";
                  var4 = ".2N)\t</U4X:<\"\"".length();
                  var1 = 4;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String c(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 -> 125;
            case 1 -> 117;
            case 2 -> 8;
            case 3 -> 116;
            case 4 -> 30;
            case 5 -> 70;
            default -> 111;
         });
      }

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