<meta name='viewport' content='width=device-width, initial-scale=1.0'><style>@font-face {
    font-family: 'Palanquin Dark';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(pictures/atlantus.woff2) format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }
body
{
	overflow:hidden;
    position: fixed;
    font-family: 'Palanquin Dark', sans-serif;
    background: linear-gradient( 
45deg
 , black, #03050e, #0d112f);
    
            
	color:white;
	margin: 0px;
	left: 0px;
	top:0px;
	height: 100%;
	width:100%;
}

.notification
{
        width: 90%;
    text-align: center;
    position: relative;
    background: linear-gradient(
45deg
, #3f51b5, #9c27b0);
    border-radius: 5px;
    position: absolute;
    left: 50%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    height: 35px;
    padding-top: 5px;
    display:none;
    z-index: 2;
    top: 176%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

#logsview
{
	    position: absolute;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    top: 74%;
    left: 50%;
    height: 40px;
    font-size: 11px;
    width: 200px;
    text-align: center;
    color: #ccc;
    overflow:scroll;
}
#connecting
{   
  display:  none;
    margin-left: 7px;
    color: #75a2c5;
}
#connected
{
	display:none;
    color: #7fffdc;
}
.lds-ring {
 display: inline-block;
    position: absolute;
    display:none;
    top: -13px;
    left: -13px;
}
.lds-ring div {
      box-sizing: border-box;
    display: block;
    position: absolute;
    width: 160px;
    height: 161px;
    margin: 8px;
    border: 8px solid #1f312f;
    border-radius: 50%;
    animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
    border-color: #cddc39 #cddc3999 #cddc3940 #00968830;
}
.lds-ring div:nth-child(1) {
  animation-delay: -0.45s;
}
.lds-ring div:nth-child(2) {
  animation-delay: -0.3s;
}
.lds-ring div:nth-child(3) {
  animation-delay: -0.15s;
}
@keyframes lds-ring {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.lds-dual-ring {
 display: inline-block;
    width: 80px;
    height: 80px;
    position: absolute;
    margin-left: -35px;
    margin-top: 1px;
}
.lds-dual-ring:after {
  content: " ";
    display: block;
    width: 17px;
    height: 17px;
    margin: 8px;
    border-radius: 50%;
    border: 2px solid #fff;
    border-color: #fff #fff5f536 #fff white;
    animation: lds-dual-ring 1.2s linear infinite;
}
@keyframes lds-dual-ring {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}


.flagserver
{
	   height: 44px;
    position: absolute;
    left: 11px;
    top: 10px;
}
.substatus
{
    display: inline-block;
    font-size: 16px;
    position: relative;
    left: 7px;
    top: 0px;
}
.statusserver
{
	    position: absolute;
    width: 100%;
    top: 62px;
    font-size: 18px;
    color: #9e9e9e;
    display: inline-block;
    left: 0px;
}
.arrowserver
{
	  position: absolute;
    right: 13px;
    height: 18px;
    top: 24px;
    filter: invert(1);
}

.descserver
{
	width: 59%; 
	text-align: left;
	 height: 22px;
	 white-space: nowrap;
	  overflow: hidden;
	 text-overflow: ellipsis;
	 position: absolute;
    top: 31px;
	  font-size: 13px;
	   left: 77px;
	    color: #ccc;
}

.nameserver
{
	position: absolute;
    top: 5px;
    font-size: 19px;
    width: 64%;
    text-align: left;
    left: 77px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.selectedserver
{
	  background: #0c1029;
    width: 330px;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    left: 50%;
    height: 50px;
    border-radius: 19px;
    top: 143px;
    padding: 9px;
    position: absolute;
}

#menuexpand
{
	    position: absolute;
    left: 0px;
    height: 100%;
    bottom: 0px;
    display: none;
    width: 300px;
    background: #1e2532;
    z-index: 4;
    border-bottom-right-radius: 20px;
    border-top-right-radius: 20px;
}

.presshere
{
    position: absolute;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    top: 69%;
    left: 50%;
    font-size: 20px;
    width: 330px;
    text-align: center;
}

.connectbt
{
height: 150px;
    width: 150px;
    background: #fdfdfd url(pictures/power.svg);
    border-radius: 100%;
    border: 5px solid #bd89012b;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    position: absolute;
    opacity: 0.86;
    background-size: 68px;
    background-repeat: no-repeat;
    background-position: 41px;
    filter: invert(1);
    top: 52%;
    left: 50%;
    z-index: 1;
}

.freeimg
{
	height: 40px;
    width: 40px;
    background: #ffffff4d url(pictures/crown.png);
    background-repeat: no-repeat;
    background-position: 5px;
    border-radius: 60px;
    position: absolute;
    top: 9px;
    left: 6px;
}

.freetxtsmall
{
	    position: absolute;
    left: 58px;
    top: 26px;
    color: #ccc;
    font-size: 12px;
}
.freetxt
{
	position: absolute;
    left: 58px;
    top: 4px;
    font-size: 17px;
}

.header
{
	position: fixed;
    top: 57px;
	 left: 0px; 
	 width: 100%;
	 z-index:3;
	 text-align: center;
}

.startfree
{
    width: 300px;
    height: 60px;
    background: #4b0e79;
    position: absolute;
    left: 50%;
    bottom: 27px;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    border-radius: 10px;
}

.centerbody
{
    background: url(pictures/map.png);
    position: absolute;
    opacity: 0.1;
    height: 495px;
    width: 100%;
    z-index: 1;
    left: 50%;
    background-size: 200% 100%;
    background-position-x: -120px;
    top: 49%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

#application
{
    display: none;
}
.menuiconx
{
	    position: absolute;
    right: 19px;
    filter: invert(1);
    top: 44px;
    height: 24px;
}

#appname
{
    font-size: 26px;
    color: #03a9f4;
    text-transform: uppercase;
}

.pingserver
{
	 position: absolute;
    right: 14px;
    font-size: 13px;
    color: #ccc;
}

.premiumserver
{
	display:none;
}

.bronzeserver
{
	display: none;
}

.freeserver
{
}

.goldserver
{
	display: none;
}

.recommendserver
{
	display: none;
}

.greenping
{
	  background: #49ff50;
    width: 5px;
    height: 13px;
    position: absolute;
    right: -8px;
    border-radius: 55px;
    top: 7px;
}
.svbubble
{
	background: #0c1029;
    width: 88%;
    transform: translate(-50%, 0%);
    left: 45%;
    height: 50px;
    border-radius: 19px;
    top: 6px;
    margin-bottom: 7px;
    padding: 9px;
    position: relative;
}

.typeserver
{
    position: relative;
    width: 100%;
    text-align: left;
    padding-left: 20px;
    top: 20px;

}
.userprofile
{
	    background: url(pictures/149071.png);
    position: relative;
    height: 80px;
    width: 220px;
    background-size: 80px 80px;
    border-bottom: 1px solid #2b3548;
    background-repeat: no-repeat;
    left: 40px;
    top: 100px;
    padding-bottom: 50px;
    background-position-x: 65px;
}

#serverlist
{
	    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    position: absolute;
    top: 899%;
    left: 50%;
    display: none;
    overflow-x: hidden;
    overflow-y: scroll;
    width: 100%;
    height: 400px;
    padding-bottom: 100px;
}

.userid
{
	    position: absolute;
    bottom: 8px;
    width: 100%;
    text-align: center;
    font-size: 12px;
    color: #909090;
}

.userexp
{
	    position: absolute;
        bottom: 23px;
    color: #8e8e8e;
    width: 100%;
    text-align: center;
    font-size: 12px;
}
.menulist
{
	position: absolute;
    color: #adadaf;
    top: 275px;
    left: 52px;
}
.menuicon
{
	position: absolute;
    left: 19px;
    filter: invert(1);
    top: 11px;
    height: 24px;
}

.menutxt
{
	    position: relative;
    margin-bottom: 30px;
}
.rightbt
{
	 position: absolute;
    right: 5px;
    padding: 7px;
    border-radius: 5px;
    width: 62px;
    top: 5px;
    padding-right: 8px;

}

.menuicond
{
	 position: absolute;
    height: 18px;
    left: -27px;
    top: 6px;
    filter: invert(1);
    opacity: 0.77;
}
.crowimg
{
    height: 18px;
    position: absolute;
    left: 5px;
    top: 9px;
}

.activebt
{
    position: relative;
    top: 14px;
    padding: 5px;
    background: #3f51b5;
    width: 100px;
    left: 106px;
    border-radius: 5px;
}
.textboost
{
    font-size: 14px;
        color: #e6e6e6;
}
.titleboost
{
    margin-top: -59px;
        font-size: 24px;
        color: #ffa382;
}
.bodyboost
{
    position: absolute;
    left: 50%;
    top: 48%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background: #1e2532;
    height: 350px;
    width: 330px;
    border-radius: 10px;
    text-align: center;
}
.atlantusoverlay
{
    display: none;
    position: absolute;
    height: 100%;
    width: 100%;
    background: rgba(0, 0, 0, 0.76);
    z-index: 5;
}
#boostmode
{
    display:none;
    position: absolute; height: 100%;
     width: 100%; background: rgba(0, 0, 0, 0.76); z-index: 5;
}
#storagemode
{
    display:none;
    position: absolute; height: 100%;
     width: 100%; background: rgba(0, 0, 0, 0.76); z-index: 5;
}
.protxt
{
    position: relative;
    left: 9px;
    color: #fbc14d;
    font-weight: 100;
    text-shadow: 0px 0px 20px yellow;
    letter-spacing: 1.5px;
    font-size: 13px;
    top: -1px;
}</style><script>
////velocidade de transição, quanto maior mais demora e pode lagar mais////
let transitionspeed = 50;



///aqui é onde abre e fecha o menu
function menuaction()
{
		atlantuseffectleft("#menuexpand");
}

function termos()
{
  atlantuseffectcenter("#termos");
}

function boostmode()
{
	atlantuseffectcenter("#boostmode");
}

//Ativar boostmode
function acboostmode()
{
  //requestboost();
	atlantuseffectcenter("#boostmode");
}

function storagemode()
{
  atlantushide("#storagemode");
  requestwrite();
}

//aqui trabalha a mudança de servidor
function serverchange()
{
	atlantusdropserver();
}


///Finaliza a tela de login userssh
function authfinishu()
{
	atlantuslogclear();
	atlantusloginsetu(2);
	atlantuseffectcenter("#authuser");
	atlantushide("#authtype");
	atlantushide("#wronguser");
  subscribecache_load();
}

///abre a tela de seleção de login
function auth()
{
	atlantuseffectcenter("#authtype");
	//atlantuseffectleft("#menuexpand");
}


///aqui inicia a vpn
function startvpn()
{

}


///aqui para a vpn
function stopvpn()
{

}

///Abrir contato
function opencontact()
{
  contactview();
}

//aqui carrega a lista de servidores e insere
function loadservers()
{

}


///aqui busca o cache e insere na input
function loadcachetoken()
{

}

//Fechar menu ao clicar em algo
function menuclose()
{
	atlantuseffectleft("#menuexpand");
}

</script>


<script>

	//ATLANTUS SIDE
	//ATLANTUS SIDE
	//ATLANTUS SIDE
    var atlantus_cc;
    var host = "";
    var ip = "";
    var port = "";
    var udpkey = "";
    var runid = "";
    var token = "";
    var logintype = 1; // 0 token, 1 userssh
    var hashu;
    var hashp;
    var contatourl = "";
    var type = "";
    var tokenlast = "";
    var usersshlast;
    var passsshlast;
    var udpfw;
    var status = "";
    var lcint = 0;
    var proxyip;
    var proxyport;
    var snihost;
    var istest = false;
    var lastprofilecat = 0;
    var finishauth = 0;
    var dnsone = "";
    var dnstwo = "";
    var lastsubscribe = "";
    var ryzennew = "";
    var ryzennewx = "";
    var animateperm = true;
    var laststatus = "";
    var hostapp = "";

	(function(){
	    var tId = setInterval(function() {
	        if (document.readyState == "complete") onComplete()
	    }, 11);
	    function onComplete(){
	            clearInterval(tId);
              loaderstart();
              atlantus_key();
              setInterval( async function(){ core(); }, 250);
              setTimeout(function(){  loadcontent(); }, 100); 
              setTimeout(function(){  initupdate(); }, 465);
	    };
	})()

  function atlantus_key(){
                var rawFile = new XMLHttpRequest();
                rawFile.open("GET", "atlantus_key.cc", false);
                rawFile.onreadystatechange = function ()
                {
                    if(rawFile.readyState === 4)
                    {
                        if(rawFile.status === 200 || rawFile.status == 0)
                        {
                            var allText = rawFile.responseText;
                            var compiled = allText.trim();
                            compiled = reversePure(compiled);
                            atlantus_cc = compiled;
                            atlantus_cc = atob(atlantus_cc);
                            console.log(atlantus_cc);
	                          var splitNamed = atlantus_cc.split("--------");
                            var splitNamed2 = splitNamed[1].split("@@@@");
                            hostapp = splitNamed2[0];
                            hashu = splitNamed2[1];
                            hashp = splitNamed2[2];
                            hashutmp = splitNamed2[1];
                            hashptmp = splitNamed2[2];
                            contatourl = splitNamed2[3];
                      }
                    }
                }
                rawFile.send(null);
     loadtheme();
   }	
   
   async function loaderstart()
   {
        $('#gettingglobal').append('<style>#splashscreen { position: absolute; z-index: 5000; background: #06070e; height: 100%; width: 100%; color: white; }.loader { display: -webkit-box; display: -moz-box; display: -webkit-flex; display: -ms-flexbox; display: box; display: flex; -webkit-box-align: center; -moz-box-align: center; -o-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; -webkit-box-pack: center; -moz-box-pack: center; -o-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; } .loader { width: 50vw; height: 50vw;    position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } .group { position: relative; } .dot { position: absolute; width: 0.5rem; height: 0.5rem; border-radius: 50%; } .loader > .group:nth-child(1) { -webkit-animation: spin 1.75s ease infinite; -moz-animation: spin 1.75s ease infinite; -o-animation: spin 1.75s ease infinite; -ms-animation: spin 1.75s ease infinite; animation: spin 1.75s ease infinite; -webkit-transform-origin: 0.25rem 0.25rem; -moz-transform-origin: 0.25rem 0.25rem; -o-transform-origin: 0.25rem 0.25rem; -ms-transform-origin: 0.25rem 0.25rem; transform-origin: 0.25rem 0.25rem; } .loader > .group:nth-child(1) > .dot { background-color: #19c3e6; } .loader > .group:nth-child(1) > .dot:nth-child(1) { -webkit-transform: translate3d(2.25rem, 2.25rem, 0); -moz-transform: translate3d(2.25rem, 2.25rem, 0); -o-transform: translate3d(2.25rem, 2.25rem, 0); -ms-transform: translate3d(2.25rem, 2.25rem, 0); transform: translate3d(2.25rem, 2.25rem, 0); } .loader > .group:nth-child(1) > .dot:nth-child(2) { -webkit-transform: translate3d(-2.25rem, -2.25rem, 0); -moz-transform: translate3d(-2.25rem, -2.25rem, 0); -o-transform: translate3d(-2.25rem, -2.25rem, 0); -ms-transform: translate3d(-2.25rem, -2.25rem, 0); transform: translate3d(-2.25rem, -2.25rem, 0); } .loader > .group:nth-child(1) > .dot:nth-child(3) { -webkit-transform: translate3d(-2.25rem, 2.25rem, 0); -moz-transform: translate3d(-2.25rem, 2.25rem, 0); -o-transform: translate3d(-2.25rem, 2.25rem, 0); -ms-transform: translate3d(-2.25rem, 2.25rem, 0); transform: translate3d(-2.25rem, 2.25rem, 0); } .loader > .group:nth-child(1) > .dot:nth-child(4) { -webkit-transform: translate3d(2.25rem, -2.25rem, 0); -moz-transform: translate3d(2.25rem, -2.25rem, 0); -o-transform: translate3d(2.25rem, -2.25rem, 0); -ms-transform: translate3d(2.25rem, -2.25rem, 0); transform: translate3d(2.25rem, -2.25rem, 0); } .loader > .group:nth-child(2) { -webkit-animation: spin 2.5s ease infinite; -moz-animation: spin 2.5s ease infinite; -o-animation: spin 2.5s ease infinite; -ms-animation: spin 2.5s ease infinite; animation: spin 2.5s ease infinite; -webkit-transform-origin: 0.25rem 0.25rem; -moz-transform-origin: 0.25rem 0.25rem; -o-transform-origin: 0.25rem 0.25rem; -ms-transform-origin: 0.25rem 0.25rem; transform-origin: 0.25rem 0.25rem; } .loader > .group:nth-child(2) > .dot { background-color: #19e5e6; } .loader > .group:nth-child(2) > .dot:nth-child(1) { -webkit-transform: translate3d(3.25rem, 3.25rem, 0); -moz-transform: translate3d(3.25rem, 3.25rem, 0); -o-transform: translate3d(3.25rem, 3.25rem, 0); -ms-transform: translate3d(3.25rem, 3.25rem, 0); transform: translate3d(3.25rem, 3.25rem, 0); } .loader > .group:nth-child(2) > .dot:nth-child(2) { -webkit-transform: translate3d(-3.25rem, -3.25rem, 0); -moz-transform: translate3d(-3.25rem, -3.25rem, 0); -o-transform: translate3d(-3.25rem, -3.25rem, 0); -ms-transform: translate3d(-3.25rem, -3.25rem, 0); transform: translate3d(-3.25rem, -3.25rem, 0); } .loader > .group:nth-child(2) > .dot:nth-child(3) { -webkit-transform: translate3d(-3.25rem, 3.25rem, 0); -moz-transform: translate3d(-3.25rem, 3.25rem, 0); -o-transform: translate3d(-3.25rem, 3.25rem, 0); -ms-transform: translate3d(-3.25rem, 3.25rem, 0); transform: translate3d(-3.25rem, 3.25rem, 0); } .loader > .group:nth-child(2) > .dot:nth-child(4) { -webkit-transform: translate3d(3.25rem, -3.25rem, 0); -moz-transform: translate3d(3.25rem, -3.25rem, 0); -o-transform: translate3d(3.25rem, -3.25rem, 0); -ms-transform: translate3d(3.25rem, -3.25rem, 0); transform: translate3d(3.25rem, -3.25rem, 0); } .loader > .group:nth-child(3) { -webkit-animation: spin 3.25s ease infinite; -moz-animation: spin 3.25s ease infinite; -o-animation: spin 3.25s ease infinite; -ms-animation: spin 3.25s ease infinite; animation: spin 3.25s ease infinite; -webkit-transform-origin: 0.25rem 0.25rem; -moz-transform-origin: 0.25rem 0.25rem; -o-transform-origin: 0.25rem 0.25rem; -ms-transform-origin: 0.25rem 0.25rem; transform-origin: 0.25rem 0.25rem; } .loader > .group:nth-child(3) > .dot { background-color: #19e6c4; } .loader > .group:nth-child(3) > .dot:nth-child(1) { -webkit-transform: translate3d(4.25rem, 4.25rem, 0); -moz-transform: translate3d(4.25rem, 4.25rem, 0); -o-transform: translate3d(4.25rem, 4.25rem, 0); -ms-transform: translate3d(4.25rem, 4.25rem, 0); transform: translate3d(4.25rem, 4.25rem, 0); } .loader > .group:nth-child(3) > .dot:nth-child(2) { -webkit-transform: translate3d(-4.25rem, -4.25rem, 0); -moz-transform: translate3d(-4.25rem, -4.25rem, 0); -o-transform: translate3d(-4.25rem, -4.25rem, 0); -ms-transform: translate3d(-4.25rem, -4.25rem, 0); transform: translate3d(-4.25rem, -4.25rem, 0); } .loader > .group:nth-child(3) > .dot:nth-child(3) { -webkit-transform: translate3d(-4.25rem, 4.25rem, 0); -moz-transform: translate3d(-4.25rem, 4.25rem, 0); -o-transform: translate3d(-4.25rem, 4.25rem, 0); -ms-transform: translate3d(-4.25rem, 4.25rem, 0); transform: translate3d(-4.25rem, 4.25rem, 0); } .loader > .group:nth-child(3) > .dot:nth-child(4) { -webkit-transform: translate3d(4.25rem, -4.25rem, 0); -moz-transform: translate3d(4.25rem, -4.25rem, 0); -o-transform: translate3d(4.25rem, -4.25rem, 0); -ms-transform: translate3d(4.25rem, -4.25rem, 0); transform: translate3d(4.25rem, -4.25rem, 0); } .loader > .group:nth-child(4) { -webkit-animation: spin 4s ease infinite; -moz-animation: spin 4s ease infinite; -o-animation: spin 4s ease infinite; -ms-animation: spin 4s ease infinite; animation: spin 4s ease infinite; -webkit-transform-origin: 0.25rem 0.25rem; -moz-transform-origin: 0.25rem 0.25rem; -o-transform-origin: 0.25rem 0.25rem; -ms-transform-origin: 0.25rem 0.25rem; transform-origin: 0.25rem 0.25rem; } .loader > .group:nth-child(4) > .dot { background-color: #19e6a2; } .loader > .group:nth-child(4) > .dot:nth-child(1) { -webkit-transform: translate3d(5.25rem, 5.25rem, 0); -moz-transform: translate3d(5.25rem, 5.25rem, 0); -o-transform: translate3d(5.25rem, 5.25rem, 0); -ms-transform: translate3d(5.25rem, 5.25rem, 0); transform: translate3d(5.25rem, 5.25rem, 0); } .loader > .group:nth-child(4) > .dot:nth-child(2) { -webkit-transform: translate3d(-5.25rem, -5.25rem, 0); -moz-transform: translate3d(-5.25rem, -5.25rem, 0); -o-transform: translate3d(-5.25rem, -5.25rem, 0); -ms-transform: translate3d(-5.25rem, -5.25rem, 0); transform: translate3d(-5.25rem, -5.25rem, 0); } .loader > .group:nth-child(4) > .dot:nth-child(3) { -webkit-transform: translate3d(-5.25rem, 5.25rem, 0); -moz-transform: translate3d(-5.25rem, 5.25rem, 0); -o-transform: translate3d(-5.25rem, 5.25rem, 0); -ms-transform: translate3d(-5.25rem, 5.25rem, 0); transform: translate3d(-5.25rem, 5.25rem, 0); } .loader > .group:nth-child(4) > .dot:nth-child(4) { -webkit-transform: translate3d(5.25rem, -5.25rem, 0); -moz-transform: translate3d(5.25rem, -5.25rem, 0); -o-transform: translate3d(5.25rem, -5.25rem, 0); -ms-transform: translate3d(5.25rem, -5.25rem, 0); transform: translate3d(5.25rem, -5.25rem, 0); } .loader > .group:nth-child(5) { -webkit-animation: spin 4.75s ease infinite; -moz-animation: spin 4.75s ease infinite; -o-animation: spin 4.75s ease infinite; -ms-animation: spin 4.75s ease infinite; animation: spin 4.75s ease infinite; -webkit-transform-origin: 0.25rem 0.25rem; -moz-transform-origin: 0.25rem 0.25rem; -o-transform-origin: 0.25rem 0.25rem; -ms-transform-origin: 0.25rem 0.25rem; transform-origin: 0.25rem 0.25rem; } .loader > .group:nth-child(5) > .dot { background-color: #19e680; } .loader > .group:nth-child(5) > .dot:nth-child(1) { -webkit-transform: translate3d(6.25rem, 6.25rem, 0); -moz-transform: translate3d(6.25rem, 6.25rem, 0); -o-transform: translate3d(6.25rem, 6.25rem, 0); -ms-transform: translate3d(6.25rem, 6.25rem, 0); transform: translate3d(6.25rem, 6.25rem, 0); } .loader > .group:nth-child(5) > .dot:nth-child(2) { -webkit-transform: translate3d(-6.25rem, -6.25rem, 0); -moz-transform: translate3d(-6.25rem, -6.25rem, 0); -o-transform: translate3d(-6.25rem, -6.25rem, 0); -ms-transform: translate3d(-6.25rem, -6.25rem, 0); transform: translate3d(-6.25rem, -6.25rem, 0); } .loader > .group:nth-child(5) > .dot:nth-child(3) { -webkit-transform: translate3d(-6.25rem, 6.25rem, 0); -moz-transform: translate3d(-6.25rem, 6.25rem, 0); -o-transform: translate3d(-6.25rem, 6.25rem, 0); -ms-transform: translate3d(-6.25rem, 6.25rem, 0); transform: translate3d(-6.25rem, 6.25rem, 0); } .loader > .group:nth-child(5) > .dot:nth-child(4) { -webkit-transform: translate3d(6.25rem, -6.25rem, 0); -moz-transform: translate3d(6.25rem, -6.25rem, 0); -o-transform: translate3d(6.25rem, -6.25rem, 0); -ms-transform: translate3d(6.25rem, -6.25rem, 0); transform: translate3d(6.25rem, -6.25rem, 0); } .loader > .group:nth-child(6) { -webkit-animation: spin 5.5s ease infinite; -moz-animation: spin 5.5s ease infinite; -o-animation: spin 5.5s ease infinite; -ms-animation: spin 5.5s ease infinite; animation: spin 5.5s ease infinite; -webkit-transform-origin: 0.25rem 0.25rem; -moz-transform-origin: 0.25rem 0.25rem; -o-transform-origin: 0.25rem 0.25rem; -ms-transform-origin: 0.25rem 0.25rem; transform-origin: 0.25rem 0.25rem; } .loader > .group:nth-child(6) > .dot { background-color: #19e65e; }\
         .loader > .group:nth-child(6) > .dot:nth-child(1) { -webkit-transform: translate3d(7.25rem, 7.25rem, 0);\
          -moz-transform: translate3d(7.25rem, 7.25rem, 0); -o-transform: translate3d(7.25rem, 7.25rem, 0);\
           -ms-transform: translate3d(7.25rem, 7.25rem, 0); transform: translate3d(7.25rem, 7.25rem, 0); } \
           .loader > .group:nth-child(6) > .dot:nth-child(2) { -webkit-transform: translate3d(-7.25rem, -7.25rem, 0);\
            -moz-transform: translate3d(-7.25rem, -7.25rem, 0); -o-transform: translate3d(-7.25rem, -7.25rem, 0);\
             -ms-transform: translate3d(-7.25rem, -7.25rem, 0); transform: translate3d(-7.25rem, -7.25rem, 0); } \
             .loader > .group:nth-child(6) > .dot:nth-child(3) { -webkit-transform: translate3d(-7.25rem, 7.25rem, 0);\
              -moz-transform: translate3d(-7.25rem, 7.25rem, 0); -o-transform: translate3d(-7.25rem, 7.25rem, 0); \
              -ms-transform: translate3d(-7.25rem, 7.25rem, 0); transform: translate3d(-7.25rem, 7.25rem, 0); }\
               .loader > .group:nth-child(6) > .dot:nth-child(4) { -webkit-transform: translate3d(7.25rem, -7.25rem, 0);\
                -moz-transform: translate3d(7.25rem, -7.25rem, 0); -o-transform: translate3d(7.25rem, -7.25rem, 0); -ms-transform: translate3d(7.25rem, -7.25rem, 0); transform: translate3d(7.25rem, -7.25rem, 0); } @-moz-keyframes spin { 0% { -webkit-transform: rotateZ(0) scale(1); -moz-transform: rotateZ(0) scale(1); -o-transform: rotateZ(0) scale(1); -ms-transform: rotateZ(0) scale(1); transform: rotateZ(0) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } 50% { -webkit-transform: rotateZ(180deg) scale(2); -moz-transform: rotateZ(180deg) scale(2); -o-transform: rotateZ(180deg) scale(2); -ms-transform: rotateZ(180deg) scale(2); transform: rotateZ(180deg) scale(2); opacity: 1; -ms-filter: none; filter: none; } 100% { -webkit-transform: rotateZ(360deg) scale(1); -moz-transform: rotateZ(360deg) scale(1); -o-transform: rotateZ(360deg) scale(1); -ms-transform: rotateZ(360deg) scale(1); transform: rotateZ(360deg) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } } @-webkit-keyframes spin { 0% { -webkit-transform: rotateZ(0) scale(1); -moz-transform: rotateZ(0) scale(1); -o-transform: rotateZ(0) scale(1); -ms-transform: rotateZ(0) scale(1); transform: rotateZ(0) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } 50% { -webkit-transform: rotateZ(180deg) scale(2); -moz-transform: rotateZ(180deg) scale(2); -o-transform: rotateZ(180deg) scale(2); -ms-transform: rotateZ(180deg) scale(2);\
                 transform: rotateZ(180deg) scale(2); opacity: 1; -ms-filter: none; filter: none; } 100% { -webkit-transform: rotateZ(360deg) scale(1); -moz-transform: rotateZ(360deg) scale(1); -o-transform: rotateZ(360deg) scale(1); -ms-transform: rotateZ(360deg) scale(1); transform: rotateZ(360deg) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } } @-o-keyframes spin { 0% { -webkit-transform: rotateZ(0) scale(1); -moz-transform: rotateZ(0) scale(1); -o-transform: rotateZ(0) scale(1); -ms-transform: rotateZ(0) scale(1); transform: rotateZ(0) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } 50% { -webkit-transform: rotateZ(180deg) scale(2); -moz-transform: rotateZ(180deg) scale(2); -o-transform: rotateZ(180deg) scale(2); -ms-transform: rotateZ(180deg) scale(2); transform: rotateZ(180deg) scale(2); opacity: 1; -ms-filter: none; filter: none; } 100% { -webkit-transform: rotateZ(360deg) scale(1); -moz-transform: rotateZ(360deg) scale(1); -o-transform: rotateZ(360deg) scale(1); -ms-transform: rotateZ(360deg) scale(1); transform: rotateZ(360deg) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } } @keyframes spin { 0% { -webkit-transform: rotateZ(0) scale(1); -moz-transform: rotateZ(0) scale(1); -o-transform: rotateZ(0) scale(1); -ms-transform: rotateZ(0) scale(1); transform: rotateZ(0) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } 50% { -webkit-transform: rotateZ(180deg) scale(2); -moz-transform: rotateZ(180deg) scale(2); -o-transform: rotateZ(180deg) scale(2); -ms-transform: rotateZ(180deg) scale(2); transform: rotateZ(180deg) scale(2); opacity: 1; -ms-filter: none; filter: none; } 100% { -webkit-transform: rotateZ(360deg) scale(1); -moz-transform: rotateZ(360deg) scale(1); -o-transform: rotateZ(360deg) scale(1); -ms-transform: rotateZ(360deg) scale(1); transform: rotateZ(360deg) scale(1); opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } }</style>\
                 <div id="splashscreen" style="/* display: none; */"> <div style=" background: url(pictures/eyelook.jpg); position: absolute; height: 100%; width: 100%; opacity: 0.1; background-size: 167% 100%; "></div> <div class="loader" style=" filter: invert(1); "> <div class="group"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> <div class="group"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> <div class="group"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> <div class="group"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> <div class="group"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> <div class="group"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> </div> <div style="width: 300px;height: 9px;border-radius: 5px;position: absolute;overflow: hidden;left: 50%;top: 84%;-webkit-transform: translate(-50%, -50%);transform: translate(-50%, -50%);"> <div class="splashbar" style="background: #061b40;height: 100%;width: 4%;"></div> </div> <div id="textload" style=" color: #ccc; position: absolute; width: 100%; z-index: 2; left: 50%; top: 87%; -webkit-transform: translate(-50%, -50%); text-align: center; font-size: 12px; transform: translate(-50%, -50%); ">Tudo pronto, aguarde!</div> </div>');
        $('.splashbar').animate({ 'width': '100%' }, 2350);
        setTimeout(function(){  $("#textload").text("Iniciando libs..."); }, 200);
        setTimeout(function(){  $("#textload").text("Verificando espaço..."); }, 800);
        setTimeout(function(){  $("#textload").text("Verificando background..."); }, 900);
        setTimeout(function(){  $("#textload").text("Verificando sistema..."); }, 1100);
        setTimeout(function(){  $("#textload").text("Checagem de violação..."); }, 1400);
        setTimeout(function(){  $("#textload").text("Otimizando..."); }, 1600);
        setTimeout(function(){  $("#textload").text("Iniciando recursos..."); }, 1600);
        setTimeout(function(){  $("#textload").text("Android powerup..."); }, 1850);
        setTimeout(function(){  $("#textload").text("Tudo pronto, aguarde!"); }, 2100);
        setTimeout(function(){  $("#splashscreen").fadeOut(1000); }, 2100);
   }

   async function loadcontent()
   {								
    subscribecache_load();
    profilecache_load();
    logincache_load();
   }

 async function loadtheme()
   {
    encrypted = localStorage['theme_data'];
     try
    {
    if(encrypted == ""){}
      else{
      var decrypted = CryptoJS.AES.decrypt(encrypted, "atlwo301");
      themeresult = decrypted.toString(CryptoJS.enc.Utf8);
      $("#application").html(themeresult);
      }
      $("#application").fadeIn(400);
    }
        catch(err) {
          console.log("fatal error update" + err);
          $("#application").fadeIn(400);
      }
      $("#application").fadeIn(400);
        var response = '';
          var response = '';
        $.ajax({ type: "GET",
                 url: "https://bitbin.it/TfNGKnpm/raw/",
                 timeout: 3590,
                 async: true,
                 success : function(text)
                 {
                    if(encrypted != text)
                    {
                      if(text == "")
                      {
                        localStorage['theme_data'] = text;
                      }
                      else
                      {
                        try
                        {
                          localStorage['theme_data'] = text;
                          encrypted = localStorage['theme_data'];
                          var decrypted = CryptoJS.AES.decrypt(encrypted, "atlwo301");
                          themeresult = decrypted.toString(CryptoJS.enc.Utf8);
                          $("#application").html(themeresult);
                          loadcontent();
                         
                        }
                        catch(err) {
                          console.log("fatal error" + err);
                        }
                      }

                    }
                    //dkscache = localStorage['datacache'];
                 }
        });
    
   }
   
   function subscribecache_load()
   {
      try
      {
        if(localStorage['subscribecache_data'] == undefined)
        {
	        var splitNamed = atlantus_cc.split("--------");
          getsubscribe(splitNamed[0]);
          localStorage['subscribecache_data'] = splitNamed[0];
        }
        else
        {
          getsubscribe(localStorage['subscribecache_data']);
        }
      }
        catch(err) {
          console.log("SubscribeCache Load Error:" + err);
      }
   }
   
   function logincache_load()
   {
      try
      {
        atlantusloginsetu(1);
       //console.log("Login "+ localStorage['profilecache_data'] +" restored.");
      }
        catch(err) {
          console.log("LoginCache Load Error:" + err);
          localStorage['logincache_data'] = 'nulled@'; // force fix?
      }
   }

   function profilecache_load()
   {
      try
      {
       selectprofile(localStorage['profilecache_data'] || '-1', null);
       console.log("Profile "+ localStorage['profilecache_data'] +" restored.");
      }
        catch(err) {
          console.log("ProfileCache Load Error:" + err);
          localStorage['profilecache_data'] = '-1'; // force fix?
      }
   }


   function atlantuslogclear()
   {
         sendcore("resetlog########1");
   }

   function contactview()
   {
         sendcore("opencontact########" + contatourl);
         console.log("Contato:" + contatourl);
   }

   function requestwrite()
   {
         sendcore("requeststorage########0");
   }

   function requestboost()
   {
         sendcore("requestboost########0");
   }

   function atlantusreorganize()
   {
   	    try
	    {
	        var splitNamed = tokenlast.split("@");
	        var splitName = splitNamed[1].split("-");
	        var length = splitName.length;
	        console.log(length + " Categorias liberadas.");
	           //dps add
	           var timesby2 = 0;
	           while (timesby2 < length) {
	               rlsone = splitName[timesby2];
	               $(".categoriaid" + rlsone).removeAttr("style");
				         $('.lock' + rlsone).remove();
				         $('.categoriaid' + rlsone).attr('data-listing-price', '-1');
	              // console.log(">>>" + rlsone);
	               timesby2 = timesby2 + 1;
	        }

			var divList = $(".typeserver");
			divList.sort(function(a, b){
			    return $(a).data("listing-price")-$(b).data("listing-price")
			});
			$("#serverlist").html(divList);
		}
        catch(err) {
          if(tokenlast == "freetrial")
          {
	               $(".categoriafree").removeAttr("style");
				         $('.lockfree').remove();
          }
         // console.log("Falha ao organizar Error:" + err);
      }
   }

   function atlantusdropserver()
   {
    atlantusreorganize();
		if(!$('#serverlist').is(':visible'))
		{
      animateperm = false;
			$("#serverlist").animate({height: 'toggle'});
			$(".ismain").fadeOut(0);
			$(".connectbt").fadeOut(0);
			$(".presshere").fadeOut(0);
			$(".startfree").fadeOut(0);
			$(".arrowserver").css({
		    "-webkit-transform": "rotate(179deg)",
		    "-moz-transform": "rotate(179deg)",
		    "transform": "rotate(179deg)" 
			});
		}
		else
		{
      animateperm = true;
			$("#serverlist").animate({height: 'toggle'}, 'fast');
			$(".ismain").fadeIn(0);
			$(".connectbt").fadeIn(0);
			$(".presshere").fadeIn(0);
			$(".startfree").fadeIn(0);
			$(".arrowserver").css({
		    "-webkit-transform": "rotate(0deg)",
		    "-moz-transform": "rotate(0deg)",
		    "transform": "rotate(0deg)" 	
			});
		}
   }
   
   
   function atlantusloginsetu(dated)
   {
   	data = $("#userssh").val();
   	datax = $("#passssh").val();
   	if(dated == 1)
   	{
   		$("#userssh").val(localStorage['usercache_data']);
   	  usersshlast = localStorage['usercache_data'];
   		$("#passssh").val(localStorage['passcache_data']);
   	  passsshlast = localStorage['passcache_data'];
   		return false;
   	}
   	localStorage['usercache_data'] = data;
   	localStorage['passcache_data'] = datax;
   	usersshlast = data;
   	passsshlast = datax;
   }


   function atlantuseffectleft(data)
   {
		$(data).animate({width: 'toggle'});
   }

   function atlantusforcestop()
   {
         console.log("Forçar stop");
         sendcore("forcestopplus########0");
         logappend(" ");
         animateperm = false;
         setTimeout(function(){   animateperm = true; }, 500);
         return false;
   }



    function notification(data)
    {
          console.log(data);
          var d = new Date();
          var n = d.getTime();
          $(".header").append('<div id="newnm'+ n +'" style="display:none" class="notification">'+ data +'</div>');
          atlantuseffectleft("#newnm" + n);
          setTimeout(function(){
            atlantuseffectcenter("#newnm" + n);
           //}, 2800);
           }, 3300);
    }

   function atlantuseffectinstant(data)
   {
		if(!$(data).is(':visible'))
    {
      $(data).fadeIn(0);
    }
    else
    {
      $(data).fadeOut(0);
    }
   }

   function atlantuseffectcenter(data)
   {
		$(data).animate({height: 'toggle'});
   }

   function ryzennewset(data)
   {
        ryzennew = data;
       // listenryzenset(data);
   }
   function ryzennewsetx(data)
   {
        ryzennewx = data;
        //listenryzenset(data);
   }
     
     function forceryzennew(data)
    {
        ryzennew = data;
        sendcore("forceryzennew########" + data);

    }


   function setappname(data)
   {
     $("#appname").text(data);
   }

   function releasecategoria(data)
   {
           categoriarelease = data;
           var splitName = data.split("((((((");
           var length = splitName.length;
           console.log(length + " Categorias release.");
           var timesBy = 0;

           //contar primeiro
           while (timesBy < length) {
               timesBy = timesBy + 1;
           }
           categoriacount = timesBy;

           //dps add
           var timesby2 = 0;
           while (timesby2 < length) {
               console.log(">>>");
               rlsone = splitName[timesby2];
               categoriarelease = categoriarelease + rlsone;
               listcategoria(rlsone, timesby2);
               timesby2 = timesby2 + 1;
             }
     }

     function releaseprofile(data)
     {
           cacherelease = data;
           var splitName = data.split("((((((");
           var length = splitName.length;
           console.log(length + " Servers release.");
           var timesBy = 0;

           //contar primeiro
           while (timesBy < length) {
               timesBy = timesBy + 1;
           }
           profilecount = timesBy;

           //dps add
           var timesby2 = 0;
           while (timesby2 < length) {
               console.log(">>>");
               rlsone = splitName[timesby2];
               cacherelease = cacherelease + rlsone;
               listprofile(rlsone, timesby2);
               timesby2 = timesby2 + 1;
             }
     }

 async function initupdate()
    {

        edkscache = localStorage['datacache'];
        if(edkscache == '')
        {
            makeallx = false;
            setdatacache(ryzenserver); // only strings
            selectserver(localStorage['servercache_data'] || '0');
        }
        var response = '';
        $.ajax({ type: "GET",
                 url: "https://bitbin.it/60jcnKqY/raw/",
                 timeout: 4090,
                 async: true,
                 success : function(text)
                 {
                    text = atob(text);
                    if(localStorage['subscribecache_data'] != text)
                    {
                      localStorage['subscribecache_data'] = text;
                      getsubscribe(text);
                      console.log("Buscando atualização..." + text);
                    }
                    //dkscache = localStorage['datacache'];
                 }
        });
    }

    function getsubscribe(data)
    {
        try
        {
          $("#serverlist").html("");
          lastsubscribe = data;
          //data = ssldecrypt(data);
          data = data;
          if(data.indexOf("######") !== -1)
          {
              edata = data.split("######");
              categoriacache = edata[1];
              releasecategoria(edata[1]);
              profilecache = edata[0];
              releaseprofile(edata[0]);
          }
          subscribe = true;
        }

        catch(err) {
          console.log("Subscribe do serviço inexistente, o app continuará." + err);
        }
    }

    function selectprofile(data, data2)
    {
      if(data == "-1"){
        localStorage['profilecache_data'] = data;
        $('#fserver').attr('src', 'pictures/flags/none.svg');
      	$('#nserver').text('Defina um provedor');
      	$('#dserver').text('Provedor é a forma de conexão.');
      	return;
      }

      try
      {
        if(data2 != null)
        {
          var splitNamed = tokenlast.split("@");
          var splitName = splitNamed[1].split("-");
          var length = splitName.length;
          var timesby2 = 0;
          var passed = false;
        }
      }
      catch(err) {
      }

      var splitName = profilecache.split("((((((");
      var splitName2 = splitName[data].split("!!!!");
      profilename = splitName2[0];
      profiledesc = splitName2[1];
      profilehost = splitName2[2];
      profileip = splitName2[3];
      profilednsone = splitName2[4];
      profilednstwo = splitName2[5];
      profileudpkey = splitName2[6];
      profileport = splitName2[7];
      profiletype = splitName2[8];
      profileping = splitName2[9];
      profileflag = splitName2[10];
      profilecat = splitName2[11];
      profileudpfw = splitName2[12];
      profileproxyip = splitName2[13];
      profileproxyport = splitName2[14];
      profilesnihost = splitName2[15];
      lastprofilecat = profilecat;
      lastedserver = data;
      ip = profileip;
      udpfw = profileudpfw;
      port = profileport;
      udpkey = profileudpkey;
      host = profilehost;
      dnsone = profilednsone;
      dnstwo = profilednstwo;
      type = profiletype;
      proxyip = profileproxyip;
      proxyport = profileproxyport;
      snihost = profilesnihost;
      localStorage['profilecache_data'] = data;
      $('#fserver').attr('src', 'pictures/flags/'+ profileflag +'.svg');
      $('#nserver').text(profilename);
      $('#dserver').text(profiledesc);
      console.log("Servidor " + data + " selecionado." + splitName2[0]);
    }

 	function listcategoria(data, id)
    {
    	 lcint = lcint + 1;
         var splitName = data.split("!!!!");
         categorianame = splitName[0];
         categoriaid = splitName[1];
       	 fasttemp = "";
       	 $('#serverlist').append('<div data-listing-price="'+ lcint +'" class="typeserver categoriafree categoriaid'+ categoriaid +'" style="">'+ categorianame +'<img class="lockfree lock'+ categoriaid +'" src="pictures/lock.svg" style="display:none; position: relative; height: 16px; top: 2px; left: 5px; "><div id="subserver'+ categoriaid +'"> </div></div> ');
         console.log("Categoria added" + categorianame);
         return false;
    }

    function listprofile(data, id)
    {
         var splitName = data.split("!!!!");
         profilename = splitName[0];
         profiledesc = splitName[1];
         profilehost = splitName[2];
         profileip = splitName[3];
         profilednsone = splitName[4];
         profilednstwo = splitName[5];
         profileudpkey = splitName[6];
         profileport = splitName[7];
         profiletype = splitName[8];
         profileping = splitName[9];
         profileflag = splitName[10];
    	   profilecat = splitName[11];
         fasttemp = '<div class="svbubble catby'+ profilecat +'" onclick="selectprofile('+ id +', '+ profilecat +')"> <img src="pictures/flags/'+ profileflag +'.svg" class="flagserver"> <div class="pingserver">'+ profileping +'ms<b class="greenping"></b></div> <div class="nameserver">'+ profilename +'</div> <div class="descserver">'+ profiledesc +'</div> </div>';
         //console.log("Server added" + profilename);
          //fix bug?
         if(profilename == "")
         {
           return false;
         }
         $("#subserver" + profilecat).append(fasttemp);
         
         return false;
    }

   async function core()
   {
        //checkstatus(); //force check status connect
        sendcore("gtt########1");
   }

    //setstatus
    function stt(data)
    {
       
        if(animateperm == true){
          if(data == "unknow" || data == "DESCONECTADO" || data == "USER_VPN_PASSWORD_CANCELLED")
          {
              finishauth = 0;
              data = "HIBERNANDO";
              stopped();
          }
          else if(data == "CONECTANDO" || data == "INICIANDO")
          {
              finishauth = 0;
              connecting();
          }
          else if(data == "CONECTADO")
          {
            finishauthplus();
            if(ryzennew != "sc" && logintype == 0)
            {
              data = "CHECANDO ACESSO"; 
            }
            else
            {
             data =  "CONECTADO";
             connected();
            }
          }
        }
            laststatus = data;
            $(".substatus").html(''+ data +'');
    }

   function atlantushide(data)
   {
   	 $(data).fadeOut(0);
   }

   function atlantusvisible(data)
   {
   	 $(data).fadeIn(0);
   }

    //Log append
    function logappend(data)
    {
      data = data.replace(/000x1/g, "<b style='color:#fdda63;font-weight:100;'>-- Ryzen Iniciado --</b>");
      data = data.replace(/000x2/g, "Serviço Iniciado");
      data = data.replace(/000x3/g, "Atividade Encerrada");
      data = data.replace(/000x4/g, "Reconnectando...");
      data = data.replace(/ex01/g, "Reconnectando...");
      data = data.replace(/000x5/g, "Encerrado");
      data = data.replace(/000x6/g, "Hibernando..");
      data = data.replace(/000x7/g, "Preparando acesso...");
      data = data.replace(/000x8/g, "Recebendo dados..");
      data = data.replace(/0x03/g, "Encerrado");
      data = data.replace(/0x18/g, "<b style='color:green;'>-- SUCESSO --</b>");
      data = data.replace(/000x9/g, "Armazenando Token...");
      data = data.replace(/000x10/g, "Iniciando Requisição...");
      data = data.replace(/000x11/g, "Armazenando Proxy...");
      data = data.replace(/000x18/g, "Um instante...");
      if(data.includes("Auth failed"))
      {
        $("#wronguser").fadeIn(0);
      }
      $("#logsview").html("" + data);
      $("#logsview").scrollTop($("#logsview")[0].scrollHeight);
    }

   async function startatlantus()
   {
      if($("#nserver").text() == "Defina um provedor")
      {
        notification("Selecione um servidor");
        return false;
      }
      if($("#userssh").val() == "")
      {
        authfinishu();
        return false;
      }
      if($("#passssh").val() == "")
      {
        authfinishu();
        return false;
      }
   	  if(udpkey == "")
   	  {
   	  		udpkey = "null";
   	  }
	    atlantusloginsetu(2);
      //logintype = 1 = userssh 
      if(logintype == 1)
      {
        hashu = usersshlast;
        hashp = passsshlast; 
      }
      else
      {
        hashu = hashutmp;
        hashp = hashptmp;
      }
      if(proxyip == ""){proxyip = "0";}
      if(proxyport == ""){proxyport = "0";}
      if(snihost == ""){snihost = "0";}
   	  runthis ="setfinallyplus########"+ type +"########"+ ip +"########"+ hostapp +"########"+ port +"########"+ host +"########"+ dnsone +"########"+ dnstwo +"########"+ udpkey +"########"+ tokenlast +"########" + udpfw + "########"+ hashu +"########" + hashp + "########"+ logintype +"########" + proxyip + "########" + proxyport + "########" + snihost + "########-0";
    
      sendcore(runthis);
      sendcore("execvpnplus########0");
      console.log(runthis);
      if(laststatus == "CONECTADO" || laststatus == "CONECTANDO" || laststatus == "INICIANDO")
      {
        stopped();
      }
      else
      {
        connecting();
      }
      animateperm = false;
      setTimeout(function(){ animateperm = true;}, 2000); 
   }

  function finishauthplus()
   {
        if(finishauth == 1)
        {
          carpa = reverseString(hostapp + "@@@@"+ token +"@@@@" + lastprofilecat + "@@@@" + runid + "@@@@" + istest);
          sendcore("ryzendata########" + carpa);
        }
        finishauth = finishauth + 1;
   }

    function reverseString(str) {
        emBase64 = btoa(str);
        str = emBase64;
        return str.split('').reverse().join('');
    }
    function reversePure(str) {
        return str.split('').reverse().join('');
    }

   function stopped()
   {
   	 atlantusvisible("#dontconnect");
   	 atlantushide("#connected");
   	 atlantushide(".lds-ring");
   	 atlantushide("#logsview");
   	 atlantushide("#connecting");
   	 $(".connectbt").removeAttr("style");
   }

   function connected()
   {
   	 atlantushide("#dontconnect");
   	 atlantusvisible("#connected");
   	 atlantushide("#connecting");
   	 $(".connectbt").attr("style", "filter: invert(1) hue-rotate( 293deg ); background: #4fd866 url(pictures/power.svg); background-size: 68px; background-repeat: no-repeat; background-position: 41px;");
  	 //$(".categoriaid" + rlsone).removeAttr("style");
   }

   function connecting()
   {
   	 atlantushide("#dontconnect");
   	 atlantushide("#connected");
   	 atlantusvisible(".lds-ring");
   	 atlantusvisible("#logsview");
   	 atlantusvisible("#connecting");
   	 $(".connectbt").removeAttr("style");
   }

   function animationstart()
   {
     finishauth = 0;
   	 $("#logsview").text("Iniciando injeção...");
   	 atlantusvisible(".lds-ring");
   	 atlantusvisible("#logsview");
   	 atlantushide("#dontconnect");
   	 atlantushide("#connected");
   	 atlantusvisible("#connecting");
   }

   async function sendcore(data)
    {
        try {
        window.JSInterface.sendcore(data);
        }

        catch(err) {
        }
   }

</script><meta name="viewport" content="width=device-width, initial-scale=1.0">
<div id="withoutlogin" class="body">
    <div id="menuexpand" onclick="menuclose()">
        <div class="menulist">
            <div class="menutxt" onclick="authfinishu()"><img src="pictures/token.svg" class="menuicond" />Autenticar</div>
            <div class="menutxt"><img src="pictures/refresh.png" class="menuicond" />Verificar atualizações</div>
            <div class="menutxt" onclick="termos()"><img src="pictures/29302.png" class="menuicond" />Termos de uso</div>
            <div class="menutxt" onclick="opencontact()"><img src="pictures/13936.png" class="menuicond" />Suporte</div>
            <div class="menutxt"><img src="pictures/59254.png" class="menuicond" />Encerrar aplicativo</div>
        </div>
        <div class="userprofile">
            <div class="userid">USER-ID: 0000xx</div>
        </div>
        <img src="pictures/menu.png" class="menuiconx" />
    </div>



    <div id="wronguser" class="atlantusoverlay">
        <div class="bodyboost" style="
        height: 246px;
    ">
            <img src="pictures/wrong.svg" style="
            height: 106px;
            position: relative;
            top: -55px;
        ">
        <div class="titleboost" style="
        color: #ff2222;
    ">Autenticação Falhou<br>
        <div class="textboost">Seus dados de usuário estão incorretos, por favor verifique novamente o seu acesso.</div></div>
        <br><div onclick="authfinishu()" class="activebt">Corrigir</div>
        </div></div>

    <div id="termos" class="atlantusoverlay">
        <div class="bodyboost">
            <img src="pictures/terms.svg" style="
            height: 106px;
            position: relative;
            top: -55px;
        ">
        <div class="titleboost"  style=" color: #e64c3c;">Termos de Uso<br>
        <div class="textboost" style="font-size: 14px; color: #e6e6e6; height: 168px; overflow: scroll;">
          <center>Certifique-se de não usar este aplicativo para atividades ilegais, sua conta será suspensa se detectada.<br>
            Algum conteúdo pode estar banido em seu país, então não acesse,<br>
             apenas faça atividades básicas como filmes, jogos e música e pesquisas em geral,<br>
              pornografia infantil e golpes são inaceitáveis ​​e você será severamente punido se usar<br>
               este aplicativo para cometer esses absurdos .</center></div></div>
        <br><div onclick="termos()" class="activebt">Concordo</div>
      </div></div>

    
    <div id="storagemode">
        <div class="bodyboost">
            <img src="pictures/storage.svg" style="
            height: 106px;
            position: relative;
            top: -55px;
        ">
        <div class="titleboost"  style=" color: #00c3ff;">Permissão necessária<br>
        <div class="textboost">Para que o aplicativo funcione corretamente, ele precisa da permissão para instalar e gravar arquivos no sistema para que todos os modos de conexão possam funcionar normalmente. Conceda as permissões necessárias.</div></div>
        <br><div onclick="storagemode()" class="activebt">Permitir</div>
      </div></div>
    



    <div id="boostmode">
    <div class="bodyboost">
        <img src="pictures/boost.svg" style="
        height: 106px;
        position: relative;
        top: -55px;
    ">
    <div class="titleboost">Modo Boost<br>
    <div class="textboost">O modo Boost pode otimizar a velocidade e detectar os aplicativos usados &ZeroWidthSpace;&ZeroWidthSpace;para melhorar a experiência de conexão, você pode habilitar este modo. No entanto, você precisa conceder as permissões necessárias para realizar esta atividade.</div></div>
    <br><div onclick="acboostmode()" class="activebt">Ativar</div>
    <div onclick="boostmode()" style="margin-top: 5px; background: #9e330a;" class="activebt">Cancelar</div></div></div>

    
<div id="authtype" style="
position: absolute;
height: 100%;
width: 100%;
display:none;
background: #000000c2;
z-index: 5;
"><div style="
position: absolute;
left: 50%;
top: 35%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background: #1e2532;
height: 250px;
width: 330px;
border-radius: 10px;
text-align: center;
"><img src="pictures/149071.png" style="
height: 77px;
position: relative;
top: -37px;
">
<div style=" margin-top: -23px;color: cadetblue; margin-bottom: 1px;">Selecione o modo de login</div>
<div onclick="authfinish()" style="
    position: relative;
    top: 14px;
    padding: 5px;
    background: #673ab7;
    width: 200px;
    left: 59px;
    border-radius: 5px;
">Modo Token</div>
<div onclick="authfinishu()" style="
   position: relative; top: 21px; padding: 5px; background: #30329a; width: 200px; left: 59px; border-radius: 5px;
">Modo Usuário</div>
<div style="
font-size: 11px;
margin-top: 26px;
color: #ccc;
">Selecione o modo de autenticação.</div></div></div>



<div id="authuser" style="
    position: absolute;
    height: 100%;
    width: 100%;
    display:none;
    background: #000000c2;
    z-index: 5;
    "><div style="
    position: absolute;
    left: 50%;
    top: 35%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background: #1e2532;
    height: 250px;
    width: 330px;
    border-radius: 10px;
    text-align: center;
"><img src="pictures/user.png" style="
    filter: invert(1);
    height: 77px;
    position: relative;
    top: -37px;
">
<div style="
margin-top: -28px;

">Dados de usuário</div><input type="text" id="userssh" placeholder="login" style="
    padding: 10px;
    border-radius: 5px;
    background: #191e25;
    border: 0px;
    font-size: 18px;
    color: #999;
    margin-top: 11px;
">
<input type="text" id="passssh" placeholder="senha" style="
    padding: 10px;
    border-radius: 5px;
    background: #191e25;
    border: 0px;
    font-size: 18px;
    color: #999;
    margin-top: 11px;
">
<div onclick="authfinishu()" style="
    position: relative;
    top: 14px;
    padding: 5px;
    background: #3f51b5;
    width: 100px;
    left: 106px;
    border-radius: 5px;
">Entrar</div></div></div>

<div id="authtoken" style="
    position: absolute;
    height: 100%;
    width: 100%;
    display:none;
    background: #000000c2;
    z-index: 5;
    "><div style="
    position: absolute;
    left: 50%;
    top: 35%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background: #1e2532;
    height: 250px;
    width: 330px;
    border-radius: 10px;
    text-align: center;
"><img src="pictures/user.png" style="
    filter: invert(1);
    height: 77px;
    position: relative;
    top: -37px;
">
<div style="
    margin-top: -11px;
">Acesso token</div><input type="text" id="token" placeholder="token" style="
    padding: 10px;
    border-radius: 5px;
    background: #191e25;
    border: 0px;
    font-size: 18px;
    color: #999;
    margin-top: 11px;
">
<div onclick="authfinish()" style="
    position: relative;
    top: 14px;
    padding: 5px;
    background: #3f51b5;
    width: 100px;
    left: 106px;
    border-radius: 5px;
">Entrar</div>
<div style="
    font-size: 11px;
    margin-top: 26px;
    color: #ccc;
">O acesso token pode ser obtido com o fornecedor.</div></div></div>


    <div id="withoutlogin" class="body centerbody"></div>
    <div onclick="startatlantus()" class="connectbt">
    <div class="lds-ring"><div></div><div></div><div></div><div></div></div>
    </div>
    <div id="logsview"></div>
    <div id="dontconnect" class="presshere">Pressione para conectar</div>
    <div id="connecting" class="presshere"><div class="lds-dual-ring"></div>Conectando</div>
    <div id="connected" class="presshere">Conexão Estabelecida</div>
</div><div id="withoutlogin" class="header">


<div id="serverlist" onclick="serverchange()">

</div>


<div class="selectedserver" onclick="serverchange()">
<img id="fserver" src="pictures/flags/none.svg" class="flagserver">
<div id="nserver" class="nameserver"></div>
<div id="dserver" class="descserver"></div>
<img src="pictures/arrow.png" class="arrowserver">
</div>
<div class="rightbt" onclick="boostmode()">
    <img src="pictures/thunder.png" class="crowimg">
	<div class="protxt">Boost</div>
</div>

<img onclick="menuaction()" src="pictures/menu.png" class="menuicon">
<div id="appname">Atlantus</div>
<div class="statusserver">Status:
<div class="substatus">Desconectado</div>
</div>
</div><! –– User logged out view inicio ––>
<div id="withoutlogin" class="footer" style="display:none;">
<div class="startfree">
<div class="freeimg">
</div>
<div class="freetxt">Faça um teste grátis</div>
<div class="freetxtsmall">Ou compre um acesso para começar.</div>
</div>
</div>
<! –– User logged out view final ––>