From 921fe75d7d3ed1756870700f948461c9e549039d Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Wed, 21 Jun 2017 10:48:31 -0700 Subject: [PATCH] autoType sequences no longer require double backslashes --- Gruntfile.js | 92 +- _posts/2017-06-15-adventures-in-archiving.md | 2 +- apps/pcx86/1981/visicalc/README.md | 2 +- apps/pcx86/1982/ratbas/README.md | 6 +- apps/pcx86/1983/adventmath/README.md | 4 +- .../pcx86/machine/5150/cga/256kb/machine.xml | 8 +- disks/pcx86/apps/ibm/topview/1.01/README.md | 12 +- docs/pcx86/examples/pcx86-dbg.js | 2 +- docs/pcx86/examples/pcx86.js | 2 +- modules/markout/lib/markout.js | 7 +- versions/c1pjs/1.35.0/c1p-dbg.js | 2 +- versions/c1pjs/1.35.0/c1p-uncompiled.js | 14262 +++ versions/c1pjs/1.35.0/c1p.js | 2 +- versions/pc8080/1.35.0/pc8080-dbg.js | 2 +- versions/pc8080/1.35.0/pc8080-uncompiled.js | 25300 +++++ versions/pc8080/1.35.0/pc8080.js | 2 +- versions/pcx86/1.35.0/pcx86-dbg.js | 2 +- versions/pcx86/1.35.0/pcx86-uncompiled.js | 76498 ++++++++++++++++ versions/pcx86/1.35.0/pcx86.js | 2 +- versions/pdpjs/1.35.0/components.xsl | 2 +- versions/pdpjs/1.35.0/pdp10-dbg.js | 2 +- versions/pdpjs/1.35.0/pdp10-uncompiled.js | 27999 ++++++ versions/pdpjs/1.35.0/pdp10.js | 2 +- versions/pdpjs/1.35.0/pdp11-dbg.js | 2 +- versions/pdpjs/1.35.0/pdp11-uncompiled.js | 31876 +++++++ versions/pdpjs/1.35.0/pdp11.js | 2 +- 26 files changed, 176019 insertions(+), 75 deletions(-) create mode 100644 versions/c1pjs/1.35.0/c1p-uncompiled.js create mode 100644 versions/pc8080/1.35.0/pc8080-uncompiled.js create mode 100644 versions/pcx86/1.35.0/pcx86-uncompiled.js create mode 100644 versions/pdpjs/1.35.0/pdp10-uncompiled.js create mode 100644 versions/pdpjs/1.35.0/pdp11-uncompiled.js diff --git a/Gruntfile.js b/Gruntfile.js index b9619dfc0..b5a462bf7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -30,14 +30,14 @@ /* * Overview - * --- + * -------- * Based on the specified version in package.json, we build a matching version folder in /versions * for each of the machine simulations; each of those folders in turn receives compiled versions of * the corresponding machine simulation scripts (c1p*.js and pc*.js), along with copies of both the * shared and machine-specific CSS and XSL stylesheets that the scripts rely on. * * Usage - * --- + * ----- * grunt [task[:target] ...] [--rebuild] * * If no tasks are specified, the "default" task alias will be run. If --rebuild is present, @@ -53,7 +53,7 @@ * it's also possible I didn't have it configured properly at the time. * * Utility Tasks - * --- + * ------------- * grunt compile: runs "closureCompiler" to produce compiled c1p*.js and pc*.js scripts * grunt nocompile: runs "concat" to produce uncompiled c1p*.js and pc*.js scripts * grunt promote: runs "replace" to promote all machine XML files to the current version @@ -62,13 +62,13 @@ * a final "grunt compile" (or "grunt --rebuild") and retest before pushing out a new release. * * The "manifester" Task - * --- + * --------------------- * I added the "manifester" task to process manifest.xml files, which I use to record the existence * application archives. "manifester" walks all the manifests and verifies that they're still valid, * and optionally fetches local copies of everything described. * * The "prepjs" Task - * --- + * ----------------- * I added the "prepjs" task to perform the same constant inlining that my old PHP script "inline.php" * used to do as part of the old "jsmachines.net" build process. Unfortunately, Grunt appears to be * a real memory hog, and so "prepjs" had to be disabled until I could resolve that issue (see my notes @@ -120,11 +120,11 @@ module.exports = function(grunt) { */ var pkg = grunt.file.readJSON("package.json"); - var tmpC1Pjs = "./tmp/c1pjs/" + pkg.version + "/c1p.js"; - var tmpPCx86 = "./tmp/pcx86/" + pkg.version + "/pcx86.js"; - var tmpPC8080 = "./tmp/pc8080/" + pkg.version + "/pc8080.js"; - var tmpPDP10 = "./tmp/pdpjs/" + pkg.version + "/pdp10.js"; - var tmpPDP11 = "./tmp/pdpjs/" + pkg.version + "/pdp11.js"; + var tmpC1Pjs = "./versions/c1pjs/" + pkg.version + "/c1p-uncompiled.js"; + var tmpPCx86 = "./versions/pcx86/" + pkg.version + "/pcx86-uncompiled.js"; + var tmpPC8080 = "./versions/pc8080/" + pkg.version + "/pc8080-uncompiled.js"; + var tmpPDP10 = "./versions/pdpjs/" + pkg.version + "/pdp10-uncompiled.js"; + var tmpPDP11 = "./versions/pdpjs/" + pkg.version + "/pdp11-uncompiled.js"; grunt.initConfig({ pkg: pkg, // pass the "package.json" object to initConfig() as a property, too @@ -380,11 +380,11 @@ module.exports = function(grunt) { * If/when that issue is fixed, this feature may be removed. */ TEMPcompilerOpts: { - // create_source_map: "./tmp/c1pjs/" + pkg.version + "/c1p.map", + create_source_map: "./versions/c1pjs/" + pkg.version + "/c1p.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false"], - // output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p.map\"" - output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/c1pjs/" + pkg.version + "/c1p.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.c1pJSFiles, src: tmpC1Pjs, @@ -392,11 +392,11 @@ module.exports = function(grunt) { }, "c1p-dbg.js": { TEMPcompilerOpts: { - // create_source_map: "./tmp/c1pjs/" + pkg.version + "/c1p-dbg.map", + create_source_map: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false"], - // output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p-dbg.map\"" - output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/c1pjs/" + pkg.version + "/c1p-dbg.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.c1pJSFiles, src: tmpC1Pjs, @@ -404,11 +404,11 @@ module.exports = function(grunt) { }, "pcx86.js": { TEMPcompilerOpts: { - // create_source_map: "./tmp/pcx86/" + pkg.version + "/pcx86.map", + create_source_map: "./versions/pcx86/" + pkg.version + "/pcx86.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=true"], - // output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pcx86/" + pkg.version + "/pcx86.map\"" - output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pcx86/" + pkg.version + "/pcx86.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pcX86Files, src: tmpPCx86, @@ -419,11 +419,11 @@ module.exports = function(grunt) { * Technically, this is the one case we don't need to override the default 'define' settings, but maybe it's best to be explicit. */ TEMPcompilerOpts: { - // create_source_map: "./tmp/pcx86/" + pkg.version + "/pcx86-dbg.map", + create_source_map: "./versions/pcx86/" + pkg.version + "/pcx86-dbg.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=true"], - // output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pcx86/" + pkg.version + "/pcx86-dbg.map\"" - output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pcx86/" + pkg.version + "/pcx86-dbg.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pcX86Files, src: tmpPCx86, @@ -431,11 +431,11 @@ module.exports = function(grunt) { }, "pc8080.js": { TEMPcompilerOpts: { - // create_source_map: "./tmp/pc8080/" + pkg.version + "/pc8080.map", + create_source_map: "./versions/pc8080/" + pkg.version + "/pc8080.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=false"], - // output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pc8080/" + pkg.version + "/pc8080.map\"" - output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pc8080/" + pkg.version + "/pc8080.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pc8080Files, src: tmpPC8080, @@ -446,11 +446,11 @@ module.exports = function(grunt) { * Technically, this is the one case we don't need to override the default 'define' settings, but maybe it's best to be explicit. */ TEMPcompilerOpts: { - // create_source_map: "./tmp/pc8080/" + pkg.version + "/pc8080-dbg.map", + create_source_map: "./versions/pc8080/" + pkg.version + "/pc8080-dbg.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=true"], - // output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pc8080/" + pkg.version + "/pc8080-dbg.map\"" - output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pc8080/" + pkg.version + "/pc8080-dbg.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pc8080Files, src: tmpPC8080, @@ -458,11 +458,11 @@ module.exports = function(grunt) { }, "pdp10.js": { TEMPcompilerOpts: { - create_source_map: "./tmp/pdpjs/" + pkg.version + "/pdp10.map", + create_source_map: "./versions/pdpjs/" + pkg.version + "/pdp10.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=false"], - output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pdpjs/" + pkg.version + "/pdp10.map\"" - // output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pdpjs/" + pkg.version + "/pdp10.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pdp10Files, src: tmpPDP10, @@ -473,11 +473,11 @@ module.exports = function(grunt) { * Technically, this is the one case we don't need to override the default 'define' settings, but maybe it's best to be explicit. */ TEMPcompilerOpts: { - create_source_map: "./tmp/pdpjs/" + pkg.version + "/pdp10-dbg.map", + create_source_map: "./versions/pdpjs/" + pkg.version + "/pdp10-dbg.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=true"], - output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pdpjs/" + pkg.version + "/pdp10-dbg.map\"" - // output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pdpjs/" + pkg.version + "/pdp10-dbg.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pdp10Files, src: tmpPDP10, @@ -485,11 +485,11 @@ module.exports = function(grunt) { }, "pdp11.js": { TEMPcompilerOpts: { - create_source_map: "./tmp/pdpjs/" + pkg.version + "/pdp11.map", + create_source_map: "./versions/pdpjs/" + pkg.version + "/pdp11.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=false"], - output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pdpjs/" + pkg.version + "/pdp11.map\"" - // output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pdpjs/" + pkg.version + "/pdp11.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pdp11Files, src: tmpPDP11, @@ -500,11 +500,11 @@ module.exports = function(grunt) { * Technically, this is the one case we don't need to override the default 'define' settings, but maybe it's best to be explicit. */ TEMPcompilerOpts: { - create_source_map: "./tmp/pdpjs/" + pkg.version + "/pdp11-dbg.map", + create_source_map: "./versions/pdpjs/" + pkg.version + "/pdp11-dbg.map", define: ["\"APPVERSION='" + pkg.version + "'\"", "\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=true"], - output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/tmp/pdpjs/" + pkg.version + "/pdp11-dbg.map\"" - // output_wrapper: "\"(function(){%output%})();\"" + output_wrapper: "\"(function(){%output%})();//# sourceMappingURL=/versions/pdpjs/" + pkg.version + "/pdp11-dbg.map\"" + // output_wrapper: "\"(function(){%output%})();\"" }, // src: pkg.pdp11Files, src: tmpPDP11, @@ -713,16 +713,16 @@ module.exports = function(grunt) { replace: { "fix-source-maps": { src: [ - "./tmp/c1pjs/" + pkg.version + "/c1p*.map", - "./tmp/pcx86/" + pkg.version + "/pc*.map", - "./tmp/pcx8008/" + pkg.version + "/pc*.map", - "./tmp/pdpjs/" + pkg.version + "/pdp*.map" + "./versions/c1pjs/" + pkg.version + "/c1p*.map", + "./versions/pcx86/" + pkg.version + "/pc*.map", + "./versions/pcx8008/" + pkg.version + "/pc*.map", + "./versions/pdpjs/" + pkg.version + "/pdp*.map" ], overwrite: true, replacements: [ { - from: /"sources":\s*\["\.\/tmp\//g, - to: '"sources":["/tmp/' + from: /"sources":\s*\["\.\/versions\//g, + to: '"sources":["/versions/' } ] }, diff --git a/_posts/2017-06-15-adventures-in-archiving.md b/_posts/2017-06-15-adventures-in-archiving.md index e4ed7011f..417108fba 100644 --- a/_posts/2017-06-15-adventures-in-archiving.md +++ b/_posts/2017-06-15-adventures-in-archiving.md @@ -12,7 +12,7 @@ machines: path: /disks/pcx86/dos/ibm/1.00/PCDOS100.json B: path: /apps/pcx86/1983/adventmath/ADVENTMATH100.json - autoType: 8-10-81\\rb:\\ra:basica castle\\r + autoType: 8-10-81\rb:\ra:basica castle\r --- In October 1983, IBM released a game called "Adventures in Math", which apparently tried to make mathematics as diff --git a/apps/pcx86/1981/visicalc/README.md b/apps/pcx86/1981/visicalc/README.md index a3eb5e631..c796eba48 100644 --- a/apps/pcx86/1981/visicalc/README.md +++ b/apps/pcx86/1981/visicalc/README.md @@ -12,7 +12,7 @@ machines: path: /disks/pcx86/dos/ibm/1.00/PCDOS100.json B: path: /apps/pcx86/1981/visicalc/VISICALC1981.json - autoType: 8-10-81\\rb:\\rvc\\r + autoType: 8-10-81\rb:\rvc\r --- VisiCalc (1981) diff --git a/apps/pcx86/1982/ratbas/README.md b/apps/pcx86/1982/ratbas/README.md index 0c273470f..3cf388908 100644 --- a/apps/pcx86/1982/ratbas/README.md +++ b/apps/pcx86/1982/ratbas/README.md @@ -4,14 +4,14 @@ title: "RatBas (1982)" permalink: /apps/pcx86/1982/ratbas/ machines: - type: pcx86 - id: ibm5150 + id: ibm5150-ratbas config: /devices/pcx86/machine/5150/cga/256kb/machine.xml autoMount: A: path: /disks/pcx86/dos/ibm/1.10/PCDOS110.json B: path: /apps/pcx86/1982/ratbas/RATBAS213.json - autoType: \\r\\rb:\\rrt\\r\\xff\\xf0test;\\r + autoType: \r\rb:\rrt\r\xff\xf0test;\r --- RatBas (1982) @@ -30,7 +30,7 @@ We have archived it as [RatBas 2.13](#directory-listing-of-ratbas-213). It has the machine below, which is running [PC-DOS 1.10](/disks/pcx86/dos/ibm/1.10/), the most recent version of PC-DOS at the time of this RatBas release. -{% include machine.html id="ibm5150" %} +{% include machine.html id="ibm5150-ratbas" %} Directory Listing of RatBas 2.13 -------------------------------- diff --git a/apps/pcx86/1983/adventmath/README.md b/apps/pcx86/1983/adventmath/README.md index 729fa5958..d38de2ac6 100644 --- a/apps/pcx86/1983/adventmath/README.md +++ b/apps/pcx86/1983/adventmath/README.md @@ -11,7 +11,7 @@ machines: path: /disks/pcx86/dos/ibm/1.00/PCDOS100.json B: path: /apps/pcx86/1983/adventmath/ADVENTMATH100.json - autoType: 8-10-81\\rb:\\ra:basica castle\\r + autoType: 8-10-81\rb:\ra:basica castle\r --- Adventures in Math (1983) @@ -186,7 +186,7 @@ have been tested with PC-DOS 2.00 on a 64Kb machine, but perhaps it wasn't. The machine on this page is configured with the following "autoType" sequence: - autoType: 8-10-81\\rb:\\ra:basica castle\\r + autoType: 8-10-81\rb:\ra:basica castle\r which translates to: diff --git a/devices/pcx86/machine/5150/cga/256kb/machine.xml b/devices/pcx86/machine/5150/cga/256kb/machine.xml index 1bf512b0a..ec9675195 100644 --- a/devices/pcx86/machine/5150/cga/256kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/machine.xml @@ -2,13 +2,17 @@ IBM PC (Model 5150), CGA, 256K - - + diff --git a/disks/pcx86/apps/ibm/topview/1.01/README.md b/disks/pcx86/apps/ibm/topview/1.01/README.md index e5a867576..8af383845 100644 --- a/disks/pcx86/apps/ibm/topview/1.01/README.md +++ b/disks/pcx86/apps/ibm/topview/1.01/README.md @@ -11,10 +11,20 @@ machines: path: /disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json B: path: /disks/pcx86/apps/ibm/topview/1.01/TOPVIEW101-PROGRAM.json + autoType: \r\rb:\rtv\r --- TopView 1.01 ---- +------------ + +NOTE: Even though we've made every effort to mark all PCjs pages as English, Google's Chrome web browser (v59) +mistakenly thinks this page is in French and will attempt to translate it to English. That translation process +interferes with elements of the machine; for example, it may change the name of the first diskette drive from +"A:" to "AT:". + +So, if you notice any rendering problems, check the top of your web browser, and if you see the message *This page +has been translated from French to English*, click **Show Original**. Ironically, the addition of these two +paragraphs of English text will likely eliminate the problem. {% include machine.html id="ibm5160" %} diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index 65ab7e752..124e8b65d 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -893,4 +893,4 @@ window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==ty function uC(a,b,c,d){if(!c&&b){d.push(b);a=pb[d[0]];b=null;for(var e in a)if(wa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Ka(b,null,!0,function(a,b){vC(b,d)}):vC(null,d)}else gb("Error ("+c+") requesting "+a)} function vC(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=pb[f],k={},m;for(m in h){var p=h[m],v=va(m);if("xml"==v){for(v=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=ta(m)}else"xsl"==v&&(e=m=ta(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, "©"),a=Wa(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n')+"...\n",a=a+('\n'; + sAlert += '\n\n'; + sAlert += 'The machine should appear where the
is located.'; + Component.alertUser(sAlert); + return; + } + Component.alertUser("Missing XML/XSL resources"); +} + +/** + * Prevent the Closure Compiler from renaming functions we want to export, by adding them + * as (named) properties of a global object. + */ +window['savePC'] = savePC; diff --git a/versions/pcx86/1.35.0/pcx86.js b/versions/pcx86/1.35.0/pcx86.js index 30404c49a..52bdf0708 100644 --- a/versions/pcx86/1.35.0/pcx86.js +++ b/versions/pcx86/1.35.0/pcx86.js @@ -696,4 +696,4 @@ window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==ty function pv(a,b,c,d){if(!c&&b){d.push(b);a=Wa[d[0]];b=null;for(var e in a)if(ra(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Ba(b,null,!0,function(a,b){qv(b,d)}):qv(null,d)}else r("Error ("+c+") requesting "+a)} function qv(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Wa[f],l={},m;for(m in h){var q=h[m],y=qa(m);if("xml"==y){for(y=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var w=d[2];w&&(h[w]||(q=q.replace(d[0],"")))}d=m=pa(m)}else"xsl"==y&&(e=m=pa(m));l[m]=q}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(a=JSON.stringify(l),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, "©"),a=Ka(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n')+"...\n",a=a+('