Merge remote-tracking branch 'upstream/master' into feature_xpath
# Conflicts: # Gruntfile.js # src/js/.jshintrc
This commit is contained in:
52 files changed
+1938
-1692
No files matched your search
+31
-29
@@ -1,21 +1,23 @@
|
||||
/* eslint-env node */
|
||||
|
||||
module.exports = function(grunt) {
|
||||
grunt.file.defaultEncoding = "utf8";
|
||||
grunt.file.preserveBOM = false;
|
||||
|
||||
|
||||
// Tasks
|
||||
grunt.registerTask("dev",
|
||||
"A persistent task which creates a development build whenever source files are modified.",
|
||||
["clean:dev", "concat:css", "concat:js", "copy:html_dev", "copy:static_dev", "chmod:build", "watch"]);
|
||||
|
||||
|
||||
grunt.registerTask("prod",
|
||||
"Creates a production-ready build. Use the --msg flag to add a compile message.",
|
||||
["jshint", "exec:stats", "clean", "jsdoc", "concat", "copy:html_dev", "copy:html_prod", "copy:html_inline",
|
||||
["eslint", "exec:stats", "clean", "jsdoc", "concat", "copy:html_dev", "copy:html_prod", "copy:html_inline",
|
||||
"copy:static_dev", "copy:static_prod", "cssmin", "uglify:prod", "inline", "htmlmin", "chmod"]);
|
||||
|
||||
|
||||
grunt.registerTask("docs",
|
||||
"Compiles documentation in the /docs directory.",
|
||||
["clean:docs", "jsdoc", "chmod:docs"]);
|
||||
|
||||
|
||||
grunt.registerTask("stats",
|
||||
"Provides statistics about the code base such as how many lines there are as well as details of file sizes before and after compression.",
|
||||
["concat:js", "uglify:prod", "exec:stats", "exec:repo_size", "exec:display_stats"]);
|
||||
@@ -23,17 +25,17 @@ module.exports = function(grunt) {
|
||||
grunt.registerTask("release",
|
||||
"Prepares and deploys a production version of CyberChef to the gh-pages branch.",
|
||||
["copy:gh_pages", "exec:deploy_gh_pages"]);
|
||||
|
||||
|
||||
grunt.registerTask("default",
|
||||
"Lints the code base and shows stats",
|
||||
["jshint", "exec:stats", "exec:display_stats"]);
|
||||
|
||||
|
||||
grunt.registerTask("doc", "docs");
|
||||
grunt.registerTask("lint", "jshint");
|
||||
|
||||
|
||||
grunt.registerTask("lint", "eslint");
|
||||
|
||||
|
||||
// Load tasks provided by each plugin
|
||||
grunt.loadNpmTasks("grunt-contrib-jshint");
|
||||
grunt.loadNpmTasks("grunt-eslint");
|
||||
grunt.loadNpmTasks("grunt-jsdoc");
|
||||
grunt.loadNpmTasks("grunt-contrib-clean");
|
||||
grunt.loadNpmTasks("grunt-contrib-concat");
|
||||
@@ -45,8 +47,8 @@ module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks("grunt-chmod");
|
||||
grunt.loadNpmTasks("grunt-exec");
|
||||
grunt.loadNpmTasks("grunt-contrib-watch");
|
||||
|
||||
|
||||
|
||||
|
||||
// JS includes
|
||||
var js_files = [
|
||||
// Third party framework libraries
|
||||
@@ -56,7 +58,7 @@ module.exports = function(grunt) {
|
||||
"src/js/lib/bootstrap-switch.js",
|
||||
"src/js/lib/yahoo.js",
|
||||
"src/js/lib/snowfall.jquery.js",
|
||||
|
||||
|
||||
// Third party operation libraries
|
||||
"src/js/lib/cryptojs/core.js",
|
||||
"src/js/lib/cryptojs/x64-core.js",
|
||||
@@ -132,22 +134,22 @@ module.exports = function(grunt) {
|
||||
|
||||
// Custom libraries
|
||||
"src/js/lib/canvas_components.js",
|
||||
|
||||
|
||||
// Utility functions
|
||||
"src/js/core/Utils.js",
|
||||
|
||||
|
||||
// Operation objects
|
||||
"src/js/operations/*.js",
|
||||
|
||||
|
||||
// Core framework objects
|
||||
"src/js/core/*.js",
|
||||
"src/js/config/Categories.js",
|
||||
"src/js/config/OperationConfig.js",
|
||||
|
||||
|
||||
// HTML view objects
|
||||
"src/js/views/html/*.js",
|
||||
"!src/js/views/html/main.js",
|
||||
|
||||
|
||||
// Start the app!
|
||||
"src/js/views/html/main.js",
|
||||
];
|
||||
@@ -179,12 +181,12 @@ module.exports = function(grunt) {
|
||||
codebase_stats: grunt.file.read("src/static/stats.txt").split("\n").join("<br>")
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Project configuration
|
||||
grunt.initConfig({
|
||||
jshint: {
|
||||
eslint: {
|
||||
options: {
|
||||
jshintrc: "src/js/.jshintrc"
|
||||
configFile: "src/js/.eslintrc.json"
|
||||
},
|
||||
gruntfile: ["Gruntfile.js"],
|
||||
core: ["src/js/core/**/*.js"],
|
||||
@@ -265,7 +267,7 @@ module.exports = function(grunt) {
|
||||
// TODO: Do all this in Jade
|
||||
content = content.replace(
|
||||
'<a href="cyberchef.htm" style="float: left; margin-left: 10px; margin-right: 80px;" download>Download CyberChef<img src="images/download-24x24.png" /></a>',
|
||||
'<span style="float: left; margin-left: 10px;">Compile time: ' + grunt.template.today("dd/mm/yyyy HH:MM:ss") + ' UTC</span>');
|
||||
'<span style="float: left; margin-left: 10px;">Compile time: ' + grunt.template.today("dd/mm/yyyy HH:MM:ss") + " UTC</span>");
|
||||
return grunt.template.process(content, template_options);
|
||||
}
|
||||
},
|
||||
@@ -404,13 +406,13 @@ module.exports = function(grunt) {
|
||||
exec: {
|
||||
repo_size: {
|
||||
command: [
|
||||
"git ls-files | wc -l | xargs printf '\n%b\ttracked files\n'",
|
||||
"du -hs | egrep -o '^[^\t]*' | xargs printf '%b\trepository size\n'"
|
||||
].join(";"),
|
||||
"git ls-files | wc -l | xargs printf '\n%b\ttracked files\n'",
|
||||
"du -hs | egrep -o '^[^\t]*' | xargs printf '%b\trepository size\n'"
|
||||
].join(";"),
|
||||
stderr: false
|
||||
},
|
||||
stats: {
|
||||
command: "rm src/static/stats.txt;" +
|
||||
command: "rm src/static/stats.txt;" +
|
||||
[
|
||||
"ls src/ -R1 | grep '^$' -v | grep ':$' -v | wc -l | xargs printf '%b\tsource files\n'",
|
||||
"find src/ -regex '.*\..*' -print | xargs cat | wc -l | xargs printf '%b\tlines\n'",
|
||||
@@ -430,10 +432,10 @@ module.exports = function(grunt) {
|
||||
|
||||
"du build/dev/scripts.js -h | egrep -o '^[^\t]*' | xargs printf '\n%b\tuncompressed JavaScript size\n'",
|
||||
"du build/prod/scripts.js -h | egrep -o '^[^\t]*' | xargs printf '%b\tcompressed JavaScript size\n'",
|
||||
|
||||
|
||||
"grep -E '^\\s+name: ' src/js/config/Categories.js | wc -l | xargs printf '\n%b\tcategories\n'",
|
||||
"grep -E '^\\s+\"[A-Za-z0-9 \\-]+\": {' src/js/config/OperationConfig.js | wc -l | xargs printf '%b\toperations\n'",
|
||||
|
||||
|
||||
].join(" >> src/static/stats.txt;") + " >> src/static/stats.txt;",
|
||||
stderr: false
|
||||
},
|
||||
|
||||
+12
-11
@@ -91,11 +91,11 @@
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdLine truncated
|
||||
*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdLine truncated
|
||||
if (navigator.userAgent && navigator.userAgent.match(/MSIE \d\d?\./)) {
|
||||
document.write("Internet Explorer is not supported, please use Firefox or Chrome instead");
|
||||
alert("Internet Explorer is not supported, please use Firefox or Chrome instead");
|
||||
}</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAE1UlEQVR4XoWVC0xT1x/Hv729t7e3LSoqWIRNW6uoARVH5mPGzfcmRvbSacISI5n42Mss25jROd0mOjXO7C9/3XSZdvjIlsxFYCrETWe34nQpD4GIIKgDIaAilpZH+9svJ9BUg/O0n9w2J+fz+55f77nVEREeN2wpWw0AEph7TPW1vMzHLpL/QzYJwGpmKjOM8TMSGJ6rAHCW2cFF6vsSiMR9pMtiMhIcVvMz44eBr0gcaRXzZVcbUXq1AS5PbRd/9gFYxfLDD4ulh6RjAFRqqpzxyco55q83vIwnrAPgKqnD29tP4N0deSgquwl73GAc2LhI2bRqbj9NVfbxulzG1KeYpSqA/LH2IcPz/5du5gVIXevE9kO/o8BdjVstXty67UXhXzXYffRPvP7xjxgcacEve5ZbEh0xswHsflTirZpRic5e96Jup/McPjvwK28/BlvemofjO9Nw7ps3ULBnGQ5uegVL5o1DEMCOHBcO5Rfjq8xUlYMs5XAzQjYiwvD5WZMYrzP3Eh095aHExV9SctoeOna6hB41jhWWUcraHHr+HSeddlfR4ZMesqVkNbLHws5Q4jcnxMeYZj7twC5OoaqKgACccl/F+r1nkLEtF0cKLocCzUq2QdNUaEYDvs31YO7kkUgaHWsGkBLeiqnTkmzcyyp0BwgGRYZqUOA8WYq9P13ClZt3cN8XgKv0Zkgs6yWYNIMQB0iHC+X1mJ48wgRgMnruSSOAJ8dxP8uvNUFR9EJsMMhQZL0oYFQNQpK+YEJIXFLTzFIVRhbzPGob7iLRYdVJkm56b+LxjI/vU1TWNkNmmcJigSgg2oKM1CQkjRoipNcb7yHPXSvSaizledQ1tmHM8CgQ0Zjek3efkXQ6HSTenqzXM5JIK8TMwmkOJI8WB0QInIVXoHBBjgdOCPBbkWWwA/zy94orGLm8pgkJ9iH4g/uoZzEDUYQLjHdEo3ecKa7nggoknuvq6hbFgkHCiLhIXLnezMV0HtEKPo5BAJXl1bcw1h4NTsBIAr2kEwWyj5dgs/MCvvjBg7vt3dA0g+gt70bsTC9LsA/tDw4XDASC58IPyNnzxXWB556ywWiQRQodw1sTpM0ZjRUpCVg2Jx6REUaYNFUIuXXghNB4TaI9CmeKqvwA3OHibe7iOl9R2Q2kp04UYhIQiAjRkSZYB5oQPUADKAifvxPd3QFuQZC/EhZMseO8p47+rvynHMCpkLjn0bdm4/9Pt09OiMPE+BixKBggcQUhNDo6u+HzdcDf0YVO7nF8XH/YrBFYtzuvnduwOPSsJqIQfCQLlmQe7mhobqM8VxUt//wEpW/NpzW7Cum97LP00X4XbfjOTRsPFtGn31+goooGarrjpUUf5Hj5PKwOd0kIG0R4qaj0+pF5q/d7iYLIWjUDrz47CuPsg2BW9TAZJIziH2nmhFisWZiI5tttNHPFPu/Fyzfer8n9MBsPyugBAFisU1a+Zpu/pSVt/VHf/uMXg+7SG9TS2i7g5zEd+PliYGlmjt/+wuby/o4ZswHEMpYwT/g/iLgLIgEMZAYp5qih/WzTZhksUQlqxOB4yOYoHQLBgL+1ydfaUNXZ2lDRWv2bC6AWAHcYvqKefb4+/5pYLgPQGBMT0UM/xsJIjK/ntLb1XL09+ClM9i/zfjVLWKBgfAAAAABJRU5ErkJggg=="></a><a href="#" id="options" class="banner-right">Options<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAD4UlEQVR4XpWTbWxTVRzGn9vhWlnZG1NYlwFLMGCUYfEt2dqwuDBfljGCUZkjgCgZyBeWBQ1ki1TmuvkFkw3JNAw1BhwmOslmtCwZmtDooCs6MCM4m6bQjtEVUtrStds9/s9J7/1wa5f4JE/+Pb25vzzPPedI0OgDEoAjEML75DGbzTaM/ykd0nVk/7v7cPjwITQ0bOsCcL6lpaUWgISFJXHeQmDT8U9PgMkySkwmDofRaBwEwDLBn9nzdfGHJ87JNL/SgiX6Ak+BRLUDHG7v7MJs/AHKysq0qbRQ/p6/bW8dTHlYTuthBSy1trbaALgJflSBWywWSFJaIRnpcl/6rBEulwtvVeZUm1caqkFaRH4oKyurbd/ePdBlZR8E0FpeXo61a9eAMZngEhKz0d95I2pzJT0tMDk5CZ/Ph49+jIJkUqv19vaO12+ue3Lx4oeRTCQIyIQV5eYXoKPDLl7ibVQo4HYefx0V+88iJfPlz7dfUcGUpthgMPz1Uk11/uNPrOMp1b0K37sLAc/LR4e9U8CH/I8t49DR3jfnnms6zVtvIuB/H0leta+v7zJNpnhoaCgxOxtnwekpdud2gMViUXbqVB+jtCwej4spkqeLomUQbwHASu7nZzo0E8TVGzfx8YAX3x+tRVXzgFpdA1DqqsrYhMxODoyKhB6PhzW0fcvOnDnN+DMNULPIcOiDt3x+ZV1UUooLx7ZgV6cDW8wGvLF5E9rb25UNnQYwr7nSmaGv1axB+4GXcWD786C1qP/qs3koLcrBVMDP24Dkp7kOGukWgu6ot0COBLEkPx/V5lwBnxj7FVarFQZ9Nmbu3Fbgbr75GnA69J2t67F760Y4fj6PX1zXAd0izM/NqWeVqmPpI8v4scwI12mhh962oLG2Amd/GMalax5UULqJib+RTMTBFQ6Hg4lE4mkOLyx6FCQVrtfrVbh6NVe9YmdfDv7GQvdjzNbdz3a9d4yd/OlPdvCT71hjcxfjz1fXNK8GkEM2NjU1VRKEybLMbvq8bOfOHeI3/09NTEndzbRB9VXr0X/uAjw+P6wvVIukfu8NXLwuIzk9Zo4FvbkACslLx8fHk+RantxEJ6anp4e3gZD4eCmtXFWKeZlh+pYnDRr5x1EVnBhJpoIU8Ol0OucABCKRyLbu7u5vQqEQKPFoMpm0A5BU8PCIEzNhMza+WIc/rqlQxLwjlQQNavZEVu6Aw+FwkVcAiJLjZLHLAly4vHjD4EX/GEhu8oNYRED1umiVXFByD4ACllLmYqm1TJ4XQGHxm6k3b8PuL8yhqQCHCxmXZK+42t8ypbn3UvpUn8spM+5/AT4U+4f4kq1OAAAAAElFTkSuQmCC"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGLklEQVR4Xq1XXWxUxxX+7t2769312muE7UCMowSXQDBxHmpo5VQqimQjRaiKlPBQiahKFaG8hCrICc4LT0lDhR8ixXnCElFaAQ9RUWLIgsHgKqCkpBY/TYrruja73nXtrL3e3/v7M5kzMtfRZlcBup/0aWbunXPON+foXp2RGGMgSJKEchw7diza1dV1QpblbgDtq/sq7iU/qxPYjnMLwLRt22f37t37MQC32n4FlSGPjIy8EolEhjs6OsBHBIJBWKYJ07Q4TVi2LdayoiDgDyAQUDgDkCUff64/YxjGM4VC4cXLly+fOHToUOjmzZt6xUCojGAoFBru6elB26ZNCPLgtmWBnwiO48B1XTicNDIiE3NBn0/mghvA7eHz+0FIJpP1qIjqGQiRMzoRnZTmXoq9MqxRU0vImxZ0XYdu6HytolDIT01P/3d8YGBgGID7oAJ8PwwmyzI/mY+EiCzkclkUcjkezBDrcDgsytTa2oKWllZMTf0be/bseRVAmjPDWXpQASKoZVli5LXEwuIictkVmIaJaNM6NESjaICEMA8cqqtDXbAOoWCQKIRyJDkXOI2HyYAzMTHxRwa8KUHyMwAdHZvRsbkDsuKHpmlQOTVVg8QFyjw7PsUvSKBx9dQaPDyYAO3w4cMnAHzO2XDt7zdiyYUMEqkluMwFwCCJ8pR/lhKEIE4PDylA55xfrV/Lmf5d2NbVwmvdhECoCYq/AbISAaR6JGZmcHc2Adex4GcmbDMPx2H/twCXU12lEqiPQjNCsJiMgOVAknUsLi4gHp9HV/dTeGH/87BtF6f/fAFNIQZeDABp3A/uKLine truncated
|
||||
}</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAE1UlEQVR4XoWVC0xT1x/Hv729t7e3LSoqWIRNW6uoARVH5mPGzfcmRvbSacISI5n42Mss25jROd0mOjXO7C9/3XSZdvjIlsxFYCrETWe34nQpD4GIIKgDIaAilpZH+9svJ9BUg/O0n9w2J+fz+55f77nVEREeN2wpWw0AEph7TPW1vMzHLpL/QzYJwGpmKjOM8TMSGJ6rAHCW2cFF6vsSiMR9pMtiMhIcVvMz44eBr0gcaRXzZVcbUXq1AS5PbRd/9gFYxfLDD4ulh6RjAFRqqpzxyco55q83vIwnrAPgKqnD29tP4N0deSgquwl73GAc2LhI2bRqbj9NVfbxulzG1KeYpSqA/LH2IcPz/5du5gVIXevE9kO/o8BdjVstXty67UXhXzXYffRPvP7xjxgcacEve5ZbEh0xswHsflTirZpRic5e96Jup/McPjvwK28/BlvemofjO9Nw7ps3ULBnGQ5uegVL5o1DEMCOHBcO5Rfjq8xUlYMs5XAzQjYiwvD5WZMYrzP3Eh095aHExV9SctoeOna6hB41jhWWUcraHHr+HSeddlfR4ZMesqVkNbLHws5Q4jcnxMeYZj7twC5OoaqKgACccl/F+r1nkLEtF0cKLocCzUq2QdNUaEYDvs31YO7kkUgaHWsGkBLeiqnTkmzcyyp0BwgGRYZqUOA8WYq9P13ClZt3cN8XgKv0Zkgs6yWYNIMQB0iHC+X1mJ48wgRgMnruSSOAJ8dxP8uvNUFR9EJsMMhQZL0oYFQNQpK+YEJIXFLTzFIVRhbzPGob7iLRYdVJkm56b+LxjI/vU1TWNkNmmcJigSgg2oKM1CQkjRoipNcb7yHPXSvSaizledQ1tmHM8CgQ0Zjek3efkXQ6HSTenqzXM5JIK8TMwmkOJI8WB0QInIVXoHBBjgdOCPBbkWWwA/zy94orGLm8pgkJ9iH4g/uoZzEDUYQLjHdEo3ecKa7nggoknuvq6hbFgkHCiLhIXLnezMV0HtEKPo5BAJXl1bcw1h4NTsBIAr2kEwWyj5dgs/MCvvjBg7vt3dA0g+gt70bsTC9LsA/tDw4XDASC58IPyNnzxXWB556ywWiQRQodw1sTpM0ZjRUpCVg2Jx6REUaYNFUIuXXghNB4TaI9CmeKqvwA3OHibe7iOl9R2Q2kp04UYhIQiAjRkSZYB5oQPUADKAifvxPd3QFuQZC/EhZMseO8p47+rvynHMCpkLjn0bdm4/9Pt09OiMPE+BixKBggcQUhNDo6u+HzdcDf0YVO7nF8XH/YrBFYtzuvnduwOPSsJqIQfCQLlmQe7mhobqM8VxUt//wEpW/NpzW7Cum97LP00X4XbfjOTRsPFtGn31+goooGarrjpUUf5Hj5PKwOd0kIG0R4qaj0+pF5q/d7iYLIWjUDrz47CuPsg2BW9TAZJIziH2nmhFisWZiI5tttNHPFPu/Fyzfer8n9MBsPyugBAFisU1a+Zpu/pSVt/VHf/uMXg+7SG9TS2i7g5zEd+PliYGlmjt/+wuby/o4ZswHEMpYwT/g/iLgLIgEMZAYp5qih/WzTZhksUQlqxOB4yOYoHQLBgL+1ydfaUNXZ2lDRWv2bC6AWAHcYvqKefb4+/5pYLgPQGBMT0UM/xsJIjK/ntLb1XL09+ClM9i/zfjVLWKBgfAAAAABJRU5ErkJggg=="></a><a href="#" id="options" class="banner-right">Options<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAD4UlEQVR4XpWTbWxTVRzGn9vhWlnZG1NYlwFLMGCUYfEt2dqwuDBfljGCUZkjgCgZyBeWBQ1ki1TmuvkFkw3JNAw1BhwmOslmtCwZmtDooCs6MCM4m6bQjtEVUtrStds9/s9J7/1wa5f4JE/+Pb25vzzPPedI0OgDEoAjEML75DGbzTaM/ykd0nVk/7v7cPjwITQ0bOsCcL6lpaUWgISFJXHeQmDT8U9PgMkySkwmDofRaBwEwDLBn9nzdfGHJ87JNL/SgiX6Ak+BRLUDHG7v7MJs/AHKysq0qbRQ/p6/bW8dTHlYTuthBSy1trbaALgJflSBWywWSFJaIRnpcl/6rBEulwtvVeZUm1caqkFaRH4oKyurbd/ePdBlZR8E0FpeXo61a9eAMZngEhKz0d95I2pzJT0tMDk5CZ/Ph49+jIJkUqv19vaO12+ue3Lx4oeRTCQIyIQV5eYXoKPDLl7ibVQo4HYefx0V+88iJfPlz7dfUcGUpthgMPz1Uk11/uNPrOMp1b0K37sLAc/LR4e9U8CH/I8t49DR3jfnnms6zVtvIuB/H0leta+v7zJNpnhoaCgxOxtnwekpdud2gMViUXbqVB+jtCwej4spkqeLomUQbwHASu7nZzo0E8TVGzfx8YAX3x+tRVXzgFpdA1DqqsrYhMxODoyKhB6PhzW0fcvOnDnN+DMNULPIcOiDt3x+ZV1UUooLx7ZgV6cDW8wGvLF5E9rb25UNnQYwr7nSmaGv1axB+4GXcWD786C1qP/qs3koLcrBVMDP24Dkp7kOGukWgu6ot0COBLEkPx/V5lwBnxj7FVarFQZ9Nmbu3Fbgbr75GnA69J2t67F760Y4fj6PX1zXAd0izM/NqWeVqmPpI8v4scwI12mhh962oLG2Amd/GMalax5UULqJib+RTMTBFQ6Hg4lE4mkOLyx6FCQVrtfrVbh6NVe9YmdfDv7GQvdjzNbdz3a9d4yd/OlPdvCT71hjcxfjz1fXNK8GkEM2NjU1VRKEybLMbvq8bOfOHeI3/09NTEndzbRB9VXr0X/uAjw+P6wvVIukfu8NXLwuIzk9Zo4FvbkACslLx8fHk+RantxEJ6anp4e3gZD4eCmtXFWKeZlh+pYnDRr5x1EVnBhJpoIU8Ol0OucABCKRyLbu7u5vQqEQKPFoMpm0A5BU8PCIEzNhMza+WIc/rqlQxLwjlQQNavZEVu6Aw+FwkVcAiJLjZLHLAly4vHjD4EX/GEhu8oNYRED1umiVXFByD4ACllLmYqm1TJ4XQGHxm6k3b8PuL8yhqQCHCxmXZK+42t8ypbn3UvpUn8spM+5/AT4U+4f4kq1OAAAAAElFTkSuQmCC"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGLklEQVR4Xq1XXWxUxxX+7t2769312muE7UCMowSXQDBxHmpo5VQqimQjRaiKlPBQiahKFaG8hCrICc4LT0lDhR8ixXnCElFaAQ9RUWLIgsHgKqCkpBY/TYrruja73nXtrL3e3/v7M5kzMtfRZlcBup/0aWbunXPON+foXp2RGGMgSJKEchw7diza1dV1QpblbgDtq/sq7iU/qxPYjnMLwLRt22f37t37MQC32n4FlSGPjIy8EolEhjs6OsBHBIJBWKYJ07Q4TVi2LdayoiDgDyAQUDgDkCUff64/YxjGM4VC4cXLly+fOHToUOjmzZt6xUCojGAoFBru6elB26ZNCPLgtmWBnwiO48B1XTicNDIiE3NBn0/mghvA7eHz+0FIJpP1qIjqGQiRMzoRnZTmXoq9MqxRU0vImxZ0XYdu6HytolDIT01P/3d8YGBgGID7oAJ8PwwmyzI/mY+EiCzkclkUcjkezBDrcDgsytTa2oKWllZMTf0be/bseRVAmjPDWXpQASKoZVli5LXEwuIictkVmIaJaNM6NESjaICEMA8cqqtDXbAOoWCQKIRyJDkXOI2HyYAzMTHxRwa8KUHyMwAdHZvRsbkDsuKHpmlQOTVVg8QFyjw7PsUvSKBx9dQaPDyYAO3w4cMnAHzO2XDt7zdiyYUMEqkluMwFwCCJ8pR/lhKEIE4PDylA55xfrV/Lmf5d2NbVwmvdhECoCYq/AbISAaR6JGZmcHc2Adex4GcmbDMPx2H/twCXU12lEqiPQjNCsJiMgOVAknUsLi4gHp9HV/dTeGH/87BtF6f/fAFNIQZeDABp3A/uKLine truncated
|
||||
* CyberChef - The Cyber Swiss Army Knife
|
||||
*
|
||||
* @copyright Crown Copyright 2016
|
||||
@@ -353,12 +353,13 @@ function(){function a(a){var b=" ";if(isNaN(parseInt(a)))b=a;else switch(a){c
|
||||
@license MIT
|
||||
*/
|
||||
function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=s({},b),a[M]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);W(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=!b.forceFallback&&Q,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),U.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){w&&w.state!==a&&(h(w,"display",a?"none":""),!a&&w.state&&x.insertBefore(w,t),w.state=a)}function c(a,b,c){if(a){c=c||O;do if(">*"===b&&a.parentNode===c||q(a,b))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(L," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(L," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return O.defaultView&&O.defaultView.getComputedStyle?c=O.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;e<f;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=O.createEvent("Event"),i=(a||b[M]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=w,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[M],j=i.options.onMove;return g=O.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){S=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a,b){var c=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&q(a,b)&&c++;return c}function q(a,b){if(a){b=b.split(".");var c=b.shift().toUpperCase(),d=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");return!(""!==c&&a.nodeName.toUpperCase()!=c||b.length&&((" "+a.className+" ").match(d)||[]).length!=b.length)}return!1}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}if("undefined"==typeof window||"undefined"==typeof window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K={},L=/\s+/g,M="Sortable"+(new Date).getTime(),N=window,O=N.document,P=N.parseInt,Q=!!("draggable"in O.createElement("div")),R=function(a){return a=O.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),S=!1,T=Math.abs,U=([].slice,[]),V=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(A!==c&&(z=b.scroll,A=c,z===!0)){z=c;do if(z.offsetWidth<z.scrollWidth||z.offsetHeight<z.scrollHeight)break;while(z=z.parentNode)}z&&(d=z,e=z.getBoundingClientRect(),f=(T(e.right-j)<=h)-(T(e.left-j)<=h),g=(T(e.bottom-k)<=h)-(T(e.top-k)<=h)),f||g||(f=(l-j<=h)-(j<=h),g=(m-k<=h)-(k<=h),(f||g)&&(d=N)),K.vx===f&&K.vy===g&&K.el===d||(K.el=d,K.vx=f,K.vy=g,clearInterval(K.pid),d&&(K.pid=setInterval(function(){d===N?N.scrollTo(N.pageXOffset+f*i,N.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),W=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=thisLine truncated
|
||||
h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2FLine truncated
|
||||
var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"==e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1]);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed Huffman Coding","None (Store)"],INFLATE_BUFFER_TYPE:["Adaptive","Block"],COMPRESSION_METHOD:["Deflate","None (Store)"],OS:["MSDOS","Unix","Macintosh"],RAW_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.RawDeflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.RawDeflate.CompressionType.DYNAMIC,"None (Store)":Zlib.RawDeflate.CompressionType.NONE},run_raw_deflate:function(a,b){var c=new Zlib.RawDeflate(a,{compressionType:Compress.RAW_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},INFLATE_INDEX:0,INFLATE_BUFFER_SIZE:0,INFLATE_RESIZE:!1,INFLATE_VERIFY:!1,RAW_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.RawInflate.BufferType.ADAPTIVE,Block:Zlib.RawInflate.BufferType.BLOCK},run_raw_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.RawInflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.RAW_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]}),d=Array.prototype.slice.call(c.decompress());if(d.length>158&&93==d[0]&&93==d[5]){for(var e=!1,f=0;f<15Line truncated
|
||||
if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1==h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&65===a[10]||77===a[0]&&52===a[1]&&65===a[2]&&32===a[3]?{ext:"m4a",mime:"audio/m4a"}:79===a[0]&&103===a[1]&&103===a[2]&&83===a[3]?{ext:"ogg",mime:"audio/ogg"}:102===a[0]&&76===a[1]&&97===a[2]&&67===a[3]?{ext:"flac",mime:"audio/x-flac"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&65===a[9]&&86===a[10]&&69===a[11]?{ext:"wav",mime:"audio/x-wav"}:35===a[0]&&33===a[1]&&65===a[2]&&77===a[3]&&82===a[4]&&10===a[5]?{ext:"amr",mime:"audio/amr"}:37===a[0]&&80===a[1]&&68===a[2]&&70===a[3]?{ext:"pdf",mime:"application/pdf"}:77===a[0]&&90===a[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==a[0]&&70!==a[0]||87!==a[1]||83!==a[2]?123===a[0]&&92===a[1]&&114===a[2]&&116===a[3]&&102===a[4]?{ext:"rtf",mime:"application/rtf"}:119===a[0]&&79===a[1]&&70===a[2]&&70===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff",mime:"application/font-woff"}:119===a[0]&&79===a[1]&&70===a[2]&&50===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff2",mime:"application/font-woff"}:76===a[34]&&80===a[35]&&(2===a[8]&&0===a[9]&&1===a[10]||1===a[8]&&0===a[Line truncated
|
||||
if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!=i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!=f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!=a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g==8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!=e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,null),f=esmangle.mangle(e);return c=escodegen.generate(f,{format:{renumber:!0,hexadecimal:!0,escapeless:!0,compact:!0,semicolons:!1,parentheses:!1}})}},MAC={OUTPUT_CASE:["Both","Upper only","Lower only"],NO_DELIM:!0,DASH_DELIM:!0,COLON_DELIM:!0,CISCO_STYLE:!1,run_format:function(a,b){if(!a)return"";var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=[],i=a.toLowerCase().split(/[,\s\r\n]+/);return i.forEach(function(a){var b=a.replace(/[:.-]+/g,""),i=b.replace(/(.{2}(?=.))/g,"$1-"),j=b.replace(/(.{2}(?=.))/g,"$1:"),k=b.replace(/(.{4}(?=.))/g,"$1.");"Lower only"==c?(d&&h.push(b),e&&h.push(i),f&&h.push(j),g&&h.push(k)):"Upper only"==c?(d&&h.push(b.toUpperCase()),e&&h.push(i.toUpperCase()),f&&h.push(j.toUpperCase()),g&&h.push(k.toUpperCase())):(d&&h.push(b,b.toUpperCase()),e&&h.push(i,i.toUpperCase()),f&&h.push(j,j.toUpperCase()),g&&h.push(k,k.toUpperCase())),h.push("")}),h.join("\n")}},Numberwang={run:function(a,b){if(!a)return"Let's play Wangernumb!";var c=a.match(/\d+/);return c?c[0]+"! That's Numberwang!":"Sorry, that's not Numberwang. Let's rotate the board!"}},OS={run_parse_unix_perms:function(a,b){var c={d:!1,sl:!1,np:!1,s:!1,cd:Line truncated
|
||||
"060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672a0907":"BankGate","0603672a0908":"GTE","0603672a0909":"CompuSource","0603551d01":"authorityKeyIdentifier","0603551d0a":"basicConstraints","0603551d0b":"nameConstraints","0603551d0c":"policyConstraints","0603551d0d":"basicConstraints","0603551d0e":"subjectKeyIdentifier","0603551d0f":"keyUsage","0603551d10":"privateKeyUsagePeriod","0603551d11":"subjectAltName","0603551d12":"issuerAltName","0603551d13":"basicConstraints","0603551d02":"keyAttributes","0603551d14":"cRLNumber","0603551d15":"cRLReason","0603551d16":"expirationDate","0603551d17":"instructionCode","0603551d18":"invalidityDate","0603551d1a":"issuingDistributionPoint","0603551d1b":"deltaCRLIndicator","0603551d1c":"issuingDistributionPoint","0603551d1d":"certificateIssuer","0603551d03":"certificatePolicies","0603551d1e":"nameConstraints","0603551d1f":"cRLDistributionPoints","0603551d20":"certificatePolicies","0603551d21":"policyMappings","0603551d22":"policyConstraints","0603551d23":"authorityKeyIdentifier","0603551d24":"policyConstraints","0603551d25":"extKeyUsage","0603551d04":"keyUsageRestriction","0603551d05":"policyMapping","Line truncated
|
||||
},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET}]},"Show Base64 offsets":{description:"When a string is within a block of data and the whole block is Base64'd, the string itself could be represented in Base64 in three distinct ways depending on its offset within the block.<br><br>This operation shows all possible offsets for a given string so that each possible encoding can be considered.",run:Base64.run_offsets,input_type:"byte_array",output_type:"html",args:[{name:"Alphabet",type:"binary_string",value:Base64.ALPHABET},{name:"Show variable chars and padding",type:"boolean",value:Base64.OFFSETS_SHOW_VARIABLE}]},XOR:{description:"XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of tLine truncated
|
||||
},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:"string",args:[]},"Find / Replace":{description:"Replaces all occurrences of the first string with the second.<br><br>The three match options are only relevant to regex search strings.",run:StrUtils.run_find_replace,manual_bake:!0,input_type:"string",output_type:"string",args:[{name:"Find",type:"toggle_string",value:"",toggle_values:StrUtils.SEARCH_TYPE},{name:"Replace",type:"binary_string",value:""},{name:"Global match",type:"boolean",value:StrUtils.FIND_REPLACE_GLOBAL},{name:"Case insensitive",type:"boolean",value:StrUtils.FIND_REPLACE_CASE},{name:"Multiline matching",type:"boolean",value:StrUtils.FIND_REPLACE_MULTILINE}]},"To Upper case":{description:"Converts the input string to upper case, optionally limiting scope to only the first character in each word, sentence or paragraph.",run:StrUtils.run_upper,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Scope",type:"option",value:StrUtils.CASE_SCOPE}]},"To Lower case":{description:"Converts every character in the input to lower case.",run:StrUtils.run_lower,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[]},Split:{description:"Splits a string into sections around a given delimiter.",run:StrUtils.run_split,input_type:"string",output_type:"string",args:[{name:"Split delimiter",type:"binary_short_string",value:StrUtils.SPLIT_DELIM},{name:"Join delimiter",type:"option",value:StrUtils.DELIMITER_OPTIONS}]},Strings:{description:"Extracts all strings from the input.",run:Extract.run_strings,input_type:"string",output_type:"string",args:[{name:"Minimum length",type:"number",value:Extract.MIN_STRING_LEN},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract IP addresses":{description:"Extracts all IPv4 and IPv6 addresses.<br><br>Warning: Given a string <code>710.65.0.456</code>, this will match <code>10.65.0.45</code> so always check the original input!",run:Extract.run_ip,input_type:"string",output_type:"string",args:[{name:"IPv4",type:"boolean",value:Extract.INCLUDE_IPV4},{name:"IPv6",type:"boolean",value:Extract.INCLUDE_IPV6},{name:"Remove local IPv4 addresses",type:"boolean",Line truncated
|
||||
a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!=a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id==d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),this.reset_layout(),this.set_compile_message(),this.load_URI_params()},HTMLApp.prototype.handle_error=function(a){console.error(a);var b=a.display_str||a.toString();this.alert(b,"danger",this.options.error_timeout,!this.options.show_errors)},HTMLApp.prototype.bake=function(a){var b;try{b=this.chef.bake(this.get_input(),this.get_recipe_config(),this.options,this.progress,a)}catch(a){this.handle_error(a)}finally{if(!b)return;b.error&&this.handle_error(b.error),this.options=b.options,this.dish_str="html"==b.type?Utils.strip_html_tags(b.result,!0):b.result,this.progress=b.progress,this.manager.recipe.update_breakpoint_indicator(b.progress),this.manager.output.set(b.result,b.type,b.duration),b.duration>this.options.auto_bake_threshold&&this.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.alert("Baking took longer than "+this.options.auto_bake_threshold+"ms, Auto Bake has been disabled.","warning",5e3))}},HTMLApp.prototype.auto_bake=function(){this.auto_bake_&&this.bake()},HTMLApp.prototype.silent_bake=function(){var a=(new Date).getTime(),b=this.get_recipe_config();return this.auto_bake_&&this.chef.silent_bake(b),(new Date).getTime()-a},HTMLApp.prototype.get_input=function(){var a=this.manager.input.get();return sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),a},HTMLApp.prototype.set_input=function(a){sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),this.manager.input.set(a)},HTMLApp.prototype.populate_operations_list=function(){document.body.appendChild(document.getElementById("edit-favourites"));for(var a="",b=0;b<this.categories.length;b++){for(var c=this.categories[b],d=0===b,e=new HTMLCategory(c.name,d),f=0;f<c.ops.length;f++){var g=c.ops[f],h=new HTMLOperation(g,this.operations[g],this,this.manager);e.add_operation(h)}a+=e.to_html()}document.getElementById("categories").innerHTML=a;var i=document.querySelectorAll("#categories .op_list");for(b=0;b<i.length;b++)i[b].dispatchEvent(this.manager.oplistcreate);document.querySelector("#categories a").appendChild(documentLine truncated
|
||||
this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEventListener("click",this.output.switch_click.bind(this.output)),document.getElementById("undo-switch").addEventListener("click",this.output.undo_switch_click.bind(this.output)),document.getElementById("output-text").addEventListener("scroll",this.highlighter.output_scroll.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mouseup",this.highlighter.output_mouseup.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mousemove",this.highlighter.output_mousemove.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mouseup",this.highlighter.output_html_mouseup.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mousemove",this.highlighter.output_html_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#output-text","mousedown dblclick select",this.highlighter.output_mousedown,this.highlighter),this.add_multi_event_listener("#output-html","mousedown dblclick select",this.highlighter.output_html_mousedown,this.highlighter),document.getElementById("options").addEventListener("click",this.options.options_click.bind(this.options)),document.getElementById("reset-options").addEventListener("click",this.options.reset_options_click.bind(this.options)),$(".option-item input:checkbox").on("switchChange.bootstrapSwitch",this.options.switch_change.bind(this.options)),$(".option-item input:checkbox").on("switchChange.bootstrapSwitch",this.options.set_word_wrap.bind(this.options)),this.add_dynamic_listener(".option-item input[type=number]","keyup",this.options.number_change,this.options),this.add_dynamic_listener(".option-item input[type=number]","change",this.options.number_change,this.options),this.add_dynamic_listener(".option-item select","change",this.options.select_change,this.options),document.getElementById("alert-close").addEventListener("click",this.app.alert_close_click.bind(this.app))},Manager.prototype.add_listeners=function(a,b,c,d){d=d||this,[].forEach.call(document.querySelectorAll(a),functionLine truncated
|
||||
h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2FLine truncated
|
||||
},run_evpkdf:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])},run_vigenere_enc:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(c+d)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(c+d)%26].toUpperCase()):(h+=a[j],i++);return h},run_vigenere_dec:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(d-c+f.length)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(d+f.length-c)%26].toUpperCase()):(h+=a[j],i++);return h}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"===e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1],10);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed HuffmanLine truncated
|
||||
c+=Extract.run_ip(a,[!0,!0,!1]),c+="\nEmail addresses\n",c+=Extract.run_email(a,[]),c+="\nMAC addresses\n",c+=Extract.run_mac(a,[]),c+="\nURLs\n",c+=Extract.run_urls(a,[]),c+="\nDomain names\n",c+=Extract.run_domains(a,[]),c+="\nFile paths\n",c+=Extract.run_file_paths(a,[!0,!0]),c+="\nDates\n",c+=Extract.run_dates(a,[])}},FileType={run_detect:function(a,b){var c=FileType._magic_type(a);if(c){var d="File extension: "+c.ext+"\nMIME type: "+c.mime;return c.desc&&c.desc.length&&(d+="\nDescription: "+c.desc),d}return"Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"},IGNORE_COMMON_BYTE_SEQUENCES:!0,run_scan_for_embedded_files:function(a,b){for(var c,d="Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n",e=b[0],f=["ico","ttf",""],g=0,h=0,i=0;i<a.length;i++)if(c=FileType._magic_type(a.slice(i))){if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1===h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]Line truncated
|
||||
j.hasOwnProperty(o)?j[o].push(m):j[o]=[m]}for(n in i)if(i[n]=i[n].sort(),l+=IP._ipv4_to_str(n)+"/"+d+"\n",!e){for(p=0;p<i[n].length;p++)l+=" "+IP._ipv4_to_str(i[n][p])+"\n";l+="\n"}for(o in j)if(l+=o+"/"+d+"\n",!e){for(p=0;p<j[o].length;p++)l+=" "+IP._ipv6_to_str(j[o][p],!0)+"\n";l+="\n"}return l},_LARGE_RANGE_ERROR:'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.',_ipv4_cidr_range:function(a,b,c,d){var e="",f=IP._str_to_ipv4(a[1]),g=parseInt(a[2],10);if(g<0||g>31)return"IPv4 CIDR must be less than 32";var h=~(4294967295>>>g),i=f&h,j=i|~h;return b&&(e+="Network: "+IP._ipv4_to_str(f)+"\n",e+="CIDR: "+g+"\n",e+="Mask: "+IP._ipv4_to_str(h)+"\n",e+="Range: "+IP._ipv4_to_str(i)+" - "+IP._ipv4_to_str(j)+"\n",e+="Total addresses in range: "+((j-i>>>0)+1)+"\n\n"),c&&(e+=g>=16||d?IP._generate_ipv4_range(i,j).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_cidr_range:function(a,b){var c="",d=IP._str_to_ipv6(a[1]),e=parseInt(a[a.length-1],10);if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!==i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!==f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!==a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g===8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!==e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,nullLine truncated
|
||||
"06032b060105050701":"privateExtension","06032b06010505070101":"authorityInfoAccess","06032b06010505070c02":"CMC Data","06032b060105050702":"policyQualifierIds","06032b06010505070202":"unotice","06032b060105050703":"keyPurpose","06032b06010505070301":"serverAuth","06032b06010505070302":"clientAuth","06032b06010505070303":"codeSigning","06032b06010505070304":"emailProtection","06032b06010505070305":"ipsecEndSystem","06032b06010505070306":"ipsecTunnel","06032b06010505070307":"ipsecUser","06032b06010505070308":"timeStamping","06032b060105050704":"cmpInformationTypes","06032b06010505070401":"caProtEncCert","06032b06010505070402":"signKeyPairTypes","06032b06010505070403":"encKeyPairTypes","06032b06010505070404":"preferredSymmAlg","06032b06010505070405":"caKeyUpdateInfo","06032b06010505070406":"currentCRL","06032b06010505073001":"ocsp","06032b06010505073002":"caIssuers","06032b06010505080101":"HMAC-MD5","06032b06010505080102":"HMAC-SHA","060360864801650201010a":"mosaicKeyManagementAlgorithm","060360864801650201010b":"sdnsKMandSigAlgorithm","060360864801650201010c":"mosaicKMandSigAlgorithm","060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672aLine truncated
|
||||
},{name:"Date / Time",ops:["Parse DateTime","Translate DateTime Format","From UNIX Timestamp","To UNIX Timestamp","Extract dates"]},{name:"Extractors",ops:["Strings","Extract IP addresses","Extract email addresses","Extract MAC addresses","Extract URLs","Extract domains","Extract file paths","Extract dates","Regular expression"]},{name:"Compression",ops:["Raw Deflate","Raw Inflate","Zlib Deflate","Zlib Inflate","Gzip","Gunzip","Zip","Unzip","Bzip2 Decompress"]},{name:"Hashing",ops:["Analyse hash","Generate all hashes","MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160","HMAC","Fletcher-16 Checksum","Adler-32 Checksum","CRC-32 Checksum","TCP/IP Checksum"]},{name:"Code tidy",ops:["Syntax highlighter","Generic Code Beautify","JavaScript Parser","JavaScript Beautify","JavaScript Minify","JSON Beautify","JSON Minify","XML Beautify","XML Minify","SQL Beautify","SQL Minify","CSS Beautify","CSS Minify","Strip HTML tags","Diff"]},{name:"Other",ops:["Entropy","Frequency distribution","Detect File Type","Scan for Embedded Files","Generate UUID","Numberwang"]},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",outpuLine truncated
|
||||
}]},ROT47:{description:"A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",run:Rotate.run_rot47,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Amount",type:"number",value:Rotate.ROT47_AMOUNT}]},"Strip HTTP headers":{description:"Removes HTTP headers from a request or response by looking for the first instance of a double newline.",run:HTTP.run_strip_headers,input_type:"string",output_type:"string",args:[]},"Parse User Agent":{description:"Attempts to identify and categorise information contained in a user-agent string.",run:HTTP.run_parse_user_agent,input_type:"string",output_type:"string",args:[]},"Format MAC addresses":{description:"Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks.",run:MAC.run_format,input_type:"string",output_type:"string",args:[{name:"Output case",type:"option",value:MAC.OUTPUT_CASE},{name:"No delimiter",type:"boolean",value:MAC.NO_DELIM},{name:"Dash delimiter",type:"boolean",value:MAC.DASH_DELIM},{name:"Colon delimiter",type:"boolean",value:MAC.COLON_DELIM},{name:"Cisco style",type:"boolean",value:MAC.CISCO_STYLE}]},"Offset checker":{description:"Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples.",run:StrUtils.run_offset_checker,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.OFF_CHK_SAMPLE_DELIMITER}]},"Remove whitespace":{description:"Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output.",run:Tidy.run_remove_whitespace,input_type:"string",output_type:"string",args:[{name:"Spaces",type:"boolean",value:Tidy.REMOVE_SPACES},{name:"Carriage returns (\\r)",type:"boolean",value:Tidy.REMOVE_CARIAGE_RETURNS},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:Line truncated
|
||||
a.clientWidth<470?b.childNodes[1].nodeValue=" Step":b.childNodes[1].nodeValue=" Step through",a.clientWidth<400?(d.style.display="none",e.style.display="none",f.style.display="none",g.style.display="none",h.style.display="none"):(d.style.display="inline",e.style.display="inline",f.style.display="inline",g.style.display="inline",h.style.display="inline"),a.clientWidth<330?c.childNodes[1].nodeValue=" Clear breaks":c.childNodes[1].nodeValue=" Clear breakpoints"},ControlsWaiter.prototype.set_auto_bake=function(a){var b=document.getElementById("auto-bake");b.checked!==a&&b.click()},ControlsWaiter.prototype.bake_click=function(){this.app.bake(),$("#output-text").selectRange(0)},ControlsWaiter.prototype.step_click=function(){this.app.bake(!0),$("#output-text").selectRange(0)},ControlsWaiter.prototype.auto_bake_change=function(){var a=document.getElementById("auto-bake-label"),b=document.getElementById("auto-bake");this.app.auto_bake_=b.checked,b.checked?(a.classList.remove("btn-default"),a.classList.add("btn-success")):(a.classList.remove("btn-success"),a.classList.add("btn-default"))},ControlsWaiter.prototype.clear_recipe_click=function(){this.manager.recipe.clear_recipe()},ControlsWaiter.prototype.clear_breaks_click=function(){for(var a=document.querySelectorAll("#rec_list li.operation .breakpoint"),b=0;b<a.length;b++)a[b].setAttribute("break","false"),a[b].classList.remove("breakpoint-selected")},ControlsWaiter.prototype.initialise_save_link=function(a){a=a||this.app.get_recipe_config();var b=document.getElementById("save-link-recipe-checkbox").checked,c=document.getElementById("save-link-input-checkbox").checked,d=document.getElementById("save-link"),e=this.generate_state_url(b,c,a);d.innerHTML=Utils.truncate(e,120),d.setAttribute("href",e)},ControlsWaiter.prototype.generate_state_url=function(a,b,c){c=c||this.app.get_recipe_config();var d=window.location.protocol+"//"+window.location.host+window.location.pathname,e=JSON.stringify(c),f=Utils.to_base64(this.app.get_input(),"A-Za-z0-9+/");return a=a&&c.length>0,b=b&&f.length>0&&f.length<8e3,a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!==a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id===d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),thLine truncated
|
||||
this.seasonal.load()},Manager.prototype.initialise_event_listeners=function(){window.addEventListener("resize",this.window.window_resize.bind(this.window)),window.addEventListener("blur",this.window.window_blur.bind(this.window)),window.addEventListener("focus",this.window.window_focus.bind(this.window)),window.addEventListener("statechange",this.app.state_change.bind(this.app)),window.addEventListener("popstate",this.app.pop_state.bind(this.app)),document.getElementById("bake").addEventListener("click",this.controls.bake_click.bind(this.controls)),document.getElementById("auto-bake").addEventListener("change",this.controls.auto_bake_change.bind(this.controls)),document.getElementById("step").addEventListener("click",this.controls.step_click.bind(this.controls)),document.getElementById("clr-recipe").addEventListener("click",this.controls.clear_recipe_click.bind(this.controls)),document.getElementById("clr-breaks").addEventListener("click",this.controls.clear_breaks_click.bind(this.controls)),document.getElementById("save").addEventListener("click",this.controls.save_click.bind(this.controls)),document.getElementById("save-button").addEventListener("click",this.controls.save_button_click.bind(this.controls)),document.getElementById("save-link-recipe-checkbox").addEventListener("change",this.controls.slr_check_change.bind(this.controls)),document.getElementById("save-link-input-checkbox").addEventListener("change",this.controls.sli_check_change.bind(this.controls)),document.getElementById("load").addEventListener("click",this.controls.load_click.bind(this.controls)),document.getElementById("load-delete-button").addEventListener("click",this.controls.load_delete_click.bind(this.controls)),document.getElementById("load-name").addEventListener("change",this.controls.load_name_change.bind(this.controls)),document.getElementById("load-button").addEventListener("click",this.controls.load_button_click.bind(this.controls)),this.add_multi_event_listener("#save-text","keyup paste",this.controls.save_text_change,this.controls),this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEvLine truncated
|
||||
window.compile_time=moment.tz("Wed Dec 14 2016 16:37:29","ddd MMM D YYYY HH:mm:ss","UTC").valueOf(),window.compile_message="Merry Christmas! Have a look in the options panel for some festive flavour.",document.addEventListener("DOMContentLoaded",main,!1);</script></body></html>
|
||||
@@ -18,4 +18,4 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>CyberChef</title><meta name="copyright" content="Crown Copyright 2016"><meta name="description" content="The Cyber Swiss Army Knife"><meta name="keywords" content="base64, hex, decode, encode, encrypt, decrypt, compress, decompress, regex, regular expressions, hash, crypt, hexadecimal, user agent, url, certificate, x.509, parser, JSON, gzip, md5, sha1, aes, des, blowfish, xor"><link rel="icon" type="image/png" href="data:image/x-icon;base64,AAABAAEAEA8AAAEAIAAkBAAAFgAAACgAAAAQAAAAHgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwP5CQkE+Ojo5OiIiIS4aGhkt8fHxLe3t7S4GBgU6Hh4dWZWVlMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaWlrvS0tL/0dHR/9HR0f/Pz8/+qamp/6ysrP+srKz/rKys/3h4eJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKioqix8fH/8bGxv/Gxsb/xcXF/pqamv+cnJz/nJyc/5ycnP9paWl/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwyOjo6P/m5ub/5ubm/+Xl5f7Ly8v/zc3N/83Nzf/Ozs7/lZWVowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxscfn5+f/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/zc3N/5KSkqIAAAAAYWFhDwAAAAAEBAQA////AAAAAACqqqrI5+fn/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/83Nzf+wsLDcnp6eo6urq8pjY2MbAAAAAAAAAACVlZWm4uLi/+bm5v/m5ub/5ubm/+Tk5P7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP+8vLz7bGxsLQAAAACioqJ+6Ojo/+bm5v7l5eX/5ubm/+bm5v/l5eX+ysrK/8zMzP/MzMz/zMzM/8zMzP/MzMz/t7e33Y2NjVxFRUULx8fHwubm5v/m5ub/5ubm/+bm5v/m5ub+5eXl/8rKyv7MzMz/zMzM/8zMzP/MzMz/zMzM/svLy//Hx8f/WlpaDcnJycnm5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP/Dw8P3oKCgxQAAAAG1tbWZ5+fn/+Xl5f7m5ub/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/y8vL/szMzP/Nzc3/tbW15UNDQxgAAAAAAAAAD76+vuLo6Oj/5ubm/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/8zMzP/BwcH9tra2+L29vflpaWkuR0dHAAAAAAAAAAAAiYmJZKurq4uXl5d909PT7eXl5f/MzMz/x8fH/6qqqty9vb3/g4ODlQAAABFra2tAAAAAAAAAAAAbGxsAAAAAAAAAAAAAAAAAAAAAAG9vbyOTk5N5j4+PnHl5eVZCQkIVkpKSJmNjYxEAAAAAAAAAAAAAAAD//wAA//8AAOAHAADgDwAA4AcAAOAHAADgAQAAwAEAAMABAACAAAAAgAAAAIABAADAAQAA9AcAAP9/AAA="><link href="styles.css" rel="stylesheet"></head><body><span id="edit-favourites" class="btn btn-default btn-sm"><img src="images/favourite-16x16.png"> Edit</span><div id="alert" class="alert alert-danger"><button type="button" class="close" id="alert-close">×</button> <span id="alert-content"></span></div><div id="content-wrapper"><div id="banner" class="green"><a href="cyberchef.htm" style="float:left;margin-left:10px;margin-right:80px" download>Download CyberChef<img src="images/download-24x24.png"></a><span id="notice"><script type="text/javascript">navigator.userAgent&&navigator.userAgent.match(/MSIE \d\d?\./)&&(document.write("Internet Explorer is not supported, please use Firefox or Chrome instead"),alert("Internet Explorer is not supported, please use Firefox or Chrome instead"))</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="images/help-22x22.png"></a><a href="#" id="options" class="banner-right">Options<img src="images/settings-22x22.png"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="images/cook_male-32x32.png"> Bake!</button><label class="btn btn-success btn-lg" id="auto-bake-label"><input type="checkbox" checked="checked" id="auto-bake"><div>Auto Bake</div></label></div><div class="btn-group" style="padding-top:10px"><button type="button" class="btn btn-default" id="step"><img src="images/step-16x16.png"> Step through</button> <button type="button" class="btn btn-default" id="clr-breaks"><img src="images/erase-16x16.png"> Clear breakpoints</button></div></div><div class="btn-group-vertical" id="extra-controls"><button type="button" class="btn btn-default" id="save"><img src="images/save-16x16.png"> Save recipe</button> <button type="button" class="btn btn-default" id="load"><img src="images/open_yellow-16x16.png"> Load recipe</button> <button type="button" class="btn btn-default" id="clr-recipe"><img src="images/clean-16x16.png"> Clear recipe</button></div></div></div><div class="split split-horizontal" id="IO"><div id="input" class="split no-select"><div class="title no-select">Input<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="clr-io"><img src="images/recycle-16x16.png"> Clear I/O</button> <button type="button" class="btn btn-default btn-sm" id="reset-layout">Line truncated
|
||||
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>CyberChef</title><meta name="copyright" content="Crown Copyright 2016"><meta name="description" content="The Cyber Swiss Army Knife"><meta name="keywords" content="base64, hex, decode, encode, encrypt, decrypt, compress, decompress, regex, regular expressions, hash, crypt, hexadecimal, user agent, url, certificate, x.509, parser, JSON, gzip, md5, sha1, aes, des, blowfish, xor"><link rel="icon" type="image/png" href="data:image/x-icon;base64,AAABAAEAEA8AAAEAIAAkBAAAFgAAACgAAAAQAAAAHgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwP5CQkE+Ojo5OiIiIS4aGhkt8fHxLe3t7S4GBgU6Hh4dWZWVlMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaWlrvS0tL/0dHR/9HR0f/Pz8/+qamp/6ysrP+srKz/rKys/3h4eJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKioqix8fH/8bGxv/Gxsb/xcXF/pqamv+cnJz/nJyc/5ycnP9paWl/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCwyOjo6P/m5ub/5ubm/+Xl5f7Ly8v/zc3N/83Nzf/Ozs7/lZWVowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxscfn5+f/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/zc3N/5KSkqIAAAAAYWFhDwAAAAAEBAQA////AAAAAACqqqrI5+fn/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/83Nzf+wsLDcnp6eo6urq8pjY2MbAAAAAAAAAACVlZWm4uLi/+bm5v/m5ub/5ubm/+Tk5P7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP+8vLz7bGxsLQAAAACioqJ+6Ojo/+bm5v7l5eX/5ubm/+bm5v/l5eX+ysrK/8zMzP/MzMz/zMzM/8zMzP/MzMz/t7e33Y2NjVxFRUULx8fHwubm5v/m5ub/5ubm/+bm5v/m5ub+5eXl/8rKyv7MzMz/zMzM/8zMzP/MzMz/zMzM/svLy//Hx8f/WlpaDcnJycnm5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f7Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP/Dw8P3oKCgxQAAAAG1tbWZ5+fn/+Xl5f7m5ub/5ubm/+bm5v/k5OT+ysrK/8zMzP/MzMz/y8vL/szMzP/Nzc3/tbW15UNDQxgAAAAAAAAAD76+vuLo6Oj/5ubm/+bm5v/m5ub/5OTk/srKyv/MzMz/zMzM/8zMzP/BwcH9tra2+L29vflpaWkuR0dHAAAAAAAAAAAAiYmJZKurq4uXl5d909PT7eXl5f/MzMz/x8fH/6qqqty9vb3/g4ODlQAAABFra2tAAAAAAAAAAAAbGxsAAAAAAAAAAAAAAAAAAAAAAG9vbyOTk5N5j4+PnHl5eVZCQkIVkpKSJmNjYxEAAAAAAAAAAAAAAAD//wAA//8AAOAHAADgDwAA4AcAAOAHAADgAQAAwAEAAMABAACAAAAAgAAAAIABAADAAQAA9AcAAP9/AAA="><link href="styles.css" rel="stylesheet"></head><body><span id="edit-favourites" class="btn btn-default btn-sm"><img src="images/favourite-16x16.png"> Edit</span><div id="alert" class="alert alert-danger"><button type="button" class="close" id="alert-close">×</button> <span id="alert-content"></span></div><div id="content-wrapper"><div id="banner" class="green"><a href="cyberchef.htm" style="float:left;margin-left:10px;margin-right:80px" download>Download CyberChef<img src="images/download-24x24.png"></a><span id="notice"><script type="text/javascript">navigator.userAgent&&navigator.userAgent.match(/MSIE \d\d?\./)&&(document.write("Internet Explorer is not supported, please use Firefox or Chrome instead"),alert("Internet Explorer is not supported, please use Firefox or Chrome instead"))</script><noscript>JavaScript is not enabled. Good luck.</noscript></span><a href="#" id="support" class="banner-right" data-toggle="modal" data-target="#support-modal">About / Support<img src="images/help-22x22.png"></a><a href="#" id="options" class="banner-right">Options<img src="images/settings-22x22.png"></a></div><div id="wrapper"><div id="operations" class="split split-horizontal no-select"><div class="title no-select">Operations</div><input type="search" class="form-control" id="search" placeholder="Search..." autocomplete="off"><ul class="op_list" id="search-results"></ul><div class="panel-group no-select" id="categories"></div></div><div id="recipe" class="split split-horizontal no-select"><div class="title no-select">Recipe</div><ul id="rec_list" class="no-select"></ul><div id="controls" class="no-select"><div id="operational-controls"><div id="bake-group"><button type="button" class="btn btn-success btn-lg" id="bake"><img src="images/cook_male-32x32.png"> Bake!</button><label class="btn btn-success btn-lg" id="auto-bake-label"><input type="checkbox" checked="checked" id="auto-bake"><div>Auto Bake</div></label></div><div class="btn-group" style="padding-top:10px"><button type="button" class="btn btn-default" id="step"><img src="images/step-16x16.png"> Step through</button> <button type="button" class="btn btn-default" id="clr-breaks"><img src="images/erase-16x16.png"> Clear breakpoints</button></div></div><div class="btn-group-vertical" id="extra-controls"><button type="button" class="btn btn-default" id="save"><img src="images/save-16x16.png"> Save recipe</button> <button type="button" class="btn btn-default" id="load"><img src="images/open_yellow-16x16.png"> Load recipe</button> <button type="button" class="btn btn-default" id="clr-recipe"><img src="images/clean-16x16.png"> Clear recipe</button></div></div></div><div class="split split-horizontal" id="IO"><div id="input" class="split no-select"><div class="title no-select">Input<div class="btn-group io-btn-group"><button type="button" class="btn btn-default btn-sm" id="clr-io"><img src="images/recycle-16x16.png"> Clear I/O</button> <button type="button" class="btn btn-default btn-sm" id="reset-layout">Line truncated
|
||||
+10
-9
@@ -256,12 +256,13 @@ function(){function a(a){var b=" ";if(isNaN(parseInt(a)))b=a;else switch(a){c
|
||||
@license MIT
|
||||
*/
|
||||
function(a){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=s({},b),a[M]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);W(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=!b.forceFallback&&Q,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),U.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){w&&w.state!==a&&(h(w,"display",a?"none":""),!a&&w.state&&x.insertBefore(w,t),w.state=a)}function c(a,b,c){if(a){c=c||O;do if(">*"===b&&a.parentNode===c||q(a,b))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(L," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(L," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return O.defaultView&&O.defaultView.getComputedStyle?c=O.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;e<f;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=O.createEvent("Event"),i=(a||b[M]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=w,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[M],j=i.options.onMove;return g=O.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){S=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a,b){var c=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&q(a,b)&&c++;return c}function q(a,b){if(a){b=b.split(".");var c=b.shift().toUpperCase(),d=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");return!(""!==c&&a.nodeName.toUpperCase()!=c||b.length&&((" "+a.className+" ").match(d)||[]).length!=b.length)}return!1}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}if("undefined"==typeof window||"undefined"==typeof window.document)return function(){throw new Error("Sortable.js requires a window with a document")};var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K={},L=/\s+/g,M="Sortable"+(new Date).getTime(),N=window,O=N.document,P=N.parseInt,Q=!!("draggable"in O.createElement("div")),R=function(a){return a=O.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),S=!1,T=Math.abs,U=([].slice,[]),V=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(A!==c&&(z=b.scroll,A=c,z===!0)){z=c;do if(z.offsetWidth<z.scrollWidth||z.offsetHeight<z.scrollHeight)break;while(z=z.parentNode)}z&&(d=z,e=z.getBoundingClientRect(),f=(T(e.right-j)<=h)-(T(e.left-j)<=h),g=(T(e.bottom-k)<=h)-(T(e.top-k)<=h)),f||g||(f=(l-j<=h)-(j<=h),g=(m-k<=h)-(k<=h),(f||g)&&(d=N)),K.vx===f&&K.vy===g&&K.el===d||(K.el=d,K.vx=f,K.vy=g,clearInterval(K.pid),d&&(K.pid=setInterval(function(){d===N?N.scrollTo(N.pageXOffset+f*i,N.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),W=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=thisLine truncated
|
||||
h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2FLine truncated
|
||||
var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"==e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1]);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed Huffman Coding","None (Store)"],INFLATE_BUFFER_TYPE:["Adaptive","Block"],COMPRESSION_METHOD:["Deflate","None (Store)"],OS:["MSDOS","Unix","Macintosh"],RAW_COMPRESSION_TYPE_LOOKUP:{"Fixed Huffman Coding":Zlib.RawDeflate.CompressionType.FIXED,"Dynamic Huffman Coding":Zlib.RawDeflate.CompressionType.DYNAMIC,"None (Store)":Zlib.RawDeflate.CompressionType.NONE},run_raw_deflate:function(a,b){var c=new Zlib.RawDeflate(a,{compressionType:Compress.RAW_COMPRESSION_TYPE_LOOKUP[b[0]]});return Array.prototype.slice.call(c.compress())},INFLATE_INDEX:0,INFLATE_BUFFER_SIZE:0,INFLATE_RESIZE:!1,INFLATE_VERIFY:!1,RAW_BUFFER_TYPE_LOOKUP:{Adaptive:Zlib.RawInflate.BufferType.ADAPTIVE,Block:Zlib.RawInflate.BufferType.BLOCK},run_raw_inflate:function(a,b){a=Utils.str_to_byte_array(Utils.byte_array_to_utf8(a));var c=new Zlib.RawInflate(a,{index:b[0],bufferSize:b[1],bufferType:Compress.RAW_BUFFER_TYPE_LOOKUP[b[2]],resize:b[3],verify:b[4]}),d=Array.prototype.slice.call(c.decompress());if(d.length>158&&93==d[0]&&93==d[5]){for(var e=!1,f=0;f<15Line truncated
|
||||
if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1==h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&65===a[10]||77===a[0]&&52===a[1]&&65===a[2]&&32===a[3]?{ext:"m4a",mime:"audio/m4a"}:79===a[0]&&103===a[1]&&103===a[2]&&83===a[3]?{ext:"ogg",mime:"audio/ogg"}:102===a[0]&&76===a[1]&&97===a[2]&&67===a[3]?{ext:"flac",mime:"audio/x-flac"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&87===a[8]&&65===a[9]&&86===a[10]&&69===a[11]?{ext:"wav",mime:"audio/x-wav"}:35===a[0]&&33===a[1]&&65===a[2]&&77===a[3]&&82===a[4]&&10===a[5]?{ext:"amr",mime:"audio/amr"}:37===a[0]&&80===a[1]&&68===a[2]&&70===a[3]?{ext:"pdf",mime:"application/pdf"}:77===a[0]&&90===a[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==a[0]&&70!==a[0]||87!==a[1]||83!==a[2]?123===a[0]&&92===a[1]&&114===a[2]&&116===a[3]&&102===a[4]?{ext:"rtf",mime:"application/rtf"}:119===a[0]&&79===a[1]&&70===a[2]&&70===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff",mime:"application/font-woff"}:119===a[0]&&79===a[1]&&70===a[2]&&50===a[3]&&0===a[4]&&1===a[5]&&0===a[6]&&0===a[7]?{ext:"woff2",mime:"application/font-woff"}:76===a[34]&&80===a[35]&&(2===a[8]&&0===a[9]&&1===a[10]||1===a[8]&&0===a[Line truncated
|
||||
if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!=i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!=f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!=a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g==8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!=e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,null),f=esmangle.mangle(e);return c=escodegen.generate(f,{format:{renumber:!0,hexadecimal:!0,escapeless:!0,compact:!0,semicolons:!1,parentheses:!1}})}},MAC={OUTPUT_CASE:["Both","Upper only","Lower only"],NO_DELIM:!0,DASH_DELIM:!0,COLON_DELIM:!0,CISCO_STYLE:!1,run_format:function(a,b){if(!a)return"";var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=[],i=a.toLowerCase().split(/[,\s\r\n]+/);return i.forEach(function(a){var b=a.replace(/[:.-]+/g,""),i=b.replace(/(.{2}(?=.))/g,"$1-"),j=b.replace(/(.{2}(?=.))/g,"$1:"),k=b.replace(/(.{4}(?=.))/g,"$1.");"Lower only"==c?(d&&h.push(b),e&&h.push(i),f&&h.push(j),g&&h.push(k)):"Upper only"==c?(d&&h.push(b.toUpperCase()),e&&h.push(i.toUpperCase()),f&&h.push(j.toUpperCase()),g&&h.push(k.toUpperCase())):(d&&h.push(b,b.toUpperCase()),e&&h.push(i,i.toUpperCase()),f&&h.push(j,j.toUpperCase()),g&&h.push(k,k.toUpperCase())),h.push("")}),h.join("\n")}},Numberwang={run:function(a,b){if(!a)return"Let's play Wangernumb!";var c=a.match(/\d+/);return c?c[0]+"! That's Numberwang!":"Sorry, that's not Numberwang. Let's rotate the board!"}},OS={run_parse_unix_perms:function(a,b){var c={d:!1,sl:!1,np:!1,s:!1,cd:Line truncated
|
||||
"060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672a0907":"BankGate","0603672a0908":"GTE","0603672a0909":"CompuSource","0603551d01":"authorityKeyIdentifier","0603551d0a":"basicConstraints","0603551d0b":"nameConstraints","0603551d0c":"policyConstraints","0603551d0d":"basicConstraints","0603551d0e":"subjectKeyIdentifier","0603551d0f":"keyUsage","0603551d10":"privateKeyUsagePeriod","0603551d11":"subjectAltName","0603551d12":"issuerAltName","0603551d13":"basicConstraints","0603551d02":"keyAttributes","0603551d14":"cRLNumber","0603551d15":"cRLReason","0603551d16":"expirationDate","0603551d17":"instructionCode","0603551d18":"invalidityDate","0603551d1a":"issuingDistributionPoint","0603551d1b":"deltaCRLIndicator","0603551d1c":"issuingDistributionPoint","0603551d1d":"certificateIssuer","0603551d03":"certificatePolicies","0603551d1e":"nameConstraints","0603551d1f":"cRLDistributionPoints","0603551d20":"certificatePolicies","0603551d21":"policyMappings","0603551d22":"policyConstraints","0603551d23":"authorityKeyIdentifier","0603551d24":"policyConstraints","0603551d25":"extKeyUsage","0603551d04":"keyUsageRestriction","0603551d05":"policyMapping","Line truncated
|
||||
},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET}]},"Show Base64 offsets":{description:"When a string is within a block of data and the whole block is Base64'd, the string itself could be represented in Base64 in three distinct ways depending on its offset within the block.<br><br>This operation shows all possible offsets for a given string so that each possible encoding can be considered.",run:Base64.run_offsets,input_type:"byte_array",output_type:"html",args:[{name:"Alphabet",type:"binary_string",value:Base64.ALPHABET},{name:"Show variable chars and padding",type:"boolean",value:Base64.OFFSETS_SHOW_VARIABLE}]},XOR:{description:"XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of tLine truncated
|
||||
},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:"string",args:[]},"Find / Replace":{description:"Replaces all occurrences of the first string with the second.<br><br>The three match options are only relevant to regex search strings.",run:StrUtils.run_find_replace,manual_bake:!0,input_type:"string",output_type:"string",args:[{name:"Find",type:"toggle_string",value:"",toggle_values:StrUtils.SEARCH_TYPE},{name:"Replace",type:"binary_string",value:""},{name:"Global match",type:"boolean",value:StrUtils.FIND_REPLACE_GLOBAL},{name:"Case insensitive",type:"boolean",value:StrUtils.FIND_REPLACE_CASE},{name:"Multiline matching",type:"boolean",value:StrUtils.FIND_REPLACE_MULTILINE}]},"To Upper case":{description:"Converts the input string to upper case, optionally limiting scope to only the first character in each word, sentence or paragraph.",run:StrUtils.run_upper,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[{name:"Scope",type:"option",value:StrUtils.CASE_SCOPE}]},"To Lower case":{description:"Converts every character in the input to lower case.",run:StrUtils.run_lower,highlight:!0,highlight_reverse:!0,input_type:"string",output_type:"string",args:[]},Split:{description:"Splits a string into sections around a given delimiter.",run:StrUtils.run_split,input_type:"string",output_type:"string",args:[{name:"Split delimiter",type:"binary_short_string",value:StrUtils.SPLIT_DELIM},{name:"Join delimiter",type:"option",value:StrUtils.DELIMITER_OPTIONS}]},Strings:{description:"Extracts all strings from the input.",run:Extract.run_strings,input_type:"string",output_type:"string",args:[{name:"Minimum length",type:"number",value:Extract.MIN_STRING_LEN},{name:"Display total",type:"boolean",value:Extract.DISPLAY_TOTAL}]},"Extract IP addresses":{description:"Extracts all IPv4 and IPv6 addresses.<br><br>Warning: Given a string <code>710.65.0.456</code>, this will match <code>10.65.0.45</code> so always check the original input!",run:Extract.run_ip,input_type:"string",output_type:"string",args:[{name:"IPv4",type:"boolean",value:Extract.INCLUDE_IPV4},{name:"IPv6",type:"boolean",value:Extract.INCLUDE_IPV6},{name:"Remove local IPv4 addresses",type:"boolean",Line truncated
|
||||
a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!=a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id==d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),this.reset_layout(),this.set_compile_message(),this.load_URI_params()},HTMLApp.prototype.handle_error=function(a){console.error(a);var b=a.display_str||a.toString();this.alert(b,"danger",this.options.error_timeout,!this.options.show_errors)},HTMLApp.prototype.bake=function(a){var b;try{b=this.chef.bake(this.get_input(),this.get_recipe_config(),this.options,this.progress,a)}catch(a){this.handle_error(a)}finally{if(!b)return;b.error&&this.handle_error(b.error),this.options=b.options,this.dish_str="html"==b.type?Utils.strip_html_tags(b.result,!0):b.result,this.progress=b.progress,this.manager.recipe.update_breakpoint_indicator(b.progress),this.manager.output.set(b.result,b.type,b.duration),b.duration>this.options.auto_bake_threshold&&this.auto_bake_&&(this.manager.controls.set_auto_bake(!1),this.alert("Baking took longer than "+this.options.auto_bake_threshold+"ms, Auto Bake has been disabled.","warning",5e3))}},HTMLApp.prototype.auto_bake=function(){this.auto_bake_&&this.bake()},HTMLApp.prototype.silent_bake=function(){var a=(new Date).getTime(),b=this.get_recipe_config();return this.auto_bake_&&this.chef.silent_bake(b),(new Date).getTime()-a},HTMLApp.prototype.get_input=function(){var a=this.manager.input.get();return sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),a},HTMLApp.prototype.set_input=function(a){sessionStorage.setItem("input_length",a.length),sessionStorage.setItem("input",a),this.manager.input.set(a)},HTMLApp.prototype.populate_operations_list=function(){document.body.appendChild(document.getElementById("edit-favourites"));for(var a="",b=0;b<this.categories.length;b++){for(var c=this.categories[b],d=0===b,e=new HTMLCategory(c.name,d),f=0;f<c.ops.length;f++){var g=c.ops[f],h=new HTMLOperation(g,this.operations[g],this,this.manager);e.add_operation(h)}a+=e.to_html()}document.getElementById("categories").innerHTML=a;var i=document.querySelectorAll("#categories .op_list");for(b=0;b<i.length;b++)i[b].dispatchEvent(this.manager.oplistcreate);document.querySelector("#categories a").appendChild(documentLine truncated
|
||||
this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEventListener("click",this.output.switch_click.bind(this.output)),document.getElementById("undo-switch").addEventListener("click",this.output.undo_switch_click.bind(this.output)),document.getElementById("output-text").addEventListener("scroll",this.highlighter.output_scroll.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mouseup",this.highlighter.output_mouseup.bind(this.highlighter)),document.getElementById("output-text").addEventListener("mousemove",this.highlighter.output_mousemove.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mouseup",this.highlighter.output_html_mouseup.bind(this.highlighter)),document.getElementById("output-html").addEventListener("mousemove",this.highlighter.output_html_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#output-text","mousedown dblclick select",this.highlighter.output_mousedown,this.highlighter),this.add_multi_event_listener("#output-html","mousedown dblclick select",this.highlighter.output_html_mousedown,this.highlighter),document.getElementById("options").addEventListener("click",this.options.options_click.bind(this.options)),document.getElementById("reset-options").addEventListener("click",this.options.reset_options_click.bind(this.options)),$(".option-item input:checkbox").on("switchChange.bootstrapSwitch",this.options.switch_change.bind(this.options)),$(".option-item input:checkbox").on("switchChange.bootstrapSwitch",this.options.set_word_wrap.bind(this.options)),this.add_dynamic_listener(".option-item input[type=number]","keyup",this.options.number_change,this.options),this.add_dynamic_listener(".option-item input[type=number]","change",this.options.number_change,this.options),this.add_dynamic_listener(".option-item select","change",this.options.select_change,this.options),document.getElementById("alert-close").addEventListener("click",this.app.alert_close_click.bind(this.app))},Manager.prototype.add_listeners=function(a,b,c,d){d=d||this,[].forEach.call(document.querySelectorAll(a),functionLine truncated
|
||||
h.fillStyle="green";for(var u=0;u<b.length;u++){var v=b[u]/t*m;h.fillRect(s,o-v,r,v),s+=r+q}if(h.fillStyle="black",h.textAlign="center",s=i+q,e>=b.length)for(var u=0;u<=b.length;u++)h.fillText(u,s,o+.3*l),s+=r+q;else for(var u=0;u<=e;u++){var w=Math.ceil(b.length/e*u);s=n/e*u+i,h.fillText(w,s,o+.3*l)}h.textAlign="right";var x;if(f>=t)for(var u=0;u<=t;u++)x=o-u/t*m+g/3,h.fillText(u,.8*i,x);else for(var u=0;u<=f;u++){var w=Math.ceil(t/f*u);x=o-w/t*m+g/3,h.fillText(w,.8*i,x)}if(c&&(h.textAlign="center",h.fillText(c,n/2+i,o+.8*l)),d){h.save();var y=.3*i,z=m/2+k;h.translate(y,z),h.rotate(-Math.PI/2),h.textAlign="center",h.fillText(d,0,0),h.restore()}},draw_scale_bar:function(a,b,c,d){var e=a.getContext("2d"),f=.01*a.width,g=.01*a.width,h=.1*a.height,i=.3*a.height,j=a.height-h-i,k=a.width-f-g,l=b/c;e.strokeRect(f,h,k,j);var m=e.createLinearGradient(f,0,k+f,0);m.addColorStop(0,"green"),m.addColorStop(.5,"gold"),m.addColorStop(1,"red"),e.fillStyle=m,e.fillRect(f,h,k*l,j);var n,o,p,q;e.fillStyle="black",e.textAlign="center",e.font="13px Arial";for(var r=0;r<d.length;r++)n=k/c*d[r].min+f,o=h+j+.1*i,p=n,q=h+j+.3*i,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].max+f,p=n,CanvasComponents.draw_line(e,n,o,p,q),n=k/c*d[r].min+f,o=h+j+.3*i,p=k/c*d[r].max+f,q=o,CanvasComponents.draw_line(e,n,o,p,q),d[r].max>=.9*c?(e.textAlign="right",n=p):d[r].max<=.1*c?e.textAlign="left":n+=(p-n)/2,o=h+j+.8*i,e.fillText(d[r].label,n,o)}},Utils={chr:function(a){return String.fromCharCode(a)},ord:function(a){return a.charCodeAt(0)},pad_left:function(a,b,c){c=c||"0";var d=c.length-(b-a.length);return d=d<0?0:d,a.length<b?Utils.pad_left(c.slice(d,c.length)+a,b,c):a},pad_right:function(a,b,c){return c=c||" ",a.length<b?Utils.pad_right(a+c.slice(0,b-a.length),b,c):a},pad:function(a,b,c){return Utils.pad_left(a,b,c)},truncate:function(a,b,c){return c=c||"...",a.length>b&&(a=a.slice(0,b-c.length)+c),a},hex:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||2,Utils.pad(a.toString(16),b)},bin:function(a,b){return a="string"==typeof a?Utils.ord(a):a,b=b||8,Utils.pad(a.toString(2),b)},printable:function(a,b){window&&window.app&&!window.app.options.treat_as_utf8&&(a=Utils.byte_array_to_chars(Utils.str_to_byte_array(a)));var c=/[\0-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2FLine truncated
|
||||
},run_evpkdf:function(a,b){var c=b[0]/32,d=b[1],e=CryptoJS.enc.Hex.parse(b[2]||""),f=b[3],g=b[4],h=Utils.format[f].parse(a),i=CryptoJS.EvpKDF(h,e,{keySize:c,iterations:d});return i.toString(Utils.format[g])},run_rc4:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=CryptoJS.RC4.encrypt(c,d);return e.ciphertext.toString(Utils.format[b[2]])},RC4DROP_BYTES:768,run_rc4drop:function(a,b){var c=Utils.format[b[1]].parse(a),d=Utils.format[b[0].option].parse(b[0].string),e=b[3],f=CryptoJS.RC4Drop.encrypt(c,d,{drop:e});return f.ciphertext.toString(Utils.format[b[2]])},run_vigenere_enc:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(c+d)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(c+d)%26].toUpperCase()):(h+=a[j],i++);return h},run_vigenere_dec:function(a,b){var c,d,e,f="abcdefghijklmnopqrstuvwxyz",g=b[0].toLowerCase(),h="",i=0;if(!g)return"No key entered";if(!/^[a-zA-Z]+$/.test(g))return"The key must consist only of letters";for(var j=0;j<a.length;j++)f.indexOf(a[j])>=0?(e=g[(j-i)%g.length],c=f.indexOf(e),d=f.indexOf(a[j]),h+=f[(d-c+f.length)%26]):f.indexOf(a[j].toLowerCase())>=0?(e=g[(j-i)%g.length].toLowerCase(),c=f.indexOf(e),d=f.indexOf(a[j].toLowerCase()),h+=f[(d+f.length-c)%26].toUpperCase()):(h+=a[j],i++);return h}};CryptoJS.kdf.OpenSSL.execute=function(a,b,c,d){void 0!==d&&null!==d||(d=CryptoJS.lib.WordArray.random(8));var e=CryptoJS.algo.EvpKDF.create({keySize:b+c}).compute(a,d),f=CryptoJS.lib.WordArray.create(e.words.slice(b),4*c);return e.sigBytes=4*b,CryptoJS.lib.CipherParams.create({key:e,iv:f,salt:d})};var Code={LANGUAGES:["default-code","default-markup","bash","bsh","c","cc","coffee","cpp","cs","csh","cv","cxx","cyc","htm","html","in.tag","java","javascript","js","json","m","mxml","perl","pl","pm","py","python","rb","rc","rs","ruby","rust","sh","uq.val","xhtml","xml","xsl"],LINE_NUMS:!1,run_syntax_highlight:function(a,b){var c=b[0],d=b[1];return"<code class='prettyprint'>"+prettyPrintOne(Utils.escape_html(a),c,d)+"</code>"},BEAUTIFY_INDENT:"\\t",run_xml_beautify:function(a,b){var c=b[0];return vkbeautify.xml(a,c)},run_json_beautify:function(a,b){var c=b[0];return a?vkbeautify.json(a,c):""},run_css_beautify:function(a,b){var c=b[0];return vkbeautify.css(a,c)},run_sql_beautify:function(a,b){var c=b[0];return vkbeautify.sql(a,c)},PRESERVE_COMMENTS:!1,run_xml_minify:function(a,b){var c=b[0];return vkbeautify.xmlmin(a,c)},run_json_minify:function(a,b){return a?vkbeautify.jsonmin(a):""},run_css_minify:function(a,b){var c=b[0];return vkbeautify.cssmin(a,c)},run_sql_minify:function(a,b){return vkbeautify.sqlmin(a)},run_generic_beautify:function(a,b){function c(a,b,c){return g[c]=b[0],a.substring(0,b.index)+"###preserved_token"+c+"###"+a.substring(b.index+b[0].length)}for(var d,e=a,f=0,g=[],h=/'([^'\\]|\\.)*'/g;d=h.exec(e);)e=c(e,d,f++),h.lastIndex=d.index;for(var i=/"([^"\\]|\\.)*"/g;d=i.exec(e);)e=c(e,d,f++),i.lastIndex=d.index;for(var j=/\/\/[^\n\r]*/g;d=j.exec(e);)e=c(e,d,f++),j.lastIndex=d.index;for(var k=/\/\*[\s\S]*?\*\//gm;d=k.exec(e);)e=c(e,d,f++),k.lastIndex=d.index;for(var l=/(^|\n)#[^\n\r#]+/g;d=l.exec(e);)e=c(e,d,f++),l.lastIndex=d.index;for(var m=/\/.*?[^\\]\/[gim]{0,3}/gi;d=m.exec(e);)e=c(e,d,f++),m.lastIndex=d.index;e=e.replace(/;/g,";\n"),e=e.replace(/{/g,"{\n"),e=e.replace(/}/g,"\n}\n"),e=e.replace(/\r/g,""),e=e.replace(/^\s+/g,""),e=e.replace(/\n\s+/g,"\n"),e=e.replace(/\s*$/g,""),e=e.replace(/\n{/g,"{");for(var n=0,o=0;n<e.length;){switch(e[n]){case"{":o++;break;case"\n":if(n+1>=e.length)break;"}"===e[n+1]&&o--;var p=o>=0?Array(4*o+1).join(" "):"";e=e.substring(0,n+1)+p+e.substring(n+1),o>0&&(n+=4*o)}n++}e=e.replace(/\s*([!<>=+-\/*]?)=\s*/g," $1= "),e=e.replace(/\s*<([=]?)\s*/g," <$1 "),e=e.replace(/\s*>([=]?)\s*/g," >$1 "),e=e.replace(/([^+])\+([^+=])/g,"$1 + $2"),e=e.replace(/([^-])-([^-=])/g,"$1 - $2"),e=e.replace(/([^*])\*([^*=])/g,"$1 * $2"),e=e.replace(/([^\/])\/([^\/=])/g,"$1 / $2"),e=e.replace(/\s*,\s*/g,", "),e=e.replace(/\s*{/g," {"),e=e.replace(/}\n/g,"}\n\n"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim,"$1 ($2)\n $3"),e=e.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim,"$1 ($2) $3"),e=e.replace(/else\s*\n([^{])/gim,"else\n $1"),e=e.replace(/else\s+([^{])/gim,"else $1"),e=e.replace(/\s+;/g,";"),e=e.replace(/\{\s+\}/g,"{}"),e=e.replace(/\[\s+\]/g,"[]"),e=e.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi,"} $1");for(var q=/###preserved_token(\d+)###/g;d=q.exec(e);){var r=parseInt(d[1],10);e=e.substring(0,d.index)+g[r]+e.substring(d.index+d[0].length),q.lastIndex=d.index}return e}},Compress={COMPRESSION_TYPE:["Dynamic Huffman Coding","Fixed HuffmanLine truncated
|
||||
c+=Extract.run_ip(a,[!0,!0,!1]),c+="\nEmail addresses\n",c+=Extract.run_email(a,[]),c+="\nMAC addresses\n",c+=Extract.run_mac(a,[]),c+="\nURLs\n",c+=Extract.run_urls(a,[]),c+="\nDomain names\n",c+=Extract.run_domains(a,[]),c+="\nFile paths\n",c+=Extract.run_file_paths(a,[!0,!0]),c+="\nDates\n",c+=Extract.run_dates(a,[])}},FileType={run_detect:function(a,b){var c=FileType._magic_type(a);if(c){var d="File extension: "+c.ext+"\nMIME type: "+c.mime;return c.desc&&c.desc.length&&(d+="\nDescription: "+c.desc),d}return"Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?"},IGNORE_COMMON_BYTE_SEQUENCES:!0,run_scan_for_embedded_files:function(a,b){for(var c,d="Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n",e=b[0],f=["ico","ttf",""],g=0,h=0,i=0;i<a.length;i++)if(c=FileType._magic_type(a.slice(i))){if(e&&f.indexOf(c.ext)>-1){h++;continue}g++,d+="\nOffset "+i+" (0x"+Utils.hex(i)+"):\n File extension: "+c.ext+"\n MIME type: "+c.mime+"\n",c.desc&&c.desc.length&&(d+=" Description: "+c.desc+"\n")}return 0===g&&(d+="\nNo embedded files were found."),h>0&&(d+="\n\n"+h,d+=1===h?" file type was detected that has a common byte sequence. This is likely to be a false positive.":" file types were detected that have common byte sequences. These are likely to be false positives.",d+=" Run this operation with the 'Ignore common byte sequences' option unchecked to see details."),d},_magic_type:function(a){return a&&a.length>1?255===a[0]&&216===a[1]&&255===a[2]?{ext:"jpg",mime:"image/jpeg"}:137===a[0]&&80===a[1]&&78===a[2]&&71===a[3]?{ext:"png",mime:"image/png"}:71===a[0]&&73===a[1]&&70===a[2]?{ext:"gif",mime:"image/gif"}:87===a[8]&&69===a[9]&&66===a[10]&&80===a[11]?{ext:"webp",mime:"image/webp"}:(73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3])&&67===a[8]&&82===a[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===a[0]&&73===a[1]&&42===a[2]&&0===a[3]||77===a[0]&&77===a[1]&&0===a[2]&&42===a[3]?{ext:"tif",mime:"image/tiff"}:66===a[0]&&77===a[1]?{ext:"bmp",mime:"image/bmp"}:73===a[0]&&73===a[1]&&188===a[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===a[0]&&66===a[1]&&80===a[2]&&83===a[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===a[0]&&75===a[1]&&3===a[2]&&4===a[3]&&109===a[30]&&105===a[31]&&109===a[32]&&101===a[33]&&116===a[34]&&121===a[35]&&112===a[36]&&101===a[37]&&97===a[38]&&112===a[39]&&112===a[40]&&108===a[41]&&105===a[42]&&99===a[43]&&97===a[44]&&116===a[45]&&105===a[46]&&111===a[47]&&110===a[48]&&47===a[49]&&101===a[50]&&112===a[51]&&117===a[52]&&98===a[53]&&43===a[54]&&122===a[55]&&105===a[56]&&112===a[57]?{ext:"epub",mime:"application/epub+zip"}:80!==a[0]||75!==a[1]||3!==a[2]&&5!==a[2]&&7!==a[2]||4!==a[3]&&6!==a[3]&&8!==a[3]?117===a[257]&&115===a[258]&&116===a[259]&&97===a[260]&&114===a[261]?{ext:"tar",mime:"application/x-tar"}:82!==a[0]||97!==a[1]||114!==a[2]||33!==a[3]||26!==a[4]||7!==a[5]||0!==a[6]&&1!==a[6]?31===a[0]&&139===a[1]&&8===a[2]?{ext:"gz",mime:"application/gzip"}:66===a[0]&&90===a[1]&&104===a[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===a[0]&&122===a[1]&&188===a[2]&&175===a[3]&&39===a[4]&&28===a[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===a[0]&&1===a[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===a[0]&&0===a[1]&&0===a[2]&&(24===a[3]||32===a[3])&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]||51===a[0]&&103===a[1]&&112===a[2]&&53===a[3]||0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&109===a[8]&&112===a[9]&&52===a[10]&&50===a[11]&&109===a[16]&&112===a[17]&&52===a[18]&&49===a[19]&&109===a[20]&&112===a[21]&&52===a[22]&&50===a[23]&&105===a[24]&&115===a[25]&&111===a[26]&&109===a[27]?{ext:"mp4",mime:"video/mp4"}:0===a[0]&&0===a[1]&&0===a[2]&&28===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]&&52===a[9]&&86===a[10]?{ext:"m4v",mime:"video/x-m4v"}:77===a[0]&&84===a[1]&&104===a[2]&&100===a[3]?{ext:"mid",mime:"audio/midi"}:109===a[31]&&97===a[32]&&116===a[33]&&114===a[34]&&111===a[35]&&115===a[36]&&107===a[37]&&97===a[38]?{ext:"mkv",mime:"video/x-matroska"}:26===a[0]&&69===a[1]&&223===a[2]&&163===a[3]?{ext:"webm",mime:"video/webm"}:0===a[0]&&0===a[1]&&0===a[2]&&20===a[3]&&102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]?{ext:"mov",mime:"video/quicktime"}:82===a[0]&&73===a[1]&&70===a[2]&&70===a[3]&&65===a[8]&&86===a[9]&&73===a[10]?{ext:"avi",mime:"video/x-msvideo"}:48===a[0]&&38===a[1]&&178===a[2]&&117===a[3]&&142===a[4]&&102===a[5]&&207===a[6]&&17===a[7]&&166===a[8]&&217===a[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===a[0]&&0===a[1]&&1===a[2]&&"b"===a[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===a[0]&&68===a[1]&&51===a[2]||255===a[0]&&251===a[1]?{ext:"mp3",mime:"audio/mpeg"}:102===a[4]&&116===a[5]&&121===a[6]&&112===a[7]&&77===a[8]Line truncated
|
||||
j.hasOwnProperty(o)?j[o].push(m):j[o]=[m]}for(n in i)if(i[n]=i[n].sort(),l+=IP._ipv4_to_str(n)+"/"+d+"\n",!e){for(p=0;p<i[n].length;p++)l+=" "+IP._ipv4_to_str(i[n][p])+"\n";l+="\n"}for(o in j)if(l+=o+"/"+d+"\n",!e){for(p=0;p<j[o].length;p++)l+=" "+IP._ipv6_to_str(j[o][p],!0)+"\n";l+="\n"}return l},_LARGE_RANGE_ERROR:'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.',_ipv4_cidr_range:function(a,b,c,d){var e="",f=IP._str_to_ipv4(a[1]),g=parseInt(a[2],10);if(g<0||g>31)return"IPv4 CIDR must be less than 32";var h=~(4294967295>>>g),i=f&h,j=i|~h;return b&&(e+="Network: "+IP._ipv4_to_str(f)+"\n",e+="CIDR: "+g+"\n",e+="Mask: "+IP._ipv4_to_str(h)+"\n",e+="Range: "+IP._ipv4_to_str(i)+" - "+IP._ipv4_to_str(j)+"\n",e+="Total addresses in range: "+((j-i>>>0)+1)+"\n\n"),c&&(e+=g>=16||d?IP._generate_ipv4_range(i,j).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_cidr_range:function(a,b){var c="",d=IP._str_to_ipv6(a[1]),e=parseInt(a[a.length-1],10);if(e<0||e>127)return"IPv6 CIDR must be less than 128";for(var f=IP._gen_ipv6_mask(e),g=new Array(8),h=new Array(8),i="",j=new Array(128),k=0;k<8;k++)if(g[k]=d[k]&f[k],h[k]=g[k]|65535&~f[k],i=(h[k]-g[k]).toString(2),"0"!==i)for(var l=0;l<i.length;l++)j[16*k+16-(i.length-l)]=i[l];return b&&(c+="Network: "+IP._ipv6_to_str(d)+"\n",c+="Shorthand: "+IP._ipv6_to_str(d,!0)+"\n",c+="CIDR: "+e+"\n",c+="Mask: "+IP._ipv6_to_str(f)+"\n",c+="Range: "+IP._ipv6_to_str(g)+" - "+IP._ipv6_to_str(h)+"\n",c+="Total addresses in range: "+(parseInt(j.join(""),2)+1)+"\n\n"),c},_gen_ipv6_mask:function(a){for(var b,c=new Array(8),d=0;d<8;d++)a>16*(d+1)?c[d]=65535:(b=a-16*d,b<0&&(b=0),c[d]=~(65535>>>b|4294901760));return c},_ipv4_hyphenated_range:function(a,b,c,d){for(var e="",f=IP._str_to_ipv4(a[1]),g=IP._str_to_ipv4(a[2]),h=f^g,i=32,j=0;0!==h;)h>>=1,i--,j=j<<1|1;j=~j>>>0;var k=f&j,l=k&j,m=l|~j;return b&&(e+="Minimum subnet required to hold this range:\n",e+="\tNetwork: "+IP._ipv4_to_str(k)+"\n",e+="\tCIDR: "+i+"\n",e+="\tMask: "+IP._ipv4_to_str(j)+"\n",e+="\tSubnet range: "+IP._ipv4_to_str(l)+" - "+IP._ipv4_to_str(m)+"\n",e+="\tTotal addresses in subnet: "+((m-l>>>0)+1)+"\n\n",e+="Range: "+IP._ipv4_to_str(f)+" - "+IP._ipv4_to_str(g)+"\n",e+="Total addresses in range: "+((g-f>>>0)+1)+"\n\n"),c&&(e+=g-f>>>0<=65536||d?IP._generate_ipv4_range(f,g).join("\n"):IP._LARGE_RANGE_ERROR),e},_ipv6_hyphenated_range:function(a,b){for(var c="",d=IP._str_to_ipv6(a[1]),e=IP._str_to_ipv6(a[14]),f="",g=new Array(128),h=0;h<128;h++)g[h]="0";for(h=0;h<8;h++)if(f=(e[h]-d[h]).toString(2),"0"!==f)for(var i=0;i<f.length;i++)g[16*h+16-(f.length-i)]=f[i];return b&&(c+="Range: "+IP._ipv6_to_str(d)+" - "+IP._ipv6_to_str(e)+"\n",c+="Shorthand range: "+IP._ipv6_to_str(d,!0)+" - "+IP._ipv6_to_str(e,!0)+"\n",c+="Total addresses in range: "+(parseInt(g.join(""),2)+1)+"\n\n"),c},_str_to_ipv4:function(a){function b(a){if(4!==a.length)throw"More than 4 blocks.";for(var b=[],c=0;c<4;c++)if(b[c]=parseInt(a[c],10),b[c]<0||b[c]>255)throw"Block out of range.";return b}var c=a.split("."),d=b(c),e=0;return e+=d[0]<<24,e+=d[1]<<16,e+=d[2]<<8,e+=d[3]},_ipv4_to_str:function(a){var b=a>>24&255,c=a>>16&255,d=a>>8&255,e=255&a;return b+"."+c+"."+d+"."+e},_str_to_ipv6:function(a){function b(a){if(a.length<3||a.length>8)throw"Badly formatted IPv6 address.";for(var b=[],c=0;c<a.length;c++)if(b[c]=parseInt(a[c],16),b[c]<0||b[c]>65535)throw"Block out of range.";return b}for(var c=a.split(":"),d=b(c),e=0,f=new Array(8),g=0;g<8;g++)isNaN(d[e])?(f[g]=0,g===8-d.slice(e).length&&e++):(f[g]=d[e],e++);return f},_ipv6_to_str:function(a,b){var c="",d=0;if(b){var e=-1,f=-1,g=0,h=-1;for(d=0;d<8;d++)0===a[d]&&h===d-1?h=d:0===a[d]&&(g=d,h=d),h>=0&&h-g>f-e&&(e=g,f=h);for(d=0;d<8;d++)d!==e?c+=Utils.hex(a[d],1)+":":(c+=":",d=f,7===f&&(c+=":"));":"===c[0]&&(c=":"+c)}else for(d=0;d<8;d++)c+=Utils.hex(a[d],4)+":";return c.slice(0,c.length-1)},_generate_ipv4_range:function(a,b){var c=[];if(b>=a)for(;a<=b;a++)c.push(IP._ipv4_to_str(a));else c[0]="Second IP address smaller than first.";return c}},JS={PARSE_LOC:!1,PARSE_RANGE:!1,PARSE_TOKENS:!1,PARSE_COMMENT:!1,PARSE_TOLERANT:!1,run_parse:function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h={},i={loc:c,range:d,tokens:e,comment:f,tolerant:g};return h=esprima.parse(a,i),JSON.stringify(h,null,2)},BEAUTIFY_INDENT:"\\t",BEAUTIFY_QUOTES:["Auto","Single","Double"],BEAUTIFY_SEMICOLONS:!0,BEAUTIFY_COMMENT:!0,run_beautify:function(a,b){var c,d=b[0]||JS.BEAUTIFY_INDENT,e=b[1].toLowerCase(),f=b[2],g=b[3],h="";try{c=esprima.parse(a,{range:!0,tokens:!0,comment:!0});var i={format:{indent:{style:d},quotes:e,semicolons:f},comment:g};i.comment&&(c=escodegen.attachComments(c,c.comments,c.tokens)),h=escodegen.generate(c,i)}catch(a){throw"Unable to parse JavaScript.<br>"+a.message}return h},run_minify:function(a,b){var c="",d=esprima.parse(a),e=esmangle.optimize(d,nullLine truncated
|
||||
"06032b060105050701":"privateExtension","06032b06010505070101":"authorityInfoAccess","06032b06010505070c02":"CMC Data","06032b060105050702":"policyQualifierIds","06032b06010505070202":"unotice","06032b060105050703":"keyPurpose","06032b06010505070301":"serverAuth","06032b06010505070302":"clientAuth","06032b06010505070303":"codeSigning","06032b06010505070304":"emailProtection","06032b06010505070305":"ipsecEndSystem","06032b06010505070306":"ipsecTunnel","06032b06010505070307":"ipsecUser","06032b06010505070308":"timeStamping","06032b060105050704":"cmpInformationTypes","06032b06010505070401":"caProtEncCert","06032b06010505070402":"signKeyPairTypes","06032b06010505070403":"encKeyPairTypes","06032b06010505070404":"preferredSymmAlg","06032b06010505070405":"caKeyUpdateInfo","06032b06010505070406":"currentCRL","06032b06010505073001":"ocsp","06032b06010505073002":"caIssuers","06032b06010505080101":"HMAC-MD5","06032b06010505080102":"HMAC-SHA","060360864801650201010a":"mosaicKeyManagementAlgorithm","060360864801650201010b":"sdnsKMandSigAlgorithm","060360864801650201010c":"mosaicKMandSigAlgorithm","060360864801650201010d":"SuiteASignatureAlgorithm","060360864801650201010e":"SuiteAConfidentialityAlgorithm","060360864801650201010f":"SuiteAIntegrityAlgorithm","06036086480186f84201":"cert-extension","06036086480186f842010a":"EntityLogo","06036086480186f842010b":"UserPicture","06036086480186f8420109":"HomePage-url","06036086480186f84202":"data-type","06036086480186f8420201":"GIF","06036086480186f8420202":"JPEG","06036086480186f8420203":"URL","06036086480186f8420204":"HTML","06036086480186f8420205":"netscape-cert-sequence","06036086480186f8420206":"netscape-cert-url","06036086480186f84203":"directory","06036086480186f8420401":"serverGatedCrypto","06036086480186f845010603":"Unknown Verisign extension","06036086480186f845010606":"Unknown Verisign extension","06036086480186f84501070101":"Verisign certificatePolicy","06036086480186f8450107010101":"Unknown Verisign policy qualifier","06036086480186f8450107010102":"Unknown Verisign policy qualifier","0603678105":"TCPA","060367810501":"tcpa_specVersion","060367810502":"tcpa_attribute","06036781050201":"tcpa_at_tpmManufacturer","0603678105020a":"tcpa_at_securityQualities","0603678105020b":"tcpa_at_tpmProtectionProfile","0603678105020c":"tcpa_at_tpmSecurityTarget","0603678105020d":"tcpa_at_foundationProtectionProfile","0603678105020e":"tcpa_at_foundationSecurityTarget","0603678105020f":"tcpa_at_tpmIdLabel","06036781050202":"tcpa_at_tpmModel","06036781050203":"tcpa_at_tpmVersion","06036781050204":"tcpa_at_platformManufacturer","06036781050205":"tcpa_at_platformModel","06036781050206":"tcpa_at_platformVersion","06036781050207":"tcpa_at_componentManufacturer","06036781050208":"tcpa_at_componentModel","06036781050209":"tcpa_at_componentVersion","060367810503":"tcpa_protocol","06036781050301":"tcpa_prtt_tpmIdProtocol","0603672a00":"contentType","0603672a0000":"PANData","0603672a0001":"PANToken","0603672a0002":"PANOnly","0603672a01":"msgExt","0603672a0a":"national","0603672a0a8140":"Japan","0603672a02":"field","0603672a0200":"fullName","0603672a0201":"givenName","0603672a020a":"amount","0603672a0202":"familyName","0603672a0203":"birthFamilyName","0603672a0204":"placeName","0603672a0205":"identificationNumber","0603672a0206":"month","0603672a0207":"date","0603672a02070b":"accountNumber","0603672a02070c":"passPhrase","0603672a0208":"address","0603672a0209":"telephone","0603672a03":"attribute","0603672a0300":"cert","0603672a030000":"rootKeyThumb","0603672a030001":"additionalPolicy","0603672a04":"algorithm","0603672a05":"policy","0603672a0500":"root","0603672a06":"module","0603672a07":"certExt","0603672a0700":"hashedRootKey","0603672a0701":"certificateType","0603672a0702":"merchantData","0603672a0703":"cardCertRequired","0603672a0704":"tunneling","0603672a0705":"setExtensions","0603672a0706":"setQualifier","0603672a08":"brand","0603672a0801":"IATA-ATA","0603672a081e":"Diners","0603672a0822":"AmericanExpress","0603672a0804":"VISA","0603672a0805":"MasterCard","0603672a08ae7b":"Novus","0603672a09":"vendor","0603672a0900":"GlobeSet","0603672a0901":"IBM","0603672a090a":"Griffin","0603672a090b":"Certicom","0603672a090c":"OSS","0603672a090d":"TenthMountain","0603672a090e":"Antares","0603672a090f":"ECC","0603672a0910":"Maithean","0603672a0911":"Netscape","0603672a0912":"Verisign","0603672a0913":"BlueMoney","0603672a0902":"CyberCash","0603672a0914":"Lacerte","0603672a0915":"Fujitsu","0603672a0916":"eLab","0603672a0917":"Entrust","0603672a0918":"VIAnet","0603672a0919":"III","0603672a091a":"OpenMarket","0603672a091b":"Lexem","0603672a091c":"Intertrader","0603672a091d":"Persimmon","0603672a0903":"Terisa","0603672a091e":"NABLE","0603672a091f":"espace-net","0603672a0920":"Hitachi","0603672a0921":"Microsoft","0603672a0922":"NEC","0603672a0923":"Mitsubishi","0603672a0924":"NCR","0603672a0925":"e-COMM","0603672a0926":"Gemplus","0603672a0904":"RSADSI","0603672a0905":"VeriFone","0603672a0906":"TrinTech","0603672aLine truncated
|
||||
},{name:"Date / Time",ops:["Parse DateTime","Translate DateTime Format","From UNIX Timestamp","To UNIX Timestamp","Extract dates"]},{name:"Extractors",ops:["Strings","Extract IP addresses","Extract email addresses","Extract MAC addresses","Extract URLs","Extract domains","Extract file paths","Extract dates","Regular expression"]},{name:"Compression",ops:["Raw Deflate","Raw Inflate","Zlib Deflate","Zlib Inflate","Gzip","Gunzip","Zip","Unzip","Bzip2 Decompress"]},{name:"Hashing",ops:["Analyse hash","Generate all hashes","MD5","SHA1","SHA224","SHA256","SHA384","SHA512","SHA3","RIPEMD-160","HMAC","Fletcher-16 Checksum","Adler-32 Checksum","CRC-32 Checksum","TCP/IP Checksum"]},{name:"Code tidy",ops:["Syntax highlighter","Generic Code Beautify","JavaScript Parser","JavaScript Beautify","JavaScript Minify","JSON Beautify","JSON Minify","XML Beautify","XML Minify","SQL Beautify","SQL Minify","CSS Beautify","CSS Minify","Strip HTML tags","Diff"]},{name:"Other",ops:["Entropy","Frequency distribution","Detect File Type","Scan for Embedded Files","Generate UUID","Numberwang"]},{name:"Flow control",ops:["Fork","Merge","Jump","Conditional Jump","Return"]}],OperationConfig={Fork:{description:"Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",run:FlowControl.run_fork,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Split delimiter",type:"binary_short_string",value:FlowControl.FORK_DELIM},{name:"Merge delimiter",type:"binary_short_string",value:FlowControl.MERGE_DELIM}]},Merge:{description:"Consolidate all branches back into a single trunk. The opposite of Fork.",run:FlowControl.run_merge,input_type:"string",output_type:"string",flow_control:!0,args:[]},Jump:{description:"Jump forwards or backwards over the specified number of operations.",run:FlowControl.run_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Number of operations to jump over",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},"Conditional Jump":{description:"Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression.",run:FlowControl.run_cond_jump,input_type:"string",output_type:"string",flow_control:!0,args:[{name:"Match (regex)",type:"string",value:""},{name:"Number of operations to jump over if match found",type:"number",value:FlowControl.JUMP_NUM},{name:"Maximum jumps (if jumping backwards)",type:"number",value:FlowControl.MAX_JUMPS}]},Return:{description:"End execution of operations at this point in the recipe.",run:FlowControl.run_return,input_type:"string",output_type:"string",flow_control:!0,args:[]},"From Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>",run:Base64.run_from,highlight:Base64.highlight_from,highlight_reverse:Base64.highlight_to,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base64":{description:"Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>",run:Base64.run_to,highlight:Base64.highlight_to,highlight_reverse:Base64.highlight_from,input_type:"byte_array",output_type:"string",args:[{name:"Alphabet",type:"editable_option",value:Base64.ALPHABET_OPTIONS}]},"From Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_from_32,input_type:"string",output_type:"byte_array",args:[{name:"Alphabet",type:"binary_string",value:Base64.BASE32_ALPHABET},{name:"Remove non‑alphabet chars",type:"boolean",value:Base64.REMOVE_NON_ALPH_CHARS}]},"To Base32":{description:"Base32 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. It uses a smaller set of characters than Base64, usually the uppercase alphabet and the numbers 2 to 7.",run:Base64.run_to_32,input_type:"byte_array",outpuLine truncated
|
||||
}]},ROT47:{description:"A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",run:Rotate.run_rot47,highlight:!0,highlight_reverse:!0,input_type:"byte_array",output_type:"byte_array",args:[{name:"Amount",type:"number",value:Rotate.ROT47_AMOUNT}]},"Strip HTTP headers":{description:"Removes HTTP headers from a request or response by looking for the first instance of a double newline.",run:HTTP.run_strip_headers,input_type:"string",output_type:"string",args:[]},"Parse User Agent":{description:"Attempts to identify and categorise information contained in a user-agent string.",run:HTTP.run_parse_user_agent,input_type:"string",output_type:"string",args:[]},"Format MAC addresses":{description:"Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks.",run:MAC.run_format,input_type:"string",output_type:"string",args:[{name:"Output case",type:"option",value:MAC.OUTPUT_CASE},{name:"No delimiter",type:"boolean",value:MAC.NO_DELIM},{name:"Dash delimiter",type:"boolean",value:MAC.DASH_DELIM},{name:"Colon delimiter",type:"boolean",value:MAC.COLON_DELIM},{name:"Cisco style",type:"boolean",value:MAC.CISCO_STYLE}]},"Offset checker":{description:"Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples.",run:StrUtils.run_offset_checker,input_type:"string",output_type:"html",args:[{name:"Sample delimiter",type:"binary_string",value:StrUtils.OFF_CHK_SAMPLE_DELIMITER}]},"Remove whitespace":{description:"Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output.",run:Tidy.run_remove_whitespace,input_type:"string",output_type:"string",args:[{name:"Spaces",type:"boolean",value:Tidy.REMOVE_SPACES},{name:"Carriage returns (\\r)",type:"boolean",value:Tidy.REMOVE_CARIAGE_RETURNS},{name:"Line feeds (\\n)",type:"boolean",value:Tidy.REMOVE_LINE_FEEDS},{name:"Tabs",type:"boolean",value:Tidy.REMOVE_TABS},{name:"Form feeds (\\f)",type:"boolean",value:Tidy.REMOVE_FORM_FEEDS},{name:"Full stops",type:"boolean",value:Tidy.REMOVE_FULL_STOPS}]},"Remove null bytes":{description:"Removes all null bytes (<code>0x00</code>) from the input.",run:Tidy.run_remove_nulls,input_type:"byte_array",output_type:"byte_array",args:[]},"Drop bytes":{description:"Cuts the specified number of bytes out of the data.",run:Tidy.run_drop_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.DROP_START},{name:"Length",type:"number",value:Tidy.DROP_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Take bytes":{description:"Takes a slice of the specified number of bytes from the data.",run:Tidy.run_take_bytes,input_type:"byte_array",output_type:"byte_array",args:[{name:"Start",type:"number",value:Tidy.TAKE_START},{name:"Length",type:"number",value:Tidy.TAKE_LENGTH},{name:"Apply to each line",type:"boolean",value:Tidy.APPLY_TO_EACH_LINE}]},"Pad lines":{description:"Add the specified number of the specified character to the beginning or end of each line",run:Tidy.run_pad,input_type:"string",output_type:"string",args:[{name:"Position",type:"option",value:Tidy.PAD_POSITION},{name:"Length",type:"number",value:Tidy.PAD_LENGTH},{name:"Character",type:"binary_short_string",value:Tidy.PAD_CHAR}]},Reverse:{description:"Reverses the input string.",run:SeqUtils.run_reverse,input_type:"byte_array",output_type:"byte_array",args:[{name:"By",type:"option",value:SeqUtils.REVERSE_BY}]},Sort:{description:"Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only.",run:SeqUtils.run_sort,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS},{name:"Reverse",type:"boolean",value:SeqUtils.SORT_REVERSE},{name:"Order",type:"option",value:SeqUtils.SORT_ORDER}]},Unique:{description:"Removes duplicate strings from the input.",run:SeqUtils.run_unique,input_type:"string",output_type:"string",args:[{name:"Delimiter",type:"option",value:SeqUtils.DELIMITER_OPTIONS}]},"Count occurrences":{description:"Counts the number of times the provided string occurs in the input.",run:SeqUtils.run_count,input_type:"string",output_type:"number",args:[{name:"Search string",type:"toggle_string",value:"",toggle_values:SeqUtils.SEARCH_TYPE}]},"Add line numbers":{description:"Adds line numbers to the output.",run:SeqUtils.run_add_line_numbers,input_type:"string",output_type:"string",args:[]},"Remove line numbers":{description:"Removes line numbers from the output if they can be trivially detected.",run:SeqUtils.run_remove_line_numbers,input_type:"string",output_type:Line truncated
|
||||
a.clientWidth<470?b.childNodes[1].nodeValue=" Step":b.childNodes[1].nodeValue=" Step through",a.clientWidth<400?(d.style.display="none",e.style.display="none",f.style.display="none",g.style.display="none",h.style.display="none"):(d.style.display="inline",e.style.display="inline",f.style.display="inline",g.style.display="inline",h.style.display="inline"),a.clientWidth<330?c.childNodes[1].nodeValue=" Clear breaks":c.childNodes[1].nodeValue=" Clear breakpoints"},ControlsWaiter.prototype.set_auto_bake=function(a){var b=document.getElementById("auto-bake");b.checked!==a&&b.click()},ControlsWaiter.prototype.bake_click=function(){this.app.bake(),$("#output-text").selectRange(0)},ControlsWaiter.prototype.step_click=function(){this.app.bake(!0),$("#output-text").selectRange(0)},ControlsWaiter.prototype.auto_bake_change=function(){var a=document.getElementById("auto-bake-label"),b=document.getElementById("auto-bake");this.app.auto_bake_=b.checked,b.checked?(a.classList.remove("btn-default"),a.classList.add("btn-success")):(a.classList.remove("btn-success"),a.classList.add("btn-default"))},ControlsWaiter.prototype.clear_recipe_click=function(){this.manager.recipe.clear_recipe()},ControlsWaiter.prototype.clear_breaks_click=function(){for(var a=document.querySelectorAll("#rec_list li.operation .breakpoint"),b=0;b<a.length;b++)a[b].setAttribute("break","false"),a[b].classList.remove("breakpoint-selected")},ControlsWaiter.prototype.initialise_save_link=function(a){a=a||this.app.get_recipe_config();var b=document.getElementById("save-link-recipe-checkbox").checked,c=document.getElementById("save-link-input-checkbox").checked,d=document.getElementById("save-link"),e=this.generate_state_url(b,c,a);d.innerHTML=Utils.truncate(e,120),d.setAttribute("href",e)},ControlsWaiter.prototype.generate_state_url=function(a,b,c){c=c||this.app.get_recipe_config();var d=window.location.protocol+"//"+window.location.host+window.location.pathname,e=JSON.stringify(c),f=Utils.to_base64(this.app.get_input(),"A-Za-z0-9+/");return a=a&&c.length>0,b=b&&f.length>0&&f.length<8e3,a&&(d+="?recipe="+encodeURIComponent(e)),a&&b?d+="&input="+encodeURIComponent(f):b&&(d+="?input="+encodeURIComponent(f)),d},ControlsWaiter.prototype.save_text_change=function(){try{var a=JSON.parse(document.getElementById("save-text").value);this.initialise_save_link(a)}catch(a){}},ControlsWaiter.prototype.save_click=function(){var a=this.app.get_recipe_config(),b=JSON.stringify(a).replace(/},{/g,"},\n{");document.getElementById("save-text").value=b,this.initialise_save_link(a),$("#save-modal").modal()},ControlsWaiter.prototype.slr_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.sli_check_change=function(){this.initialise_save_link()},ControlsWaiter.prototype.load_click=function(){this.populate_load_recipes_list(),$("#load-modal").modal()},ControlsWaiter.prototype.save_button_click=function(){var a=document.getElementById("save-name").value,b=document.getElementById("save-text").value;if(!a)return void this.app.alert("Please enter a recipe name","danger",2e3);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=localStorage.recipe_id||0;c.push({id:++d,name:a,recipe:b}),localStorage.saved_recipes=JSON.stringify(c),localStorage.recipe_id=d,this.app.alert('Recipe saved as "'+a+'".',"success",2e3)},ControlsWaiter.prototype.populate_load_recipes_list=function(){for(var a=document.getElementById("load-name"),b=a.options.length;b--;)a.remove(b);var c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];for(b=0;b<c.length;b++){var d=document.createElement("option");d.value=c[b].id,d.innerHTML=c[b].name,a.appendChild(d)}document.getElementById("load-text").value=c.length?c[0].recipe:""},ControlsWaiter.prototype.load_delete_click=function(){var a=document.getElementById("load-name").value,b=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[];b=b.filter(function(b){return b.id!==a}),localStorage.saved_recipes=JSON.stringify(b),this.populate_load_recipes_list()},ControlsWaiter.prototype.load_name_change=function(a){var b=a.target,c=localStorage.saved_recipes?JSON.parse(localStorage.saved_recipes):[],d=parseInt(b.value,10),e=c.filter(function(a){return a.id===d})[0];document.getElementById("load-text").value=e.recipe},ControlsWaiter.prototype.load_button_click=function(){try{var a=JSON.parse(document.getElementById("load-text").value);this.app.set_recipe_config(a),$("#rec_list [data-toggle=popover]").popover()}catch(a){this.app.alert("Invalid recipe","danger",2e3)}};var HTMLApp=function(a,b,c,d){this.categories=a,this.operations=b,this.dfavourites=c,this.doptions=d,this.options=Utils.extend({},d),this.chef=new Chef,this.manager=new Manager(this),this.auto_bake_=!1,this.progress=0,this.ing_id=0,window.chef=this.chef};HTMLApp.prototype.setup=function(){document.dispatchEvent(this.manager.appstart),this.initialise_splitter(),this.load_local_storage(),this.populate_operations_list(),this.manager.setup(),thLine truncated
|
||||
this.seasonal.load()},Manager.prototype.initialise_event_listeners=function(){window.addEventListener("resize",this.window.window_resize.bind(this.window)),window.addEventListener("blur",this.window.window_blur.bind(this.window)),window.addEventListener("focus",this.window.window_focus.bind(this.window)),window.addEventListener("statechange",this.app.state_change.bind(this.app)),window.addEventListener("popstate",this.app.pop_state.bind(this.app)),document.getElementById("bake").addEventListener("click",this.controls.bake_click.bind(this.controls)),document.getElementById("auto-bake").addEventListener("change",this.controls.auto_bake_change.bind(this.controls)),document.getElementById("step").addEventListener("click",this.controls.step_click.bind(this.controls)),document.getElementById("clr-recipe").addEventListener("click",this.controls.clear_recipe_click.bind(this.controls)),document.getElementById("clr-breaks").addEventListener("click",this.controls.clear_breaks_click.bind(this.controls)),document.getElementById("save").addEventListener("click",this.controls.save_click.bind(this.controls)),document.getElementById("save-button").addEventListener("click",this.controls.save_button_click.bind(this.controls)),document.getElementById("save-link-recipe-checkbox").addEventListener("change",this.controls.slr_check_change.bind(this.controls)),document.getElementById("save-link-input-checkbox").addEventListener("change",this.controls.sli_check_change.bind(this.controls)),document.getElementById("load").addEventListener("click",this.controls.load_click.bind(this.controls)),document.getElementById("load-delete-button").addEventListener("click",this.controls.load_delete_click.bind(this.controls)),document.getElementById("load-name").addEventListener("change",this.controls.load_name_change.bind(this.controls)),document.getElementById("load-button").addEventListener("click",this.controls.load_button_click.bind(this.controls)),this.add_multi_event_listener("#save-text","keyup paste",this.controls.save_text_change,this.controls),this.add_multi_event_listener("#search","keyup paste search",this.ops.search_operations,this.ops),this.add_dynamic_listener(".op_list li.operation","dblclick",this.ops.operation_dblclick,this.ops),document.getElementById("edit-favourites").addEventListener("click",this.ops.edit_favourites_click.bind(this.ops)),document.getElementById("save-favourites").addEventListener("click",this.ops.save_favourites_click.bind(this.ops)),document.getElementById("reset-favourites").addEventListener("click",this.ops.reset_favourites_click.bind(this.ops)),this.add_dynamic_listener(".op_list .op-icon","mouseover",this.ops.op_icon_mouseover,this.ops),this.add_dynamic_listener(".op_list .op-icon","mouseleave",this.ops.op_icon_mouseleave,this.ops),this.add_dynamic_listener(".op_list","oplistcreate",this.ops.op_list_create,this.ops),this.add_dynamic_listener("li.operation","operationadd",this.recipe.op_add.bind(this.recipe)),this.add_dynamic_listener(".arg","keyup",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".arg","change",this.recipe.ing_change,this.recipe),this.add_dynamic_listener(".disable-icon","click",this.recipe.disable_click,this.recipe),this.add_dynamic_listener(".breakpoint","click",this.recipe.breakpoint_click,this.recipe),this.add_dynamic_listener("#rec_list li.operation","dblclick",this.recipe.operation_dblclick,this.recipe),this.add_dynamic_listener("#rec_list li.operation > div","dblclick",this.recipe.operation_child_dblclick,this.recipe),this.add_dynamic_listener("#rec_list .input-group .dropdown-menu a","click",this.recipe.dropdown_toggle_click,this.recipe),this.add_dynamic_listener("#rec_list","operationremove",this.recipe.op_remove.bind(this.recipe)),this.add_multi_event_listener("#input-text","keyup paste",this.input.input_change,this.input),document.getElementById("reset-layout").addEventListener("click",this.app.reset_layout.bind(this.app)),document.getElementById("clr-io").addEventListener("click",this.input.clear_io_click.bind(this.input)),document.getElementById("input-text").addEventListener("dragover",this.input.input_dragover.bind(this.input)),document.getElementById("input-text").addEventListener("dragleave",this.input.input_dragleave.bind(this.input)),document.getElementById("input-text").addEventListener("drop",this.input.input_drop.bind(this.input)),document.getElementById("input-text").addEventListener("scroll",this.highlighter.input_scroll.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mouseup",this.highlighter.input_mouseup.bind(this.highlighter)),document.getElementById("input-text").addEventListener("mousemove",this.highlighter.input_mousemove.bind(this.highlighter)),this.add_multi_event_listener("#input-text","mousedown dblclick select",this.highlighter.input_mousedown,this.highlighter),document.getElementById("save-to-file").addEventListener("click",this.output.save_click.bind(this.output)),document.getElementById("switch").addEvLine truncated
|
||||
window.compile_time=moment.tz("Wed Dec 14 2016 16:37:29","ddd MMM D YYYY HH:mm:ss","UTC").valueOf(),window.compile_message="Merry Christmas! Have a look in the options panel for some festive flavour.",document.addEventListener("DOMContentLoaded",main,!1);
|
||||
@@ -71,4 +71,4 @@
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdLine truncated
|
||||
*/.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}#content-wrapper{top:0;left:0;width:100%;height:100%}#banner{height:30px;text-align:center;line-height:30px}#wrapper{top:30px;bottom:0}div#operations,div#recipe{width:50%;height:100%}div#input,div#output{width:100%;height:50%}.title{padding:10px;height:43px}.textarea-wrapper{top:43px;bottom:0;width:100%;overflow:hidden}#output-html,textarea{width:100%;height:100%;border:none;padding:3px;-moz-padding-start:3px;-moz-padding-end:3px}#input-text,#output-html,#output-text{position:relative;border-width:0;margin:0;resize:none;background-color:transparent;white-space:pre-wrap;word-wrap:break-word}#output-html{display:none;overflow-y:auto;-moz-padding-start:1px}.split{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:auto;position:relative}.gutter.gutter-horizontal,.split.split-horizontal{height:100%;float:left}#input-highlighter,#output-highlighter{position:absolute;left:0;top:0;width:100%;height:100%;padding:3px;margin:0;overflow:hidden;letter-spacing:normal;white-space:pre-wrap;word-wrap:break-word;color:#fff;background-color:transparent;border:none}#op_list,#rec_list,.op_list{margin:0;padding:0;list-style-type:none}#op_list,#rec_list{position:absolute;top:43px;bottom:0;width:100%}.io-btn-group,.io-info{margin-top:-4px;float:right}#rec_list{bottom:120px;overflow:auto}.operation{cursor:pointer;padding:10px;list-style-type:none;position:relative}#controls{position:absolute;width:100%;height:120px;bottom:0;padding:10px}.io-info{margin-right:20px;height:30px;text-align:right;line-height:10px}.arg-group,.inline-args input[type=checkbox]{margin-top:10px}#input-info{line-height:15px}.arg-group{display:table;width:100%}.arg-group-text{display:block}.inline-args{float:left;width:auto;margin-right:30px;height:34px}.inline-args input[type=number]{width:100px}.arg-input{display:table-cell;width:100%;padding:6px 12px}.short-string{width:150px}select{display:block}.arg[disabled]{cursor:not-allowed;opacity:1}textarea.arg{width:100%;min-height:50px;height:70px;margin-top:5px;border:1px solid #ddd;resize:vertical}.arg-label{display:table-cell;width:1px;padding-right:10px;font-weight:400;white-space:pre}.title,optgroup{font-weight:700}.editable-option{position:relative;display:inline-block}.editable-option-input{position:absolute;top:1px;left:1px;width:calc(100% - 20px);height:calc(100% - 2px)!important;border:none!important}#operational-controls{width:65%;float:left;text-align:center}#bake-group{display:table;width:100%}#bake{display:table-cell;width:100%;border-top-right-radius:0;border-bottom-right-radius:0}#auto-bake-label{display:table-cell;padding:1px;line-height:1.35;width:60px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid #5cb85c}#auto-bake-label:hover{border-left-color:#398439}#auto-bake-label div{font-size:10px;padding:2px}#extra-controls{float:right;width:35%;padding-left:10px}.op-icon{float:right;margin-left:10px;margin-top:3px}.recip-icons{position:absolute;top:13px;right:10px;height:16px}.recip-icon{margin-right:10px;vertical-align:baseline;float:right}.disable-icon{width:16px;height:16px;margin-top:-1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAACfElEQVQ4y6WTPWgTYRjHf8nlfVvuoDVIP4Yuki4WHKoUqggFRUTsUEGkVG2hmCq6OnTwIxYHB+eijZOKdLNDW1pKKyGigh8dBHUJElxyBgx3vEnukvdyDrUhRXDxGR+e/+/583xEwjDkfyIGwNVTzURm4tYAMA6MAoN/0tvAMrA48uL+l2bx4w0iYRjSuHKC6OnTZLqHk8CcaZq9bW1tSCkBqNVq+L5PpVIpAHdGfr5LN9bXiT7Z2nGgteb1/qFkLBJZ6OjowHEc8vk8pVIJgHg8TldXF52dnb2u6y5s7R/iuF5JSyAKkLl4eyAMwznLsrBtm1wu99Z13amk+BFJih8R13WXANrb27EsizAM5zIXbw+wC9Baj0spe5VSFAqFt4ZhXJ6ufXuK55E5cDKVSCTGenp6yGazKKWQUvZqrcebgCAIRqWUOI6DEOLR1K8POapVMgfPpoC7u2LLspYcx0FKSRAEo60OBg3DwPd9Jr5vPqWvj8zh83vEwL2J75vnfN/HMAy01oPNNQZBQBAEO1OvVsl0D/8lTuZfpYDd7gRBQKuD7XK5jGmarB679PIv8deVFJUKq8cuTZqmSblcRmu93QpYVkohhMCyrLE94n2/UlSrbJy5kRBCXBNCoJRCa73cClh0XbfgeR6WZZHNZunv719KvnmeYnWVVxdmJ2Ox2DMhxFHP83Bdt6C1XgR2LvHzQDvvb84npZQL8Xgc0zSJRqN7br7RaFCpVCiVStRqtZmhh9fTh754TQdMr82nPc+bsW27UCwWUUpRr9ep1+sopSgWi9i2XfA8b2Z6bT6ttabp4GMi0uz0aXbhn890+MFM85mO5MIdwP/Eb1pMUCdctYRzAAAAAElFTkSuQmCC) no-repeat}.disable-icon-selected{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFUlEQVR4XqWTP0tbURjGn9zY3mjBwsUhBQtS6XKxiNypIGZJ6SKYUYdaKWg7OrrE3pYO+Qit3dpFuuQO6lI7Z4nESQdLine truncated
|
||||
Executable → Regular
+1
-1
@@ -36,9 +36,9 @@
|
||||
"grunt-contrib-copy": "~0.8.2",
|
||||
"grunt-contrib-cssmin": "~0.14.0",
|
||||
"grunt-contrib-htmlmin": "~0.6.0",
|
||||
"grunt-contrib-jshint": "~1.0.0",
|
||||
"grunt-contrib-uglify": "~0.11.1",
|
||||
"grunt-contrib-watch": "~0.6.1",
|
||||
"grunt-eslint": "^19.0.0",
|
||||
"grunt-exec": "~0.4.6",
|
||||
"grunt-inline-alt": "~0.3.10",
|
||||
"grunt-jsdoc": "^1.1.0",
|
||||
|
||||
@@ -176,6 +176,12 @@ textarea.arg {
|
||||
border-color: #b3dba2 !important;
|
||||
}
|
||||
|
||||
.flow-control-op.break {
|
||||
color: #94312f !important;
|
||||
background-color: #eabfbf !important;
|
||||
border-color: #e2aeb5 !important;
|
||||
}
|
||||
|
||||
#support-modal textarea {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
Executable
+93
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"ecmaFeatures": {
|
||||
"impliedStrict": true
|
||||
}
|
||||
},
|
||||
"env": {
|
||||
"browser": true,
|
||||
"jquery": true,
|
||||
"es6": true,
|
||||
"node": false
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"rules": {
|
||||
// enable additional rules
|
||||
"no-eval": "error",
|
||||
"no-implied-eval": "error",
|
||||
"dot-notation": "error",
|
||||
"eqeqeq": ["error", "smart"],
|
||||
"no-caller": "error",
|
||||
"no-extra-bind": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-useless-call": "error",
|
||||
"no-useless-return": "error",
|
||||
"radix": "warn",
|
||||
|
||||
// modify rules from base configurations
|
||||
"no-unused-vars": ["error", {
|
||||
"args": "none",
|
||||
"vars": "local"
|
||||
}],
|
||||
"no-empty": ["error", {
|
||||
"allowEmptyCatch": true
|
||||
}],
|
||||
|
||||
// disable rules from base configurations
|
||||
"no-console": "off",
|
||||
"no-control-regex": "off",
|
||||
|
||||
// stylistic conventions
|
||||
"brace-style": ["error", "1tbs"],
|
||||
"block-spacing": "error",
|
||||
"array-bracket-spacing": "error",
|
||||
"comma-spacing": "error",
|
||||
"comma-style": "error",
|
||||
"computed-property-spacing": "error",
|
||||
"no-trailing-spaces": ["warn", {
|
||||
"skipBlankLines": true
|
||||
}],
|
||||
"eol-last": "error",
|
||||
"func-call-spacing": "error",
|
||||
"indent": ["error", 4, {
|
||||
"ArrayExpression": "first",
|
||||
"SwitchCase": 1
|
||||
}],
|
||||
"linebreak-style": ["error", "unix"],
|
||||
"quotes": ["error", "double", {
|
||||
"avoidEscape": true
|
||||
}],
|
||||
"semi": ["error", "always"],
|
||||
"unicode-bom": "error"
|
||||
},
|
||||
"globals": {
|
||||
/* core/* */
|
||||
"Chef": false,
|
||||
"Dish": false,
|
||||
"Recipe": false,
|
||||
"Ingredient": false,
|
||||
"Operation": false,
|
||||
"Utils": false,
|
||||
|
||||
/* config/* */
|
||||
"Categories": false,
|
||||
"OperationConfig": false,
|
||||
|
||||
/* views/html/* */
|
||||
"HTMLApp": false,
|
||||
"HTMLCategory": false,
|
||||
"HTMLOperation": false,
|
||||
"HTMLIngredient": false,
|
||||
"Manager": false,
|
||||
"ControlsWaiter": false,
|
||||
"HighlighterWaiter": false,
|
||||
"InputWaiter": false,
|
||||
"OperationsWaiter": false,
|
||||
"OptionsWaiter": false,
|
||||
"OutputWaiter": false,
|
||||
"RecipeWaiter": false,
|
||||
"SeasonalWaiter": false,
|
||||
"WindowWaiter": false
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"esversion": 6,
|
||||
"strict": "implied",
|
||||
"multistr": true,
|
||||
"browser": true,
|
||||
"typed": true,
|
||||
"jquery": true,
|
||||
"node": true,
|
||||
"undef": true,
|
||||
"globals": {
|
||||
/* core/* */
|
||||
"Chef": true,
|
||||
"Dish": true,
|
||||
"Recipe": true,
|
||||
"Ingredient": true,
|
||||
"Operation": true,
|
||||
"Utils": true,
|
||||
|
||||
/* config/* */
|
||||
"Categories": true,
|
||||
"OperationConfig": true,
|
||||
|
||||
/* views/html/* */
|
||||
"HTMLApp": true,
|
||||
"HTMLCategory": true,
|
||||
"HTMLOperation": true,
|
||||
"HTMLIngredient": true,
|
||||
"Manager": true,
|
||||
"ControlsWaiter": true,
|
||||
"HighlighterWaiter": true,
|
||||
"InputWaiter": true,
|
||||
"OperationsWaiter": true,
|
||||
"OptionsWaiter": true,
|
||||
"OutputWaiter": true,
|
||||
"RecipeWaiter": true,
|
||||
"SeasonalWaiter": true,
|
||||
"WindowWaiter": true
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
* @constant
|
||||
* @type {CatConf[]}
|
||||
*/
|
||||
var Categories = [
|
||||
const Categories = [
|
||||
{
|
||||
name: "Favourites",
|
||||
ops: []
|
||||
@@ -77,8 +77,11 @@ var Categories = [
|
||||
"RC4",
|
||||
"RC4 Drop",
|
||||
"ROT13",
|
||||
"ROT47",
|
||||
"XOR",
|
||||
"XOR Brute Force",
|
||||
"Vigenère Encode",
|
||||
"Vigenère Decode",
|
||||
"Derive PBKDF2 key",
|
||||
"Derive EVP key",
|
||||
]
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* Tell JSHint to ignore "'Object' is not defined" errors in this file, as it references every
|
||||
* Tell eslint to ignore "'Object' is not defined" errors in this file, as it references every
|
||||
* single operation object by definition.
|
||||
*/
|
||||
/* jshint -W117 */
|
||||
/* eslint no-undef: "off" */
|
||||
|
||||
|
||||
/**
|
||||
@@ -45,7 +45,7 @@
|
||||
* @constant
|
||||
* @type {Object.<string, OpConf>}
|
||||
*/
|
||||
var OperationConfig = {
|
||||
const OperationConfig = {
|
||||
"Fork": {
|
||||
description: "Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately.",
|
||||
run: FlowControl.run_fork,
|
||||
@@ -1325,6 +1325,36 @@ var OperationConfig = {
|
||||
},
|
||||
]
|
||||
},
|
||||
"Vigenère Encode": {
|
||||
description: "The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",
|
||||
run: Cipher.run_vigenere_enc,
|
||||
highlight: true,
|
||||
highlight_reverse: true,
|
||||
input_type: "string",
|
||||
output_type: "string",
|
||||
args: [
|
||||
{
|
||||
name: "Key",
|
||||
type: "string",
|
||||
value: ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"Vigenère Decode": {
|
||||
description: "The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",
|
||||
run: Cipher.run_vigenere_dec,
|
||||
highlight: true,
|
||||
highlight_reverse: true,
|
||||
input_type: "string",
|
||||
output_type: "string",
|
||||
args: [
|
||||
{
|
||||
name: "Key",
|
||||
type: "string",
|
||||
value: ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"Rotate right": {
|
||||
description: "Rotates each byte to the right by the number of bits specified. Currently only supports 8-bit values.",
|
||||
run: Rotate.run_rotr,
|
||||
@@ -1390,6 +1420,21 @@ var OperationConfig = {
|
||||
},
|
||||
]
|
||||
},
|
||||
"ROT47": {
|
||||
description: "A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47.",
|
||||
run: Rotate.run_rot47,
|
||||
highlight: true,
|
||||
highlight_reverse: true,
|
||||
input_type: "byte_array",
|
||||
output_type: "byte_array",
|
||||
args: [
|
||||
{
|
||||
name: "Amount",
|
||||
type: "number",
|
||||
value: Rotate.ROT47_AMOUNT
|
||||
},
|
||||
]
|
||||
},
|
||||
"Strip HTTP headers": {
|
||||
description: "Removes HTTP headers from a request or response by looking for the first instance of a double newline.",
|
||||
run: HTTP.run_strip_headers,
|
||||
@@ -2819,4 +2864,4 @@ var OperationConfig = {
|
||||
output_type: "string",
|
||||
args: []
|
||||
}
|
||||
};
|
||||
};
|
||||
+23
-23
@@ -35,33 +35,33 @@ Chef.prototype.bake = function(input_text, recipe_config, options, progress, ste
|
||||
recipe = new Recipe(recipe_config),
|
||||
contains_fc = recipe.contains_flow_control(),
|
||||
error = false;
|
||||
|
||||
|
||||
// Reset attempt_highlight flag
|
||||
if (options.hasOwnProperty("attempt_highlight")) {
|
||||
options.attempt_highlight = true;
|
||||
}
|
||||
|
||||
|
||||
if (contains_fc) options.attempt_highlight = false;
|
||||
|
||||
|
||||
// Clean up progress
|
||||
if (progress >= recipe_config.length) {
|
||||
progress = 0;
|
||||
}
|
||||
|
||||
|
||||
if (step) {
|
||||
// Unset breakpoint on this step
|
||||
recipe.set_breakpoint(progress, false);
|
||||
// Set breakpoint on next step
|
||||
recipe.set_breakpoint(progress + 1, true);
|
||||
}
|
||||
|
||||
|
||||
// If stepping with flow control, we have to start from the beginning
|
||||
// but still want to skip all previous breakpoints
|
||||
if (progress > 0 && contains_fc) {
|
||||
recipe.remove_breaks_up_to(progress);
|
||||
progress = 0;
|
||||
}
|
||||
|
||||
|
||||
// If starting from scratch, load data
|
||||
if (progress === 0) {
|
||||
this.dish.set(input_text, Dish.STRING);
|
||||
@@ -70,22 +70,22 @@ Chef.prototype.bake = function(input_text, recipe_config, options, progress, ste
|
||||
try {
|
||||
progress = recipe.execute(this.dish, progress);
|
||||
} catch (err) {
|
||||
// We can't throw the error from here as we will return in the finally block and ignore it
|
||||
// so we return the error in the result instead.
|
||||
// Return the error in the result so that everything else gets correctly updated
|
||||
// rather than throwing it here and losing state info.
|
||||
error = err;
|
||||
progress = err.progress;
|
||||
} finally {
|
||||
return {
|
||||
result: this.dish.type == Dish.HTML ?
|
||||
this.dish.get(Dish.HTML) :
|
||||
this.dish.get(Dish.STRING),
|
||||
type: Dish.enum_lookup(this.dish.type),
|
||||
progress: progress,
|
||||
options: options,
|
||||
duration: new Date().getTime() - start_time,
|
||||
error: error
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
result: this.dish.type === Dish.HTML ?
|
||||
this.dish.get(Dish.HTML) :
|
||||
this.dish.get(Dish.STRING),
|
||||
type: Dish.enum_lookup(this.dish.type),
|
||||
progress: progress,
|
||||
options: options,
|
||||
duration: new Date().getTime() - start_time,
|
||||
error: error
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -94,12 +94,12 @@ Chef.prototype.bake = function(input_text, recipe_config, options, progress, ste
|
||||
* it swaps out the memory for that tab. If the CyberChef tab has been unfocused for more than a
|
||||
* minute, we run a silent bake which will force the browser to load and cache all the relevant
|
||||
* JavaScript code needed to do a real bake.
|
||||
*
|
||||
*
|
||||
* This will stop baking taking a long time when the CyberChef browser tab has been unfocused for a
|
||||
* long time and the browser has swapped out all its memory.
|
||||
*
|
||||
*
|
||||
* The output will not be modified (hence "silent" bake).
|
||||
*
|
||||
*
|
||||
* This will only actually execute the recipe if auto-bake is enabled, otherwise it will just load
|
||||
* the recipe, ingredients and dish.
|
||||
*
|
||||
@@ -110,7 +110,7 @@ Chef.prototype.silent_bake = function(recipe_config) {
|
||||
var start_time = new Date().getTime(),
|
||||
recipe = new Recipe(recipe_config),
|
||||
dish = new Dish("", Dish.STRING);
|
||||
|
||||
|
||||
try {
|
||||
recipe.execute(dish);
|
||||
} catch(err) {
|
||||
|
||||
+1
-1
@@ -115,7 +115,7 @@ Dish.prototype.set = function(value, type) {
|
||||
* @returns {byte_array|string|number} The value of the output data.
|
||||
*/
|
||||
Dish.prototype.get = function(type) {
|
||||
if (this.type != type) {
|
||||
if (this.type !== type) {
|
||||
this.translate(type);
|
||||
}
|
||||
return this.value;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* @namespace
|
||||
*/
|
||||
var FlowControl = {
|
||||
const FlowControl = {
|
||||
|
||||
/**
|
||||
* @constant
|
||||
@@ -46,7 +46,7 @@ var FlowControl = {
|
||||
// Create sub_op_list for each tranche to operate on
|
||||
// (all remaining operations unless we encounter a Merge)
|
||||
for (var i = state.progress + 1; i < op_list.length; i++) {
|
||||
if (op_list[i].name == "Merge" && !op_list[i].is_disabled()) {
|
||||
if (op_list[i].name === "Merge" && !op_list[i].is_disabled()) {
|
||||
break;
|
||||
} else {
|
||||
sub_op_list.push(op_list[i]);
|
||||
|
||||
@@ -67,12 +67,11 @@ Ingredient.prepare = function(data, type) {
|
||||
return Utils.parse_escaped_chars(data);
|
||||
case "byte_array":
|
||||
if (typeof data == "string") {
|
||||
data = data.replace(/\s+/g, '');
|
||||
data = data.replace(/\s+/g, "");
|
||||
return Utils.hex_to_byte_array(data);
|
||||
} else {
|
||||
return data;
|
||||
}
|
||||
break;
|
||||
case "number":
|
||||
var number = parseFloat(data);
|
||||
if (isNaN(number)) {
|
||||
|
||||
+30
-30
@@ -203,7 +203,7 @@ var Utils = {
|
||||
*/
|
||||
parse_escaped_chars: function(str) {
|
||||
return str.replace(/(\\)?\\([nrtbf]|x[\da-f]{2})/g, function(m, a, b) {
|
||||
if (a == "\\") return "\\"+b;
|
||||
if (a === "\\") return "\\"+b;
|
||||
switch (b[0]) {
|
||||
case "n":
|
||||
return "\n";
|
||||
@@ -243,8 +243,8 @@ var Utils = {
|
||||
|
||||
for (var i = 0; i < alph_str.length; i++) {
|
||||
if (i < alph_str.length - 2 &&
|
||||
alph_str[i+1] == "-" &&
|
||||
alph_str[i] != "\\") {
|
||||
alph_str[i+1] === "-" &&
|
||||
alph_str[i] !== "\\") {
|
||||
var start = Utils.ord(alph_str[i]),
|
||||
end = Utils.ord(alph_str[i+2]);
|
||||
|
||||
@@ -253,8 +253,8 @@ var Utils = {
|
||||
}
|
||||
i += 2;
|
||||
} else if (i < alph_str.length - 2 &&
|
||||
alph_str[i] == "\\" &&
|
||||
alph_str[i+1] == "-") {
|
||||
alph_str[i] === "\\" &&
|
||||
alph_str[i+1] === "-") {
|
||||
alph_arr.push("-");
|
||||
i++;
|
||||
} else {
|
||||
@@ -278,7 +278,7 @@ var Utils = {
|
||||
hex_to_byte_array: function(hex_str) {
|
||||
// TODO: Handle errors i.e. input string is not hex
|
||||
if (!hex_str) return [];
|
||||
hex_str = hex_str.replace(/\s+/g, '');
|
||||
hex_str = hex_str.replace(/\s+/g, "");
|
||||
var byte_array = [];
|
||||
for (var i = 0; i < hex_str.length; i += 2) {
|
||||
byte_array.push(parseInt(hex_str.substr(i, 2), 16));
|
||||
@@ -351,7 +351,7 @@ var Utils = {
|
||||
var word_array = CryptoJS.enc.Utf8.parse(str),
|
||||
byte_array = Utils.word_array_to_byte_array(word_array);
|
||||
|
||||
if (str.length != word_array.sigBytes)
|
||||
if (str.length !== word_array.sigBytes)
|
||||
window.app.options.attempt_highlight = false;
|
||||
return byte_array;
|
||||
},
|
||||
@@ -403,7 +403,7 @@ var Utils = {
|
||||
var word_array = new CryptoJS.lib.WordArray.init(words, byte_array.length),
|
||||
str = CryptoJS.enc.Utf8.stringify(word_array);
|
||||
|
||||
if (str.length != word_array.sigBytes)
|
||||
if (str.length !== word_array.sigBytes)
|
||||
window.app.options.attempt_highlight = false;
|
||||
return str;
|
||||
} catch (err) {
|
||||
@@ -553,7 +553,7 @@ var Utils = {
|
||||
res.push(String.fromCharCode(Utils.UNIC_WIN1251_MAP[ord]));
|
||||
}
|
||||
|
||||
return res.join('');
|
||||
return res.join("");
|
||||
},
|
||||
|
||||
|
||||
@@ -577,7 +577,7 @@ var Utils = {
|
||||
res.push(String.fromCharCode(Utils.WIN1251_UNIC_MAP[ord]));
|
||||
}
|
||||
|
||||
return res.join('');
|
||||
return res.join("");
|
||||
},
|
||||
|
||||
|
||||
@@ -653,7 +653,7 @@ var Utils = {
|
||||
return_type = return_type || "string";
|
||||
|
||||
if (!data) {
|
||||
return return_type == "string" ? "" : [];
|
||||
return return_type === "string" ? "" : [];
|
||||
}
|
||||
|
||||
alphabet = alphabet ?
|
||||
@@ -678,9 +678,9 @@ var Utils = {
|
||||
enc3 = alphabet.indexOf(data.charAt(i++) || "=");
|
||||
enc4 = alphabet.indexOf(data.charAt(i++) || "=");
|
||||
|
||||
enc2 = enc2 == -1 ? 64 : enc2;
|
||||
enc3 = enc3 == -1 ? 64 : enc3;
|
||||
enc4 = enc4 == -1 ? 64 : enc4;
|
||||
enc2 = enc2 === -1 ? 64 : enc2;
|
||||
enc3 = enc3 === -1 ? 64 : enc3;
|
||||
enc4 = enc4 === -1 ? 64 : enc4;
|
||||
|
||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||
@@ -688,15 +688,15 @@ var Utils = {
|
||||
|
||||
output.push(chr1);
|
||||
|
||||
if (enc3 != 64) {
|
||||
if (enc3 !== 64) {
|
||||
output.push(chr2);
|
||||
}
|
||||
if (enc4 != 64) {
|
||||
if (enc4 !== 64) {
|
||||
output.push(chr3);
|
||||
}
|
||||
}
|
||||
|
||||
return return_type == "string" ? Utils.byte_array_to_utf8(output) : output;
|
||||
return return_type === "string" ? Utils.byte_array_to_utf8(output) : output;
|
||||
},
|
||||
|
||||
|
||||
@@ -727,8 +727,8 @@ var Utils = {
|
||||
}
|
||||
|
||||
// Add \x or 0x to beginning
|
||||
if (delim == "0x") output = "0x" + output;
|
||||
if (delim == "\\x") output = "\\x" + output;
|
||||
if (delim === "0x") output = "0x" + output;
|
||||
if (delim === "\\x") output = "\\x" + output;
|
||||
|
||||
if (delim.length)
|
||||
return output.slice(0, -delim.length);
|
||||
@@ -779,9 +779,9 @@ var Utils = {
|
||||
from_hex: function(data, delim, byte_len) {
|
||||
delim = delim || (data.indexOf(" ") >= 0 ? "Space" : "None");
|
||||
byte_len = byte_len || 2;
|
||||
if (delim != "None") {
|
||||
if (delim !== "None") {
|
||||
var delim_regex = Utils.regex_rep[delim];
|
||||
data = data.replace(delim_regex, '');
|
||||
data = data.replace(delim_regex, "");
|
||||
}
|
||||
|
||||
var output = [];
|
||||
@@ -816,17 +816,17 @@ var Utils = {
|
||||
if (ignore_next) {
|
||||
cell += b;
|
||||
ignore_next = false;
|
||||
} else if (b == "\\") {
|
||||
} else if (b === "\\") {
|
||||
cell += b;
|
||||
ignore_next = true;
|
||||
} else if (b == "\"" && !in_string) {
|
||||
} else if (b === "\"" && !in_string) {
|
||||
in_string = true;
|
||||
} else if (b == "\"" && in_string) {
|
||||
} else if (b === "\"" && in_string) {
|
||||
in_string = false;
|
||||
} else if (b == "," && !in_string) {
|
||||
} else if (b === "," && !in_string) {
|
||||
line.push(cell);
|
||||
cell = "";
|
||||
} else if ((b == "\n" || b == "\r") && !in_string) {
|
||||
} else if ((b === "\n" || b === "\r") && !in_string) {
|
||||
line.push(cell);
|
||||
cell = "";
|
||||
lines.push(line);
|
||||
@@ -877,7 +877,7 @@ var Utils = {
|
||||
escape_html: function(str) {
|
||||
return str.replace(/</g, "<")
|
||||
.replace(/'/g, "'")
|
||||
.replace(/"/g, '"')
|
||||
.replace(/"/g, """)
|
||||
.replace(/&/g, "&");
|
||||
},
|
||||
|
||||
@@ -1002,8 +1002,8 @@ $.fn.selectRange = function(start, end) {
|
||||
} else if (this.createTextRange) {
|
||||
var range = this.createTextRange();
|
||||
range.collapse(true);
|
||||
range.moveEnd('character', end);
|
||||
range.moveStart('character', start);
|
||||
range.moveEnd("character", end);
|
||||
range.moveStart("character", start);
|
||||
range.select();
|
||||
}
|
||||
});
|
||||
@@ -1095,7 +1095,7 @@ Array.prototype.sum = function() {
|
||||
Array.prototype.equals = function(other) {
|
||||
if (!other) return false;
|
||||
var i = this.length;
|
||||
if (i != other.length) return false;
|
||||
if (i !== other.length) return false;
|
||||
while (i--) {
|
||||
if (this[i] !== other[i]) return false;
|
||||
}
|
||||
|
||||
+47
-47
@@ -44,14 +44,14 @@ var Base64 = {
|
||||
var alphabet = args[0] || Base64.ALPHABET;
|
||||
return Utils.to_base64(input, alphabet);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
REMOVE_NON_ALPH_CHARS: true,
|
||||
|
||||
|
||||
/**
|
||||
* From Base64 operation.
|
||||
*
|
||||
@@ -62,17 +62,17 @@ var Base64 = {
|
||||
run_from: function(input, args) {
|
||||
var alphabet = args[0] || Base64.ALPHABET,
|
||||
remove_non_alph_chars = args[1];
|
||||
|
||||
|
||||
return Utils.from_base64(input, alphabet, "byte_array", remove_non_alph_chars);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
BASE32_ALPHABET: "A-Z2-7=",
|
||||
|
||||
|
||||
/**
|
||||
* To Base32 operation.
|
||||
*
|
||||
@@ -82,7 +82,7 @@ var Base64 = {
|
||||
*/
|
||||
run_to_32: function(input, args) {
|
||||
if (!input) return "";
|
||||
|
||||
|
||||
var alphabet = args[0] ?
|
||||
Utils.expand_alph_range(args[0]).join("") : "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",
|
||||
output = "",
|
||||
@@ -115,16 +115,16 @@ var Base64 = {
|
||||
} else if (isNaN(chr5)) {
|
||||
enc8 = 32;
|
||||
}
|
||||
|
||||
|
||||
output += alphabet.charAt(enc1) + alphabet.charAt(enc2) + alphabet.charAt(enc3) +
|
||||
alphabet.charAt(enc4) + alphabet.charAt(enc5) + alphabet.charAt(enc6) +
|
||||
alphabet.charAt(enc7) + alphabet.charAt(enc8);
|
||||
}
|
||||
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From Base32 operation.
|
||||
*
|
||||
@@ -134,16 +134,16 @@ var Base64 = {
|
||||
*/
|
||||
run_from_32: function(input, args) {
|
||||
if (!input) return [];
|
||||
|
||||
|
||||
var alphabet = args[0] ?
|
||||
Utils.expand_alph_range(args[0]).join("") : "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",
|
||||
remove_non_alph_chars = args[0];
|
||||
|
||||
|
||||
var output = [],
|
||||
chr1, chr2, chr3, chr4, chr5,
|
||||
enc1, enc2, enc3, enc4, enc5, enc6, enc7, enc8,
|
||||
i = 0;
|
||||
|
||||
|
||||
if (remove_non_alph_chars) {
|
||||
var re = new RegExp("[^" + alphabet.replace(/[\]\\\-^]/g, "\\$&") + "]", "g");
|
||||
input = input.replace(re, "");
|
||||
@@ -171,11 +171,11 @@ var Base64 = {
|
||||
if (enc5 & 1 !== 0 || enc6 !== 32) output.push(chr4);
|
||||
if (enc7 & 7 !== 0 || enc8 !== 32) output.push(chr5);
|
||||
}
|
||||
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -186,7 +186,7 @@ var Base64 = {
|
||||
* @default
|
||||
*/
|
||||
OFFSETS_SHOW_VARIABLE: true,
|
||||
|
||||
|
||||
/**
|
||||
* Show Base64 offsets operation.
|
||||
*
|
||||
@@ -206,96 +206,96 @@ var Base64 = {
|
||||
script = "<script type='application/javascript'>$('[data-toggle=\"tooltip\"]').tooltip()</script>",
|
||||
static_section = "",
|
||||
padding = "";
|
||||
|
||||
|
||||
if (input.length < 1) {
|
||||
return "Please enter a string.";
|
||||
}
|
||||
|
||||
|
||||
// Highlight offset 0
|
||||
if (len0 % 4 == 2) {
|
||||
if (len0 % 4 === 2) {
|
||||
static_section = offset0.slice(0, -3);
|
||||
offset0 = "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset0 = "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64(static_section, alphabet).slice(0, -2)) + "'>" +
|
||||
static_section + "</span>" +
|
||||
"<span class='hlgreen'>" + offset0.substr(offset0.length - 3, 1) + "</span>" +
|
||||
"<span class='hlred'>" + offset0.substr(offset0.length - 2) + "</span>";
|
||||
} else if (len0 % 4 == 3) {
|
||||
} else if (len0 % 4 === 3) {
|
||||
static_section = offset0.slice(0, -2);
|
||||
offset0 = "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset0 = "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64(static_section, alphabet).slice(0, -1)) + "'>" +
|
||||
static_section + "</span>" +
|
||||
"<span class='hlgreen'>" + offset0.substr(offset0.length - 2, 1) + "</span>" +
|
||||
"<span class='hlred'>" + offset0.substr(offset0.length - 1) + "</span>";
|
||||
} else {
|
||||
static_section = offset0;
|
||||
offset0 = "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset0 = "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64(static_section, alphabet)) + "'>" +
|
||||
static_section + "</span>";
|
||||
}
|
||||
|
||||
|
||||
if (!show_variable) {
|
||||
offset0 = static_section;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Highlight offset 1
|
||||
padding = "<span class='hlred'>" + offset1.substr(0, 1) + "</span>" +
|
||||
"<span class='hlgreen'>" + offset1.substr(1, 1) + "</span>";
|
||||
offset1 = offset1.substr(2);
|
||||
if (len1 % 4 == 2) {
|
||||
if (len1 % 4 === 2) {
|
||||
static_section = offset1.slice(0, -3);
|
||||
offset1 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset1 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64("AA" + static_section, alphabet).slice(1, -2)) + "'>" +
|
||||
static_section + "</span>" +
|
||||
"<span class='hlgreen'>" + offset1.substr(offset1.length - 3, 1) + "</span>" +
|
||||
"<span class='hlred'>" + offset1.substr(offset1.length - 2) + "</span>";
|
||||
} else if (len1 % 4 == 3) {
|
||||
} else if (len1 % 4 === 3) {
|
||||
static_section = offset1.slice(0, -2);
|
||||
offset1 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset1 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64("AA" + static_section, alphabet).slice(1, -1)) + "'>" +
|
||||
static_section + "</span>" +
|
||||
"<span class='hlgreen'>" + offset1.substr(offset1.length - 2, 1) + "</span>" +
|
||||
"<span class='hlred'>" + offset1.substr(offset1.length - 1) + "</span>";
|
||||
} else {
|
||||
static_section = offset1;
|
||||
offset1 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset1 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64("AA" + static_section, alphabet).slice(1)) + "'>" +
|
||||
static_section + "</span>";
|
||||
}
|
||||
|
||||
|
||||
if (!show_variable) {
|
||||
offset1 = static_section;
|
||||
}
|
||||
|
||||
|
||||
// Highlight offset 2
|
||||
padding = "<span class='hlred'>" + offset2.substr(0, 2) + "</span>" +
|
||||
"<span class='hlgreen'>" + offset2.substr(2, 1) + "</span>";
|
||||
offset2 = offset2.substr(3);
|
||||
if (len2 % 4 == 2) {
|
||||
if (len2 % 4 === 2) {
|
||||
static_section = offset2.slice(0, -3);
|
||||
offset2 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset2 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64("AAA" + static_section, alphabet).slice(2, -2)) + "'>" +
|
||||
static_section + "</span>" +
|
||||
"<span class='hlgreen'>" + offset2.substr(offset2.length - 3, 1) + "</span>" +
|
||||
"<span class='hlred'>" + offset2.substr(offset2.length - 2) + "</span>";
|
||||
} else if (len2 % 4 == 3) {
|
||||
} else if (len2 % 4 === 3) {
|
||||
static_section = offset2.slice(0, -2);
|
||||
offset2 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset2 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64("AAA" + static_section, alphabet).slice(2, -2)) + "'>" +
|
||||
static_section + "</span>" +
|
||||
"<span class='hlgreen'>" + offset2.substr(offset2.length - 2, 1) + "</span>" +
|
||||
"<span class='hlred'>" + offset2.substr(offset2.length - 1) + "</span>";
|
||||
} else {
|
||||
static_section = offset2;
|
||||
offset2 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
offset2 = padding + "<span data-toggle='tooltip' data-placement='top' title='" +
|
||||
Utils.escape_html(Utils.from_base64("AAA" + static_section, alphabet).slice(2)) + "'>" +
|
||||
static_section + "</span>";
|
||||
}
|
||||
|
||||
|
||||
if (!show_variable) {
|
||||
offset2 = static_section;
|
||||
}
|
||||
|
||||
|
||||
return (show_variable ? "Characters highlighted in <span class='hlgreen'>green</span> could change if the input is surrounded by more data." +
|
||||
"\nCharacters highlighted in <span class='hlred'>red</span> are for padding purposes only." +
|
||||
"\nUnhighlighted characters are <span data-toggle='tooltip' data-placement='top' title='Tooltip on left'>static</span>." +
|
||||
@@ -306,8 +306,8 @@ var Base64 = {
|
||||
script :
|
||||
offset0 + "\n" + offset1 + "\n" + offset2);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Highlight to Base64
|
||||
*
|
||||
@@ -322,7 +322,7 @@ var Base64 = {
|
||||
pos[0].end = Math.ceil(pos[0].end / 3 * 4);
|
||||
return pos;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Highlight from Base64
|
||||
*
|
||||
@@ -337,5 +337,5 @@ var Base64 = {
|
||||
pos[0].end = Math.floor(pos[0].end / 4 * 3);
|
||||
return pos;
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
@@ -32,9 +32,9 @@ var BitwiseOp = {
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
k = key[i % key.length];
|
||||
o = input[i];
|
||||
x = null_preserving && (o === 0 || o == k) ? o : func(o, k);
|
||||
x = null_preserving && (o === 0 || o === k) ? o : func(o, k);
|
||||
result.push(x);
|
||||
if (scheme != "Standard" && !(null_preserving && (o === 0 || o == k))) {
|
||||
if (scheme !== "Standard" && !(null_preserving && (o === 0 || o === k))) {
|
||||
switch (scheme) {
|
||||
case "Input differential":
|
||||
key[i % key.length] = x;
|
||||
|
||||
@@ -26,7 +26,7 @@ var ByteRepr = {
|
||||
* @default
|
||||
*/
|
||||
BIN_DELIM_OPTIONS: ["Space", "Comma", "Semi-colon", "Colon", "Line feed", "CRLF", "None"],
|
||||
|
||||
|
||||
/**
|
||||
* To Hex operation.
|
||||
*
|
||||
@@ -38,8 +38,8 @@ var ByteRepr = {
|
||||
var delim = Utils.char_rep[args[0] || "Space"];
|
||||
return Utils.to_hex(input, delim, 2);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From Hex operation.
|
||||
*
|
||||
@@ -51,14 +51,14 @@ var ByteRepr = {
|
||||
var delim = args[0] || "Space";
|
||||
return Utils.from_hex(input, delim, 2);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
CHARCODE_BASE: 16,
|
||||
|
||||
|
||||
/**
|
||||
* To Charcode operation.
|
||||
*
|
||||
@@ -72,34 +72,34 @@ var ByteRepr = {
|
||||
output = "",
|
||||
padding = 2,
|
||||
ordinal;
|
||||
|
||||
|
||||
if (base < 2 || base > 36) {
|
||||
throw "Error: Base argument must be between 2 and 36";
|
||||
}
|
||||
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
ordinal = Utils.ord(input[i]);
|
||||
|
||||
if (base == 16) {
|
||||
|
||||
if (base === 16) {
|
||||
if (ordinal < 256) padding = 2;
|
||||
else if (ordinal < 65536) padding = 4;
|
||||
else if (ordinal < 16777216) padding = 6;
|
||||
else if (ordinal < 4294967296) padding = 8;
|
||||
else padding = 2;
|
||||
|
||||
|
||||
if (padding > 2) app.options.attempt_highlight = false;
|
||||
|
||||
|
||||
output += Utils.hex(ordinal, padding) + delim;
|
||||
} else {
|
||||
app.options.attempt_highlight = false;
|
||||
output += ordinal.toString(base) + delim;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return output.slice(0, -delim.length);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From Charcode operation.
|
||||
*
|
||||
@@ -112,32 +112,32 @@ var ByteRepr = {
|
||||
base = args[1],
|
||||
bites = input.split(delim),
|
||||
i = 0;
|
||||
|
||||
|
||||
if (base < 2 || base > 36) {
|
||||
throw "Error: Base argument must be between 2 and 36";
|
||||
}
|
||||
|
||||
if (base != 16) {
|
||||
|
||||
if (base !== 16) {
|
||||
app.options.attempt_highlight = false;
|
||||
}
|
||||
|
||||
// Split into groups of 2 if the whole string is concatenated and
|
||||
|
||||
// Split into groups of 2 if the whole string is concatenated and
|
||||
// too long to be a single character
|
||||
if (bites.length == 1 && input.length > 17) {
|
||||
if (bites.length === 1 && input.length > 17) {
|
||||
bites = [];
|
||||
for (i = 0; i < input.length; i += 2) {
|
||||
bites.push(input.slice(i, i+2));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var latin1 = "";
|
||||
for (i = 0; i < bites.length; i++) {
|
||||
latin1 += Utils.chr(parseInt(bites[i], base));
|
||||
}
|
||||
return Utils.str_to_byte_array(latin1);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Highlight to hex
|
||||
*
|
||||
@@ -149,20 +149,20 @@ var ByteRepr = {
|
||||
*/
|
||||
highlight_to: function(pos, args) {
|
||||
var delim = Utils.char_rep[args[0] || "Space"],
|
||||
len = delim == "\r\n" ? 1 : delim.length;
|
||||
|
||||
len = delim === "\r\n" ? 1 : delim.length;
|
||||
|
||||
pos[0].start = pos[0].start * (2 + len);
|
||||
pos[0].end = pos[0].end * (2 + len) - len;
|
||||
|
||||
|
||||
// 0x and \x are added to the beginning if they are selected, so increment the positions accordingly
|
||||
if (delim == "0x" || delim == "\\x") {
|
||||
if (delim === "0x" || delim === "\\x") {
|
||||
pos[0].start += 2;
|
||||
pos[0].end += 2;
|
||||
}
|
||||
return pos;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Highlight to hex
|
||||
*
|
||||
@@ -174,23 +174,23 @@ var ByteRepr = {
|
||||
*/
|
||||
highlight_from: function(pos, args) {
|
||||
var delim = Utils.char_rep[args[0] || "Space"],
|
||||
len = delim == "\r\n" ? 1 : delim.length,
|
||||
len = delim === "\r\n" ? 1 : delim.length,
|
||||
width = len + 2;
|
||||
|
||||
|
||||
// 0x and \x are added to the beginning if they are selected, so increment the positions accordingly
|
||||
if (delim == "0x" || delim == "\\x") {
|
||||
if (delim === "0x" || delim === "\\x") {
|
||||
if (pos[0].start > 1) pos[0].start -= 2;
|
||||
else pos[0].start = 0;
|
||||
if (pos[0].end > 1) pos[0].end -= 2;
|
||||
else pos[0].end = 0;
|
||||
}
|
||||
|
||||
|
||||
pos[0].start = pos[0].start === 0 ? 0 : Math.round(pos[0].start / width);
|
||||
pos[0].end = pos[0].end === 0 ? 0 : Math.ceil(pos[0].end / width);
|
||||
return pos;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* To Decimal operation.
|
||||
*
|
||||
@@ -202,8 +202,8 @@ var ByteRepr = {
|
||||
var delim = Utils.char_rep[args[0]];
|
||||
return input.join(delim);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From Decimal operation.
|
||||
*
|
||||
@@ -216,14 +216,14 @@ var ByteRepr = {
|
||||
var byte_str = input.split(delim), output = [];
|
||||
if (byte_str[byte_str.length-1] === "")
|
||||
byte_str = byte_str.slice(0, byte_str.length-1);
|
||||
|
||||
|
||||
for (var i = 0; i < byte_str.length; i++) {
|
||||
output[i] = parseInt(byte_str[i]);
|
||||
output[i] = parseInt(byte_str[i], 10);
|
||||
}
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* To Binary operation.
|
||||
*
|
||||
@@ -235,19 +235,19 @@ var ByteRepr = {
|
||||
var delim = Utils.char_rep[args[0] || "Space"],
|
||||
output = "",
|
||||
padding = 8;
|
||||
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
output += Utils.pad(input[i].toString(2), padding) + delim;
|
||||
}
|
||||
|
||||
|
||||
if (delim.length) {
|
||||
return output.slice(0, -delim.length);
|
||||
} else {
|
||||
return output;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From Binary operation.
|
||||
*
|
||||
@@ -256,11 +256,11 @@ var ByteRepr = {
|
||||
* @returns {byte_array}
|
||||
*/
|
||||
run_from_binary: function(input, args) {
|
||||
if (args[0] != "None") {
|
||||
if (args[0] !== "None") {
|
||||
var delim_regex = Utils.regex_rep[args[0] || "Space"];
|
||||
input = input.replace(delim_regex, '');
|
||||
input = input.replace(delim_regex, "");
|
||||
}
|
||||
|
||||
|
||||
var output = [];
|
||||
var byte_len = 8;
|
||||
for (var i = 0; i < input.length; i += byte_len) {
|
||||
@@ -268,8 +268,8 @@ var ByteRepr = {
|
||||
}
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Highlight to binary
|
||||
*
|
||||
@@ -285,8 +285,8 @@ var ByteRepr = {
|
||||
pos[0].end = pos[0].end * (8 + delim.length) - delim.length;
|
||||
return pos;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Highlight from binary
|
||||
*
|
||||
@@ -302,8 +302,8 @@ var ByteRepr = {
|
||||
pos[0].end = pos[0].end === 0 ? 0 : Math.ceil(pos[0].end / (8 + delim.length));
|
||||
return pos;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -314,7 +314,7 @@ var ByteRepr = {
|
||||
* @default
|
||||
*/
|
||||
HEX_CONTENT_SPACES_BETWEEN_BYTES: false,
|
||||
|
||||
|
||||
/**
|
||||
* To Hex Content operation.
|
||||
*
|
||||
@@ -325,19 +325,19 @@ var ByteRepr = {
|
||||
run_to_hex_content: function(input, args) {
|
||||
var convert = args[0];
|
||||
var spaces = args[1];
|
||||
if (convert == "All chars") {
|
||||
if (convert === "All chars") {
|
||||
var result = "|" + Utils.to_hex(input) + "|";
|
||||
if (!spaces) result = result.replace(/ /g, "");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
var output = "",
|
||||
in_hex = false,
|
||||
convert_spaces = convert == "Only special chars including spaces",
|
||||
convert_spaces = convert === "Only special chars including spaces",
|
||||
b;
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
b = input[i];
|
||||
if ((b == 32 && convert_spaces) || (b < 48 && b != 32) || (b > 57 && b < 65) || (b > 90 && b < 97) || b > 122) {
|
||||
if ((b === 32 && convert_spaces) || (b < 48 && b !== 32) || (b > 57 && b < 65) || (b > 90 && b < 97) || b > 122) {
|
||||
if (!in_hex) {
|
||||
output += "|";
|
||||
in_hex = true;
|
||||
@@ -354,8 +354,8 @@ var ByteRepr = {
|
||||
if (in_hex) output += "|";
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From Hex Content operation.
|
||||
*
|
||||
@@ -366,11 +366,11 @@ var ByteRepr = {
|
||||
run_from_hex_content: function(input, args) {
|
||||
var regex = /\|([a-f\d ]{2,})\|/gi;
|
||||
var output = [], m, i = 0;
|
||||
while (!!(m = regex.exec(input))) {
|
||||
while ((m = regex.exec(input))) {
|
||||
// Add up to match
|
||||
for (; i < m.index;)
|
||||
output.push(Utils.ord(input[i++]));
|
||||
|
||||
|
||||
// Add match
|
||||
var bytes = Utils.from_hex(m[1]);
|
||||
if (bytes) {
|
||||
@@ -381,13 +381,13 @@ var ByteRepr = {
|
||||
for (; i < regex.lastIndex;)
|
||||
output.push(Utils.ord(input[i++]));
|
||||
}
|
||||
|
||||
|
||||
i = regex.lastIndex;
|
||||
}
|
||||
// Add all after final match
|
||||
for (; i < input.length;)
|
||||
output.push(Utils.ord(input[i++]));
|
||||
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
@@ -28,14 +28,14 @@ var CharEnc = {
|
||||
var input_format = args[0],
|
||||
output_format = args[1];
|
||||
|
||||
if (input_format == "Windows-1251") {
|
||||
if (input_format === "Windows-1251") {
|
||||
input = Utils.win1251_to_unicode(input);
|
||||
input = CryptoJS.enc.Utf8.parse(input);
|
||||
} else {
|
||||
input = Utils.format[input_format].parse(input);
|
||||
}
|
||||
|
||||
if (output_format == "Windows-1251") {
|
||||
if (output_format === "Windows-1251") {
|
||||
input = CryptoJS.enc.Utf8.stringify(input);
|
||||
return Utils.unicode_to_win1251(input);
|
||||
} else {
|
||||
|
||||
+157
-67
@@ -10,7 +10,7 @@
|
||||
* @namespace
|
||||
*/
|
||||
var Cipher = {
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -46,8 +46,8 @@ var Cipher = {
|
||||
* @default
|
||||
*/
|
||||
RESULT_TYPE: ["Show all", "Ciphertext", "Key", "IV", "Salt"],
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Runs encryption operations using the CryptoJS framework.
|
||||
*
|
||||
@@ -65,21 +65,21 @@ var Cipher = {
|
||||
padding = CryptoJS.pad[args[4]],
|
||||
result_option = args[5].toLowerCase(),
|
||||
output_format = args[6];
|
||||
|
||||
|
||||
if (iv.sigBytes === 0) {
|
||||
// Use passphrase rather than key. Need to convert it to a string.
|
||||
key = key.toString(CryptoJS.enc.Latin1);
|
||||
}
|
||||
|
||||
|
||||
var encrypted = algo.encrypt(input, key, {
|
||||
salt: salt.sigBytes > 0 ? salt : false,
|
||||
iv: iv.sigBytes > 0 ? iv : null,
|
||||
mode: mode,
|
||||
padding: padding
|
||||
});
|
||||
|
||||
|
||||
var result = "";
|
||||
if (result_option == "show all") {
|
||||
if (result_option === "show all") {
|
||||
result += "Key: " + encrypted.key.toString(Utils.format[output_format]);
|
||||
result += "\nIV: " + encrypted.iv.toString(Utils.format[output_format]);
|
||||
if (encrypted.salt) result += "\nSalt: " + encrypted.salt.toString(Utils.format[output_format]);
|
||||
@@ -87,11 +87,11 @@ var Cipher = {
|
||||
} else {
|
||||
result = encrypted[result_option].toString(Utils.format[output_format]);
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Runs decryption operations using the CryptoJS framework.
|
||||
*
|
||||
@@ -109,39 +109,39 @@ var Cipher = {
|
||||
padding = CryptoJS.pad[args[4]],
|
||||
input_format = args[5],
|
||||
output_format = args[6];
|
||||
|
||||
|
||||
// The ZeroPadding option causes a crash when the input length is 0
|
||||
if (!input.length) {
|
||||
return "No input";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var ciphertext = Utils.format[input_format].parse(input);
|
||||
|
||||
|
||||
if (iv.sigBytes === 0) {
|
||||
// Use passphrase rather than key. Need to convert it to a string.
|
||||
key = key.toString(CryptoJS.enc.Latin1);
|
||||
}
|
||||
|
||||
|
||||
var decrypted = algo.decrypt({
|
||||
ciphertext: ciphertext,
|
||||
salt: salt.sigBytes > 0 ? salt : false
|
||||
}, key, {
|
||||
iv: iv.sigBytes > 0 ? iv : null,
|
||||
mode: mode,
|
||||
padding: padding
|
||||
});
|
||||
|
||||
ciphertext: ciphertext,
|
||||
salt: salt.sigBytes > 0 ? salt : false
|
||||
}, key, {
|
||||
iv: iv.sigBytes > 0 ? iv : null,
|
||||
mode: mode,
|
||||
padding: padding
|
||||
});
|
||||
|
||||
var result;
|
||||
try {
|
||||
result = decrypted.toString(Utils.format[output_format]);
|
||||
} catch (err) {
|
||||
result = "Decrypt error: " + err.message;
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* AES Encrypt operation.
|
||||
*
|
||||
@@ -152,8 +152,8 @@ var Cipher = {
|
||||
run_aes_enc: function (input, args) {
|
||||
return Cipher._enc(CryptoJS.AES, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* AES Decrypt operation.
|
||||
*
|
||||
@@ -164,8 +164,8 @@ var Cipher = {
|
||||
run_aes_dec: function (input, args) {
|
||||
return Cipher._dec(CryptoJS.AES, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DES Encrypt operation.
|
||||
*
|
||||
@@ -176,8 +176,8 @@ var Cipher = {
|
||||
run_des_enc: function (input, args) {
|
||||
return Cipher._enc(CryptoJS.DES, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DES Decrypt operation.
|
||||
*
|
||||
@@ -188,8 +188,8 @@ var Cipher = {
|
||||
run_des_dec: function (input, args) {
|
||||
return Cipher._dec(CryptoJS.DES, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Triple DES Encrypt operation.
|
||||
*
|
||||
@@ -200,8 +200,8 @@ var Cipher = {
|
||||
run_triple_des_enc: function (input, args) {
|
||||
return Cipher._enc(CryptoJS.TripleDES, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Triple DES Decrypt operation.
|
||||
*
|
||||
@@ -212,8 +212,8 @@ var Cipher = {
|
||||
run_triple_des_dec: function (input, args) {
|
||||
return Cipher._dec(CryptoJS.TripleDES, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Rabbit Encrypt operation.
|
||||
*
|
||||
@@ -224,8 +224,8 @@ var Cipher = {
|
||||
run_rabbit_enc: function (input, args) {
|
||||
return Cipher._enc(CryptoJS.Rabbit, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Rabbit Decrypt operation.
|
||||
*
|
||||
@@ -236,8 +236,8 @@ var Cipher = {
|
||||
run_rabbit_dec: function (input, args) {
|
||||
return Cipher._dec(CryptoJS.Rabbit, input, args);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -248,7 +248,7 @@ var Cipher = {
|
||||
* @default
|
||||
*/
|
||||
BLOWFISH_OUTPUT_TYPES: ["Base64", "Hex", "String", "Raw"],
|
||||
|
||||
|
||||
/**
|
||||
* Blowfish Encrypt operation.
|
||||
*
|
||||
@@ -260,19 +260,19 @@ var Cipher = {
|
||||
var key = Utils.format[args[0].option].parse(args[0].string).toString(Utils.format.Latin1),
|
||||
mode = args[1],
|
||||
output_format = args[2];
|
||||
|
||||
|
||||
if (key.length === 0) return "Enter a key";
|
||||
|
||||
|
||||
var enc_hex = blowfish.encrypt(input, key, {
|
||||
outputType: 1,
|
||||
cipherMode: Cipher.BLOWFISH_MODES.indexOf(mode)
|
||||
}),
|
||||
enc = CryptoJS.enc.Hex.parse(enc_hex);
|
||||
|
||||
|
||||
return enc.toString(Utils.format[output_format]);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Blowfish Decrypt operation.
|
||||
*
|
||||
@@ -284,18 +284,18 @@ var Cipher = {
|
||||
var key = Utils.format[args[0].option].parse(args[0].string).toString(Utils.format.Latin1),
|
||||
mode = args[1],
|
||||
input_format = args[2];
|
||||
|
||||
|
||||
if (key.length === 0) return "Enter a key";
|
||||
|
||||
|
||||
input = Utils.format[input_format].parse(input);
|
||||
|
||||
|
||||
return blowfish.decrypt(input.toString(CryptoJS.enc.Base64), key, {
|
||||
outputType: 0, // This actually means inputType. The library is weird.
|
||||
cipherMode: Cipher.BLOWFISH_MODES.indexOf(mode)
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -306,7 +306,7 @@ var Cipher = {
|
||||
* @default
|
||||
*/
|
||||
KDF_ITERATIONS: 1,
|
||||
|
||||
|
||||
/**
|
||||
* Derive PBKDF2 key operation.
|
||||
*
|
||||
@@ -322,11 +322,11 @@ var Cipher = {
|
||||
output_format = args[4],
|
||||
passphrase = Utils.format[input_format].parse(input),
|
||||
key = CryptoJS.PBKDF2(passphrase, salt, { keySize: key_size, iterations: iterations });
|
||||
|
||||
|
||||
return key.toString(Utils.format[output_format]);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Derive EVP key operation.
|
||||
*
|
||||
@@ -342,11 +342,11 @@ var Cipher = {
|
||||
output_format = args[4],
|
||||
passphrase = Utils.format[input_format].parse(input),
|
||||
key = CryptoJS.EvpKDF(passphrase, salt, { keySize: key_size, iterations: iterations });
|
||||
|
||||
|
||||
return key.toString(Utils.format[output_format]);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* RC4 operation.
|
||||
*
|
||||
@@ -358,17 +358,17 @@ var Cipher = {
|
||||
var message = Utils.format[args[1]].parse(input),
|
||||
passphrase = Utils.format[args[0].option].parse(args[0].string),
|
||||
encrypted = CryptoJS.RC4.encrypt(message, passphrase);
|
||||
|
||||
|
||||
return encrypted.ciphertext.toString(Utils.format[args[2]]);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
RC4DROP_BYTES: 768,
|
||||
|
||||
|
||||
/**
|
||||
* RC4 Drop operation.
|
||||
*
|
||||
@@ -381,17 +381,107 @@ var Cipher = {
|
||||
passphrase = Utils.format[args[0].option].parse(args[0].string),
|
||||
drop = args[3],
|
||||
encrypted = CryptoJS.RC4Drop.encrypt(message, passphrase, { drop: drop });
|
||||
|
||||
|
||||
return encrypted.ciphertext.toString(Utils.format[args[2]]);
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Vigenère Encode operation.
|
||||
*
|
||||
* @author Matt C [matt@artemisbot.pw]
|
||||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
*/
|
||||
run_vigenere_enc: function (input, args) {
|
||||
var alphabet = "abcdefghijklmnopqrstuvwxyz",
|
||||
key = args[0].toLowerCase(),
|
||||
output = "",
|
||||
fail = 0,
|
||||
key_index,
|
||||
msg_index,
|
||||
chr;
|
||||
|
||||
if (!key) return "No key entered";
|
||||
if (!/^[a-zA-Z]+$/.test(key)) return "The key must consist only of letters";
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
if (alphabet.indexOf(input[i]) >= 0) {
|
||||
// Get the corresponding character of key for the current letter, accounting
|
||||
// for chars not in alphabet
|
||||
chr = key[(i - fail) % key.length];
|
||||
// Get the location in the vigenere square of the key char
|
||||
key_index = alphabet.indexOf(chr);
|
||||
// Get the location in the vigenere square of the message char
|
||||
msg_index = alphabet.indexOf(input[i]);
|
||||
// Get the encoded letter by finding the sum of indexes modulo 26 and finding
|
||||
// the letter corresponding to that
|
||||
output += alphabet[(key_index + msg_index) % 26];
|
||||
} else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) {
|
||||
chr = key[(i - fail) % key.length].toLowerCase();
|
||||
key_index = alphabet.indexOf(chr);
|
||||
msg_index = alphabet.indexOf(input[i].toLowerCase());
|
||||
output += alphabet[(key_index + msg_index) % 26].toUpperCase();
|
||||
} else {
|
||||
output += input[i];
|
||||
fail++;
|
||||
}
|
||||
}
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Vigenère Decode operation.
|
||||
*
|
||||
* @author Matt C [matt@artemisbot.pw]
|
||||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
*/
|
||||
run_vigenere_dec: function (input, args) {
|
||||
var alphabet = "abcdefghijklmnopqrstuvwxyz",
|
||||
key = args[0].toLowerCase(),
|
||||
output = "",
|
||||
fail = 0,
|
||||
key_index,
|
||||
msg_index,
|
||||
chr;
|
||||
|
||||
if (!key) return "No key entered";
|
||||
if (!/^[a-zA-Z]+$/.test(key)) return "The key must consist only of letters";
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
if (alphabet.indexOf(input[i]) >= 0) {
|
||||
chr = key[(i - fail) % key.length];
|
||||
key_index = alphabet.indexOf(chr);
|
||||
msg_index = alphabet.indexOf(input[i]);
|
||||
// Subtract indexes from each other, add 26 just in case the value is negative,
|
||||
// modulo to remove if neccessary
|
||||
output += alphabet[(msg_index - key_index + alphabet.length ) % 26];
|
||||
} else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) {
|
||||
chr = key[(i - fail) % key.length].toLowerCase();
|
||||
key_index = alphabet.indexOf(chr);
|
||||
msg_index = alphabet.indexOf(input[i].toLowerCase());
|
||||
output += alphabet[(msg_index + alphabet.length - key_index) % 26].toUpperCase();
|
||||
} else {
|
||||
output += input[i];
|
||||
fail++;
|
||||
}
|
||||
}
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Overwriting the CryptoJS OpenSSL key derivation function so that it is possible to not pass a
|
||||
* salt in.
|
||||
|
||||
|
||||
* @param {string} password - The password to derive from.
|
||||
* @param {number} keySize - The size in words of the key to generate.
|
||||
* @param {number} ivSize - The size in words of the IV to generate.
|
||||
|
||||
+53
-53
@@ -10,7 +10,7 @@
|
||||
* @namespace
|
||||
*/
|
||||
var Code = {
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -21,7 +21,7 @@ var Code = {
|
||||
* @default
|
||||
*/
|
||||
LINE_NUMS: false,
|
||||
|
||||
|
||||
/**
|
||||
* Syntax highlighter operation.
|
||||
*
|
||||
@@ -34,14 +34,14 @@ var Code = {
|
||||
line_nums = args[1];
|
||||
return "<code class='prettyprint'>" + prettyPrintOne(Utils.escape_html(input), language, line_nums) + "</code>";
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
BEAUTIFY_INDENT: "\\t",
|
||||
|
||||
|
||||
/**
|
||||
* XML Beautify operation.
|
||||
*
|
||||
@@ -53,8 +53,8 @@ var Code = {
|
||||
var indent_str = args[0];
|
||||
return vkbeautify.xml(input, indent_str);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* JSON Beautify operation.
|
||||
*
|
||||
@@ -67,8 +67,8 @@ var Code = {
|
||||
if (!input) return "";
|
||||
return vkbeautify.json(input, indent_str);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* CSS Beautify operation.
|
||||
*
|
||||
@@ -80,8 +80,8 @@ var Code = {
|
||||
var indent_str = args[0];
|
||||
return vkbeautify.css(input, indent_str);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* SQL Beautify operation.
|
||||
*
|
||||
@@ -93,14 +93,14 @@ var Code = {
|
||||
var indent_str = args[0];
|
||||
return vkbeautify.sql(input, indent_str);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
PRESERVE_COMMENTS: false,
|
||||
|
||||
|
||||
/**
|
||||
* XML Minify operation.
|
||||
*
|
||||
@@ -112,8 +112,8 @@ var Code = {
|
||||
var preserve_comments = args[0];
|
||||
return vkbeautify.xmlmin(input, preserve_comments);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* JSON Minify operation.
|
||||
*
|
||||
@@ -125,8 +125,8 @@ var Code = {
|
||||
if (!input) return "";
|
||||
return vkbeautify.jsonmin(input);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* CSS Minify operation.
|
||||
*
|
||||
@@ -138,8 +138,8 @@ var Code = {
|
||||
var preserve_comments = args[0];
|
||||
return vkbeautify.cssmin(input, preserve_comments);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* SQL Minify operation.
|
||||
*
|
||||
@@ -150,8 +150,8 @@ var Code = {
|
||||
run_sql_minify: function(input, args) {
|
||||
return vkbeautify.sqlmin(input);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generic Code Beautify operation.
|
||||
*
|
||||
@@ -160,10 +160,10 @@ var Code = {
|
||||
* I'm not proud of this code, but seriously, try writing a generic lexer and parser that
|
||||
* correctly generates an AST for multiple different languages. I have tried, and I can tell
|
||||
* you it's pretty much impossible.
|
||||
*
|
||||
*
|
||||
* This basically works. That'll have to be good enough. It's not meant to produce working code,
|
||||
* just slightly more readable code.
|
||||
*
|
||||
*
|
||||
* Things that don't work:
|
||||
* - For loop formatting
|
||||
* - Do-While loop formatting
|
||||
@@ -180,66 +180,66 @@ var Code = {
|
||||
t = 0,
|
||||
preserved_tokens = [],
|
||||
m;
|
||||
|
||||
|
||||
// Remove strings
|
||||
var sstrings = /'([^'\\]|\\.)*'/g;
|
||||
while (!!(m = sstrings.exec(code))) {
|
||||
while ((m = sstrings.exec(code))) {
|
||||
code = preserve_token(code, m, t++);
|
||||
sstrings.lastIndex = m.index;
|
||||
}
|
||||
|
||||
|
||||
var dstrings = /"([^"\\]|\\.)*"/g;
|
||||
while (!!(m = dstrings.exec(code))) {
|
||||
while ((m = dstrings.exec(code))) {
|
||||
code = preserve_token(code, m, t++);
|
||||
dstrings.lastIndex = m.index;
|
||||
}
|
||||
|
||||
|
||||
// Remove comments
|
||||
var scomments = /\/\/[^\n\r]*/g;
|
||||
while (!!(m = scomments.exec(code))) {
|
||||
while ((m = scomments.exec(code))) {
|
||||
code = preserve_token(code, m, t++);
|
||||
scomments.lastIndex = m.index;
|
||||
}
|
||||
|
||||
|
||||
var mcomments = /\/\*[\s\S]*?\*\//gm;
|
||||
while (!!(m = mcomments.exec(code))) {
|
||||
while ((m = mcomments.exec(code))) {
|
||||
code = preserve_token(code, m, t++);
|
||||
mcomments.lastIndex = m.index;
|
||||
}
|
||||
|
||||
|
||||
var hcomments = /(^|\n)#[^\n\r#]+/g;
|
||||
while (!!(m = hcomments.exec(code))) {
|
||||
while ((m = hcomments.exec(code))) {
|
||||
code = preserve_token(code, m, t++);
|
||||
hcomments.lastIndex = m.index;
|
||||
}
|
||||
|
||||
|
||||
// Remove regexes
|
||||
var regexes = /\/.*?[^\\]\/[gim]{0,3}/gi;
|
||||
while (!!(m = regexes.exec(code))) {
|
||||
while ((m = regexes.exec(code))) {
|
||||
code = preserve_token(code, m, t++);
|
||||
regexes.lastIndex = m.index;
|
||||
}
|
||||
|
||||
|
||||
// Create newlines after ;
|
||||
code = code.replace(/;/g, ";\n");
|
||||
|
||||
|
||||
// Create newlines after { and around }
|
||||
code = code.replace(/{/g, "{\n");
|
||||
code = code.replace(/}/g, "\n}\n");
|
||||
|
||||
|
||||
// Remove carriage returns
|
||||
code = code.replace(/\r/g, "");
|
||||
|
||||
|
||||
// Remove all indentation
|
||||
code = code.replace(/^\s+/g, "");
|
||||
code = code.replace(/\n\s+/g, "\n");
|
||||
|
||||
|
||||
// Remove trailing spaces
|
||||
code = code.replace(/\s*$/g, "");
|
||||
|
||||
|
||||
// Remove newlines before {
|
||||
code = code.replace(/\n{/g, "{");
|
||||
|
||||
|
||||
// Indent
|
||||
var i = 0,
|
||||
level = 0;
|
||||
@@ -250,10 +250,10 @@ var Code = {
|
||||
break;
|
||||
case "\n":
|
||||
if (i+1 >= code.length) break;
|
||||
|
||||
if (code[i+1] == "}") level--;
|
||||
|
||||
if (code[i+1] === "}") level--;
|
||||
var indent = (level >= 0) ? Array(level*4+1).join(" ") : "";
|
||||
|
||||
|
||||
code = code.substring(0, i+1) + indent + code.substring(i+1);
|
||||
if (level > 0) i += level*4;
|
||||
break;
|
||||
@@ -272,30 +272,30 @@ var Code = {
|
||||
code = code.replace(/\s*,\s*/g, ", ");
|
||||
code = code.replace(/\s*{/g, " {");
|
||||
code = code.replace(/}\n/g, "}\n\n");
|
||||
|
||||
|
||||
// Just... don't look at this
|
||||
code = code.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim, "$1 ($2)\n $3");
|
||||
code = code.replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim, "$1 ($2) $3");
|
||||
code = code.replace(/else\s*\n([^{])/gim, "else\n $1");
|
||||
code = code.replace(/else\s+([^{])/gim, "else $1");
|
||||
|
||||
|
||||
// Remove strategic spaces
|
||||
code = code.replace(/\s+;/g, ";");
|
||||
code = code.replace(/\{\s+\}/g, "{}");
|
||||
code = code.replace(/\[\s+\]/g, "[]");
|
||||
code = code.replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi, "} $1");
|
||||
|
||||
|
||||
|
||||
|
||||
// Replace preserved tokens
|
||||
var ptokens = /###preserved_token(\d+)###/g;
|
||||
while (!!(m = ptokens.exec(code))) {
|
||||
var ti = parseInt(m[1]);
|
||||
while ((m = ptokens.exec(code))) {
|
||||
var ti = parseInt(m[1], 10);
|
||||
code = code.substring(0, m.index) + preserved_tokens[ti] + code.substring(m.index + m[0].length);
|
||||
ptokens.lastIndex = m.index;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
||||
|
||||
function preserve_token(str, match, t) {
|
||||
preserved_tokens[t] = match[0];
|
||||
return str.substring(0, match.index) +
|
||||
|
||||
@@ -108,12 +108,12 @@ var Compress = {
|
||||
// ]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]....]...
|
||||
// e.g. Input data of [8b, 1d, dc, 44]
|
||||
// Look for the first two square brackets:
|
||||
if (result.length > 158 && result[0] == 93 && result[5] == 93) {
|
||||
if (result.length > 158 && result[0] === 93 && result[5] === 93) {
|
||||
// If the first two square brackets are there, check that the others
|
||||
// are also there. If they are, throw an error. If not, continue.
|
||||
var valid = false;
|
||||
for (var i = 0; i < 155; i += 5) {
|
||||
if (result[i] != 93) {
|
||||
if (result[i] !== 93) {
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
@@ -172,12 +172,12 @@ var Compress = {
|
||||
// Deal with character encoding issues
|
||||
input = Utils.str_to_byte_array(Utils.byte_array_to_utf8(input));
|
||||
var inflate = new Zlib.Inflate(input, {
|
||||
index: args[0],
|
||||
bufferSize: args[1],
|
||||
bufferType: Compress.ZLIB_BUFFER_TYPE_LOOKUP[args[2]],
|
||||
resize: args[3],
|
||||
verify: args[4]
|
||||
});
|
||||
index: args[0],
|
||||
bufferSize: args[1],
|
||||
bufferType: Compress.ZLIB_BUFFER_TYPE_LOOKUP[args[2]],
|
||||
resize: args[3],
|
||||
verify: args[4]
|
||||
});
|
||||
return Array.prototype.slice.call(inflate.decompress());
|
||||
},
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ var Convert = {
|
||||
"Centimetres (cm)" : 1e-2,
|
||||
"Metres (m)" : 1,
|
||||
"Kilometers (km)" : 1e3,
|
||||
|
||||
|
||||
"Thou (th)" : 0.0000254,
|
||||
"Inches (in)" : 0.0254,
|
||||
"Feet (ft)" : 0.3048,
|
||||
@@ -40,23 +40,23 @@ var Convert = {
|
||||
"Furlongs (fur)" : 201.168,
|
||||
"Miles (mi)" : 1609.344,
|
||||
"Leagues (lea)" : 4828.032,
|
||||
|
||||
|
||||
"Fathoms (ftm)" : 1.853184,
|
||||
"Cables" : 185.3184,
|
||||
"Nautical miles" : 1853.184,
|
||||
|
||||
|
||||
"Cars (4m)" : 4,
|
||||
"Buses (8.4m)" : 8.4,
|
||||
"American football fields (91m)": 91,
|
||||
"Football pitches (105m)": 105,
|
||||
|
||||
"Earth-to-Moons" : 380000000,
|
||||
|
||||
"Earth-to-Moons" : 380000000,
|
||||
"Earth's equators" : 40075016.686,
|
||||
"Astronomical units (au)": 149597870700,
|
||||
"Light-years (ly)" : 9460730472580800,
|
||||
"Parsecs (pc)" : 3.0856776e16
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Convert distance operation.
|
||||
*
|
||||
@@ -67,13 +67,13 @@ var Convert = {
|
||||
run_distance: function (input, args) {
|
||||
var input_units = args[0],
|
||||
output_units = args[1];
|
||||
|
||||
|
||||
input = input * Convert.DISTANCE_FACTOR[input_units];
|
||||
return input / Convert.DISTANCE_FACTOR[output_units];
|
||||
// TODO Remove rounding errors (e.g. 1.000000000001)
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -94,7 +94,7 @@ var Convert = {
|
||||
"Nibbles" : 4,
|
||||
"Octets" : 8,
|
||||
"Bytes (B)" : 8,
|
||||
|
||||
|
||||
// Binary bits (2^n)
|
||||
"Kibibits (Kib)" : 1024,
|
||||
"Mebibits (Mib)" : 1048576,
|
||||
@@ -104,7 +104,7 @@ var Convert = {
|
||||
"Exbibits (Eib)" : 1152921504606846976,
|
||||
"Zebibits (Zib)" : 1180591620717411303424,
|
||||
"Yobibits (Yib)" : 1208925819614629174706176,
|
||||
|
||||
|
||||
// Decimal bits (10^n)
|
||||
"Decabits" : 10,
|
||||
"Hectobits" : 100,
|
||||
@@ -116,7 +116,7 @@ var Convert = {
|
||||
"Exabits (Eb)" : 1e18,
|
||||
"Zettabits (Zb)" : 1e21,
|
||||
"Yottabits (Yb)" : 1e24,
|
||||
|
||||
|
||||
// Binary bytes (8 x 2^n)
|
||||
"Kibibytes (KiB)" : 8192,
|
||||
"Mebibytes (MiB)" : 8388608,
|
||||
@@ -126,7 +126,7 @@ var Convert = {
|
||||
"Exbibytes (EiB)" : 9223372036854775808,
|
||||
"Zebibytes (ZiB)" : 9444732965739290427392,
|
||||
"Yobibytes (YiB)" : 9671406556917033397649408,
|
||||
|
||||
|
||||
// Decimal bytes (8 x 10^n)
|
||||
"Kilobytes (KB)" : 8e3,
|
||||
"Megabytes (MB)" : 8e6,
|
||||
@@ -137,7 +137,7 @@ var Convert = {
|
||||
"Zettabytes (ZB)" : 8e21,
|
||||
"Yottabytes (YB)" : 8e24,
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Convert data units operation.
|
||||
*
|
||||
@@ -148,12 +148,12 @@ var Convert = {
|
||||
run_data_size: function (input, args) {
|
||||
var input_units = args[0],
|
||||
output_units = args[1];
|
||||
|
||||
|
||||
input = input * Convert.DATA_FACTOR[input_units];
|
||||
return input / Convert.DATA_FACTOR[output_units];
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -173,13 +173,13 @@ var Convert = {
|
||||
// Metric
|
||||
"Square metre (sq m)" : 1,
|
||||
"Square kilometre (sq km)" : 1e6,
|
||||
|
||||
|
||||
"Centiare (ca)" : 1,
|
||||
"Deciare (da)" : 10,
|
||||
"Are (a)" : 100,
|
||||
"Decare (daa)" : 1e3,
|
||||
"Hectare (ha)" : 1e4,
|
||||
|
||||
|
||||
// Imperial
|
||||
"Square inch (sq in)" : 0.00064516,
|
||||
"Square foot (sq ft)" : 0.09290304,
|
||||
@@ -188,12 +188,12 @@ var Convert = {
|
||||
"Perch (sq per)" : 42.21,
|
||||
"Rood (ro)" : 1011,
|
||||
"International acre (ac)" : 4046.8564224,
|
||||
|
||||
|
||||
// US customary units
|
||||
"US survey acre (ac)" : 4046.87261,
|
||||
"US survey square mile (sq mi)" : 2589998.470305239,
|
||||
"US survey township" : 93239944.9309886,
|
||||
|
||||
|
||||
// Nuclear physics
|
||||
"Yoctobarn (yb)" : 1e-52,
|
||||
"Zeptobarn (zb)" : 1e-49,
|
||||
@@ -206,18 +206,18 @@ var Convert = {
|
||||
"Barn (b)" : 1e-28,
|
||||
"Kilobarn (kb)" : 1e-25,
|
||||
"Megabarn (Mb)" : 1e-22,
|
||||
|
||||
|
||||
"Planck area" : 2.6e-70,
|
||||
"Shed" : 1e-52,
|
||||
"Outhouse" : 1e-34,
|
||||
|
||||
|
||||
// Comparisons
|
||||
"Washington D.C." : 176119191.502848,
|
||||
"Isle of Wight" : 380000000,
|
||||
"Wales" : 20779000000,
|
||||
"Texas" : 696241000000,
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Convert area operation.
|
||||
*
|
||||
@@ -228,12 +228,12 @@ var Convert = {
|
||||
run_area: function (input, args) {
|
||||
var input_units = args[0],
|
||||
output_units = args[1];
|
||||
|
||||
|
||||
input = input * Convert.AREA_FACTOR[input_units];
|
||||
return input / Convert.AREA_FACTOR[output_units];
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -274,7 +274,7 @@ var Convert = {
|
||||
"Exagram (Eg)" : 1e18,
|
||||
"Zettagram (Zg)" : 1e21,
|
||||
"Yottagram (Yg)" : 1e24,
|
||||
|
||||
|
||||
// Imperial Avoirdupois
|
||||
"Grain (gr)" : 64.79891e-3,
|
||||
"Dram (dr)" : 1.7718451953125,
|
||||
@@ -288,14 +288,14 @@ var Convert = {
|
||||
"Imperial hundredweight (cwt)" : 50.80234544e3,
|
||||
"US ton (t)" : 907.18474e3,
|
||||
"Imperial ton (t)" : 1016.0469088e3,
|
||||
|
||||
|
||||
// Imperial Troy
|
||||
"Pennyweight (dwt)" : 1.55517384,
|
||||
"Troy dram (dr t)" : 3.8879346,
|
||||
"Troy ounce (oz t)" : 31.1034768,
|
||||
"Troy pound (lb t)" : 373.2417216,
|
||||
"Mark" : 248.8278144,
|
||||
|
||||
|
||||
// Archaic
|
||||
"Wey" : 76.5e3,
|
||||
"Wool wey" : 101.7e3,
|
||||
@@ -308,7 +308,7 @@ var Convert = {
|
||||
"Gunpowder last" : 1090e3,
|
||||
"Picul" : 60.478982e3,
|
||||
"Rice last" : 1200e3,
|
||||
|
||||
|
||||
// Comparisons
|
||||
"Big Ben (14 tonnes)" : 14e6,
|
||||
"Blue whale (180 tonnes)" : 180e6,
|
||||
@@ -317,7 +317,7 @@ var Convert = {
|
||||
"RMS Titanic (52,000 tonnes)" : 52000e6,
|
||||
"Great Pyramid of Giza (6,000,000 tonnes)" : 6e12,
|
||||
"Earth's oceans (1.4 yottagrams)" : 1.4e24,
|
||||
|
||||
|
||||
// Astronomical
|
||||
"A teaspoon of neutron star (5,500 million tonnes)" : 5.5e15,
|
||||
"Lunar mass (ML)" : 7.342e25,
|
||||
@@ -328,7 +328,7 @@ var Convert = {
|
||||
"Milky Way galaxy (1.2 x 10^42 kgs)" : 1.2e45,
|
||||
"The observable universe (1.45 x 10^53 kgs)" : 1.45e56,
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Convert mass operation.
|
||||
*
|
||||
@@ -339,12 +339,12 @@ var Convert = {
|
||||
run_mass: function (input, args) {
|
||||
var input_units = args[0],
|
||||
output_units = args[1];
|
||||
|
||||
|
||||
input = input * Convert.MASS_FACTOR[input_units];
|
||||
return input / Convert.MASS_FACTOR[output_units];
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -363,11 +363,11 @@ var Convert = {
|
||||
// Metric
|
||||
"Metres per second (m/s)" : 1,
|
||||
"Kilometres per hour (km/h)" : 0.2778,
|
||||
|
||||
|
||||
// Imperial
|
||||
"Miles per hour (mph)" : 0.44704,
|
||||
"Knots (kn)" : 0.5144,
|
||||
|
||||
|
||||
// Comparisons
|
||||
"Human hair growth rate" : 4.8e-9,
|
||||
"Bamboo growth rate" : 1.4e-5,
|
||||
@@ -378,7 +378,7 @@ var Convert = {
|
||||
"SR-71 Blackbird" : 981,
|
||||
"Space Shuttle" : 1400,
|
||||
"International Space Station" : 7700,
|
||||
|
||||
|
||||
// Scientific
|
||||
"Sound in standard atmosphere" : 340.3,
|
||||
"Sound in water" : 1500,
|
||||
@@ -393,7 +393,7 @@ var Convert = {
|
||||
"Signal in an optical fibre (0.667c)" : 200000000,
|
||||
"Light (c)" : 299792458,
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Convert speed operation.
|
||||
*
|
||||
@@ -404,9 +404,9 @@ var Convert = {
|
||||
run_speed: function (input, args) {
|
||||
var input_units = args[0],
|
||||
output_units = args[1];
|
||||
|
||||
|
||||
input = input * Convert.SPEED_FACTOR[input_units];
|
||||
return input / Convert.SPEED_FACTOR[output_units];
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
@@ -30,16 +30,16 @@ var DateTime = {
|
||||
|
||||
input = parseFloat(input);
|
||||
|
||||
if (units == "Seconds (s)") {
|
||||
if (units === "Seconds (s)") {
|
||||
d = moment.unix(input);
|
||||
return d.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss") + " UTC";
|
||||
} else if (units == "Milliseconds (ms)") {
|
||||
} else if (units === "Milliseconds (ms)") {
|
||||
d = moment(input);
|
||||
return d.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS") + " UTC";
|
||||
} else if (units == "Microseconds (μs)") {
|
||||
} else if (units === "Microseconds (μs)") {
|
||||
d = moment(input / 1000);
|
||||
return d.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS") + " UTC";
|
||||
} else if (units == "Nanoseconds (ns)") {
|
||||
} else if (units === "Nanoseconds (ns)") {
|
||||
d = moment(input / 1000000);
|
||||
return d.tz("UTC").format("ddd D MMMM YYYY HH:mm:ss.SSS") + " UTC";
|
||||
} else {
|
||||
@@ -59,13 +59,13 @@ var DateTime = {
|
||||
var units = args[0],
|
||||
d = moment(input);
|
||||
|
||||
if (units == "Seconds (s)") {
|
||||
if (units === "Seconds (s)") {
|
||||
return d.unix();
|
||||
} else if (units == "Milliseconds (ms)") {
|
||||
} else if (units === "Milliseconds (ms)") {
|
||||
return d.valueOf();
|
||||
} else if (units == "Microseconds (μs)") {
|
||||
} else if (units === "Microseconds (μs)") {
|
||||
return d.valueOf() * 1000;
|
||||
} else if (units == "Nanoseconds (ns)") {
|
||||
} else if (units === "Nanoseconds (ns)") {
|
||||
return d.valueOf() * 1000000;
|
||||
} else {
|
||||
throw "Unrecognised unit";
|
||||
@@ -139,7 +139,7 @@ var DateTime = {
|
||||
|
||||
try {
|
||||
date = moment.tz(input, input_format, input_timezone);
|
||||
if (!date || date.format() == "Invalid date") throw Error;
|
||||
if (!date || date.format() === "Invalid date") throw Error;
|
||||
} catch(err) {
|
||||
return "Invalid format.\n\n" + DateTime.FORMAT_EXAMPLES;
|
||||
}
|
||||
@@ -163,7 +163,7 @@ var DateTime = {
|
||||
|
||||
try {
|
||||
date = moment.tz(input, input_format, input_timezone);
|
||||
if (!date || date.format() == "Invalid date") throw Error;
|
||||
if (!date || date.format() === "Invalid date") throw Error;
|
||||
} catch(err) {
|
||||
return "Invalid format.\n\n" + DateTime.FORMAT_EXAMPLES;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ var Extract = {
|
||||
total = 0,
|
||||
match;
|
||||
|
||||
while (!!(match = search_regex.exec(input))) {
|
||||
while ((match = search_regex.exec(input))) {
|
||||
if (remove_regex && remove_regex.test(match[0]))
|
||||
continue;
|
||||
total++;
|
||||
|
||||
+151
-151
@@ -18,28 +18,28 @@ var FileType = {
|
||||
*/
|
||||
run_detect: function(input, args) {
|
||||
var type = FileType._magic_type(input);
|
||||
|
||||
|
||||
if (!type) {
|
||||
return "Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?";
|
||||
} else {
|
||||
var output = "File extension: " + type.ext + "\n" +
|
||||
"MIME type: " + type.mime;
|
||||
|
||||
|
||||
if (type.desc && type.desc.length) {
|
||||
output += "\nDescription: " + type.desc;
|
||||
}
|
||||
|
||||
|
||||
return output;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
IGNORE_COMMON_BYTE_SEQUENCES: true,
|
||||
|
||||
|
||||
/**
|
||||
* Scan for Embedded Files operation.
|
||||
*
|
||||
@@ -54,7 +54,7 @@ var FileType = {
|
||||
common_exts = ["ico", "ttf", ""],
|
||||
num_found = 0,
|
||||
num_common_found = 0;
|
||||
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
type = FileType._magic_type(input.slice(i));
|
||||
if (type) {
|
||||
@@ -66,31 +66,31 @@ var FileType = {
|
||||
output += "\nOffset " + i + " (0x" + Utils.hex(i) + "):\n" +
|
||||
" File extension: " + type.ext + "\n" +
|
||||
" MIME type: " + type.mime + "\n";
|
||||
|
||||
|
||||
if (type.desc && type.desc.length) {
|
||||
output += " Description: " + type.desc + "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (num_found === 0) {
|
||||
output += "\nNo embedded files were found.";
|
||||
}
|
||||
|
||||
|
||||
if (num_common_found > 0) {
|
||||
output += "\n\n" + num_common_found;
|
||||
output += num_common_found == 1 ?
|
||||
output += num_common_found === 1 ?
|
||||
" file type was detected that has a common byte sequence. This is likely to be a false positive." :
|
||||
" file types were detected that have common byte sequences. These are likely to be false positives.";
|
||||
" file types were detected that have common byte sequences. These are likely to be false positives.";
|
||||
output += " Run this operation with the 'Ignore common byte sequences' option unchecked to see details.";
|
||||
}
|
||||
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Given a buffer, detects magic byte sequences at specific positions and returns the
|
||||
* Given a buffer, detects magic byte sequences at specific positions and returns the
|
||||
* extension and mime type.
|
||||
*
|
||||
* @private
|
||||
@@ -107,416 +107,416 @@ var FileType = {
|
||||
|
||||
if (buf[0] === 0xFF && buf[1] === 0xD8 && buf[2] === 0xFF) {
|
||||
return {
|
||||
ext: 'jpg',
|
||||
mime: 'image/jpeg'
|
||||
ext: "jpg",
|
||||
mime: "image/jpeg"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x89 && buf[1] === 0x50 && buf[2] === 0x4E && buf[3] === 0x47) {
|
||||
return {
|
||||
ext: 'png',
|
||||
mime: 'image/png'
|
||||
ext: "png",
|
||||
mime: "image/png"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x47 && buf[1] === 0x49 && buf[2] === 0x46) {
|
||||
return {
|
||||
ext: 'gif',
|
||||
mime: 'image/gif'
|
||||
ext: "gif",
|
||||
mime: "image/gif"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[8] === 0x57 && buf[9] === 0x45 && buf[10] === 0x42 && buf[11] === 0x50) {
|
||||
return {
|
||||
ext: 'webp',
|
||||
mime: 'image/webp'
|
||||
ext: "webp",
|
||||
mime: "image/webp"
|
||||
};
|
||||
}
|
||||
|
||||
// needs to be before `tif` check
|
||||
if (((buf[0] === 0x49 && buf[1] === 0x49 && buf[2] === 0x2A && buf[3] === 0x0) || (buf[0] === 0x4D && buf[1] === 0x4D && buf[2] === 0x0 && buf[3] === 0x2A)) && buf[8] === 0x43 && buf[9] === 0x52) {
|
||||
return {
|
||||
ext: 'cr2',
|
||||
mime: 'image/x-canon-cr2'
|
||||
ext: "cr2",
|
||||
mime: "image/x-canon-cr2"
|
||||
};
|
||||
}
|
||||
|
||||
if ((buf[0] === 0x49 && buf[1] === 0x49 && buf[2] === 0x2A && buf[3] === 0x0) || (buf[0] === 0x4D && buf[1] === 0x4D && buf[2] === 0x0 && buf[3] === 0x2A)) {
|
||||
return {
|
||||
ext: 'tif',
|
||||
mime: 'image/tiff'
|
||||
ext: "tif",
|
||||
mime: "image/tiff"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x42 && buf[1] === 0x4D) {
|
||||
return {
|
||||
ext: 'bmp',
|
||||
mime: 'image/bmp'
|
||||
ext: "bmp",
|
||||
mime: "image/bmp"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x49 && buf[1] === 0x49 && buf[2] === 0xBC) {
|
||||
return {
|
||||
ext: 'jxr',
|
||||
mime: 'image/vnd.ms-photo'
|
||||
ext: "jxr",
|
||||
mime: "image/vnd.ms-photo"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x38 && buf[1] === 0x42 && buf[2] === 0x50 && buf[3] === 0x53) {
|
||||
return {
|
||||
ext: 'psd',
|
||||
mime: 'image/vnd.adobe.photoshop'
|
||||
ext: "psd",
|
||||
mime: "image/vnd.adobe.photoshop"
|
||||
};
|
||||
}
|
||||
|
||||
// needs to be before `zip` check
|
||||
if (buf[0] === 0x50 && buf[1] === 0x4B && buf[2] === 0x3 && buf[3] === 0x4 && buf[30] === 0x6D && buf[31] === 0x69 && buf[32] === 0x6D && buf[33] === 0x65 && buf[34] === 0x74 && buf[35] === 0x79 && buf[36] === 0x70 && buf[37] === 0x65 && buf[38] === 0x61 && buf[39] === 0x70 && buf[40] === 0x70 && buf[41] === 0x6C && buf[42] === 0x69 && buf[43] === 0x63 && buf[44] === 0x61 && buf[45] === 0x74 && buf[46] === 0x69 && buf[47] === 0x6F && buf[48] === 0x6E && buf[49] === 0x2F && buf[50] === 0x65 && buf[51] === 0x70 && buf[52] === 0x75 && buf[53] === 0x62 && buf[54] === 0x2B && buf[55] === 0x7A && buf[56] === 0x69 && buf[57] === 0x70) {
|
||||
return {
|
||||
ext: 'epub',
|
||||
mime: 'application/epub+zip'
|
||||
ext: "epub",
|
||||
mime: "application/epub+zip"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x50 && buf[1] === 0x4B && (buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) && (buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8)) {
|
||||
return {
|
||||
ext: 'zip',
|
||||
mime: 'application/zip'
|
||||
ext: "zip",
|
||||
mime: "application/zip"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[257] === 0x75 && buf[258] === 0x73 && buf[259] === 0x74 && buf[260] === 0x61 && buf[261] === 0x72) {
|
||||
return {
|
||||
ext: 'tar',
|
||||
mime: 'application/x-tar'
|
||||
ext: "tar",
|
||||
mime: "application/x-tar"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x52 && buf[1] === 0x61 && buf[2] === 0x72 && buf[3] === 0x21 && buf[4] === 0x1A && buf[5] === 0x7 && (buf[6] === 0x0 || buf[6] === 0x1)) {
|
||||
return {
|
||||
ext: 'rar',
|
||||
mime: 'application/x-rar-compressed'
|
||||
ext: "rar",
|
||||
mime: "application/x-rar-compressed"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x1F && buf[1] === 0x8B && buf[2] === 0x8) {
|
||||
return {
|
||||
ext: 'gz',
|
||||
mime: 'application/gzip'
|
||||
ext: "gz",
|
||||
mime: "application/gzip"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x42 && buf[1] === 0x5A && buf[2] === 0x68) {
|
||||
return {
|
||||
ext: 'bz2',
|
||||
mime: 'application/x-bzip2'
|
||||
ext: "bz2",
|
||||
mime: "application/x-bzip2"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x37 && buf[1] === 0x7A && buf[2] === 0xBC && buf[3] === 0xAF && buf[4] === 0x27 && buf[5] === 0x1C) {
|
||||
return {
|
||||
ext: '7z',
|
||||
mime: 'application/x-7z-compressed'
|
||||
ext: "7z",
|
||||
mime: "application/x-7z-compressed"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x78 && buf[1] === 0x01) {
|
||||
return {
|
||||
ext: 'dmg',
|
||||
mime: 'application/x-apple-diskimage'
|
||||
ext: "dmg",
|
||||
mime: "application/x-apple-diskimage"
|
||||
};
|
||||
}
|
||||
|
||||
if ((buf[0] === 0x0 && buf[1] === 0x0 && buf[2] === 0x0 && (buf[3] === 0x18 || buf[3] === 0x20) && buf[4] === 0x66 && buf[5] === 0x74 && buf[6] === 0x79 && buf[7] === 0x70) || (buf[0] === 0x33 && buf[1] === 0x67 && buf[2] === 0x70 && buf[3] === 0x35) || (buf[0] === 0x0 && buf[1] === 0x0 && buf[2] === 0x0 && buf[3] === 0x1C && buf[4] === 0x66 && buf[5] === 0x74 && buf[6] === 0x79 && buf[7] === 0x70 && buf[8] === 0x6D && buf[9] === 0x70 && buf[10] === 0x34 && buf[11] === 0x32 && buf[16] === 0x6D && buf[17] === 0x70 && buf[18] === 0x34 && buf[19] === 0x31 && buf[20] === 0x6D && buf[21] === 0x70 && buf[22] === 0x34 && buf[23] === 0x32 && buf[24] === 0x69 && buf[25] === 0x73 && buf[26] === 0x6F && buf[27] === 0x6D)) {
|
||||
return {
|
||||
ext: 'mp4',
|
||||
mime: 'video/mp4'
|
||||
ext: "mp4",
|
||||
mime: "video/mp4"
|
||||
};
|
||||
}
|
||||
|
||||
if ((buf[0] === 0x0 && buf[1] === 0x0 && buf[2] === 0x0 && buf[3] === 0x1C && buf[4] === 0x66 && buf[5] === 0x74 && buf[6] === 0x79 && buf[7] === 0x70 && buf[8] === 0x4D && buf[9] === 0x34 && buf[10] === 0x56)) {
|
||||
return {
|
||||
ext: 'm4v',
|
||||
mime: 'video/x-m4v'
|
||||
ext: "m4v",
|
||||
mime: "video/x-m4v"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x4D && buf[1] === 0x54 && buf[2] === 0x68 && buf[3] === 0x64) {
|
||||
return {
|
||||
ext: 'mid',
|
||||
mime: 'audio/midi'
|
||||
ext: "mid",
|
||||
mime: "audio/midi"
|
||||
};
|
||||
}
|
||||
|
||||
// needs to be before the `webm` check
|
||||
if (buf[31] === 0x6D && buf[32] === 0x61 && buf[33] === 0x74 && buf[34] === 0x72 && buf[35] === 0x6f && buf[36] === 0x73 && buf[37] === 0x6B && buf[38] === 0x61) {
|
||||
return {
|
||||
ext: 'mkv',
|
||||
mime: 'video/x-matroska'
|
||||
ext: "mkv",
|
||||
mime: "video/x-matroska"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x1A && buf[1] === 0x45 && buf[2] === 0xDF && buf[3] === 0xA3) {
|
||||
return {
|
||||
ext: 'webm',
|
||||
mime: 'video/webm'
|
||||
ext: "webm",
|
||||
mime: "video/webm"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x0 && buf[1] === 0x0 && buf[2] === 0x0 && buf[3] === 0x14 && buf[4] === 0x66 && buf[5] === 0x74 && buf[6] === 0x79 && buf[7] === 0x70) {
|
||||
return {
|
||||
ext: 'mov',
|
||||
mime: 'video/quicktime'
|
||||
ext: "mov",
|
||||
mime: "video/quicktime"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x52 && buf[1] === 0x49 && buf[2] === 0x46 && buf[3] === 0x46 && buf[8] === 0x41 && buf[9] === 0x56 && buf[10] === 0x49) {
|
||||
return {
|
||||
ext: 'avi',
|
||||
mime: 'video/x-msvideo'
|
||||
ext: "avi",
|
||||
mime: "video/x-msvideo"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x30 && buf[1] === 0x26 && buf[2] === 0xB2 && buf[3] === 0x75 && buf[4] === 0x8E && buf[5] === 0x66 && buf[6] === 0xCF && buf[7] === 0x11 && buf[8] === 0xA6 && buf[9] === 0xD9) {
|
||||
return {
|
||||
ext: 'wmv',
|
||||
mime: 'video/x-ms-wmv'
|
||||
ext: "wmv",
|
||||
mime: "video/x-ms-wmv"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x0 && buf[1] === 0x0 && buf[2] === 0x1 && buf[3].toString(16)[0] === 'b') {
|
||||
if (buf[0] === 0x0 && buf[1] === 0x0 && buf[2] === 0x1 && buf[3].toString(16)[0] === "b") {
|
||||
return {
|
||||
ext: 'mpg',
|
||||
mime: 'video/mpeg'
|
||||
ext: "mpg",
|
||||
mime: "video/mpeg"
|
||||
};
|
||||
}
|
||||
|
||||
if ((buf[0] === 0x49 && buf[1] === 0x44 && buf[2] === 0x33) || (buf[0] === 0xFF && buf[1] === 0xfb)) {
|
||||
return {
|
||||
ext: 'mp3',
|
||||
mime: 'audio/mpeg'
|
||||
ext: "mp3",
|
||||
mime: "audio/mpeg"
|
||||
};
|
||||
}
|
||||
|
||||
if ((buf[4] === 0x66 && buf[5] === 0x74 && buf[6] === 0x79 && buf[7] === 0x70 && buf[8] === 0x4D && buf[9] === 0x34 && buf[10] === 0x41) || (buf[0] === 0x4D && buf[1] === 0x34 && buf[2] === 0x41 && buf[3] === 0x20)) {
|
||||
return {
|
||||
ext: 'm4a',
|
||||
mime: 'audio/m4a'
|
||||
ext: "m4a",
|
||||
mime: "audio/m4a"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x4F && buf[1] === 0x67 && buf[2] === 0x67 && buf[3] === 0x53) {
|
||||
return {
|
||||
ext: 'ogg',
|
||||
mime: 'audio/ogg'
|
||||
ext: "ogg",
|
||||
mime: "audio/ogg"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x66 && buf[1] === 0x4C && buf[2] === 0x61 && buf[3] === 0x43) {
|
||||
return {
|
||||
ext: 'flac',
|
||||
mime: 'audio/x-flac'
|
||||
ext: "flac",
|
||||
mime: "audio/x-flac"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x52 && buf[1] === 0x49 && buf[2] === 0x46 && buf[3] === 0x46 && buf[8] === 0x57 && buf[9] === 0x41 && buf[10] === 0x56 && buf[11] === 0x45) {
|
||||
return {
|
||||
ext: 'wav',
|
||||
mime: 'audio/x-wav'
|
||||
ext: "wav",
|
||||
mime: "audio/x-wav"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x23 && buf[1] === 0x21 && buf[2] === 0x41 && buf[3] === 0x4D && buf[4] === 0x52 && buf[5] === 0x0A) {
|
||||
return {
|
||||
ext: 'amr',
|
||||
mime: 'audio/amr'
|
||||
ext: "amr",
|
||||
mime: "audio/amr"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x25 && buf[1] === 0x50 && buf[2] === 0x44 && buf[3] === 0x46) {
|
||||
return {
|
||||
ext: 'pdf',
|
||||
mime: 'application/pdf'
|
||||
ext: "pdf",
|
||||
mime: "application/pdf"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x4D && buf[1] === 0x5A) {
|
||||
return {
|
||||
ext: 'exe',
|
||||
mime: 'application/x-msdownload'
|
||||
ext: "exe",
|
||||
mime: "application/x-msdownload"
|
||||
};
|
||||
}
|
||||
|
||||
if ((buf[0] === 0x43 || buf[0] === 0x46) && buf[1] === 0x57 && buf[2] === 0x53) {
|
||||
return {
|
||||
ext: 'swf',
|
||||
mime: 'application/x-shockwave-flash'
|
||||
ext: "swf",
|
||||
mime: "application/x-shockwave-flash"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x7B && buf[1] === 0x5C && buf[2] === 0x72 && buf[3] === 0x74 && buf[4] === 0x66) {
|
||||
return {
|
||||
ext: 'rtf',
|
||||
mime: 'application/rtf'
|
||||
ext: "rtf",
|
||||
mime: "application/rtf"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x77 && buf[1] === 0x4F && buf[2] === 0x46 && buf[3] === 0x46 && buf[4] === 0x00 && buf[5] === 0x01 && buf[6] === 0x00 && buf[7] === 0x00) {
|
||||
return {
|
||||
ext: 'woff',
|
||||
mime: 'application/font-woff'
|
||||
ext: "woff",
|
||||
mime: "application/font-woff"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x77 && buf[1] === 0x4F && buf[2] === 0x46 && buf[3] === 0x32 && buf[4] === 0x00 && buf[5] === 0x01 && buf[6] === 0x00 && buf[7] === 0x00) {
|
||||
return {
|
||||
ext: 'woff2',
|
||||
mime: 'application/font-woff'
|
||||
ext: "woff2",
|
||||
mime: "application/font-woff"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[34] === 0x4C && buf[35] === 0x50 && ((buf[8] === 0x02 && buf[9] === 0x00 && buf[10] === 0x01) || (buf[8] === 0x01 && buf[9] === 0x00 && buf[10] === 0x00) || (buf[8] === 0x02 && buf[9] === 0x00 && buf[10] === 0x02))) {
|
||||
return {
|
||||
ext: 'eot',
|
||||
mime: 'application/octet-stream'
|
||||
ext: "eot",
|
||||
mime: "application/octet-stream"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x00 && buf[1] === 0x01 && buf[2] === 0x00 && buf[3] === 0x00 && buf[4] === 0x00) {
|
||||
return {
|
||||
ext: 'ttf',
|
||||
mime: 'application/font-sfnt'
|
||||
ext: "ttf",
|
||||
mime: "application/font-sfnt"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x4F && buf[1] === 0x54 && buf[2] === 0x54 && buf[3] === 0x4F && buf[4] === 0x00) {
|
||||
return {
|
||||
ext: 'otf',
|
||||
mime: 'application/font-sfnt'
|
||||
ext: "otf",
|
||||
mime: "application/font-sfnt"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x00 && buf[1] === 0x00 && buf[2] === 0x01 && buf[3] === 0x00) {
|
||||
return {
|
||||
ext: 'ico',
|
||||
mime: 'image/x-icon'
|
||||
ext: "ico",
|
||||
mime: "image/x-icon"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x46 && buf[1] === 0x4C && buf[2] === 0x56 && buf[3] === 0x01) {
|
||||
return {
|
||||
ext: 'flv',
|
||||
mime: 'video/x-flv'
|
||||
ext: "flv",
|
||||
mime: "video/x-flv"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x25 && buf[1] === 0x21) {
|
||||
return {
|
||||
ext: 'ps',
|
||||
mime: 'application/postscript'
|
||||
ext: "ps",
|
||||
mime: "application/postscript"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0xFD && buf[1] === 0x37 && buf[2] === 0x7A && buf[3] === 0x58 && buf[4] === 0x5A && buf[5] === 0x00) {
|
||||
return {
|
||||
ext: 'xz',
|
||||
mime: 'application/x-xz'
|
||||
ext: "xz",
|
||||
mime: "application/x-xz"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x53 && buf[1] === 0x51 && buf[2] === 0x4C && buf[3] === 0x69) {
|
||||
return {
|
||||
ext: 'sqlite',
|
||||
mime: 'application/x-sqlite3'
|
||||
ext: "sqlite",
|
||||
mime: "application/x-sqlite3"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Added by n1474335 [n1474335@gmail.com] from here on
|
||||
// ################################################################## //
|
||||
if ((buf[0] === 0x1F && buf[1] === 0x9D) || (buf[0] === 0x1F && buf[1] === 0xA0)) {
|
||||
return {
|
||||
ext: 'z, tar.z',
|
||||
mime: 'application/x-gtar'
|
||||
ext: "z, tar.z",
|
||||
mime: "application/x-gtar"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0x7F && buf[1] === 0x45 && buf[2] === 0x4C && buf[3] === 0x46) {
|
||||
return {
|
||||
ext: 'none, axf, bin, elf, o, prx, puff, so',
|
||||
mime: 'application/x-executable',
|
||||
desc: 'Executable and Linkable Format file. No standard file extension.'
|
||||
ext: "none, axf, bin, elf, o, prx, puff, so",
|
||||
mime: "application/x-executable",
|
||||
desc: "Executable and Linkable Format file. No standard file extension."
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0xCA && buf[1] === 0xFE && buf[2] === 0xBA && buf[3] === 0xBE) {
|
||||
return {
|
||||
ext: 'class',
|
||||
mime: 'application/java-vm'
|
||||
ext: "class",
|
||||
mime: "application/java-vm"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0xEF && buf[1] === 0xBB && buf[2] === 0xBF) {
|
||||
return {
|
||||
ext: 'txt',
|
||||
mime: 'text/plain',
|
||||
desc: 'UTF-8 encoded Unicode byte order mark detected, commonly but not exclusively seen in text files.'
|
||||
ext: "txt",
|
||||
mime: "text/plain",
|
||||
desc: "UTF-8 encoded Unicode byte order mark detected, commonly but not exclusively seen in text files."
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Must be before Little-endian UTF-16 BOM
|
||||
if (buf[0] === 0xFF && buf[1] === 0xFE && buf[2] === 0x00 && buf[3] === 0x00) {
|
||||
return {
|
||||
ext: '',
|
||||
mime: '',
|
||||
desc: 'Little-endian UTF-32 encoded Unicode byte order mark detected.'
|
||||
ext: "",
|
||||
mime: "",
|
||||
desc: "Little-endian UTF-32 encoded Unicode byte order mark detected."
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0xFF && buf[1] === 0xFE) {
|
||||
return {
|
||||
ext: '',
|
||||
mime: '',
|
||||
desc: 'Little-endian UTF-16 encoded Unicode byte order mark detected.'
|
||||
ext: "",
|
||||
mime: "",
|
||||
desc: "Little-endian UTF-16 encoded Unicode byte order mark detected."
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if ((buf[0x8001] === 0x43 && buf[0x8002] === 0x44 && buf[0x8003] === 0x30 && buf[0x8004] === 0x30 && buf[0x8005] === 0x31) ||
|
||||
(buf[0x8801] === 0x43 && buf[0x8802] === 0x44 && buf[0x8803] === 0x30 && buf[0x8804] === 0x30 && buf[0x8805] === 0x31) ||
|
||||
(buf[0x9001] === 0x43 && buf[0x9002] === 0x44 && buf[0x9003] === 0x30 && buf[0x9004] === 0x30 && buf[0x9005] === 0x31)) {
|
||||
return {
|
||||
ext: 'iso',
|
||||
mime: 'application/octet-stream',
|
||||
desc: 'ISO 9660 CD/DVD image file'
|
||||
ext: "iso",
|
||||
mime: "application/octet-stream",
|
||||
desc: "ISO 9660 CD/DVD image file"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0xD0 && buf[1] === 0xCF && buf[2] === 0x11 && buf[3] === 0xE0 && buf[4] === 0xA1 && buf[5] === 0xB1 && buf[6] === 0x1A && buf[7] === 0xE1) {
|
||||
return {
|
||||
ext: 'doc, xls, ppt',
|
||||
mime: 'application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint',
|
||||
desc: 'Microsoft Office documents'
|
||||
ext: "doc, xls, ppt",
|
||||
mime: "application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint",
|
||||
desc: "Microsoft Office documents"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0x64 && buf[1] === 0x65 && buf[2] === 0x78 && buf[3] === 0x0A && buf[4] === 0x30 && buf[5] === 0x33 && buf[6] === 0x35 && buf[7] === 0x00) {
|
||||
return {
|
||||
ext: 'dex',
|
||||
mime: 'application/octet-stream',
|
||||
desc: 'Dalvik Executable (Android)'
|
||||
ext: "dex",
|
||||
mime: "application/octet-stream",
|
||||
desc: "Dalvik Executable (Android)"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (buf[0] === 0x4B && buf[1] === 0x44 && buf[2] === 0x4D) {
|
||||
return {
|
||||
ext: 'vmdk',
|
||||
mime: 'application/vmdk, application/x-virtualbox-vmdk'
|
||||
ext: "vmdk",
|
||||
mime: "application/vmdk, application/x-virtualbox-vmdk"
|
||||
};
|
||||
}
|
||||
|
||||
if (buf[0] === 0x43 && buf[1] === 0x72 && buf[2] === 0x32 && buf[3] == 0x34) {
|
||||
|
||||
if (buf[0] === 0x43 && buf[1] === 0x72 && buf[2] === 0x32 && buf[3] === 0x34) {
|
||||
return {
|
||||
ext: 'crx',
|
||||
mime: 'application/crx',
|
||||
desc: 'Google Chrome extension or packaged app'
|
||||
ext: "crx",
|
||||
mime: "application/crx",
|
||||
desc: "Google Chrome extension or packaged app"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+46
-46
@@ -19,7 +19,7 @@ var HTML = {
|
||||
* @default
|
||||
*/
|
||||
CONVERT_OPTIONS: ["Named entities where possible", "Numeric entities", "Hex entities"],
|
||||
|
||||
|
||||
/**
|
||||
* To HTML Entity operation.
|
||||
*
|
||||
@@ -29,12 +29,12 @@ var HTML = {
|
||||
*/
|
||||
run_to_entity: function(input, args) {
|
||||
var convert_all = args[0],
|
||||
numeric = args[1] == "Numeric entities",
|
||||
hexa = args[1] == "Hex entities";
|
||||
|
||||
numeric = args[1] === "Numeric entities",
|
||||
hexa = args[1] === "Hex entities";
|
||||
|
||||
var charcodes = Utils.str_to_charcode(input);
|
||||
var output = "";
|
||||
|
||||
|
||||
for (var i = 0; i < charcodes.length; i++) {
|
||||
if (convert_all && numeric) {
|
||||
output += "&#" + charcodes[i] + ";";
|
||||
@@ -64,8 +64,8 @@ var HTML = {
|
||||
}
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* From HTML Entity operation.
|
||||
*
|
||||
@@ -78,40 +78,40 @@ var HTML = {
|
||||
output = "",
|
||||
m,
|
||||
i = 0;
|
||||
|
||||
while (!!(m = regex.exec(input))) {
|
||||
|
||||
while ((m = regex.exec(input))) {
|
||||
// Add up to match
|
||||
for (; i < m.index;)
|
||||
output += input[i++];
|
||||
|
||||
|
||||
// Add match
|
||||
var bite = HTML._entity_to_byte[m[1]];
|
||||
if (bite) {
|
||||
output += Utils.chr(bite);
|
||||
} else if (!bite && m[1][0] == "#" && m[1].length > 1 && /^#\d{1,5}$/.test(m[1])) {
|
||||
} else if (!bite && m[1][0] === "#" && m[1].length > 1 && /^#\d{1,5}$/.test(m[1])) {
|
||||
// Numeric entity (e.g. )
|
||||
var num = m[1].slice(1,m[1].length);
|
||||
var num = m[1].slice(1, m[1].length);
|
||||
output += Utils.chr(parseInt(num, 10));
|
||||
} else if (!bite && m[1][0] == "#" && m[1].length > 3 && /^#x[\dA-F]{2,8}$/i.test(m[1])) {
|
||||
} else if (!bite && m[1][0] === "#" && m[1].length > 3 && /^#x[\dA-F]{2,8}$/i.test(m[1])) {
|
||||
// Hex entity (e.g. :)
|
||||
var hex = m[1].slice(2,m[1].length);
|
||||
var hex = m[1].slice(2, m[1].length);
|
||||
output += Utils.chr(parseInt(hex, 16));
|
||||
} else {
|
||||
// Not a valid entity, print as normal
|
||||
for (; i < regex.lastIndex;)
|
||||
output += input[i++];
|
||||
}
|
||||
|
||||
|
||||
i = regex.lastIndex;
|
||||
}
|
||||
// Add all after final match
|
||||
for (; i < input.length;)
|
||||
output += input[i++];
|
||||
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
@@ -122,7 +122,7 @@ var HTML = {
|
||||
* @default
|
||||
*/
|
||||
REMOVE_LINE_BREAKS: true,
|
||||
|
||||
|
||||
/**
|
||||
* Strip HTML tags operation.
|
||||
*
|
||||
@@ -133,22 +133,22 @@ var HTML = {
|
||||
run_strip_tags: function(input, args) {
|
||||
var remove_indentation = args[0],
|
||||
remove_line_breaks = args[1];
|
||||
|
||||
|
||||
input = Utils.strip_html_tags(input);
|
||||
|
||||
|
||||
if (remove_indentation) {
|
||||
input = input.replace(/\n[ \f\t]+/g, "\n");
|
||||
}
|
||||
|
||||
|
||||
if (remove_line_breaks) {
|
||||
input = input.replace(/^\s*\n/, "") // first line
|
||||
.replace(/(\n\s*){2,}/g, "\n"); // all others
|
||||
}
|
||||
|
||||
|
||||
return input;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Parse colour code operation.
|
||||
*
|
||||
@@ -159,31 +159,31 @@ var HTML = {
|
||||
run_parse_colour_code: function(input, args) {
|
||||
var m = null,
|
||||
r = 0, g = 0, b = 0, a = 1;
|
||||
|
||||
|
||||
// Read in the input
|
||||
if (!!(m = input.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))) {
|
||||
if ((m = input.match(/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i))) {
|
||||
// Hex - #d9edf7
|
||||
r = parseInt(m[1], 16);
|
||||
g = parseInt(m[2], 16);
|
||||
b = parseInt(m[3], 16);
|
||||
} else if (!!(m = input.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))) {
|
||||
} else if ((m = input.match(/rgba?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)(?:,\s?(\d(?:\.\d+)?))?\)/i))) {
|
||||
// RGB or RGBA - rgb(217,237,247) or rgba(217,237,247,1)
|
||||
r = parseFloat(m[1]);
|
||||
g = parseFloat(m[2]);
|
||||
b = parseFloat(m[3]);
|
||||
a = m[4] ? parseFloat(m[4]) : 1;
|
||||
} else if (!!(m = input.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i))) {
|
||||
} else if ((m = input.match(/hsla?\((\d{1,3}(?:\.\d+)?),\s?(\d{1,3}(?:\.\d+)?)%,\s?(\d{1,3}(?:\.\d+)?)%(?:,\s?(\d(?:\.\d+)?))?\)/i))) {
|
||||
// HSL or HSLA - hsl(200, 65%, 91%) or hsla(200, 65%, 91%, 1)
|
||||
var h_ = parseFloat(m[1]) / 360,
|
||||
s_ = parseFloat(m[2]) / 100,
|
||||
l_ = parseFloat(m[3]) / 100,
|
||||
rgb_ = HTML._hsl_to_rgb(h_, s_, l_);
|
||||
|
||||
|
||||
r = rgb_[0];
|
||||
g = rgb_[1];
|
||||
b = rgb_[2];
|
||||
a = m[4] ? parseFloat(m[4]) : 1;
|
||||
} else if (!!(m = input.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i))) {
|
||||
} else if ((m = input.match(/cmyk\((\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?),\s?(\d(?:\.\d+)?)\)/i))) {
|
||||
// CMYK - cmyk(0.12, 0.04, 0.00, 0.03)
|
||||
var c_ = parseFloat(m[1]),
|
||||
m_ = parseFloat(m[2]),
|
||||
@@ -194,21 +194,21 @@ var HTML = {
|
||||
g = Math.round(255 * (1 - m_) * (1 - k_));
|
||||
b = Math.round(255 * (1 - y_) * (1 - k_));
|
||||
}
|
||||
|
||||
|
||||
var hsl_ = HTML._rgb_to_hsl(r, g, b),
|
||||
h = Math.round(hsl_[0] * 360),
|
||||
s = Math.round(hsl_[1] * 100),
|
||||
l = Math.round(hsl_[2] * 100),
|
||||
k = 1 - Math.max(r/255, g/255, b/255),
|
||||
c = (1 - r/255 - k) / (1 - k),
|
||||
m = (1 - g/255 - k) / (1 - k), // jshint ignore:line
|
||||
m = (1 - g/255 - k) / (1 - k), // eslint-disable-line no-redeclare
|
||||
y = (1 - b/255 - k) / (1 - k);
|
||||
|
||||
|
||||
c = isNaN(c) ? "0" : c.toFixed(2);
|
||||
m = isNaN(m) ? "0" : m.toFixed(2);
|
||||
y = isNaN(y) ? "0" : y.toFixed(2);
|
||||
k = k.toFixed(2);
|
||||
|
||||
|
||||
var hex = "#" +
|
||||
Utils.pad_left(Math.round(r).toString(16), 2) +
|
||||
Utils.pad_left(Math.round(g).toString(16), 2) +
|
||||
@@ -218,9 +218,9 @@ var HTML = {
|
||||
hsl = "hsl(" + h + ", " + s + "%, " + l + "%)",
|
||||
hsla = "hsla(" + h + ", " + s + "%, " + l + "%, " + a + ")",
|
||||
cmyk = "cmyk(" + c + ", " + m + ", " + y + ", " + k + ")";
|
||||
|
||||
|
||||
// Generate output
|
||||
return "<div id='colorpicker' style='display: inline-block'></div>" +
|
||||
return "<div id='colorpicker' style='display: inline-block'></div>" +
|
||||
"Hex: " + hex + "\n" +
|
||||
"RGB: " + rgb + "\n" +
|
||||
"RGBA: " + rgba + "\n" +
|
||||
@@ -241,9 +241,9 @@ var HTML = {
|
||||
});\
|
||||
</script>";
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Converts an HSL color value to RGB. Conversion formula
|
||||
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
||||
@@ -282,8 +282,8 @@ var HTML = {
|
||||
|
||||
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Converts an RGB color value to HSL. Conversion formula
|
||||
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
||||
@@ -319,8 +319,8 @@ var HTML = {
|
||||
|
||||
return [h, s, l];
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Lookup table to translate byte values to their HTML entity codes.
|
||||
*
|
||||
@@ -583,8 +583,8 @@ var HTML = {
|
||||
9829 : "♥",
|
||||
9830 : "♦",
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Lookup table to translate HTML entity codes to their byte values.
|
||||
*
|
||||
|
||||
@@ -58,7 +58,7 @@ var Hexdump = {
|
||||
Utils.pad_right(hexa, (length*(padding+1))) +
|
||||
" |" + Utils.pad_right(Utils.printable(Utils.byte_array_to_chars(buff)), buff.length) + "|\n";
|
||||
|
||||
if (include_final_length && i+buff.length == input.length) {
|
||||
if (include_final_length && i+buff.length === input.length) {
|
||||
output += Utils.hex(i+buff.length, 8) + "\n";
|
||||
}
|
||||
}
|
||||
@@ -79,7 +79,7 @@ var Hexdump = {
|
||||
regex = /^\s*(?:[\dA-F]{4,16}:?)?\s*((?:[\dA-F]{2}\s){1,8}(?:\s|[\dA-F]{2}-)(?:[\dA-F]{2}\s){1,8}|(?:[\dA-F]{2}\s|[\dA-F]{4}\s)+)/igm,
|
||||
block, line;
|
||||
|
||||
while (!!(block = regex.exec(input))) {
|
||||
while ((block = regex.exec(input))) {
|
||||
line = Utils.from_hex(block[1].replace(/-/g, " "));
|
||||
for (var i = 0; i < line.length; i++) {
|
||||
output.push(line[i]);
|
||||
@@ -89,7 +89,7 @@ var Hexdump = {
|
||||
var width = input.indexOf("\n");
|
||||
var w = (width - 13) / 4;
|
||||
// w should be the specified width of the hexdump and therefore a round number
|
||||
if (Math.floor(w) != w || input.indexOf("\r") != -1 || output.indexOf(13) != -1) {
|
||||
if (Math.floor(w) !== w || input.indexOf("\r") !== -1 || output.indexOf(13) !== -1) {
|
||||
app.options.attempt_highlight = false;
|
||||
}
|
||||
return output;
|
||||
@@ -118,14 +118,17 @@ var Hexdump = {
|
||||
|
||||
line = Math.floor(pos[0].end / w);
|
||||
offset = pos[0].end % w;
|
||||
if (offset === 0) { line--; offset = w; }
|
||||
if (offset === 0) {
|
||||
line--;
|
||||
offset = w;
|
||||
}
|
||||
pos[0].end = line*width + 10 + offset*3 - 1;
|
||||
|
||||
// Set up multiple selections for bytes
|
||||
var start_line_num = Math.floor(pos[0].start / width);
|
||||
var end_line_num = Math.floor(pos[0].end / width);
|
||||
|
||||
if (start_line_num == end_line_num) {
|
||||
if (start_line_num === end_line_num) {
|
||||
pos.push(pos[0]);
|
||||
} else {
|
||||
start = pos[0].start;
|
||||
|
||||
+22
-23
@@ -46,13 +46,13 @@ var IP = {
|
||||
ipv6_range_regex = /^\s*(((?=.*::)(?!.*::[^-]+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\4)::|:\b|(?![\dA-F])))|(?!\3\4)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*-\s*(((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\17)::|:\b|(?![\dA-F])))|(?!\16\17)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4}))\s*$/i,
|
||||
match;
|
||||
|
||||
if (!!(match = ipv4_cidr_regex.exec(input))) {
|
||||
if ((match = ipv4_cidr_regex.exec(input))) {
|
||||
return IP._ipv4_cidr_range(match, include_network_info, enumerate_addresses, allow_large_list);
|
||||
} else if (!!(match = ipv4_range_regex.exec(input))) {
|
||||
} else if ((match = ipv4_range_regex.exec(input))) {
|
||||
return IP._ipv4_hyphenated_range(match, include_network_info, enumerate_addresses, allow_large_list);
|
||||
} else if (!!(match = ipv6_cidr_regex.exec(input))) {
|
||||
} else if ((match = ipv6_cidr_regex.exec(input))) {
|
||||
return IP._ipv6_cidr_range(match, include_network_info);
|
||||
} else if (!!(match = ipv6_range_regex.exec(input))) {
|
||||
} else if ((match = ipv6_range_regex.exec(input))) {
|
||||
return IP._ipv6_hyphenated_range(match, include_network_info);
|
||||
} else {
|
||||
return "Invalid input.\n\nEnter either a CIDR range (e.g. 10.0.0.0/24) or a hyphenated range (e.g. 10.0.0.0 - 10.0.1.0). IPv6 also supported.";
|
||||
@@ -82,7 +82,7 @@ var IP = {
|
||||
var match,
|
||||
output = "";
|
||||
|
||||
if (!!(match = IP.IPv6_REGEX.exec(input))) {
|
||||
if ((match = IP.IPv6_REGEX.exec(input))) {
|
||||
var ipv6 = IP._str_to_ipv6(match[1]),
|
||||
longhand = IP._ipv6_to_str(ipv6),
|
||||
shorthand = IP._ipv6_to_str(ipv6, true);
|
||||
@@ -90,11 +90,11 @@ var IP = {
|
||||
output += "Longhand: " + longhand + "\nShorthand: " + shorthand + "\n";
|
||||
|
||||
// Detect reserved addresses
|
||||
if (shorthand == "::") {
|
||||
if (shorthand === "::") {
|
||||
// Unspecified address
|
||||
output += "\nUnspecified address corresponding to 0.0.0.0/32 in IPv4.";
|
||||
output += "\nUnspecified address range: ::/128";
|
||||
} else if (shorthand == "::1") {
|
||||
} else if (shorthand === "::1") {
|
||||
// Loopback address
|
||||
output += "\nLoopback address to the local host corresponding to 127.0.0.1/8 in IPv4.";
|
||||
output += "\nLoopback addresses range: ::1/128";
|
||||
@@ -171,18 +171,18 @@ var IP = {
|
||||
// Benchmarking
|
||||
output += "\nAssigned to the Benchmarking Methodology Working Group (BMWG) for benchmarking IPv6. Corresponds to 198.18.0.0/15 for benchmarking IPv4. See RFC 5180 for more details.";
|
||||
output += "\nBMWG range: 2001:2::/48";
|
||||
} else if (ipv6[0] == 0x2001 && ipv6[1] >= 0x10 && ipv6[1] <= 0x1f) {
|
||||
} else if (ipv6[0] === 0x2001 && ipv6[1] >= 0x10 && ipv6[1] <= 0x1f) {
|
||||
// ORCHIDv1
|
||||
output += "\nDeprecated, previously ORCHIDv1 (Overlay Routable Cryptographic Hash Identifiers).\nORCHIDv1 range: 2001:10::/28\nORCHIDv2 now uses 2001:20::/28.";
|
||||
} else if (ipv6[0] == 0x2001 && ipv6[1] >= 0x20 && ipv6[1] <= 0x2f) {
|
||||
} else if (ipv6[0] === 0x2001 && ipv6[1] >= 0x20 && ipv6[1] <= 0x2f) {
|
||||
// ORCHIDv2
|
||||
output += "\nORCHIDv2 (Overlay Routable Cryptographic Hash Identifiers).\nThese are non-routed IPv6 addresses used for Cryptographic Hash Identifiers.";
|
||||
output += "\nORCHIDv2 range: 2001:20::/28";
|
||||
} else if (ipv6[0] == 0x2001 && ipv6[1] == 0xdb8) {
|
||||
} else if (ipv6[0] === 0x2001 && ipv6[1] === 0xdb8) {
|
||||
// Documentation
|
||||
output += "\nThis is a documentation IPv6 address. This range should be used whenever an example IPv6 address is given or to model networking scenarios. Corresponds to 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 in IPv4.";
|
||||
output += "\nDocumentation range: 2001:db8::/32";
|
||||
} else if (ipv6[0] == 0x2002) {
|
||||
} else if (ipv6[0] === 0x2002) {
|
||||
// 6to4
|
||||
output += "\n6to4 transition IPv6 address detected. See RFC 3056 for more details." +
|
||||
"\n6to4 prefix range: 2002::/16";
|
||||
@@ -241,7 +241,7 @@ var IP = {
|
||||
if (lines[i] === "") continue;
|
||||
var ba_ip = [];
|
||||
|
||||
if (in_format == out_format) {
|
||||
if (in_format === out_format) {
|
||||
output += lines[i] + "\n";
|
||||
continue;
|
||||
}
|
||||
@@ -341,7 +341,7 @@ var IP = {
|
||||
|
||||
// Parse all IPs and add to network dictionary
|
||||
for (var i = 0; i < ips.length; i++) {
|
||||
if (!!(match = IP.IPv4_REGEX.exec(ips[i]))) {
|
||||
if ((match = IP.IPv4_REGEX.exec(ips[i]))) {
|
||||
ip = IP._str_to_ipv4(match[1]) >>> 0;
|
||||
network = ip & ipv4_mask;
|
||||
|
||||
@@ -350,7 +350,7 @@ var IP = {
|
||||
} else {
|
||||
ipv4_networks[network] = [ip];
|
||||
}
|
||||
} else if (!!(match = IP.IPv6_REGEX.exec(ips[i]))) {
|
||||
} else if ((match = IP.IPv6_REGEX.exec(ips[i]))) {
|
||||
ip = IP._str_to_ipv6(match[1]);
|
||||
network = [];
|
||||
network_str = "";
|
||||
@@ -478,7 +478,7 @@ var IP = {
|
||||
ip2[i] = ip1[i] | (~mask[i] & 0x0000FFFF);
|
||||
total_diff = (ip2[i] - ip1[i]).toString(2);
|
||||
|
||||
if (total_diff != "0") {
|
||||
if (total_diff !== "0") {
|
||||
for (var n = 0; n < total_diff.length; n++) {
|
||||
total[i*16 + 16-(total_diff.length-n)] = total_diff[n];
|
||||
}
|
||||
@@ -599,7 +599,7 @@ var IP = {
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
t = (ip2[i] - ip1[i]).toString(2);
|
||||
if (t != "0") {
|
||||
if (t !== "0") {
|
||||
for (var n = 0; n < t.length; n++) {
|
||||
total[i*16 + 16-(t.length-n)] = t[n];
|
||||
}
|
||||
@@ -640,7 +640,7 @@ var IP = {
|
||||
return result;
|
||||
|
||||
function parse_blocks(blocks) {
|
||||
if (blocks.length != 4)
|
||||
if (blocks.length !== 4)
|
||||
throw "More than 4 blocks.";
|
||||
|
||||
var num_blocks = [];
|
||||
@@ -695,7 +695,7 @@ var IP = {
|
||||
for (var i = 0; i < 8; i++) {
|
||||
if (isNaN(num_blocks[j])) {
|
||||
ipv6[i] = 0;
|
||||
if (i == (8-num_blocks.slice(j).length)) j++;
|
||||
if (i === (8-num_blocks.slice(j).length)) j++;
|
||||
} else {
|
||||
ipv6[i] = num_blocks[j];
|
||||
j++;
|
||||
@@ -734,7 +734,6 @@ var IP = {
|
||||
*/
|
||||
_ipv6_to_str: function(ipv6, compact) {
|
||||
var output = "",
|
||||
skips = 0,
|
||||
i = 0;
|
||||
|
||||
if (compact) {
|
||||
@@ -756,8 +755,8 @@ var IP = {
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
if (i != start) {
|
||||
output += Utils.hex(ipv6[i],1) + ":";
|
||||
if (i !== start) {
|
||||
output += Utils.hex(ipv6[i], 1) + ":";
|
||||
} else {
|
||||
output += ":";
|
||||
i = end;
|
||||
@@ -768,10 +767,10 @@ var IP = {
|
||||
output = ":" + output;
|
||||
} else {
|
||||
for (i = 0; i < 8; i++) {
|
||||
output += Utils.hex(ipv6[i],4) + ":";
|
||||
output += Utils.hex(ipv6[i], 4) + ":";
|
||||
}
|
||||
}
|
||||
return output.slice(0,output.length-1);
|
||||
return output.slice(0, output.length-1);
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -54,17 +54,17 @@ var MAC = {
|
||||
macs = input.toLowerCase().split(/[,\s\r\n]+/);
|
||||
|
||||
macs.forEach(function(mac) {
|
||||
var cleanMac = mac.replace(/[:.-]+/g, ''),
|
||||
macHyphen = cleanMac.replace(/(.{2}(?=.))/g, '$1-'),
|
||||
macColon = cleanMac.replace(/(.{2}(?=.))/g, '$1:'),
|
||||
macCisco = cleanMac.replace(/(.{4}(?=.))/g, '$1.');
|
||||
var cleanMac = mac.replace(/[:.-]+/g, ""),
|
||||
macHyphen = cleanMac.replace(/(.{2}(?=.))/g, "$1-"),
|
||||
macColon = cleanMac.replace(/(.{2}(?=.))/g, "$1:"),
|
||||
macCisco = cleanMac.replace(/(.{4}(?=.))/g, "$1.");
|
||||
|
||||
if (output_case == "Lower only") {
|
||||
if (output_case === "Lower only") {
|
||||
if (no_delim) output_list.push(cleanMac);
|
||||
if (dash_delim) output_list.push(macHyphen);
|
||||
if (colon_delim) output_list.push(macColon);
|
||||
if (cisco_style) output_list.push(macCisco);
|
||||
} else if (output_case == "Upper only") {
|
||||
} else if (output_case === "Upper only") {
|
||||
if (no_delim) output_list.push(cleanMac.toUpperCase());
|
||||
if (dash_delim) output_list.push(macHyphen.toUpperCase());
|
||||
if (colon_delim) output_list.push(macColon.toUpperCase());
|
||||
@@ -82,7 +82,7 @@ var MAC = {
|
||||
});
|
||||
|
||||
// Return the data as a string
|
||||
return output_list.join('\n');
|
||||
return output_list.join("\n");
|
||||
},
|
||||
|
||||
};
|
||||
+41
-41
@@ -45,12 +45,12 @@ var OS = {
|
||||
output = "",
|
||||
octal = null,
|
||||
textual = null;
|
||||
|
||||
|
||||
if (input.search(/\s*[0-7]{1,4}\s*/i) === 0) {
|
||||
// Input is octal
|
||||
octal = input.match(/\s*([0-7]{1,4})\s*/i)[1];
|
||||
|
||||
if (octal.length == 4) {
|
||||
if (octal.length === 4) {
|
||||
d = parseInt(octal[0], 8);
|
||||
u = parseInt(octal[1], 8);
|
||||
g = parseInt(octal[2], 8);
|
||||
@@ -60,26 +60,26 @@ var OS = {
|
||||
if (octal.length > 1) g = parseInt(octal[1], 8);
|
||||
if (octal.length > 2) o = parseInt(octal[2], 8);
|
||||
}
|
||||
|
||||
|
||||
perms.su = d >> 2 & 0x1;
|
||||
perms.sg = d >> 1 & 0x1;
|
||||
perms.sb = d & 0x1;
|
||||
|
||||
|
||||
perms.ru = u >> 2 & 0x1;
|
||||
perms.wu = u >> 1 & 0x1;
|
||||
perms.eu = u & 0x1;
|
||||
|
||||
|
||||
perms.rg = g >> 2 & 0x1;
|
||||
perms.wg = g >> 1 & 0x1;
|
||||
perms.eg = g & 0x1;
|
||||
|
||||
|
||||
perms.ro = o >> 2 & 0x1;
|
||||
perms.wo = o >> 1 & 0x1;
|
||||
perms.eo = o & 0x1;
|
||||
} else if (input.search(/\s*[dlpcbDrwxsStT-]{1,10}\s*/) === 0) {
|
||||
// Input is textual
|
||||
textual = input.match(/\s*([dlpcbDrwxsStT-]{1,10})\s*/)[1];
|
||||
|
||||
|
||||
switch (textual[0]) {
|
||||
case "d":
|
||||
perms.d = true;
|
||||
@@ -103,9 +103,9 @@ var OS = {
|
||||
perms.dr = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (textual.length > 1) perms.ru = textual[1] == "r";
|
||||
if (textual.length > 2) perms.wu = textual[2] == "w";
|
||||
|
||||
if (textual.length > 1) perms.ru = textual[1] === "r";
|
||||
if (textual.length > 2) perms.wu = textual[2] === "w";
|
||||
if (textual.length > 3) {
|
||||
switch (textual[3]) {
|
||||
case "x":
|
||||
@@ -120,9 +120,9 @@ var OS = {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (textual.length > 4) perms.rg = textual[4] == "r";
|
||||
if (textual.length > 5) perms.wg = textual[5] == "w";
|
||||
|
||||
if (textual.length > 4) perms.rg = textual[4] === "r";
|
||||
if (textual.length > 5) perms.wg = textual[5] === "w";
|
||||
if (textual.length > 6) {
|
||||
switch (textual[6]) {
|
||||
case "x":
|
||||
@@ -137,9 +137,9 @@ var OS = {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (textual.length > 7) perms.ro = textual[7] == "r";
|
||||
if (textual.length > 8) perms.wo = textual[8] == "w";
|
||||
|
||||
if (textual.length > 7) perms.ro = textual[7] === "r";
|
||||
if (textual.length > 8) perms.wo = textual[8] === "w";
|
||||
if (textual.length > 9) {
|
||||
switch (textual[9]) {
|
||||
case "x":
|
||||
@@ -157,15 +157,15 @@ var OS = {
|
||||
} else {
|
||||
return "Invalid input format.\nPlease enter the permissions in either octal (e.g. 755) or textual (e.g. drwxr-xr-x) format.";
|
||||
}
|
||||
|
||||
|
||||
output += "Textual representation: " + OS._perms_to_str(perms);
|
||||
output += "\nOctal representation: " + OS._perms_to_octal(perms);
|
||||
|
||||
|
||||
// File type
|
||||
if (textual) {
|
||||
output += "\nFile type: " + OS._ft_from_perms(perms);
|
||||
}
|
||||
|
||||
|
||||
// setuid, setgid
|
||||
if (perms.su) {
|
||||
output += "\nThe setuid flag is set";
|
||||
@@ -173,15 +173,15 @@ var OS = {
|
||||
if (perms.sg) {
|
||||
output += "\nThe setgid flag is set";
|
||||
}
|
||||
|
||||
|
||||
// sticky bit
|
||||
if (perms.sb) {
|
||||
output += "\nThe sticky bit is set";
|
||||
}
|
||||
|
||||
|
||||
// Permission matrix
|
||||
output += "\n\n +---------+-------+-------+-------+\n" +
|
||||
" | | User | Group | Other |\n" +
|
||||
" | | User | Group | Other |\n" +
|
||||
" +---------+-------+-------+-------+\n" +
|
||||
" | Read | " + (perms.ru ? "X" : " ") + " | " + (perms.rg ? "X" : " ") + " | " + (perms.ro ? "X" : " ") + " |\n" +
|
||||
" +---------+-------+-------+-------+\n" +
|
||||
@@ -189,11 +189,11 @@ var OS = {
|
||||
" +---------+-------+-------+-------+\n" +
|
||||
" | Execute | " + (perms.eu ? "X" : " ") + " | " + (perms.eg ? "X" : " ") + " | " + (perms.eo ? "X" : " ") + " |\n" +
|
||||
" +---------+-------+-------+-------+\n";
|
||||
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Given a permissions object dictionary, generates a textual permissions string.
|
||||
*
|
||||
@@ -204,7 +204,7 @@ var OS = {
|
||||
_perms_to_str: function(perms) {
|
||||
var str = "",
|
||||
type = "-";
|
||||
|
||||
|
||||
if (perms.d) type = "d";
|
||||
if (perms.sl) type = "l";
|
||||
if (perms.np) type = "p";
|
||||
@@ -212,9 +212,9 @@ var OS = {
|
||||
if (perms.cd) type = "c";
|
||||
if (perms.bd) type = "b";
|
||||
if (perms.dr) type = "D";
|
||||
|
||||
|
||||
str = type;
|
||||
|
||||
|
||||
str += perms.ru ? "r" : "-";
|
||||
str += perms.wu ? "w" : "-";
|
||||
if (perms.eu && perms.su) {
|
||||
@@ -226,7 +226,7 @@ var OS = {
|
||||
} else {
|
||||
str += "-";
|
||||
}
|
||||
|
||||
|
||||
str += perms.rg ? "r" : "-";
|
||||
str += perms.wg ? "w" : "-";
|
||||
if (perms.eg && perms.sg) {
|
||||
@@ -238,7 +238,7 @@ var OS = {
|
||||
} else {
|
||||
str += "-";
|
||||
}
|
||||
|
||||
|
||||
str += perms.ro ? "r" : "-";
|
||||
str += perms.wo ? "w" : "-";
|
||||
if (perms.eo && perms.sb) {
|
||||
@@ -250,11 +250,11 @@ var OS = {
|
||||
} else {
|
||||
str += "-";
|
||||
}
|
||||
|
||||
|
||||
return str;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Given a permissions object dictionary, generates an octal permissions string.
|
||||
*
|
||||
@@ -267,27 +267,27 @@ var OS = {
|
||||
u = 0,
|
||||
g = 0,
|
||||
o = 0;
|
||||
|
||||
|
||||
if (perms.su) d += 4;
|
||||
if (perms.sg) d += 2;
|
||||
if (perms.sb) d += 1;
|
||||
|
||||
|
||||
if (perms.ru) u += 4;
|
||||
if (perms.wu) u += 2;
|
||||
if (perms.eu) u += 1;
|
||||
|
||||
|
||||
if (perms.rg) g += 4;
|
||||
if (perms.wg) g += 2;
|
||||
if (perms.eg) g += 1;
|
||||
|
||||
|
||||
if (perms.ro) o += 4;
|
||||
if (perms.wo) o += 2;
|
||||
if (perms.eo) o += 1;
|
||||
|
||||
|
||||
return d.toString() + u.toString() + g.toString() + o.toString();
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Given a permissions object dictionary, returns the file type.
|
||||
*
|
||||
@@ -305,5 +305,5 @@ var OS = {
|
||||
if (perms.dr) return "Door";
|
||||
return "Regular file";
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
+691
-692
File diff suppressed because it is too large.
Load diff
@@ -81,7 +81,7 @@ var QuotedPrintable = {
|
||||
|
||||
for (var i = 0, len = str.length; i < len; i++) {
|
||||
chr = str.charAt(i);
|
||||
if (chr == "=" && (hex = str.substr(i + 1, 2)) && /[\da-fA-F]{2}/.test(hex)) {
|
||||
if (chr === "=" && (hex = str.substr(i + 1, 2)) && /[\da-fA-F]{2}/.test(hex)) {
|
||||
buffer[bufferPos++] = parseInt(hex, 16);
|
||||
i += 2;
|
||||
continue;
|
||||
@@ -137,9 +137,9 @@ var QuotedPrintable = {
|
||||
for (var i = ranges.length - 1; i >= 0; i--) {
|
||||
if (!ranges[i].length)
|
||||
continue;
|
||||
if (ranges[i].length == 1 && nr == ranges[i][0])
|
||||
if (ranges[i].length === 1 && nr === ranges[i][0])
|
||||
return true;
|
||||
if (ranges[i].length == 2 && nr >= ranges[i][0] && nr <= ranges[i][1])
|
||||
if (ranges[i].length === 2 && nr >= ranges[i][0] && nr <= ranges[i][1])
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -161,7 +161,7 @@ var QuotedPrintable = {
|
||||
|
||||
encoding = (encoding || "base64").toString().toLowerCase().trim();
|
||||
|
||||
if (encoding == "qp") {
|
||||
if (encoding === "qp") {
|
||||
return this._addQPSoftLinebreaks(str, lineLengthMax);
|
||||
} else {
|
||||
return this._addBase64SoftLinebreaks(str, lineLengthMax);
|
||||
@@ -208,7 +208,7 @@ var QuotedPrintable = {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (line.substr(-1) == "\n") {
|
||||
if (line.substr(-1) === "\n") {
|
||||
// nothing to change here
|
||||
result += line;
|
||||
pos += line.length;
|
||||
@@ -222,7 +222,7 @@ var QuotedPrintable = {
|
||||
} else if (line.length > lineLengthMax - lineMargin && (match = line.substr(-lineMargin).match(/[ \t\.,!\?][^ \t\.,!\?]*$/))) {
|
||||
// truncate to nearest space
|
||||
line = line.substr(0, line.length - (match[0].length - 1));
|
||||
} else if (line.substr(-1) == "\r") {
|
||||
} else if (line.substr(-1) === "\r") {
|
||||
line = line.substr(0, line.length - 1);
|
||||
} else {
|
||||
if (line.match(/\=[\da-f]{0,2}$/i)) {
|
||||
@@ -249,10 +249,10 @@ var QuotedPrintable = {
|
||||
}
|
||||
}
|
||||
|
||||
if (pos + line.length < len && line.substr(-1) != "\n") {
|
||||
if (line.length == 76 && line.match(/\=[\da-f]{2}$/i)) {
|
||||
if (pos + line.length < len && line.substr(-1) !== "\n") {
|
||||
if (line.length === 76 && line.match(/\=[\da-f]{2}$/i)) {
|
||||
line = line.substr(0, line.length - 3);
|
||||
} else if (line.length == 76) {
|
||||
} else if (line.length === 76) {
|
||||
line = line.substr(0, line.length - 1);
|
||||
}
|
||||
pos += line.length;
|
||||
|
||||
@@ -91,7 +91,7 @@ var Rotate = {
|
||||
* @default
|
||||
*/
|
||||
ROT13_UPPERCASE: true,
|
||||
|
||||
|
||||
/**
|
||||
* ROT13 operation.
|
||||
*
|
||||
@@ -124,8 +124,44 @@ var Rotate = {
|
||||
}
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constant
|
||||
* @default
|
||||
*/
|
||||
ROT47_AMOUNT: 47,
|
||||
|
||||
/**
|
||||
* ROT47 operation.
|
||||
*
|
||||
* @author Matt C [matt@artemisbot.pw]
|
||||
* @param {byte_array} input
|
||||
* @param {Object[]} args
|
||||
* @returns {byte_array}
|
||||
*/
|
||||
run_rot47: function(input, args) {
|
||||
var amount = args[0],
|
||||
output = input,
|
||||
chr;
|
||||
|
||||
if (amount) {
|
||||
if (amount < 0) {
|
||||
amount = 94 - (Math.abs(amount) % 94);
|
||||
}
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
chr = input[i];
|
||||
if (chr >= 33 && chr <= 126) {
|
||||
chr = (chr - 33 + amount) % 94;
|
||||
output[i] = chr + 33;
|
||||
}
|
||||
}
|
||||
}
|
||||
return output;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Rotate right bitwise op.
|
||||
*
|
||||
|
||||
@@ -38,11 +38,11 @@ var SeqUtils = {
|
||||
order = args[2],
|
||||
sorted = input.split(delim);
|
||||
|
||||
if (order == "Alphabetical (case sensitive)") {
|
||||
if (order === "Alphabetical (case sensitive)") {
|
||||
sorted = sorted.sort();
|
||||
} else if (order == "Alphabetical (case insensitive)") {
|
||||
} else if (order === "Alphabetical (case insensitive)") {
|
||||
sorted = sorted.sort(SeqUtils._case_insensitive_sort);
|
||||
} else if (order == "IP address") {
|
||||
} else if (order === "IP address") {
|
||||
sorted = sorted.sort(SeqUtils._ip_sort);
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ var SeqUtils = {
|
||||
var search = args[0].string,
|
||||
type = args[0].option;
|
||||
|
||||
if (type == "Regex" && search) {
|
||||
if (type === "Regex" && search) {
|
||||
try {
|
||||
var regex = new RegExp(search, "gi"),
|
||||
matches = input.match(regex);
|
||||
@@ -114,12 +114,12 @@ var SeqUtils = {
|
||||
* @returns {byte_array}
|
||||
*/
|
||||
run_reverse: function (input, args) {
|
||||
if (args[0] == "Line") {
|
||||
if (args[0] === "Line") {
|
||||
var lines = [],
|
||||
line = [],
|
||||
result = [];
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
if (input[i] == 0x0a) {
|
||||
if (input[i] === 0x0a) {
|
||||
lines.push(line);
|
||||
line = [];
|
||||
} else {
|
||||
|
||||
@@ -108,7 +108,7 @@ var StrUtils = {
|
||||
if (i) modifiers += "i";
|
||||
if (m) modifiers += "m";
|
||||
|
||||
if (user_regex && user_regex != "^" && user_regex != "$") {
|
||||
if (user_regex && user_regex !== "^" && user_regex !== "$") {
|
||||
try {
|
||||
var regex = new RegExp(user_regex, modifiers);
|
||||
|
||||
@@ -223,7 +223,7 @@ var StrUtils = {
|
||||
if (i) modifiers += "i";
|
||||
if (m) modifiers += "m";
|
||||
|
||||
if (type == "Regex") {
|
||||
if (type === "Regex") {
|
||||
find = new RegExp(find, modifiers);
|
||||
} else if (type.indexOf("Extended") === 0) {
|
||||
find = Utils.parse_escaped_chars(find);
|
||||
@@ -291,7 +291,7 @@ var StrUtils = {
|
||||
output = "",
|
||||
diff;
|
||||
|
||||
if (!samples || samples.length != 2) {
|
||||
if (!samples || samples.length !== 2) {
|
||||
return "Incorrect number of samples, perhaps you need to modify the sample delimiter or add more samples?";
|
||||
}
|
||||
|
||||
@@ -379,7 +379,7 @@ var StrUtils = {
|
||||
|
||||
// Loop through each sample to see if the chars are the same
|
||||
for (s = 1; s < samples.length; s++) {
|
||||
if (samples[s][i] != chr) {
|
||||
if (samples[s][i] !== chr) {
|
||||
match = false;
|
||||
break;
|
||||
}
|
||||
@@ -390,26 +390,26 @@ var StrUtils = {
|
||||
for (s = 0; s < samples.length; s++) {
|
||||
if (samples[s].length <= i) {
|
||||
if (in_match) outputs[s] += "</span>";
|
||||
if (s == samples.length - 1) in_match = false;
|
||||
if (s === samples.length - 1) in_match = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (match && !in_match) {
|
||||
outputs[s] += "<span class='hlgreen'>" + Utils.escape_html(samples[s][i]);
|
||||
if (samples[s].length == i + 1) outputs[s] += "</span>";
|
||||
if (s == samples.length - 1) in_match = true;
|
||||
if (samples[s].length === i + 1) outputs[s] += "</span>";
|
||||
if (s === samples.length - 1) in_match = true;
|
||||
} else if (!match && in_match) {
|
||||
outputs[s] += "</span>" + Utils.escape_html(samples[s][i]);
|
||||
if (s == samples.length - 1) in_match = false;
|
||||
if (s === samples.length - 1) in_match = false;
|
||||
} else {
|
||||
outputs[s] += Utils.escape_html(samples[s][i]);
|
||||
if (in_match && samples[s].length == i + 1) {
|
||||
if (in_match && samples[s].length === i + 1) {
|
||||
outputs[s] += "</span>";
|
||||
if (samples[s].length - 1 != i) in_match = false;
|
||||
if (samples[s].length - 1 !== i) in_match = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (samples[0].length - 1 == i) {
|
||||
if (samples[0].length - 1 === i) {
|
||||
if (in_match) outputs[s] += "</span>";
|
||||
outputs[s] += Utils.escape_html(samples[s].substring(i + 1));
|
||||
}
|
||||
@@ -448,7 +448,7 @@ var StrUtils = {
|
||||
i = 0,
|
||||
total = 0;
|
||||
|
||||
while (!!(m = regex.exec(input))) {
|
||||
while ((m = regex.exec(input))) {
|
||||
// Add up to match
|
||||
output += Utils.escape_html(input.slice(i, m.index));
|
||||
|
||||
@@ -456,7 +456,7 @@ var StrUtils = {
|
||||
output += "<span class='hl"+hl+"'>" + Utils.escape_html(m[0]) + "</span>";
|
||||
|
||||
// Switch highlight
|
||||
hl = hl == 1 ? 2 : 1;
|
||||
hl = hl === 1 ? 2 : 1;
|
||||
|
||||
i = regex.lastIndex;
|
||||
total++;
|
||||
@@ -488,7 +488,7 @@ var StrUtils = {
|
||||
total = 0,
|
||||
match;
|
||||
|
||||
while (!!(match = regex.exec(input))) {
|
||||
while ((match = regex.exec(input))) {
|
||||
total++;
|
||||
if (matches) {
|
||||
output += match[0] + "\n";
|
||||
|
||||
@@ -121,7 +121,7 @@ var Tidy = {
|
||||
line = [];
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
if (input[i] == 0x0a) {
|
||||
if (input[i] === 0x0a) {
|
||||
lines.push(line);
|
||||
line = [];
|
||||
} else {
|
||||
@@ -173,7 +173,7 @@ var Tidy = {
|
||||
line = [];
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
if (input[i] == 0x0a) {
|
||||
if (input[i] === 0x0a) {
|
||||
lines.push(line);
|
||||
line = [];
|
||||
} else {
|
||||
@@ -222,11 +222,11 @@ var Tidy = {
|
||||
output = "",
|
||||
i = 0;
|
||||
|
||||
if (position == "Start") {
|
||||
if (position === "Start") {
|
||||
for (i = 0; i < lines.length; i++) {
|
||||
output += Utils.pad_left(lines[i], lines[i].length+len, chr) + "\n";
|
||||
}
|
||||
} else if (position == "End") {
|
||||
} else if (position === "End") {
|
||||
for (i = 0; i < lines.length; i++) {
|
||||
output += Utils.pad_right(lines[i], lines[i].length+len, chr) + "\n";
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ var URL_ = {
|
||||
|
||||
if (a.protocol) {
|
||||
var output = "";
|
||||
if (a.hostname != window.location.hostname) {
|
||||
if (a.hostname !== window.location.hostname) {
|
||||
output = "Protocol:\t" + a.protocol + "\n";
|
||||
if (a.hostname) output += "Hostname:\t" + a.hostname + "\n";
|
||||
if (a.port) output += "Port:\t\t" + a.port + "\n";
|
||||
|
||||
@@ -17,7 +17,7 @@ var UUID = {
|
||||
* @returns {string}
|
||||
*/
|
||||
run_generate_v4: function(input, args) {
|
||||
if (typeof(window.crypto) !== 'undefined' && typeof(window.crypto.getRandomValues) !== 'undefined') {
|
||||
if (typeof(window.crypto) !== "undefined" && typeof(window.crypto.getRandomValues) !== "undefined") {
|
||||
var buf = new Uint32Array(4),
|
||||
i = 0;
|
||||
window.crypto.getRandomValues(buf);
|
||||
|
||||
@@ -29,7 +29,7 @@ var Unicode = {
|
||||
m,
|
||||
i = 0;
|
||||
|
||||
while (!!(m = regex.exec(input))) {
|
||||
while ((m = regex.exec(input))) {
|
||||
// Add up to match
|
||||
output += input.slice(i, m.index);
|
||||
i = m.index;
|
||||
|
||||
@@ -65,7 +65,7 @@ ControlsWaiter.prototype.adjust_width = function() {
|
||||
ControlsWaiter.prototype.set_auto_bake = function(value) {
|
||||
var auto_bake_checkbox = document.getElementById("auto-bake");
|
||||
|
||||
if (auto_bake_checkbox.checked != value) {
|
||||
if (auto_bake_checkbox.checked !== value) {
|
||||
auto_bake_checkbox.click();
|
||||
}
|
||||
};
|
||||
@@ -138,9 +138,7 @@ ControlsWaiter.prototype.clear_breaks_click = function() {
|
||||
ControlsWaiter.prototype.initialise_save_link = function(recipe_config) {
|
||||
recipe_config = recipe_config || this.app.get_recipe_config();
|
||||
|
||||
var recipe_str = JSON.stringify(recipe_config),
|
||||
input_str = Utils.to_base64(this.app.get_input()),
|
||||
include_recipe = document.getElementById("save-link-recipe-checkbox").checked,
|
||||
var include_recipe = document.getElementById("save-link-recipe-checkbox").checked,
|
||||
include_input = document.getElementById("save-link-input-checkbox").checked,
|
||||
save_link_el = document.getElementById("save-link"),
|
||||
save_link = this.generate_state_url(include_recipe, include_input, recipe_config);
|
||||
@@ -200,7 +198,7 @@ ControlsWaiter.prototype.save_text_change = function() {
|
||||
*/
|
||||
ControlsWaiter.prototype.save_click = function() {
|
||||
var recipe_config = this.app.get_recipe_config();
|
||||
var recipe_str = JSON.stringify(recipe_config).replace(/},{/g, '},\n{');
|
||||
var recipe_str = JSON.stringify(recipe_config).replace(/},{/g, "},\n{");
|
||||
document.getElementById("save-text").value = recipe_str;
|
||||
|
||||
this.initialise_save_link(recipe_config);
|
||||
@@ -300,7 +298,7 @@ ControlsWaiter.prototype.load_delete_click = function() {
|
||||
JSON.parse(localStorage.saved_recipes) : [];
|
||||
|
||||
saved_recipes = saved_recipes.filter(function(r) {
|
||||
return r.id != id;
|
||||
return r.id !== id;
|
||||
});
|
||||
|
||||
localStorage.saved_recipes = JSON.stringify(saved_recipes);
|
||||
@@ -318,7 +316,7 @@ ControlsWaiter.prototype.load_name_change = function(e) {
|
||||
id = parseInt(el.value, 10);
|
||||
|
||||
var recipe = saved_recipes.filter(function(r) {
|
||||
return r.id == id;
|
||||
return r.id === id;
|
||||
})[0];
|
||||
|
||||
document.getElementById("load-text").value = recipe.recipe;
|
||||
|
||||
@@ -20,14 +20,14 @@ var HTMLApp = function(categories, operations, default_favourites, default_optio
|
||||
this.dfavourites = default_favourites;
|
||||
this.doptions = default_options;
|
||||
this.options = Utils.extend({}, default_options);
|
||||
|
||||
|
||||
this.chef = new Chef();
|
||||
this.manager = new Manager(this);
|
||||
|
||||
|
||||
this.auto_bake_ = false;
|
||||
this.progress = 0;
|
||||
this.ing_id = 0;
|
||||
|
||||
|
||||
window.chef = this.chef;
|
||||
};
|
||||
|
||||
@@ -69,7 +69,7 @@ HTMLApp.prototype.handle_error = function(err) {
|
||||
*/
|
||||
HTMLApp.prototype.bake = function(step) {
|
||||
var response;
|
||||
|
||||
|
||||
try {
|
||||
response = this.chef.bake(
|
||||
this.get_input(), // The user's input
|
||||
@@ -80,24 +80,25 @@ HTMLApp.prototype.bake = function(step) {
|
||||
);
|
||||
} catch (err) {
|
||||
this.handle_error(err);
|
||||
} finally {
|
||||
if (!response) return;
|
||||
|
||||
if (response.error) {
|
||||
this.handle_error(response.error);
|
||||
}
|
||||
this.options = response.options;
|
||||
this.dish_str = response.type == "html" ? Utils.strip_html_tags(response.result, true) : response.result;
|
||||
this.progress = response.progress;
|
||||
this.manager.recipe.update_breakpoint_indicator(response.progress);
|
||||
this.manager.output.set(response.result, response.type, response.duration);
|
||||
|
||||
// If baking took too long, disable auto-bake
|
||||
if (response.duration > this.options.auto_bake_threshold && this.auto_bake_) {
|
||||
this.manager.controls.set_auto_bake(false);
|
||||
this.alert("Baking took longer than " + this.options.auto_bake_threshold +
|
||||
"ms, Auto Bake has been disabled.", "warning", 5000);
|
||||
}
|
||||
}
|
||||
|
||||
if (!response) return;
|
||||
|
||||
if (response.error) {
|
||||
this.handle_error(response.error);
|
||||
}
|
||||
|
||||
this.options = response.options;
|
||||
this.dish_str = response.type === "html" ? Utils.strip_html_tags(response.result, true) : response.result;
|
||||
this.progress = response.progress;
|
||||
this.manager.recipe.update_breakpoint_indicator(response.progress);
|
||||
this.manager.output.set(response.result, response.type, response.duration);
|
||||
|
||||
// If baking took too long, disable auto-bake
|
||||
if (response.duration > this.options.auto_bake_threshold && this.auto_bake_) {
|
||||
this.manager.controls.set_auto_bake(false);
|
||||
this.alert("Baking took longer than " + this.options.auto_bake_threshold +
|
||||
"ms, Auto Bake has been disabled.", "warning", 5000);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -124,11 +125,11 @@ HTMLApp.prototype.auto_bake = function() {
|
||||
HTMLApp.prototype.silent_bake = function() {
|
||||
var start_time = new Date().getTime(),
|
||||
recipe_config = this.get_recipe_config();
|
||||
|
||||
|
||||
if (this.auto_bake_) {
|
||||
this.chef.silent_bake(recipe_config);
|
||||
}
|
||||
|
||||
|
||||
return new Date().getTime() - start_time;
|
||||
};
|
||||
|
||||
@@ -140,11 +141,11 @@ HTMLApp.prototype.silent_bake = function() {
|
||||
*/
|
||||
HTMLApp.prototype.get_input = function() {
|
||||
var input = this.manager.input.get();
|
||||
|
||||
|
||||
// Save to session storage in case we need to restore it later
|
||||
sessionStorage.setItem("input_length", input.length);
|
||||
sessionStorage.setItem("input", input);
|
||||
|
||||
|
||||
return input;
|
||||
};
|
||||
|
||||
@@ -170,31 +171,31 @@ HTMLApp.prototype.set_input = function(input) {
|
||||
HTMLApp.prototype.populate_operations_list = function() {
|
||||
// Move edit button away before we overwrite it
|
||||
document.body.appendChild(document.getElementById("edit-favourites"));
|
||||
|
||||
|
||||
var html = "";
|
||||
|
||||
|
||||
for (var i = 0; i < this.categories.length; i++) {
|
||||
var cat_conf = this.categories[i],
|
||||
selected = i === 0,
|
||||
cat = new HTMLCategory(cat_conf.name, selected);
|
||||
|
||||
|
||||
for (var j = 0; j < cat_conf.ops.length; j++) {
|
||||
var op_name = cat_conf.ops[j],
|
||||
op = new HTMLOperation(op_name, this.operations[op_name], this, this.manager);
|
||||
cat.add_operation(op);
|
||||
}
|
||||
|
||||
|
||||
html += cat.to_html();
|
||||
}
|
||||
|
||||
|
||||
document.getElementById("categories").innerHTML = html;
|
||||
|
||||
|
||||
var op_lists = document.querySelectorAll("#categories .op_list");
|
||||
|
||||
|
||||
for (i = 0; i < op_lists.length; i++) {
|
||||
op_lists[i].dispatchEvent(this.manager.oplistcreate);
|
||||
}
|
||||
|
||||
|
||||
// Add edit button to first category (Favourites)
|
||||
document.querySelector("#categories a").appendChild(document.getElementById("edit-favourites"));
|
||||
};
|
||||
@@ -210,12 +211,12 @@ HTMLApp.prototype.initialise_splitter = function() {
|
||||
gutterSize: 4,
|
||||
onDrag: this.manager.controls.adjust_width.bind(this.manager.controls)
|
||||
});
|
||||
|
||||
|
||||
Split(["#input", "#output"], {
|
||||
direction: "vertical",
|
||||
gutterSize: 4,
|
||||
});
|
||||
|
||||
|
||||
this.reset_layout();
|
||||
};
|
||||
|
||||
@@ -231,7 +232,7 @@ HTMLApp.prototype.load_local_storage = function() {
|
||||
l_options = JSON.parse(localStorage.options);
|
||||
}
|
||||
this.manager.options.load(l_options);
|
||||
|
||||
|
||||
// Load favourites
|
||||
this.load_favourites();
|
||||
};
|
||||
@@ -247,14 +248,14 @@ HTMLApp.prototype.load_favourites = function() {
|
||||
localStorage.favourites.length > 2 ?
|
||||
JSON.parse(localStorage.favourites) :
|
||||
this.dfavourites;
|
||||
|
||||
|
||||
favourites = this.valid_favourites(favourites);
|
||||
this.save_favourites(favourites);
|
||||
|
||||
|
||||
var fav_cat = this.categories.filter(function(c) {
|
||||
return c.name == "Favourites";
|
||||
return c.name === "Favourites";
|
||||
})[0];
|
||||
|
||||
|
||||
if (fav_cat) {
|
||||
fav_cat.ops = favourites;
|
||||
} else {
|
||||
@@ -269,7 +270,7 @@ HTMLApp.prototype.load_favourites = function() {
|
||||
/**
|
||||
* Filters the list of favourite operations that the user had stored and removes any that are no
|
||||
* longer available. The user is notified if this is the case.
|
||||
|
||||
|
||||
* @param {string[]} favourites - A list of the user's favourite operations
|
||||
* @returns {string[]} A list of the valid favourites
|
||||
*/
|
||||
@@ -321,7 +322,7 @@ HTMLApp.prototype.add_favourite = function(name) {
|
||||
this.alert("'" + name + "' is already in your favourites", "info", 2000);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
favourites.push(name);
|
||||
this.save_favourites(favourites);
|
||||
this.load_favourites();
|
||||
@@ -339,20 +340,20 @@ HTMLApp.prototype.load_URI_params = function() {
|
||||
if (a === "") return {};
|
||||
var b = {};
|
||||
for (var i = 0; i < a.length; i++) {
|
||||
var p = a[i].split('=');
|
||||
if (p.length != 2) {
|
||||
var p = a[i].split("=");
|
||||
if (p.length !== 2) {
|
||||
b[a[i]] = true;
|
||||
} else {
|
||||
b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
|
||||
}
|
||||
}
|
||||
return b;
|
||||
})(window.location.search.substr(1).split('&'));
|
||||
|
||||
})(window.location.search.substr(1).split("&"));
|
||||
|
||||
// Turn off auto-bake while loading
|
||||
var auto_bake_val = this.auto_bake_;
|
||||
this.auto_bake_ = false;
|
||||
|
||||
|
||||
// Read in recipe from query string
|
||||
if (this.query_string.recipe) {
|
||||
try {
|
||||
@@ -370,15 +371,15 @@ HTMLApp.prototype.load_URI_params = function() {
|
||||
if (matched_ops.length) {
|
||||
this.manager.recipe.add_operation(matched_ops[0].name);
|
||||
}
|
||||
|
||||
|
||||
// Populate search with the string
|
||||
var search = document.getElementById("search");
|
||||
|
||||
|
||||
search.value = this.query_string.op;
|
||||
search.dispatchEvent(new Event("search"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Read in input data from query string
|
||||
if (this.query_string.input) {
|
||||
try {
|
||||
@@ -386,7 +387,7 @@ HTMLApp.prototype.load_URI_params = function() {
|
||||
this.set_input(input_data);
|
||||
} catch(err) {}
|
||||
}
|
||||
|
||||
|
||||
// Restore auto-bake state
|
||||
this.auto_bake_ = auto_bake_val;
|
||||
this.auto_bake();
|
||||
@@ -423,14 +424,14 @@ HTMLApp.prototype.get_recipe_config = function() {
|
||||
HTMLApp.prototype.set_recipe_config = function(recipe_config) {
|
||||
sessionStorage.setItem("recipe_config", JSON.stringify(recipe_config));
|
||||
document.getElementById("rec_list").innerHTML = null;
|
||||
|
||||
|
||||
for (var i = 0; i < recipe_config.length; i++) {
|
||||
var item = this.manager.recipe.add_operation(recipe_config[i].op);
|
||||
|
||||
|
||||
// Populate arguments
|
||||
var args = item.querySelectorAll(".arg");
|
||||
for (var j = 0; j < args.length; j++) {
|
||||
if (args[j].getAttribute("type") == "checkbox") {
|
||||
if (args[j].getAttribute("type") === "checkbox") {
|
||||
// checkbox
|
||||
args[j].checked = recipe_config[i].args[j];
|
||||
} else if (args[j].classList.contains("toggle-string")) {
|
||||
@@ -444,7 +445,7 @@ HTMLApp.prototype.set_recipe_config = function(recipe_config) {
|
||||
args[j].value = recipe_config[i].args[j];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Set disabled and breakpoint
|
||||
if (recipe_config[i].disabled) {
|
||||
item.querySelector(".disable-icon").click();
|
||||
@@ -452,7 +453,7 @@ HTMLApp.prototype.set_recipe_config = function(recipe_config) {
|
||||
if (recipe_config[i].breakpoint) {
|
||||
item.querySelector(".breakpoint").click();
|
||||
}
|
||||
|
||||
|
||||
this.progress = 0;
|
||||
}
|
||||
};
|
||||
@@ -467,7 +468,7 @@ HTMLApp.prototype.reset_layout = function() {
|
||||
document.getElementById("IO").style.width = "calc(50% - 2px)";
|
||||
document.getElementById("input").style.height = "calc(50% - 2px)";
|
||||
document.getElementById("output").style.height = "calc(50% - 2px)";
|
||||
|
||||
|
||||
this.manager.controls.adjust_width();
|
||||
};
|
||||
|
||||
@@ -480,12 +481,12 @@ HTMLApp.prototype.set_compile_message = function() {
|
||||
var now = new Date(),
|
||||
time_since_compile = Utils.fuzzy_time(now.getTime() - window.compile_time),
|
||||
compile_info = "<span style=\"font-weight: normal\">Last build: " +
|
||||
time_since_compile.substr(0,1).toUpperCase() + time_since_compile.substr(1) + " ago";
|
||||
|
||||
time_since_compile.substr(0, 1).toUpperCase() + time_since_compile.substr(1) + " ago";
|
||||
|
||||
if (window.compile_message !== "") {
|
||||
compile_info += " - " + window.compile_message;
|
||||
}
|
||||
|
||||
|
||||
compile_info += "</span>";
|
||||
document.getElementById("notice").innerHTML = compile_info;
|
||||
};
|
||||
@@ -516,36 +517,36 @@ HTMLApp.prototype.set_compile_message = function() {
|
||||
*/
|
||||
HTMLApp.prototype.alert = function(str, style, timeout, silent) {
|
||||
var time = new Date();
|
||||
|
||||
|
||||
console.log("[" + time.toLocaleString() + "] " + str);
|
||||
if (silent) return;
|
||||
|
||||
|
||||
style = style || "danger";
|
||||
timeout = timeout || 0;
|
||||
|
||||
|
||||
var alert_el = document.getElementById("alert"),
|
||||
alert_content = document.getElementById("alert-content");
|
||||
|
||||
|
||||
alert_el.classList.remove("alert-danger");
|
||||
alert_el.classList.remove("alert-warning");
|
||||
alert_el.classList.remove("alert-info");
|
||||
alert_el.classList.remove("alert-success");
|
||||
alert_el.classList.add("alert-" + style);
|
||||
|
||||
|
||||
// If the box hasn't been closed, append to it rather than replacing
|
||||
if (alert_el.style.display == "block") {
|
||||
alert_content.innerHTML +=
|
||||
if (alert_el.style.display === "block") {
|
||||
alert_content.innerHTML +=
|
||||
"<br><br>[" + time.toLocaleTimeString() + "] " + str;
|
||||
} else {
|
||||
alert_content.innerHTML =
|
||||
"[" + time.toLocaleTimeString() + "] " + str;
|
||||
}
|
||||
|
||||
|
||||
// Stop the animation if it is in progress
|
||||
$("#alert").stop();
|
||||
alert_el.style.display = "block";
|
||||
alert_el.style.opacity = 1;
|
||||
|
||||
|
||||
if (timeout > 0) {
|
||||
clearTimeout(this.alert_timeout);
|
||||
this.alert_timeout = setTimeout(function(){
|
||||
@@ -573,7 +574,7 @@ HTMLApp.prototype.confirm = function(title, body, callback, scope) {
|
||||
document.getElementById("confirm-title").innerHTML = title;
|
||||
document.getElementById("confirm-body").innerHTML = body;
|
||||
document.getElementById("confirm-modal").style.display = "block";
|
||||
|
||||
|
||||
this.confirm_closed = false;
|
||||
$("#confirm-modal").modal()
|
||||
.one("show.bs.modal", function(e) {
|
||||
@@ -610,7 +611,7 @@ HTMLApp.prototype.alert_close_click = function() {
|
||||
*/
|
||||
HTMLApp.prototype.state_change = function(e) {
|
||||
this.auto_bake();
|
||||
|
||||
|
||||
// Update the current history state (not creating a new one)
|
||||
if (this.options.update_url) {
|
||||
this.last_state_url = this.manager.controls.generate_state_url(true, true);
|
||||
@@ -640,10 +641,10 @@ HTMLApp.prototype.call_api = function(url, type, data, data_type, content_type)
|
||||
data = data || {};
|
||||
data_type = data_type || undefined;
|
||||
content_type = content_type || "application/json";
|
||||
|
||||
|
||||
var response = null,
|
||||
success = false;
|
||||
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
async: false,
|
||||
@@ -660,7 +661,7 @@ HTMLApp.prototype.call_api = function(url, type, data, data_type, content_type)
|
||||
response = data;
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
return {
|
||||
success: success,
|
||||
response: response
|
||||
|
||||
@@ -32,16 +32,16 @@ var HTMLIngredient = function(config, app, manager) {
|
||||
* @returns {string}
|
||||
*/
|
||||
HTMLIngredient.prototype.to_html = function() {
|
||||
var inline = (this.type == "boolean" ||
|
||||
this.type == "number" ||
|
||||
this.type == "option" ||
|
||||
this.type == "short_string" ||
|
||||
this.type == "binary_short_string"),
|
||||
var inline = (this.type === "boolean" ||
|
||||
this.type === "number" ||
|
||||
this.type === "option" ||
|
||||
this.type === "short_string" ||
|
||||
this.type === "binary_short_string"),
|
||||
html = inline ? "" : "<div class='clearfix'> </div>",
|
||||
i, m;
|
||||
|
||||
html += "<div class='arg-group" + (inline ? " inline-args" : "") +
|
||||
(this.type == "text" ? " arg-group-text" : "") + "'><label class='arg-label' for='" +
|
||||
(this.type === "text" ? " arg-group-text" : "") + "'><label class='arg-label' for='" +
|
||||
this.id + "'>" + this.name + "</label>";
|
||||
|
||||
switch (this.type) {
|
||||
@@ -92,9 +92,9 @@ HTMLIngredient.prototype.to_html = function() {
|
||||
html += "<select class='arg' id='" + this.id + "'arg_name='" + this.name + "'" +
|
||||
(this.disabled ? " disabled='disabled'" : "") + ">";
|
||||
for (i = 0; i < this.value.length; i++) {
|
||||
if (!!(m = this.value[i].match(/\[([a-z0-9 -()^]+)\]/i))) {
|
||||
if ((m = this.value[i].match(/\[([a-z0-9 -()^]+)\]/i))) {
|
||||
html += "<optgroup label='" + m[1] + "'>";
|
||||
} else if (!!(m = this.value[i].match(/\[\/([a-z0-9 -()^]+)\]/i))) {
|
||||
} else if ((m = this.value[i].match(/\[\/([a-z0-9 -()^]+)\]/i))) {
|
||||
html += "</optgroup>";
|
||||
} else {
|
||||
html += "<option>" + this.value[i] + "</option>";
|
||||
@@ -106,9 +106,9 @@ HTMLIngredient.prototype.to_html = function() {
|
||||
html += "<select class='arg' id='" + this.id + "'arg_name='" + this.name + "'" +
|
||||
(this.disabled ? " disabled='disabled'" : "") + ">";
|
||||
for (i = 0; i < this.value.length; i++) {
|
||||
if (!!(m = this.value[i].name.match(/\[([a-z0-9 -()^]+)\]/i))) {
|
||||
if ((m = this.value[i].name.match(/\[([a-z0-9 -()^]+)\]/i))) {
|
||||
html += "<optgroup label='" + m[1] + "'>";
|
||||
} else if (!!(m = this.value[i].name.match(/\[\/([a-z0-9 -()^]+)\]/i))) {
|
||||
} else if ((m = this.value[i].name.match(/\[\/([a-z0-9 -()^]+)\]/i))) {
|
||||
html += "</optgroup>";
|
||||
} else {
|
||||
html += "<option populate-value='" + this.value[i].value + "'>" +
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
*/
|
||||
var HighlighterWaiter = function(app) {
|
||||
this.app = app;
|
||||
|
||||
|
||||
this.mouse_button_down = false;
|
||||
this.mouse_target = null;
|
||||
};
|
||||
@@ -40,7 +40,7 @@ HighlighterWaiter.OUTPUT = 1;
|
||||
HighlighterWaiter.prototype._is_selection_backwards = function() {
|
||||
var backwards = false,
|
||||
sel = window.getSelection();
|
||||
|
||||
|
||||
if (!sel.isCollapsed) {
|
||||
var range = document.createRange();
|
||||
range.setStart(sel.anchorNode, sel.anchorOffset);
|
||||
@@ -63,12 +63,12 @@ HighlighterWaiter.prototype._is_selection_backwards = function() {
|
||||
HighlighterWaiter.prototype._get_output_html_offset = function(node, offset) {
|
||||
var sel = window.getSelection(),
|
||||
range = document.createRange();
|
||||
|
||||
|
||||
range.selectNodeContents(document.getElementById("output-html"));
|
||||
range.setEnd(node, offset);
|
||||
sel.removeAllRanges();
|
||||
sel.addRange(range);
|
||||
|
||||
|
||||
return sel.toString().length;
|
||||
};
|
||||
|
||||
@@ -87,7 +87,7 @@ HighlighterWaiter.prototype._get_output_html_selection_offsets = function() {
|
||||
start = 0,
|
||||
end = 0,
|
||||
backwards = false;
|
||||
|
||||
|
||||
if (sel.rangeCount) {
|
||||
range = sel.getRangeAt(sel.rangeCount - 1);
|
||||
backwards = this._is_selection_backwards();
|
||||
@@ -95,7 +95,7 @@ HighlighterWaiter.prototype._get_output_html_selection_offsets = function() {
|
||||
end = this._get_output_html_offset(range.endContainer, range.endOffset);
|
||||
sel.removeAllRanges();
|
||||
sel.addRange(range);
|
||||
|
||||
|
||||
if (backwards) {
|
||||
// If selecting backwards, reverse the start and end offsets for the selection to
|
||||
// prevent deselecting as the drag continues.
|
||||
@@ -103,7 +103,7 @@ HighlighterWaiter.prototype._get_output_html_selection_offsets = function() {
|
||||
sel.extend(sel.anchorNode, range.startOffset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
start: start,
|
||||
end: end
|
||||
@@ -147,11 +147,11 @@ HighlighterWaiter.prototype.input_mousedown = function(e) {
|
||||
this.mouse_button_down = true;
|
||||
this.mouse_target = HighlighterWaiter.INPUT;
|
||||
this.remove_highlights();
|
||||
|
||||
|
||||
var el = e.target,
|
||||
start = el.selectionStart,
|
||||
end = el.selectionEnd;
|
||||
|
||||
|
||||
if (start !== 0 || end !== 0) {
|
||||
document.getElementById("input-selection-info").innerHTML = this.selection_info(start, end);
|
||||
this.highlight_output([{start: start, end: end}]);
|
||||
@@ -169,11 +169,11 @@ HighlighterWaiter.prototype.output_mousedown = function(e) {
|
||||
this.mouse_button_down = true;
|
||||
this.mouse_target = HighlighterWaiter.OUTPUT;
|
||||
this.remove_highlights();
|
||||
|
||||
|
||||
var el = e.target,
|
||||
start = el.selectionStart,
|
||||
end = el.selectionEnd;
|
||||
|
||||
|
||||
if (start !== 0 || end !== 0) {
|
||||
document.getElementById("output-selection-info").innerHTML = this.selection_info(start, end);
|
||||
this.highlight_input([{start: start, end: end}]);
|
||||
@@ -190,7 +190,7 @@ HighlighterWaiter.prototype.output_mousedown = function(e) {
|
||||
HighlighterWaiter.prototype.output_html_mousedown = function(e) {
|
||||
this.mouse_button_down = true;
|
||||
this.mouse_target = HighlighterWaiter.OUTPUT;
|
||||
|
||||
|
||||
var sel = this._get_output_html_selection_offsets();
|
||||
if (sel.start !== 0 || sel.end !== 0) {
|
||||
document.getElementById("output-selection-info").innerHTML = this.selection_info(sel.start, sel.end);
|
||||
@@ -237,10 +237,10 @@ HighlighterWaiter.prototype.output_html_mouseup = function(e) {
|
||||
HighlighterWaiter.prototype.input_mousemove = function(e) {
|
||||
// Check that the left mouse button is pressed
|
||||
if (!this.mouse_button_down ||
|
||||
e.which != 1 ||
|
||||
this.mouse_target != HighlighterWaiter.INPUT)
|
||||
e.which !== 1 ||
|
||||
this.mouse_target !== HighlighterWaiter.INPUT)
|
||||
return;
|
||||
|
||||
|
||||
var el = e.target,
|
||||
start = el.selectionStart,
|
||||
end = el.selectionEnd;
|
||||
@@ -261,14 +261,14 @@ HighlighterWaiter.prototype.input_mousemove = function(e) {
|
||||
HighlighterWaiter.prototype.output_mousemove = function(e) {
|
||||
// Check that the left mouse button is pressed
|
||||
if (!this.mouse_button_down ||
|
||||
e.which != 1 ||
|
||||
this.mouse_target != HighlighterWaiter.OUTPUT)
|
||||
e.which !== 1 ||
|
||||
this.mouse_target !== HighlighterWaiter.OUTPUT)
|
||||
return;
|
||||
|
||||
|
||||
var el = e.target,
|
||||
start = el.selectionStart,
|
||||
end = el.selectionEnd;
|
||||
|
||||
|
||||
if (start !== 0 || end !== 0) {
|
||||
document.getElementById("output-selection-info").innerHTML = this.selection_info(start, end);
|
||||
this.highlight_input([{start: start, end: end}]);
|
||||
@@ -285,10 +285,10 @@ HighlighterWaiter.prototype.output_mousemove = function(e) {
|
||||
HighlighterWaiter.prototype.output_html_mousemove = function(e) {
|
||||
// Check that the left mouse button is pressed
|
||||
if (!this.mouse_button_down ||
|
||||
e.which != 1 ||
|
||||
this.mouse_target != HighlighterWaiter.OUTPUT)
|
||||
e.which !== 1 ||
|
||||
this.mouse_target !== HighlighterWaiter.OUTPUT)
|
||||
return;
|
||||
|
||||
|
||||
var sel = this._get_output_html_selection_offsets();
|
||||
if (sel.start !== 0 || sel.end !== 0) {
|
||||
document.getElementById("output-selection-info").innerHTML = this.selection_info(sel.start, sel.end);
|
||||
@@ -310,7 +310,7 @@ HighlighterWaiter.prototype.selection_info = function(start, end) {
|
||||
var start_str = Utils.pad(start.toString(), width, " ").replace(/ /g, " "),
|
||||
end_str = Utils.pad(end.toString(), width, " ").replace(/ /g, " "),
|
||||
len_str = Utils.pad((end-start).toString(), width, " ").replace(/ /g, " ");
|
||||
|
||||
|
||||
return "start: " + start_str + "<br>end: " + end_str + "<br>length: " + len_str;
|
||||
};
|
||||
|
||||
@@ -327,7 +327,7 @@ HighlighterWaiter.prototype.remove_highlights = function() {
|
||||
|
||||
|
||||
/**
|
||||
* Generates a list of all the highlight functions assigned to operations in the recipe, if the
|
||||
* Generates a list of all the highlight functions assigned to operations in the recipe, if the
|
||||
* entire recipe supports highlighting.
|
||||
*
|
||||
* @returns {Object[]} highlights
|
||||
@@ -338,25 +338,25 @@ HighlighterWaiter.prototype.remove_highlights = function() {
|
||||
HighlighterWaiter.prototype.generate_highlight_list = function() {
|
||||
var recipe_config = this.app.get_recipe_config(),
|
||||
highlights = [];
|
||||
|
||||
|
||||
for (var i = 0; i < recipe_config.length; i++) {
|
||||
if (recipe_config[i].disabled) continue;
|
||||
|
||||
|
||||
// If any breakpoints are set, do not attempt to highlight
|
||||
if (recipe_config[i].breakpoint) return false;
|
||||
|
||||
|
||||
var op = this.app.operations[recipe_config[i].op];
|
||||
|
||||
|
||||
// If any of the operations do not support highlighting, fail immediately.
|
||||
if (op.highlight === false || op.highlight === undefined) return false;
|
||||
|
||||
|
||||
highlights.push({
|
||||
f: op.highlight,
|
||||
b: op.highlight_reverse,
|
||||
args: recipe_config[i].args
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return highlights;
|
||||
};
|
||||
|
||||
@@ -382,12 +382,12 @@ HighlighterWaiter.prototype.highlight_output = function(pos) {
|
||||
for (var i = 0; i < highlights.length; i++) {
|
||||
// Remove multiple highlights before processing again
|
||||
pos = [pos[0]];
|
||||
|
||||
|
||||
if (typeof highlights[i].f == "function") {
|
||||
pos = highlights[i].f(pos, highlights[i].args);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
document.getElementById("output-selection-info").innerHTML = this.selection_info(pos[0].start, pos[0].end);
|
||||
this.highlight(
|
||||
document.getElementById("output-text"),
|
||||
@@ -409,7 +409,7 @@ HighlighterWaiter.prototype.highlight_output = function(pos) {
|
||||
*/
|
||||
HighlighterWaiter.prototype.highlight_input = function(pos) {
|
||||
var highlights = this.generate_highlight_list();
|
||||
|
||||
|
||||
if (!highlights || !this.app.auto_bake_) {
|
||||
return false;
|
||||
}
|
||||
@@ -417,12 +417,12 @@ HighlighterWaiter.prototype.highlight_input = function(pos) {
|
||||
for (var i = 0; i < highlights.length; i++) {
|
||||
// Remove multiple highlights before processing again
|
||||
pos = [pos[0]];
|
||||
|
||||
|
||||
if (typeof highlights[i].b == "function") {
|
||||
pos = highlights[i].b(pos, highlights[i].args);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
document.getElementById("input-selection-info").innerHTML = this.selection_info(pos[0].start, pos[0].end);
|
||||
this.highlight(
|
||||
document.getElementById("input-text"),
|
||||
@@ -444,21 +444,21 @@ HighlighterWaiter.prototype.highlight_input = function(pos) {
|
||||
HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) {
|
||||
if (!this.app.options.show_highlighter) return false;
|
||||
if (!this.app.options.attempt_highlight) return false;
|
||||
|
||||
|
||||
// Check if there is a carriage return in the output dish as this will not
|
||||
// be displayed by the HTML textarea and will mess up highlighting offsets.
|
||||
if (!this.app.dish_str || this.app.dish_str.indexOf("\r") >= 0) return false;
|
||||
|
||||
|
||||
var start_placeholder = "[start_highlight]",
|
||||
start_placeholder_regex = /\[start_highlight\]/g,
|
||||
end_placeholder = "[end_highlight]",
|
||||
end_placeholder_regex = /\[end_highlight\]/g,
|
||||
text = textarea.value;
|
||||
|
||||
|
||||
// Put placeholders in position
|
||||
// If there's only one value, select that
|
||||
// If there are multiple, ignore the first one and select all others
|
||||
if (pos.length == 1) {
|
||||
if (pos.length === 1) {
|
||||
if (pos[0].end < pos[0].start) return;
|
||||
text = text.slice(0, pos[0].start) +
|
||||
start_placeholder + text.slice(pos[0].start, pos[0].end) + end_placeholder +
|
||||
@@ -467,15 +467,15 @@ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) {
|
||||
// O(n^2) - Can anyone improve this without overwriting placeholders?
|
||||
var result = "",
|
||||
end_placed = true;
|
||||
|
||||
|
||||
for (var i = 0; i < text.length; i++) {
|
||||
for (var j = 1; j < pos.length; j++) {
|
||||
if (pos[j].end < pos[j].start) continue;
|
||||
if (pos[j].start == i) {
|
||||
if (pos[j].start === i) {
|
||||
result += start_placeholder;
|
||||
end_placed = false;
|
||||
}
|
||||
if (pos[j].end == i) {
|
||||
if (pos[j].end === i) {
|
||||
result += end_placeholder;
|
||||
end_placed = true;
|
||||
}
|
||||
@@ -485,10 +485,10 @@ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) {
|
||||
if (!end_placed) result += end_placeholder;
|
||||
text = result;
|
||||
}
|
||||
|
||||
|
||||
var css_class = "hl1";
|
||||
//if (colour) css_class += "-"+colour;
|
||||
|
||||
|
||||
// Remove HTML tags
|
||||
text = text.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
@@ -497,7 +497,7 @@ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) {
|
||||
// Convert placeholders to tags
|
||||
.replace(start_placeholder_regex, "<span class=\""+css_class+"\">")
|
||||
.replace(end_placeholder_regex, "</span>") + " ";
|
||||
|
||||
|
||||
// Adjust width to allow for scrollbars
|
||||
highlighter.style.width = textarea.clientWidth + "px";
|
||||
highlighter.innerHTML = text;
|
||||
|
||||
@@ -21,12 +21,12 @@ var InputWaiter = function(app, manager) {
|
||||
19, //Pause
|
||||
20, //Caps
|
||||
27, //Esc
|
||||
33,34,35,36, //PgUp, PgDn, End, Home
|
||||
37,38,39,40, //Directional
|
||||
33, 34, 35, 36, //PgUp, PgDn, End, Home
|
||||
37, 38, 39, 40, //Directional
|
||||
44, //PrntScrn
|
||||
91,92, //Win
|
||||
91, 92, //Win
|
||||
93, //Context
|
||||
112,113,114,115,116,117,118,119,120,121,122,123, //F1-12
|
||||
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, //F1-12
|
||||
144, //Num
|
||||
145, //Scroll
|
||||
];
|
||||
@@ -162,8 +162,8 @@ InputWaiter.prototype.input_drop = function(e) {
|
||||
|
||||
this.set(input_charcode);
|
||||
var recipe_config = this.app.get_recipe_config();
|
||||
if (!recipe_config[0] || recipe_config[0].op != "From Hex") {
|
||||
recipe_config.unshift({op:"From Hex",args:["Space"]});
|
||||
if (!recipe_config[0] || recipe_config[0].op !== "From Hex") {
|
||||
recipe_config.unshift({op:"From Hex", args:["Space"]});
|
||||
this.app.set_recipe_config(recipe_config);
|
||||
}
|
||||
|
||||
@@ -178,14 +178,14 @@ InputWaiter.prototype.input_drop = function(e) {
|
||||
el.value = "Processing... " + Math.round(offset / file.size * 100) + "%";
|
||||
var slice = file.slice(offset, offset + CHUNK_SIZE);
|
||||
reader.readAsArrayBuffer(slice);
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
reader.onload = function(e) {
|
||||
var data = new Uint8Array(reader.result);
|
||||
input_charcode += Utils.to_hex_fast(data);
|
||||
offset += CHUNK_SIZE;
|
||||
seek();
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
|
||||
el.classList.remove("dropping-file");
|
||||
|
||||
@@ -136,8 +136,8 @@ Manager.prototype.initialise_event_listeners = function() {
|
||||
// Options
|
||||
document.getElementById("options").addEventListener("click", this.options.options_click.bind(this.options));
|
||||
document.getElementById("reset-options").addEventListener("click", this.options.reset_options_click.bind(this.options));
|
||||
$(".option-item input:checkbox").on("switchChange.bootstrapSwitch", this.options.switch_change.bind(this.options));
|
||||
$(".option-item input:checkbox").on("switchChange.bootstrapSwitch", this.options.set_word_wrap.bind(this.options));
|
||||
$(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox", this.options.switch_change.bind(this.options));
|
||||
$(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox", this.options.set_word_wrap.bind(this.options));
|
||||
this.add_dynamic_listener(".option-item input[type=number]", "keyup", this.options.number_change, this.options);
|
||||
this.add_dynamic_listener(".option-item input[type=number]", "change", this.options.number_change, this.options);
|
||||
this.add_dynamic_listener(".option-item select", "change", this.options.select_change, this.options);
|
||||
|
||||
@@ -29,7 +29,7 @@ var OperationsWaiter = function(app, manager) {
|
||||
OperationsWaiter.prototype.search_operations = function(e) {
|
||||
var ops, selected;
|
||||
|
||||
if (e.type == "search") { // Search
|
||||
if (e.type === "search") { // Search
|
||||
e.preventDefault();
|
||||
ops = document.querySelectorAll("#search-results li");
|
||||
if (ops.length) {
|
||||
@@ -41,9 +41,9 @@ OperationsWaiter.prototype.search_operations = function(e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (e.keyCode == 13) { // Return
|
||||
if (e.keyCode === 13) { // Return
|
||||
e.preventDefault();
|
||||
} else if (e.keyCode == 40) { // Down
|
||||
} else if (e.keyCode === 40) { // Down
|
||||
e.preventDefault();
|
||||
ops = document.querySelectorAll("#search-results li");
|
||||
if (ops.length) {
|
||||
@@ -51,10 +51,10 @@ OperationsWaiter.prototype.search_operations = function(e) {
|
||||
if (selected > -1) {
|
||||
ops[selected].classList.remove("selected-op");
|
||||
}
|
||||
if (selected == ops.length-1) selected = -1;
|
||||
if (selected === ops.length-1) selected = -1;
|
||||
ops[selected+1].classList.add("selected-op");
|
||||
}
|
||||
} else if (e.keyCode == 38) { // Up
|
||||
} else if (e.keyCode === 38) { // Up
|
||||
e.preventDefault();
|
||||
ops = document.querySelectorAll("#search-results li");
|
||||
if (ops.length) {
|
||||
@@ -71,6 +71,7 @@ OperationsWaiter.prototype.search_operations = function(e) {
|
||||
str = el.value;
|
||||
|
||||
while (search_results_el.firstChild) {
|
||||
$(search_results_el.firstChild).popover("destroy");
|
||||
search_results_el.removeChild(search_results_el.firstChild);
|
||||
}
|
||||
|
||||
@@ -182,7 +183,7 @@ OperationsWaiter.prototype.edit_favourites_click = function(e) {
|
||||
|
||||
// Add favourites to modal
|
||||
var fav_cat = this.app.categories.filter(function(c) {
|
||||
return c.name == "Favourites";
|
||||
return c.name === "Favourites";
|
||||
})[0];
|
||||
|
||||
var html = "";
|
||||
@@ -197,7 +198,7 @@ OperationsWaiter.prototype.edit_favourites_click = function(e) {
|
||||
this.remove_intent = false;
|
||||
|
||||
var editable_list = Sortable.create(edit_favourites_list, {
|
||||
filter: '.remove-icon',
|
||||
filter: ".remove-icon",
|
||||
onFilter: function (evt) {
|
||||
var el = editable_list.closest(evt.item);
|
||||
if (el) {
|
||||
@@ -211,11 +212,11 @@ OperationsWaiter.prototype.edit_favourites_click = function(e) {
|
||||
});
|
||||
|
||||
Sortable.utils.on(edit_favourites_list, "dragleave", function() {
|
||||
this.remove_intent = true;
|
||||
this.remove_intent = true;
|
||||
}.bind(this));
|
||||
|
||||
Sortable.utils.on(edit_favourites_list, "dragover", function() {
|
||||
this.remove_intent = false;
|
||||
this.remove_intent = false;
|
||||
}.bind(this));
|
||||
|
||||
$("#edit-favourites-list [data-toggle=popover]").popover();
|
||||
@@ -259,7 +260,7 @@ OperationsWaiter.prototype.reset_favourites_click = function() {
|
||||
*/
|
||||
OperationsWaiter.prototype.op_icon_mouseover = function(e) {
|
||||
var op_el = e.target.parentNode;
|
||||
if (e.target.getAttribute("data-toggle") == "popover") {
|
||||
if (e.target.getAttribute("data-toggle") === "popover") {
|
||||
$(op_el).popover("hide");
|
||||
}
|
||||
};
|
||||
@@ -276,7 +277,7 @@ OperationsWaiter.prototype.op_icon_mouseleave = function(e) {
|
||||
var op_el = e.target.parentNode,
|
||||
to_el = e.toElement || e.relatedElement;
|
||||
|
||||
if (e.target.getAttribute("data-toggle") == "popover" && to_el === op_el) {
|
||||
if (e.target.getAttribute("data-toggle") === "popover" && to_el === op_el) {
|
||||
$(op_el).popover("show");
|
||||
}
|
||||
};
|
||||
@@ -38,7 +38,7 @@ OutputWaiter.prototype.set = function(data_str, type, duration) {
|
||||
output_highlighter = document.getElementById("output-highlighter"),
|
||||
input_highlighter = document.getElementById("input-highlighter");
|
||||
|
||||
if (type == "html") {
|
||||
if (type === "html") {
|
||||
output_text.style.display = "none";
|
||||
output_html.style.display = "block";
|
||||
output_highlighter.display = "none";
|
||||
@@ -51,7 +51,7 @@ OutputWaiter.prototype.set = function(data_str, type, duration) {
|
||||
var script_elements = output_html.querySelectorAll("script");
|
||||
for (var i = 0; i < script_elements.length; i++) {
|
||||
try {
|
||||
eval(script_elements[i].innerHTML); // jshint ignore:line
|
||||
eval(script_elements[i].innerHTML); // eslint-disable-line no-eval
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
@@ -22,8 +22,7 @@ var RecipeWaiter = function(app, manager) {
|
||||
* Sets up the drag and drop capability for operations in the operations and recipe areas.
|
||||
*/
|
||||
RecipeWaiter.prototype.initialise_operation_drag_n_drop = function() {
|
||||
var rec_list = document.getElementById("rec_list"),
|
||||
op_lists = document.querySelectorAll(".category .op_list");
|
||||
var rec_list = document.getElementById("rec_list");
|
||||
|
||||
|
||||
// Recipe list
|
||||
@@ -52,6 +51,13 @@ RecipeWaiter.prototype.initialise_operation_drag_n_drop = function() {
|
||||
this.remove_intent = true;
|
||||
this.app.progress = 0;
|
||||
}.bind(this));
|
||||
|
||||
Sortable.utils.on(rec_list, "touchend", function(e) {
|
||||
var loc = e.changedTouches[0],
|
||||
target = document.elementFromPoint(loc.clientX, loc.clientY);
|
||||
|
||||
this.remove_intent = !rec_list.contains(target);
|
||||
}.bind(this));
|
||||
|
||||
// Favourites category
|
||||
document.querySelector("#categories a").addEventListener("dragover", this.fav_dragover.bind(this));
|
||||
@@ -95,7 +101,7 @@ RecipeWaiter.prototype.create_sortable_seed_list = function(list_el) {
|
||||
*/
|
||||
RecipeWaiter.prototype.op_sort_end = function(evt) {
|
||||
if (this.remove_intent) {
|
||||
if (evt.item.parentNode.id == "rec_list") {
|
||||
if (evt.item.parentNode.id === "rec_list") {
|
||||
evt.item.remove();
|
||||
}
|
||||
return;
|
||||
@@ -190,7 +196,7 @@ RecipeWaiter.prototype.ing_change = function() {
|
||||
RecipeWaiter.prototype.disable_click = function(e) {
|
||||
var icon = e.target;
|
||||
|
||||
if (icon.getAttribute("disabled") == "false") {
|
||||
if (icon.getAttribute("disabled") === "false") {
|
||||
icon.setAttribute("disabled", "true");
|
||||
icon.classList.add("disable-icon-selected");
|
||||
icon.parentNode.parentNode.classList.add("disabled");
|
||||
@@ -215,7 +221,7 @@ RecipeWaiter.prototype.disable_click = function(e) {
|
||||
RecipeWaiter.prototype.breakpoint_click = function(e) {
|
||||
var bp = e.target;
|
||||
|
||||
if (bp.getAttribute("break") == "false") {
|
||||
if (bp.getAttribute("break") === "false") {
|
||||
bp.setAttribute("break", "true");
|
||||
bp.classList.add("breakpoint-selected");
|
||||
} else {
|
||||
@@ -269,7 +275,7 @@ RecipeWaiter.prototype.get_config = function() {
|
||||
ing_list = operations[i].querySelectorAll(".arg");
|
||||
|
||||
for (var j = 0; j < ing_list.length; j++) {
|
||||
if (ing_list[j].getAttribute("type") == "checkbox") {
|
||||
if (ing_list[j].getAttribute("type") === "checkbox") {
|
||||
// checkbox
|
||||
ingredients[j] = ing_list[j].checked;
|
||||
} else if (ing_list[j].classList.contains("toggle-string")) {
|
||||
@@ -289,11 +295,11 @@ RecipeWaiter.prototype.get_config = function() {
|
||||
args: ingredients
|
||||
};
|
||||
|
||||
if (disabled && disabled.getAttribute("disabled") == "true") {
|
||||
if (disabled && disabled.getAttribute("disabled") === "true") {
|
||||
item.disabled = true;
|
||||
}
|
||||
|
||||
if (bp && bp.getAttribute("break") == "true") {
|
||||
if (bp && bp.getAttribute("break") === "true") {
|
||||
item.breakpoint = true;
|
||||
}
|
||||
|
||||
@@ -312,7 +318,7 @@ RecipeWaiter.prototype.get_config = function() {
|
||||
RecipeWaiter.prototype.update_breakpoint_indicator = function(position) {
|
||||
var operations = document.querySelectorAll("#rec_list li.operation");
|
||||
for (var i = 0; i < operations.length; i++) {
|
||||
if (i == position) {
|
||||
if (i === position) {
|
||||
operations[i].classList.add("break");
|
||||
} else {
|
||||
operations[i].classList.remove("break");
|
||||
@@ -353,10 +359,11 @@ RecipeWaiter.prototype.build_recipe_operation = function(el) {
|
||||
*/
|
||||
RecipeWaiter.prototype.add_operation = function(name) {
|
||||
var item = document.createElement("li");
|
||||
item.classList.add("operation");
|
||||
item.innerHTML = name;
|
||||
this.build_recipe_operation(item);
|
||||
document.getElementById("rec_list").appendChild(item);
|
||||
|
||||
item.classList.add("operation");
|
||||
item.innerHTML = name;
|
||||
this.build_recipe_operation(item);
|
||||
document.getElementById("rec_list").appendChild(item);
|
||||
|
||||
item.dispatchEvent(this.manager.operationadd);
|
||||
return item;
|
||||
@@ -413,4 +420,4 @@ RecipeWaiter.prototype.op_add = function(e) {
|
||||
*/
|
||||
RecipeWaiter.prototype.op_remove = function(e) {
|
||||
window.dispatchEvent(this.manager.statechange);
|
||||
};
|
||||
};
|
||||
@@ -20,23 +20,23 @@ var SeasonalWaiter = function(app, manager) {
|
||||
*/
|
||||
SeasonalWaiter.prototype.load = function() {
|
||||
var now = new Date();
|
||||
|
||||
|
||||
// Snowfall
|
||||
if (now.getMonth() == 11 && now.getDate() > 12) { // Dec 13 -> Dec 31
|
||||
if (now.getMonth() === 11 && now.getDate() > 12) { // Dec 13 -> Dec 31
|
||||
this.app.options.snow = false;
|
||||
this.create_snow_option();
|
||||
this.manager.add_dynamic_listener(".option-item input:checkbox[option='snow']", "switchChange.bootstrapSwitch", this.let_it_snow, this);
|
||||
this.manager.add_window_listener("resize", this.let_it_snow, this);
|
||||
$(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox[option='snow']", this.let_it_snow.bind(this));
|
||||
window.addEventListener("resize", this.let_it_snow.bind(this));
|
||||
this.manager.add_listeners(".btn", "click", this.shake_off_snow, this);
|
||||
if (now.getDate() == 25) this.let_it_snow();
|
||||
if (now.getDate() === 25) this.let_it_snow();
|
||||
}
|
||||
|
||||
|
||||
// SpiderChef
|
||||
// if (now.getMonth() == 3 && now.getDate() == 1) { // Apr 1
|
||||
// if (now.getMonth() === 3 && now.getDate() === 1) { // Apr 1
|
||||
// this.insert_spider_icons();
|
||||
// this.insert_spider_text();
|
||||
// }
|
||||
|
||||
|
||||
// Konami code
|
||||
this.kkeys = [];
|
||||
window.addEventListener("keydown", this.konami_code_listener.bind(this));
|
||||
@@ -51,13 +51,13 @@ SeasonalWaiter.prototype.insert_spider_icons = function() {
|
||||
var spider16 = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVQ4y2NgGJaAmYGBgVnf0oKJgYGBobWtXamqqoYTn2I4CI+LTzM2NTulpKbu+vPHz2dV5RWlluZmi3j5+KqFJSSEzpw8uQPdAEYYIzo5Kfjrl28rWFlZzjAzMYuEBQao3Lh+g+HGvbsMzExMDN++fWf4/PXLBzY2tqYNK1f2+4eHM2xcuRLigsT09Igf3384MTExbf767etBI319jU8fPsi+//jx/72HDxh5uLkZ7ty7y/Dz1687Avz8n2UUFR3Z2NjOySoqfmdhYGBg+PbtuwI7O8e5H79+8X379t357PnzYo+ePP7y6cuXc9++f69nYGRsvf/w4XdtLS2R799/bBUWFHr57sP7Jbs3b/ZkzswvUP3165fZ7z9//r988WIVAyPDr8tXr576+u3bpb9//7YwMjKeV1dV41NWVGoVEhDgPH761DJREeHaz1+/lqlpafUx6+jrRfz4+fPy+w8fTu/fsf3uw7t3L39+//4cv7DwGQYGhpdPbt9m4BcRFlNWVJC4fuvWASszs4C379792Ldt2xZBUdEdDP5hYSqQGIjDGa965uYKCalpZQwMDAxhMTG9DAwMDLaurhIkJY7A8IgGBgYGBgd3Dz2yUpeFo6O4rasrA9T24ZRxAAMTwMpgEJwLAAAAAElFTkSuQmCC",
|
||||
spider32 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACYVBMVEUAAAAcJSU2Pz85QkM9RUWEhIWMjI2MkJEcJSU2Pz85QkM9RUWWlpc9RUVXXl4cJSU2Pz85QkM8REU9RUVRWFh6ens9RUVCSkpNVFRdY2McJSU5QkM7REQ9RUVGTk5KUlJQVldcY2Rla2uTk5WampscJSVUWltZX2BrcHF1e3scJSUjLCw9RUVASEhFTU1HTk9bYWJeZGRma2xudHV1eHiZmZocJSUyOjpJUFFQVldSWlpTWVpXXl5YXl5rb3B9fX6RkZIcJSUmLy8tNTU9RUVFTU1IT1BOVldRV1hTWlp0enocJSUfKChJUFBWXV1hZ2hnbGwcJSVETExLUlJLU1NNVVVPVlZYXl9cY2RiaGlobW5rcXFyd3h0eHgcJSUpMTFDS0tQV1dRV1hSWFlWXF1bYWJma2tobW5uc3SsrK0cJSVJUFBMVFROVlZVW1xZX2BdYmNhZ2hjaGhla2tqcHBscHE4Pz9KUlJRWVlSWVlXXF1aYGFbYWFfZWZlampqbW4cJSUgKSkiKysuNjY0PD01PT07QkNES0tHTk5JUFBMUlNMU1NOU1ROVVVPVVZRVlZRV1dSWVlWXFxXXV5aX2BbYWFbYWJcYmJcYmNcY2RdYmNgZmZhZmdkaWpkampkamtlamtla2tma2tma2xnbG1obW5pbG1pb3Bqb3Brb3BtcXJudHVvcHFvcXJvc3NwcXNwdXVxc3RzeXl1eXp2eXl3ent6e3x+gYKAhISBg4SKi4yLi4yWlpeampudnZ6fn6CkpaanqKiur6+vr7C4uLm6urq6u7u8vLy9vb3Av8DR0dL2b74UAAAAgHRSTlMAEBAQEBAQECAgICAgMDBAQEBAQEBAUFBQUGBgYGBgYGBgYGBgcHBwcHCAgICAgICAgICAgICPj4+Pj4+Pj4+Pj5+fn5+fn5+fn5+vr6+vr6+/v7+/v7+/v7+/v7+/z8/Pz8/Pz8/Pz8/P39/f39/f39/f39/f7+/v7+/v7+/v78x6RlYAAAGBSURBVDjLY2AYWUCSgUGAk4GBTdlUhQebvP7yjIgCPQbWzBMnjx5wwJSX37Rwfm1isqj9/iPHTuxYlyeMJi+yunfptBkZOw/uWj9h3vatcycu8eRGlldb3Vsts3ph/cFTh7fN3bCoe2Vf8+TZoQhTvBa6REozVC7cuPvQnmULJm1e2z+308eyJieEBSLPXbKQIUqQIczk+N6eNaumtnZMaWhaHM89m8XVCqJA02Y5w0xmga6yfVsamtrN4xoXNzS0JTHkK3CXy4EVFMumcxUy2LbENTVkZfEzMDAudtJyTmNwS2XQreAFyvOlK9louDNVaXurmjkGgnTMkWDgXswtNouFISEX6Awv+RihQi5OcYY4DtVARpCCFCMGhiJ1hjwFBpagEAaWEpFoC0WQOCOjFMRRwXYMDB4BDLJ+QLYsg7GBGjtasLnEMjCIrWBgyAZ7058FI9x1SoFEnTCDsCyIhynPILYYSFgbYpUDA5bpQBluXzxpI1yYAbd2sCMYRhwAAHB9ZPztbuMUAAAAAElFTkSuQmCC",
|
||||
spider64 = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAJZUlEQVR42u1ZaXMU1xXlJ+gHpFITOy5sAcnIYCi2aIL2bTSSZrSP1NpHK41kISQBHgFaQIJBCMwi4TFUGYcPzggwEMcxHVGxQaag5QR/np/QP+Hmnsdr0hpmtEACwulb9aq7p7d3zz333Pt61q2zzTbbbLPNNttss80222yzzTbbVmu7MzKcJRWVkXjntqam6jyURPeGQqeTpqbOqp+evxC5dGlam5m5rE3PzGi8Hzx/4aLzbXDe09HdYxwZHaPc4mLFXVoW9pRXGNv3pDngeHlNLfE2Ljjj4xPOUGjSYKfpq6/+TLdv36bbX39Nt27epGvXvqSLl6bp3LlPtdOnz7jWrPNZ7kLCKCovp5bOTmP/4EHq6vmYMtzuSKbbbQCAHE8Rxd47MjrmuHjxkjF3/z4tLCzQkyc6PX78mB49ekQPHjygub/P0d27f6FrX/6JpqbO0YkT48E1R/sCr9cYHZ+gqrp64mPq+riXcoqKKC0vP9q6VyV/fQOiH+LrsPVY7z82PBKZnb1Bd+7cpfn5eQbgCT1hAADC/MN5uj83R99881eanZ2lL5gN/nrxjihAXwvOJ7l9vuiBQ4dF9LEtLC0V+2rv/ijTX6luaCS3rxT57wADAMTBQ4c9PIIDg4PBwYOHaHhklM5MnSWkwLff/o0+v3qVHv34Iz344QEDc4d8VVXUEAhQXXMzVdQqzKweKq6oABARzOGNOZ+Wl6fD6T25ubQrPT0E5xF93o82tbdjkkZ+iZfAAgbD6fZ6o339A8S0p7HjJ2h4eIQOHf6EujlV9nX3UOj0JDXzfXje+KlTdOPGDeF0T1+fGHg+2JSen08tHZ0CiPySEoPn8vq1IaOgIAzneQK0UzjcQd6qaqrlCVfV1+tpubnRnv5+2p2ZqYMF/oZGPTh0xLhy5Sr9wLn9j++/p5nLn9FxBoLZQJ1dKrkys6iYNeTExEnx3PqWFuF4W9deKq2upkEGCyzyMBC709MFC7r391Fjayv9MSdHZyCU1xJ5FjrNdN6VnU1KS4CjU4Yoh/m8CsezCguFJgAMV05ueP+BfhF5OL+gL9A/f/qJ7t3TaPLMFB09eoy6mTkMGg2PjTELOsS20OcTACgMKqJugqA0NtE7ycn0202b6A+ZmYIVAAKApGZlgRHB/0lqQPAqFEVE9hntM0R0ZblTzeswWdCeU8HAtYW+Uu0AUx+0f/jwoXD+56c/073v7tHU2XMiFbrUfVTNAtfL10FIAQL2QftsBrOEnavld5kg7E7PoF+99x79ev162rJrV9RMi6a2dvKUlQsR5uAgII7/ivMsbEE4g2hggjzC7LQL1OftovoO0WJKUn0gYEAn2hmMXo4QHIXQIfLfsfOXPwuLvB86cpQqamooyEzg1BLMwv04RkoE+B3B4BBBMHEcCwIP0N+ByJdUVhpgBJ7j4WvdANDjeTUglOaWEChfJF7uJzPX2HEPaj1vg7EAbHO5QnAeIPgqKvUB7gtAdbBgcvKMqOnc/NAIVwCcq21qElFnCgvaI9cBBFKhlSPbPzBIbbzduGULpWzfLkDAdZs++sgEwSlZqoIJMg2CzFSNGzODwdBfOi26+w4YTCm9LhDQwQDzdzguFf4FALjciTws8/u1yyx2N2/dovPnL9DRY8PkZ204xtuhoSM0wI7V8DEiirQCCHD+99u2CUdx3Lmvmz7kfemoGDgPEDr4HNKAf1MlAC4wgMGLWFJXQUrklZSEX6rLE2rOyDIQGlhgBUAyYFEZkm2vAGVi4qQ+x83M0389pevXr6OToy07d4qcR+krr/KzqpeJ/IfjGO+npDx3FCKHVPjd1q2LAMBI3ryZ9vL7U56BEzLfD80ACFba876OlGCQV9dAcT0Pyw7PgWij6zPP5Xt9EYgg+n3LosdVzdfz5CI8KY1LH31+5Yro9KanZwjHmPzmHTsoOeVDemfDBuE8dGVnWpqx3unUrE4CDLCAG64XAHB88IFgQV5xMY7DFmc16A6CZvnNBYYVcW+yKj0A/VHTsQ8dwMPNc6X+Gg0VIGbVpzYGWundjRujmGQWi9Eol7+TJ0/R2Nhx2sNlM9YJRPDdDRsM5DGPJB4KHOIhngHhAwixAGAAuDZ2lsuiYnFWBQOYrdEYNochilyiV6YHoH+rRNJkAG+fUw31PzU7Z1EFKPD69CIuQ1Bm6URoh8tFmVym3nc6rZOPyi0cD8HxeHPg3x2InNrbS79JTsYzNXmPuBclsO3ZvKwAOJEGsmI5rT0M+gSf3y9K5LIA1LUEIlL1k0AhCYBH5r9TCqBqib4D+c/1PyInGOThkvuaHCYALhlpbQWBMGR/4IpzTqlpbKQyf0045vdoe0zATHagSYMeWFMkbscnHRYPZjoFJaIiUkz9EJy15j/X3qCsAIqMcFjSWrNE1Iygg0fEmrtLzEUTdT/OhBFht9fHDVCbEUt3LJxi08B8Xj6vTDESriq9lVWqBECgHujqiqAUmufb1X3cfRXoluhjZWiwkOnSUcUS6ZD8LUmmhks6b5j1ezkAkAKZBe5QvPPcNBnoCawMwT66Qxk0R2xwwRAui2iSDGuaPDcubzo3EJq8wcx/9Vmk3QryH42QBQCFF0UagIiJtjX6DskIXTLEucJSHIIIMuO0BOcjn3A3ybU/lu5RCUBc5qA0Ih0Q2EWiCPRk7VfMNhjLW1zETic1tLYZDMKyuSsdfh5l6bwho5+0il4kyA0VohlNcF5FP8DlWo/VB16HYB2hJ0pzgIe2mcXxP2IOumPRY17U0tll8KIkZNb+sppafOxYkQPSaYfchyYoL9GMqWYpTLRIq1QUcT4O3aPQgqVqPwIOIMwDhzX6mQUFIQAgo+9MzcrWrML3mj6+YIKiFCZyhL87RqVQKrEskF+P1BUvfLCAkfRwoPUtq6l5o5+lZb5SolJo6oT8avTCl+c9OTmat6pKW8mLkvBpGzlvsiGuQr4ZEEwA1EQgoR/gNtxIxKBluz+OtMJiF31jHxqXBiAqAUj4WRxpADFM0DCFlv1khvX7Wol4vF4AIldVVxdZqlrIfiCYQPHDy6bAGv7nKYRVY6JewExZVAP+ey5Rv+Ba97aaUHMW5NauLmMZFkegBb/EP14d6NoS9QLWFSzWBmuZza8CQmSpXsAqmGtVy14VALWuuYWWy+W3OteXa4jwceQX6+BKG6J1/8+2VCNkm2222WabbbbZZpttttlmm22rt38DCdA0vq3bcAkAAAAASUVORK5CYII=";
|
||||
|
||||
|
||||
// Favicon
|
||||
document.querySelector("link[rel=icon]").setAttribute("href", "data:image/png;base64," + spider16);
|
||||
|
||||
|
||||
// Bake button
|
||||
document.querySelector("#bake img").setAttribute("src", "data:image/png;base64," + spider32);
|
||||
|
||||
|
||||
// About box
|
||||
document.querySelector(".about-img-left").setAttribute("src", "data:image/png;base64," + spider64);
|
||||
};
|
||||
@@ -70,23 +70,23 @@ SeasonalWaiter.prototype.insert_spider_icons = function() {
|
||||
SeasonalWaiter.prototype.insert_spider_text = function() {
|
||||
// Title
|
||||
document.title = document.title.replace(/Cyber/g, "Spider");
|
||||
|
||||
|
||||
// Body
|
||||
SeasonalWaiter.tree_walk(document.body, function(node) {
|
||||
// process only text nodes
|
||||
if (node.nodeType == 3) {
|
||||
if (node.nodeType === 3) {
|
||||
node.nodeValue = node.nodeValue.replace(/Cyber/g, "Spider");
|
||||
}
|
||||
}, true);
|
||||
|
||||
|
||||
// Bake button
|
||||
SeasonalWaiter.tree_walk(document.getElementById("bake-group"), function(node) {
|
||||
// process only text nodes
|
||||
if (node.nodeType == 3) {
|
||||
if (node.nodeType === 3) {
|
||||
node.nodeValue = node.nodeValue.replace(/Bake/g, "Spin");
|
||||
}
|
||||
}, true);
|
||||
|
||||
|
||||
// Recipe title
|
||||
document.querySelector("#recipe .title").innerHTML = "Web";
|
||||
};
|
||||
@@ -99,13 +99,13 @@ SeasonalWaiter.prototype.insert_spider_text = function() {
|
||||
SeasonalWaiter.prototype.create_snow_option = function() {
|
||||
var options_body = document.getElementById("options-body"),
|
||||
option_item = document.createElement("div");
|
||||
|
||||
|
||||
option_item.className = "option-item";
|
||||
option_item.innerHTML =
|
||||
option_item.innerHTML =
|
||||
"<input type='checkbox' option='snow' checked />\
|
||||
Let it snow";
|
||||
options_body.appendChild(option_item);
|
||||
|
||||
|
||||
this.manager.options.load();
|
||||
};
|
||||
|
||||
@@ -117,47 +117,48 @@ SeasonalWaiter.prototype.create_snow_option = function() {
|
||||
SeasonalWaiter.prototype.let_it_snow = function() {
|
||||
$(document).snowfall("clear");
|
||||
if (!this.app.options.snow) return;
|
||||
|
||||
|
||||
var options = {},
|
||||
firefox_version = navigator.userAgent.match(/Firefox\/(\d\d?)/);
|
||||
|
||||
|
||||
if (firefox_version && parseInt(firefox_version[1], 10) < 30) {
|
||||
// Firefox < 30
|
||||
options = {
|
||||
flakeCount : 10,
|
||||
flakeColor : '#fff',
|
||||
flakePosition: 'absolute',
|
||||
minSize : 1,
|
||||
maxSize : 2,
|
||||
minSpeed : 1,
|
||||
maxSpeed : 5,
|
||||
round : false,
|
||||
shadow : false,
|
||||
collection : false,
|
||||
collectionHeight : 20,
|
||||
deviceorientation : true
|
||||
flakeCount: 10,
|
||||
flakeColor: "#fff",
|
||||
flakePosition: "absolute",
|
||||
minSize: 1,
|
||||
maxSize: 2,
|
||||
minSpeed: 1,
|
||||
maxSpeed: 5,
|
||||
round: false,
|
||||
shadow: false,
|
||||
collection: false,
|
||||
collectionHeight: 20,
|
||||
deviceorientation: true
|
||||
};
|
||||
} else {
|
||||
// All other browsers
|
||||
options = {
|
||||
flakeCount : 35, //35
|
||||
flakeColor : '#fff',
|
||||
flakePosition: 'absolute',
|
||||
minSize : 5,
|
||||
maxSize : 8,
|
||||
minSpeed : 1,
|
||||
maxSpeed : 5,
|
||||
round : true,
|
||||
shadow : true,
|
||||
collection : ".btn",
|
||||
collectionHeight : 20,
|
||||
deviceorientation : true
|
||||
flakeCount: 35,
|
||||
flakeColor: "#fff",
|
||||
flakePosition: "absolute",
|
||||
minSize: 5,
|
||||
maxSize: 8,
|
||||
minSpeed: 1,
|
||||
maxSpeed: 5,
|
||||
round: true,
|
||||
shadow: true,
|
||||
collection: ".btn",
|
||||
collectionHeight: 20,
|
||||
deviceorientation: true
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
$(document).snowfall(options);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* When a button is clicked, shake the snow off that button.
|
||||
* #letitsnow
|
||||
@@ -171,12 +172,12 @@ SeasonalWaiter.prototype.shake_off_snow = function(e) {
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
$(this).fadeIn();
|
||||
};
|
||||
|
||||
|
||||
for (var i = 0; i < canvases.length; i++) {
|
||||
canvas = canvases[i];
|
||||
if (canvas.style.left == rect.left + "px" && canvas.style.top == (rect.top - 20) + "px") {
|
||||
if (canvas.style.left === rect.left + "px" && canvas.style.top === (rect.top - 20) + "px") {
|
||||
var ctx = canvas.getContext("2d");
|
||||
|
||||
|
||||
$(canvas).fadeOut("slow", remove_func);
|
||||
break;
|
||||
}
|
||||
@@ -191,13 +192,13 @@ SeasonalWaiter.prototype.shake_off_snow = function(e) {
|
||||
*/
|
||||
SeasonalWaiter.prototype.konami_code_listener = function(e) {
|
||||
this.kkeys.push(e.keyCode);
|
||||
var konami = [38,38,40,40,37,39,37,39,66,65];
|
||||
var konami = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
|
||||
for (var i = 0; i < this.kkeys.length; i++) {
|
||||
if (this.kkeys[i] != konami[i]) {
|
||||
if (this.kkeys[i] !== konami[i]) {
|
||||
this.kkeys = [];
|
||||
break;
|
||||
}
|
||||
if (i == konami.length - 1) {
|
||||
if (i === konami.length - 1) {
|
||||
$("body").children().toggleClass("konami");
|
||||
this.kkeys = [];
|
||||
}
|
||||
@@ -216,14 +217,14 @@ SeasonalWaiter.prototype.konami_code_listener = function(e) {
|
||||
SeasonalWaiter.tree_walk = (function() {
|
||||
// Create closure for constants
|
||||
var skipTags = {
|
||||
"SCRIPT": true, "IFRAME": true, "OBJECT": true,
|
||||
"SCRIPT": true, "IFRAME": true, "OBJECT": true,
|
||||
"EMBED": true, "STYLE": true, "LINK": true, "META": true
|
||||
};
|
||||
|
||||
|
||||
return function(parent, fn, all_nodes) {
|
||||
var node = parent.firstChild;
|
||||
|
||||
while (node && node != parent) {
|
||||
|
||||
while (node && node !== parent) {
|
||||
if (all_nodes || node.nodeType === 1) {
|
||||
if (fn(node) === false) {
|
||||
return(false);
|
||||
@@ -242,7 +243,7 @@ SeasonalWaiter.tree_walk = (function() {
|
||||
} else {
|
||||
// No child and no nextsibling
|
||||
// Find parent that has a nextSibling
|
||||
while ((node = node.parentNode) != parent) {
|
||||
while ((node = node.parentNode) !== parent) {
|
||||
if (node.nextSibling) {
|
||||
node = node.nextSibling;
|
||||
break;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
203 source files
|
||||
104221 lines
|
||||
104466 lines
|
||||
4.0M size
|
||||
|
||||
136 JavaScript source files
|
||||
95131 lines
|
||||
95316 lines
|
||||
3.4M size
|
||||
|
||||
78 third party JavaScript source files
|
||||
@@ -11,11 +11,11 @@
|
||||
2.7M size
|
||||
|
||||
58 first party JavaScript source files
|
||||
18754 lines
|
||||
18939 lines
|
||||
724K size
|
||||
|
||||
3.1M uncompressed JavaScript size
|
||||
3.2M uncompressed JavaScript size
|
||||
1.7M compressed JavaScript size
|
||||
|
||||
15 categories
|
||||
152 operations
|
||||
155 operations
|
||||
Reference in new issue
Block a user