Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php defined("\x5f\x4a\105\130\x45\103") or die("\122\145\x73\164\x72\x69\x63\164\14..

Decoded Output download

<?php 
 
 
defined("_JEXEC") or die("Restricted access"); 
jimport("joomla.plugin.plugin"); 
class plgSystemSamlredirect extends JPlugin 
{ 
    public function onAfterInitialise() 
    { 
        jimport("miniorangesamlplugin.utility.Utilities"); 
        if (isset($_GET["morequest"]) && $_GET["morequest"] == "sso") { 
            goto HF; 
        } 
        if (isset($_GET["morequest"]) && $_GET["morequest"] == "acs") { 
            goto fj; 
        } 
        if (isset($_GET["morequest"]) && $_GET["morequest"] == "metadata") { 
            goto QS; 
        } 
        if (!(array_key_exists("SAMLResponse", $_REQUEST) && !empty($_REQUEST["SAMLResponse"]))) { 
            goto Og; 
        } 
        $M4 = $_REQUEST["SAMLResponse"]; 
        $M4 = base64_decode($M4); 
        if (!(array_key_exists("SAMLResponse", $_GET) && !empty($_GET["SAMLResponse"]))) { 
            goto Ln; 
        } 
        $M4 = gzinflate($M4); 
        Ln: 
        $this->getSamlLogoutResponse($M4); 
        Og: 
        goto jX; 
        QS: 
        $Uo = Utilities::getSAMLConfiguration(); 
        $this->generateMetadata($Uo); 
        jX: 
        goto eW; 
        fj: 
        $Uo = Utilities::getSAMLConfiguration(); 
        $this->getSamlResponse($Uo); 
        eW: 
        goto W4; 
        HF: 
        $Uo = Utilities::getSAMLConfiguration(); 
        $this->sendSamlRequest($Uo); 
        W4: 
        if (!(isset($_COOKIE["mosamlredirect"]) && $_COOKIE["mosamlredirect"] != "-1")) { 
            goto Rh; 
        } 
        $Uo = Utilities::getSAMLConfiguration(); 
        $this->adminDashboardLogin($Uo); 
        Rh: 
        $Yi = Utilities::getCustomerDetails(); 
        $pb = 0; 
        if (!isset($Yi["enable_redirect"])) { 
            goto At; 
        } 
        $pb = $Yi["enable_redirect"]; 
        At: 
        if (!$pb) { 
            goto O4; 
        } 
        $Uo = Utilities::getSAMLConfiguration(); 
        $this->autoRedirect($Uo); 
        O4: 
    } 
    function sendSamlRequest($Uo) 
    { 
        $aq = ''; 
        $jn = ''; 
        if (!isset($Uo["sp_base_url"])) { 
            goto fd; 
        } 
        $aq = $Uo["sp_base_url"]; 
        $jn = $Uo["sp_entity_id"]; 
        fd: 
        $lM = JURI::root(); 
        if (!empty($aq)) { 
            goto nH; 
        } 
        $aq = $lM; 
        nH: 
        if (!empty($jn)) { 
            goto up; 
        } 
        $jn = $lM . "plugins/authentication/miniorangesaml/"; 
        up: 
        if (defined("_JDEFINES")) { 
            goto mz; 
        } 
        require_once JPATH_BASE . "/includes/defines.php"; 
        mz: 
        require_once JPATH_BASE . "/includes/framework.php"; 
        $hD = JFactory::getApplication("site"); 
        $hD->initialise(); 
        $Jb = $aq; 
        $user = JFactory::getUser(); 
        $NT = $aq . "?morequest=acs"; 
        $Km = $Uo["single_signon_service_url"]; 
        $FS = $Uo["binding"]; 
        $r4 = $this->getRelayState($aq, $_REQUEST); 
        $dh = Utilities::createAuthnRequest($NT, $jn, $Km, "false", $FS); 
        $this->sendSamlRequestByBindingType($dh, $FS, $r4, $Km); 
    } 
    function sendSamlRequestByBindingType($dh, $FS, $r4, $Km) 
    { 
        if (empty($FS) || $FS == "HttpRedirect") { 
            goto nQ; 
        } 
        $rZ = JPATH_BASE . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "authentication" . DIRECTORY_SEPARATOR . "miniorangesaml" . DIRECTORY_SEPARATOR . "saml2" . DIRECTORY_SEPARATOR . "cert" . DIRECTORY_SEPARATOR . "sp-key.key"; 
        $ct = JPATH_BASE . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "authentication" . DIRECTORY_SEPARATOR . "miniorangesaml" . DIRECTORY_SEPARATOR . "saml2" . DIRECTORY_SEPARATOR . "cert" . DIRECTORY_SEPARATOR . "sp-certificate.crt"; 
        $fp = Utilities::signXML($dh, $ct, $rZ, "NameIDPolicy"); 
        Utilities::postSAMLRequest($Km, $fp, $r4); 
        goto xF; 
        nQ: 
        $dh = "SAMLRequest=" . $dh . "&RelayState=" . $r4 . "&SigAlg=" . urlencode(XMLSecurityKey::RSA_SHA256); 
        $w_ = array("type" => "private"); 
        $TS = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, $w_); 
        $qb = JPATH_BASE . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "authentication" . DIRECTORY_SEPARATOR . "miniorangesaml" . DIRECTORY_SEPARATOR . "saml2" . DIRECTORY_SEPARATOR . "cert" . DIRECTORY_SEPARATOR . "sp-key.key"; 
        $TS->loadKey($qb, TRUE); 
        $qT = new XMLSecurityDSig(); 
        $kU = $TS->signData($dh); 
        $kU = base64_encode($kU); 
        $sW = $Km; 
        if (strpos($Km, "?") !== false) { 
            goto ak; 
        } 
        $sW .= "?"; 
        goto DJ; 
        ak: 
        $sW .= "&"; 
        DJ: 
        $sW .= $dh . "&Signature=" . urlencode($kU); 
        header("Location: " . $sW); 
        die; 
        xF: 
    } 
    function getRelayState($aq, $vC) 
    { 
        $r4 = $aq; 
        if (!isset($vC["q"])) { 
            goto GU; 
        } 
        if (!($vC["q"] == "test_config")) { 
            goto p0; 
        } 
        $r4 = "testValidate"; 
        p0: 
        GU: 
        if (!isset($vC["RelayState"])) { 
            goto fY; 
        } 
        $r4 = $vC["RelayState"]; 
        fY: 
        return $r4; 
    } 
    function getSamlResponse($Uo) 
    { 
        if (defined("_JDEFINES")) { 
            goto Oz; 
        } 
        require_once JPATH_BASE . "/includes/defines.php"; 
        Oz: 
        require_once JPATH_BASE . "/includes/framework.php"; 
        $QR = JPATH_BASE . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "authentication" . DIRECTORY_SEPARATOR . "miniorangesaml"; 
        include_once $QR . DIRECTORY_SEPARATOR . "saml2" . DIRECTORY_SEPARATOR . "Response.php"; 
        jimport("miniorangesamlplugin.utility.encryption"); 
        jimport("joomla.application.application"); 
        jimport("joomla.html.parameter"); 
        $aq = ''; 
        $jn = ''; 
        if (!isset($Uo["sp_base_url"])) { 
            goto zR; 
        } 
        $aq = $Uo["sp_base_url"]; 
        $jn = $Uo["sp_entity_id"]; 
        zR: 
        $lM = JURI::root(); 
        if (!empty($aq)) { 
            goto Vb; 
        } 
        $aq = $lM; 
        Vb: 
        if (!empty($jn)) { 
            goto hq; 
        } 
        $jn = $lM . "plugins/authentication/miniorangesaml/"; 
        hq: 
        $hD = JFactory::getApplication("site"); 
        $hD->initialise(); 
        if (array_key_exists("SAMLResponse", $_REQUEST)) { 
            goto b8; 
        } 
        throw new Exception("Missing SAMLRequest or SAMLResponse parameter."); 
        goto Sx; 
        b8: 
        $M4 = $_REQUEST["SAMLResponse"]; 
        $M4 = base64_decode($M4); 
        if (!(array_key_exists("SAMLResponse", $_GET) && !empty($_GET["SAMLResponse"]))) { 
            goto Gt; 
        } 
        $M4 = gzinflate($M4); 
        Gt: 
        $this->validateSamlResponse($M4, $aq, $jn, $Uo, $hD); 
        Sx: 
    } 
    function validateSamlResponse($M4, $aq, $jn, $gT, $hD) 
    { 
        if (array_key_exists("RelayState", $_REQUEST)) { 
            goto xM; 
        } 
        $XH = ''; 
        goto hg; 
        xM: 
        $XH = $_REQUEST["RelayState"]; 
        hg: 
        $wH = new DOMDocument(); 
        $wH->loadXML($M4); 
        $rG = $wH->firstChild; 
        $dD = $wH->documentElement; 
        $Gj = new DOMXpath($wH); 
        $Gj->registerNamespace("samlp", "urn:oasis:names:tc:SAML:2.0:protocol"); 
        $Gj->registerNamespace("saml", "urn:oasis:names:tc:SAML:2.0:assertion"); 
        $mm = $Gj->query("/samlp:Response/samlp:Status/samlp:StatusCode", $dD); 
        $xc = $mm->item(0)->getAttribute("Value"); 
        $oC = ''; 
        if (!($mm->item(0)->firstChild !== null)) { 
            goto hC; 
        } 
        $oC = $mm->item(0)->firstChild->getAttribute("Value"); 
        hC: 
        $mm = explode(":", $xc)[7]; 
        if (!($mm != "Success")) { 
            goto qT; 
        } 
        if (empty($oC)) { 
            goto Id; 
        } 
        $mm = explode(":", $oC)[7]; 
        Id: 
        $this->show_error_message($mm, $XH); 
        qT: 
        $NT = $aq . "?morequest=acs"; 
        $hW = $gT["certificate"]; 
        $hW = Utilities::sanitize_certificate($hW); 
        $dn = XMLSecurityKey::getRawThumbprint($hW); 
        $M4 = new SAML2_Response($rG); 
        $U3 = $M4->getSignatureData(); 
        $Sd = current($M4->getAssertions())->getSignatureData(); 
        $dn = iconv("UTF-8", "CP1252//IGNORE", $dn); 
        $dn = preg_replace("/\s+/", '', $dn); 
        if (empty($U3)) { 
            goto fO; 
        } 
        $dE = Utilities::processResponse($NT, $dn, $U3, $M4, $hW); 
        if (!($dE === FALSE)) { 
            goto Nc; 
        } 
        echo "Invalid signature in the SAML Response."; 
        die; 
        Nc: 
        fO: 
        if (empty($Sd)) { 
            goto ev; 
        } 
        $dE = Utilities::processResponse($NT, $dn, $Sd, $M4, $hW); 
        if (!($dE === FALSE)) { 
            goto eV; 
        } 
        echo "Invalid signature in the SAML Assertion."; 
        die; 
        eV: 
        ev: 
        if (!(empty($Sd) && empty($U3))) { 
            goto VW; 
        } 
        echo "No signature in SAML Response or Assertion."; 
        die; 
        VW: 
        $qd = $gT["idp_entity_id"]; 
        Utilities::validateIssuerAndAudience($M4, $jn, $qd); 
        $C4 = current(current($M4->getAssertions())->getNameId()); 
        $vM = current($M4->getAssertions())->getAttributes(); 
        $vM["ASSERTION_NAME_ID"] = current(current($M4->getAssertions())->getNameId()); 
        if (!($XH == "testValidate")) { 
            goto un; 
        } 
        Utilities::mo_saml_show_test_result($C4, $vM, $aq); 
        un: 
        $ao = current($M4->getAssertions())->getSessionIndex(); 
        $vM["ASSERTION_SESSION_INDEX"] = $ao; 
        $vl = $C4; 
        $lI = ''; 
        $x_ = ''; 
        $Gq = ''; 
        $wN = $gT["first_name"]; 
        $qL = $gT["last_name"]; 
        $VX = $gT["username"]; 
        $bW = $gT["email"]; 
        $Mt = $gT["grp"]; 
        $U1 = $gT["disable_update_existing_users_attribute"]; 
        if (!(!empty($VX) && isset($vM[$VX]) && !empty($vM[$VX]))) { 
            goto AP; 
        } 
        $C4 = $vM[$VX]; 
        if (!is_array($C4)) { 
            goto SH; 
        } 
        $C4 = $C4[0]; 
        SH: 
        AP: 
        if (!(!empty($bW) && isset($vM[$bW]) && !empty($vM[$bW]))) { 
            goto ht; 
        } 
        $vl = $vM[$bW]; 
        if (!is_array($vl)) { 
            goto qi; 
        } 
        $vl = $vl[0]; 
        qi: 
        ht: 
        if (!(!empty($wN) && isset($vM[$wN][0]) && !empty($vM[$wN][0]))) { 
            goto S8; 
        } 
        $x_ = $vM[$wN]; 
        if (!is_array($x_)) { 
            goto P8; 
        } 
        $x_ = $x_[0]; 
        P8: 
        S8: 
        if (!(!empty($qL) && isset($vM[$qL][0]) && !empty($vM[$qL][0]))) { 
            goto JN; 
        } 
        $Gq = $vM[$qL]; 
        if (!is_array($Gq)) { 
            goto vD; 
        } 
        $Gq = $Gq[0]; 
        vD: 
        JN: 
        if (!empty($Mt) && isset($vM[$Mt]) && !empty($vM[$Mt])) { 
            goto RY; 
        } 
        $cu = array(); 
        goto Uy; 
        RY: 
        $cu = $vM[$Mt]; 
        Uy: 
        if (isset($gT["enable_email"]) && $gT["enable_email"] == 0) { 
            goto Hm; 
        } 
        $zK = "email"; 
        goto bU; 
        Hm: 
        $zK = "username"; 
        bU: 
        if (!(isset($x_) && !empty($x_))) { 
            goto bz; 
        } 
        $lI = $x_ . " "; 
        bz: 
        if (!(isset($Gq) && !empty($Gq))) { 
            goto M8; 
        } 
        $lI = $lI . $Gq; 
        M8: 
        $Mh = Utilities::get_user_from_joomla($zK, $C4, $vl); 
        $Jb = isset($XH) ? $XH : $aq; 
        if ($Mh) { 
            goto N2; 
        } 
        $this->RegisterCurrentUser($vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $gT["user_profile_attributes"]); 
        goto h2; 
        N2: 
        $this->loginCurrentUser($Mh, $vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $U1, $gT["user_profile_attributes"]); 
        h2: 
    } 
    function loginCurrentUser($Mh, $vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $U1, $qf) 
    { 
        $user = JUser::getInstance($Mh->id); 
        $Z0 = Utilities::getRoleMapping(); 
        if (!($Z0["disable_existing_users_role_update"] == 0)) { 
            goto ZP; 
        } 
        $UI = 2; 
        if (!isset($Z0["mapping_value_default"])) { 
            goto Nx; 
        } 
        $UI = $Z0["mapping_value_default"]; 
        Nx: 
        $eD = array(); 
        if (!isset($Z0["role_mapping_key_value"])) { 
            goto nK; 
        } 
        $eD = json_decode($Z0["role_mapping_key_value"]); 
        nK: 
        $PR = 0; 
        if (!isset($Z0["enable_saml_role_mapping"])) { 
            goto vw; 
        } 
        $PR = json_decode($Z0["enable_saml_role_mapping"]); 
        vw: 
        jimport("joomla.user.helper"); 
        if (!($PR == 1)) { 
            goto PC; 
        } 
        $K3 = Utilities::get_mapped_groups($eD, $cu); 
        $this->addOrRemoveUserFromGroup($K3, $UI, $user); 
        PC: 
        ZP: 
        if ($U1) { 
            goto mI; 
        } 
        Utilities::updateCurrentUserName($user->id, $lI); 
        $this->updateUserProfileAttributes($user->id, $vM, $qf); 
        mI: 
        $hz = JFactory::getSession(); 
        $hz->set("user", $user); 
        $hz->set("MO_SAML_NAMEID", $vM["ASSERTION_NAME_ID"]); 
        $hz->set("MO_SAML_SESSION_INDEX", $vM["ASSERTION_SESSION_INDEX"]); 
        $hD->checkSession(); 
        $sO = $hz->getId(); 
        Utilities::updateUsernameToSessionId($user->id, $user->username, $sO); 
        $user->setLastVisit(); 
        $AX = $user->authorise("core.login.admin"); 
        if ($AX) { 
            goto av; 
        } 
        $hD->redirect(urldecode($Jb)); 
        goto lq; 
        av: 
        $this->loginIntoAdminDashboardIfEnabled($Jb, $user->username, $hz, $hD, false); 
        lq: 
    } 
    function RegisterCurrentUser($vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $qf) 
    { 
        $Z0 = Utilities::getRoleMapping(); 
        $UI = 2; 
        if (!isset($Z0["mapping_value_default"])) { 
            goto Fg; 
        } 
        $UI = $Z0["mapping_value_default"]; 
        Fg: 
        if (!isset($Z0["disable_create_users"])) { 
            goto OS; 
        } 
        $Mm = $Z0["disable_create_users"]; 
        OS: 
        $eD = array(); 
        if (!isset($Z0["role_mapping_key_value"])) { 
            goto Xr; 
        } 
        $eD = json_decode($Z0["role_mapping_key_value"]); 
        Xr: 
        $PR = 0; 
        if (!isset($Z0["enable_saml_role_mapping"])) { 
            goto Ix; 
        } 
        $PR = json_decode($Z0["enable_saml_role_mapping"]); 
        Ix: 
        $v7["name"] = isset($lI) && !empty($lI) ? $lI : $C4; 
        $v7["username"] = $C4; 
        $v7["email"] = $v7["email1"] = $v7["email2"] = JStringPunycode::emailToPunycode($vl); 
        $v7["password"] = $v7["password1"] = $v7["password2"] = JUserHelper::genRandomPassword(); 
        $v7["activation"] = "0"; 
        $v7["block"] = "0"; 
        if (!($PR == 1)) { 
            goto uE; 
        } 
        $K3 = Utilities::get_mapped_groups($eD, $cu); 
        if (empty($K3)) { 
            goto ax; 
        } 
        foreach ($K3 as $IE) { 
            $v7["groups"][] = $IE; 
            K0: 
        } 
        LD: 
        goto uM; 
        ax: 
        if (!($Mm == 1)) { 
            goto Px; 
        } 
        echo "We could not sign you in. Please contact your Administrator."; 
        die; 
        Px: 
        $v7["groups"][] = $UI; 
        uM: 
        uE: 
        jimport("joomla.application.component.model"); 
        if (defined("JPATH_COMPONENT")) { 
            goto js; 
        } 
        define("JPATH_COMPONENT", JPATH_BASE . "/components/"); 
        js: 
        $user = new JUser(); 
        if ($user->bind($v7)) { 
            goto eF; 
        } 
        throw new Exception("Could not bind data. Error: " . $user->getError()); 
        eF: 
        if ($user->save()) { 
            goto FM; 
        } 
        throw new Exception("Could not save user. Error: " . $user->getError()); 
        FM: 
        $Mh = Utilities::get_user_from_joomla($zK, $C4, $vl); 
        if (!$Mh) { 
            goto Rp; 
        } 
        $user = JUser::getInstance($Mh->id); 
        $this->updateUserProfileAttributes($user->id, $vM, $qf); 
        $hz = JFactory::getSession(); 
        $hz->set("user", $user); 
        $hz->set("MO_SAML_NAMEID", $vM["ASSERTION_NAME_ID"]); 
        $hz->set("MO_SAML_SESSION_INDEX", $vM["ASSERTION_SESSION_INDEX"]); 
        $hD->checkSession(); 
        $sO = $hz->getId(); 
        Utilities::updateUsernameToSessionId($user->id, $user->username, $sO); 
        $user->setLastVisit(); 
        $AX = $user->authorise("core.login.admin"); 
        if ($AX) { 
            goto d0; 
        } 
        $hD->redirect(urldecode($Jb), "Welcome {$user->username}", "message"); 
        goto pK; 
        d0: 
        $this->loginIntoAdminDashboardIfEnabled($Jb, $user->username, $hz, $hD, true); 
        pK: 
        Rp: 
    } 
    function updateUserProfileAttributes($JT, $vM, $qf) 
    { 
        $Cx = Utilities::get_user_profile_data($vM, $qf); 
        $EG = array(); 
        $EG = Utilities::get_user_profile_data_from_table($JT); 
        if (!(isset($Cx) && !empty($Cx))) { 
            goto QD; 
        } 
        $vL = Utilities::selectMaxOrdering($JT); 
        $aB = JFactory::getDbo(); 
        foreach ($Cx as $Cb) { 
            $TS = $Cb["profile_key"]; 
            $qH = $Cb["profile_value"]; 
            if (in_array($TS, $EG)) { 
                goto JC; 
            } 
            $HA = $aB->getQuery(true); 
            $wl = array("user_id", "profile_key", "profile_value", "ordering"); 
            $V5 = array($JT, $aB->quote($TS), $aB->quote($qH), ++$vL); 
            $HA->insert($aB->quoteName("#__user_profiles"))->columns($aB->quoteName($wl))->values(implode(",", $V5)); 
            $aB->setQuery($HA); 
            $aB->execute(); 
            goto GS; 
            JC: 
            $HA = $aB->getQuery(true); 
            $PC = array($aB->quoteName("profile_value") . " = " . $aB->quote($qH)); 
            $DH = array($aB->quoteName("user_id") . " = " . $aB->quote($JT), $aB->quoteName("profile_key") . " = " . $aB->quote($TS)); 
            $HA->update($aB->quoteName("#__user_profiles"))->set($PC)->where($DH); 
            $aB->setQuery($HA); 
            $Mh = $aB->query(); 
            GS: 
            pe: 
        } 
        XR: 
        QD: 
    } 
    function addOrRemoveUserFromGroup($K3, $UI, $user) 
    { 
        if (empty($K3)) { 
            goto aV; 
        } 
        $Gm = 1; 
        foreach ($K3 as $IE) { 
            JUserHelper::addUserToGroup($user->id, $IE); 
            if (!$Gm) { 
                goto K9; 
            } 
            foreach ($user->groups as $rU) { 
                if (!($rU != $IE)) { 
                    goto BU; 
                } 
                JUserHelper::removeUserFromGroup($user->id, $rU); 
                BU: 
                hG: 
            } 
            Tz: 
            $Gm = 0; 
            K9: 
            H9: 
        } 
        e_: 
        goto cM; 
        aV: 
        JUserHelper::addUserToGroup($user->id, $UI); 
        foreach ($user->groups as $rU) { 
            if (!($rU != $UI)) { 
                goto Sy; 
            } 
            JUserHelper::removeUserFromGroup($user->id, $rU); 
            Sy: 
            Uj: 
        } 
        iq: 
        cM: 
    } 
    function getSamlLogoutResponse($M4) 
    { 
        $wH = new DOMDocument(); 
        $M4 = str_replace("&", "&amp;", $M4); 
        $wH->loadXML($M4); 
        $rG = $wH->firstChild; 
        if (!($rG->localName == "LogoutResponse")) { 
            goto sS; 
        } 
        $hD = JFactory::getApplication("site"); 
        $tR = JURI::root(); 
        if (!isset($_REQUEST["RelayState"])) { 
            goto jT; 
        } 
        $tR = $_REQUEST["RelayState"]; 
        jT: 
        $zr = strpos($tR, "?"); 
        if (!($zr !== false)) { 
            goto rv; 
        } 
        $tR = substr($tR, 0, $zr); 
        rv: 
        $hD->redirect($tR); 
        sS: 
    } 
    function loginIntoAdminDashboardIfEnabled($Jb, $C4, $hz, $hD, $h2) 
    { 
        $Yi = Utilities::getCustomerDetails(); 
        $JY = $Yi["enable_admin_login"]; 
        if ($JY) { 
            goto wo; 
        } 
        if ($h2) { 
            goto zL; 
        } 
        $hD->redirect(urldecode($Jb)); 
        goto Gy; 
        zL: 
        $hD->redirect(urldecode($Jb), "Welcome {$C4}", "message"); 
        Gy: 
        goto Uf; 
        wo: 
        $kB = time(); 
        $gv = $Yi["api_key"]; 
        $rx = $kB . ":" . $gv . ":" . $C4; 
        $ax = $Yi["customer_token"]; 
        $rx = AESEncryption::encrypt_data($rx, $ax); 
        $fc = $kB + 30; 
        $nM = setcookie("mosamlredirect", $rx, $fc, "/"); 
        $iI = $hz->get("MO_SAML_NAMEID"); 
        $ao = $hz->set("MO_SAML_SESSION_INDEX"); 
        $rx = $ao . ":" . $iI; 
        $rx = AESEncryption::encrypt_data($rx, $ax); 
        $nM = setcookie("_mosession", $rx, $fc, "/"); 
        $GF = JURI::base(); 
        $TB = $GF . "administrator"; 
        $hD->redirect($TB); 
        Uf: 
    } 
    function generateMetadata($gT) 
    { 
        $aq = ''; 
        $jn = ''; 
        if (!isset($gT["sp_base_url"])) { 
            goto RN; 
        } 
        $aq = $gT["sp_base_url"]; 
        $jn = $gT["sp_entity_id"]; 
        RN: 
        $lM = JURI::root(); 
        if (!empty($aq)) { 
            goto w2; 
        } 
        $aq = $lM; 
        w2: 
        if (!empty($jn)) { 
            goto n3; 
        } 
        $jn = $lM . "plugins/authentication/miniorangesaml/"; 
        n3: 
        $FO = $aq . "?morequest=acs"; 
        $Y4 = $aq . "index.php?option=com_users&amp;task=logout"; 
        $cE = JPATH_BASE . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "authentication" . DIRECTORY_SEPARATOR . "miniorangesaml" . DIRECTORY_SEPARATOR . "saml2" . DIRECTORY_SEPARATOR . "cert" . DIRECTORY_SEPARATOR . "sp-certificate.crt"; 
        $cE = file_get_contents($cE); 
        $cE = Utilities::desanitize_certificate($cE); 
        header("Content-Type: text/xml"); 
        echo "<?xml version="1.0"?>
	\x9<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2020-10-28T23:59:59Z" cacheDuration="PT1446808792S" entityID="" . $jn . "">\xa\x9\x9  <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">\xa\x9\x9	<md:KeyDescriptor use="signing">
		\x9  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">\xa\x9	\x9\x9<ds:X509Data>\xa\x9	\x9\x9  <ds:X509Certificate>" . $cE . "</ds:X509Certificate>
\x9\x9\x9\x9</ds:X509Data>\xa		\x9  </ds:KeyInfo>
			</md:KeyDescriptor>
\x9\x9\x9<md:KeyDescriptor use="encryption">\xa	\x9	  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
	\x9		<ds:X509Data>\xa\x9\x9\x9\x9  <ds:X509Certificate>" . $cE . "</ds:X509Certificate>\xa\x9\x9\x9\x9</ds:X509Data>
			  </ds:KeyInfo>\xa\x9\x9\x9</md:KeyDescriptor>\xa	\x9\x9<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="" . $Y4 . ""/>
		\x9<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="" . $Y4 . ""/>\xa		\x9<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\xa\x9	\x9<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
\x9\x9\x9<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>\xa\x9	\x9<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="" . $FO . "" index="1"/>\xa\x9	  </md:SPSSODescriptor>\xa\x9\x9  <md:Organization>
			<md:OrganizationName xml:lang="en-US">miniOrange</md:OrganizationName>
\x9\x9	<md:OrganizationDisplayName xml:lang="en-US">miniOrange</md:OrganizationDisplayName>
\x9\x9	<md:OrganizationURL xml:lang="en-US">http://miniorange.com</md:OrganizationURL>\xa	\x9  </md:Organization>
	\x9  <md:ContactPerson contactType="technical">
	\x9\x9<md:GivenName>miniOrange</md:GivenName>
	\x9	<md:EmailAddress>[email protected]</md:EmailAddress>
\x9\x9  </md:ContactPerson>
\x9\x9  <md:ContactPerson contactType="support">
\x9		<md:GivenName>miniOrange</md:GivenName>
\x9	\x9<md:EmailAddress>[email protected]</md:EmailAddress>
	\x9  </md:ContactPerson>\xa\x9	</md:EntityDescriptor>"; 
        die; 
    } 
    function adminDashboardLogin($gT) 
    { 
        $Yi = Utilities::getCustomerDetails(); 
        $JY = $Yi["enable_admin_login"]; 
        if (!$JY) { 
            goto SU; 
        } 
        $aq = ''; 
        $jn = ''; 
        if (!isset($gT["sp_base_url"])) { 
            goto WJ; 
        } 
        $aq = $gT["sp_base_url"]; 
        $jn = $gT["sp_entity_id"]; 
        WJ: 
        $lM = JURI::root(); 
        if (!empty($aq)) { 
            goto wY; 
        } 
        $aq = $lM; 
        wY: 
        if (!empty($jn)) { 
            goto iD; 
        } 
        $jn = $lM . "plugins/authentication/miniorangesaml/"; 
        iD: 
        jimport("miniorangesamlplugin.utility.encryption"); 
        $rx = $_COOKIE["mosamlredirect"]; 
        $BA = $Yi["customer_token"]; 
        $Fv = $Yi["api_key"]; 
        $rx = AESEncryption::decrypt_data($rx, $BA); 
        $cw = array(); 
        $cw = explode(":", $rx); 
        $FR = $cw[0]; 
        $sz = $cw[1]; 
        $C4 = $cw[2]; 
        $kB = time(); 
        if (!($sz == $Fv && $kB - $FR < 30)) { 
            goto ta; 
        } 
        setcookie("mosamlredirect", "-1", time() - 100, "/"); 
        unset($_COOKIE["mosamlredirect"]); 
        $kB = time(); 
        $rx = $kB . ":" . $Fv; 
        $rx = AESEncryption::encrypt_data($rx, $BA); 
        $fc = $kB + 30; 
        $nM = setcookie("mosamlauthadmin", $rx, $fc, "/"); 
        $TB = $aq . "administrator/index.php"; 
        $rx = $_COOKIE["_mosession"]; 
        setcookie("_mosession", "-1", time() - 100, "/"); 
        unset($_COOKIE["_mosession"]); 
        $rx = AESEncryption::decrypt_data($rx, $BA); 
        $IW = array(); 
        $IW = explode(":", $rx); 
        $US = $IW[0]; 
        $wM = $IW[1]; 
        $hz = JFactory::getSession(); 
        $hz->set("MO_SAML_NAMEID", $wM); 
        $hz->set("MO_SAML_SESSION_INDEX", $US); 
        echo "<form id="mosaml_adminloginform" action="" . $TB . "" method="post">
\x9\x9\x9	\x9<input type="hidden" name="username" value="" . $C4 . "" />\xa	\x9			<input type="hidden" name="passwd" value="passwd" />\xa\x9			\x9<input type="hidden" name="option" value="com_login">\xa\x9\x9	\x9\x9<input type="hidden" name="task" value="login">
			\x9	<input type="hidden" name="return" value="aW5kZXgucGhw">" . JHtml::_("form.token") . "</form>
	\x9	\x9<script>
			\x9\x9setTimeout(function(){
	\x9\x9\x9		document.getElementById("mosaml_adminloginform").submit();\xa	\x9	\x9\x9}, 100);\x9\xa	\x9	\x9</script>"; 
        die; 
        ta: 
        SU: 
    } 
    function autoRedirect($Uo) 
    { 
        $user = JFactory::getUser(); 
        $hD = JFactory::getApplication("site"); 
        $hD->initialise(); 
        if ($hD->isAdmin()) { 
            goto Jj; 
        } 
        if ($user->id) { 
            goto zT; 
        } 
        $this->redirectToIDP($Uo); 
        zT: 
        Jj: 
    } 
    function redirectToIDP($Uo) 
    { 
        $Km = $Uo["single_signon_service_url"]; 
        if (!empty($Km)) { 
            goto X5; 
        } 
        return; 
        X5: 
        $aq = ''; 
        $jn = ''; 
        if (!isset($Uo["sp_base_url"])) { 
            goto C2; 
        } 
        $aq = $Uo["sp_base_url"]; 
        $jn = $Uo["sp_entity_id"]; 
        C2: 
        $lM = JURI::root(); 
        if (!empty($aq)) { 
            goto Ys; 
        } 
        $aq = $lM; 
        Ys: 
        if (!empty($jn)) { 
            goto VH; 
        } 
        $jn = $lM . "plugins/authentication/miniorangesaml/"; 
        VH: 
        $JU = !empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] !== "off" || $_SERVER["SERVER_PORT"] == 443 ? "https://" : "http://"; 
        $XH = $JU . "{$_SERVER["HTTP_HOST"]}{$_SERVER["REQUEST_URI"]}"; 
        $sW = $aq . "?morequest=sso&RelayState=" . urlencode($XH); 
        header("Location: " . $sW); 
        die; 
    } 
    function show_error_message($Hu, $XH) 
    { 
        if ($XH == "testValidate") { 
            goto y1; 
        } 
        if ($Hu == "RequestDenied") { 
            goto nu; 
        } 
        echo "We could not sign you in. Please contact your Administrator."; 
        die; 
        goto p_; 
        nu: 
        echo "You are not allowed to login into the site. Please contact your Administrator."; 
        die; 
        p_: 
        goto Fl; 
        y1: 
        echo "<div style="font-family:Calibri;padding:0 3%;">"; 
        echo "<div style="color: #a94442;background-color: #f2dede;padding: 15px;margin-bottom: 20px;text-align:center;border:1px solid #E6B3B2;font-size:18pt;"> ERROR</div>\xa\x9		<div style="color: #a94442;font-size:14pt; margin-bottom:20px;"><p><strong>Error: </strong> Invalid SAML Response Status.</p>
			<p><strong>Causes</strong>: Identity Provider has sent '" . $Hu . "' status code in SAML Response. </p>
			\x9\x9\x9\x9<p><strong>Reason</strong>: " . $this->get_status_message($Hu) . "</p><br>
			</div>\xa
			<div style="margin:3%;display:block;text-align:center;">\xa		\x9<div style="margin:3%;display:block;text-align:center;"><input style="padding:1%;width:100px;background: #0091CD none repeat scroll 0% 0%;cursor: pointer;font-size:15px;border-width: 1px;border-style: solid;border-radius: 3px;white-space: nowrap;box-sizing: border-box;border-color: #0073AA;box-shadow: 0px 1px 0px rgba(120, 200, 230, 0.6) inset;color: #FFF;"type="button" value="Done" onClick="self.close();"></div>"; 
        die; 
        Fl: 
    } 
    function get_status_message($Hu) 
    { 
        switch ($Hu) { 
            case "RequestDenied": 
                return "You are not allowed to login into the site. Please contact your Administrator."; 
                goto Ny; 
            case "Requester": 
                return "The request could not be performed due to an error on the part of the requester."; 
                goto Ny; 
            case "Responder": 
                return "The request could not be performed due to an error on the part of the SAML responder or SAML authority."; 
                goto Ny; 
            case "VersionMismatch": 
                return "The SAML responder could not process the request because the version of the request message was incorrect."; 
                goto Ny; 
            default: 
                return "Unknown"; 
        } 
        NB: 
        Ny: 
    } 
} ?>

Did this file decode correctly?

Original Code

<?php


defined("\x5f\x4a\105\130\x45\103") or die("\122\145\x73\164\x72\x69\x63\164\145\x64\x20\141\143\x63\145\x73\x73");
jimport("\152\x6f\x6f\x6d\154\141\x2e\x70\x6c\165\147\151\156\x2e\160\154\165\147\x69\x6e");
class plgSystemSamlredirect extends JPlugin
{
    public function onAfterInitialise()
    {
        jimport("\x6d\151\x6e\151\x6f\x72\x61\156\147\x65\163\x61\155\154\160\154\x75\147\x69\156\56\165\x74\151\154\151\164\171\56\x55\164\x69\x6c\151\164\x69\145\163");
        if (isset($_GET["\155\x6f\x72\145\x71\x75\x65\163\x74"]) && $_GET["\155\157\162\x65\161\x75\x65\163\164"] == "\x73\x73\157") {
            goto HF;
        }
        if (isset($_GET["\155\157\162\x65\161\165\x65\163\164"]) && $_GET["\x6d\157\x72\145\161\x75\145\163\164"] == "\x61\143\163") {
            goto fj;
        }
        if (isset($_GET["\x6d\x6f\162\x65\161\165\x65\163\164"]) && $_GET["\155\157\162\x65\x71\x75\x65\x73\x74"] == "\155\x65\164\141\x64\x61\x74\x61") {
            goto QS;
        }
        if (!(array_key_exists("\x53\101\x4d\x4c\x52\x65\163\x70\x6f\x6e\163\145", $_REQUEST) && !empty($_REQUEST["\123\x41\115\114\122\x65\x73\x70\157\156\x73\x65"]))) {
            goto Og;
        }
        $M4 = $_REQUEST["\123\x41\x4d\x4c\x52\x65\163\160\x6f\x6e\x73\145"];
        $M4 = base64_decode($M4);
        if (!(array_key_exists("\123\101\115\114\x52\x65\163\160\157\156\x73\145", $_GET) && !empty($_GET["\x53\101\x4d\114\122\x65\x73\160\157\156\x73\x65"]))) {
            goto Ln;
        }
        $M4 = gzinflate($M4);
        Ln:
        $this->getSamlLogoutResponse($M4);
        Og:
        goto jX;
        QS:
        $Uo = Utilities::getSAMLConfiguration();
        $this->generateMetadata($Uo);
        jX:
        goto eW;
        fj:
        $Uo = Utilities::getSAMLConfiguration();
        $this->getSamlResponse($Uo);
        eW:
        goto W4;
        HF:
        $Uo = Utilities::getSAMLConfiguration();
        $this->sendSamlRequest($Uo);
        W4:
        if (!(isset($_COOKIE["\x6d\157\163\141\x6d\x6c\162\x65\x64\151\x72\145\143\164"]) && $_COOKIE["\x6d\157\x73\141\x6d\154\x72\145\144\x69\162\145\x63\x74"] != "\x2d\x31")) {
            goto Rh;
        }
        $Uo = Utilities::getSAMLConfiguration();
        $this->adminDashboardLogin($Uo);
        Rh:
        $Yi = Utilities::getCustomerDetails();
        $pb = 0;
        if (!isset($Yi["\x65\156\141\142\x6c\145\x5f\162\145\144\x69\x72\145\x63\164"])) {
            goto At;
        }
        $pb = $Yi["\145\156\x61\142\154\x65\137\162\x65\x64\x69\162\x65\143\x74"];
        At:
        if (!$pb) {
            goto O4;
        }
        $Uo = Utilities::getSAMLConfiguration();
        $this->autoRedirect($Uo);
        O4:
    }
    function sendSamlRequest($Uo)
    {
        $aq = '';
        $jn = '';
        if (!isset($Uo["\163\160\137\142\141\x73\x65\137\x75\x72\x6c"])) {
            goto fd;
        }
        $aq = $Uo["\x73\160\137\142\141\x73\145\137\x75\162\x6c"];
        $jn = $Uo["\x73\x70\x5f\x65\x6e\x74\x69\x74\171\x5f\x69\144"];
        fd:
        $lM = JURI::root();
        if (!empty($aq)) {
            goto nH;
        }
        $aq = $lM;
        nH:
        if (!empty($jn)) {
            goto up;
        }
        $jn = $lM . "\x70\154\165\147\151\x6e\163\57\141\x75\164\150\x65\156\164\151\x63\141\164\151\x6f\156\x2f\x6d\151\156\151\x6f\162\141\x6e\147\x65\163\x61\x6d\x6c\57";
        up:
        if (defined("\x5f\112\x44\105\x46\x49\116\x45\123")) {
            goto mz;
        }
        require_once JPATH_BASE . "\x2f\151\x6e\x63\x6c\x75\144\x65\163\57\x64\x65\x66\151\x6e\145\x73\x2e\x70\x68\160";
        mz:
        require_once JPATH_BASE . "\x2f\x69\x6e\143\x6c\165\144\x65\163\x2f\146\x72\141\155\145\x77\x6f\162\x6b\56\x70\x68\x70";
        $hD = JFactory::getApplication("\163\x69\x74\x65");
        $hD->initialise();
        $Jb = $aq;
        $user = JFactory::getUser();
        $NT = $aq . "\77\x6d\x6f\x72\145\x71\165\145\163\x74\75\x61\143\163";
        $Km = $Uo["\x73\x69\x6e\x67\154\145\137\163\151\x67\156\x6f\x6e\137\163\145\x72\x76\151\143\x65\x5f\165\162\154"];
        $FS = $Uo["\x62\x69\156\x64\x69\x6e\x67"];
        $r4 = $this->getRelayState($aq, $_REQUEST);
        $dh = Utilities::createAuthnRequest($NT, $jn, $Km, "\146\x61\154\163\145", $FS);
        $this->sendSamlRequestByBindingType($dh, $FS, $r4, $Km);
    }
    function sendSamlRequestByBindingType($dh, $FS, $r4, $Km)
    {
        if (empty($FS) || $FS == "\x48\164\164\x70\122\145\144\151\162\145\143\x74") {
            goto nQ;
        }
        $rZ = JPATH_BASE . DIRECTORY_SEPARATOR . "\x70\x6c\x75\x67\151\156\163" . DIRECTORY_SEPARATOR . "\141\x75\164\150\x65\x6e\164\151\143\x61\164\151\x6f\x6e" . DIRECTORY_SEPARATOR . "\x6d\151\x6e\x69\157\162\x61\x6e\x67\x65\163\x61\155\x6c" . DIRECTORY_SEPARATOR . "\x73\x61\x6d\154\62" . DIRECTORY_SEPARATOR . "\143\x65\162\x74" . DIRECTORY_SEPARATOR . "\163\x70\55\153\x65\x79\56\153\145\171";
        $ct = JPATH_BASE . DIRECTORY_SEPARATOR . "\160\x6c\165\x67\x69\x6e\x73" . DIRECTORY_SEPARATOR . "\141\165\x74\150\x65\156\x74\x69\x63\141\164\151\x6f\156" . DIRECTORY_SEPARATOR . "\155\x69\156\151\157\x72\x61\156\x67\145\163\x61\x6d\x6c" . DIRECTORY_SEPARATOR . "\163\141\x6d\154\62" . DIRECTORY_SEPARATOR . "\143\145\x72\x74" . DIRECTORY_SEPARATOR . "\x73\x70\x2d\x63\x65\x72\164\x69\x66\x69\x63\141\164\x65\56\x63\x72\164";
        $fp = Utilities::signXML($dh, $ct, $rZ, "\x4e\141\x6d\x65\111\x44\x50\157\154\151\143\x79");
        Utilities::postSAMLRequest($Km, $fp, $r4);
        goto xF;
        nQ:
        $dh = "\123\x41\x4d\114\x52\145\161\x75\145\163\164\x3d" . $dh . "\x26\122\x65\154\x61\x79\x53\164\x61\x74\145\x3d" . $r4 . "\46\x53\x69\x67\101\154\147\75" . urlencode(XMLSecurityKey::RSA_SHA256);
        $w_ = array("\x74\x79\x70\145" => "\160\x72\151\166\141\x74\145");
        $TS = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, $w_);
        $qb = JPATH_BASE . DIRECTORY_SEPARATOR . "\x70\x6c\x75\147\x69\x6e\x73" . DIRECTORY_SEPARATOR . "\141\165\x74\x68\145\156\x74\x69\x63\x61\164\151\157\x6e" . DIRECTORY_SEPARATOR . "\155\x69\156\151\157\x72\141\156\x67\x65\x73\x61\x6d\154" . DIRECTORY_SEPARATOR . "\163\141\x6d\154\x32" . DIRECTORY_SEPARATOR . "\x63\x65\162\164" . DIRECTORY_SEPARATOR . "\163\160\x2d\153\x65\x79\x2e\153\145\171";
        $TS->loadKey($qb, TRUE);
        $qT = new XMLSecurityDSig();
        $kU = $TS->signData($dh);
        $kU = base64_encode($kU);
        $sW = $Km;
        if (strpos($Km, "\77") !== false) {
            goto ak;
        }
        $sW .= "\77";
        goto DJ;
        ak:
        $sW .= "\46";
        DJ:
        $sW .= $dh . "\46\x53\151\147\156\x61\x74\165\162\x65\x3d" . urlencode($kU);
        header("\114\x6f\x63\x61\x74\151\x6f\x6e\72\40" . $sW);
        die;
        xF:
    }
    function getRelayState($aq, $vC)
    {
        $r4 = $aq;
        if (!isset($vC["\x71"])) {
            goto GU;
        }
        if (!($vC["\x71"] == "\x74\x65\x73\164\137\x63\x6f\156\x66\x69\x67")) {
            goto p0;
        }
        $r4 = "\164\x65\x73\164\x56\141\x6c\151\x64\x61\164\145";
        p0:
        GU:
        if (!isset($vC["\122\x65\154\x61\171\123\x74\x61\164\x65"])) {
            goto fY;
        }
        $r4 = $vC["\x52\x65\154\x61\171\123\164\141\164\145"];
        fY:
        return $r4;
    }
    function getSamlResponse($Uo)
    {
        if (defined("\137\x4a\104\105\x46\x49\116\105\123")) {
            goto Oz;
        }
        require_once JPATH_BASE . "\57\x69\x6e\143\x6c\x75\x64\x65\163\57\144\145\146\151\x6e\145\x73\56\160\x68\160";
        Oz:
        require_once JPATH_BASE . "\57\x69\x6e\143\x6c\165\x64\145\x73\57\x66\x72\141\x6d\145\x77\157\162\x6b\x2e\x70\x68\160";
        $QR = JPATH_BASE . DIRECTORY_SEPARATOR . "\160\x6c\x75\x67\x69\x6e\163" . DIRECTORY_SEPARATOR . "\x61\165\x74\x68\145\x6e\x74\151\x63\x61\x74\151\x6f\x6e" . DIRECTORY_SEPARATOR . "\155\151\156\x69\x6f\162\141\x6e\x67\x65\x73\x61\x6d\x6c";
        include_once $QR . DIRECTORY_SEPARATOR . "\163\x61\155\154\62" . DIRECTORY_SEPARATOR . "\122\x65\163\160\x6f\156\x73\x65\56\x70\150\160";
        jimport("\x6d\x69\x6e\x69\157\162\141\x6e\x67\145\x73\x61\x6d\x6c\160\x6c\165\x67\151\x6e\x2e\165\x74\151\154\x69\164\171\56\x65\156\143\162\x79\160\164\x69\157\156");
        jimport("\152\157\x6f\x6d\x6c\141\x2e\141\x70\x70\x6c\151\x63\x61\164\151\157\x6e\x2e\141\x70\x70\154\151\143\x61\x74\x69\157\156");
        jimport("\x6a\x6f\x6f\x6d\154\x61\56\x68\x74\155\x6c\56\160\141\x72\141\155\x65\x74\145\x72");
        $aq = '';
        $jn = '';
        if (!isset($Uo["\x73\x70\x5f\x62\141\163\145\x5f\x75\x72\x6c"])) {
            goto zR;
        }
        $aq = $Uo["\163\x70\137\142\x61\163\x65\137\x75\x72\154"];
        $jn = $Uo["\x73\x70\x5f\x65\x6e\164\x69\x74\171\137\151\x64"];
        zR:
        $lM = JURI::root();
        if (!empty($aq)) {
            goto Vb;
        }
        $aq = $lM;
        Vb:
        if (!empty($jn)) {
            goto hq;
        }
        $jn = $lM . "\160\154\x75\x67\x69\x6e\x73\57\x61\x75\x74\x68\x65\x6e\164\x69\143\x61\164\x69\x6f\x6e\x2f\x6d\151\156\151\x6f\162\141\156\x67\x65\x73\x61\x6d\154\57";
        hq:
        $hD = JFactory::getApplication("\x73\x69\164\x65");
        $hD->initialise();
        if (array_key_exists("\x53\x41\x4d\114\x52\x65\x73\160\157\156\x73\x65", $_REQUEST)) {
            goto b8;
        }
        throw new Exception("\x4d\151\x73\163\x69\156\147\40\123\101\115\x4c\122\x65\x71\165\145\163\164\40\x6f\x72\x20\x53\101\x4d\x4c\x52\145\163\160\x6f\156\163\145\40\x70\141\162\x61\x6d\145\164\x65\162\56");
        goto Sx;
        b8:
        $M4 = $_REQUEST["\x53\x41\115\x4c\122\x65\x73\x70\157\156\163\145"];
        $M4 = base64_decode($M4);
        if (!(array_key_exists("\123\x41\115\114\122\x65\163\160\157\156\x73\145", $_GET) && !empty($_GET["\x53\x41\x4d\114\122\x65\163\x70\x6f\x6e\163\145"]))) {
            goto Gt;
        }
        $M4 = gzinflate($M4);
        Gt:
        $this->validateSamlResponse($M4, $aq, $jn, $Uo, $hD);
        Sx:
    }
    function validateSamlResponse($M4, $aq, $jn, $gT, $hD)
    {
        if (array_key_exists("\122\x65\154\x61\171\123\x74\141\x74\145", $_REQUEST)) {
            goto xM;
        }
        $XH = '';
        goto hg;
        xM:
        $XH = $_REQUEST["\x52\x65\x6c\141\x79\x53\x74\141\x74\x65"];
        hg:
        $wH = new DOMDocument();
        $wH->loadXML($M4);
        $rG = $wH->firstChild;
        $dD = $wH->documentElement;
        $Gj = new DOMXpath($wH);
        $Gj->registerNamespace("\163\141\155\154\x70", "\x75\162\x6e\x3a\x6f\141\x73\x69\163\x3a\x6e\141\155\x65\x73\x3a\164\x63\x3a\x53\x41\x4d\114\72\62\x2e\x30\x3a\160\x72\157\x74\157\143\157\154");
        $Gj->registerNamespace("\163\141\155\x6c", "\165\x72\x6e\72\157\x61\163\151\163\72\x6e\x61\155\x65\x73\72\x74\143\x3a\123\x41\x4d\x4c\72\x32\56\60\72\x61\x73\x73\145\x72\x74\x69\157\x6e");
        $mm = $Gj->query("\x2f\x73\141\x6d\x6c\x70\x3a\x52\145\163\x70\157\156\163\x65\57\163\141\155\154\160\72\123\x74\141\x74\x75\163\x2f\163\141\155\154\160\72\123\164\x61\164\165\x73\103\x6f\144\145", $dD);
        $xc = $mm->item(0)->getAttribute("\x56\x61\x6c\x75\x65");
        $oC = '';
        if (!($mm->item(0)->firstChild !== null)) {
            goto hC;
        }
        $oC = $mm->item(0)->firstChild->getAttribute("\126\141\154\x75\x65");
        hC:
        $mm = explode("\72", $xc)[7];
        if (!($mm != "\123\x75\x63\143\145\163\163")) {
            goto qT;
        }
        if (empty($oC)) {
            goto Id;
        }
        $mm = explode("\72", $oC)[7];
        Id:
        $this->show_error_message($mm, $XH);
        qT:
        $NT = $aq . "\x3f\x6d\x6f\x72\x65\x71\165\x65\x73\x74\x3d\141\143\163";
        $hW = $gT["\x63\145\162\x74\x69\x66\x69\x63\141\164\145"];
        $hW = Utilities::sanitize_certificate($hW);
        $dn = XMLSecurityKey::getRawThumbprint($hW);
        $M4 = new SAML2_Response($rG);
        $U3 = $M4->getSignatureData();
        $Sd = current($M4->getAssertions())->getSignatureData();
        $dn = iconv("\x55\x54\x46\x2d\70", "\x43\x50\x31\x32\65\x32\57\57\x49\x47\116\117\122\x45", $dn);
        $dn = preg_replace("\57\134\163\x2b\x2f", '', $dn);
        if (empty($U3)) {
            goto fO;
        }
        $dE = Utilities::processResponse($NT, $dn, $U3, $M4, $hW);
        if (!($dE === FALSE)) {
            goto Nc;
        }
        echo "\x49\x6e\x76\141\154\151\144\40\x73\151\x67\156\x61\164\x75\x72\145\40\151\x6e\40\x74\150\x65\x20\123\101\x4d\114\40\122\145\163\x70\157\156\163\x65\x2e";
        die;
        Nc:
        fO:
        if (empty($Sd)) {
            goto ev;
        }
        $dE = Utilities::processResponse($NT, $dn, $Sd, $M4, $hW);
        if (!($dE === FALSE)) {
            goto eV;
        }
        echo "\x49\x6e\166\141\x6c\x69\144\x20\163\x69\147\156\x61\x74\x75\162\145\x20\151\156\40\x74\x68\x65\x20\123\x41\x4d\114\x20\101\x73\x73\145\x72\164\151\157\156\56";
        die;
        eV:
        ev:
        if (!(empty($Sd) && empty($U3))) {
            goto VW;
        }
        echo "\x4e\157\40\163\x69\x67\156\141\x74\x75\162\145\40\x69\x6e\x20\123\x41\x4d\x4c\40\122\x65\163\160\157\156\x73\x65\40\157\162\40\101\163\163\x65\162\x74\x69\x6f\x6e\56";
        die;
        VW:
        $qd = $gT["\x69\x64\160\x5f\x65\156\x74\151\164\171\x5f\x69\x64"];
        Utilities::validateIssuerAndAudience($M4, $jn, $qd);
        $C4 = current(current($M4->getAssertions())->getNameId());
        $vM = current($M4->getAssertions())->getAttributes();
        $vM["\101\x53\123\x45\122\x54\111\x4f\116\137\116\x41\x4d\105\137\111\x44"] = current(current($M4->getAssertions())->getNameId());
        if (!($XH == "\x74\x65\x73\164\x56\x61\154\151\144\141\x74\x65")) {
            goto un;
        }
        Utilities::mo_saml_show_test_result($C4, $vM, $aq);
        un:
        $ao = current($M4->getAssertions())->getSessionIndex();
        $vM["\x41\123\123\105\x52\x54\x49\117\x4e\x5f\123\105\x53\x53\111\117\x4e\x5f\x49\116\104\105\x58"] = $ao;
        $vl = $C4;
        $lI = '';
        $x_ = '';
        $Gq = '';
        $wN = $gT["\x66\x69\162\163\x74\x5f\x6e\141\155\145"];
        $qL = $gT["\x6c\x61\x73\x74\x5f\156\x61\x6d\145"];
        $VX = $gT["\165\163\145\162\156\x61\155\145"];
        $bW = $gT["\145\x6d\x61\151\x6c"];
        $Mt = $gT["\147\x72\160"];
        $U1 = $gT["\x64\151\x73\x61\142\154\145\x5f\165\160\144\x61\x74\145\x5f\x65\170\151\x73\164\x69\x6e\x67\x5f\x75\x73\145\162\x73\137\x61\x74\164\x72\151\142\165\164\x65"];
        if (!(!empty($VX) && isset($vM[$VX]) && !empty($vM[$VX]))) {
            goto AP;
        }
        $C4 = $vM[$VX];
        if (!is_array($C4)) {
            goto SH;
        }
        $C4 = $C4[0];
        SH:
        AP:
        if (!(!empty($bW) && isset($vM[$bW]) && !empty($vM[$bW]))) {
            goto ht;
        }
        $vl = $vM[$bW];
        if (!is_array($vl)) {
            goto qi;
        }
        $vl = $vl[0];
        qi:
        ht:
        if (!(!empty($wN) && isset($vM[$wN][0]) && !empty($vM[$wN][0]))) {
            goto S8;
        }
        $x_ = $vM[$wN];
        if (!is_array($x_)) {
            goto P8;
        }
        $x_ = $x_[0];
        P8:
        S8:
        if (!(!empty($qL) && isset($vM[$qL][0]) && !empty($vM[$qL][0]))) {
            goto JN;
        }
        $Gq = $vM[$qL];
        if (!is_array($Gq)) {
            goto vD;
        }
        $Gq = $Gq[0];
        vD:
        JN:
        if (!empty($Mt) && isset($vM[$Mt]) && !empty($vM[$Mt])) {
            goto RY;
        }
        $cu = array();
        goto Uy;
        RY:
        $cu = $vM[$Mt];
        Uy:
        if (isset($gT["\145\156\x61\142\x6c\x65\x5f\x65\155\x61\x69\x6c"]) && $gT["\x65\156\x61\x62\154\145\137\x65\155\141\x69\x6c"] == 0) {
            goto Hm;
        }
        $zK = "\x65\155\x61\x69\154";
        goto bU;
        Hm:
        $zK = "\x75\163\145\162\156\x61\x6d\x65";
        bU:
        if (!(isset($x_) && !empty($x_))) {
            goto bz;
        }
        $lI = $x_ . "\x20";
        bz:
        if (!(isset($Gq) && !empty($Gq))) {
            goto M8;
        }
        $lI = $lI . $Gq;
        M8:
        $Mh = Utilities::get_user_from_joomla($zK, $C4, $vl);
        $Jb = isset($XH) ? $XH : $aq;
        if ($Mh) {
            goto N2;
        }
        $this->RegisterCurrentUser($vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $gT["\x75\163\x65\x72\137\160\x72\157\x66\x69\154\x65\137\141\164\164\x72\151\x62\165\x74\145\163"]);
        goto h2;
        N2:
        $this->loginCurrentUser($Mh, $vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $U1, $gT["\x75\163\x65\x72\137\x70\162\157\146\151\x6c\145\x5f\x61\164\164\x72\x69\x62\165\x74\x65\x73"]);
        h2:
    }
    function loginCurrentUser($Mh, $vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $U1, $qf)
    {
        $user = JUser::getInstance($Mh->id);
        $Z0 = Utilities::getRoleMapping();
        if (!($Z0["\x64\151\x73\x61\x62\x6c\x65\x5f\145\x78\151\x73\164\x69\156\147\x5f\165\163\x65\162\x73\137\x72\x6f\x6c\145\x5f\x75\160\144\x61\164\145"] == 0)) {
            goto ZP;
        }
        $UI = 2;
        if (!isset($Z0["\x6d\141\160\x70\x69\156\x67\x5f\166\141\x6c\165\x65\x5f\144\145\x66\141\x75\154\x74"])) {
            goto Nx;
        }
        $UI = $Z0["\x6d\141\x70\x70\151\156\147\x5f\166\141\154\165\x65\137\144\x65\146\x61\x75\x6c\x74"];
        Nx:
        $eD = array();
        if (!isset($Z0["\x72\x6f\x6c\145\137\155\141\160\x70\151\156\x67\137\153\x65\x79\x5f\166\141\154\x75\145"])) {
            goto nK;
        }
        $eD = json_decode($Z0["\x72\157\154\145\x5f\155\x61\x70\x70\151\156\147\137\153\145\171\137\166\x61\x6c\165\145"]);
        nK:
        $PR = 0;
        if (!isset($Z0["\x65\156\x61\142\x6c\x65\x5f\x73\141\x6d\x6c\x5f\162\x6f\154\145\137\155\x61\x70\x70\x69\x6e\147"])) {
            goto vw;
        }
        $PR = json_decode($Z0["\x65\156\141\142\x6c\x65\137\163\141\x6d\x6c\137\x72\x6f\154\x65\137\x6d\141\160\x70\151\x6e\x67"]);
        vw:
        jimport("\x6a\x6f\x6f\x6d\154\141\x2e\x75\x73\x65\162\56\150\145\154\160\x65\162");
        if (!($PR == 1)) {
            goto PC;
        }
        $K3 = Utilities::get_mapped_groups($eD, $cu);
        $this->addOrRemoveUserFromGroup($K3, $UI, $user);
        PC:
        ZP:
        if ($U1) {
            goto mI;
        }
        Utilities::updateCurrentUserName($user->id, $lI);
        $this->updateUserProfileAttributes($user->id, $vM, $qf);
        mI:
        $hz = JFactory::getSession();
        $hz->set("\165\x73\x65\x72", $user);
        $hz->set("\x4d\x4f\137\123\101\x4d\x4c\137\x4e\x41\x4d\x45\111\104", $vM["\101\123\123\105\x52\124\x49\x4f\116\x5f\x4e\x41\115\x45\137\111\x44"]);
        $hz->set("\x4d\x4f\137\x53\101\x4d\x4c\x5f\123\105\123\x53\x49\117\116\137\x49\x4e\104\105\x58", $vM["\101\x53\x53\105\122\x54\x49\x4f\x4e\137\x53\x45\123\x53\x49\117\116\137\111\x4e\104\x45\x58"]);
        $hD->checkSession();
        $sO = $hz->getId();
        Utilities::updateUsernameToSessionId($user->id, $user->username, $sO);
        $user->setLastVisit();
        $AX = $user->authorise("\x63\x6f\x72\145\56\154\x6f\147\x69\156\x2e\x61\144\x6d\x69\x6e");
        if ($AX) {
            goto av;
        }
        $hD->redirect(urldecode($Jb));
        goto lq;
        av:
        $this->loginIntoAdminDashboardIfEnabled($Jb, $user->username, $hz, $hD, false);
        lq:
    }
    function RegisterCurrentUser($vM, $Jb, $lI, $C4, $vl, $zK, $hD, $cu, $qf)
    {
        $Z0 = Utilities::getRoleMapping();
        $UI = 2;
        if (!isset($Z0["\x6d\141\160\160\x69\156\147\x5f\x76\x61\x6c\165\145\137\144\145\x66\x61\165\x6c\164"])) {
            goto Fg;
        }
        $UI = $Z0["\155\141\x70\160\x69\x6e\147\x5f\166\x61\154\x75\x65\x5f\x64\145\146\x61\165\154\164"];
        Fg:
        if (!isset($Z0["\x64\151\163\x61\142\154\x65\137\x63\162\145\141\164\x65\137\x75\x73\x65\x72\163"])) {
            goto OS;
        }
        $Mm = $Z0["\x64\x69\x73\x61\x62\x6c\145\137\143\162\145\141\164\145\137\165\163\x65\162\163"];
        OS:
        $eD = array();
        if (!isset($Z0["\162\157\154\x65\x5f\x6d\x61\160\160\151\x6e\x67\137\153\145\x79\x5f\166\141\x6c\x75\145"])) {
            goto Xr;
        }
        $eD = json_decode($Z0["\x72\157\x6c\x65\137\155\x61\x70\x70\151\x6e\147\x5f\x6b\x65\x79\x5f\x76\x61\x6c\165\x65"]);
        Xr:
        $PR = 0;
        if (!isset($Z0["\x65\156\x61\142\x6c\145\x5f\x73\x61\155\x6c\137\x72\157\154\145\x5f\x6d\x61\x70\160\x69\156\x67"])) {
            goto Ix;
        }
        $PR = json_decode($Z0["\x65\x6e\x61\x62\154\x65\x5f\x73\x61\155\x6c\x5f\x72\157\154\x65\x5f\x6d\x61\160\x70\x69\x6e\147"]);
        Ix:
        $v7["\x6e\x61\x6d\x65"] = isset($lI) && !empty($lI) ? $lI : $C4;
        $v7["\165\163\145\162\x6e\141\155\x65"] = $C4;
        $v7["\x65\x6d\x61\x69\x6c"] = $v7["\x65\155\x61\x69\154\x31"] = $v7["\145\155\x61\x69\x6c\62"] = JStringPunycode::emailToPunycode($vl);
        $v7["\x70\141\163\x73\167\157\x72\x64"] = $v7["\x70\141\163\163\x77\157\162\x64\61"] = $v7["\160\x61\x73\x73\167\x6f\x72\x64\x32"] = JUserHelper::genRandomPassword();
        $v7["\x61\x63\164\151\166\x61\164\151\157\x6e"] = "\60";
        $v7["\x62\x6c\157\x63\x6b"] = "\x30";
        if (!($PR == 1)) {
            goto uE;
        }
        $K3 = Utilities::get_mapped_groups($eD, $cu);
        if (empty($K3)) {
            goto ax;
        }
        foreach ($K3 as $IE) {
            $v7["\x67\x72\x6f\165\x70\x73"][] = $IE;
            K0:
        }
        LD:
        goto uM;
        ax:
        if (!($Mm == 1)) {
            goto Px;
        }
        echo "\x57\x65\x20\x63\x6f\x75\154\144\40\x6e\157\x74\x20\163\x69\147\x6e\40\x79\x6f\165\40\151\156\56\40\x50\154\145\141\163\x65\40\x63\157\x6e\x74\x61\143\164\x20\171\157\x75\x72\40\x41\x64\155\151\x6e\151\163\164\x72\x61\x74\157\x72\56";
        die;
        Px:
        $v7["\147\162\157\165\x70\x73"][] = $UI;
        uM:
        uE:
        jimport("\152\x6f\157\x6d\154\x61\56\x61\x70\x70\x6c\151\x63\141\164\x69\x6f\156\x2e\x63\x6f\x6d\x70\x6f\156\x65\156\164\x2e\155\x6f\144\145\154");
        if (defined("\x4a\120\101\x54\110\x5f\x43\x4f\x4d\120\x4f\x4e\x45\116\124")) {
            goto js;
        }
        define("\x4a\x50\x41\124\110\137\103\117\x4d\x50\x4f\x4e\x45\116\124", JPATH_BASE . "\57\143\157\x6d\160\157\x6e\x65\x6e\x74\x73\x2f");
        js:
        $user = new JUser();
        if ($user->bind($v7)) {
            goto eF;
        }
        throw new Exception("\x43\157\x75\x6c\144\x20\156\x6f\164\40\142\151\156\144\40\x64\x61\x74\x61\x2e\x20\105\x72\x72\x6f\162\x3a\40" . $user->getError());
        eF:
        if ($user->save()) {
            goto FM;
        }
        throw new Exception("\103\x6f\165\154\144\x20\156\157\x74\x20\163\x61\166\145\x20\165\x73\x65\162\x2e\x20\105\162\x72\157\x72\72\x20" . $user->getError());
        FM:
        $Mh = Utilities::get_user_from_joomla($zK, $C4, $vl);
        if (!$Mh) {
            goto Rp;
        }
        $user = JUser::getInstance($Mh->id);
        $this->updateUserProfileAttributes($user->id, $vM, $qf);
        $hz = JFactory::getSession();
        $hz->set("\x75\x73\145\x72", $user);
        $hz->set("\115\x4f\x5f\x53\x41\x4d\x4c\x5f\x4e\x41\x4d\105\111\x44", $vM["\101\123\123\105\x52\x54\x49\x4f\116\137\x4e\x41\x4d\x45\x5f\x49\x44"]);
        $hz->set("\x4d\117\137\123\101\115\x4c\137\x53\x45\123\x53\111\x4f\x4e\137\111\116\x44\x45\x58", $vM["\x41\x53\x53\105\x52\124\111\117\116\x5f\x53\x45\123\x53\111\117\x4e\x5f\111\x4e\104\x45\130"]);
        $hD->checkSession();
        $sO = $hz->getId();
        Utilities::updateUsernameToSessionId($user->id, $user->username, $sO);
        $user->setLastVisit();
        $AX = $user->authorise("\x63\x6f\x72\145\56\x6c\x6f\x67\x69\156\56\x61\x64\x6d\x69\x6e");
        if ($AX) {
            goto d0;
        }
        $hD->redirect(urldecode($Jb), "\x57\x65\154\143\x6f\x6d\x65\x20{$user->username}", "\x6d\x65\163\x73\x61\x67\145");
        goto pK;
        d0:
        $this->loginIntoAdminDashboardIfEnabled($Jb, $user->username, $hz, $hD, true);
        pK:
        Rp:
    }
    function updateUserProfileAttributes($JT, $vM, $qf)
    {
        $Cx = Utilities::get_user_profile_data($vM, $qf);
        $EG = array();
        $EG = Utilities::get_user_profile_data_from_table($JT);
        if (!(isset($Cx) && !empty($Cx))) {
            goto QD;
        }
        $vL = Utilities::selectMaxOrdering($JT);
        $aB = JFactory::getDbo();
        foreach ($Cx as $Cb) {
            $TS = $Cb["\160\x72\157\146\x69\x6c\x65\x5f\153\145\x79"];
            $qH = $Cb["\160\x72\157\146\151\x6c\x65\x5f\166\x61\x6c\165\x65"];
            if (in_array($TS, $EG)) {
                goto JC;
            }
            $HA = $aB->getQuery(true);
            $wl = array("\x75\x73\145\162\137\x69\x64", "\x70\162\157\x66\151\x6c\x65\x5f\153\x65\x79", "\x70\x72\x6f\x66\x69\x6c\145\x5f\166\x61\154\x75\x65", "\157\x72\144\145\x72\x69\x6e\147");
            $V5 = array($JT, $aB->quote($TS), $aB->quote($qH), ++$vL);
            $HA->insert($aB->quoteName("\43\137\137\165\163\x65\x72\x5f\x70\x72\157\146\151\154\145\163"))->columns($aB->quoteName($wl))->values(implode("\x2c", $V5));
            $aB->setQuery($HA);
            $aB->execute();
            goto GS;
            JC:
            $HA = $aB->getQuery(true);
            $PC = array($aB->quoteName("\160\162\x6f\146\x69\154\145\137\166\141\x6c\x75\145") . "\x20\x3d\x20" . $aB->quote($qH));
            $DH = array($aB->quoteName("\165\163\145\162\137\x69\144") . "\40\75\x20" . $aB->quote($JT), $aB->quoteName("\x70\x72\157\146\151\x6c\145\x5f\153\x65\171") . "\x20\x3d\x20" . $aB->quote($TS));
            $HA->update($aB->quoteName("\43\137\137\x75\163\145\x72\x5f\x70\162\x6f\x66\x69\x6c\145\x73"))->set($PC)->where($DH);
            $aB->setQuery($HA);
            $Mh = $aB->query();
            GS:
            pe:
        }
        XR:
        QD:
    }
    function addOrRemoveUserFromGroup($K3, $UI, $user)
    {
        if (empty($K3)) {
            goto aV;
        }
        $Gm = 1;
        foreach ($K3 as $IE) {
            JUserHelper::addUserToGroup($user->id, $IE);
            if (!$Gm) {
                goto K9;
            }
            foreach ($user->groups as $rU) {
                if (!($rU != $IE)) {
                    goto BU;
                }
                JUserHelper::removeUserFromGroup($user->id, $rU);
                BU:
                hG:
            }
            Tz:
            $Gm = 0;
            K9:
            H9:
        }
        e_:
        goto cM;
        aV:
        JUserHelper::addUserToGroup($user->id, $UI);
        foreach ($user->groups as $rU) {
            if (!($rU != $UI)) {
                goto Sy;
            }
            JUserHelper::removeUserFromGroup($user->id, $rU);
            Sy:
            Uj:
        }
        iq:
        cM:
    }
    function getSamlLogoutResponse($M4)
    {
        $wH = new DOMDocument();
        $M4 = str_replace("\x26", "\x26\141\x6d\x70\x3b", $M4);
        $wH->loadXML($M4);
        $rG = $wH->firstChild;
        if (!($rG->localName == "\114\x6f\147\157\165\164\x52\145\163\x70\157\156\163\145")) {
            goto sS;
        }
        $hD = JFactory::getApplication("\x73\x69\164\145");
        $tR = JURI::root();
        if (!isset($_REQUEST["\122\145\x6c\x61\171\x53\164\x61\164\x65"])) {
            goto jT;
        }
        $tR = $_REQUEST["\122\x65\x6c\x61\171\123\x74\x61\164\x65"];
        jT:
        $zr = strpos($tR, "\x3f");
        if (!($zr !== false)) {
            goto rv;
        }
        $tR = substr($tR, 0, $zr);
        rv:
        $hD->redirect($tR);
        sS:
    }
    function loginIntoAdminDashboardIfEnabled($Jb, $C4, $hz, $hD, $h2)
    {
        $Yi = Utilities::getCustomerDetails();
        $JY = $Yi["\x65\x6e\141\x62\154\145\x5f\141\144\155\151\156\x5f\154\157\147\x69\x6e"];
        if ($JY) {
            goto wo;
        }
        if ($h2) {
            goto zL;
        }
        $hD->redirect(urldecode($Jb));
        goto Gy;
        zL:
        $hD->redirect(urldecode($Jb), "\x57\x65\154\143\157\155\145\40{$C4}", "\x6d\x65\163\x73\x61\147\x65");
        Gy:
        goto Uf;
        wo:
        $kB = time();
        $gv = $Yi["\141\160\151\137\x6b\x65\171"];
        $rx = $kB . "\x3a" . $gv . "\x3a" . $C4;
        $ax = $Yi["\143\165\163\164\157\155\x65\x72\x5f\164\157\x6b\x65\x6e"];
        $rx = AESEncryption::encrypt_data($rx, $ax);
        $fc = $kB + 30;
        $nM = setcookie("\155\x6f\x73\x61\x6d\154\162\x65\x64\151\162\145\143\x74", $rx, $fc, "\x2f");
        $iI = $hz->get("\115\x4f\x5f\x53\101\x4d\x4c\x5f\116\x41\115\x45\x49\104");
        $ao = $hz->set("\115\117\x5f\123\x41\x4d\114\137\x53\105\x53\x53\x49\x4f\x4e\x5f\111\116\104\x45\x58");
        $rx = $ao . "\72" . $iI;
        $rx = AESEncryption::encrypt_data($rx, $ax);
        $nM = setcookie("\x5f\155\x6f\163\x65\x73\163\x69\157\156", $rx, $fc, "\57");
        $GF = JURI::base();
        $TB = $GF . "\141\144\x6d\151\156\x69\163\x74\x72\141\x74\157\162";
        $hD->redirect($TB);
        Uf:
    }
    function generateMetadata($gT)
    {
        $aq = '';
        $jn = '';
        if (!isset($gT["\x73\x70\137\142\141\x73\145\137\165\162\154"])) {
            goto RN;
        }
        $aq = $gT["\163\160\137\x62\x61\x73\x65\137\165\162\x6c"];
        $jn = $gT["\163\160\x5f\145\156\x74\151\164\x79\x5f\x69\144"];
        RN:
        $lM = JURI::root();
        if (!empty($aq)) {
            goto w2;
        }
        $aq = $lM;
        w2:
        if (!empty($jn)) {
            goto n3;
        }
        $jn = $lM . "\x70\x6c\x75\x67\x69\156\163\x2f\x61\x75\x74\x68\x65\156\x74\151\x63\141\164\151\x6f\156\57\x6d\x69\x6e\x69\x6f\x72\141\156\x67\145\x73\141\x6d\154\57";
        n3:
        $FO = $aq . "\77\155\157\162\145\161\165\145\163\x74\75\141\x63\x73";
        $Y4 = $aq . "\x69\x6e\144\x65\x78\x2e\x70\x68\x70\77\x6f\160\164\151\157\156\x3d\x63\157\x6d\137\165\163\x65\x72\x73\x26\141\x6d\160\x3b\164\141\163\x6b\75\154\x6f\x67\157\165\x74";
        $cE = JPATH_BASE . DIRECTORY_SEPARATOR . "\x70\154\165\147\x69\156\163" . DIRECTORY_SEPARATOR . "\x61\165\164\x68\145\x6e\x74\x69\143\x61\164\x69\x6f\x6e" . DIRECTORY_SEPARATOR . "\155\151\x6e\x69\x6f\x72\x61\x6e\x67\x65\163\x61\x6d\x6c" . DIRECTORY_SEPARATOR . "\163\x61\x6d\154\62" . DIRECTORY_SEPARATOR . "\x63\145\x72\164" . DIRECTORY_SEPARATOR . "\163\x70\55\143\x65\x72\x74\x69\x66\x69\143\141\x74\x65\56\143\162\164";
        $cE = file_get_contents($cE);
        $cE = Utilities::desanitize_certificate($cE);
        header("\103\157\x6e\164\x65\x6e\x74\x2d\124\x79\x70\145\x3a\x20\164\x65\x78\164\57\x78\155\x6c");
        echo "\74\x3f\170\155\x6c\x20\x76\145\162\x73\151\x6f\x6e\x3d\x22\x31\x2e\60\42\77\x3e\12\11\x9\74\x6d\x64\72\105\156\x74\151\164\171\x44\145\163\x63\162\x69\160\164\157\x72\x20\x78\x6d\154\x6e\163\72\x6d\144\x3d\x22\x75\x72\x6e\x3a\x6f\x61\163\x69\x73\72\x6e\x61\155\x65\x73\72\164\143\x3a\x53\x41\115\x4c\x3a\62\x2e\x30\x3a\x6d\145\x74\x61\x64\141\x74\141\x22\x20\166\x61\x6c\x69\x64\125\156\x74\x69\154\75\42\x32\x30\x32\x30\55\61\x30\55\x32\x38\x54\x32\63\x3a\65\71\72\65\71\132\42\40\x63\141\143\150\145\104\165\x72\x61\164\151\157\x6e\75\42\120\124\61\x34\x34\x36\x38\60\x38\x37\x39\x32\123\42\x20\x65\156\164\151\164\171\111\x44\x3d\x22" . $jn . "\42\76\xa\x9\x9\x20\40\x3c\155\144\x3a\123\120\123\x53\x4f\x44\x65\x73\143\x72\151\160\x74\x6f\x72\x20\101\x75\x74\x68\156\x52\x65\x71\x75\145\x73\x74\163\123\151\x67\x6e\x65\144\75\x22\164\x72\x75\145\42\x20\x57\x61\x6e\164\101\x73\x73\145\x72\164\x69\x6f\156\x73\123\151\147\156\145\144\x3d\x22\x74\162\x75\145\42\x20\x70\x72\x6f\164\157\x63\x6f\154\x53\165\160\x70\157\162\x74\x45\156\165\155\145\162\x61\164\x69\157\156\75\x22\165\162\156\72\157\x61\163\151\163\72\156\x61\x6d\145\x73\72\164\x63\x3a\x53\101\115\114\72\x32\x2e\60\72\x70\x72\x6f\x74\157\143\157\154\42\x3e\xa\x9\x9\11\x3c\155\144\72\x4b\145\171\x44\x65\x73\143\x72\151\160\164\157\162\x20\165\x73\x65\x3d\42\x73\151\147\156\x69\156\147\x22\x3e\12\11\11\x9\40\40\74\144\x73\x3a\113\x65\x79\x49\x6e\146\x6f\40\x78\155\x6c\156\163\72\x64\x73\x3d\42\150\x74\x74\x70\72\57\x2f\x77\167\x77\56\167\63\x2e\x6f\x72\x67\x2f\62\60\60\60\x2f\60\71\57\170\x6d\x6c\x64\163\x69\x67\x23\42\x3e\xa\x9\11\x9\x9\x3c\144\x73\72\130\x35\x30\x39\x44\x61\x74\141\76\xa\x9\11\x9\x9\x20\x20\74\144\163\72\130\65\x30\x39\x43\145\162\164\x69\x66\x69\x63\x61\x74\x65\76" . $cE . "\x3c\57\144\x73\x3a\x58\65\60\71\x43\x65\162\164\151\146\x69\x63\141\x74\145\76\12\x9\x9\x9\x9\x3c\57\144\x73\x3a\130\x35\x30\71\x44\141\164\141\x3e\xa\11\11\x9\x20\x20\x3c\x2f\x64\x73\x3a\113\145\x79\111\156\146\157\x3e\12\11\11\11\74\57\x6d\x64\72\113\x65\171\104\145\163\x63\x72\x69\x70\x74\x6f\x72\76\12\x9\x9\x9\x3c\155\x64\72\113\x65\x79\x44\145\x73\143\x72\x69\x70\164\x6f\x72\x20\165\163\x65\75\x22\x65\x6e\143\162\171\x70\164\x69\x6f\x6e\x22\76\xa\11\x9\11\x20\x20\x3c\144\163\72\x4b\145\171\x49\x6e\x66\x6f\40\x78\155\154\156\163\72\x64\163\75\x22\150\164\x74\160\x3a\x2f\57\167\167\167\56\167\x33\x2e\157\x72\147\x2f\x32\x30\x30\x30\57\x30\71\x2f\x78\155\x6c\144\x73\x69\147\43\x22\x3e\12\11\x9\11\11\74\x64\163\x3a\x58\65\x30\x39\x44\141\164\141\x3e\xa\x9\x9\x9\x9\40\40\x3c\x64\163\72\x58\65\60\x39\x43\145\162\x74\151\146\x69\x63\x61\x74\x65\x3e" . $cE . "\x3c\57\x64\163\x3a\x58\x35\60\71\103\145\162\x74\151\x66\151\x63\141\x74\145\76\xa\x9\x9\x9\x9\74\57\144\x73\72\x58\65\60\71\104\141\164\x61\76\12\11\11\11\40\x20\74\57\144\x73\72\x4b\145\x79\x49\156\146\157\76\xa\x9\x9\x9\x3c\57\x6d\144\x3a\x4b\x65\171\x44\x65\x73\143\162\151\160\164\157\162\x3e\xa\11\x9\x9\x3c\155\x64\72\x53\151\x6e\x67\154\x65\x4c\157\x67\157\x75\164\x53\145\x72\x76\151\x63\145\x20\102\151\156\x64\151\x6e\147\75\42\165\x72\x6e\x3a\x6f\141\163\x69\163\72\156\x61\x6d\145\163\x3a\x74\x63\72\123\x41\115\x4c\72\x32\x2e\60\x3a\x62\151\156\x64\151\x6e\x67\163\x3a\x48\x54\124\120\55\120\117\123\x54\x22\x20\114\157\x63\141\164\151\157\156\x3d\x22" . $Y4 . "\x22\57\76\12\11\11\x9\x3c\155\x64\x3a\123\x69\x6e\x67\154\x65\114\157\x67\x6f\x75\164\x53\145\162\166\x69\x63\145\x20\x42\151\x6e\x64\151\x6e\147\x3d\x22\x75\162\156\x3a\157\x61\163\151\x73\x3a\x6e\x61\155\145\x73\x3a\x74\143\72\x53\x41\115\x4c\x3a\62\56\60\72\x62\151\156\x64\151\156\147\x73\x3a\x48\x54\x54\120\x2d\122\145\x64\151\162\x65\x63\x74\42\x20\114\157\143\141\x74\x69\x6f\x6e\x3d\x22" . $Y4 . "\x22\x2f\76\xa\11\11\x9\x3c\x6d\x64\x3a\x4e\141\155\145\x49\x44\106\x6f\x72\155\141\x74\76\x75\x72\156\72\157\141\x73\x69\163\x3a\156\x61\x6d\x65\x73\x3a\164\143\72\123\x41\x4d\114\72\x31\x2e\61\x3a\x6e\x61\x6d\x65\151\144\55\146\157\162\155\141\x74\x3a\145\x6d\141\151\154\x41\144\144\x72\145\x73\x73\74\57\x6d\144\x3a\116\141\x6d\145\111\104\106\x6f\162\155\x61\164\x3e\xa\x9\11\x9\74\x6d\144\x3a\116\141\155\x65\x49\104\106\x6f\x72\x6d\x61\164\x3e\x75\x72\x6e\72\x6f\141\x73\x69\163\x3a\x6e\x61\155\x65\x73\72\164\143\x3a\x53\101\115\x4c\72\62\56\x30\72\x6e\141\x6d\145\x69\144\55\146\x6f\162\x6d\141\x74\72\x70\x65\x72\163\x69\x73\x74\145\156\x74\x3c\57\155\144\72\116\141\x6d\x65\x49\x44\106\157\x72\155\x61\164\76\12\x9\x9\x9\x3c\155\144\72\116\x61\155\x65\111\104\x46\157\162\x6d\141\164\76\165\162\156\72\x6f\141\163\151\x73\x3a\156\141\155\145\x73\x3a\164\x63\72\x53\101\115\x4c\72\62\x2e\60\x3a\x6e\141\155\x65\x69\144\55\x66\157\x72\x6d\x61\x74\72\x74\x72\141\156\163\151\x65\156\164\74\x2f\155\144\72\x4e\x61\155\145\111\104\106\x6f\x72\x6d\x61\x74\76\xa\x9\11\x9\x3c\155\x64\72\x41\x73\163\145\162\x74\151\x6f\156\103\157\156\163\x75\x6d\x65\x72\x53\145\162\166\x69\143\x65\40\102\151\x6e\x64\151\156\x67\75\x22\x75\x72\156\72\157\x61\163\151\x73\x3a\156\141\155\x65\x73\x3a\x74\143\x3a\123\x41\115\x4c\72\62\56\x30\72\x62\151\156\x64\151\156\x67\x73\x3a\x48\x54\124\120\x2d\120\x4f\x53\124\x22\x20\114\x6f\x63\x61\x74\151\157\x6e\x3d\42" . $FO . "\42\x20\151\156\144\x65\x78\x3d\42\61\x22\57\76\xa\x9\11\40\x20\74\x2f\x6d\x64\x3a\x53\120\123\123\x4f\x44\x65\163\x63\x72\151\160\x74\157\162\x3e\xa\x9\x9\40\x20\74\x6d\x64\72\117\162\147\x61\x6e\x69\x7a\141\x74\151\x6f\156\76\12\11\11\11\x3c\x6d\x64\x3a\x4f\x72\x67\x61\156\151\172\141\x74\151\157\x6e\x4e\141\155\145\40\170\x6d\x6c\72\154\x61\156\x67\75\42\145\x6e\x2d\125\123\42\x3e\155\151\x6e\151\117\162\141\x6e\x67\145\74\x2f\155\144\72\117\x72\147\141\x6e\151\172\141\164\x69\x6f\x6e\116\141\x6d\x65\76\12\x9\x9\11\x3c\x6d\x64\72\x4f\162\147\141\x6e\x69\172\141\x74\151\x6f\156\x44\x69\x73\160\154\x61\x79\x4e\141\155\x65\40\170\155\x6c\x3a\x6c\x61\x6e\147\75\x22\x65\156\55\x55\x53\42\x3e\155\x69\x6e\x69\x4f\162\141\x6e\x67\145\x3c\x2f\x6d\144\x3a\117\x72\x67\141\156\151\x7a\x61\164\x69\x6f\x6e\x44\x69\163\160\154\x61\171\116\141\155\145\76\12\x9\x9\11\x3c\155\144\72\117\162\x67\x61\156\151\172\141\x74\x69\x6f\x6e\x55\122\114\40\170\x6d\x6c\72\x6c\141\x6e\x67\75\42\x65\x6e\x2d\x55\x53\42\76\150\164\164\160\x3a\57\57\x6d\151\x6e\x69\x6f\162\x61\156\x67\145\x2e\143\x6f\155\74\x2f\x6d\144\72\117\162\x67\x61\156\x69\x7a\141\x74\x69\157\156\x55\122\114\76\xa\11\x9\x20\x20\74\57\155\x64\x3a\x4f\x72\147\x61\x6e\151\x7a\x61\164\151\x6f\156\x3e\12\11\x9\40\40\x3c\155\x64\72\x43\157\156\x74\141\x63\x74\x50\145\162\163\x6f\156\x20\x63\157\156\164\x61\x63\x74\x54\x79\160\x65\75\42\x74\x65\x63\150\156\x69\x63\141\x6c\42\x3e\12\11\x9\x9\x3c\155\x64\72\107\x69\166\145\x6e\x4e\141\155\x65\x3e\x6d\151\x6e\x69\x4f\162\x61\x6e\147\145\x3c\x2f\155\144\x3a\107\151\x76\x65\156\116\x61\x6d\145\x3e\12\11\x9\11\x3c\x6d\x64\x3a\x45\155\x61\x69\154\101\144\144\x72\145\163\163\x3e\151\x6e\x66\157\100\x6d\x69\x6e\x69\x6f\x72\x61\156\147\145\56\x63\x6f\x6d\74\x2f\x6d\144\72\105\x6d\x61\151\154\101\x64\x64\162\x65\x73\x73\76\12\x9\x9\40\x20\74\57\155\x64\x3a\103\157\156\164\141\x63\164\120\145\x72\163\157\x6e\76\12\x9\x9\x20\40\x3c\155\144\72\x43\x6f\x6e\164\141\143\164\x50\145\x72\x73\157\156\40\x63\x6f\x6e\x74\x61\x63\x74\x54\171\x70\x65\75\42\x73\165\x70\160\157\162\x74\42\76\12\x9\11\11\74\x6d\144\72\x47\x69\x76\x65\x6e\116\x61\155\x65\76\x6d\x69\156\151\x4f\x72\141\156\x67\145\x3c\x2f\x6d\x64\x3a\x47\x69\166\x65\x6e\116\x61\x6d\145\76\12\x9\11\x9\74\x6d\144\x3a\x45\155\x61\x69\154\x41\x64\x64\x72\145\163\x73\x3e\151\156\146\x6f\x40\x6d\x69\156\x69\157\x72\141\x6e\x67\x65\56\143\157\x6d\x3c\57\155\144\x3a\105\x6d\141\x69\x6c\x41\144\x64\162\x65\x73\163\x3e\12\11\x9\40\x20\74\57\155\144\72\103\x6f\x6e\x74\141\x63\x74\x50\145\162\163\157\156\76\xa\x9\11\x3c\x2f\155\144\72\x45\x6e\x74\151\x74\171\x44\145\163\143\x72\151\160\164\157\162\x3e";
        die;
    }
    function adminDashboardLogin($gT)
    {
        $Yi = Utilities::getCustomerDetails();
        $JY = $Yi["\145\x6e\x61\142\x6c\x65\137\141\144\x6d\151\x6e\x5f\154\157\147\x69\x6e"];
        if (!$JY) {
            goto SU;
        }
        $aq = '';
        $jn = '';
        if (!isset($gT["\163\x70\137\142\141\x73\145\x5f\165\162\x6c"])) {
            goto WJ;
        }
        $aq = $gT["\163\160\x5f\x62\141\163\145\x5f\165\162\154"];
        $jn = $gT["\x73\160\x5f\x65\x6e\164\151\164\171\x5f\x69\x64"];
        WJ:
        $lM = JURI::root();
        if (!empty($aq)) {
            goto wY;
        }
        $aq = $lM;
        wY:
        if (!empty($jn)) {
            goto iD;
        }
        $jn = $lM . "\160\154\165\147\x69\156\163\x2f\x61\165\x74\x68\x65\x6e\164\151\x63\x61\x74\x69\157\156\57\155\x69\156\151\x6f\x72\141\x6e\147\x65\163\141\155\x6c\57";
        iD:
        jimport("\x6d\x69\x6e\151\x6f\x72\141\x6e\x67\x65\x73\141\155\154\160\x6c\x75\x67\151\x6e\x2e\x75\164\x69\x6c\151\164\x79\56\x65\156\x63\x72\171\160\164\x69\157\x6e");
        $rx = $_COOKIE["\x6d\x6f\163\x61\x6d\154\x72\145\144\x69\x72\x65\x63\x74"];
        $BA = $Yi["\143\165\163\164\157\x6d\x65\162\x5f\x74\157\153\145\x6e"];
        $Fv = $Yi["\x61\160\x69\137\153\145\x79"];
        $rx = AESEncryption::decrypt_data($rx, $BA);
        $cw = array();
        $cw = explode("\x3a", $rx);
        $FR = $cw[0];
        $sz = $cw[1];
        $C4 = $cw[2];
        $kB = time();
        if (!($sz == $Fv && $kB - $FR < 30)) {
            goto ta;
        }
        setcookie("\x6d\x6f\163\x61\155\154\162\x65\144\151\x72\x65\x63\164", "\55\61", time() - 100, "\57");
        unset($_COOKIE["\155\157\163\x61\x6d\154\x72\x65\x64\151\162\x65\143\164"]);
        $kB = time();
        $rx = $kB . "\x3a" . $Fv;
        $rx = AESEncryption::encrypt_data($rx, $BA);
        $fc = $kB + 30;
        $nM = setcookie("\155\157\x73\x61\x6d\x6c\x61\165\164\x68\141\144\x6d\x69\156", $rx, $fc, "\x2f");
        $TB = $aq . "\141\144\x6d\x69\156\x69\163\164\162\x61\164\157\x72\57\x69\x6e\x64\145\x78\x2e\x70\x68\x70";
        $rx = $_COOKIE["\137\x6d\157\x73\x65\x73\163\151\157\156"];
        setcookie("\137\x6d\x6f\x73\x65\163\x73\x69\x6f\156", "\55\61", time() - 100, "\57");
        unset($_COOKIE["\137\x6d\157\x73\145\x73\163\x69\157\x6e"]);
        $rx = AESEncryption::decrypt_data($rx, $BA);
        $IW = array();
        $IW = explode("\72", $rx);
        $US = $IW[0];
        $wM = $IW[1];
        $hz = JFactory::getSession();
        $hz->set("\x4d\x4f\137\123\101\x4d\x4c\137\x4e\x41\x4d\105\x49\x44", $wM);
        $hz->set("\x4d\117\137\123\101\x4d\x4c\137\123\x45\x53\123\111\117\116\137\x49\116\104\x45\130", $US);
        echo "\74\146\157\x72\155\x20\151\144\x3d\42\155\x6f\163\x61\x6d\154\x5f\141\144\155\x69\x6e\154\157\147\x69\156\x66\x6f\162\x6d\42\40\141\143\164\151\x6f\156\75\42" . $TB . "\x22\x20\x6d\x65\x74\150\157\144\75\42\160\157\x73\x74\42\x3e\12\x9\x9\x9\11\x9\x3c\x69\x6e\x70\x75\164\x20\164\171\x70\x65\x3d\x22\x68\151\144\x64\x65\x6e\42\x20\156\141\155\145\75\42\x75\163\145\x72\156\141\x6d\145\42\40\166\141\x6c\165\x65\x3d\42" . $C4 . "\x22\x20\x2f\x3e\xa\11\x9\11\11\11\74\151\x6e\160\x75\x74\40\x74\171\x70\x65\x3d\42\150\151\x64\x64\x65\156\x22\40\x6e\141\x6d\x65\75\x22\160\x61\163\163\x77\144\x22\40\166\141\154\x75\145\x3d\42\160\141\163\163\167\144\x22\x20\x2f\76\xa\x9\11\11\11\x9\74\x69\156\x70\165\164\x20\x74\x79\x70\145\x3d\42\150\151\x64\x64\x65\156\x22\x20\156\141\155\x65\x3d\42\x6f\x70\x74\x69\157\x6e\x22\40\x76\141\x6c\x75\145\75\x22\x63\x6f\155\137\154\157\147\x69\156\42\x3e\xa\x9\x9\11\x9\x9\x3c\x69\156\160\x75\x74\x20\164\x79\160\x65\75\42\150\151\144\x64\145\x6e\x22\40\156\141\x6d\x65\x3d\42\164\x61\x73\153\42\x20\x76\x61\154\165\x65\75\x22\x6c\x6f\147\x69\156\42\x3e\12\11\11\11\x9\11\x3c\x69\x6e\160\165\x74\x20\164\x79\x70\145\75\42\150\151\x64\144\x65\156\x22\40\x6e\141\155\145\x3d\x22\162\x65\164\165\x72\156\x22\40\166\x61\154\x75\145\75\x22\x61\x57\65\153\132\130\147\x75\x63\x47\150\x77\x22\x3e" . JHtml::_("\146\x6f\162\155\56\x74\157\153\x65\x6e") . "\x3c\57\x66\x6f\x72\155\76\12\11\x9\11\x9\74\x73\x63\x72\x69\160\164\x3e\12\11\11\11\x9\x9\x73\145\164\124\x69\x6d\x65\157\165\164\50\146\165\x6e\x63\x74\x69\157\156\50\x29\173\12\11\x9\x9\x9\11\11\x64\x6f\x63\165\x6d\145\x6e\x74\x2e\147\145\x74\105\154\x65\x6d\x65\156\x74\x42\x79\x49\x64\x28\42\155\x6f\163\141\155\x6c\137\x61\x64\155\x69\156\x6c\x6f\x67\151\x6e\146\157\x72\x6d\42\x29\x2e\163\165\x62\x6d\151\x74\50\x29\73\xa\11\x9\11\x9\x9\175\54\40\x31\60\x30\51\x3b\x9\xa\11\x9\11\x9\x3c\57\163\143\x72\151\160\164\76";
        die;
        ta:
        SU:
    }
    function autoRedirect($Uo)
    {
        $user = JFactory::getUser();
        $hD = JFactory::getApplication("\163\151\x74\145");
        $hD->initialise();
        if ($hD->isAdmin()) {
            goto Jj;
        }
        if ($user->id) {
            goto zT;
        }
        $this->redirectToIDP($Uo);
        zT:
        Jj:
    }
    function redirectToIDP($Uo)
    {
        $Km = $Uo["\163\151\x6e\147\154\145\x5f\x73\151\x67\x6e\157\156\137\163\x65\162\166\151\143\x65\x5f\x75\x72\x6c"];
        if (!empty($Km)) {
            goto X5;
        }
        return;
        X5:
        $aq = '';
        $jn = '';
        if (!isset($Uo["\163\x70\x5f\142\x61\163\145\137\x75\162\x6c"])) {
            goto C2;
        }
        $aq = $Uo["\x73\x70\x5f\x62\x61\163\x65\137\165\162\154"];
        $jn = $Uo["\x73\160\x5f\145\x6e\164\151\x74\x79\x5f\x69\x64"];
        C2:
        $lM = JURI::root();
        if (!empty($aq)) {
            goto Ys;
        }
        $aq = $lM;
        Ys:
        if (!empty($jn)) {
            goto VH;
        }
        $jn = $lM . "\160\x6c\x75\147\151\x6e\163\57\x61\x75\x74\x68\145\156\164\151\x63\x61\164\x69\x6f\156\57\155\151\x6e\151\x6f\162\x61\156\x67\x65\163\141\x6d\x6c\x2f";
        VH:
        $JU = !empty($_SERVER["\110\124\x54\120\123"]) && $_SERVER["\x48\124\124\x50\123"] !== "\157\x66\x66" || $_SERVER["\123\x45\122\x56\105\x52\x5f\x50\x4f\x52\124"] == 443 ? "\150\x74\x74\x70\x73\72\x2f\57" : "\x68\x74\164\x70\72\x2f\x2f";
        $XH = $JU . "{$_SERVER["\x48\x54\x54\120\137\110\x4f\123\x54"]}{$_SERVER["\122\x45\121\x55\105\123\124\137\125\x52\111"]}";
        $sW = $aq . "\x3f\x6d\157\x72\x65\161\x75\x65\163\x74\x3d\x73\x73\157\x26\122\x65\x6c\x61\171\x53\164\141\164\145\x3d" . urlencode($XH);
        header("\114\157\x63\141\x74\x69\x6f\x6e\72\x20" . $sW);
        die;
    }
    function show_error_message($Hu, $XH)
    {
        if ($XH == "\x74\145\x73\164\126\x61\x6c\x69\x64\141\x74\x65") {
            goto y1;
        }
        if ($Hu == "\122\x65\x71\x75\x65\163\x74\x44\145\x6e\x69\x65\144") {
            goto nu;
        }
        echo "\x57\145\40\x63\157\165\154\144\40\156\x6f\164\40\163\x69\x67\156\x20\171\157\x75\x20\x69\156\56\x20\x50\154\145\x61\x73\145\x20\143\157\156\164\141\x63\164\x20\171\x6f\x75\162\40\101\144\155\151\156\151\163\x74\162\141\164\157\x72\x2e";
        die;
        goto p_;
        nu:
        echo "\x59\x6f\x75\x20\x61\162\x65\40\156\157\164\x20\141\154\x6c\x6f\x77\145\x64\x20\x74\x6f\40\x6c\x6f\147\151\x6e\x20\x69\x6e\x74\157\x20\164\150\x65\x20\163\151\x74\145\x2e\x20\120\154\145\x61\163\145\x20\143\157\x6e\164\x61\143\x74\40\x79\x6f\165\x72\40\101\144\155\151\156\x69\x73\164\162\x61\x74\157\x72\x2e";
        die;
        p_:
        goto Fl;
        y1:
        echo "\74\144\151\166\40\163\164\171\154\x65\x3d\x22\146\157\156\164\x2d\x66\x61\x6d\x69\x6c\x79\x3a\103\141\154\x69\x62\162\151\x3b\160\141\x64\x64\x69\x6e\x67\72\60\x20\63\45\x3b\42\x3e";
        echo "\x3c\144\x69\166\x20\163\164\x79\x6c\145\75\x22\143\157\x6c\157\162\72\40\x23\141\71\x34\64\x34\62\x3b\142\x61\143\x6b\x67\162\x6f\x75\156\x64\55\x63\157\154\x6f\162\x3a\x20\x23\146\62\144\x65\x64\x65\73\160\141\144\x64\x69\156\147\72\x20\x31\65\x70\170\x3b\x6d\x61\162\x67\x69\156\x2d\142\157\164\164\157\x6d\72\x20\x32\60\160\170\x3b\x74\145\170\x74\x2d\141\154\x69\x67\156\x3a\143\x65\x6e\x74\145\162\73\x62\157\162\x64\145\x72\72\61\160\170\40\x73\x6f\x6c\x69\x64\x20\x23\105\66\x42\63\102\62\x3b\146\x6f\x6e\164\55\x73\x69\172\x65\72\61\x38\x70\x74\73\42\76\40\x45\x52\x52\x4f\122\74\57\x64\151\166\76\xa\x9\11\11\x3c\x64\151\x76\x20\x73\x74\x79\154\145\x3d\x22\143\x6f\154\x6f\x72\x3a\40\x23\x61\71\64\64\64\62\x3b\x66\x6f\x6e\164\x2d\x73\x69\x7a\x65\x3a\61\x34\x70\x74\x3b\x20\155\x61\162\x67\x69\156\55\x62\x6f\x74\164\157\155\x3a\62\60\x70\170\x3b\x22\x3e\x3c\x70\x3e\x3c\163\164\x72\x6f\x6e\147\76\105\162\x72\157\162\x3a\40\x3c\57\x73\x74\162\157\x6e\x67\76\40\x49\x6e\166\x61\x6c\x69\x64\40\123\x41\x4d\x4c\x20\122\145\x73\160\x6f\156\163\145\40\x53\x74\141\x74\165\x73\x2e\x3c\57\160\76\12\11\11\11\x3c\x70\x3e\x3c\163\164\x72\x6f\156\147\76\x43\x61\x75\x73\145\163\x3c\57\x73\164\162\157\156\147\x3e\72\x20\x49\144\x65\156\x74\x69\x74\x79\40\x50\x72\157\166\x69\144\x65\162\x20\x68\x61\163\40\x73\x65\156\164\40\47" . $Hu . "\x27\40\x73\164\141\x74\165\x73\x20\143\157\144\x65\40\151\x6e\40\123\101\x4d\114\x20\x52\x65\x73\x70\157\x6e\163\x65\x2e\x20\x3c\x2f\160\x3e\12\11\11\11\x9\x9\x9\x9\74\x70\76\x3c\163\164\x72\x6f\156\147\x3e\122\x65\141\163\157\x6e\74\x2f\163\164\162\x6f\156\x67\76\72\40" . $this->get_status_message($Hu) . "\x3c\57\x70\x3e\x3c\142\162\76\12\11\11\11\x3c\x2f\144\151\166\76\xa\12\11\11\11\74\x64\x69\x76\40\163\164\x79\154\x65\75\42\x6d\141\x72\x67\151\x6e\x3a\63\45\x3b\x64\x69\163\x70\x6c\141\171\72\x62\154\157\143\x6b\x3b\164\x65\170\x74\x2d\x61\x6c\151\x67\x6e\x3a\x63\x65\156\164\x65\x72\73\42\76\xa\11\11\x9\74\x64\x69\x76\40\163\x74\171\154\145\x3d\x22\155\141\162\x67\x69\x6e\x3a\x33\45\x3b\144\151\x73\160\154\141\171\72\142\154\x6f\x63\x6b\x3b\x74\x65\170\x74\x2d\x61\154\151\x67\x6e\72\x63\x65\x6e\164\x65\x72\73\x22\76\x3c\x69\156\x70\165\x74\40\x73\x74\x79\x6c\x65\75\42\x70\141\144\x64\151\156\x67\72\61\x25\73\167\x69\x64\x74\150\x3a\61\60\60\x70\x78\x3b\x62\x61\x63\153\x67\x72\157\x75\156\x64\72\40\43\x30\x30\x39\61\103\104\x20\x6e\157\156\x65\40\x72\x65\160\x65\x61\x74\x20\163\143\162\157\154\154\40\x30\45\x20\60\45\x3b\143\x75\x72\x73\157\162\72\x20\160\157\x69\x6e\x74\x65\162\x3b\x66\x6f\x6e\164\55\163\x69\172\145\x3a\61\65\x70\170\73\x62\x6f\x72\144\145\x72\55\167\151\x64\164\x68\72\40\x31\160\x78\x3b\x62\x6f\x72\144\145\162\x2d\163\164\171\154\145\x3a\x20\x73\x6f\x6c\151\x64\x3b\x62\157\x72\x64\x65\x72\55\162\141\144\151\x75\163\x3a\40\x33\160\170\73\167\x68\151\164\x65\55\163\x70\x61\x63\x65\x3a\40\156\157\x77\x72\141\160\73\x62\157\170\55\163\151\x7a\151\x6e\x67\x3a\40\142\157\x72\x64\x65\162\55\142\x6f\170\73\x62\x6f\x72\x64\145\162\55\143\157\154\157\x72\72\40\43\60\60\67\63\101\x41\x3b\x62\x6f\170\55\163\150\141\x64\157\x77\72\40\x30\160\x78\40\x31\x70\170\x20\60\x70\x78\40\162\147\x62\141\50\x31\62\60\x2c\40\x32\x30\60\x2c\40\x32\63\x30\x2c\x20\60\56\66\51\x20\x69\x6e\x73\x65\164\x3b\x63\157\x6c\x6f\162\x3a\40\43\x46\106\x46\x3b\x22\x74\x79\160\145\75\x22\x62\165\x74\x74\157\156\x22\x20\166\x61\x6c\x75\145\x3d\x22\104\x6f\x6e\x65\42\40\157\x6e\103\x6c\x69\x63\153\75\x22\x73\x65\154\146\x2e\x63\154\x6f\x73\x65\50\51\x3b\x22\x3e\x3c\x2f\x64\x69\x76\76";
        die;
        Fl:
    }
    function get_status_message($Hu)
    {
        switch ($Hu) {
            case "\x52\x65\161\x75\x65\163\x74\104\145\156\x69\x65\x64":
                return "\x59\x6f\165\x20\141\162\x65\40\x6e\157\164\x20\x61\x6c\154\157\x77\x65\144\x20\164\157\x20\154\x6f\x67\x69\x6e\x20\x69\x6e\164\157\x20\x74\150\145\40\x73\x69\164\145\x2e\x20\x50\x6c\145\x61\x73\145\40\x63\x6f\x6e\x74\141\x63\164\40\x79\x6f\x75\162\40\x41\144\x6d\x69\x6e\x69\163\x74\162\x61\x74\157\x72\56";
                goto Ny;
            case "\122\145\161\x75\145\163\x74\145\x72":
                return "\124\x68\145\x20\162\x65\x71\165\x65\x73\x74\40\x63\x6f\x75\154\144\x20\156\157\x74\x20\142\145\x20\x70\145\x72\146\x6f\x72\x6d\145\x64\x20\144\x75\x65\40\x74\x6f\40\141\x6e\x20\145\162\162\x6f\x72\40\x6f\156\x20\164\150\145\x20\x70\141\x72\x74\x20\x6f\146\x20\x74\x68\145\40\162\x65\x71\165\145\x73\x74\145\x72\56";
                goto Ny;
            case "\122\145\x73\x70\x6f\x6e\x64\145\x72":
                return "\124\150\145\40\162\145\x71\165\145\x73\164\x20\143\x6f\165\x6c\x64\40\156\x6f\164\x20\142\x65\40\x70\x65\x72\146\157\x72\155\x65\144\40\x64\x75\x65\40\164\x6f\40\141\x6e\40\x65\162\x72\157\162\x20\157\156\x20\164\150\x65\40\x70\x61\162\164\x20\157\x66\40\x74\x68\x65\40\x53\101\x4d\x4c\40\x72\x65\x73\x70\x6f\156\144\x65\162\40\157\162\x20\x53\x41\x4d\114\x20\x61\x75\164\x68\x6f\x72\x69\164\171\x2e";
                goto Ny;
            case "\126\x65\162\x73\151\157\x6e\115\x69\x73\x6d\141\164\143\x68":
                return "\x54\x68\x65\40\123\101\x4d\114\40\x72\145\x73\160\x6f\156\x64\x65\162\40\143\157\165\154\x64\40\156\x6f\164\x20\x70\x72\157\x63\x65\x73\x73\x20\164\150\x65\40\162\145\x71\165\x65\x73\164\40\x62\x65\x63\x61\x75\x73\x65\40\164\x68\145\40\166\145\x72\x73\151\x6f\x6e\x20\x6f\146\40\164\150\145\x20\x72\x65\161\165\145\163\x74\40\x6d\x65\163\163\141\147\x65\40\167\141\163\40\x69\156\143\x6f\162\162\145\x63\x74\x2e";
                goto Ny;
            default:
                return "\125\156\x6b\x6e\x6f\x77\x6e";
        }
        NB:
        Ny:
    }
}

Function Calls

None

Variables

None

Stats

MD5 fa4e78362c99b32f7fe81c9fac13e93e
Eval Count 0
Decode Time 115 ms