/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.policy.assertion.credential.LoginCredentials
 *  com.l7tech.policy.assertion.xmlsec.RequireSaml
 *  com.l7tech.policy.assertion.xmlsec.RequireWssSaml
 *  com.l7tech.security.saml.SamlConstants
 *  com.l7tech.security.token.SecurityTokenType
 *  com.l7tech.security.token.SignedElement
 *  com.l7tech.security.token.SigningSecurityToken
 *  com.l7tech.security.token.X509SecurityToken
 *  com.l7tech.security.token.X509SigningSecurityToken
 *  com.l7tech.security.xml.processor.ProcessorResult
 *  com.l7tech.security.xml.processor.WssTimestamp
 *  com.l7tech.util.ArrayUtils
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.InvalidDocumentFormatException
 *  com.l7tech.util.Option
 *  com.l7tech.util.Pair
 *  com.l7tech.util.TextUtils
 *  com.l7tech.xml.saml.SamlAssertion
 *  com.l7tech.xml.soap.SoapUtil
 *  org.apache.xmlbeans.XmlObject
 *  x0Assertion.oasisNamesTcSAML1.AssertionType
 *  x0Assertion.oasisNamesTcSAML1.AttributeStatementType
 *  x0Assertion.oasisNamesTcSAML1.AudienceRestrictionConditionType
 *  x0Assertion.oasisNamesTcSAML1.AuthenticationStatementType
 *  x0Assertion.oasisNamesTcSAML1.AuthorizationDecisionStatementType
 *  x0Assertion.oasisNamesTcSAML1.ConditionsType
 *  x0Assertion.oasisNamesTcSAML1.NameIdentifierType
 *  x0Assertion.oasisNamesTcSAML1.StatementAbstractType
 *  x0Assertion.oasisNamesTcSAML1.SubjectConfirmationType
 *  x0Assertion.oasisNamesTcSAML1.SubjectStatementAbstractType
 *  x0Assertion.oasisNamesTcSAML1.SubjectType
 *  x0Assertion.oasisNamesTcSAML2.AssertionType
 *  x0Assertion.oasisNamesTcSAML2.AttributeStatementType
 *  x0Assertion.oasisNamesTcSAML2.AuthnStatementType
 *  x0Assertion.oasisNamesTcSAML2.AuthzDecisionStatementType
 *  x0Assertion.oasisNamesTcSAML2.ConditionsType
 *  x0Assertion.oasisNamesTcSAML2.SubjectType
 */
package com.l7tech.server.policy.assertion.xmlsec;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.policy.assertion.xmlsec.RequireSaml;
import com.l7tech.policy.assertion.xmlsec.RequireWssSaml;
import com.l7tech.security.saml.SamlConstants;
import com.l7tech.security.token.SecurityTokenType;
import com.l7tech.security.token.SignedElement;
import com.l7tech.security.token.SigningSecurityToken;
import com.l7tech.security.token.X509SecurityToken;
import com.l7tech.security.token.X509SigningSecurityToken;
import com.l7tech.security.xml.processor.ProcessorResult;
import com.l7tech.security.xml.processor.WssTimestamp;
import com.l7tech.server.policy.assertion.xmlsec.SamlStatementValidate;
import com.l7tech.server.policy.assertion.xmlsec.e;
import com.l7tech.server.policy.assertion.xmlsec.g;
import com.l7tech.server.policy.assertion.xmlsec.h;
import com.l7tech.server.policy.assertion.xmlsec.i;
import com.l7tech.server.policy.assertion.xmlsec.j;
import com.l7tech.server.policy.assertion.xmlsec.k;
import com.l7tech.server.policy.assertion.xmlsec.l;
import com.l7tech.server.policy.assertion.xmlsec.m;
import com.l7tech.server.policy.variable.ExpandVariables;
import com.l7tech.server.util.ContextVariableUtils;
import com.l7tech.server.util.WSSecurityProcessorUtils;
import com.l7tech.util.ArrayUtils;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.InvalidDocumentFormatException;
import com.l7tech.util.Option;
import com.l7tech.util.Pair;
import com.l7tech.util.TextUtils;
import com.l7tech.xml.saml.SamlAssertion;
import com.l7tech.xml.soap.SoapUtil;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.security.cert.X509Certificate;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.xmlbeans.XmlObject;
import org.w3c.dom.Element;
import x0Assertion.oasisNamesTcSAML1.AssertionType;
import x0Assertion.oasisNamesTcSAML1.AudienceRestrictionConditionType;
import x0Assertion.oasisNamesTcSAML1.AuthenticationStatementType;
import x0Assertion.oasisNamesTcSAML1.AuthorizationDecisionStatementType;
import x0Assertion.oasisNamesTcSAML1.NameIdentifierType;
import x0Assertion.oasisNamesTcSAML1.StatementAbstractType;
import x0Assertion.oasisNamesTcSAML1.SubjectConfirmationType;
import x0Assertion.oasisNamesTcSAML1.SubjectStatementAbstractType;
import x0Assertion.oasisNamesTcSAML2.AttributeStatementType;
import x0Assertion.oasisNamesTcSAML2.AuthnStatementType;
import x0Assertion.oasisNamesTcSAML2.AuthzDecisionStatementType;
import x0Assertion.oasisNamesTcSAML2.ConditionsType;
import x0Assertion.oasisNamesTcSAML2.SubjectType;

public class SamlAssertionValidate {
    protected static final TimeZone UTC_TIME_ZONE;
    protected final Logger logger = Logger.getLogger(this.getClass().getName());
    protected Collection errorCollector = new ArrayList();
    protected final RequireSaml requestSaml;
    private Map<Class, SamlStatementValidate> a = new HashMap<Class, SamlStatementValidate>();
    private final boolean b;
    private static final String[] c;

    public SamlAssertionValidate(RequireSaml requireSaml) {
        this.requestSaml = requireSaml;
        if (requireSaml.getAuthenticationStatement() != null) {
            this.a.put(AuthenticationStatementType.class, new l(requireSaml));
            this.a.put(AuthnStatementType.class, new i(requireSaml));
        }
        if (requireSaml.getAuthorizationStatement() != null) {
            this.a.put(AuthorizationDecisionStatementType.class, new m(requireSaml));
            this.a.put(AuthzDecisionStatementType.class, new j(requireSaml));
        }
        if (requireSaml.getAttributeStatement() != null) {
            this.a.put(x0Assertion.oasisNamesTcSAML1.AttributeStatementType.class, new k(requireSaml));
            this.a.put(AttributeStatementType.class, new h(requireSaml));
        }
        this.b = requireSaml instanceof RequireWssSaml;
    }

    public void validate(LoginCredentials loginCredentials, ProcessorResult processorResult, Collection<Error> collection, Collection<Pair<String, String[]>> collection2, Collection<String> collection3, Map<String, Object> map, Audit audit) {
        this.validate(loginCredentials, processorResult, collection, collection2, collection3, map, audit, true);
    }

    /*
     * Could not resolve type clashes
     * Unable to fully structure code
     */
    public void validate(LoginCredentials var1_1, ProcessorResult var2_2, Collection<Error> var3_3, Collection<Pair<String, String[]>> var4_4, Collection<String> var5_5, Map<String, Object> var6_6, Audit var7_7, boolean var8_8) {
        block91: {
            block78: {
                block77: {
                    block76: {
                        block75: {
                            var9_9 = var2_2.getSecurityNS();
                            if (null == var9_9) {
                                var33_10 = SamlAssertionValidate.c;
                                var10_24 = new Error(var33_10[22], null, new Object[0]);
                                var3_3.add(var10_24);
                                this.logger.finer(var10_24.toString());
                                return;
                            }
                            if (this.requestSaml.getVersion() == null) ** GOTO lbl16
                            try {
                                block94: {
                                    if (this.requestSaml.getVersion() == 2) break block75;
                                    break block94;
                                    catch (InvalidDocumentFormatException v0) {
                                        throw SamlAssertionValidate.a((Exception)v0);
                                    }
                                }
                                v1 = true;
                                break block76;
                            }
                            catch (InvalidDocumentFormatException v2) {
                                throw SamlAssertionValidate.a((Exception)v2);
                            }
                        }
                        v1 = false;
                    }
                    var10_25 = v1;
                    if (this.requestSaml.getVersion() == null) break block77;
                    try {
                        block95: {
                            if (this.requestSaml.getVersion() == 1) break block77;
                            break block95;
                            catch (InvalidDocumentFormatException v3) {
                                throw SamlAssertionValidate.a((Exception)v3);
                            }
                        }
                        v4 = true;
                        break block78;
                    }
                    catch (InvalidDocumentFormatException v5) {
                        throw SamlAssertionValidate.a((Exception)v5);
                    }
                }
                v4 = false;
            }
            var11_26 = v4;
            var12_27 = Calendar.getInstance(SamlAssertionValidate.UTC_TIME_ZONE);
            try {
                block93: {
                    block92: {
                        block90: {
                            block88: {
                                block106: {
                                    block89: {
                                        block104: {
                                            block84: {
                                                block85: {
                                                    block87: {
                                                        block86: {
                                                            block102: {
                                                                block101: {
                                                                    block100: {
                                                                        block99: {
                                                                            block81: {
                                                                                block83: {
                                                                                    block82: {
                                                                                        var13_28 = null;
                                                                                        var14_31 = var2_2.getXmlSecurityTokens();
                                                                                        for (SigningSecurityToken[] var18_37 : var14_31) {
                                                                                            block80: {
                                                                                                block79: {
                                                                                                    block96: {
                                                                                                        if (var18_37.getType() != SecurityTokenType.SAML_ASSERTION) ** GOTO lbl53
                                                                                                        if (var10_25) break block79;
                                                                                                        break block96;
                                                                                                        catch (InvalidDocumentFormatException v6) {
                                                                                                            throw SamlAssertionValidate.a((Exception)v6);
                                                                                                        }
                                                                                                    }
                                                                                                    try {
                                                                                                        block97: {
                                                                                                            if (var18_37.getType() != SecurityTokenType.SAML2_ASSERTION) continue;
                                                                                                            break block97;
                                                                                                            catch (InvalidDocumentFormatException v7) {
                                                                                                                throw SamlAssertionValidate.a((Exception)v7);
                                                                                                            }
                                                                                                        }
                                                                                                        if (!var11_26) continue;
                                                                                                    }
                                                                                                    catch (InvalidDocumentFormatException v8) {
                                                                                                        throw SamlAssertionValidate.a((Exception)v8);
                                                                                                    }
                                                                                                }
                                                                                                var13_28 = (SamlAssertion)var18_37;
                                                                                                var19_38 = var13_28.getXmlBeansAssertionType();
                                                                                                var20_39 = false;
                                                                                                if (var19_38 instanceof AssertionType) {
                                                                                                    var21_45 = (AssertionType)var19_38;
                                                                                                    var22_46 = new ArrayList<Object>();
                                                                                                    var22_46.addAll(Arrays.asList(var21_45.getAuthenticationStatementArray()));
                                                                                                    var22_46.addAll(Arrays.asList(var21_45.getAuthorizationDecisionStatementArray()));
                                                                                                    var22_46.addAll(Arrays.asList(var21_45.getAttributeStatementArray()));
                                                                                                    for (StatementAbstractType var27_51 : var23_47 = var22_46.toArray(new StatementAbstractType[var22_46.size()])) {
                                                                                                        var28_52 = this.a.keySet();
                                                                                                        for (Class var30_54 : var28_52) {
                                                                                                            var31_55 = var30_54;
                                                                                                            if (!var31_55.isAssignableFrom(var27_51.getClass())) continue;
                                                                                                            var20_39 = true;
                                                                                                            var32_56 = this.a.get(var31_55);
                                                                                                            this.a((SubjectStatementAbstractType)var27_51, var3_3, var6_6, var7_7);
                                                                                                            this.a((AssertionType)var21_45, var3_3, var6_6, var7_7);
                                                                                                            var32_56.validate((XmlObject)var27_51, var3_3, var4_4, var6_6, var7_7);
                                                                                                        }
                                                                                                    }
                                                                                                } else if (var19_38 instanceof x0Assertion.oasisNamesTcSAML2.AssertionType) {
                                                                                                    var21_45 = (x0Assertion.oasisNamesTcSAML2.AssertionType)var19_38;
                                                                                                    this.a(var21_45.getConditions(), var12_27, var3_3, var6_6, var7_7);
                                                                                                    this.a(var21_45.getSubject(), var12_27, var5_5, var3_3, var6_6, var7_7);
                                                                                                    var22_46 = new ArrayList<E>();
                                                                                                    var22_46.addAll(Arrays.asList(var21_45.getAuthnStatementArray()));
                                                                                                    var22_46.addAll(Arrays.asList(var21_45.getAuthzDecisionStatementArray()));
                                                                                                    var22_46.addAll(Arrays.asList(var21_45.getAttributeStatementArray()));
                                                                                                    for (StatementAbstractType var27_51 : var23_47 = var22_46.toArray(new XmlObject[var22_46.size()])) {
                                                                                                        var28_52 = this.a.keySet();
                                                                                                        for (Class var30_54 : var28_52) {
                                                                                                            var31_55 = var30_54;
                                                                                                            if (!var31_55.isAssignableFrom(var27_51.getClass())) continue;
                                                                                                            var20_39 = true;
                                                                                                            var32_56 = this.a.get(var31_55);
                                                                                                            var32_56.validate((XmlObject)var27_51, var3_3, var4_4, var6_6, var7_7);
                                                                                                        }
                                                                                                    }
                                                                                                    try {
                                                                                                        if (var20_39 || !this.a.isEmpty()) break block80;
                                                                                                    }
                                                                                                    catch (InvalidDocumentFormatException v9) {
                                                                                                        throw SamlAssertionValidate.a((Exception)v9);
                                                                                                    }
                                                                                                    var20_39 = true;
                                                                                                }
                                                                                            }
                                                                                            if (var20_39) continue;
                                                                                            var33_11 = SamlAssertionValidate.c;
                                                                                            var21_45 = new Error(var33_11[21], null, new Object[0]);
                                                                                            var3_3.add((Error)var21_45);
                                                                                            this.logger.finer(var21_45.toString());
                                                                                            return;
                                                                                        }
                                                                                        if (var13_28 != null) break block81;
                                                                                        try {
                                                                                            block98: {
                                                                                                v10 = v11;
                                                                                                v12 = v11;
                                                                                                if (!this.b) break block82;
                                                                                                break block98;
                                                                                                catch (InvalidDocumentFormatException v13) {
                                                                                                    throw SamlAssertionValidate.a((Exception)v13);
                                                                                                }
                                                                                            }
                                                                                            v14 = SamlAssertionValidate.c[31];
                                                                                            break block83;
                                                                                        }
                                                                                        catch (InvalidDocumentFormatException v15) {
                                                                                            throw SamlAssertionValidate.a((Exception)v15);
                                                                                        }
                                                                                    }
                                                                                    v14 = "";
                                                                                }
                                                                                var33_12 = SamlAssertionValidate.c;
                                                                                v10(var33_12[24] + v14, null, new Object[0]);
                                                                                var15_32 = v12;
                                                                                var3_3.add((Error)var15_32);
                                                                                this.logger.finer(var15_32.toString());
                                                                                return;
                                                                            }
                                                                            var15_32 = var13_28.asElement();
                                                                            var16_34 = this.a(var2_2.getSigningTokens((Element)var15_32), (Element)var15_32);
                                                                            var17_36 = (SigningSecurityToken)var16_34.left;
                                                                            var18_37 = (SigningSecurityToken[])var16_34.right;
                                                                            if (this.b) ** GOTO lbl167
                                                                            if (this.b) break block84;
                                                                            break block99;
                                                                            catch (InvalidDocumentFormatException v16) {
                                                                                throw SamlAssertionValidate.a((Exception)v16);
                                                                            }
                                                                        }
                                                                        if (!var8_8) break block84;
                                                                        break block100;
                                                                        catch (InvalidDocumentFormatException v17) {
                                                                            throw SamlAssertionValidate.a((Exception)v17);
                                                                        }
                                                                    }
                                                                    if (var17_36 != null) break block85;
                                                                    break block101;
                                                                    catch (InvalidDocumentFormatException v18) {
                                                                        throw SamlAssertionValidate.a((Exception)v18);
                                                                    }
                                                                }
                                                                if (var18_37.length != 0) break block85;
                                                                break block102;
                                                                catch (InvalidDocumentFormatException v19) {
                                                                    throw SamlAssertionValidate.a((Exception)v19);
                                                                }
                                                            }
                                                            try {
                                                                block103: {
                                                                    v20 = v21;
                                                                    v22 = v21;
                                                                    if (!this.b) break block86;
                                                                    break block103;
                                                                    catch (InvalidDocumentFormatException v23) {
                                                                        throw SamlAssertionValidate.a((Exception)v23);
                                                                    }
                                                                }
                                                                v24 = SamlAssertionValidate.c[33];
                                                                break block87;
                                                            }
                                                            catch (InvalidDocumentFormatException v25) {
                                                                throw SamlAssertionValidate.a((Exception)v25);
                                                            }
                                                        }
                                                        v24 = "";
                                                    }
                                                    var33_13 = SamlAssertionValidate.c;
                                                    v20(var33_13[28] + v24, null, new Object[0]);
                                                    var19_38 = v22;
                                                    var3_3.add((Error)var19_38);
                                                    this.logger.finer(var19_38.toString());
                                                    return;
                                                }
                                                if (var18_37.length > 1) {
                                                    var33_14 = SamlAssertionValidate.c;
                                                    var19_38 = new Error(var33_14[11], null, new Object[0]);
                                                    var3_3.add((Error)var19_38);
                                                    this.logger.finer(var19_38.toString());
                                                    return;
                                                }
                                            }
                                            if (!var13_28.isSenderVouches()) break block88;
                                            if (var13_28.getIssuerCertificate() != null) break block88;
                                            break block104;
                                            catch (InvalidDocumentFormatException v26) {
                                                throw SamlAssertionValidate.a((Exception)v26);
                                            }
                                        }
                                        try {
                                            block105: {
                                                if (var18_37.length <= 0) break block89;
                                                break block105;
                                                catch (InvalidDocumentFormatException v27) {
                                                    throw SamlAssertionValidate.a((Exception)v27);
                                                }
                                            }
                                            if (!(var18_37[0] instanceof X509SigningSecurityToken)) break block89;
                                        }
                                        catch (InvalidDocumentFormatException v28) {
                                            throw SamlAssertionValidate.a((Exception)v28);
                                        }
                                        var19_38 = (X509SigningSecurityToken)var18_37[0];
                                        var13_28.setIssuerCertificate(var19_38.getMessageSigningCertificate());
                                        break block88;
                                    }
                                    if (var18_37.length > 0) {
                                        var33_15 = SamlAssertionValidate.c;
                                        var19_38 = new Error(var33_15[13] + String.valueOf(var18_37[0].getClass()), null, new Object[0]);
                                        var3_3.add((Error)var19_38);
                                        this.logger.finer(var19_38.toString());
                                        return;
                                    }
                                    if (this.b) break block106;
                                    try {
                                        block107: {
                                            if (this.b) break block88;
                                            break block107;
                                            catch (InvalidDocumentFormatException v29) {
                                                throw SamlAssertionValidate.a((Exception)v29);
                                            }
                                        }
                                        if (!var8_8) break block88;
                                    }
                                    catch (InvalidDocumentFormatException v30) {
                                        throw SamlAssertionValidate.a((Exception)v30);
                                    }
                                }
                                var33_16 = SamlAssertionValidate.c;
                                var19_38 = new Error(var33_16[46], null, new Object[0]);
                                var3_3.add((Error)var19_38);
                                this.logger.finer(var19_38.toString());
                                return;
                            }
                            if (!var13_28.isHolderOfKey()) break block90;
                            try {
                                block108: {
                                    if (!this.b) break block90;
                                    break block108;
                                    catch (InvalidDocumentFormatException v31) {
                                        throw SamlAssertionValidate.a((Exception)v31);
                                    }
                                }
                                if (!((RequireWssSaml)this.requestSaml).isRequireHolderOfKeyWithMessageSignature()) break block90;
                            }
                            catch (InvalidDocumentFormatException v32) {
                                throw SamlAssertionValidate.a((Exception)v32);
                            }
                            var19_38 = var13_28.getSubjectCertificate();
                            if (var19_38 == null) {
                                var33_17 = SamlAssertionValidate.c;
                                var20_40 = new Error(var33_17[9], null, new Object[0]);
                                var3_3.add(var20_40);
                                this.logger.finer(var20_40.toString());
                                return;
                            }
                            if (!this.a(var13_28.getSignedElements(), var2_2)) {
                                var33_18 = SamlAssertionValidate.c;
                                var20_41 = new Error(var33_18[38], null, new Object[0]);
                                var3_3.add(var20_41);
                                this.logger.finer(var20_41.toString());
                            }
                            break block91;
                        }
                        if (!var13_28.isSenderVouches()) break block92;
                        try {
                            block109: {
                                if (!this.b) break block92;
                                break block109;
                                catch (InvalidDocumentFormatException v33) {
                                    throw SamlAssertionValidate.a((Exception)v33);
                                }
                            }
                            if (!((RequireWssSaml)this.requestSaml).isRequireSenderVouchesWithMessageSignature()) break block92;
                        }
                        catch (InvalidDocumentFormatException v34) {
                            throw SamlAssertionValidate.a((Exception)v34);
                        }
                        var19_38 = this.a(var2_2);
                        if (var19_38 == null) {
                            var33_19 = SamlAssertionValidate.c;
                            var20_42 = new Error(var33_19[26], null, new Object[0]);
                            var3_3.add(var20_42);
                            this.logger.finer(var20_42.toString());
                        } else {
                            var13_28.setAttestingEntity((X509Certificate)var19_38);
                        }
                        break block91;
                    }
                    try {
                        v35 = var19_38 = var1_1 == null ? null : var1_1.getClientCert();
                    }
                    catch (InvalidDocumentFormatException v36) {
                        throw SamlAssertionValidate.a((Exception)v36);
                    }
                    if (var13_28.isHolderOfKey()) {
                        var20_43 = var13_28.getSubjectCertificate();
                        if (var20_43 == null) {
                            var33_20 = SamlAssertionValidate.c;
                            var21_45 = new Error(var33_20[4], null, new Object[0]);
                            var3_3.add((Error)var21_45);
                            this.logger.finer(var21_45.toString());
                            return;
                        }
                        if (!var20_43.equals(var19_38)) {
                            var33_21 = SamlAssertionValidate.c;
                            var21_45 = new Error(var33_21[17], null, new Object[0]);
                            var3_3.add((Error)var21_45);
                            this.logger.finer(var21_45.toString());
                            return;
                        }
                        var13_28.setAttestingEntity(var20_43);
                        break block91;
                    }
                    try {
                        if (!var13_28.isSenderVouches()) break block91;
                        if (var19_38 != null) break block93;
                    }
                    catch (InvalidDocumentFormatException v37) {
                        throw SamlAssertionValidate.a((Exception)v37);
                    }
                    var33_22 = SamlAssertionValidate.c;
                    var20_44 = new Error(var33_22[39], null, new Object[0]);
                    var3_3.add(var20_44);
                    this.logger.finer(var20_44.toString());
                    return;
                }
                var13_28.setAttestingEntity((X509Certificate)var19_38);
            }
            catch (InvalidDocumentFormatException var13_29) {
                var33_23 = SamlAssertionValidate.c;
                var3_3.add(new Error(var33_23[25], (Exception)var13_29, new Object[0]));
            }
            catch (IOException var13_30) {
                var3_3.add(new Error(SamlAssertionValidate.c[6], var13_30, new Object[0]));
            }
        }
    }

    private Pair<SigningSecurityToken, SigningSecurityToken[]> a(SigningSecurityToken[] signingSecurityTokenArray, Element element) {
        SigningSecurityToken signingSecurityToken = null;
        ArrayList<SigningSecurityToken> arrayList = new ArrayList<SigningSecurityToken>();
        for (SigningSecurityToken signingSecurityToken2 : signingSecurityTokenArray) {
            SignedElement[] signedElementArray = signingSecurityToken2.getSignedElements();
            if (signingSecurityToken == null && signingSecurityToken2.asElement() == element && signedElementArray.length == 1 && signedElementArray[0].asElement() == element) {
                signingSecurityToken = signingSecurityToken2;
                continue;
            }
            arrayList.add(signingSecurityToken2);
        }
        return new Pair(signingSecurityToken, (Object)arrayList.toArray(new SigningSecurityToken[arrayList.size()]));
    }

    private boolean a(SignedElement[] signedElementArray, ProcessorResult processorResult) throws InvalidDocumentFormatException {
        boolean bl2;
        block17: {
            block16: {
                Element element;
                boolean bl3 = false;
                boolean bl4 = false;
                boolean bl5 = false;
                WssTimestamp wssTimestamp = processorResult.getTimestamp();
                try {
                    element = wssTimestamp != null ? wssTimestamp.asElement() : null;
                }
                catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                    throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                }
                Element element2 = element;
                for (SignedElement signedElement : signedElementArray) {
                    Element element3;
                    block14: {
                        element3 = signedElement.asElement();
                        if (SoapUtil.isBody((Element)element3)) {
                            bl3 = true;
                            break;
                        }
                        try {
                            if (element2 == null || element2 != element3) break block14;
                        }
                        catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                            throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                        }
                        bl4 = true;
                        continue;
                    }
                    try {
                        if (!SoapUtil.BODY_EL_NAME.equals(element3.getLocalName()) || !SoapUtil.ENVELOPE_URIS.contains(element3.getNamespaceURI())) continue;
                    }
                    catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                        throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                    }
                    bl5 = true;
                }
                try {
                    block15: {
                        try {
                            try {
                                if (bl3) break block15;
                                if (!bl4) break block16;
                            }
                            catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                                throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                            }
                            if (bl5) break block16;
                        }
                        catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                            throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                        }
                    }
                    bl2 = true;
                    break block17;
                }
                catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                    throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    private X509Certificate a(ProcessorResult processorResult) throws InvalidDocumentFormatException {
        X509SecurityToken x509SecurityToken;
        WssTimestamp wssTimestamp = processorResult.getTimestamp();
        for (SignedElement signedElement : x509SecurityToken = WSSecurityProcessorUtils.filterSignedElementsByIdentity(null, processorResult, null, false, null, null, null)) {
            if (!SoapUtil.isBody((Element)signedElement.asElement())) continue;
            SigningSecurityToken signingSecurityToken = signedElement.getSigningSecurityToken();
            try {
                if (!(signingSecurityToken instanceof X509SigningSecurityToken)) {
                    throw new InvalidDocumentFormatException(c[16]);
                }
            }
            catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
            }
            return ((X509SecurityToken)signingSecurityToken).getCertificate();
        }
        if (wssTimestamp != null) {
            X509SecurityToken x509SecurityToken2 = null;
            Element element = wssTimestamp.asElement();
            for (SignedElement signedElement : x509SecurityToken) {
                Element element2 = signedElement.asElement();
                if (element == element2) {
                    SigningSecurityToken signingSecurityToken = signedElement.getSigningSecurityToken();
                    try {
                        if (!(signingSecurityToken instanceof X509SigningSecurityToken)) {
                            throw new InvalidDocumentFormatException(c[42]);
                        }
                    }
                    catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                        throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                    }
                    x509SecurityToken2 = (X509SecurityToken)signingSecurityToken;
                    continue;
                }
                try {
                    if (!SoapUtil.BODY_EL_NAME.equals(element2.getLocalName()) || !SoapUtil.ENVELOPE_URIS.contains(element2.getNamespaceURI())) continue;
                }
                catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                    throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
                }
                x509SecurityToken2 = null;
                break;
            }
            try {
                if (x509SecurityToken2 != null) {
                    return x509SecurityToken2.getCertificate();
                }
            }
            catch (InvalidDocumentFormatException invalidDocumentFormatException) {
                throw SamlAssertionValidate.a((Exception)((Object)invalidDocumentFormatException));
            }
        }
        return null;
    }

    private void a(AssertionType assertionType, Collection<Error> collection, Map<String, Object> map, Audit audit) throws IOException {
        List<Object> list;
        Object object;
        Object object2;
        Calendar calendar;
        x0Assertion.oasisNamesTcSAML1.ConditionsType conditionsType;
        block27: {
            block28: {
                block26: {
                    conditionsType = assertionType.getConditions();
                    try {
                        if (this.requestSaml.isCheckAssertionValidity()) break block26;
                        this.logger.finer(c[40]);
                        break block27;
                    }
                    catch (IOException iOException) {
                        throw SamlAssertionValidate.a(iOException);
                    }
                }
                if (conditionsType == null) {
                    String[] stringArray = c;
                    this.logger.finer(stringArray[47]);
                    StringWriter stringWriter = new StringWriter();
                    assertionType.save((Writer)stringWriter);
                    collection.add(new Error(stringArray[20], null, new Object[0]));
                    return;
                }
                calendar = conditionsType.getNotBefore();
                object2 = conditionsType.getNotOnOrAfter();
                try {
                    if (calendar != null && object2 != null) break block28;
                }
                catch (IOException iOException) {
                    throw SamlAssertionValidate.a(iOException);
                }
                String[] stringArray = c;
                this.logger.finer(stringArray[3]);
                StringWriter stringWriter = new StringWriter();
                assertionType.save((Writer)stringWriter);
                collection.add(new Error(stringArray[12], null, new Object[0]));
                return;
            }
            calendar = SamlAssertionValidate.b(calendar);
            object2 = SamlAssertionValidate.a((Calendar)object2);
            object = Calendar.getInstance(UTC_TIME_ZONE);
            try {
                if (((Calendar)object).before(calendar)) {
                    this.logger.finer(c[14] + ((Calendar)object).getTime().toString() + c[8] + calendar.getTime().toString());
                    collection.add(new Error(c[48], null, calendar.getTime().toString()));
                }
            }
            catch (IOException iOException) {
                throw SamlAssertionValidate.a(iOException);
            }
            try {
                try {
                    if (((Calendar)object).equals(object2) || ((Calendar)object).after(object2)) {
                    }
                    break block27;
                }
                catch (IOException iOException) {
                    throw SamlAssertionValidate.a(iOException);
                }
                this.logger.finer(c[0] + ((Calendar)object).getTime().toString() + c[49] + ((Calendar)object2).getTime().toString());
                collection.add(new Error(c[23], null, ((Calendar)object2).getTime().toString()));
            }
            catch (IOException iOException) {
                throw SamlAssertionValidate.a(iOException);
            }
        }
        calendar = Option.optional((Object)this.requestSaml.getAudienceRestriction());
        try {
            list = !calendar.isSome() ? Collections.emptyList() : ContextVariableUtils.getAllResolvedStrings((String)calendar.some(), map, audit, TextUtils.URI_STRING_SPLIT_PATTERN, new g(this));
        }
        catch (IOException iOException) {
            throw SamlAssertionValidate.a(iOException);
        }
        object2 = list;
        try {
            if (object2.isEmpty()) {
                this.logger.finer(c[5]);
                return;
            }
        }
        catch (IOException iOException) {
            throw SamlAssertionValidate.a(iOException);
        }
        if (conditionsType == null) {
            object = new StringWriter();
            assertionType.save((Writer)object);
            String[] stringArray = c;
            Error error = new Error(stringArray[19], null, new Object[0]);
            collection.add(error);
            this.logger.finer(error.toString());
            return;
        }
        object = conditionsType.getAudienceRestrictionConditionArray();
        if (((AudienceRestrictionConditionType[])object).length <= 0) {
            String[] stringArray = c;
            Error error = new Error(stringArray[36], null, object2);
            this.logger.finer(error.toString());
            collection.add(error);
            return;
        }
        boolean bl2 = false;
        StringBuilder stringBuilder = new StringBuilder();
        for (Object object3 : object) {
            try {
                if (this.logger.isLoggable(Level.FINE)) {
                    this.logger.fine(c[37] + String.valueOf(object2));
                }
            }
            catch (IOException iOException) {
                throw SamlAssertionValidate.a(iOException);
            }
            Object[] objectArray = object3.getAudienceArray();
            if (ArrayUtils.containsAny((Object[])objectArray, (Object[])object2.toArray(new String[object2.size()]))) {
                bl2 = true;
                break;
            }
            stringBuilder.append(Arrays.asList(objectArray));
        }
        if (!bl2) {
            Error error = new Error(c[35], null, stringBuilder, object2);
            this.logger.finer(error.toString());
            collection.add(error);
        }
    }

    static Calendar a(Calendar calendar) {
        String[] stringArray = c;
        long l2 = ConfigFactory.getTimeUnitProperty((String)stringArray[2], (long)0L);
        if (l2 != 0L) {
            calendar = (Calendar)calendar.clone();
            calendar.setTimeInMillis(calendar.getTimeInMillis() + l2);
        } else {
            int n2 = ConfigFactory.getIntProperty((String)c[10], (int)0);
            if (n2 != 0) {
                calendar = (Calendar)calendar.clone();
                calendar.add(12, n2);
            }
        }
        return calendar;
    }

    static Calendar b(Calendar calendar) {
        String[] stringArray = c;
        long l2 = ConfigFactory.getTimeUnitProperty((String)stringArray[32], (long)0L);
        if (l2 != 0L) {
            calendar = (Calendar)calendar.clone();
            calendar.setTimeInMillis(calendar.getTimeInMillis() - l2);
        } else {
            int n2 = ConfigFactory.getIntProperty((String)c[43], (int)0);
            if (n2 != 0) {
                calendar = (Calendar)calendar.clone();
                calendar.add(12, -n2);
            }
        }
        return calendar;
    }

    private void a(SubjectStatementAbstractType subjectStatementAbstractType, Collection<Error> collection, Map<String, Object> map, Audit audit) {
        boolean bl2;
        String[] bl3;
        Object object;
        String string;
        String[] stringArray2;
        Object object2;
        x0Assertion.oasisNamesTcSAML1.SubjectType subjectType = subjectStatementAbstractType.getSubject();
        if (subjectType == null) {
            String[] stringArray3 = c;
            collection.add(new Error(stringArray3[27], null, new Object[0]));
            return;
        }
        String string2 = this.requestSaml.getNameQualifier();
        String string3 = string2 == null ? string2 : ExpandVariables.process(string2, map, audit);
        NameIdentifierType nameIdentifierType = subjectType.getNameIdentifier();
        if (string3 != null && !"".equals(string3) && nameIdentifierType != null) {
            object2 = nameIdentifierType.getNameQualifier();
            if (!string3.equals(object2)) {
                String[] stringArray4 = c;
                Error error = new Error(stringArray4[1], null, object2, string3);
                collection.add(error);
                this.logger.finer(error.toString());
                return;
            }
            stringArray2 = c;
            this.logger.fine(stringArray2[7] + string3);
        }
        object2 = this.a(this.requestSaml.getNameFormats());
        boolean bl22 = false;
        String string4 = string = nameIdentifierType != null && nameIdentifierType.getFormat() != null ? nameIdentifierType.getFormat() : SamlConstants.NAMEIDENTIFIER_UNSPECIFIED;
        if (nameIdentifierType != null) {
            for (String stringArray5 : object2) {
                if (stringArray5.equals(string)) {
                    bl22 = true;
                    stringArray2 = c;
                    this.logger.fine(stringArray2[18] + stringArray5);
                    break;
                }
                if (!stringArray5.equals(SamlConstants.NAMEIDENTIFIER_UNSPECIFIED)) continue;
                bl22 = true;
                stringArray2 = c;
                this.logger.fine(stringArray2[41] + stringArray5);
                break;
            }
        }
        if (!bl22) {
            stringArray2 = c;
            object = new Error(stringArray2[45], null, string, Arrays.asList(object2));
            collection.add((Error)object);
            this.logger.finer(((Error)object).toString());
            return;
        }
        object = this.requestSaml.getSubjectConfirmations();
        SubjectConfirmationType subjectConfirmationType = subjectType.getSubjectConfirmation();
        List<String> list = null;
        if (subjectConfirmationType != null && (bl3 = subjectConfirmationType.getConfirmationMethodArray()) != null) {
            list = Arrays.asList(bl3);
        }
        if (list == null) {
            list = Collections.EMPTY_LIST;
        }
        if (list.isEmpty() && this.requestSaml.isNoSubjectConfirmation()) {
            stringArray2 = c;
            this.logger.fine(stringArray2[44]);
            return;
        }
        boolean bl4 = false;
        for (String string5 : object) {
            if (!list.contains(string5)) continue;
            bl2 = true;
            stringArray2 = c;
            this.logger.fine(stringArray2[29] + string5);
            break;
        }
        if (!bl2) {
            ArrayList arrayList = new ArrayList(Arrays.asList(object));
            if (this.requestSaml.isNoSubjectConfirmation()) {
                stringArray2 = c;
                arrayList.add(stringArray2[15]);
            }
            Error error = new Error(c[30], null, list, arrayList);
            collection.add(error);
            this.logger.finer(error.toString());
        }
    }

    private void a(ConditionsType conditionsType, Calendar calendar, Collection<Error> collection, Map<String, Object> map, Audit audit) {
        e.a(this.requestSaml, conditionsType, calendar, collection, map, audit);
    }

    private void a(SubjectType subjectType, Calendar calendar, Collection<String> collection, Collection<Error> collection2, Map<String, Object> map, Audit audit) {
        e.a(this.requestSaml, subjectType, calendar, collection, collection2, map, audit);
    }

    private String[] a(String[] stringArray) {
        return SamlAssertionValidate.a(stringArray, SamlConstants.ALL_NAMEIDENTIFIERS);
    }

    static String[] a(String[] stringArray, String[] stringArray2) {
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>(Arrays.asList(stringArray));
        linkedHashSet.retainAll(Arrays.asList(stringArray2));
        return linkedHashSet.toArray(new String[linkedHashSet.size()]);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[50];
                var3_1 = 0;
                var2_2 = "`*\u001f\u001ahq\u000fL+QYOj\u0012\u0003\n\u001f^NwFb#\u0005\u001bs\"F@-\u0014\u001dj%\u0000B,\u001d\u001be)FM*\u0006^;9m$\u001c\u001b!T\u0013B)\u0018\u0018h`\u0014Pe\u0015\u0011dvFM*\u0005^ld\u0012@-Q\u000es`\u0015F+\u0005\u001be*\u0014F4\u0004\u0017s`\u0002\u0003>A\u0003.~W^\u001fP$\u001c\u0012Wd\nJ!\u0010\ndD\u0000W \u00031gc\u0015F15\u000bsd\u0012J*\u001fMm*Q(`i\u000fG,\u0005\u0007!U\u0003Q,\u001e\u001a!f\tM!\u0018\nhj\bPe\u0019\u001fw`FA \u0014\u0010!u\u0014F6\u0014\u0010u`\u0002\u000fe\u0012\u001fok\tWe\u0007\u001fml\u0002B1\u0014^Bj\bG,\u0005\u0017nk\u0015;p0\u0013\u0014df\u0012\u0003\u0006\u0014\ful\u0000J&\u0010\nd%\u000fPe\u0003\u001bpp\u000fQ \u0015^gj\u0014\u0003\r\u001e\u0012e`\u0014\u000e\n\u0017SJ`\u001f\u0003\u0004\u0002\rdw\u0012J*\u001f!m*Q\u001fta\u000fF+\u0012\u001b!w\u0003P1\u0003\u0017bq\u000fL+Q\fdt\u0013F6\u0005\u001be\u001f`$\u001fYu%\u0016Q*\u0012\u001brvFM*\u001f^RJ'se\u001c\u001brv\u0007D \u0002\u0017n$\u0005\u001di`\u0002\u0003\u000b\u0010\u0013d%7V$\u001d\u0017gl\u0003Qe\f\u0003\u000b\u001e\n!G\u0003E*\u0003\u001b;;p0\u0013\u0014df\u0012\u0003\u0006\u0014\ful\u0000J&\u0010\nd%\u000fPe\u0003\u001bpp\u000fQ \u0015^gj\u0014\u0003\r\u001e\u0012e`\u0014\u000e\n\u0017SJ`\u001f\u0003\u0004\u0002\rdw\u0012J*\u001f\u001eP$\u001c\u0012Wd\nJ!\u0010\ndD\u0000W \u00031gc\u0015F1<\u0017op\u0012F69p\u0004<2!d\u0015P \u0003\nhj\b\u00032\u0010\r!v\u000fD+\u0014\u001a!g\u001f\u0003(\u001e\fd%\u0012K$\u001f^nk\u0003\u00036\u0014\u001dtw\u000fW<Q\nnn\u0003MMm*Q(`i\u000fG,\u0005\u0007!U\u0003Q,\u001e\u001a!f\tM!\u0018\nhj\bPe\u0019\u001fw`FA \u0014\u0010!u\u0014F6\u0014\u0010u`\u0002\u000fe\u0012\u001fok\tWe\u0007\u001fml\u0002B1\u0014^Bj\bG,\u0005\u0017nk\u0015/b6\u0002\u001bsq\u000fL+Q\t`vFP,\u0016\u0010daFA<Q\u0010nkK{pAG!V\u0003@0\u0003\u0017u|2L.\u0014\u0010!*`*\u001f\u001ahq\u000fL+QYOj\u0012\u0003\u0007\u0014\u0018nw\u0003\u0004e\u0012\u0016df\r\u0003#\u0010\u0017m`\u0002\u000fe\u001f\u0011v%\\\u0004m*\u001f\u001b=n \u0002\r`b\u0003\u0003'\u001e\u001ax%\u0011B6Q\rhb\bF!]^cp\u0012\u0003+\u001e\n!r\u000fW-Q\u001fo%>\rpAG!V\u0003@0\u0003\u0017u|Fw*\u001a\u001bo>p\u0016=^B`\u0014W,\u0017\u0017bd\u0012Fe\u0010\u0010e%.L)\u0015\u001bs()Eh:\u001bx%5V'\u001b\u001bbqF` \u0003\nhc\u000f@$\u0005\u001b!h\u000fP(\u0010\nbm\u0014n$\u0005\u001di`\u0002\u0003\u000b\u0010\u0013d% L7\u001c\u001fu%8`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u0003&\u001e\u0010el\u0012J*\u001f\r-%\bLe2\u0011oa\u000fW,\u001e\u0010r%\u000eB3\u0014^c`\u0003Me\u0017\u0011tk\u0002<`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u0003&\u001e\u0010el\u0012J*\u001f\r-%\bLe2\u0011oa\u000fW,\u001e\u0010r%\u000eB3\u0014^c`\u0003Me\u0001\fdv\u0003M1\u0014\u001aGm*Q-@H*\u0003$\u0002\rdw\u0012J*\u001f^id\u0015\u0003'\u0014\u001bo%\u0016Q \u0002\u001boq\u0003Ge\u0005\u0016`qFN$\u0005\u001di`\u0015\u00036\u0001\u001bbl\u0000J \u0015^bj\bP1\u0003\u001fhk\u0012P\u0018m*Q-df\u0013Q,\u0005\u0007!M\u0003B!\u0014\f!c\tV+\u0015\"p\u0004<2!q\u000f@.\u0014\n!m\u0007Pe\u0014\u0006ql\u0014F!Q\u001fr%\tE\u007fQ\u00051x\u0017m*Q-@H*\u0003$\u0002\rdw\u0012J*\u001f^gj\u0013M!\u001f`$\u001fYu%\u0016Q*\u0012\u001brvFM*\u001f^RJ'se\u001c\u001brv\u0007D \u0002N`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u00035\u0003\u0011ncFL#Q\u000env\u0015F6\u0002\u0017nk]\u00031\u0019\u001b!V)b\u0015Q<na\u001f\u0003$\u001f\u001a!Q\u000fN \u0002\n`h\u0016\u0003$\u0003\u001b!k\tWe\u0002\u0017fk\u0003G\u001ap0\u0013\u0014df\u0012\u0003\u0016\u0005\u001fu`\u000bF+\u0005^S`\u0017V,\u0003\u001be\u001dv+\u0002\u0017fk\u0003Ge\"?LIFB6\u0002\u001bsq\u000fL+Q\u0018np\bG\u001dn$\u0005\u001di`\u0002\u0003\u0016\u0004\u001ck`\u0005We2\u0011oc\u000fQ(\u0010\nhj\b\u00039p0\u0013\u0014df\u0012\u0003\u0006\u001e\u0010gl\u0014N$\u0005\u0017nk\u0015\u0003(\u0018\rld\u0012@-Q\u000es`\u0015F+\u0005\u001be*\u0007@&\u0014\u000eu`\u0002\u0003>A\u0003.~W^\u0013\u0003,\u001f^r`\u0005V7\u0018\nx%.F$\u0015\u001bs P$\u001c\u0012Wd\nJ!\u0010\ndG\u0003E*\u0003\u001bNc\u0000P \u0005:tw\u0007W,\u001e\u0010\u0013\u0003,\u001f^r`\u0005V7\u0018\nx%.F$\u0015\u001bs\u0003v\u00112Bb0\u0015\u0017dk\u0005Fe#\u001brq\u0014J&\u0005\u0017nkF`-\u0014\u001dj% B,\u001d\u001be%\u0014F&\u0014\u0017w`\u0002\u0003>A\u0003!`\u001eS \u0012\ndaFL+\u0014^ncFXt\f]b0\u0015\u0017dk\u0005Fe#\u001brq\u0014J&\u0005\u0017nkF`-\u0014\u001dj% B,\u001d\u001be%NB6\u0002\u001bsq\u000fL+Q\u001an`\u0015\u0003+\u001e\n!v\u0016F&\u0018\u0018x%\u0007V!\u0018\u001bof\u0003\u00037\u0014\ruw\u000f@1\u0018\u0011o%\u0005L+\u0015\u0017ul\tMl8u$\u001d\u0017ed\u0012J+\u0016^`p\u0002J \u001f\u001dd%\u0014F6\u0005\fhf\u0012J*\u001f\r!d\u0001B,\u001f\ru%\u0014F6\u001e\u0012w`\u0002\u0003)\u0018\ru?Fx`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u00035\u0003\u0011ncFL#Q\u000env\u0015F6\u0002\u0017nk]\u00031\u0019\u001b!V)b\u0015Q<na\u001f\u0003$\u001f\u001a!Q\u000fN \u0002\n`h\u0016\u0003$\u0003\u001b!k\tWe\u0002\u0017fk\u0003Ge\u0006\u0017umFW-\u0014^Rp\u0004I \u0012\n!F\tM#\u0018\fld\u0012J*\u001f^B`\u0014W,\u0017\u0017bd\u0012FTp\u0016=^Bi\u000fF+\u0005^B`\u0014W,\u0017\u0017bd\u0012Fe\u0018\r!w\u0003R0\u0018\fdaFE*\u0003^R`\bG \u0003SWj\u0013@-\u0014\r!D\u0015P \u0003\nhj\b\u0003$\u001f\u001a!p\bP,\u0016\u0010daFN \u0002\r`b\u0003\u001fm*Q?rv\u0003Q1\u0018\u0011o%0B)\u0018\u001ahq\u001f\u00037\u0014\u000ft`\u0015W \u0015\u0014n$\u0005\u001di`\u0002\u0003\u000b\u0010\u0013d% L7\u001c\u001fu%Bn \u0002\r`b\u0003\u00031\u0018\u0013dv\u0012B(\u0001^vd\u0015\u00036\u0018\u0019o`\u0002\u000fe\u0013\u000bu%\bL1Q\thq\u000e\u0003$\u001f^Y+S\u0013|Q-df\u0013Q,\u0005\u0007!Q\tH \u001f\u001fP$\u001c\u0012Wd\nJ!\u0010\ndG\u0003E*\u0003\u001bNc\u0000P \u00053hk\u0013W \u0002#n$\u0005\u001di`\u0002\u0003\u0016\u0004\u001ck`\u0005We2\u0011oc\u000fQ(\u0010\nhj\b\u0003b?\u0011o`A5m$\u001c\u001b!C\tQ(\u0010\n!a\tF6Q\u0010nqFN$\u0005\u001di%\u0016Q \u0002\u001boq\u0003Gj\u0003\u001bpp\u000fQ \u0015^z5\u001b\f>@\u00032b6\u0002\u001bsq\u000fL+Q\t`vFM*\u0005^rl\u0001M \u0015^c|FB+Q&/0V\u001ae\"\u001bbp\u0014J1\b*nn\u0003M<`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u0003&\u001e\u0010el\u0012J*\u001f\r-%\bLe2\u0011oa\u000fW,\u001e\u0010r%\u000eB3\u0014^c`\u0003Me\u0001\fdv\u0003M1\u0014\u001a";
                var4_3 = "`*\u001f\u001ahq\u000fL+QYOj\u0012\u0003\n\u001f^NwFb#\u0005\u001bs\"F@-\u0014\u001dj%\u0000B,\u001d\u001be)FM*\u0006^;9m$\u001c\u001b!T\u0013B)\u0018\u0018h`\u0014Pe\u0015\u0011dvFM*\u0005^ld\u0012@-Q\u000es`\u0015F+\u0005\u001be*\u0014F4\u0004\u0017s`\u0002\u0003>A\u0003.~W^\u001fP$\u001c\u0012Wd\nJ!\u0010\ndD\u0000W \u00031gc\u0015F15\u000bsd\u0012J*\u001fMm*Q(`i\u000fG,\u0005\u0007!U\u0003Q,\u001e\u001a!f\tM!\u0018\nhj\bPe\u0019\u001fw`FA \u0014\u0010!u\u0014F6\u0014\u0010u`\u0002\u000fe\u0012\u001fok\tWe\u0007\u001fml\u0002B1\u0014^Bj\bG,\u0005\u0017nk\u0015;p0\u0013\u0014df\u0012\u0003\u0006\u0014\ful\u0000J&\u0010\nd%\u000fPe\u0003\u001bpp\u000fQ \u0015^gj\u0014\u0003\r\u001e\u0012e`\u0014\u000e\n\u0017SJ`\u001f\u0003\u0004\u0002\rdw\u0012J*\u001f!m*Q\u001fta\u000fF+\u0012\u001b!w\u0003P1\u0003\u0017bq\u000fL+Q\fdt\u0013F6\u0005\u001be\u001f`$\u001fYu%\u0016Q*\u0012\u001brvFM*\u001f^RJ'se\u001c\u001brv\u0007D \u0002\u0017n$\u0005\u001di`\u0002\u0003\u000b\u0010\u0013d%7V$\u001d\u0017gl\u0003Qe\f\u0003\u000b\u001e\n!G\u0003E*\u0003\u001b;;p0\u0013\u0014df\u0012\u0003\u0006\u0014\ful\u0000J&\u0010\nd%\u000fPe\u0003\u001bpp\u000fQ \u0015^gj\u0014\u0003\r\u001e\u0012e`\u0014\u000e\n\u0017SJ`\u001f\u0003\u0004\u0002\rdw\u0012J*\u001f\u001eP$\u001c\u0012Wd\nJ!\u0010\ndD\u0000W \u00031gc\u0015F1<\u0017op\u0012F69p\u0004<2!d\u0015P \u0003\nhj\b\u00032\u0010\r!v\u000fD+\u0014\u001a!g\u001f\u0003(\u001e\fd%\u0012K$\u001f^nk\u0003\u00036\u0014\u001dtw\u000fW<Q\nnn\u0003MMm*Q(`i\u000fG,\u0005\u0007!U\u0003Q,\u001e\u001a!f\tM!\u0018\nhj\bPe\u0019\u001fw`FA \u0014\u0010!u\u0014F6\u0014\u0010u`\u0002\u000fe\u0012\u001fok\tWe\u0007\u001fml\u0002B1\u0014^Bj\bG,\u0005\u0017nk\u0015/b6\u0002\u001bsq\u000fL+Q\t`vFP,\u0016\u0010daFA<Q\u0010nkK{pAG!V\u0003@0\u0003\u0017u|2L.\u0014\u0010!*`*\u001f\u001ahq\u000fL+QYOj\u0012\u0003\u0007\u0014\u0018nw\u0003\u0004e\u0012\u0016df\r\u0003#\u0010\u0017m`\u0002\u000fe\u001f\u0011v%\\\u0004m*\u001f\u001b=n \u0002\r`b\u0003\u0003'\u001e\u001ax%\u0011B6Q\rhb\bF!]^cp\u0012\u0003+\u001e\n!r\u000fW-Q\u001fo%>\rpAG!V\u0003@0\u0003\u0017u|Fw*\u001a\u001bo>p\u0016=^B`\u0014W,\u0017\u0017bd\u0012Fe\u0010\u0010e%.L)\u0015\u001bs()Eh:\u001bx%5V'\u001b\u001bbqF` \u0003\nhc\u000f@$\u0005\u001b!h\u000fP(\u0010\nbm\u0014n$\u0005\u001di`\u0002\u0003\u000b\u0010\u0013d% L7\u001c\u001fu%8`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u0003&\u001e\u0010el\u0012J*\u001f\r-%\bLe2\u0011oa\u000fW,\u001e\u0010r%\u000eB3\u0014^c`\u0003Me\u0017\u0011tk\u0002<`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u0003&\u001e\u0010el\u0012J*\u001f\r-%\bLe2\u0011oa\u000fW,\u001e\u0010r%\u000eB3\u0014^c`\u0003Me\u0001\fdv\u0003M1\u0014\u001aGm*Q-@H*\u0003$\u0002\rdw\u0012J*\u001f^id\u0015\u0003'\u0014\u001bo%\u0016Q \u0002\u001boq\u0003Ge\u0005\u0016`qFN$\u0005\u001di`\u0015\u00036\u0001\u001bbl\u0000J \u0015^bj\bP1\u0003\u001fhk\u0012P\u0018m*Q-df\u0013Q,\u0005\u0007!M\u0003B!\u0014\f!c\tV+\u0015\"p\u0004<2!q\u000f@.\u0014\n!m\u0007Pe\u0014\u0006ql\u0014F!Q\u001fr%\tE\u007fQ\u00051x\u0017m*Q-@H*\u0003$\u0002\rdw\u0012J*\u001f^gj\u0013M!\u001f`$\u001fYu%\u0016Q*\u0012\u001brvFM*\u001f^RJ'se\u001c\u001brv\u0007D \u0002N`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u00035\u0003\u0011ncFL#Q\u000env\u0015F6\u0002\u0017nk]\u00031\u0019\u001b!V)b\u0015Q<na\u001f\u0003$\u001f\u001a!Q\u000fN \u0002\n`h\u0016\u0003$\u0003\u001b!k\tWe\u0002\u0017fk\u0003G\u001ap0\u0013\u0014df\u0012\u0003\u0016\u0005\u001fu`\u000bF+\u0005^S`\u0017V,\u0003\u001be\u001dv+\u0002\u0017fk\u0003Ge\"?LIFB6\u0002\u001bsq\u000fL+Q\u0018np\bG\u001dn$\u0005\u001di`\u0002\u0003\u0016\u0004\u001ck`\u0005We2\u0011oc\u000fQ(\u0010\nhj\b\u00039p0\u0013\u0014df\u0012\u0003\u0006\u001e\u0010gl\u0014N$\u0005\u0017nk\u0015\u0003(\u0018\rld\u0012@-Q\u000es`\u0015F+\u0005\u001be*\u0007@&\u0014\u000eu`\u0002\u0003>A\u0003.~W^\u0013\u0003,\u001f^r`\u0005V7\u0018\nx%.F$\u0015\u001bs P$\u001c\u0012Wd\nJ!\u0010\ndG\u0003E*\u0003\u001bNc\u0000P \u0005:tw\u0007W,\u001e\u0010\u0013\u0003,\u001f^r`\u0005V7\u0018\nx%.F$\u0015\u001bs\u0003v\u00112Bb0\u0015\u0017dk\u0005Fe#\u001brq\u0014J&\u0005\u0017nkF`-\u0014\u001dj% B,\u001d\u001be%\u0014F&\u0014\u0017w`\u0002\u0003>A\u0003!`\u001eS \u0012\ndaFL+\u0014^ncFXt\f]b0\u0015\u0017dk\u0005Fe#\u001brq\u0014J&\u0005\u0017nkF`-\u0014\u001dj% B,\u001d\u001be%NB6\u0002\u001bsq\u000fL+Q\u001an`\u0015\u0003+\u001e\n!v\u0016F&\u0018\u0018x%\u0007V!\u0018\u001bof\u0003\u00037\u0014\ruw\u000f@1\u0018\u0011o%\u0005L+\u0015\u0017ul\tMl8u$\u001d\u0017ed\u0012J+\u0016^`p\u0002J \u001f\u001dd%\u0014F6\u0005\fhf\u0012J*\u001f\r!d\u0001B,\u001f\ru%\u0014F6\u001e\u0012w`\u0002\u0003)\u0018\ru?Fx`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u00035\u0003\u0011ncFL#Q\u000env\u0015F6\u0002\u0017nk]\u00031\u0019\u001b!V)b\u0015Q<na\u001f\u0003$\u001f\u001a!Q\u000fN \u0002\n`h\u0016\u0003$\u0003\u001b!k\tWe\u0002\u0017fk\u0003Ge\u0006\u0017umFW-\u0014^Rp\u0004I \u0012\n!F\tM#\u0018\fld\u0012J*\u001f^B`\u0014W,\u0017\u0017bd\u0012FTp\u0016=^Bi\u000fF+\u0005^B`\u0014W,\u0017\u0017bd\u0012Fe\u0018\r!w\u0003R0\u0018\fdaFE*\u0003^R`\bG \u0003SWj\u0013@-\u0014\r!D\u0015P \u0003\nhj\b\u0003$\u001f\u001a!p\bP,\u0016\u0010daFN \u0002\r`b\u0003\u001fm*Q?rv\u0003Q1\u0018\u0011o%0B)\u0018\u001ahq\u001f\u00037\u0014\u000ft`\u0015W \u0015\u0014n$\u0005\u001di`\u0002\u0003\u000b\u0010\u0013d% L7\u001c\u001fu%Bn \u0002\r`b\u0003\u00031\u0018\u0013dv\u0012B(\u0001^vd\u0015\u00036\u0018\u0019o`\u0002\u000fe\u0013\u000bu%\bL1Q\thq\u000e\u0003$\u001f^Y+S\u0013|Q-df\u0013Q,\u0005\u0007!Q\tH \u001f\u001fP$\u001c\u0012Wd\nJ!\u0010\ndG\u0003E*\u0003\u001bNc\u0000P \u00053hk\u0013W \u0002#n$\u0005\u001di`\u0002\u0003\u0016\u0004\u001ck`\u0005We2\u0011oc\u000fQ(\u0010\nhj\b\u0003b?\u0011o`A5m$\u001c\u001b!C\tQ(\u0010\n!a\tF6Q\u0010nqFN$\u0005\u001di%\u0016Q \u0002\u001boq\u0003Gj\u0003\u001bpp\u000fQ \u0015^z5\u001b\f>@\u00032b6\u0002\u001bsq\u000fL+Q\t`vFM*\u0005^rl\u0001M \u0015^c|FB+Q&/0V\u001ae\"\u001bbp\u0014J1\b*nn\u0003M<`$\u001fYu%\u0010B)\u0018\u001a`q\u0003\u0003&\u001e\u0010el\u0012J*\u001f\r-%\bLe2\u0011oa\u000fW,\u001e\u0010r%\u000eB3\u0014^c`\u0003Me\u0001\fdv\u0003M1\u0014\u001a".length();
                var1_4 = 47;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 120;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = SamlAssertionValidate.a(v0, SamlAssertionValidate.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u0019mU[H\u0018f)G}cH\b`/_8y\u0007\u0018/(I{x\u0005\t/<Mt~\fLz$Xq{RLtzQ\fjbwcH.j,CjrR";
                    var4_3 = "\u0019mU[H\u0018f)G}cH\b`/_8y\u0007\u0018/(I{x\u0005\t/<Mt~\fLz$Xq{RLtzQ\fjbwcH.j,CjrR".length();
                    var1_4 = 44;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 17;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = SamlAssertionValidate.a(v0, SamlAssertionValidate.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        SamlAssertionValidate.c = var5;
        SamlAssertionValidate.UTC_TIME_ZONE = TimeZone.getTimeZone(SamlAssertionValidate.c[34]);
    }

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

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x1E);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 91;
                    case 1 -> 61;
                    case 2 -> 9;
                    case 3 -> 6;
                    case 4 -> 121;
                    case 5 -> 125;
                    default -> 30;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }

    public static class Error {
        private final Object[] a;
        private final Exception b;
        private final String c;
        private static final String[] d;

        protected Error(String string, Exception exception, Object ... objectArray) {
            if (string == null) {
                throw new IllegalArgumentException(d[1]);
            }
            this.a = this.a(objectArray);
            this.c = MessageFormat.format(string, this.a);
            this.b = exception;
        }

        private Object[] a(Object object) {
            try {
                if (object == null) {
                    return new Object[0];
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw Error.a(illegalArgumentException);
            }
            try {
                if (object instanceof Object[]) {
                    return (Object[])object;
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw Error.a(illegalArgumentException);
            }
            return new Object[]{object};
        }

        public String toString() {
            String string;
            Object object;
            block3: {
                block2: {
                    try {
                        if (this.b != null) break block2;
                        object = "";
                        break block3;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw Error.a(illegalArgumentException);
                    }
                }
                String[] stringArray = d;
                object = stringArray[2] + this.b.getMessage();
            }
            String string2 = string = object;
            String string3 = this.c;
            return d[0] + string3 + string2;
        }

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

        /*
         * Enabled aggressive block sorting
         */
        static {
            String[] stringArray = new String[3];
            int n2 = 0;
            String string = "h0$aSgtU\u0002\u001d_\u0012MuOQ,_\u0001Ki\u0001Q\u0012i\u0014\b^\u001cJ;R\u0002I_\u0016UnR\u0003\fI\u000b~\t\nH\u0003PrT\u001fI\u0017";
            int n3 = "h0$aSgtU\u0002\u001d_\u0012MuOQ,_\u0001Ki\u0001Q\u0012i\u0014\b^\u001cJ;R\u0002I_\u0016UnR\u0003\fI\u000b~\t\nH\u0003PrT\u001fI\u0017".length();
            int n4 = 23;
            int n5 = -1;
            while (true) {
                int n6 = ++n5;
                stringArray[n2++] = Error.a(42, Error.a(string.substring(n6, n6 + n4)));
                if ((n5 += n4) >= n3) {
                    d = stringArray;
                    return;
                }
                n4 = string.charAt(n5);
            }
        }

        private static char[] a(String string) {
            char[] cArray = string.toCharArray();
            if (cArray.length < 2) {
                cArray = cArray;
                cArray[0] = (char)(cArray[0] ^ 0x31);
            }
            return cArray;
        }

        /*
         * Handled impossible loop by duplicating code
         * Enabled aggressive block sorting
         */
        private static String a(int n2, char[] cArray) {
            char[] cArray2;
            block11: {
                int n3;
                int n4;
                int n5;
                block10: {
                    n5 = n2;
                    cArray2 = cArray;
                    n4 = cArray.length;
                    n3 = 0;
                    if (!true) break block10;
                    n4 = n4;
                    if (n4 <= n3) break block11;
                }
                do {
                    n5 = n5;
                    cArray2 = cArray2;
                    int n6 = n3;
                    cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                        case 0 -> 17;
                        case 1 -> 91;
                        case 2 -> 67;
                        case 3 -> 7;
                        case 4 -> 89;
                        case 5 -> 14;
                        default -> 49;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }
}

