From 1d2859b8becc01e3ee8ef9d9e6656f4fedc14880 Mon Sep 17 00:00:00 2001 From: pancake Date: Mon, 7 Nov 2016 04:53:09 +0100 Subject: [PATCH] Update /m webui --- shlr/www/m/disasmNavProvider.js | 47 +------------ shlr/www/m/disasmProvider.js | 81 +--------------------- shlr/www/m/hexchunkProvider.js | 81 +--------------------- shlr/www/m/index.html | 4 +- shlr/www/m/index.js | 8 +-- shlr/www/m/stylesheet.css | 3 +- shlr/www/m/tools.js | 20 +----- shlr/www/m/vendors/FileSaver.min.js | 2 +- shlr/www/m/vendors/dialog-polyfill.css | 4 -- shlr/www/m/vendors/dialog-polyfill.js | 2 +- shlr/www/m/vendors/mdl-selectfield.min.css | 2 +- shlr/www/m/vendors/mdl-selectfield.min.js | 2 +- 12 files changed, 17 insertions(+), 239 deletions(-) diff --git a/shlr/www/m/disasmNavProvider.js b/shlr/www/m/disasmNavProvider.js index bacc78e7d9..16e75da6d2 100644 --- a/shlr/www/m/disasmNavProvider.js +++ b/shlr/www/m/disasmNavProvider.js @@ -1,46 +1 @@ -'use strict'; -importScripts('/m/r2.js'); - -var LINES = 80; -var MAXLINES = Math.round(LINES * 1.20); // +20% -var TOOLONG = (LINES * 2) * 3; - -function appendTo(list, elems) { - if (elems === null) { - return; - } - for (var i = 0 ; i < elems.length ; i++) { - var offset = parseInt(elems[i].offset); - - // If the "flag" is empty, we don't care - if (elems[i].size == '0' || elems[i].size >= TOOLONG) { - continue; - } - - // If there is already a shortest element, don't care - if (typeof list[offset] !== 'undefined' && elems[i].size <= list[offset]) { - continue; - } - - list[offset] = parseInt(elems[i].size); - } -} - -self.onmessage = function() { - var data = {}; - - var allFlags; - r2.cmdj('fj ', function(flags) { - allFlags = flags; - }); - - var allFcts; - r2.cmdj('aflj', function(fcts) { - allFcts = fcts; - }); - - appendTo(data, allFlags); - appendTo(data, allFcts); - - self.postMessage(data); -}; +"use strict";function appendTo(e,n){if(null!==n)for(var s=0;s=TOOLONG||"undefined"!=typeof e[r]&&n[s].size<=e[r]||(e[r]=parseInt(n[s].size))}}importScripts("/m/r2.js");var LINES=80,MAXLINES=Math.round(1.2*LINES),TOOLONG=2*LINES*3;self.onmessage=function(){var e,n={};r2.cmdj("fj ",function(n){e=n});var s;r2.cmdj("aflj",function(e){s=e}),appendTo(n,e),appendTo(n,s),self.postMessage(n)}; \ No newline at end of file diff --git a/shlr/www/m/disasmProvider.js b/shlr/www/m/disasmProvider.js index 669e446c24..fbec43dbd4 100644 --- a/shlr/www/m/disasmProvider.js +++ b/shlr/www/m/disasmProvider.js @@ -1,80 +1 @@ -'use strict'; -importScripts('/m/r2.js'); -importScripts('/m/tools.js'); - -function extractOffset(str) { - var res = str.match(/(0x[a-fA-F0-9]+)/); - if (res === null) { - return null; - } - return res[1]; -}; - -function extractFct(str) { - var withoutHTML = str.replace(/<[^>]*>/g, ''); - var res = withoutHTML.match(/\(fcn\) ([\S^]+)/); - if (res === null) { - return null; - } - return res[1]; -} - -function extractVar(str) { - var withoutHTML = str.replace(/<[^>]*>/g, ''); - var res = withoutHTML.match(/; var ([a-zA-Z0-9]+) ([\S^]+)/); - if (res === null) { - return null; - } - return res[2]; -} - -function getChunk(where, howManyLines) { - var raw; - - // Line retrieved from the current offset - r2.cmd('pD ' + howManyLines + '@e:scr.color=1,scr.html=1 @' + where, function(d) { - raw = d; - }); - - raw = clickableOffsets(raw); - var lines = raw.split('\n'); - for (var i = 0 ; i < lines.length ; i++) { - - var fct = extractFct(lines[i]); - if (fct !== null) { - lines[i] = '' + lines[i] + ''; - } - - var variable = extractVar(lines[i]); - if (variable !== null) { - lines[i] = '' + lines[i] + ''; - } - - var offset = extractOffset(lines[i]); - if (offset !== null) { - lines[i] = '' + lines[i] + ''; - } - } - - var withContext = lines.join('\n'); - - return '
' + withContext + '
'; -} - -self.onmessage = function(e) { - if (e.data.offset < 0) { - self.postMessage({ - offset: 0, - data: 'before 0x00' - }); - } else { - var chunk = { - offset: e.data.offset, - size: e.data.size, - data: getChunk(e.data.offset, e.data.size) - }; - - // Sending the data from r2 - self.postMessage(chunk); - } -}; +"use strict";function extractOffset(t){var a=t.match(/(0x[a-fA-F0-9]+)/);return null===a?null:a[1]}function extractFct(t){var a=t.replace(/<[^>]*>/g,""),e=a.match(/\(fcn\) ([\S^]+)/);return null===e?null:e[1]}function extractVar(t){var a=t.replace(/<[^>]*>/g,""),e=a.match(/; var ([a-zA-Z0-9]+) ([\S^]+)/);return null===e?null:e[2]}function getChunk(t,a){var e;r2.cmd("pD "+a+"@e:scr.color=1,scr.html=1 @"+t,function(t){e=t}),e=clickableOffsets(e);for(var s=e.split("\n"),r=0;r"+s[r]+"");var l=extractVar(s[r]);null!==l&&(s[r]=""+s[r]+"");var c=extractOffset(s[r]);null!==c&&(s[r]=""+s[r]+"")}var f=s.join("\n");return'
'+f+"
"}importScripts("/m/r2.js"),importScripts("/m/tools.js"),self.onmessage=function(t){if(t.data.offset<0)self.postMessage({offset:0,data:"before 0x00"});else{var a={offset:t.data.offset,size:t.data.size,data:getChunk(t.data.offset,t.data.size)};self.postMessage(a)}}; \ No newline at end of file diff --git a/shlr/www/m/hexchunkProvider.js b/shlr/www/m/hexchunkProvider.js index 82f855eeb1..58f84c60a8 100644 --- a/shlr/www/m/hexchunkProvider.js +++ b/shlr/www/m/hexchunkProvider.js @@ -1,80 +1 @@ -'use strict'; -importScripts('/m/r2.js'); - -var howManyBytes; -var nbCols; -var configurationDone = false; - -function hexPairToASCII(pair) { - var chr = parseInt(pair, 16); - if (chr >= 33 && chr <= 126) { - return String.fromCharCode(chr); - } - - return '.'; -}; - -function getChunk(howManyBytes, addr, nbCols) { - if (addr < 0) { - return { - offset: 0, - hex: [], - ascii: [], - flags: [], - modified: [] - }; - } - - var raw; - - // BUG? callback called more than once - r2.cmd('p8 ' + howManyBytes + ' @' + addr, function(d) { - raw = { - offset: addr, - hex: [], - ascii: [], - flags: [], - modified: [] - }; - - var hex = []; - var ascii = ''; - for (var myIt = 0 ; myIt < howManyBytes ; myIt++) { - var pair = d[myIt * 2] + d[(myIt * 2) + 1]; - hex.push(pair); - ascii += hexPairToASCII(pair); - if (myIt % nbCols === nbCols-1) { - raw.hex.push(hex); - raw.ascii.push(ascii); - - hex = []; - ascii = ''; - } - } - }); - - r2.cmdj('fij ' + addr + ' ' + (addr + howManyBytes), function(d) { - raw.flags = d; - for (var i in raw.flags) { - raw.flags[i].size = parseInt(raw.flags[i].size); - } - }); - - return raw; -} - -self.onmessage = function(e) { - if (!configurationDone || e.data.reset) { - // Providing block size (how many byte retrieved) - howManyBytes = e.data.howManyBytes; - nbCols = e.data.nbCols; - configurationDone = true; - } else { - // Sending the data from r2 (arg is start offset) - // TODO: handle "substract" if partial required (first) - var chunk = getChunk(howManyBytes, e.data.offset, nbCols); - chunk.dir = e.data.dir; - - self.postMessage(chunk); - } -}; +"use strict";function hexPairToASCII(a){var s=parseInt(a,16);return s>=33&&s<=126?String.fromCharCode(s):"."}function getChunk(a,s,e){if(s<0)return{offset:0,hex:[],ascii:[],flags:[],modified:[]};var n;return r2.cmd("p8 "+a+" @"+s,function(o){n={offset:s,hex:[],ascii:[],flags:[],modified:[]};for(var i=[],r="",t=0;t
Overview
  • Autocompletion...
  • New Window
  • Single Panel
  • Vert Split
5004003002001001234567
Overview
  • Autocompletion...
  • New Window
  • Single Panel
  • Vert Split
5004003002001001234567

error_outline

A network error has occured

This error isn't recoverable.

\ No newline at end of file diff --git a/shlr/www/m/index.js b/shlr/www/m/index.js index 09215c2766..b69e1a93c6 100644 --- a/shlr/www/m/index.js +++ b/shlr/www/m/index.js @@ -1,4 +1,4 @@ -function ActionListener(t){this.cmd=t,this.actions={}}function Autocompletion(t,e,n,i,a){this.form_=t,this.dropdown_=e,this.cmd_=n,this.minChar_=i||2,this.maxProp_=a||10,this.init_()}function BlockNavigator(){}function ContainerZone(t,e,n){this.container=document.getElementById(t),this.ruler=document.getElementById(e),this.title=document.getElementById(n),this.currentLayout=this.Layout.FULL,this.widgets=[],this.populatedWidgets=[],this.initRuler(),this.focus_=0,this.focusListeners=[];var i=this;this.fallback=function(){var t=i.getWidget("New Widget",!1);t.setHTMLContent('

Ready !

'),i.add(t)}}function write(){var t=prompt("hexpairs, quoted string or :assembly");if(""!=t)switch(t[0]){case":":t=t.substring(1),r2.cmd('"wa '+t+'"',update);break;case'"':t=t.replace(/"/g,""),r2.cmd("w "+t,update);break;default:r2.cmd("wx "+t,update)}}function comment(){var t=prompt("comment");t&&("-"==t?r2.cmd("CC-"):r2.cmd('"CC '+t+'"'),update())}function flag(){var t=prompt("flag");t&&("-"==t?r2.cmd("f"+t):r2.cmd("f "+t),update())}function block(){var t=prompt("block");t&&t.trim()&&(r2.cmd("b "+t),update())}function flagsize(){var t=prompt("size");t&&t.trim()&&(r2.cmd("fl $$ "+t),update())}function analyze(){r2.cmd("af",function(){panelDisasm()})}function notes(){var t=widgetContainer.getWidget("Notes"),e=widgetContainer.getWidgetDOMWrapper(t),n="
"+uiButton("javascript:panelComments()","< Comments");n+='

',e.innerHTML=n}function setFlagspace(t){t||(t=prompt("name")),t&&r2.cmd("fs "+t,function(){flagspaces()})}function renameFlagspace(t){t||(t=prompt("name")),t&&r2.cmd("fsr "+t,function(){flagspaces()})}function delFlagspace(t){t||(t="."),t&&r2.cmd("fs-"+t,function(){flagspaces()})}function delAllFlags(){r2.cmd("f-*",function(){panelFlags()})}function setNullFlagspace(t){updates.registerMethod(widgetContainer.getFocus(),t?panelFlags:flagspaces),r2.cmd("fs *",function(){flagspaces()})}function flagspaces(){var t=widgetContainer.getWidget("Flag Spaces"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),flagspaces),e.innerHTML="
 "+uiRoundButton("javascript:panelFlags()","undo"),e.innerHTML+=" "+uiButton("javascript:setNullFlagspace()","Deselect"),e.innerHTML+=" "+uiButton("javascript:setFlagspace()","Add"),e.innerHTML+=" "+uiButton("javascript:delFlagspace()","Delete"),e.innerHTML+=" "+uiButton("javascript:renameFlagspace()","Rename"),e.innerHTML+="

",r2.cmd("fs",function(t){var n=t.split(/\n/),i=uiTableBegin(["+Flags","Flagspace"]);for(var a in n){var o=n[a].split(/ +/);if(o.length>=4){var s=o[2].indexOf(".")==-1,r="";r+="",r+=s?""+o[3]+"":o[3],r+="",i+=uiTableRow(["+"+o[1],r])}}i+=uiTableEnd(),e.innerHTML+=i})}function analyzeSymbols(){statusMessage("Analyzing symbols..."),r2.cmd("aa",function(){statusMessage("done"),update()})}function analyzeRefs(){statusMessage("Analyzing references..."),r2.cmd("aar",function(){statusMessage("done"),update()})}function analyzeCalls(){statusMessage("Analyzing calls..."),r2.cmd("aac",function(){statusMessage("done"),update()})}function analyzeFunction(){statusMessage("Analyzing function..."),r2.cmd("af",function(){statusMessage("done"),update()})}function analyzeNames(){statusMessage("Analyzing names..."),r2.cmd(".afna @@ fcn.*",function(){statusMessage("done"),update()})}function panelAbout(){r2.cmd("?V",function(t){alert("radare2 material webui by --pancake @ 2015-2016\n\n"+t.trim())})}function panelFunctions(){var t=widgetContainer.getWidget("Functions");t.setDark();var e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),panelDisasm),e.style.backgroundColor="#f0f0f0";var n="
";n+=uiButton("javascript:analyzeSymbols()","Symbols"),n+=uiButton("javascript:analyzeCalls()","Calls"),n+=uiButton("javascript:analyzeFunction()","Function"),n+=uiButton("javascript:analyzeRefs()","Refs"),n+=uiButton("javascript:analyzeNames()","AutoName"),n+="

",e.innerHTML=n,r2.cmd("e scr.utf8=false"),r2.cmd("afl",function(t){var n=new Table(["+Address","Name","+Size","+CC"],[!1,!0,!1,!1],"functionTable"),i=t.split(/\n/);for(var a in i){var o=i[a].match(/^(0x[0-9a-f]+)\s+([0-9]+)\s+([0-9]+(\s+\->\s+[0-9]+)?)\s+(.+)$/);null!==o&&n.addRow([o[1],o[5],o[2],o[3]])}n.insertInto(e)})}function runCommand(t){t||(t=document.getElementById("input").value),r2.cmd(t,function(t){lastConsoleOutput="\n"+t,document.getElementById("output").innerHTML=lastConsoleOutput})}function consoleKey(t){var e=document.getElementById("input");t?13==t.keyCode&&(runCommand(e.value),e.value=""):e.onkeypress=consoleKey}function panelConsole(){var t=widgetContainer.getWidget("Console"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelConsole),e.innerHTML="
";var n="onkeypress='consoleKey()' class='mdl-card--expand mdl-textfield__input' id='input'";if(inColor){e.style.backgroundColor="#202020";var i="position:fixed;padding-left:10px;top:4em;height:1.8em;color:white";e.innerHTML+="",e.innerHTML+="
"}else e.style.backgroundColor="#f0f0f0",e.innerHTML+="",e.innerHTML+=uiButton("javascript:runCommand()","Run"),e.innerHTML+="
";document.getElementById("output").innerHTML=lastConsoleOutput}function searchKey(t){var e=document.getElementById("search_input");t?13==t.keyCode&&(runSearch(e.value),e.value=""):e.onkeypress=searchKey}function runSearchMagic(){r2.cmd("/m",function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearchCode(t){t||(t=document.getElementById("search_input").value),r2.cmd('"/c '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearchString(t){t||(t=document.getElementById("search_input").value),r2.cmd("/ "+t,function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearchROP(t){t||(t=document.getElementById("search_input").value),r2.cmd('"/R '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearch(t){t||(t=document.getElementById("search_input").value),'"'==t[0]?r2.cmd('"/ '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)}):r2.cmd('"/x '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function indentScript(){var t=document.getElementById("script").value,e=t;document.getElementById("script").value=e,localStorage.script=e}function runScript(){var str=document.getElementById("script").value;localStorage.script=str,document.getElementById("scriptOutput").innerHTML="";try{var msg="\"use strict\";function log(x) { var a = document.getElementById('scriptOutput'); if (a) a.innerHTML += x + '\\n'; }\n";eval(msg+str)}catch(t){alert(t)}}function toggleScriptOutput(){var t=document.getElementById("scriptOutput");t&&(""==foo?(foo=t.innerHTML,t.innerHTML=""):(t.innerHTML=foo,foo=""))}function panelScript(){var t=widgetContainer.getWidget("Script"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelScript),e.style.backgroundColor="#f0f0f0";var n=localStorage.getItem("script"),i="
"+uiButton("javascript:runScript()","Run");i+=" "+uiButton("javascript:indentScript()","Indent"),i+=" "+uiButton("javascript:toggleScriptOutput()","Output"),i+='

',i+='",e.innerHTML=i}function panelSearch(){var t=widgetContainer.getWidget("Search"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelSearch),e.style.backgroundColor="#f0f0f0";var n="background-color:white !important;padding-left:10px;top:3.5em;height:1.8em;color:white",i="mdl-card--expand mdl-textfield__input",a="
";a+="",a+="
",a+=uiButton("javascript:runSearch()","Hex"),a+=uiButton("javascript:runSearchString()","String"),a+=uiButton("javascript:runSearchCode()","Code"),a+=uiButton("javascript:runSearchROP()","ROP"),a+=uiButton("javascript:runSearchMagic()","Magic"),a+="

",a+="
",e.innerHTML=a}function panelFlags(){var t=widgetContainer.getWidget("Flags"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),panelDisasm),e.style.backgroundColor="#f0f0f0",e.innerHTML="
",e.innerHTML+=uiButton("javascript:flagspaces()","Spaces"),e.innerHTML+=uiButton("javascript:delAllFlags()","DeleteAll"),e.innerHTML+="

",r2.cmd("f",function(t){var n=new Table(["+Offset","+Size","Name"],[!0,!0,!1],"flagsTable"),i=t.split(/\n/);for(var a in i){var o=i[a].split(/ /);o.length>=3&&n.addRow([o[0],o[1],o[2]])}n.insertInto(e)})}function up(){r2.cmd("s--"),update()}function down(){r2.cmd("s++"),update()}function srpc(){r2.cmd("sr pc",update)}function stepi(){nativeDebugger?r2.cmd("ds",update):r2.cmd("aes",update)}function cont(){nativeDebugger?r2.cmd("dc",update):r2.cmd("aec",update)}function setbp(){r2.cmd("db $$",update)}function setreg(){var t=prompt("register=value");""!=t&&(nativeDebugger?r2.cmd("dr "+t+";.dr*",update):r2.cmd("aer "+t+";.ar*",update))}function panelDebug(){r2.cmd("e cfg.debug",function(t){nativeDebugger="true"==t.trim()});var t=widgetContainer.getWidget("Debugger"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelDebug),lastViews.registerMethod(t.getOffset(),function(){}),inColor&&(e.style.backgroundColor="#202020");var n="
";n+=uiRoundButton("javascript:up()","keyboard_arrow_up"),n+=uiRoundButton("javascript:down()","keyboard_arrow_down"),n+=" ",n+=uiButton("javascript:srpc()","PC"),n+=uiButton("javascript:stepi()","Step"),n+=uiButton("javascript:cont()","Cont"),n+=uiButton("javascript:setbp()","BP"),n+=uiButton("javascript:setreg()","REG"),n+="




",e.innerHTML=n;var i="";if(inColor&&(i="@e:scr.color=1,scr.html=1"),nativeDebugger)var a="dr";else var a="ar";r2.cmd("f cur;."+a+"*;sr sp;px 64",function(t){var n=clickableOffsets(t);e.innerHTML+="
"+n+"
"}),r2.cmd(a+"=;s cur;f-cur;pd 128"+i,function(t){var n=clickableOffsets(t);e.innerHTML+="
"+n+"
"})}function saveProject(){r2.cmd("Ps",function(){alert("Project saved")})}function deleteProject(){alert("Project deleted"),location.href="open.html"}function closeProject(){alert("Project closed"),location.href="open.html"}function rename(){var t=prompt("name");t&&""!=t.trim()&&(r2.cmd("afn "+t),r2.cmd("f "+t),update())}function info(){var t=widgetContainer.getWidget("Info");t.setDark();var e=widgetContainer.getWidgetDOMWrapper(t),n=inColor?"white":"black",i="
";i+=uiRoundButton("javascript:panelDisasm()","undo"),i+=" ",i+=uiButton("javascript:pdtext()","Full"),i+=uiButton("javascript:pdf()","Func"),i+=uiButton("javascript:graph()","Graph"),i+=uiButton("javascript:blocks()","Blocks"),i+=uiButton("javascript:decompile()","Decompile"),e.innerHTML=i,r2.cmd("afi",function(t){e.innerHTML+="
"+t+"
"})}function blocks(){var t=widgetContainer.getWidget("Blocks"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-fixed";e.innerHTML="
",e.innerHTML+=' < INFO

';var a=inColor?"@e:scr.color=1,scr.html=1":"";r2.cmd("pdr"+a,function(t){e.innerHTML+="
"+t+"
"})}function pdtext(){var t=widgetContainer.getWidget("Function"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-fixed";e.innerHTML="
",e.innerHTML+=' < INFO

';r2.cmd("e scr.color=1;s entry0;s $S;pD $SS;e scr.color=0",function(t){t=clickableOffsets(t),e.innerHTML+="
"+t+"
"})}function pdf(){var t=widgetContainer.getWidget("Function"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";i+="mdl-color--accent mdl-color-text--accent-contrast",e.innerHTML="
",e.innerHTML+=' < INFO

';var a=inColor?"@e:scr.color=1,scr.html=1,asm.lineswidth=0":"@e:asm.lineswidth=0";r2.cmd("pdf"+a,function(t){e.innerHTML+="
"+t+"
"})}function decompile(){var t=widgetContainer.getWidget("Decompile"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";i+="mdl-color--accent mdl-color-text--accent-contrast",e.innerHTML="
",e.innerHTML+=' < INFO

';var a=inColor?"@e:scr.color=1,scr.html=1":"";r2.cmd("pdc"+a,function(t){e.innerHTML+="
"+t+"
"})}function graph(){var t=widgetContainer.getWidget("Graph"),e=widgetContainer.getWidgetDOMWrapper(t);t.setDark(),e.setAttribute("content","user-scalable=yes, width=device-width, minimum-scale=1, maximum-scale=1"),e.style.overflow="auto";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";e.innerHTML='
 < DISASM';var a=inColor?"@e:scr.color=1,scr.html=1":"";r2.cmd("agf"+a,function(t){t=clickableOffsets(t),e.innerHTML+="
"+t+"
"})}function onClick(t,e){var n=document.getElementById(t);n?n.addEventListener("click",function(){e()}):console.error("onclick-error",t)}function panelHelp(){alert("TODO")}function analyzeButton(){function t(){updateFortune(),updateInfo(),updateEntropy()}E("anal_calls").checked?r2.cmd("e anal.calls=true;aac",t):r2.cmd("e anal.calls=false"),E("anal_prelude").checked&&r2.cmd("aap",t),E("anal_emu").checked?r2.cmd("e asm.emu=1;aae;e asm.emu=0",t):r2.cmd("e asm.emu=false"),E("anal_autoname").checked&&r2.cmd("aan",t),E("anal_symbols").checked&&r2.cmd("aa",t)}function ready(){if(!twice){twice=!0,applyConf(),updates=new UpdateManager,lastViews=new UpdateManager,widgetContainer=new ContainerZone("content","ruler","title"),widgetContainer.fallbackWidget(panelDisasm),widgetContainer.addFocusListener(updates),widgetContainer.addFocusListener(lastViews),update=function(){updates.apply()},lastView=function(){lastViews.apply()},panelOverview(),onClick("analyze_button",analyzeButton),onClick("menu_overview",panelOverview),onClick("menu_disasm",panelDisasm),onClick("menu_debug",panelDebug),onClick("menu_hexdump",panelHexdump),onClick("menu_functions",panelFunctions),onClick("menu_flags",panelFlags),onClick("menu_search",panelSearch),onClick("menu_comments",panelComments),onClick("menu_script",panelScript),onClick("menu_help",panelHelp),onClick("menu_project_save",saveProject),onClick("menu_project_delete",deleteProject),onClick("menu_project_close",closeProject),onClick("menu_seek",seek),onClick("menu_settings",panelSettings),onClick("menu_about",panelAbout),onClick("menu_mail",function(){window.location="mailto:pancake@nopcode.org"});var t=new Autocompletion("search","search_autocomplete","fs *;fj");t.setPrepareView(function(){widgetContainer.isSplitted()||widgetContainer.split(widgetContainer.Layout.VERTICAL),disasm.draw()}),document.querySelector(".mdl-layout__drawer").addEventListener("click",function(){document.querySelector(".mdl-layout__obfuscator").classList.remove("is-visible"),this.classList.remove("is-visible")},!1)}}function RadareInfiniteBlock(){}function setStatusbarBody(){function t(t,e){var n=document.createElement(t);return n.id=e,n.className=e,n}var e;try{var n=document.getElementById("tab_terminal");n.innerHTML="",n.parentNode.removeChild(n)}catch(t){}try{var n=document.getElementById("tab_logs");n.innerHTML="",n.parentNode.removeChild(n)}catch(t){}switch(statusTab){case Tab.LOGS:var i=new DOMParser,e=document.createElement("div");e.id="tab_logs";var a=statusLog.join("
");e.appendChild(i.parseFromString(a,"text/xml").documentElement);var n=document.getElementById("statusbar_body");try{n.parentNode.insertBefore(e,n)}catch(t){}return void console.log(n);case Tab.CONSOLE:var e=document.createElement("div");e.id="tab_terminal",e.appendChild(t("div","terminal")),e.appendChild(t("div","terminal_output"));var o=t("div","terminal_prompt");o.appendChild(t("input","terminal_input")),e.appendChild(o)}if(void 0!==e){var n=document.getElementById("statusbar"),s=document.getElementById("terminal");s||(n.parentNode.insertBefore(e,n),statusTab===Tab.CONSOLE&&terminal_ready())}}function statusMessage(t,e){var n=document.getElementById("statusbar");t&&statusLog.push(t),statusMode===Mode.LINE?(n.innerHTML=t,null!==statusTimeout&&(clearTimeout(statusTimeout),statusTimeout=null),void 0!==e&&(statusTimeout=setTimeout(function(){statusMessage(" ")},1e3*e))):setStatusbarBody()}function statusToggle(){var t=document.getElementById("statusbar"),e=document.getElementById("container");if(statusMode==Mode.HALF){statusTab=Tab.LOGS,statusMode=Mode.LINE,t.innerHTML=" ";try{t.parentNode.classList.remove("half"),t.parentNode.classList.remove("full"),e.classList.remove("sbIsHalf"),e.classList.remove("sbIsFull")}catch(t){}setStatusbarBody()}else{statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}t.parentNode.classList.add("half"),e.classList.add("sbIsHalf")}}function statusNext(){var t=document.getElementById("statusbar"),e=document.getElementById("container");switch(statusMode){case Mode.LINE:statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}t.parentNode.classList.add("half"),e.classList.add("sbIsHalf");break;case Mode.HALF:return statusMode=Mode.FULL,t.parentNode.classList.add("full"),void e.classList.add("sbIsFull");case Mode.FULL:statusMode=Mode.LINE,statusTab=Tab.LOGS,t.innerHTML="";try{var t=document.getElementById("statusbar"),e=document.getElementById("container");t.parentNode.classList.remove("half"),t.parentNode.classList.remove("full"),e.classList.remove("sbIsHalf"),e.classList.remove("sbIsFull")}catch(t){}}setStatusbarBody()}function statusConsole(){var t=document.getElementById("statusbar"),e=document.getElementById("container");if(statusTab===Tab.CONSOLE){if(statusMode!==Mode.LINE)return statusToggle(),void(statusMode=Mode.LINE);statusTab=Tab.CONSOLE}if(statusMode===Mode.HALF)statusMode=Mode.LINE;else if(statusMode===Mode.LINE){statusTab=Mode.CONSOLE,statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}try{t.parentNode.classList.add("half"),e.classList.add("sbIsHalf")}catch(t){}}statusTab=statusTab==Tab.CONSOLE?Tab.LOGS:Tab.CONSOLE,setStatusbarBody()}function statusFullscreen(){var t=document.getElementById("statusbar"),e=document.getElementById("container");if(statusMode==Mode.FULL){statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}t.parentNode.classList.add("half"),e.classList.add("sbIsHalf")}else{statusMode=Mode.FULL;try{t.parentNode.classList.remove("half"),e.classList.remove("sbIsHalf")}catch(t){}t.parentNode.classList.add("full"),e.classList.add("sbIsFull")}}function addButton(t,e){var n=document.createElement("a");return n.href="javascript:"+e+"()",n.innerHTML=t,n}function initializeStatusbarTitle(){return}function statusInitialize(){initializeStatusbarTitle();var t=document.getElementById("statusbar");t.innerHTML="",t.parentNode.addEventListener("click",function(){statusMode==Mode.LINE&&(statusTab=Tab.CONSOLE,statusToggle())}),statusMessage("Loading webui...",2)}function submit(t){var e=document.getElementById("terminal_output"),n=document.getElementById("terminal_input");return n&&e?"clear"===t?(e.innerHTML="",void(n.value="")):void r2.cmd(t,function(i){i+="\n",e.innerHTML+=" > "+t+"\n"+i,n.value="";var a=document.getElementById("statusbar_scroll");a.scrollTop=a.scrollHeight}):void console.error("No terminal_{input|output} found")}function terminal_ready(){r2.cmd("e scr.color=true");var t=document.getElementById("terminal_input");return t?(t.focus(),void(t.onkeypress=function(e){13==e.keyCode&&submit(t.value)})):void console.error("Cannot find terminal_input")}function E(t){return document.getElementById(t)}function encode(t){return t.replace(/[\x26\x0A\<>'"]/g,function(t){return"&#"+t.charCodeAt(0)+";"})}function clickableOffsets(t){return t=t.replace(/0x([a-zA-Z0-9]*)/g,"0x$1"),t=t.replace(/sym\.([\.a-zA-Z0-9_]*)/g,"sym.$1"),t=t.replace(/fcn\.([\.a-zA-Z0-9_]*)/g,"fcn.$1"),t=t.replace(/str\.([\.a-zA-Z0-9_]*)/g,"str.$1")}function uiButton(t,e,n){var i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";if("active"==n){var a='style="background-color:#f04040 !important"';return' "+e+""}return' '+e+""}function uiCheckList(t,e,n){var i="
  • ";return ouput+='
  • ",i}function uiCombo(d){var funName="combo"+ ++comboId,fun=funName+" = function(e) {";fun+=' var sel = document.getElementById("opt_'+funName+'");',fun+=" var opt = sel.options[sel.selectedIndex].value;",fun+=" switch (opt) {";for(var a in d)fun+='case "'+d[a].name+'": '+d[a].js+"("+d[a].name+");break;";fun+="}}",eval(fun);var out='"}function uiSwitch(t,e,n,i){var a="switch-"+ ++idSwitch,o=document.createElement("label");o.className="mdl-switch mdl-js-switch mdl-js-ripple-effect",o.for=a,t.appendChild(o);var s=document.createElement("input");s.type="checkbox",s.className="mdl-switch__input",s.checked=n,s.id=a,o.appendChild(s),s.addEventListener("change",function(t){i(e,t.target.checked)});var r=document.createElement("span");r.className="mdl-switch__label",r.innerHTML=e,o.appendChild(r);var l=document.createElement("br");o.appendChild(l)}function uiActionButton(t,e,n){var i=document.createElement("a");i.href="#",i.innerHTML=n,i.addEventListener("click",e),t.appendChild(i);var a="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";a+="mdl-color--accent mdl-color-text--accent-contrast",i.className=a,i.style.margin="3px"}function uiSelect(t,e,n,i,a){var o="select-"+ ++selectId,s=document.createElement("div");s.className="mdl-selectfield mdl-js-selectfield mdl-selectfield--floating-label",t.appendChild(s);var r=document.createElement("select");r.className="mdl-selectfield__select",r.id=o,r.name=o,s.appendChild(r);for(var l=0;l"+i.name+": ",e+=uiCombo(i.buttons)}return e}function uiRoundButton(t,e,n){var i="";return i+=""}function Table(t,e,n,i){this.cols=t,this.nonum=e,this.clickableOffset=new Array(t.length),this.clickableOffset.fill(!1),this.contentEditable=new Array(t.length),this.contentEditable.fill(!1),this.onChange=i,this.id=n||!1,this.init()}function uiTableBegin(t,e){var n="",i=e||"",a="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp";n+='',n+=" ";var o;for(var s in t){var r=t[s];"+"==r[0]?(r=r.substring(1),o=""):o=' class="mdl-data-table__cell--non-numeric"',n+=""+r+""}return n+=""}function uiTableRow(t){var e="";for(var n in t){var i=t[n];i&&("+"==i[0]?(i=clickableOffsets(i.substring(1)),type=""):type=' class="mdl-data-table__cell--non-numeric"',e+=""+i+"")}return e+""}function uiTableEnd(){return"
    "}function UpdateManager(){this.updateMethods=[{},{}],this.currentFocus=void 0}function Widget(t,e){this.name=t,this.identifier=e,"undefined"!=typeof e&&(this.DOMWrapper=document.getElementById(e))}function Disasm(t,e){this.container=new FlexContainer(t,"disasm"),this.lineHeight=e,this.refreshInitialOffset(),this.init(),this.offsetHistory=["0x"+this.initialOffset.toString(16)],this.indexOffsetHistory=0;var n=this;seekAction.registerLocalAction("Disassembly",function(t){for(var e=n.offsetHistory.length-1-n.indexOffsetHistory,i=0;i=33&&e<=126?String.fromCharCode(e):"."}function ASCIIToHexpair(t){var e=t.charCodeAt(0).toString(16);return e.length<2&&(e="0"+e),e}function isAsciiVisible(t){return t>=33&&t<=126}function basename(t){return t.split(/[\\/]/).pop()}function int2fixedHex(t,e){for(var n=t.toString(16);n.length",e.innerHTML+=uiButton("javascript:notes()","Notes"),e.innerHTML+="

    ",r2.cmd("CC",function(t){var n=new Table(["+Offset","~Comment"],[!0,!1],"commentsTable",function(t,e){var n=t[0];r2.cmd("CC- @ "+n),r2.cmd("CCu base64:"+window.btoa(e)+" @ "+n),update()}),i=t.split(/\n/);for(var a in i){var o=i[a].split(/ (.+)?/);o.length>=2&&n.addRow([o[0],o[1]])}n.insertInto(e)})}function panelDisasm(){var t=widgetContainer.getWidget("Disassembly"),e=widgetContainer.getWidgetDOMWrapper(t);e.classList.add("disasmPanel"),"undefined"==typeof disasm?disasm=new Disasm(e,24):disasm.resetContainer(e),disasm.draw(),t.setDark();var n=function(){disasm.refreshInitialOffset(),disasm.resetContainer(e),disasm.draw(),t.setDark()};updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),n)}function panelHexdump(){var t=widgetContainer.getWidget("Hexdump"),e=widgetContainer.getWidgetDOMWrapper(t);if(e.classList.add("hexdump"),"undefined"==typeof hexdump){var n;r2.cmd("e cfg.bigendian",function(t){n="true"==t}),hexdump=new Hexdump(e,24,n),hexdump.setOnChangeCallback(function(t,e,n){console.log("changed")})}else hexdump.resetContainer(e);hexdump.draw(),t.setDark();var i=function(){hexdump.refreshInitialOffset(),hexdump.resetContainer(e),hexdump.draw(),t.setDark()};updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),i)}function panelOverview(){var t=widgetContainer.getWidget("Overview"),e=widgetContainer.getWidgetDOMWrapper(t);lastViews.registerMethod(t.getOffset(),panelDisasm),updates.registerMethod(t.getOffset(),function(){});var n='
    ';n+='
    ',n+='\t
    ',n+='\t\t
    ',n+='\t\t\tHdr',n+='\t\t\tSym',n+='\t\t\tImp',n+='\t\t\tRel',n+='\t\t\tSec',n+='\t\t\tStr',n+='\t\t\tSDB',n+="\t\t
    ",n+='\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+="\t\t
    ",n+="\t
    ",n+="
    ",n+='
    ',n+='\t
    ',n+='\t\t
    ',n+='\t\t
    ',n+='\t\t\t

    Analysis Options

    ',n+="\t\t
    ",n+="\t\t\t
      ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t
    ",n+="\t\t
    ",n+='\t\t
    ',n+='\t\t\tAnalyze',n+='\t\t\t
    ',n+='\t\t\troom',n+="\t\t
    ",n+="\t
    ",n+='\t
    ',n+='\t
    ',n+='\t\t
    ',n+='\t\t\t

    Fortunes

    ',n+="\t\t
    ",n+='\t\t
    ',n+="\t\t\tAlways use r2 from git",n+="\t\t
    ",n+='\t\t
    ',n+='\t\t\tNext',n+="\t\t
    ",n+="\t
    ",n+="
    ",n+='
    ',n+="\t

    Entropy

    ",n+='\t',n+="
    ",n+='
    ',n+='\t',n+='\t\t',n+='\t\tcode',n+='\t\t82%',n+="\t",n+='\t',n+='\t\t',n+='\t\tdata',n+='\t\t22%',n+="\t",n+='\t',n+='\t\t',n+='\t\tstrings',n+='\t\t4%',n+="\t",n+='\t',n+='\t\t',n+='\t\tfunctions',n+='\t\t82%',n+="\t",n+="
    ",n+="
    ",e.innerHTML=n,updateFortune(),updateInfo(),updateEntropy(),componentHandler.upgradeDom();var i=document.getElementById("info-cell").getBoundingClientRect().height,a=document.getElementById("overview-content");a.style.height=i-document.getElementById("overview-tabs").getBoundingClientRect().height+"px",a.style.overflow="auto"}function updateFortune(){r2.cmd("fo",function(t){document.getElementById("fortune").innerHTML=t,readFortune()})}function speak(t,e){if("undefined"!=typeof SpeechSynthesisUtterance){var n=new SpeechSynthesisUtterance;n.text=t,n.lang="en-US",n.onend=function(){e&&e()},n.onerror=function(t){e&&e(t)},speechSynthesis.speak(n)}}function readFortune(){var t=document.getElementById("fortune").innerHTML;R2Conf.useTTS.value===!1||speak(t)}function updateInfo(){r2.cmd("i",function(t){var e=t.split(/\n/g),n=e.slice(0,e.length/2),i=e.slice(e.length/2),a="";a+="

    ",a+="
    ";for(var o in n){var s=n[o].split(/ (.+)?/);s.length>=2&&(a+=""+s[0]+" "+s[1]+"
    ")}a+="
    ";for(var o in i){var s=i[o].split(/ (.+)?/);s.length>=2&&(a+=""+s[0]+" "+s[1]+"
    ")}a+="
    ",document.getElementById("tab-info").innerHTML=a})}function updateEntropy(){var t=document.getElementById("entropy-graph"),e=t.viewBox.baseVal.height,n=(0|e)-19;r2.cmd("p=ej 50 $s @ $M",function(e){var i="",a=JSON.parse(e),o=new Array;for(var s in a.entropy)o.push(a.entropy[s].value);var r=o.length,l=Math.min.apply(null,o),c=Math.max.apply(null,o),d=500/r;for(var s in o){var u=.1+.9*((o[s]-l)/(c-l)),p="0x"+a.entropy[s].addr.toString(16);i+='',i+=p+" ",s%8==0&&(i+='',i+=p+"")}t.innerHTML=i,t.onclick=function(e){var n=t.getBoundingClientRect(),i=e.clientX-n.left,o=0|i/(n.width/r),s="0x"+a.entropy[o].addr.toString(16);seek(s)}})}function overviewLoad(t,e){if(!e.ready){var n=e[0],n=(e[1],e.cmd);e.grep&&(n+="~"+e.grep),r2.cmd(n,function(e){var n=document.getElementById(t.href.split("#")[1]);n.innerHTML="
    "+clickableOffsets(e)+"
    "}),e.ready=!0}}function getConf(t){var e=localStorage.getItem(t.name);return null!==e?("false"===e?e=!1:"true"===e&&(e=!0),e):t.defVal}function saveConf(t,e){localStorage.setItem(t.name,e),t.apply(e)}function applyConf(t){t="undefined"!=typeof t&&t;for(var e in R2Conf){var n=R2Conf[e];(!t&&getConf(n)!==n.defVal||t)&&n.apply(getConf(n))}}function resetConf(){for(var t in R2Conf){var e=R2Conf[t];localStorage.removeItem(e.name)}applyConf(!0)}function panelSettings(){var t=widgetContainer.getWidget("Settings"),e=widgetContainer.getWidgetDOMWrapper(t);e.innerHTML="",updates.registerMethod(t.getOffset(),panelSettings);var n=document.createElement("div");n.className="mdl-grid",e.appendChild(n);var i=createGrid(n,"Platform");drawPlatform(i);var a=createGrid(n,"Disassembly");drawDisassembly(a);var o=createGrid(n,"Core/IO");drawCoreIO(o);var s=createGrid(n,"Analysis");drawAnalysis(s);var r=createGrid(n,"Colors");drawColors(r);var l=createGrid(n,"TTS");drawTTS(l);var c=createGrid(n,"Reset configuration");uiActionButton(c,function(){resetConf(),update()},"RESET"),componentHandler.upgradeDom()}function savedFromList(t,e,n){var i=n,a=localStorage.getItem(e);return null!==a&&(i=t.indexOf(a)),i}function drawPlatform(t){var e=["x86","arm","mips","java","dalvik","6502","8051","h8300","hppa","i4004","i8008","lh5801","lm32","m68k","malbolge","mcs96","msp430","nios2","ppc","rar","sh","snes","sparc","spc700","sysz","tms320","v810","v850","ws","xcore","prospeller","gb","z80","arc","avr","bf","cr16","cris","csr","dcpu16","ebc"];uiSelect(t,"Platform",e,e.indexOf(getConf(R2Conf.platform)),function(t){saveConf(R2Conf.platform,t)});var n=["64","32","16","8"];uiSelect(t,"Bits",n,n.indexOf(getConf(R2Conf.bits)),function(t){saveConf(R2Conf.bits,t)});var i=["Linux","Windows","OSX"];uiSelect(t,"OS",i,i.indexOf(getConf(R2Conf.os)),function(t){saveConf(R2Conf.os,t)})}function drawDisassembly(t){var e=["S","M","L"];uiSelect(t,"Size",e,e.indexOf(getConf(R2Conf.size)),function(t){saveConf(R2Conf.size,t)});var n=["Pseudo","Opcodes","ATT"];uiSelect(t,"Decoding",n,n.indexOf(getConf(R2Conf.decoding)),function(t){saveConf(R2Conf.decoding,t)}),uiSwitch(t,"Utf8",getConf(R2Conf.utf8),function(t,e){saveConf(R2Conf.utf8,e)}),uiSwitch(t,"UpperCase",getConf(R2Conf.ucase),function(t,e){saveConf(R2Conf.ucase,e)}),uiSwitch(t,"Show Bytes",getConf(R2Conf.bytes),function(t,e){saveConf(R2Conf.bytes,e)}),uiSwitch(t,"DescribeOps",getConf(R2Conf.describe),function(t,e){saveConf(R2Conf.describe,e)})}function drawCoreIO(t){var e=["PA","VA","Debug"];uiSelect(t,"Mode",e,e.indexOf(getConf(R2Conf.mode)),function(t){saveConf(R2Conf.mode,t)})}function drawAnalysis(t){var e=function(t,e,n){saveConf(n,e)};uiSwitch(t,"HasNext",getConf(R2Conf.analHasNext),function(t,n){return e(t,n,R2Conf.analHasNext)}),uiSwitch(t,"Skip Nops",getConf(R2Conf.analSkipNops),function(t,n){return e(t,n,R2Conf.analSkipNops)}),uiSwitch(t,"NonCode",getConf(R2Conf.analNonCode),function(t,n){return e(t,n,R2Conf.analNonCode)})}function drawColors(t){var e;r2.cmdj("ecoj",function(t){e=t}),uiSwitch(t,"Colors",getConf(R2Conf.colors),function(t,e){saveConf(R2Conf.colors,e)}),uiActionButton(t,function(){r2.cmd("ecr",function(){update()})},"Randomize"),uiActionButton(t,function(){r2.cmd("ecd",function(){update()})},"Reset colors"),uiSelect(t,"Theme",e,e.indexOf(getConf(R2Conf.theme)),function(t){saveConf(R2Conf.theme,t)})}function drawTTS(t){uiSwitch(t,"Use TTS",getConf(R2Conf.useTTS),function(t,e){saveConf(R2Conf.useTTS,e)})}function createGrid(t,e){var n=document.createElement("div");n.className="mdl-cell mdl-color--white mdl-shadow--2dp mdl-cell--4-col",n.style.padding="10px",t.appendChild(n);var i=document.createElement("span");i.className="mdl-layout-title",i.innerHTML=e,n.appendChild(i);var a=document.createElement("div");return n.appendChild(a),a}ActionListener.prototype.registerLocalAction=function(t,e){this.actions[t]=e},ActionListener.prototype.applyGlobal=function(t){this.cmd(t)},ActionListener.prototype.apply=function(t){if(this.applyGlobal(t),"undefined"!=typeof t)for(var e=widgetContainer.getCurrentlyDrawn(),n=0;n=e.minChar_&&e.show()}),this.form_.addEventListener("blur",function(){e.hide()}),this.flags_=void 0,this.activeChoice_=0,this.prevLength_=0,this.list_,this.completions_,this.populate_()},Autocompletion.prototype.populate_=function(){var t=this;r2.cmdj(this.cmd_,function(e){t.flags_=e})},Autocompletion.prototype.process_=function(t){for(var e=[],n=0,i=0;i0&&(console.log("UP"),this.setActiveChoice(this.activeChoice_-1)),t==this.Keys.DOWN&&this.activeChoice_=2){if(this.show(),this.completions_=this.process_(e),this.prevLength_!==e.length&&(this.activeChoice_=0),0==this.completions_.length)this.addNode_(this.Nodes.EMPTY,!1);else for(var n in this.completions_)this.addNode_(this.completions_[n],n==this.activeChoice_);this.prevLength_=e.length}else this.hide()},Autocompletion.prototype.setPrepareView=function(t){this.preparationCallback=t},Autocompletion.prototype.prepareView=function(){"undefined"!=typeof this.preparationCallback&&this.preparationCallback()},BlockNavigator.prototype.Dir={BEFORE:-1,CURRENT:0,AFTER:1},BlockNavigator.prototype.Status={LAUNCHED:0,COMPLETED:1},BlockNavigator.prototype.init=function(){return"undefined"==typeof this.providerWorker?void console.log("provider worker should be defined"):void this.configureWorker_()},BlockNavigator.prototype.configureWorker_=function(){var t=this;this.providerWorker.onmessage=function(e){if(e.data.dir===t.Dir.CURRENT){if("undefined"!=typeof t.curChunk.data.callback)for(var n=0;n=e},ContainerZone.prototype.Layout={FULL:"full",HORIZONTAL:"horizontal",VERTICAL:"vertical"},ContainerZone.prototype.fallbackWidget=function(t){this.fallback=t},ContainerZone.prototype.initRuler=function(){var t={},e=this;this.rulerProp={gap:.005,pos:.5};var n=function(n){t={startX:n.clientX,startWidth:parseInt(document.defaultView.getComputedStyle(e.ruler).width,10),interval:n.clientX-e.ruler.offsetLeft},document.documentElement.addEventListener("mousemove",i,!1),document.documentElement.addEventListener("mouseup",a,!1),n.preventDefault()},i=function(n){var i=(n.clientX-t.interval)/e.container.offsetWidth;e.rulerProp.pos=i,e.container.children[0].style.width=100*(i-e.rulerProp.gap)+"%",e.container.children[1].style.width=100*(1-i-e.rulerProp.gap)+"%",e.ruler.style.marginLeft=100*i+"%"},a=function(){document.documentElement.removeEventListener("mousemove",i,!1),document.documentElement.removeEventListener("mouseup",a,!1)};this.ruler.addEventListener("mousedown",n)},ContainerZone.prototype.setFocus=function(t){this.focus_=t;for(var e=0;e=2;n&&(this.container.removeChild(this.container.children[this.getFocus()]),this.populatedWidgets.splice(this.getFocus(),1)),0===this.getFocus()&&n?(this.populatedWidgets.unshift(t),t.isAlreadyThere()||(this.container.insertBefore(e,this.container.children[0]),this.container.children[0].style.width=100*(this.rulerProp.pos-this.rulerProp.gap)+"%")):(this.populatedWidgets.push(t),t.isAlreadyThere()||(this.container.appendChild(e),this.container.children[1].style.width=100*(1-this.rulerProp.pos-this.rulerProp.gap)+"%"))}else this.populatedWidgets.length>=1&&this.container.removeChild(this.container.children[this.getFocus()]),this.populatedWidgets=[t],t.isAlreadyThere()||(this.container.appendChild(e),this.container.children[0].style.width="auto");this.moveFocusOnWidget(t),this.applyFocusEvent_(t),t.setOffset(this.getFocus()),this.drawTitle()}},ContainerZone.prototype.moveFocusOnWidget=function(t){this.setFocus(this.populatedWidgets.indexOf(t)),this.container.children[this.getFocus()].classList.add("focus"),this.isSplitted()&&this.container.children[(this.getFocus()+1)%2].classList.remove("focus"),this.drawTitle()},ContainerZone.prototype.drawTitle=function(){if(this.layout===this.Layout.FULL||1===this.populatedWidgets.length)this.title.innerHTML=this.populatedWidgets[0].getName();else{for(var t=[],e=0;e"+this.populatedWidgets[e].getName()+""):t.push(this.populatedWidgets[e].getName());this.title.innerHTML=t.join(" & ")}},ContainerZone.prototype.applyFocusEvent_=function(t){var e=this,n=this.getWidgetDOMWrapper(t);n.addEventListener("mousedown",function(){e.moveFocusOnWidget(t)})},ContainerZone.prototype.addFocusListener=function(t){this.focusListeners.push(t)},function(){function t(){a++,r2.cmdj("?V",function(t){"undefined"!=typeof t&&(a=0)})}function e(){if(a>0){for(var t=document.getElementsByClassName("first-attempt"),e=0;e=0&&n',t.innerHTML=e,this.history=document.getElementById("disasm-history"),this.drawHistory(this.history)},Disasm.prototype.drawHistory=function(t){var e=(this.indexOffsetHistory>0,this.indexOffsetHistoryt){e-=o;break}i=n[a]}var s=e-t,r=i.getBoundingClientRect().height-s,l=this.extractOffset_(i.children[0].id),c=l+Math.ceil(r/this.lineHeight);return c}},Disasm.prototype.replaceScrollPosition=function(t){if("undefined"!=typeof t){var e=this.nav.getChunkPositionFor(t);if(e===-1)return void console.log("Chunk position from offset not found");for(var n=this.container.getBody().children[e],i=0;"undefined"==typeof n.children[i].id;)i++;var a=this.extractOffset_(n.children[i].id),o=n.offsetTop,s=n.getBoundingClientRect().height,r=(t-a)/this.nav.getSize(a),l=Math.floor(r*s),c=o+l;this.container.getBody().scrollTop=c}},Disasm.prototype.drawContextualMenu=function(t){var e=this,n=function(t,n){var i,a=n+" @"+t;return r2.cmdj(a,function(t){i=t}),null===i||i.constructor!==Array?void alert("No available ouput!"):void e.addLongListDialog(i)},i=function(t,n,i){var a="";"undefined"!=typeof i&&(a=prompt(i+"?"),""==a)||(""!=a&&(n+=" "+a),r2.cmd(n+" @"+t),e.nav.cleanOldData(),e.draw())},a=[{aoj:!1,name:"analyze function",shortcut:"F",fct:function(t,e){return i(e,"af")}},{aoj:!0,name:"immediate base...",shortcut:"i",expand:[{name:"binary",fct:function(t,e){return i(e,"ahi b")}},{name:"octal",fct:function(t,e){return i(e,"ahi o")}},{name:"decimal",fct:function(t,e){return i(e,"ahi d")}},{name:"hexadecimal",fct:function(t,e){return i(e,"ahi h")}},{name:"string",fct:function(t,e){return i(e,"ahi s")}}]},{aoj:!1,name:"add comment",shortcut:";",fct:function(t,e){return i(e,"CC","Name")}},{aoj:!1,name:"set flag",shortcut:"f",fct:function(t,e){return i(e,"f","Name")}},{aoj:!0,name:"rename flag",shortcut:"n",fct:function(t,e){return i(e,"fr","Name")}},{aoj:!0,name:"set string",shortcut:"s",fct:function(t,e){return i(e,"Cs")}},{aoj:!1,name:"find xrefs",shortcut:"x",fct:function(t,e){return n(e,"axtj")}},{aoj:!1,name:"as data",shortcut:"D",fct:function(t,e){return i(e,"Cd ","Size")}},{aoj:!1,name:"as code",shortcut:"F",fct:function(t,e){return i(e,"C-")}},{aoj:!1,name:"as string",shortcut:"S",fct:function(t,e){return i(e,"Cs")}}],o=document.getElementById("contextmenuDisasm");if(null===o){var o=document.createElement("nav");o.id="contextmenuDisasm",o.classList.add("context-menu")}else o.innerHTML="";var s=document.createElement("ul");o.appendChild(s);for(var e=this,r=function(t,n){t.addEventListener("mousedown",function(t){return function(n){t(n,e.getCurrentOffset())}}(n))},l=0;l0x"+m+""}else h=t[l][r[p]];f.innerHTML=h}}var g=document.createElement("div");g.className="mdl-dialog__actions",e.appendChild(g);var v=document.createElement("button");v.className="mdl-button",v.innerHTML="Close",v.addEventListener("click",function(){e.close(),document.body.removeChild(e)}),g.appendChild(v),document.body.appendChild(e),componentHandler.upgradeDom(),e.showModal()},DisasmNavigator.prototype=new BlockNavigator,DisasmNavigator.prototype.constructor=DisasmNavigator,DisasmNavigator.prototype.init=function(){BlockNavigator.prototype.init.apply(this),this.currentlyShown=[],this.populateFirst()},DisasmNavigator.prototype.line2offset=function(t){return 2*t},DisasmNavigator.prototype.offset2line=function(t){return t/2},DisasmNavigator.prototype.configureWorker_=function(){var t=this;this.providerWorker.onmessage=function(e){for(var n,i=0;i=e||a<=t&&o>=t||a<=e&&o>=e||a>=t&&o<=e)&&n.push(i)}return n},DisasmNavigator.prototype.populateFirst=function(){return this.populateFrom(this.currentOffset)},DisasmNavigator.prototype.fillGap=function(t,e,n){var i=e-t;return[{offset:t,size:i,artifical:n}]},DisasmNavigator.prototype.populateFrom=function(t){for(var e=t-this.line2offset(this.howManyLines),n=e+3*this.line2offset(this.howManyLines),i=this.getOverlappingIntervals(e,n),a=[],o=0;o0){a[0].offset!==e&&(a=a.concat(this.fillGap(e,a[0].offset)));var c=a[a.length-1],d=c.offset+c.size;d!==n&&(a=a.concat(this.fillGap(d+1,n)));for(var o=0;o1&&(a=a.concat(this.fillGap(s+1,r)))}}else a=this.fillGap(e,n,!0);this.currentlyShown=a},DisasmNavigator.prototype.getShownOffset=function(){return this.currentlyShown},DisasmNavigator.prototype.getSize=function(t){for(var e=0;e=this.currentlyShown[e].offset&&t0)},Hexdump.prototype.processSelection=function(t){t&&this.cleanSelection(!0),this.selectionFirst===this.selectionEnd&&(this.selectionFirst.classList.add("selected"),this.currentSelection={from:this.selectionFirst.offset,to:this.selectionFirst.offset});var e=this.selectionFirst.offset0?8*this.Sizes[d]+" bits":"pairs",this.Sizes[d]===this.hexLength&&(u.selected=!0),c.appendChild(u)}c.addEventListener("change",function(){e.hexLength=parseInt(this.value),e.draw()},!1);var p=document.createElement("span");p.title="Number of columns per line";var f=document.createElement("select");p.appendChild(f);for(var d=1;d<=16;d++){var u=document.createElement("option");u.value=d,u.text=d,d===this.nbColumns&&(u.selected=!0),f.appendChild(u)}f.addEventListener("change",function(){e.nbColumns=parseInt(this.value),e.nav.changeNbCols(e.nbColumns),e.draw()},!1);var h=document.createElement("input");h.classList.add("mdl-checkbox__input"),h.type="checkbox",h.checked=this.bigEndian;var m=document.createElement("span");m.classList.add("mdl-checkbox__label"),m.appendChild(document.createTextNode("bigEndian"));var g=document.createElement("label");g.classList.add("mdl-checkbox"),g.classList.add("mdl-js-checkbox"),g.classList.add("mdl-js-ripple-effect"),g.appendChild(h),g.appendChild(m),h.addEventListener("change",function(){e.bigEndian=!e.bigEndian,e.draw()});var v=document.createElement("input");v.classList.add("mdl-checkbox__input"),v.type="checkbox",v.checked=this.isWritable();var y=document.createElement("span");y.classList.add("mdl-checkbox__label"),y.appendChild(document.createTextNode("isEditable"));var b=document.createElement("label");b.classList.add("mdl-checkbox"),b.classList.add("mdl-js-checkbox"),b.classList.add("mdl-js-ripple-effect"),b.appendChild(v),b.appendChild(y),this.writable||(v.disabled=!0),v.addEventListener("change",function(){e.selectionMode=!e.selectionMode,e.draw()});var C=document.createElement("input");C.classList.add("mdl-checkbox__input"),C.type="checkbox",C.checked=this.showFlags;var x=document.createElement("span");x.classList.add("mdl-checkbox__label"),x.appendChild(document.createTextNode("showFlags"));var w=document.createElement("label");w.classList.add("mdl-checkbox"),w.classList.add("mdl-js-checkbox"),w.classList.add("mdl-js-ripple-effect"),w.appendChild(C),w.appendChild(x),C.addEventListener("change",function(){e.showFlags=!e.showFlags,e.draw()}),i.appendChild(l),a.appendChild(p),o.appendChild(g),s.appendChild(b),r.appendChild(w),componentHandler.upgradeDom()},Hexdump.prototype.getFlagColor=function(t){for(var e=0;e=o.offset){a=t[j];break}if("undefined"!=typeof a){var s=document.createElement("li"),r=int2fixedHex(o.offset,8);s.classList.add("block"+e),s.classList.add("flag"),s.offset=r,s.appendChild(document.createTextNode("["+r+"] "+o.name)),s.title="Go to Disassembly",s.style.cursor="pointer",s.addEventListener("click",function(t){return function(){return seekAction.applyGlobal(t),panelDisasm()}}(r)),s.title=o.size+" bytes",s.style.color=this.getFlagColor(o.name),this.listContent.insertBefore(s,a)}}},Hexdump.prototype.indexOfLine_=function(t){for(var e=[].slice.call(this.listContent.children),n=0;n=t)return n;return-1},Hexdump.prototype.colorizeFlag=function(t){if(this.showFlags){"undefined"==typeof t&&(t=!1);var e=[].slice.call(this.listContent.children);if(t)for(var n=0;n0&&(i.isTopMax=!1)}),0!==a.offset||0!==a.hex.length){var o;o=t===i.Dir.BEFORE?i.listContent.lastChild.className:i.listContent.firstChild.className;for(var s=Array.prototype.slice.call(document.getElementsByClassName(o)),r=0;r-1},HexPairNavigator.prototype.getFlags=function(t,e){var n=function(e){for(var n=[],i=0;i=t&&n.push({name:e[i].name,start:e[i].offset,end:e[i].offset+e[i].size});return n.sort(function(t,e){return t.size>e.size?-1:1}),n},i=[],a=0,o=function(){a++,a<3||e(n(i))};this.get(this.Dir.CURRENT,function(t){i=i.concat(t.flags),o()}),this.get(this.Dir.BEFORE,function(t){i=i.concat(t.flags),o()}),this.get(this.Dir.AFTER,function(t){i=i.concat(t.flags),o()})},HexPairNavigator.prototype.getBytes=function(t){var e;return r2.cmdj("p8j "+(t.to-t.from+1)+" @"+t.from,function(t){e=t}),e},HexPairNavigator.prototype.refreshChunk=function(t,e){var n=[],i=this;this.get(t,function(a){a.callback=[],n=a.modified,i.get(t,function(t){t.modified.concat(n),e(t)},!0)})},HexPairNavigator.prototype.refreshCurrent=function(t){var e=0,n=function(){e++,e<3||t()};this.refreshChunk(this.Dir.CURRENT,function(){n()}),this.refreshChunk(this.Dir.BEFORE,function(){n()}),this.refreshChunk(this.Dir.AFTER,function(){n()})},FlexContainer.prototype.replug=function(t){this.container=t,this.container.innerHTML="",this.container.appendChild(this.controls),this.container.appendChild(this.body)},FlexContainer.prototype.reset=function(){this.init(this.container)},FlexContainer.prototype.init=function(t){this.container=t,this.container.innerHTML="",this.controls=document.createElement("div"),this.body=document.createElement("div"),this.controls.className="flex flex-controls "+this.classes,this.body.className="flex flex-body "+this.classes,this.container.appendChild(this.controls),this.container.appendChild(this.body)},FlexContainer.prototype.getControls=function(){return this.controls},FlexContainer.prototype.drawControls=function(t){this.controls.innerHTML="",t(this.controls)},FlexContainer.prototype.getBody=function(){return this.body},FlexContainer.prototype.drawBody=function(t){this.body.innerHTML="",t(this.body)},FlexContainer.prototype.pause=function(t){this.dialogHasBeenDrawn||this.drawEmptyDialog(),this.textDialog.innerHTML=t,this.dialog.showModal()},FlexContainer.prototype.drawEmptyDialog=function(){var t=this;this.dialog=document.createElement("dialog"),this.dialog.className="mdl-dialog",this.dialog.showModal||dialogPolyfill.registerDialog(this.dialog);var e=document.createElement("div");e.className="mdl-dialog__content",this.dialog.appendChild(e);var n=document.createElement("p");n.className="mdl-typography--text-center",e.appendChild(n);var i=document.createElement("i");i.className="material-icons",i.style.fontSize="54px",i.innerHTML="error_outline",n.appendChild(i),this.textDialog=document.createElement("p"),e.appendChild(this.textDialog);var a=document.createElement("div");a.className="mdl-dialog__actions",this.dialog.appendChild(a);var o=document.createElement("button");o.className="mdl-button",o.innerHTML="Cancel",o.addEventListener("click",function(){t.dialog.close()}),a.appendChild(o),document.body.appendChild(this.dialog),componentHandler.upgradeDom()},FlexContainer.prototype.resume=function(){this.dialog.close()},InfiniteScrolling.prototype.setTopEvent=function(t){this.ontop=t},InfiniteScrolling.prototype.setBottomEvent=function(t){this.onbottom=t},InfiniteScrolling.prototype.scrollEvent_=function(t){var e=this;if(!this.pauseScrollEvent){var n=t.target.scrollHeight-t.target.offsetHeight,i=t.target.scrollTop/n;if(!this.isTopMax&&ii){this.pauseScrollEvent=!0;var a=Math.floor((this.limit+(i-this.limit)+this.screenProportion)*n);this.ontop(a,function(t){e.pauseScrollEvent=!1})}if(i>1-this.limit&&this.prevScrollReady !

    '),i.add(t)}}function write(){var t=prompt("hexpairs, quoted string or :assembly");if(""!=t)switch(t[0]){case":":t=t.substring(1),r2.cmd('"wa '+t+'"',update);break;case'"':t=t.replace(/"/g,""),r2.cmd("w "+t,update);break;default:r2.cmd("wx "+t,update)}}function comment(){var t=prompt("comment");t&&("-"==t?r2.cmd("CC-"):r2.cmd('"CC '+t+'"'),update())}function flag(){var t=prompt("flag");t&&("-"==t?r2.cmd("f"+t):r2.cmd("f "+t),update())}function block(){var t=prompt("block");t&&t.trim()&&(r2.cmd("b "+t),update())}function flagsize(){var t=prompt("size");t&&t.trim()&&(r2.cmd("fl $$ "+t),update())}function analyze(){r2.cmd("af",function(){panelDisasm()})}function notes(){var t=widgetContainer.getWidget("Notes"),e=widgetContainer.getWidgetDOMWrapper(t),n="
    "+uiButton("javascript:panelComments()","< Comments");n+='

    ',e.innerHTML=n}function setFlagspace(t){t||(t=prompt("name")),t&&r2.cmd("fs "+t,function(){flagspaces()})}function renameFlagspace(t){t||(t=prompt("name")),t&&r2.cmd("fsr "+t,function(){flagspaces()})}function delFlagspace(t){t||(t="."),t&&r2.cmd("fs-"+t,function(){flagspaces()})}function delAllFlags(){r2.cmd("f-*",function(){panelFlags()})}function setNullFlagspace(t){updates.registerMethod(widgetContainer.getFocus(),t?panelFlags:flagspaces),r2.cmd("fs *",function(){flagspaces()})}function flagspaces(){var t=widgetContainer.getWidget("Flag Spaces"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),flagspaces),e.innerHTML="
     "+uiRoundButton("javascript:panelFlags()","undo"),e.innerHTML+=" "+uiButton("javascript:setNullFlagspace()","Deselect"),e.innerHTML+=" "+uiButton("javascript:setFlagspace()","Add"),e.innerHTML+=" "+uiButton("javascript:delFlagspace()","Delete"),e.innerHTML+=" "+uiButton("javascript:renameFlagspace()","Rename"),e.innerHTML+="

    ",r2.cmd("fs",function(t){var n=t.split(/\n/),i=uiTableBegin(["+Flags","Flagspace"]);for(var a in n){var o=n[a].split(/ +/);if(o.length>=4){var s=o[2].indexOf(".")==-1,r="";r+="",r+=s?""+o[3]+"":o[3],r+="",i+=uiTableRow(["+"+o[1],r])}}i+=uiTableEnd(),e.innerHTML+=i})}function analyzeSymbols(){statusMessage("Analyzing symbols..."),r2.cmd("aa",function(){statusMessage("done"),update()})}function analyzeRefs(){statusMessage("Analyzing references..."),r2.cmd("aar",function(){statusMessage("done"),update()})}function analyzeCalls(){statusMessage("Analyzing calls..."),r2.cmd("aac",function(){statusMessage("done"),update()})}function analyzeFunction(){statusMessage("Analyzing function..."),r2.cmd("af",function(){statusMessage("done"),update()})}function analyzeNames(){statusMessage("Analyzing names..."),r2.cmd(".afna @@ fcn.*",function(){statusMessage("done"),update()})}function panelAbout(){r2.cmd("?V",function(t){alert("radare2 material webui by --pancake @ 2015-2016\n\n"+t.trim())})}function panelFunctions(){var t=widgetContainer.getWidget("Functions");t.setDark();var e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),panelDisasm),e.style.backgroundColor="#f0f0f0";var n="
    ";n+=uiButton("javascript:analyzeSymbols()","Symbols"),n+=uiButton("javascript:analyzeCalls()","Calls"),n+=uiButton("javascript:analyzeFunction()","Function"),n+=uiButton("javascript:analyzeRefs()","Refs"),n+=uiButton("javascript:analyzeNames()","AutoName"),n+="

    ",e.innerHTML=n,r2.cmd("e scr.utf8=false"),r2.cmd("afl",function(t){var n=new Table(["+Address","Name","+Size","+CC"],[!1,!0,!1,!1],"functionTable"),i=t.split(/\n/);for(var a in i){var o=i[a].match(/^(0x[0-9a-f]+)\s+([0-9]+)\s+([0-9]+(\s+\->\s+[0-9]+)?)\s+(.+)$/);null!==o&&n.addRow([o[1],o[5],o[2],o[3]])}n.insertInto(e)})}function runCommand(t){t||(t=document.getElementById("input").value),r2.cmd(t,function(t){lastConsoleOutput="\n"+t,document.getElementById("output").innerHTML=lastConsoleOutput})}function searchKey(t){var e=document.getElementById("search_input");t?13==t.keyCode&&(runSearch(e.value),e.value=""):e.onkeypress=searchKey}function runSearchMagic(){r2.cmd("/m",function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearchCode(t){t||(t=document.getElementById("search_input").value),r2.cmd('"/c '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearchString(t){t||(t=document.getElementById("search_input").value),r2.cmd("/ "+t,function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearchROP(t){t||(t=document.getElementById("search_input").value),r2.cmd('"/R '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function runSearch(t){t||(t=document.getElementById("search_input").value),'"'==t[0]?r2.cmd('"/ '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)}):r2.cmd('"/x '+t+'"',function(t){document.getElementById("search_output").innerHTML=clickableOffsets(t)})}function indentScript(){var t=document.getElementById("script").value,e=t;document.getElementById("script").value=e,localStorage.script=e}function runScript(){var str=document.getElementById("script").value;localStorage.script=str,document.getElementById("scriptOutput").innerHTML="";try{var msg="\"use strict\";function log(x) { var a = document.getElementById('scriptOutput'); if (a) a.innerHTML += x + '\\n'; }\n";eval(msg+str)}catch(t){alert(t)}}function toggleScriptOutput(){var t=document.getElementById("scriptOutput");t&&(""==foo?(foo=t.innerHTML,t.innerHTML=""):(t.innerHTML=foo,foo=""))}function panelScript(){var t=widgetContainer.getWidget("Script"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelScript),e.style.backgroundColor="#f0f0f0";var n=localStorage.getItem("script"),i="
    "+uiButton("javascript:runScript()","Run");i+=" "+uiButton("javascript:indentScript()","Indent"),i+=" "+uiButton("javascript:toggleScriptOutput()","Output"),i+=" "+uiButton("javascript:panelConsole()","Console"),i+='

    ',i+='",e.innerHTML=i}function panelSearch(){var t=widgetContainer.getWidget("Search"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelSearch),e.style.backgroundColor="#f0f0f0";var n="background-color:white !important;padding-left:10px;top:3.5em;height:1.8em;color:white",i="mdl-card--expand mdl-textfield__input",a="
    ";a+="",a+="
    ",a+=uiButton("javascript:runSearch()","Hex"),a+=uiButton("javascript:runSearchString()","String"),a+=uiButton("javascript:runSearchCode()","Code"),a+=uiButton("javascript:runSearchROP()","ROP"),a+=uiButton("javascript:runSearchMagic()","Magic"),a+="

    ",a+="
    ",e.innerHTML=a}function panelFlags(){var t=widgetContainer.getWidget("Flags"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),panelDisasm),e.style.backgroundColor="#f0f0f0",e.innerHTML="
    ",e.innerHTML+=uiButton("javascript:flagspaces()","Spaces"),e.innerHTML+=uiButton("javascript:delAllFlags()","DeleteAll"),e.innerHTML+="

    ",r2.cmd("f",function(t){var n=new Table(["+Offset","+Size","Name"],[!0,!0,!1],"flagsTable"),i=t.split(/\n/);for(var a in i){var o=i[a].split(/ /);o.length>=3&&n.addRow([o[0],o[1],o[2]])}n.insertInto(e)})}function up(){r2.cmd("s--"),update()}function down(){r2.cmd("s++"),update()}function srpc(){r2.cmd("sr pc",update)}function stepi(){nativeDebugger?r2.cmd("ds",update):r2.cmd("aes",update)}function cont(){nativeDebugger?r2.cmd("dc",update):r2.cmd("aec",update)}function setbp(){r2.cmd("db $$",update)}function setreg(){var t=prompt("register=value");""!=t&&(nativeDebugger?r2.cmd("dr "+t+";.dr*",update):r2.cmd("aer "+t+";.ar*",update))}function panelDebug(){r2.cmd("e cfg.debug",function(t){nativeDebugger="true"==t.trim()});var t=widgetContainer.getWidget("Debugger"),e=widgetContainer.getWidgetDOMWrapper(t);updates.registerMethod(t.getOffset(),panelDebug),lastViews.registerMethod(t.getOffset(),function(){}),inColor&&(e.style.backgroundColor="#202020");var n="
    ";n+=uiRoundButton("javascript:up()","keyboard_arrow_up"),n+=uiRoundButton("javascript:down()","keyboard_arrow_down"),n+=" ",n+=uiButton("javascript:srpc()","PC"),n+=uiButton("javascript:stepi()","Step"),n+=uiButton("javascript:cont()","Cont"),n+=uiButton("javascript:setbp()","BP"),n+=uiButton("javascript:setreg()","REG"),n+="




    ",e.innerHTML=n;var i="";if(inColor&&(i="@e:scr.color=1,scr.html=1"),nativeDebugger)var a="dr";else var a="ar";r2.cmd("f cur;."+a+"*;sr sp;px 64",function(t){var n=clickableOffsets(t);e.innerHTML+="
    "+n+"
    "}),r2.cmd(a+"=;s cur;f-cur;pd 128"+i,function(t){var n=clickableOffsets(t);e.innerHTML+="
    "+n+"
    "})}function saveProject(){r2.cmd("Ps",function(){alert("Project saved")})}function deleteProject(){alert("Project deleted"),location.href="open.html"}function closeProject(){alert("Project closed"),location.href="open.html"}function rename(){var t=prompt("name");t&&""!=t.trim()&&(r2.cmd("afn "+t),r2.cmd("f "+t),update())}function info(){var t=widgetContainer.getWidget("Info");t.setDark();var e=widgetContainer.getWidgetDOMWrapper(t),n=inColor?"white":"black",i="
    ";i+=uiRoundButton("javascript:panelDisasm()","undo"),i+=" ",i+=uiButton("javascript:pdtext()","Full"),i+=uiButton("javascript:pdf()","Func"),i+=uiButton("javascript:graph()","Graph"),i+=uiButton("javascript:blocks()","Blocks"),i+=uiButton("javascript:decompile()","Decompile"),e.innerHTML=i,r2.cmd("afi",function(t){e.innerHTML+="
    "+t+"
    "})}function blocks(){var t=widgetContainer.getWidget("Blocks"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-fixed";e.innerHTML="
    ",e.innerHTML+=' < INFO

    ';var a=inColor?"@e:scr.color=1,scr.html=1":"";r2.cmd("pdr"+a,function(t){e.innerHTML+="
    "+t+"
    "})}function pdtext(){var t=widgetContainer.getWidget("Function"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-fixed";e.innerHTML="
    ",e.innerHTML+=' < INFO

    ';r2.cmd("e scr.color=1;s entry0;s $S;pD $SS;e scr.color=0",function(t){t=clickableOffsets(t),e.innerHTML+="
    "+t+"
    "})}function pdf(){var t=widgetContainer.getWidget("Function"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";i+="mdl-color--accent mdl-color-text--accent-contrast",e.innerHTML="
    ",e.innerHTML+=' < INFO

    ';var a=inColor?"@e:scr.color=1,scr.html=1,asm.lineswidth=0":"@e:asm.lineswidth=0";r2.cmd("pdf"+a,function(t){e.innerHTML+="
    "+t+"
    "})}function decompile(){var t=widgetContainer.getWidget("Decompile"),e=widgetContainer.getWidgetDOMWrapper(t);e.style.overflow="none";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";i+="mdl-color--accent mdl-color-text--accent-contrast",e.innerHTML="
    ",e.innerHTML+=' < INFO

    ';var a=inColor?"@e:scr.color=1,scr.html=1":"";r2.cmd("pdc"+a,function(t){e.innerHTML+="
    "+t+"
    "})}function graph(){var t=widgetContainer.getWidget("Graph"),e=widgetContainer.getWidgetDOMWrapper(t);t.setDark(),e.setAttribute("content","user-scalable=yes, width=device-width, minimum-scale=1, maximum-scale=1"),e.style.overflow="auto";var n=inColor?"white":"black",i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";e.innerHTML='
     < DISASM';var a=inColor?"@e:scr.color=1,scr.html=1":"";r2.cmd("agf"+a,function(t){t=clickableOffsets(t),e.innerHTML+="
    "+t+"
    "})}function onClick(t,e){var n=document.getElementById(t);n?n.addEventListener("click",function(){e()}):console.error("onclick-error",t)}function panelHelp(){alert("TODO")}function analyzeButton(){function t(){updateFortune(),updateInfo(),updateEntropy()}E("anal_calls").checked?r2.cmd("e anal.calls=true;aac",t):r2.cmd("e anal.calls=false"),E("anal_prelude").checked&&r2.cmd("aap",t),E("anal_emu").checked?r2.cmd("e asm.emu=1;aae;e asm.emu=0",t):r2.cmd("e asm.emu=false"),E("anal_autoname").checked&&r2.cmd("aan",t),E("anal_symbols").checked&&r2.cmd("aa",t)}function ready(){if(!twice){twice=!0,applyConf(),updates=new UpdateManager,lastViews=new UpdateManager,widgetContainer=new ContainerZone("content","ruler","title"),widgetContainer.fallbackWidget(panelDisasm),widgetContainer.addFocusListener(updates),widgetContainer.addFocusListener(lastViews),update=function(){updates.apply()},lastView=function(){lastViews.apply()},panelOverview(),onClick("analyze_button",analyzeButton),onClick("menu_overview",panelOverview),onClick("menu_disasm",panelDisasm),onClick("menu_debug",panelDebug),onClick("menu_hexdump",panelHexdump),onClick("menu_functions",panelFunctions),onClick("menu_flags",panelFlags),onClick("menu_search",panelSearch),onClick("menu_comments",panelComments),onClick("menu_script",panelScript),onClick("menu_help",panelHelp),onClick("menu_project_save",saveProject),onClick("menu_project_delete",deleteProject),onClick("menu_project_close",closeProject),onClick("menu_seek",seek),onClick("menu_settings",panelSettings),onClick("menu_about",panelAbout),onClick("menu_mail",function(){window.location="mailto:pancake@nopcode.org"});var t=new Autocompletion("search","search_autocomplete","fs *;fj");t.setPrepareView(function(){widgetContainer.isSplitted()||widgetContainer.split(widgetContainer.Layout.VERTICAL),disasm.draw()}),document.querySelector(".mdl-layout__drawer").addEventListener("click",function(){document.querySelector(".mdl-layout__obfuscator").classList.remove("is-visible"),this.classList.remove("is-visible")},!1)}}function RadareInfiniteBlock(){}function setStatusbarBody(){function t(t,e){var n=document.createElement(t);return n.id=e,n.className=e,n}var e;try{var n=document.getElementById("tab_terminal");n.innerHTML="",n.parentNode.removeChild(n)}catch(t){}try{var n=document.getElementById("tab_logs");n.innerHTML="",n.parentNode.removeChild(n)}catch(t){}switch(statusTab){case Tab.LOGS:var i=new DOMParser,e=document.createElement("div");e.id="tab_logs";var a=statusLog.join("
    ");e.appendChild(i.parseFromString(a,"text/xml").documentElement);var n=document.getElementById("statusbar_body");try{n.parentNode.insertBefore(e,n)}catch(t){}return void console.log(n);case Tab.CONSOLE:var e=document.createElement("div");e.id="tab_terminal",e.appendChild(t("div","terminal")),e.appendChild(t("div","terminal_output"));var o=t("div","terminal_prompt");o.appendChild(t("input","terminal_input")),e.appendChild(o)}if(void 0!==e){var n=document.getElementById("statusbar"),s=document.getElementById("terminal");s||(n.parentNode.insertBefore(e,n),statusTab===Tab.CONSOLE&&terminal_ready())}}function statusMessage(t,e){var n=document.getElementById("statusbar");t&&statusLog.push(t),statusMode===Mode.LINE?(n.innerHTML=t,null!==statusTimeout&&(clearTimeout(statusTimeout),statusTimeout=null),void 0!==e&&(statusTimeout=setTimeout(function(){statusMessage(" ")},1e3*e))):setStatusbarBody()}function statusToggle(){var t=document.getElementById("statusbar"),e=document.getElementById("container");if(statusMode==Mode.HALF){statusTab=Tab.LOGS,statusMode=Mode.LINE,t.innerHTML=" ";try{t.parentNode.classList.remove("half"),t.parentNode.classList.remove("full"),e.classList.remove("sbIsHalf"),e.classList.remove("sbIsFull")}catch(t){}setStatusbarBody()}else{statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}t.parentNode.classList.add("half"),e.classList.add("sbIsHalf")}}function statusNext(){var t=document.getElementById("statusbar"),e=document.getElementById("container");switch(statusMode){case Mode.LINE:statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}t.parentNode.classList.add("half"),e.classList.add("sbIsHalf");break;case Mode.HALF:return statusMode=Mode.FULL,t.parentNode.classList.add("full"),void e.classList.add("sbIsFull");case Mode.FULL:statusMode=Mode.LINE,statusTab=Tab.LOGS,t.innerHTML="";try{var t=document.getElementById("statusbar"),e=document.getElementById("container");t.parentNode.classList.remove("half"),t.parentNode.classList.remove("full"),e.classList.remove("sbIsHalf"),e.classList.remove("sbIsFull")}catch(t){}}setStatusbarBody()}function statusConsole(){var t=document.getElementById("statusbar"),e=document.getElementById("container");if(statusTab===Tab.CONSOLE){if(statusMode!==Mode.LINE)return statusToggle(),void(statusMode=Mode.LINE);statusTab=Tab.CONSOLE}if(statusMode===Mode.HALF)statusMode=Mode.LINE;else if(statusMode===Mode.LINE){statusTab=Mode.CONSOLE,statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}try{t.parentNode.classList.add("half"),e.classList.add("sbIsHalf")}catch(t){}}statusTab=statusTab==Tab.CONSOLE?Tab.LOGS:Tab.CONSOLE,setStatusbarBody()}function statusFullscreen(){var t=document.getElementById("statusbar"),e=document.getElementById("container");if(statusMode==Mode.FULL){statusMode=Mode.HALF;try{t.parentNode.classList.remove("full"),e.classList.remove("sbIsFull")}catch(t){}t.parentNode.classList.add("half"),e.classList.add("sbIsHalf")}else{statusMode=Mode.FULL;try{t.parentNode.classList.remove("half"),e.classList.remove("sbIsHalf")}catch(t){}t.parentNode.classList.add("full"),e.classList.add("sbIsFull")}}function addButton(t,e){var n=document.createElement("a");return n.href="javascript:"+e+"()",n.innerHTML=t,n}function initializeStatusbarTitle(){return}function statusInitialize(){initializeStatusbarTitle();var t=document.getElementById("statusbar");t.innerHTML="",t.parentNode.addEventListener("click",function(){statusMode==Mode.LINE&&(statusTab=Tab.CONSOLE,statusToggle())}),statusMessage("Loading webui...",2)}function submit(t){var e=document.getElementById("terminal_output"),n=document.getElementById("terminal_input");return n&&e?"clear"===t?(e.innerHTML="",void(n.value="")):void r2.cmd(t,function(i){i+="\n",e.innerHTML+=" > "+t+"\n"+i,n.value="";var a=document.getElementById("statusbar_scroll");a.scrollTop=a.scrollHeight}):void console.error("No terminal_{input|output} found")}function terminal_ready(){r2.cmd("e scr.color=true");var t=document.getElementById("terminal_input");return t?(t.focus(),void(t.onkeypress=function(e){13==e.keyCode&&submit(t.value)})):void console.error("Cannot find terminal_input")}function E(t){return document.getElementById(t)}function encode(t){return t.replace(/[\x26\x0A\<>'"]/g,function(t){return"&#"+t.charCodeAt(0)+";"})}function clickableOffsets(t){return t=t.replace(/0x([a-zA-Z0-9]*)/g,"0x$1"),t=t.replace(/sym\.([\.a-zA-Z0-9_]*)/g,"sym.$1"),t=t.replace(/fcn\.([\.a-zA-Z0-9_]*)/g,"fcn.$1"),t=t.replace(/str\.([\.a-zA-Z0-9_]*)/g,"str.$1")}function uiButton(t,e,n){var i="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";if("active"==n){var a='style="background-color:#f04040 !important"';return' "+e+""}return' '+e+""}function uiCheckList(t,e,n){var i="
  • ";return ouput+='
  • ",i}function uiCombo(d){var funName="combo"+ ++comboId,fun=funName+" = function(e) {";fun+=' var sel = document.getElementById("opt_'+funName+'");',fun+=" var opt = sel.options[sel.selectedIndex].value;",fun+=" switch (opt) {";for(var a in d)fun+='case "'+d[a].name+'": '+d[a].js+"("+d[a].name+");break;";fun+="}}",eval(fun);var out='"}function uiSwitch(t,e,n,i){var a="switch-"+ ++idSwitch,o=document.createElement("label");o.className="mdl-switch mdl-js-switch mdl-js-ripple-effect",o.for=a,t.appendChild(o);var s=document.createElement("input");s.type="checkbox",s.className="mdl-switch__input",s.checked=n,s.id=a,o.appendChild(s),s.addEventListener("change",function(t){i(e,t.target.checked)});var r=document.createElement("span");r.className="mdl-switch__label",r.innerHTML=e,o.appendChild(r);var l=document.createElement("br");o.appendChild(l)}function uiActionButton(t,e,n){var i=document.createElement("a");i.href="#",i.innerHTML=n,i.addEventListener("click",e),t.appendChild(i);var a="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect ";a+="mdl-color--accent mdl-color-text--accent-contrast",i.className=a,i.style.margin="3px"}function uiSelect(t,e,n,i,a){var o="select-"+ ++selectId,s=document.createElement("div");s.className="mdl-selectfield mdl-js-selectfield mdl-selectfield--floating-label",t.appendChild(s);var r=document.createElement("select");r.className="mdl-selectfield__select",r.id=o,r.name=o,s.appendChild(r);for(var l=0;l"+i.name+": ",e+=uiCombo(i.buttons)}return e}function uiRoundButton(t,e,n){var i="";return i+=""}function Table(t,e,n,i){this.cols=t,this.nonum=e,this.clickableOffset=new Array(t.length),this.clickableOffset.fill(!1),this.contentEditable=new Array(t.length),this.contentEditable.fill(!1),this.onChange=i,this.id=n||!1,this.init()}function uiTableBegin(t,e){var n="",i=e||"",a="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp";n+='',n+=" ";var o;for(var s in t){var r=t[s];"+"==r[0]?(r=r.substring(1),o=""):o=' class="mdl-data-table__cell--non-numeric"',n+=""+r+""}return n+=""}function uiTableRow(t){var e="";for(var n in t){var i=t[n];i&&("+"==i[0]?(i=clickableOffsets(i.substring(1)),type=""):type=' class="mdl-data-table__cell--non-numeric"',e+=""+i+"")}return e+""}function uiTableEnd(){return"
    "}function UpdateManager(){this.updateMethods=[{},{}],this.currentFocus=void 0}function Widget(t,e){this.name=t,this.identifier=e,"undefined"!=typeof e&&(this.DOMWrapper=document.getElementById(e))}function Disasm(t,e){this.container=new FlexContainer(t,"disasm"),this.lineHeight=e,this.refreshInitialOffset(),this.init(),this.offsetHistory=["0x"+this.initialOffset.toString(16)],this.indexOffsetHistory=0;var n=this;seekAction.registerLocalAction("Disassembly",function(t){for(var e=n.offsetHistory.length-1-n.indexOffsetHistory,i=0;i=33&&e<=126?String.fromCharCode(e):"."}function ASCIIToHexpair(t){var e=t.charCodeAt(0).toString(16);return e.length<2&&(e="0"+e),e}function isAsciiVisible(t){return t>=33&&t<=126}function basename(t){return t.split(/[\\\/]/).pop()}function int2fixedHex(t,e){for(var n=t.toString(16);n.length",e.innerHTML+=uiButton("javascript:notes()","Notes"),e.innerHTML+="

    ",r2.cmd("CC",function(t){var n=new Table(["+Offset","~Comment"],[!0,!1],"commentsTable",function(t,e){var n=t[0];r2.cmd("CC- @ "+n),r2.cmd("CCu base64:"+window.btoa(e)+" @ "+n),update()}),i=t.split(/\n/);for(var a in i){var o=i[a].split(/ (.+)?/);o.length>=2&&n.addRow([o[0],o[1]])}n.insertInto(e)})}function panelDisasm(){var t=widgetContainer.getWidget("Disassembly"),e=widgetContainer.getWidgetDOMWrapper(t);e.classList.add("disasmPanel"),"undefined"==typeof disasm?disasm=new Disasm(e,24):disasm.resetContainer(e),disasm.draw(),t.setDark();var n=function(){disasm.refreshInitialOffset(),disasm.resetContainer(e),disasm.draw(),t.setDark()};updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),n)}function panelHexdump(){var t=widgetContainer.getWidget("Hexdump"),e=widgetContainer.getWidgetDOMWrapper(t);if(e.classList.add("hexdump"),"undefined"==typeof hexdump){var n;r2.cmd("e cfg.bigendian",function(t){n="true"==t}),hexdump=new Hexdump(e,24,n),hexdump.setOnChangeCallback(function(t,e,n){console.log("changed")})}else hexdump.resetContainer(e);hexdump.draw(),t.setDark();var i=function(){hexdump.refreshInitialOffset(),hexdump.resetContainer(e),hexdump.draw(),t.setDark()};updates.registerMethod(t.getOffset(),function(){}),lastViews.registerMethod(t.getOffset(),i)}function panelOverview(){var t=widgetContainer.getWidget("Overview"),e=widgetContainer.getWidgetDOMWrapper(t);lastViews.registerMethod(t.getOffset(),panelDisasm),updates.registerMethod(t.getOffset(),function(){});var n='
    ';n+='
    ',n+='\t
    ',n+='\t\t
    ',n+='\t\t\tHdr',n+='\t\t\tSym',n+='\t\t\tImp',n+='\t\t\tRel',n+='\t\t\tSec',n+='\t\t\tStr',n+='\t\t\tSDB',n+="\t\t
    ",n+='\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+='\t\t\t
    ',n+="\t\t
    ",n+="\t
    ",n+="
    ",n+='
    ', +n+='\t
    ',n+='\t\t
    ',n+='\t\t
    ',n+='\t\t\t

    Analysis Options

    ',n+="\t\t
    ",n+="\t\t\t
      ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t\t
    • ",n+='\t\t\t\t\t",n+="\t\t\t\t
    • ",n+="\t\t\t
    ",n+="\t\t
    ",n+='\t\t
    ',n+='\t\t\tAnalyze',n+='\t\t\t
    ',n+='\t\t\troom',n+="\t\t
    ",n+="\t
    ",n+='\t
    ',n+='\t
    ',n+='\t\t
    ',n+='\t\t\t

    Fortunes

    ',n+="\t\t
    ",n+='\t\t
    ',n+="\t\t\tAlways use r2 from git",n+="\t\t
    ",n+='\t\t
    ',n+='\t\t\tNext',n+="\t\t
    ",n+="\t
    ",n+="
    ",n+='
    ',n+="\t

    Entropy

    ",n+='\t',n+="
    ",n+='
    ',n+='\t',n+='\t\t',n+='\t\tcode',n+='\t\t82%',n+="\t",n+='\t',n+='\t\t',n+='\t\tdata',n+='\t\t22%',n+="\t",n+='\t',n+='\t\t',n+='\t\tstrings',n+='\t\t4%',n+="\t",n+='\t',n+='\t\t',n+='\t\tfunctions',n+='\t\t82%',n+="\t",n+="
    ",n+="
    ",e.innerHTML=n,updateFortune(),updateInfo(),updateEntropy(),componentHandler.upgradeDom();var i=document.getElementById("info-cell").getBoundingClientRect().height,a=document.getElementById("overview-content");a.style.height=i-document.getElementById("overview-tabs").getBoundingClientRect().height+"px",a.style.overflow="auto"}function updateFortune(){r2.cmd("fo",function(t){document.getElementById("fortune").innerHTML=t,readFortune()})}function speak(t,e){if("undefined"!=typeof SpeechSynthesisUtterance){var n=new SpeechSynthesisUtterance;n.text=t,n.lang="en-US",n.onend=function(){e&&e()},n.onerror=function(t){e&&e(t)},speechSynthesis.speak(n)}}function readFortune(){var t=document.getElementById("fortune").innerHTML;R2Conf.useTTS.value===!1||speak(t)}function updateInfo(){r2.cmd("i",function(t){var e=t.split(/\n/g),n=e.slice(0,e.length/2),i=e.slice(e.length/2),a="";a+="

    ",a+="
    ";for(var o in n){var s=n[o].split(/ (.+)?/);s.length>=2&&(a+=""+s[0]+" "+s[1]+"
    ")}a+="
    ";for(var o in i){var s=i[o].split(/ (.+)?/);s.length>=2&&(a+=""+s[0]+" "+s[1]+"
    ")}a+="
    ",document.getElementById("tab-info").innerHTML=a})}function updateEntropy(){var t=document.getElementById("entropy-graph"),e=t.viewBox.baseVal.height,n=(0|e)-19;r2.cmd("p=ej 50 $s @ $M",function(e){var i="",a=JSON.parse(e),o=new Array;for(var s in a.entropy)o.push(a.entropy[s].value);var r=o.length,l=Math.min.apply(null,o),c=Math.max.apply(null,o),d=500/r;for(var s in o){var u=.1+.9*((o[s]-l)/(c-l)),p="0x"+a.entropy[s].addr.toString(16);i+='',i+=p+" ",s%8==0&&(i+='',i+=p+"")}t.innerHTML=i,t.onclick=function(e){var n=t.getBoundingClientRect(),i=e.clientX-n.left,o=0|i/(n.width/r),s="0x"+a.entropy[o].addr.toString(16);seek(s)}})}function overviewLoad(t,e){if(!e.ready){var n=e[0],n=(e[1],e.cmd);e.grep&&(n+="~"+e.grep),r2.cmd(n,function(e){var n=document.getElementById(t.href.split("#")[1]);n.innerHTML="
    "+clickableOffsets(e)+"
    "}),e.ready=!0}}function getConf(t){var e=localStorage.getItem(t.name);return null!==e?("false"===e?e=!1:"true"===e&&(e=!0),e):t.defVal}function saveConf(t,e){localStorage.setItem(t.name,e),t.apply(e)}function applyConf(t){t="undefined"!=typeof t&&t;for(var e in R2Conf){var n=R2Conf[e];(!t&&getConf(n)!==n.defVal||t)&&n.apply(getConf(n))}}function resetConf(){for(var t in R2Conf){var e=R2Conf[t];localStorage.removeItem(e.name)}applyConf(!0)}function panelSettings(){var t=widgetContainer.getWidget("Settings"),e=widgetContainer.getWidgetDOMWrapper(t);e.innerHTML="",updates.registerMethod(t.getOffset(),panelSettings);var n=document.createElement("div");n.className="mdl-grid",e.appendChild(n);var i=createGrid(n,"Platform");drawPlatform(i);var a=createGrid(n,"Disassembly");drawDisassembly(a);var o=createGrid(n,"Core/IO");drawCoreIO(o);var s=createGrid(n,"Analysis");drawAnalysis(s);var r=createGrid(n,"Colors");drawColors(r);var l=createGrid(n,"TTS");drawTTS(l);var c=createGrid(n,"Reset configuration");uiActionButton(c,function(){resetConf(),update()},"RESET"),componentHandler.upgradeDom()}function savedFromList(t,e,n){var i=n,a=localStorage.getItem(e);return null!==a&&(i=t.indexOf(a)),i}function drawPlatform(t){var e=["x86","arm","mips","java","dalvik","6502","8051","h8300","hppa","i4004","i8008","lh5801","lm32","m68k","malbolge","mcs96","msp430","nios2","ppc","rar","sh","snes","sparc","spc700","sysz","tms320","v810","v850","ws","xcore","prospeller","gb","z80","arc","avr","bf","cr16","cris","csr","dcpu16","ebc"];uiSelect(t,"Platform",e,e.indexOf(getConf(R2Conf.platform)),function(t){saveConf(R2Conf.platform,t)});var n=["64","32","16","8"];uiSelect(t,"Bits",n,n.indexOf(getConf(R2Conf.bits)),function(t){saveConf(R2Conf.bits,t)});var i=["Linux","Windows","OSX"];uiSelect(t,"OS",i,i.indexOf(getConf(R2Conf.os)),function(t){saveConf(R2Conf.os,t)})}function drawDisassembly(t){var e=["S","M","L"];uiSelect(t,"Size",e,e.indexOf(getConf(R2Conf.size)),function(t){saveConf(R2Conf.size,t)});var n=["Pseudo","Opcodes","ATT"];uiSelect(t,"Decoding",n,n.indexOf(getConf(R2Conf.decoding)),function(t){saveConf(R2Conf.decoding,t)}),uiSwitch(t,"Utf8",getConf(R2Conf.utf8),function(t,e){saveConf(R2Conf.utf8,e)}),uiSwitch(t,"UpperCase",getConf(R2Conf.ucase),function(t,e){saveConf(R2Conf.ucase,e)}),uiSwitch(t,"Show Bytes",getConf(R2Conf.bytes),function(t,e){saveConf(R2Conf.bytes,e)}),uiSwitch(t,"DescribeOps",getConf(R2Conf.describe),function(t,e){saveConf(R2Conf.describe,e)})}function drawCoreIO(t){var e=["PA","VA","Debug"];uiSelect(t,"Mode",e,e.indexOf(getConf(R2Conf.mode)),function(t){saveConf(R2Conf.mode,t)})}function drawAnalysis(t){var e=function(t,e,n){saveConf(n,e)};uiSwitch(t,"HasNext",getConf(R2Conf.analHasNext),function(t,n){return e(t,n,R2Conf.analHasNext)}),uiSwitch(t,"Skip Nops",getConf(R2Conf.analSkipNops),function(t,n){return e(t,n,R2Conf.analSkipNops)}),uiSwitch(t,"NonCode",getConf(R2Conf.analNonCode),function(t,n){return e(t,n,R2Conf.analNonCode)})}function drawColors(t){var e;r2.cmdj("ecoj",function(t){e=t}),uiSwitch(t,"Colors",getConf(R2Conf.colors),function(t,e){saveConf(R2Conf.colors,e)}),uiActionButton(t,function(){r2.cmd("ecr",function(){update()})},"Randomize"),uiActionButton(t,function(){r2.cmd("ecd",function(){update()})},"Reset colors"),uiSelect(t,"Theme",e,e.indexOf(getConf(R2Conf.theme)),function(t){saveConf(R2Conf.theme,t)})}function drawTTS(t){uiSwitch(t,"Use TTS",getConf(R2Conf.useTTS),function(t,e){saveConf(R2Conf.useTTS,e)})}function createGrid(t,e){var n=document.createElement("div");n.className="mdl-cell mdl-color--white mdl-shadow--2dp mdl-cell--4-col",n.style.padding="10px",t.appendChild(n);var i=document.createElement("span");i.className="mdl-layout-title",i.innerHTML=e,n.appendChild(i);var a=document.createElement("div");return n.appendChild(a),a}ActionListener.prototype.registerLocalAction=function(t,e){this.actions[t]=e},ActionListener.prototype.applyGlobal=function(t){this.cmd(t)},ActionListener.prototype.apply=function(t){if(this.applyGlobal(t),"undefined"!=typeof t)for(var e=widgetContainer.getCurrentlyDrawn(),n=0;n=e.minChar_&&e.show()}),this.form_.addEventListener("blur",function(){e.hide()}),this.flags_=void 0,this.activeChoice_=0,this.prevLength_=0,this.list_,this.completions_,this.populate_()},Autocompletion.prototype.populate_=function(){var t=this;r2.cmdj(this.cmd_,function(e){t.flags_=e})},Autocompletion.prototype.process_=function(t){for(var e=[],n=0,i=0;i0&&(console.log("UP"),this.setActiveChoice(this.activeChoice_-1)),t==this.Keys.DOWN&&this.activeChoice_=2){if(this.show(),this.completions_=this.process_(e),this.prevLength_!==e.length&&(this.activeChoice_=0),0==this.completions_.length)this.addNode_(this.Nodes.EMPTY,!1);else for(var n in this.completions_)this.addNode_(this.completions_[n],n==this.activeChoice_);this.prevLength_=e.length}else this.hide()},Autocompletion.prototype.setPrepareView=function(t){this.preparationCallback=t},Autocompletion.prototype.prepareView=function(){"undefined"!=typeof this.preparationCallback&&this.preparationCallback()},BlockNavigator.prototype.Dir={BEFORE:-1,CURRENT:0,AFTER:1},BlockNavigator.prototype.Status={LAUNCHED:0,COMPLETED:1},BlockNavigator.prototype.init=function(){return"undefined"==typeof this.providerWorker?void console.log("provider worker should be defined"):void this.configureWorker_()},BlockNavigator.prototype.configureWorker_=function(){var t=this;this.providerWorker.onmessage=function(e){if(e.data.dir===t.Dir.CURRENT){if("undefined"!=typeof t.curChunk.data.callback)for(var n=0;n=e},ContainerZone.prototype.Layout={FULL:"full",HORIZONTAL:"horizontal",VERTICAL:"vertical"},ContainerZone.prototype.fallbackWidget=function(t){this.fallback=t},ContainerZone.prototype.initRuler=function(){var t={},e=this;this.rulerProp={gap:.005,pos:.5};var n=function(n){t={startX:n.clientX,startWidth:parseInt(document.defaultView.getComputedStyle(e.ruler).width,10),interval:n.clientX-e.ruler.offsetLeft},document.documentElement.addEventListener("mousemove",i,!1),document.documentElement.addEventListener("mouseup",a,!1),n.preventDefault()},i=function(n){var i=(n.clientX-t.interval)/e.container.offsetWidth;e.rulerProp.pos=i,e.container.children[0].style.width=100*(i-e.rulerProp.gap)+"%",e.container.children[1].style.width=100*(1-i-e.rulerProp.gap)+"%",e.ruler.style.marginLeft=100*i+"%"},a=function(){document.documentElement.removeEventListener("mousemove",i,!1),document.documentElement.removeEventListener("mouseup",a,!1)};this.ruler.addEventListener("mousedown",n)},ContainerZone.prototype.setFocus=function(t){this.focus_=t;for(var e=0;e=2;n&&(this.container.removeChild(this.container.children[this.getFocus()]),this.populatedWidgets.splice(this.getFocus(),1)),0===this.getFocus()&&n?(this.populatedWidgets.unshift(t),t.isAlreadyThere()||(this.container.insertBefore(e,this.container.children[0]),this.container.children[0].style.width=100*(this.rulerProp.pos-this.rulerProp.gap)+"%")):(this.populatedWidgets.push(t),t.isAlreadyThere()||(this.container.appendChild(e),this.container.children[1].style.width=100*(1-this.rulerProp.pos-this.rulerProp.gap)+"%"))}else this.populatedWidgets.length>=1&&this.container.removeChild(this.container.children[this.getFocus()]),this.populatedWidgets=[t],t.isAlreadyThere()||(this.container.appendChild(e),this.container.children[0].style.width="auto");this.moveFocusOnWidget(t),this.applyFocusEvent_(t),t.setOffset(this.getFocus()),this.drawTitle()}},ContainerZone.prototype.moveFocusOnWidget=function(t){this.setFocus(this.populatedWidgets.indexOf(t)),this.container.children[this.getFocus()].classList.add("focus"),this.isSplitted()&&this.container.children[(this.getFocus()+1)%2].classList.remove("focus"),this.drawTitle()},ContainerZone.prototype.drawTitle=function(){if(this.layout===this.Layout.FULL||1===this.populatedWidgets.length)this.title.innerHTML=this.populatedWidgets[0].getName();else{for(var t=[],e=0;e"+this.populatedWidgets[e].getName()+""):t.push(this.populatedWidgets[e].getName());this.title.innerHTML=t.join(" & ")}},ContainerZone.prototype.applyFocusEvent_=function(t){var e=this,n=this.getWidgetDOMWrapper(t);n.addEventListener("mousedown",function(){e.moveFocusOnWidget(t)})},ContainerZone.prototype.addFocusListener=function(t){this.focusListeners.push(t)},function(){function t(){a++,r2.cmdj("?V",function(t){"undefined"!=typeof t&&(a=0)})}function e(){if(a>0){for(var t=document.getElementsByClassName("first-attempt"),e=0;e=0&&n',t.innerHTML=e,this.history=document.getElementById("disasm-history"),this.drawHistory(this.history)},Disasm.prototype.drawHistory=function(t){var e=(this.indexOffsetHistory>0,this.indexOffsetHistoryt){e-=o;break}i=n[a]}var s=e-t,r=i.getBoundingClientRect().height-s,l=this.extractOffset_(i.children[0].id),c=l+Math.ceil(r/this.lineHeight);return c}},Disasm.prototype.replaceScrollPosition=function(t){if("undefined"!=typeof t){var e=this.nav.getChunkPositionFor(t);if(e===-1)return void console.log("Chunk position from offset not found");for(var n=this.container.getBody().children[e],i=0;"undefined"==typeof n.children[i].id;)i++;var a=this.extractOffset_(n.children[i].id),o=n.offsetTop,s=n.getBoundingClientRect().height,r=(t-a)/this.nav.getSize(a),l=Math.floor(r*s),c=o+l;this.container.getBody().scrollTop=c}},Disasm.prototype.drawContextualMenu=function(t){var e=this,n=function(t,n){var i,a=n+" @"+t;return r2.cmdj(a,function(t){i=t}),null===i||i.constructor!==Array?void alert("No available ouput!"):void e.addLongListDialog(i)},i=function(t,n,i){var a="";"undefined"!=typeof i&&(a=prompt(i+"?"),""==a)||(""!=a&&(n+=" "+a),r2.cmd(n+" @"+t),e.nav.cleanOldData(),e.draw())},a=[{aoj:!1,name:"analyze function",shortcut:"F",fct:function(t,e){return i(e,"af")}},{aoj:!0,name:"immediate base...",shortcut:"i",expand:[{name:"binary",fct:function(t,e){return i(e,"ahi b")}},{name:"octal",fct:function(t,e){return i(e,"ahi o")}},{name:"decimal",fct:function(t,e){return i(e,"ahi d")}},{name:"hexadecimal",fct:function(t,e){return i(e,"ahi h")}},{name:"string",fct:function(t,e){return i(e,"ahi s")}}]},{aoj:!1,name:"add comment",shortcut:";",fct:function(t,e){return i(e,"CC","Name")}},{aoj:!1,name:"set flag",shortcut:"f",fct:function(t,e){return i(e,"f","Name")}},{aoj:!0,name:"rename flag",shortcut:"n",fct:function(t,e){return i(e,"fr","Name")}},{aoj:!0,name:"set string",shortcut:"s",fct:function(t,e){return i(e,"Cs")}},{aoj:!1,name:"find xrefs",shortcut:"x",fct:function(t,e){return n(e,"axtj")}},{aoj:!1,name:"as data",shortcut:"D",fct:function(t,e){return i(e,"Cd ","Size")}},{aoj:!1,name:"as code",shortcut:"F",fct:function(t,e){return i(e,"C-")}},{aoj:!1,name:"as string",shortcut:"S",fct:function(t,e){return i(e,"Cs")}}],o=document.getElementById("contextmenuDisasm");if(null===o){var o=document.createElement("nav");o.id="contextmenuDisasm",o.classList.add("context-menu")}else o.innerHTML="";var s=document.createElement("ul");o.appendChild(s);for(var e=this,r=function(t,n){t.addEventListener("mousedown",function(t){return function(n){t(n,e.getCurrentOffset())}}(n))},l=0;l0x"+h+""}else m=t[l][r[p]];f.innerHTML=m}}var g=document.createElement("div");g.className="mdl-dialog__actions",e.appendChild(g);var v=document.createElement("button");v.className="mdl-button",v.innerHTML="Close",v.addEventListener("click",function(){e.close(),document.body.removeChild(e)}),g.appendChild(v),document.body.appendChild(e),componentHandler.upgradeDom(),e.showModal()},DisasmNavigator.prototype=new BlockNavigator,DisasmNavigator.prototype.constructor=DisasmNavigator,DisasmNavigator.prototype.init=function(){BlockNavigator.prototype.init.apply(this),this.currentlyShown=[],this.populateFirst()},DisasmNavigator.prototype.line2offset=function(t){return 2*t},DisasmNavigator.prototype.offset2line=function(t){return t/2},DisasmNavigator.prototype.configureWorker_=function(){var t=this;this.providerWorker.onmessage=function(e){for(var n,i=0;i=e||a<=t&&o>=t||a<=e&&o>=e||a>=t&&o<=e)&&n.push(i)}return n},DisasmNavigator.prototype.populateFirst=function(){return this.populateFrom(this.currentOffset)},DisasmNavigator.prototype.fillGap=function(t,e,n){var i=e-t;return[{offset:t,size:i,artifical:n}]},DisasmNavigator.prototype.populateFrom=function(t){for(var e=t-this.line2offset(this.howManyLines),n=e+3*this.line2offset(this.howManyLines),i=this.getOverlappingIntervals(e,n),a=[],o=0;o0){a[0].offset!==e&&(a=a.concat(this.fillGap(e,a[0].offset)));var c=a[a.length-1],d=c.offset+c.size;d!==n&&(a=a.concat(this.fillGap(d+1,n)));for(var o=0;o1&&(a=a.concat(this.fillGap(s+1,r)))}}else a=this.fillGap(e,n,!0);this.currentlyShown=a},DisasmNavigator.prototype.getShownOffset=function(){return this.currentlyShown},DisasmNavigator.prototype.getSize=function(t){for(var e=0;e=this.currentlyShown[e].offset&&t0)},Hexdump.prototype.processSelection=function(t){t&&this.cleanSelection(!0),this.selectionFirst===this.selectionEnd&&(this.selectionFirst.classList.add("selected"),this.currentSelection={from:this.selectionFirst.offset,to:this.selectionFirst.offset});var e=this.selectionFirst.offset0?8*this.Sizes[d]+" bits":"pairs",this.Sizes[d]===this.hexLength&&(u.selected=!0),c.appendChild(u)}c.addEventListener("change",function(){e.hexLength=parseInt(this.value),e.draw()},!1);var p=document.createElement("input");p.className="mdl-textfield__input",p.style.width="26px",p.style.display="inline",p.pattern="[0-9]+",p.value=this.nbColumns;var f=function(t){return function(n){e.nbColumns=n,e.nav.changeNbCols(n),e.draw(),t.value=n}}(p),m=document.createElement("span");m.title="Number of columns per line";var h=document.createElement("button");h.className="mdl-button mdl-js-button mdl-button--icon",h.appendChild(document.createTextNode("-")),h.addEventListener("click",function(){f(e.nbColumns-1)});var g=document.createElement("button");g.className="mdl-button mdl-js-button mdl-button--icon",g.appendChild(document.createTextNode("+")),g.addEventListener("click",function(){f(e.nbColumns+1)}),p.addEventListener("change",function(t){var e=parseInt(t.target.value);f(e)}),m.appendChild(h),m.appendChild(document.createTextNode(" ")),m.appendChild(p),m.appendChild(document.createTextNode(" ")),m.appendChild(g);var v=document.createElement("input");v.classList.add("mdl-checkbox__input"),v.type="checkbox",v.checked=this.bigEndian;var y=document.createElement("span");y.classList.add("mdl-checkbox__label"),y.appendChild(document.createTextNode("bigEndian"));var b=document.createElement("label");b.classList.add("mdl-checkbox"),b.classList.add("mdl-js-checkbox"),b.classList.add("mdl-js-ripple-effect"),b.appendChild(v),b.appendChild(y),v.addEventListener("change",function(){e.bigEndian=!e.bigEndian,e.draw()});var C=document.createElement("input");C.classList.add("mdl-checkbox__input"),C.type="checkbox",C.checked=this.isWritable();var x=document.createElement("span");x.classList.add("mdl-checkbox__label"),x.appendChild(document.createTextNode("isEditable"));var w=document.createElement("label");w.classList.add("mdl-checkbox"),w.classList.add("mdl-js-checkbox"),w.classList.add("mdl-js-ripple-effect"),w.appendChild(C),w.appendChild(x),this.writable||(C.disabled=!0),C.addEventListener("change",function(){e.selectionMode=!e.selectionMode,e.draw()});var L=document.createElement("input");L.classList.add("mdl-checkbox__input"),L.type="checkbox",L.checked=this.showFlags;var E=document.createElement("span");E.classList.add("mdl-checkbox__label"),E.appendChild(document.createTextNode("showFlags"));var k=document.createElement("label");k.classList.add("mdl-checkbox"),k.classList.add("mdl-js-checkbox"),k.classList.add("mdl-js-ripple-effect"),k.appendChild(L),k.appendChild(E),L.addEventListener("change",function(){e.showFlags=!e.showFlags,e.draw()}),i.appendChild(l),a.appendChild(m),o.appendChild(b),s.appendChild(w),r.appendChild(k),componentHandler.upgradeDom()},Hexdump.prototype.getFlagColor=function(t){for(var e=0;e=o.offset){a=t[j];break}if("undefined"!=typeof a){var s=document.createElement("li"),r=int2fixedHex(o.offset,8);s.classList.add("block"+e),s.classList.add("flag"),s.offset=r,s.appendChild(document.createTextNode("["+r+"] "+o.name)),s.title="Go to Disassembly",s.style.cursor="pointer",s.addEventListener("click",function(t){return function(){return seekAction.applyGlobal(t),panelDisasm()}}(r)),s.title=o.size+" bytes",s.style.color=this.getFlagColor(o.name),this.listContent.insertBefore(s,a)}}},Hexdump.prototype.indexOfLine_=function(t){for(var e=[].slice.call(this.listContent.children),n=0;n=t)return n;return-1},Hexdump.prototype.colorizeFlag=function(t){if(this.showFlags){"undefined"==typeof t&&(t=!1);var e=[].slice.call(this.listContent.children);if(t)for(var n=0;n0&&(i.isTopMax=!1)}),0!==a.offset||0!==a.hex.length){var o;o=t===i.Dir.BEFORE?i.listContent.lastChild.className:i.listContent.firstChild.className;for(var s=Array.prototype.slice.call(document.getElementsByClassName(o)),r=0;r-1},HexPairNavigator.prototype.getFlags=function(t,e){var n=function(e){for(var n=[],i=0;i=t&&n.push({name:e[i].name,start:e[i].offset,end:e[i].offset+e[i].size});return n.sort(function(t,e){return t.size>e.size?-1:1}),n},i=[],a=0,o=function(){a++,a<3||e(n(i))};this.get(this.Dir.CURRENT,function(t){i=i.concat(t.flags),o()}),this.get(this.Dir.BEFORE,function(t){i=i.concat(t.flags),o()}),this.get(this.Dir.AFTER,function(t){i=i.concat(t.flags),o()})},HexPairNavigator.prototype.getBytes=function(t){var e;return r2.cmdj("p8j "+(t.to-t.from+1)+" @"+t.from,function(t){e=t}),e},HexPairNavigator.prototype.refreshChunk=function(t,e){var n=[],i=this;this.get(t,function(a){a.callback=[],n=a.modified,i.get(t,function(t){t.modified.concat(n),e(t)},!0)})},HexPairNavigator.prototype.refreshCurrent=function(t){var e=0,n=function(){e++,e<3||t()};this.refreshChunk(this.Dir.CURRENT,function(){n()}),this.refreshChunk(this.Dir.BEFORE,function(){n()}),this.refreshChunk(this.Dir.AFTER,function(){n()})},FlexContainer.prototype.replug=function(t){this.container=t,this.container.innerHTML="",this.container.appendChild(this.controls),this.container.appendChild(this.body)},FlexContainer.prototype.reset=function(){this.init(this.container)},FlexContainer.prototype.init=function(t){this.container=t,this.container.innerHTML="",this.controls=document.createElement("div"),this.body=document.createElement("div"),this.controls.className="flex flex-controls "+this.classes,this.body.className="flex flex-body "+this.classes,this.container.appendChild(this.controls),this.container.appendChild(this.body)},FlexContainer.prototype.getControls=function(){return this.controls},FlexContainer.prototype.drawControls=function(t){this.controls.innerHTML="",t(this.controls)},FlexContainer.prototype.getBody=function(){return this.body},FlexContainer.prototype.drawBody=function(t){this.body.innerHTML="",t(this.body)},FlexContainer.prototype.pause=function(t){this.dialogHasBeenDrawn||this.drawEmptyDialog(),this.textDialog.innerHTML=t,this.dialog.showModal()},FlexContainer.prototype.drawEmptyDialog=function(){var t=this;this.dialog=document.createElement("dialog"),this.dialog.className="mdl-dialog",this.dialog.showModal||dialogPolyfill.registerDialog(this.dialog);var e=document.createElement("div");e.className="mdl-dialog__content",this.dialog.appendChild(e);var n=document.createElement("p");n.className="mdl-typography--text-center",e.appendChild(n);var i=document.createElement("i");i.className="material-icons",i.style.fontSize="54px",i.innerHTML="error_outline",n.appendChild(i),this.textDialog=document.createElement("p"),e.appendChild(this.textDialog);var a=document.createElement("div");a.className="mdl-dialog__actions",this.dialog.appendChild(a);var o=document.createElement("button");o.className="mdl-button",o.innerHTML="Cancel",o.addEventListener("click",function(){t.dialog.close()}),a.appendChild(o),document.body.appendChild(this.dialog),componentHandler.upgradeDom()},FlexContainer.prototype.resume=function(){this.dialog.close()},InfiniteScrolling.prototype.setTopEvent=function(t){this.ontop=t},InfiniteScrolling.prototype.setBottomEvent=function(t){this.onbottom=t},InfiniteScrolling.prototype.scrollEvent_=function(t){var e=this;if(!this.pauseScrollEvent){var n=t.target.scrollHeight-t.target.offsetHeight,i=t.target.scrollTop/n;if(!this.isTopMax&&ii){this.pauseScrollEvent=!0;var a=Math.floor((this.limit+(i-this.limit)+this.screenProportion)*n);this.ontop(a,function(t){e.pauseScrollEvent=!1})}if(i>1-this.limit&&this.prevScroll.ddcontent{display:none;position:absolute;right:0;background-color:#f9f9f9;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);width:400px;margin:0;padding:0}ul.ddcontent li{display:block;padding:5px 10px;margin:0;border-bottom:1px solid silver;overflow:hidden;font-family:"DejaVu Sans Mono";font-size:11px}ul.ddcontent li.active{background-color:#eee}ul.ddcontent li:last-child{border:none}
    +.console_output,.console_terminal{background-color:#000;border-radius:10px;color:#fff;font-family:monospace}.console_input,.console_prompt{overflow:hidden}.console_terminal{left:auto;margin:auto;border-left:5px;border-right:5px}.console_output{white-space:pre-wrap}.console_input{color:#fff!important;border:none;position:absolute;background:0 0!important;padding-left:20px;width:100%;margin-left:-20px;font-family:monospace;height:1.5em}
     nav.context-menu,nav.context-menu ul>li>ul{z-index:10;position:absolute;background:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}nav.context-menu{display:none;margin:0;padding:0;border:none;border-radius:2px}nav.context-menu.active{display:block}nav.context-menu ul{margin:0;padding:0;list-style-type:none}nav.context-menu ul li{display:block;line-height:22px;padding:5px 20px;border-bottom:1px solid #E0E0E0}nav.context-menu ul li.disabled{color:#A0A0A0}nav.context-menu ul>li>ul{display:none;border-radius:2px}nav.context-menu ul>li>ul>li{line-height:18px;font-size:85%;padding:2px 10px}nav.context-menu ul>li.subactive>ul{display:block;width:180px}nav.context-menu ul li:hover,nav.context-menu ul>li.subactive>ul>li:hover{background-color:#CCC;cursor:pointer}
     .disasm.flex-body,table.disasm-table-dialog td{font-family:"DejaVu Sans Mono",Console,Courier New,monospace}.disasmPanel{background-color:#202020;color:#fff;overflow:hidden!important}.disasm.flex-controls{border-bottom:1px dotted #fff;background:#fff;color:#000;height:80px}.disasm.flex-body{top:80px;line-height:1.2em}div.disasm span.fcn,div.disasm span.offset{display:inline-block;width:100%}div.disasm span:hover.fcn,div.disasm span:hover.offset{background-color:#303030}.currentOffset{background-color:#404040}ul#disasm-history:before{content:'History: '}ul#disasm-history li{display:inline-block;line-height:18px;font-size:85%;padding:0 4px;margin:0 3px;background:#fff;border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}ul#disasm-history li.active{background-color:#E0E0E0}ul#disasm-history li:hover{background-color:#CCC;cursor:pointer}table.disasm-table-dialog{border-collapse:collapse}table.disasm-table-dialog,table.disasm-table-dialog td,table.disasm-table-dialog th{border:1px solid #A0A0A0}table.disasm-table-dialog td{text-align:center}
     .flex-body,.flex-controls{position:absolute;width:100%;overflow:auto}.flex-controls{top:0;height:50px}.flex-body{bottom:0;top:50px}
    -.hexdump{background-color:#202020;color:#fff;overflow:hidden!important}.hex.flex-controls{border-bottom:1px dotted #fff;background:#fff;color:#000}.hex.flex-controls ul.controlList{margin:0;padding:0;list-style-type:none}.hex.flex-controls ul.controlList li{padding:10px 0 0;display:inline-block;width:16%;height:40px;margin-left:3%}.hex.flex-body{font-family:"DejaVu Sans Mono",Console,Courier New,monospace}ul.ascii,ul.hexpairs,ul.offset{margin:0;padding:0;display:inline-block;list-style-type:none}ul.offset{width:120px;text-align:right;margin-right:10px}ul.hexpairs{text-align:center;min-width:400px}ul.ascii{margin-left:10px}ul.ascii li input,ul.hexpairs li input{border:1px dashed #fff;background:rgba(255,255,255,.33)!important;color:#fff!important;font-size:inherit;font-family:inherit;width:18px;text-align:center}ul.ascii li,ul.hexpairs li,ul.offset li{display:inline;line-height:inherit;border:1px solid transparent}ul.ascii li.modified,ul.hexpairs li.modified{background-color:rgba(255,255,255,.4)}ul.hexpairs li.selected{border-bottom:2px solid rgba(255,255,255,.8)}ul.ascii li.active,ul.hexpairs li.active{border:1px dotted #fff}ul.hexpairs.pairs li:nth-child(2n)::after,ul.hexpairs.words li:nth-child(n)::after{content:' '}
    +.hexdump{background-color:#202020;color:#fff;overflow:hidden!important}.hex.flex-controls{border-bottom:1px dotted #fff;background:#fff;color:#000}.hex.flex-controls ul.controlList{margin:0;padding:0;list-style-type:none}.hex.flex-controls ul.controlList li{padding:10px 0 0;display:inline-block;width:16%;height:40px;margin-left:3%}.hex.flex-body{font-family:"DejaVu Sans Mono",Console,Courier New,monospace}ul.listContent li{white-space:nowrap}ul.ascii,ul.hexpairs,ul.offset{margin:0;padding:0;display:inline-block;list-style-type:none}ul.offset{width:120px;text-align:right;margin-right:20px}ul.hexpairs{text-align:center}ul.ascii{margin-left:20px}ul.ascii li input,ul.hexpairs li input{border:1px dashed #fff;background:rgba(255,255,255,.33)!important;color:#fff!important;font-size:inherit;font-family:inherit;width:18px;text-align:center}ul.ascii li,ul.hexpairs li,ul.offset li{display:inline;line-height:inherit;border:1px solid transparent}ul.ascii li.modified,ul.hexpairs li.modified{background-color:rgba(255,255,255,.4)}ul.hexpairs li.selected{border-bottom:2px solid rgba(255,255,255,.8)}ul.ascii li.active,ul.hexpairs li.active{border:1px dotted #fff}ul.hexpairs.pairs li:nth-child(2n)::after,ul.hexpairs.words li:nth-child(n)::after{content:' '}
     .next-attempt{display:none}
     .demo-drawer .mdl-menu .mdl-menu__item,.demo-drawer-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox}.demo-options ul,ul{list-style-type:none}.clickable,.mdl-navigation__link:hover,.statusbar.small{cursor:pointer}body,html{font-family:Roboto,Helvetica,sans-serif}.demo-avatar{width:48px;height:48px;border-radius:24px;margin-top:22px}.demo-layout .demo-header .mdl-textfield{padding-top:27px}.demo-layout .mdl-layout__header .mdl-layout__drawer-button{color:rgba(0,0,0,.54)}.mdl-layout__drawer .avatar{margin-bottom:16px}.demo-drawer{border:none}.demo-drawer .mdl-menu__container{z-index:-1}.demo-drawer .demo-navigation{z-index:-2}.demo-drawer .mdl-menu .mdl-menu__item{display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.demo-drawer-header{box-sizing:border-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:16px;text-align:top;height:128px}.demo-avatar-dropdown,.demo-graphs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;-webkit-box-direction:normal}.demo-avatar-dropdown{display:flex;position:relative;-webkit-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;width:100%}.demo-navigation{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.demo-layout .demo-navigation .mdl-navigation__link{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:0;color:rgba(255,255,255,.56);font-weight:500}.demo-layout .demo-navigation .mdl-navigation__link:hover{background-color:#00BCD4;color:#37474F!important}.demo-navigation .mdl-navigation__link .material-icons{font-size:24px;color:rgba(255,255,255,.56);margin-right:32px}.demo-content{max-width:1080px}.demo-charts{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.demo-chart:nth-child(1){color:#ACEC00}.demo-chart:nth-child(2){color:#00BBD6}.demo-chart:nth-child(3){color:#BA65C9}.demo-chart:nth-child(4){color:#EF3C79}.demo-graphs{padding:16px 32px;display:flex;-webkit-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}:root .demo-graphs,_:-ms-input-placeholder{min-height:664px}:root .demo-graph,_:-ms-input-placeholder{max-height:300px}.demo-graph:nth-child(1){color:#00b9d8}.demo-graph:nth-child(2){color:#238082}.demo-cards{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.demo-cards .demo-separator{height:32px}.demo-cards .mdl-card__title.mdl-card__title{color:#fff;font-size:24px;font-weight:400}.demo-cards ul{padding:0}.demo-cards h3{font-size:1em}.demo-updates .mdl-card__title{min-height:200px;background-image:url(images/icon.png);background-position:90% 100%;background-repeat:no-repeat}.demo-cards .mdl-card__actions a{color:#016e7c;text-decoration:none}a{color:#a0bcd4!important}.demo-options h3{margin:0}.demo-options .mdl-checkbox__box-outline{border-color:rgba(255,255,255,.89)}.demo-options ul{margin:0}.demo-options li{margin:4px 0}.demo-options .material-icons{color:rgba(255,255,255,.89)}.demo-options .mdl-card__actions{height:64px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.pre,pre{font-family:"DejaVu Sans Mono",Console,Courier New,monospace;color:grey;white-space:pre}input{background-color:#f0f0f0!important;color:#000!important;font-family:monospace;width:100%}.output,.statusbar{font-family:"DejaVu Sans Mono",Console,Courier New,monospace}td{text-align:left!important}.output{border:1px solid red;width:90%;margin-left:16px;margin-top:16px;margin-bottom:16px;background-color:#fff;white-space:pre;display:inline-block}.statusbar_title{position:fixed;bottom:0;height:1.4em;width:100%;text-align:left}.statusbar{position:absolute;border-top:5px solid #238082;z-index:100;display:block;bottom:0;right:0;left:0;padding:0!important;background-color:#303030;height:2em;overflow-y:auto}#statusbar{line-height:2em}#container{margin-bottom:2em}#container.sbIsHalf{margin-bottom:30vh}#container.sbIsFull{margin-bottom:90vh}.statusbar.half{height:40vh}.statusbar.full{height:100vh}.hoverable:hover{z-index:999999}.toproundbutton{z-index:2000!important;font-weight:700!important;position:fixed!important;bottom:15px!important;opacity:1;right:15px;color:#fff!important;background-color:#238082!important}mdl-select{-webkit-appearance:none;height:2.3em;margin:.3em;background-color:#286096;padding-left:16px;padding-right:16px;border:10px}mdl-fixed{position:fixed;padding-left:8px;top:4em}
     .terminal,.terminal_input,.terminal_output{color:#fff;width:100%;font-family:monospace}.terminal{left:5;right:5;border-radius:10px;background-color:#000}.terminal_output{border-radius:10px;overflow:scroll;white-space:pre-wrap;padding-bottom:2em}.terminal_input,.terminal_prompt{overflow:hidden}.terminal_input{border:2px solid #238082;position:fixed;bottom:0;height:2em;background:#000;font-size:1.2em}
    diff --git a/shlr/www/m/tools.js b/shlr/www/m/tools.js
    index 9c80601055..2643125078 100644
    --- a/shlr/www/m/tools.js
    +++ b/shlr/www/m/tools.js
    @@ -1,19 +1 @@
    -function E(x) {
    -	return document.getElementById(x);
    -}
    -
    -function encode(r) {
    -	return r.replace(/[\x26\x0A\<>'"]/g, function(r) { return '&#' + r.charCodeAt(0) + ';';});
    -}
    -
    -function clickableOffsets(x) {
    -	x = x.replace(/0x([a-zA-Z0-9]*)/g,
    -	'0x$1');
    -	x = x.replace(/sym\.([\.a-zA-Z0-9_]*)/g,
    -	'sym.$1');
    -	x = x.replace(/fcn\.([\.a-zA-Z0-9_]*)/g,
    -	'fcn.$1');
    -	x = x.replace(/str\.([\.a-zA-Z0-9_]*)/g,
    -	'str.$1');
    -	return x;
    -}
    +function E(e){return document.getElementById(e)}function encode(e){return e.replace(/[\x26\x0A\<>'"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}function clickableOffsets(e){return e=e.replace(/0x([a-zA-Z0-9]*)/g,"0x$1"),e=e.replace(/sym\.([\.a-zA-Z0-9_]*)/g,"sym.$1"),e=e.replace(/fcn\.([\.a-zA-Z0-9_]*)/g,"fcn.$1"),e=e.replace(/str\.([\.a-zA-Z0-9_]*)/g,"str.$1")}
    \ No newline at end of file
    diff --git a/shlr/www/m/vendors/FileSaver.min.js b/shlr/www/m/vendors/FileSaver.min.js
    index f46b8c6074..9a1e397f20 100644
    --- a/shlr/www/m/vendors/FileSaver.min.js
    +++ b/shlr/www/m/vendors/FileSaver.min.js
    @@ -1,2 +1,2 @@
     /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
    -var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=/constructor/i.test(e.HTMLElement),f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},d="application/octet-stream",s=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,s)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(i){u(i)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,s){if(!s){t=p(t)}var v=this,w=t.type,m=w===d,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&a)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;i(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define([],function(){return saveAs})}
    \ No newline at end of file
    +var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,a=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},i=/constructor/i.test(e.HTMLElement)||e.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s="application/octet-stream",d=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,d)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(a){u(a)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,d){if(!d){t=p(t)}var v=this,w=t.type,m=w===s,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&i)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;a(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define("FileSaver.js",function(){return saveAs})}
    diff --git a/shlr/www/m/vendors/dialog-polyfill.css b/shlr/www/m/vendors/dialog-polyfill.css
    index c222cec701..e69de29bb2 100644
    --- a/shlr/www/m/vendors/dialog-polyfill.css
    +++ b/shlr/www/m/vendors/dialog-polyfill.css
    @@ -1,4 +0,0 @@
    -dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:white;color:black;display:none}
    -dialog[open]{display:block}dialog+.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,0.1)}
    -@media screen and (max-width:540px){dialog[_polyfill_modal]{top:0;width:auto;margin:1em}
    -}._dialog_overlay{position:fixed;top:0;right:0;bottom:0;left:0}
    \ No newline at end of file
    diff --git a/shlr/www/m/vendors/dialog-polyfill.js b/shlr/www/m/vendors/dialog-polyfill.js
    index c8ca3d618e..4f091fa323 100644
    --- a/shlr/www/m/vendors/dialog-polyfill.js
    +++ b/shlr/www/m/vendors/dialog-polyfill.js
    @@ -1 +1 @@
    -!function(){function e(e){for(;e;){if("DIALOG"==e.nodeName.toUpperCase())return e;e=e.parentElement}return null}function t(e){e&&e.blur&&e!=document.body&&e.blur()}function o(e,t){for(var o=0;o, the polyfill may not work correctly",e),"DIALOG"!=e.nodeName.toUpperCase())throw new Error("Failed to register dialog: The element is not a dialog.");new i(e)},a.registerDialog=function(e){e.showModal?console.warn("Can't upgrade : already supported",e):a.forceRegisterDialog(e)},a.DialogManager=function(){this.pendingDialogStack=[],this.overlay=document.createElement("div"),this.overlay.className="_dialog_overlay",this.overlay.addEventListener("click",function(e){e.stopPropagation()}),this.handleKey_=this.handleKey_.bind(this),this.handleFocus_=this.handleFocus_.bind(this),this.handleRemove_=this.handleRemove_.bind(this),this.zIndexLow_=1e5,this.zIndexHigh_=100150},a.DialogManager.prototype.topDialogElement=function(){if(this.pendingDialogStack.length){var e=this.pendingDialogStack[this.pendingDialogStack.length-1];return e.dialog}return null},a.DialogManager.prototype.blockDocument=function(){document.body.appendChild(this.overlay),document.body.addEventListener("focus",this.handleFocus_,!0),document.addEventListener("keydown",this.handleKey_),document.addEventListener("DOMNodeRemoved",this.handleRemove_)},a.DialogManager.prototype.unblockDocument=function(){document.body.removeChild(this.overlay),document.body.removeEventListener("focus",this.handleFocus_,!0),document.removeEventListener("keydown",this.handleKey_),document.removeEventListener("DOMNodeRemoved",this.handleRemove_)},a.DialogManager.prototype.updateStacking=function(){for(var e=this.zIndexLow_,t=0;t=t)&&(this.pendingDialogStack.push(e),1==this.pendingDialogStack.length&&this.blockDocument(),this.updateStacking(),!0)},a.DialogManager.prototype.removeDialog=function(e){var t=this.pendingDialogStack.indexOf(e);t!=-1&&(this.pendingDialogStack.splice(t,1),this.updateStacking(),0==this.pendingDialogStack.length&&this.unblockDocument())},a.dm=new a.DialogManager,document.addEventListener("submit",function(t){var o=t.target;if(o&&o.hasAttribute("method")&&"dialog"==o.getAttribute("method").toLowerCase()){t.preventDefault();var i=e(t.target);if(i){var n,a=[document.activeElement,t.explicitOriginalTarget],l=["BUTTON","INPUT"];a.some(function(e){if(e&&e.form==t.target&&l.indexOf(e.nodeName.toUpperCase())!=-1)return n=e.value,!0}),i.close(n)}}},!0),a.forceRegisterDialog=a.forceRegisterDialog,a.registerDialog=a.registerDialog,"object"==typeof module&&"object"==typeof module.exports?module.exports=a:"function"==typeof define&&"amd"in define?define(function(){return a}):window.dialogPolyfill=a}();
    \ No newline at end of file
    +!function(){function e(e){for(;e;){if("DIALOG"==e.nodeName.toUpperCase())return e;e=e.parentElement}return null}function t(e){e&&e.blur&&e!=document.body&&e.blur()}function o(e,t){for(var o=0;o, the polyfill may not work correctly",e),"DIALOG"!=e.nodeName.toUpperCase())throw new Error("Failed to register dialog: The element is not a dialog.");new i(e)},a.registerDialog=function(e){e.showModal||a.forceRegisterDialog(e)},a.DialogManager=function(){this.pendingDialogStack=[],this.overlay=document.createElement("div"),this.overlay.className="_dialog_overlay",this.overlay.addEventListener("click",function(e){e.stopPropagation()}),this.handleKey_=this.handleKey_.bind(this),this.handleFocus_=this.handleFocus_.bind(this),this.handleRemove_=this.handleRemove_.bind(this),this.zIndexLow_=1e5,this.zIndexHigh_=100150},a.DialogManager.prototype.topDialogElement=function(){if(this.pendingDialogStack.length){var e=this.pendingDialogStack[this.pendingDialogStack.length-1];return e.dialog}return null},a.DialogManager.prototype.blockDocument=function(){document.body.appendChild(this.overlay),document.body.addEventListener("focus",this.handleFocus_,!0),document.addEventListener("keydown",this.handleKey_),document.addEventListener("DOMNodeRemoved",this.handleRemove_)},a.DialogManager.prototype.unblockDocument=function(){document.body.removeChild(this.overlay),document.body.removeEventListener("focus",this.handleFocus_,!0),document.removeEventListener("keydown",this.handleKey_),document.removeEventListener("DOMNodeRemoved",this.handleRemove_)},a.DialogManager.prototype.updateStacking=function(){for(var e=this.zIndexLow_,t=0;t=t)&&(this.pendingDialogStack.push(e),1==this.pendingDialogStack.length&&this.blockDocument(),this.updateStacking(),!0)},a.DialogManager.prototype.removeDialog=function(e){var t=this.pendingDialogStack.indexOf(e);t!=-1&&(this.pendingDialogStack.splice(t,1),this.updateStacking(),0==this.pendingDialogStack.length&&this.unblockDocument())},a.dm=new a.DialogManager,document.addEventListener("submit",function(t){var o=t.target;if(o&&o.hasAttribute("method")&&"dialog"==o.getAttribute("method").toLowerCase()){t.preventDefault();var i=e(t.target);if(i){var n,a=[document.activeElement,t.explicitOriginalTarget],l=["BUTTON","INPUT"];a.some(function(e){if(e&&e.form==t.target&&l.indexOf(e.nodeName.toUpperCase())!=-1)return n=e.value,!0}),i.close(n)}}},!0),a.forceRegisterDialog=a.forceRegisterDialog,a.registerDialog=a.registerDialog,"function"==typeof define&&"amd"in define?define(function(){return a}):"object"==typeof module&&"object"==typeof module.exports?module.exports=a:window.dialogPolyfill=a}();
    \ No newline at end of file
    diff --git a/shlr/www/m/vendors/mdl-selectfield.min.css b/shlr/www/m/vendors/mdl-selectfield.min.css
    index 1d95ad0171..1b38ff8530 100644
    --- a/shlr/www/m/vendors/mdl-selectfield.min.css
    +++ b/shlr/www/m/vendors/mdl-selectfield.min.css
    @@ -1,3 +1,3 @@
    -.mdl-selectfield{position:relative;font-size:16px;display:inline-block;box-sizing:border-box;width:300px;max-width:100%;margin:0;padding:20px 0}.mdl-selectfield--align-right{text-align:right}.mdl-selectfield--full-width{width:100%}.mdl-selectfield__select{display:block;width:100%;padding:4px 0;margin:0;color:inherit;background:transparent;font-size:16px;text-align:left;color:inherit;border:none;border-bottom:1px solid rgba(0,0,0, 0.12);border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mdl-selectfield.is-focused .mdl-selectfield__select{outline:none}.mdl-selectfield.is-invalid .mdl-selectfield__select{border-color:rgb(222, 50, 38);box-shadow:none}fieldset[disabled] .mdl-selectfield .mdl-selectfield__select,.mdl-selectfield.is-disabled .mdl-selectfield__select{background-color:transparent;border-bottom:1px dotted rgba(0,0,0, 0.12);color:rgba(0,0,0, 0.26)}.mdl-selectfield__label{bottom:0;color:rgba(0,0,0, 0.26);font-size:16px;left:0;right:0;pointer-events:none;position:absolute;display:block;top:24px;width:100%;overflow:hidden;white-space:nowrap;text-align:left}.mdl-selectfield.is-dirty .mdl-selectfield__label{visibility:hidden}.mdl-selectfield--floating-label .mdl-selectfield__label{transition-duration:.2s;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}fieldset[disabled] .mdl-selectfield .mdl-selectfield__label,.mdl-selectfield.is-disabled.is-disabled .mdl-selectfield__label{color:rgba(0,0,0, 0.26)}.mdl-selectfield--floating-label.is-focused .mdl-selectfield__label,.mdl-selectfield--floating-label.is-dirty .mdl-selectfield__label{color:rgb(63,81,181);font-size:12px;top:4px;visibility:visible}.mdl-selectfield--floating-label.is-invalid .mdl-selectfield__label{color:rgb(222, 50, 38);font-size:12px}.mdl-selectfield__label:after{background-color:rgb(63,81,181);bottom:20px;content:'';height:2px;left:45%;position:absolute;transition-duration:.2s;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);visibility:hidden;width:10px}.mdl-selectfield.is-focused .mdl-selectfield__label:after{left:0;visibility:visible;width:100%}.mdl-selectfield.is-invalid .mdl-selectfield__label:after{background-color:rgb(222, 50, 38)}.mdl-selectfield__error{color:rgb(222, 50, 38);position:absolute;font-size:12px;margin-top:3px;visibility:hidden;display:block}.mdl-selectfield.is-invalid .mdl-selectfield__error{visibility:visible}
    +.mdl-selectfield{position:relative;font-size:16px;display:inline-block;box-sizing:border-box;width:300px;max-width:100%;margin:0;padding:20px 0}.mdl-selectfield--align-right{text-align:right}.mdl-selectfield--full-width{width:100%}.mdl-selectfield__select{display:block;width:100%;padding:4px 0;margin:0;color:inherit;background:transparent;font-size:16px;text-align:left;border:none;border-bottom:1px solid rgba(0,0,0, 0.12);border-radius:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none}.mdl-selectfield__select::-ms-expand{display:none}.mdl-selectfield.is-focused .mdl-selectfield__select{outline:none}.mdl-selectfield.is-invalid .mdl-selectfield__select{border-color:rgb(222, 50, 38);box-shadow:none}fieldset[disabled] .mdl-selectfield .mdl-selectfield__select,.mdl-selectfield.is-disabled .mdl-selectfield__select{background-color:transparent;border-bottom:1px dotted rgba(0,0,0, 0.12);color:rgba(0,0,0, 0.26)}.mdl-selectfield__label{bottom:0;color:rgba(0,0,0, 0.26);font-size:16px;left:0;right:0;pointer-events:none;position:absolute;display:block;top:24px;width:100%;overflow:hidden;white-space:nowrap;text-align:left}.mdl-selectfield.is-dirty .mdl-selectfield__label{visibility:hidden}.mdl-selectfield--floating-label .mdl-selectfield__label{transition-duration:0.2s;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}fieldset[disabled] .mdl-selectfield .mdl-selectfield__label,.mdl-selectfield.is-disabled.is-disabled .mdl-selectfield__label{color:rgba(0,0,0, 0.26)}.mdl-selectfield--floating-label.is-focused .mdl-selectfield__label,.mdl-selectfield--floating-label.is-dirty .mdl-selectfield__label{color:rgb(63,81,181);font-size:12px;top:4px;visibility:visible}.mdl-selectfield--floating-label.is-invalid .mdl-selectfield__label{color:rgb(222, 50, 38);font-size:12px}.mdl-selectfield__label:after{background-color:rgb(63,81,181);bottom:20px;content:'';height:2px;left:45%;position:absolute;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);visibility:hidden;width:10px}.mdl-selectfield.is-focused .mdl-selectfield__label:after{left:0;visibility:visible;width:100%}.mdl-selectfield.is-invalid .mdl-selectfield__label:after{background-color:rgb(222, 50, 38)}.mdl-selectfield__error{color:rgb(222, 50, 38);position:absolute;font-size:12px;margin-top:3px;visibility:hidden;display:block}.mdl-selectfield.is-invalid .mdl-selectfield__error{visibility:visible}.mdl-selectfield__icon{bottom:20px;cursor:pointer;color:rgba(0,0,0, 0.26);padding:4px 0;position:absolute;top:20px;right:0;pointer-events:none}.mdl-selectfield__icon>i{outline:0}.mdl-selectfield.is-dirty .mdl-selectfield__icon{color:inherit}fieldset[disabled] .mdl-selectfield .mdl-selectfield__icon,.mdl-selectfield.is-disabled.is-disabled .mdl-selectfield__icon{color:rgba(0,0,0, 0.26)}.mdl-selectfield--floating-label.is-invalid .mdl-selectfield__icon{color:rgb(222, 50, 38)}
     
     /*# sourceMappingURL=mdl-selectfield.min.css.map */
    diff --git a/shlr/www/m/vendors/mdl-selectfield.min.js b/shlr/www/m/vendors/mdl-selectfield.min.js
    index e34166e7ce..847eb1577c 100644
    --- a/shlr/www/m/vendors/mdl-selectfield.min.js
    +++ b/shlr/www/m/vendors/mdl-selectfield.min.js
    @@ -1,2 +1,2 @@
    -!function(){"use strict";var e=function(e){this.element_=e,this.init()};window.MaterialSelectfield=e,e.prototype.Constant_={},e.prototype.CssClasses_={LABEL:"mdl-selectfield__label",SELECT:"mdl-selectfield__select",IS_DIRTY:"is-dirty",IS_FOCUSED:"is-focused",IS_DISABLED:"is-disabled",IS_INVALID:"is-invalid",IS_UPGRADED:"is-upgraded"},e.prototype.onFocus_=function(e){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},e.prototype.onBlur_=function(e){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},e.prototype.onReset_=function(e){this.updateClasses_()},e.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty()},e.prototype.checkDisabled=function(){this.select_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},e.prototype.checkDisabled=e.prototype.checkDisabled,e.prototype.checkValidity=function(){this.select_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID)},e.prototype.checkValidity=e.prototype.checkValidity,e.prototype.checkDirty=function(){this.select_.value&&this.select_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},e.prototype.checkDirty=e.prototype.checkDirty,e.prototype.disable=function(){this.select_.disabled=!0,this.updateClasses_()},e.prototype.disable=e.prototype.disable,e.prototype.enable=function(){this.select_.disabled=!1,this.updateClasses_()},e.prototype.enable=e.prototype.enable,e.prototype.change=function(e){e&&(this.select_.value=e),this.updateClasses_()},e.prototype.change=e.prototype.change,e.prototype.init=function(){this.element_&&(this.label_=this.element_.querySelector("."+this.CssClasses_.LABEL),this.select_=this.element_.querySelector("."+this.CssClasses_.SELECT),this.select_&&(this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.boundResetHandler=this.onReset_.bind(this),this.select_.addEventListener("change",this.boundUpdateClassesHandler),this.select_.addEventListener("focus",this.boundFocusHandler),this.select_.addEventListener("blur",this.boundBlurHandler),this.select_.addEventListener("reset",this.boundResetHandler),this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED)))},e.prototype.mdlDowngrade_=function(){this.select_.removeEventListener("change",this.boundUpdateClassesHandler),this.select_.removeEventListener("focus",this.boundFocusHandler),this.select_.removeEventListener("blur",this.boundBlurHandler),this.select_.removeEventListener("reset",this.boundResetHandler)},componentHandler.register({constructor:e,classAsString:"MaterialSelectfield",cssClass:"mdl-js-selectfield",widget:!0})}();
    +!function(){"use strict";var s=function(s){this.element_=s,this.init()};window.MaterialSelectfield=s,s.prototype.Constant_={},s.prototype.CssClasses_={LABEL:"mdl-selectfield__label",SELECT:"mdl-selectfield__select",IS_DIRTY:"is-dirty",IS_FOCUSED:"is-focused",IS_DISABLED:"is-disabled",IS_INVALID:"is-invalid",IS_UPGRADED:"is-upgraded"},s.prototype.onFocus_=function(s){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},s.prototype.onBlur_=function(s){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},s.prototype.onReset_=function(s){this.updateClasses_()},s.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty()},s.prototype.checkDisabled=function(){this.select_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},s.prototype.checkDisabled=s.prototype.checkDisabled,s.prototype.checkValidity=function(){this.select_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID)},s.prototype.checkValidity=s.prototype.checkValidity,s.prototype.checkDirty=function(){this.select_.value&&this.select_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},s.prototype.checkDirty=s.prototype.checkDirty,s.prototype.disable=function(){this.select_.disabled=!0,this.updateClasses_()},s.prototype.disable=s.prototype.disable,s.prototype.enable=function(){this.select_.disabled=!1,this.updateClasses_()},s.prototype.enable=s.prototype.enable,s.prototype.change=function(s){s&&(this.select_.value=s),this.updateClasses_()},s.prototype.change=s.prototype.change,s.prototype.init=function(){if(this.element_&&(this.label_=this.element_.querySelector("."+this.CssClasses_.LABEL),this.select_=this.element_.querySelector("."+this.CssClasses_.SELECT),this.select_)){this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.boundResetHandler=this.onReset_.bind(this),this.select_.addEventListener("change",this.boundUpdateClassesHandler),this.select_.addEventListener("focus",this.boundFocusHandler),this.select_.addEventListener("blur",this.boundBlurHandler),this.select_.addEventListener("reset",this.boundResetHandler);var s=this.element_.classList.contains(this.CssClasses_.IS_INVALID);this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED),s&&this.element_.classList.add(this.CssClasses_.IS_INVALID)}},s.prototype.mdlDowngrade_=function(){this.select_.removeEventListener("change",this.boundUpdateClassesHandler),this.select_.removeEventListener("focus",this.boundFocusHandler),this.select_.removeEventListener("blur",this.boundBlurHandler),this.select_.removeEventListener("reset",this.boundResetHandler)},componentHandler.register({constructor:s,classAsString:"MaterialSelectfield",cssClass:"mdl-js-selectfield",widget:!0})}();
     //# sourceMappingURL=mdl-selectfield.min.js.map
    \ No newline at end of file