Advertisement
JuanVillalbaModz14

Untitled

Apr 11th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.35 KB | None | 0 0
  1. setTimeout(function() {
  2. var real_minx = -7071;
  3. var real_miny = -7071;
  4. var real_maxx = 7071;
  5. var real_maxy = 7071;
  6. var lastsent = {
  7. minx: 0,
  8. miny: 0,
  9. maxx: 0,
  10. maxy: 0
  11. };
  12.  
  13. function valcompare(Y, Z) {
  14. return 0.01 > Y - Z && -0.01 < Y - Z
  15. }
  16. window.agar.hooks.dimensionsUpdated = function(server_minx, server_miny, server_maxx, server_maxy) {
  17. if (valcompare(server_maxx - server_minx, server_maxy - server_miny)) {
  18. real_minx = server_minx;
  19. real_miny = server_miny;
  20. real_maxx = server_maxx;
  21. real_maxy = server_maxy
  22. } else {
  23. if (valcompare(server_minx, lastsent.minx)) {
  24. if (0.01 < server_maxx - lastsent.maxx || -0.01 > server_maxx - lastsent.maxx) {
  25. real_minx = server_minx;
  26. real_maxx = server_minx + 14142.135623730952
  27. }
  28. }
  29. if (0.01 < server_minx - lastsent.minx || -0.01 > server_minx - lastsent.minx) {
  30. if (valcompare(server_maxx, lastsent.maxx)) {
  31. real_maxx = server_maxx;
  32. real_minx = server_maxx - 14142.135623730952
  33. }
  34. }
  35. if (0.01 < server_miny - lastsent.miny || -0.01 > server_miny - lastsent.miny) {
  36. if (valcompare(server_maxy, lastsent.maxy)) {
  37. real_maxy = server_maxy;
  38. real_miny = server_maxy - 14142.135623730952
  39. }
  40. }
  41. if (valcompare(server_miny, lastsent.miny)) {
  42. if (0.01 < server_maxy - lastsent.maxy || -0.01 > server_maxy - lastsent.maxy) {
  43. real_miny = server_miny;
  44. real_maxy = server_miny + 14142.135623730952
  45. }
  46. }
  47. if (server_minx < real_minx) {
  48. real_minx = server_minx;
  49. real_maxx = server_minx + 14142.135623730952
  50. }
  51. if (server_maxx > real_maxx) {
  52. real_maxx = server_maxx;
  53. real_minx = server_maxx - 14142.135623730952
  54. }
  55. if (server_miny < real_miny) {
  56. real_miny = server_miny;
  57. real_maxy = server_miny + 14142.135623730952
  58. }
  59. if (server_maxy > real_maxy) {
  60. real_maxy = server_maxy;
  61. real_miny = server_maxy - 14142.135623730952
  62. }
  63. lastsent.minx = server_minx;
  64. lastsent.miny = server_miny;
  65. lastsent.maxy = server_maxy;
  66. lastsent.maxx = server_maxx
  67. }
  68. offset_x = real_minx || -7071;
  69. offset_y = real_miny || -7071
  70. };
  71. var socket = io.connect('ws://127.0.0.1:8081');
  72. var canMove = true;
  73. var movetoMouse = true;
  74. var moveEvent = new Array(2);
  75. var canvas = document.getElementById("canvas");
  76. last_transmited_game_server = null;
  77. socket.on('force-login', function(data) {
  78. socket.emit("login", {
  79. "uuid": client_uuid,
  80. "type": "client"
  81. });
  82. transmit_game_server()
  83. });
  84.  
  85. var a = '';
  86. var iDiv = document.createElement('div');
  87. iDiv.id = 'block';
  88. document.getElementsByTagName('body')[0].appendChild(iDiv);
  89. iDiv.innerHTML = '<div style="position: absolute; top: 10px; left: 15px; padding: 0px 8px; font-family: Tahoma; color: rgb(255, 255, 255); z-index: 9999; border-radius: 5px; min-height: 15px; min-width: 200px; background-color: rgba(0, 0, 0, 0.6);"><font color="#00FFFF"><b>---------------------------------</b><br><div id="counter"><center><b>JuanVillalbaModz Youtube Y:<span id="minionCount"></b></center><b>---------------------------------</b></div></b>' + a
  90. +'<b><div id="bName"><marquee behavior=alternate direction=up scrollamount=2 scrolldelay=65 height=80 style="Text-align;filter:wave(add=0,phase=1, freq=1,strength=15,color=.FFFFFF)"><center>JuanVillalbaModz Youtube Suscribe <br>JuanVillalbaModz Youtube Suscribe</center></marquee></span></div></b><b><div id="mControl"></div><div id="cMove"></div></b><div id="split"><b>Split :</b><span class="label label-info pull-right">E</span></div></b><div id="eject">Eject :</b><span class="label label-info pull-right">R</span></div><b><iframe width="200" height="140" src="https://www.youtube.com/embed/Px1mx8P0tTY" frameborder="0" allowfullscreen></iframe></b></b>' + a
  91. +'<br></iframe></b><b><iframe width="200" height="140" src="https://www.youtube.com/embed/4M3UysHrmrI" frameborder="0" allowfullscreen></iframe></b></div>';
  92. setInterval(function(){
  93. if(!movetoMouse){
  94. document.getElementById('mControl').innerHTML = '<div id="mControl">Seguimiento Masa:<span class="label label-danger pull-right">Desactivado</span></div>';
  95. }else{
  96. document.getElementById('mControl').innerHTML = '<div id="mControl">Siguimiento Mouse:<span class="label label-success pull-right">Activado</span></div>';
  97. }
  98. if(canMove){
  99. document.getElementById('cMove').innerHTML = '<div id="cMove">User Move :<span class="label label-danger pull-right">Desactivado</span></div>';
  100. }else{
  101. document.getElementById('cMove').innerHTML = '<div id="cMove"> User Stop :<span class="label label-success pull-right">เActivado</span></div>';
  102. }
  103. }, 1000);
  104. socket.on('spawn-count', function(data) {
  105. document.getElementById('minionCount').innerHTML = data
  106. });
  107. var client_uuid = localStorage.getItem('client_uuid');
  108. if (client_uuid == null) {
  109. console.log("generating a uuid for this user");
  110. client_uuid = ""; var ranStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  111. for (var ii = 0; ii < 15; ii++) client_uuid += ranStr.charAt(Math.floor(Math.random() * ranStr.length));
  112. localStorage.setItem('client_uuid', client_uuid)
  113. }
  114. socket.emit("login", client_uuid);
  115. $("#instructions").replaceWith('<br><div class="input-group"><span class="input-group-addon" id="basic-addon1">UUID</span><input type="text" value="' + client_uuid + '" readonly class="form-control"</div>');
  116. function isMe(cell) {
  117. for (var i = 0; i < window.agar.myCells.length; i++) {
  118. if (window.agar.myCells[i] == cell.id) {
  119. return true
  120. }
  121. }
  122. return false
  123. }
  124.  
  125. window.agar.hooks.drawCellMass = function(cell, old_draw) {
  126. if(cell.size > 20) return cell;
  127. }
  128.  
  129. window.agar.hooks.cellMassTextScale = function(cell, old_scale) {
  130. }
  131.  
  132. function getCell() {
  133. var me = [];
  134. for (var key in window.agar.allCells) {
  135. var cell = window.agar.allCells[key];
  136. if (isMe(cell)) {
  137. me.push(cell)
  138. }
  139. }
  140. return me[0]
  141. }
  142. var skin_var = 0;
  143.  
  144. function emitPosition() {
  145. for (i = 0; i < agar.myCells.length; i++) {}
  146. x = (mouseX - window.innerWidth / 2) / window.agar.drawScale + window.agar.rawViewport.x;
  147. y = (mouseY - window.innerHeight / 2) / window.agar.drawScale + window.agar.rawViewport.y;
  148. if (!movetoMouse) {
  149. x = getCell().x;
  150. y = getCell().y
  151. }
  152. socket.emit("pos", {
  153. "x": x - (real_minx + 7071),
  154. "y": y - (real_miny + 7071),
  155. "dimensions": [-7071, -7071, 7071, 7071]
  156. })
  157. }
  158.  
  159.  
  160. function emitSplit() {
  161. socket.emit("cmd", {
  162. "name": "split"
  163. })
  164. }
  165.  
  166. function emitMassEject() {
  167. socket.emit("cmd", {
  168. "name": "eject"
  169. })
  170. }
  171.  
  172. function toggleMovement() {
  173. canMove = !canMove;
  174. switch (canMove) {
  175. case true:
  176. canvas.onmousemove = moveEvent[0];
  177. moveEvent[0] = null;
  178. canvas.onmousedown = moveEvent[1];
  179. moveEvent[1] = null;
  180. break;
  181. case false:
  182. canvas.onmousemove({
  183. clientX: innerWidth / 2,
  184. clientY: innerHeight / 2
  185. });
  186. moveEvent[0] = canvas.onmousemove;
  187. canvas.onmousemove = null;
  188. moveEvent[1] = canvas.onmousedown;
  189. canvas.onmousedown = null;
  190. break
  191. }
  192. }
  193. interval_id = setInterval(function() {
  194. emitPosition()
  195. }, 100);
  196. interval_id2 = setInterval(function() {
  197. transmit_game_server_if_changed()
  198. }, 5000);
  199. document.addEventListener('keydown', function(e) {
  200. var key = e.keyCode || e.which;
  201. switch (key) {
  202. case 65:
  203. movetoMouse = !movetoMouse;
  204. if(movetoMouse) { document.getElementById('ismoveToMouse').innerHTML = "On"; } else { document.getElementById('ismoveToMouse').innerHTML = "Off"; }
  205. break;
  206. case 68:
  207. toggleMovement();
  208. if(!canMove) { document.getElementById('isStopMove').innerHTML = "On"; } else { document.getElementById('isStopMove').innerHTML = "Off"; }
  209. break;
  210. case 69:
  211. emitSplit();
  212. break;
  213. case 82:
  214. emitMassEject();
  215. break
  216. }
  217. });
  218.  
  219. function transmit_game_server_if_changed() {
  220. if (last_transmited_game_server != window.agar.ws) {
  221. transmit_game_server()
  222. }
  223. }
  224.  
  225. function transmit_game_server() {
  226. last_transmited_game_server = window.agar.ws;
  227. socket.emit("cmd", {
  228. "name": "connect_server",
  229. "ip": last_transmited_game_server
  230. })
  231. }
  232. var mouseX = 0;
  233. var mouseY = 0;
  234. $("body").mousemove(function(event) {
  235. mouseX = event.clientX;
  236. mouseY = event.clientY
  237. });
  238. window.agar.minScale = -30
  239. }, 5000);
  240.  
  241. var allRules = [
  242. { hostname: ["agar.io"],
  243. scriptUriRe: /^http:\/\/agar\.io\/main_out\.js/,
  244. replace: function (m) {
  245. m.removeNewlines()
  246.  
  247. m.replace("var:allCells",
  248. /(=null;)(\w+)(.hasOwnProperty\(\w+\)?)/,
  249. "$1" + "$v=$2;" + "$2$3",
  250. "$v = {}")
  251.  
  252. m.replace("var:myCells",
  253. /(case 32:)(\w+)(\.push)/,
  254. "$1" + "$v=$2;" + "$2$3",
  255. "$v = []")
  256.  
  257. m.replace("var:top",
  258. /case 49:[^:]+?(\w+)=\[];/,
  259. "$&" + "$v=$1;",
  260. "$v = []")
  261.  
  262. m.replace("var:topTeams",
  263. /case 50:(\w+)=\[];/,
  264. "$&" + "$v=$1;",
  265. "$v = []")
  266.  
  267. var dr = "(\\w+)=\\w+\\.getFloat64\\(\\w+,!0\\);\\w+\\+=8;\\n?"
  268. var dd = 7071.067811865476
  269. m.replace("var:dimensions hook:dimensionsUpdated",
  270. RegExp("case 64:"+dr+dr+dr+dr),
  271. "$&" + "$v = [$1,$2,$3,$4],$H($1,$2,$3,$4),",
  272. "$v = " + JSON.stringify([-dd,-dd,dd,dd]))
  273.  
  274. var vr = "(\\w+)=\\w+\\.getFloat32\\(\\w+,!0\\);\\w+\\+=4;"
  275. m.save() &&
  276. m.replace("var:rawViewport:x,y var:disableRendering:1",
  277. /else \w+=\(5\*\w+\+(\w+)\)\/6,\w+=\(5\*\w+\+(\w+)\)\/6,.*?;/,
  278. "$&" + "$v0.x=$1; $v0.y=$2; if($v1)return;") &&
  279. m.replace("var:disableRendering:2 hook:skipCellDraw",
  280. /(\w+:function\(\w+\){)(if\(this\.\w+\(\)\){\+\+this\.[\w$]+;)/,
  281. "$1" + "if($v || $H(this))return;" + "$2") &&
  282. m.replace("var:rawViewport:scale",
  283. /Math\.pow\(Math\.min\(64\/\w+,1\),\.4\)/,
  284. "($v.scale=$&)") &&
  285. m.replace("var:rawViewport:x,y,scale",
  286. RegExp("case 17:"+vr+vr+vr),
  287. "$&" + "$v.x=$1; $v.y=$2; $v.scale=$3;") &&
  288. m.reset_("window.agar.rawViewport = {x:0,y:0,scale:1};" +
  289. "window.agar.disableRendering = false;") ||
  290. m.restore()
  291.  
  292. m.replace("reset hook:connect var:ws var:webSocket",
  293. /new WebSocket\((\w+)\);/,
  294. "$v1 = $&; $v0=$1;" + m.reset + "$H();",
  295. "$v0 = ''; $v1 = null;")
  296.  
  297. m.replace("property:scale",
  298. /function \w+\(\w+\){\w+\.preventDefault\(\);[^;]+;1>(\w+)&&\(\1=1\)/,
  299. `;${makeProperty("scale", "$1")};$&`)
  300.  
  301. m.replace("var:minScale",
  302. /;1>(\w+)&&\(\1=1\)/,
  303. ";$v>$1 && ($1=$v)",
  304. "$v = 1")
  305.  
  306. m.replace("var:region",
  307. /console\.log\("Find "\+(\w+\+\w+)\);/,
  308. "$&" + "$v=$1;",
  309. "$v = ''")
  310.  
  311. m.replace("cellProperty:isVirus",
  312. /((\w+)=!!\(\w+&1\)[\s\S]{0,400})((\w+).(\w+)=\2;)/,
  313. "$1$4.isVirus=$3")
  314.  
  315. m.replace("var:dommousescroll",
  316. /("DOMMouseScroll",)(\w+),/,
  317. "$1($v=$2),")
  318.  
  319. m.replace("var:skinF hook:cellSkin",
  320. /(\w+.fill\(\))(;null!=(\w+))/,
  321. "$1;" +
  322. "if($v)$3 = $v(this,$3);" +
  323. "if($h)$3 = $h(this,$3);" +
  324. "$2");
  325.  
  326. m.replace("hook:afterCellStroke",
  327. /\((\w+)\.strokeStyle="#000000",\1\.globalAlpha\*=\.1,\1\.stroke\(\)\);\1\.globalAlpha=1;/,
  328. "$&" + "$H(this);")
  329.  
  330. m.replace("var:showStartupBg",
  331. /\w+\?\(\w\.globalAlpha=\w+,/,
  332. "$v && $&",
  333. "$v = true")
  334.  
  335. var vAlive = /\((\w+)\[(\w+)\]==this\){\1\.splice\(\2,1\);/.exec(m.text)
  336. var vEaten = /0<this\.[$\w]+&&(\w+)\.push\(this\)}/.exec(m.text)
  337. !vAlive && console.error("Expose: can't find vAlive")
  338. !vEaten && console.error("Expose: can't find vEaten")
  339. if (vAlive && vEaten)
  340. m.replace("var:aliveCellsList var:eatenCellsList",
  341. RegExp(vAlive[1] + "=\\[\\];" + vEaten[1] + "=\\[\\];"),
  342. "$v0=" + vAlive[1] + "=[];" + "$v1=" + vEaten[1] + "=[];",
  343. "$v0 = []; $v1 = []")
  344.  
  345. m.replace("hook:drawScore",
  346. /(;(\w+)=Math\.max\(\2,(\w+\(\))\);)0!=\2&&/,
  347. "$1($H($3))||0!=$2&&")
  348.  
  349. m.replace("hook:beforeTransform hook:beforeDraw var:drawScale",
  350. /(\w+)\.save\(\);\1\.translate\((\w+\/2,\w+\/2)\);\1\.scale\((\w+),\3\);\1\.translate\((-\w+,-\w+)\);/,
  351. "$v = $3;$H0($1,$2,$3,$4);" + "$&" + "$H1($1,$2,$3,$4);",
  352. "$v = 1")
  353.  
  354. m.replace("hook:afterDraw",
  355. /(\w+)\.restore\(\);(\w+)&&\2\.width&&\1\.drawImage/,
  356. "$H();" + "$&")
  357.  
  358. m.replace("hook:cellColor",
  359. /(\w+=)this\.color,/,
  360. "$1 ($h && $h(this, this.color) || this.color),")
  361.  
  362. m.replace("var:drawGrid",
  363. /(\w+)\.globalAlpha=(\.2\*\w+);/,
  364. "if(!$v)return;" + "$&",
  365. "$v = true")
  366.  
  367. m.replace("hook:drawCellMass",
  368. /&&\((\w+\|\|0==\w+\.length&&\(!this\.\w+\|\|this\.\w+\)&&20<this\.size)\)&&/,
  369. "&&( $h ? $h(this,$1) : ($1) )&&")
  370.  
  371. m.replace("hook:cellMassText",
  372. /(\.\w+)(\(~~\(this\.size\*this\.size\/100\)\))/,
  373. "$1( $h ? $h(this,$2) : $2 )")
  374.  
  375. m.replace("hook:cellMassTextScale",
  376. /(\.\w+)\((this\.\w+\(\))\)([\s\S]{0,1000})\1\(\2\/2\)/,
  377. "$1($2)$3$1( $h ? $h(this,$2/2) : ($2/2) )")
  378.  
  379. m.replace("var:enableDirectionSending",
  380. /;64>(\w+)\*\1\+(\w+)\*\2/,
  381. ";if(!$v)return" + "$&",
  382. "$v = true")
  383.  
  384. m.replace("var:simpleCellDraw",
  385. /(:function\(\){)(var a=10;)/,
  386. "$1 if($v)return true;$2",
  387. "$v=false")
  388.  
  389. m.replace("hook:updateLeaderboard",
  390. /({\w+=null;)(if\(null!=)/,
  391. "$1 if($H())return; $2")
  392.  
  393. var template = (key,n) =>
  394. `this\\.${key}=\\w+\\*\\(this\\.(\\w+)-this\\.(\\w+)\\)\\+this\\.\\${n};`
  395. var re = new RegExp(template('x', 2) + template('y', 4) + template('size', 6))
  396. var match = re.exec(m.text)
  397. if (match) {
  398. m.cellProp.nx = match[1]
  399. m.cellProp.ny = match[3]
  400. m.cellProp.nSize = match[5]
  401. } else
  402. console.error("Expose: cellProp:x,y,size search failed!")
  403.  
  404. }},
  405. ]
  406.  
  407. function makeProperty(name, varname) {
  408. return "'" + name + "' in window.agar || " +
  409. "Object.defineProperty( window.agar, '"+name+"', " +
  410. "{get:function(){return "+varname+"},set:function(){"+varname+"=arguments[0]},enumerable:true})"
  411. }
  412.  
  413. if (window.top != window.self)
  414. return
  415.  
  416. if (document.readyState !== 'loading')
  417. return console.error("Expose: this script should run at document-start")
  418.  
  419. var isFirefox = /Firefox/.test(navigator.userAgent)
  420.  
  421. // Stage 1: Find corresponding rule
  422. var rules
  423. for (var i = 0; i < allRules.length; i++)
  424. if (allRules[i].hostname.indexOf(window.location.hostname) !== -1) {
  425. rules = allRules[i]
  426. break
  427. }
  428. if (!rules)
  429. return console.error("Expose: cant find corresponding rule")
  430.  
  431.  
  432. // Stage 2: Search for `main_out.js`
  433. if (isFirefox) {
  434. function bse_listener(e) { tryReplace(e.target, e) }
  435. window.addEventListener('beforescriptexecute', bse_listener, true)
  436. } else {
  437. // Iterate over document.head child elements and look for `main_out.js`
  438. for (var i = 0; i < document.head.childNodes.length; i++)
  439. if (tryReplace(document.head.childNodes[i]))
  440. return
  441. // If there are no desired element in document.head, then wait until it appears
  442. function observerFunc(mutations) {
  443. for (var i = 0; i < mutations.length; i++) {
  444. var addedNodes = mutations[i].addedNodes
  445. for (var j = 0; j < addedNodes.length; j++)
  446. if (tryReplace(addedNodes[j]))
  447. return observer.disconnect()
  448. }
  449. }
  450. var observer = new MutationObserver(observerFunc)
  451. observer.observe(document.head, {childList: true})
  452. }
  453.  
  454. // Stage 3: Replace found element using rules
  455. function tryReplace(node, event) {
  456. var scriptLinked = rules.scriptUriRe && rules.scriptUriRe.test(node.src)
  457. var scriptEmbedded = rules.scriptTextRe && rules.scriptTextRe.test(node.textContent)
  458. if (node.tagName != "SCRIPT" || (!scriptLinked && !scriptEmbedded))
  459. return false // this is not desired element; get back to stage 2
  460.  
  461. if (isFirefox) {
  462. event.preventDefault()
  463. window.removeEventListener('beforescriptexecute', bse_listener, true)
  464. }
  465.  
  466. var mod = {
  467. reset: "",
  468. text: null,
  469. history: [],
  470. cellProp: {},
  471. save() {
  472. this.history.push({reset:this.reset, text:this.text})
  473. return true
  474. },
  475. restore() {
  476. var state = this.history.pop()
  477. this.reset = state.reset
  478. this.text = state.text
  479. return true
  480. },
  481. reset_(reset) {
  482. this.reset += reset
  483. return true
  484. },
  485. replace(what, from, to, reset) {
  486. var vars = [], hooks = []
  487. what.split(" ").forEach((x) => {
  488. x = x.split(":")
  489. x[0] === "var" && vars.push(x[1])
  490. x[0] === "hook" && hooks.push(x[1])
  491. })
  492. function replaceShorthands(str) {
  493. function nope(letter, array, fun) {
  494. str = str
  495. .split(new RegExp('\\$' + letter + '([0-9]?)'))
  496. .map((v,n) => n%2 ? fun(array[v||0]) : v)
  497. .join("")
  498. }
  499. nope('v', vars, (name) => "window.agar." + name)
  500. nope('h', hooks, (name) => "window.agar.hooks." + name)
  501. nope('H', hooks, (name) =>
  502. "window.agar.hooks." + name + "&&" +
  503. "window.agar.hooks." + name)
  504. return str
  505. }
  506. var newText = this.text.replace(from, replaceShorthands(to))
  507. if(newText === this.text) {
  508. console.error("Expose: `" + what + "` replacement failed!")
  509. return false
  510. } else {
  511. this.text = newText
  512. if (reset)
  513. this.reset += replaceShorthands(reset) + ";"
  514. return true
  515. }
  516. },
  517. removeNewlines() {
  518. this.text = this.text.replace(/([,\/;])\n/mg, "$1")
  519. },
  520. get: function() {
  521. var cellProp = JSON.stringify(this.cellProp)
  522. return `window.agar={hooks:{},cellProp:${cellProp}};` +
  523. this.reset + this.text
  524. }
  525. }
  526.  
  527. if (scriptEmbedded) {
  528. mod.text = node.textContent
  529. rules.replace(mod)
  530. if (isFirefox) {
  531. document.head.removeChild(node)
  532. var script = document.createElement("script")
  533. script.textContent = mod.get()
  534. document.head.appendChild(script)
  535. } else {
  536. node.textContent = mod.get()
  537. }
  538. console.log("Expose: replacement done")
  539. } else {
  540. document.head.removeChild(node)
  541. var request = new XMLHttpRequest()
  542. request.onload = function() {
  543. var script = document.createElement("script")
  544. mod.text = this.responseText
  545. rules.replace(mod)
  546. script.textContent = mod.get()
  547. // `main_out.js` should not executed before jQuery was loaded, so we need to wait jQuery
  548. function insertScript(script) {
  549. if (typeof jQuery === "undefined")
  550. return setTimeout(insertScript, 0, script)
  551. document.head.appendChild(script)
  552. console.log("Expose: replacement done")
  553. }
  554. insertScript(script)
  555. }
  556. request.onerror = function() { console.error("Expose: response was null") }
  557. request.open("get", node.src, true)
  558. request.send()
  559. }
  560.  
  561. return true
  562. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement